@profoundlogic/coderflow-server 0.5.1 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/dist/coder-server.js +1 -1
  2. package/dist/config.js +1 -1
  3. package/dist/lib/agent-keepalive.js +1 -1
  4. package/dist/lib/agent-models.js +1 -1
  5. package/dist/lib/api-keys.js +1 -1
  6. package/dist/lib/apiKeys.js +1 -1
  7. package/dist/lib/app-server-ports.js +1 -1
  8. package/dist/lib/auto-judge.js +1 -1
  9. package/dist/lib/automation-service.js +1 -1
  10. package/dist/lib/basic-auth.js +1 -1
  11. package/dist/lib/bindings.js +1 -1
  12. package/dist/lib/build-history.js +1 -1
  13. package/dist/lib/build-output-service.js +1 -1
  14. package/dist/lib/build-scheduler.js +1 -1
  15. package/dist/lib/build-service.js +1 -1
  16. package/dist/lib/ca-certificates.js +1 -1
  17. package/dist/lib/claude-oauth-refresh.js +1 -1
  18. package/dist/lib/cli/build.js +1 -1
  19. package/dist/lib/cli/cleanup-users.js +1 -1
  20. package/dist/lib/cli/config-command.js +1 -1
  21. package/dist/lib/cli/config.js +1 -1
  22. package/dist/lib/cli/create-user.js +1 -1
  23. package/dist/lib/cli/grant-admin.js +1 -1
  24. package/dist/lib/cli/init.js +1 -1
  25. package/dist/lib/cli/jira.js +1 -1
  26. package/dist/lib/cli/license.js +1 -1
  27. package/dist/lib/cli/list-roles.js +1 -1
  28. package/dist/lib/cli/list-users.js +1 -1
  29. package/dist/lib/cli/server-manager.js +1 -1
  30. package/dist/lib/cli/set-password.js +1 -1
  31. package/dist/lib/config-migration.js +1 -1
  32. package/dist/lib/container-credential-sync.js +1 -1
  33. package/dist/lib/container-tokens.js +1 -1
  34. package/dist/lib/data-dir.js +1 -1
  35. package/dist/lib/deployment-history.js +1 -1
  36. package/dist/lib/deployment-service.js +1 -1
  37. package/dist/lib/docker-utils.js +1 -1
  38. package/dist/lib/email.js +1 -1
  39. package/dist/lib/emailTemplates.js +1 -1
  40. package/dist/lib/entitlement.js +1 -1
  41. package/dist/lib/external-connections.js +1 -1
  42. package/dist/lib/fetch-utils.js +1 -1
  43. package/dist/lib/git-commit-details-route.js +1 -1
  44. package/dist/lib/git-history-diff-guardrails.js +1 -1
  45. package/dist/lib/git-provider-service.js +1 -1
  46. package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
  47. package/dist/lib/git-provider-setup/index.js +1 -1
  48. package/dist/lib/git-provider-setup/setup-factory.js +1 -1
  49. package/dist/lib/git-provider-setup/setup-interface.js +1 -1
  50. package/dist/lib/git-providers/azure-devops-provider.js +1 -1
  51. package/dist/lib/git-providers/github-app-provider.js +1 -1
  52. package/dist/lib/git-providers/index.js +1 -1
  53. package/dist/lib/git-providers/provider-factory.js +1 -1
  54. package/dist/lib/git-providers/provider-interface.js +1 -1
  55. package/dist/lib/github-urls.js +1 -1
  56. package/dist/lib/group-objective-linking.js +1 -1
  57. package/dist/lib/ibmi-sync.js +1 -1
  58. package/dist/lib/jira-client.js +1 -1
  59. package/dist/lib/judge-blinding.js +1 -1
  60. package/dist/lib/logger.js +1 -1
  61. package/dist/lib/migration-to-scoped-rbac.js +1 -1
  62. package/dist/lib/model-fetcher.js +1 -1
  63. package/dist/lib/notifications.js +1 -1
  64. package/dist/lib/objective-context.js +1 -1
  65. package/dist/lib/oidc-auth.js +1 -1
  66. package/dist/lib/oidc-device-flow.js +1 -1
  67. package/dist/lib/passwordTokens.js +1 -1
  68. package/dist/lib/permission-resolver.js +1 -1
  69. package/dist/lib/pin-cascade.js +1 -1
  70. package/dist/lib/provider-accounts.js +1 -1
  71. package/dist/lib/provider-oauth.js +1 -1
  72. package/dist/lib/provider-profile.js +1 -1
  73. package/dist/lib/provider-token-refresh.js +1 -1
  74. package/dist/lib/rbac-user-state.js +1 -1
  75. package/dist/lib/request-url.js +1 -1
  76. package/dist/lib/rewind.js +1 -1
  77. package/dist/lib/role-definitions.js +1 -1
  78. package/dist/lib/roles.js +1 -1
  79. package/dist/lib/secrets.js +1 -1
  80. package/dist/lib/setup-repo-git-auth.js +1 -1
  81. package/dist/lib/state-capture.js +1 -1
  82. package/dist/lib/static-files.js +1 -1
  83. package/dist/lib/task-name-format.js +1 -1
  84. package/dist/lib/task-name-generator.js +1 -1
  85. package/dist/lib/task-source-metadata.js +1 -1
  86. package/dist/lib/teams.js +1 -1
  87. package/dist/lib/user-git-oauth.js +1 -1
  88. package/dist/lib/user-git-tokens.js +1 -1
  89. package/dist/lib/users.js +1 -1
  90. package/dist/middleware/requireAuth.js +1 -1
  91. package/dist/middleware/requireInit.js +1 -1
  92. package/dist/middleware/requirePermission.js +1 -1
  93. package/dist/package.json +1 -1
  94. package/dist/playwright.config.js +1 -1
  95. package/dist/routes/apiKeys.js +1 -1
  96. package/dist/routes/auth-oidc.js +1 -1
  97. package/dist/routes/auth.js +1 -1
  98. package/dist/routes/automations.js +1 -1
  99. package/dist/routes/bindings.js +1 -1
  100. package/dist/routes/build.js +1 -1
  101. package/dist/routes/containers.js +1 -1
  102. package/dist/routes/deploy-task.js +1 -1
  103. package/dist/routes/environment-management.js +1 -1
  104. package/dist/routes/environments.js +1 -1
  105. package/dist/routes/external-skills.js +1 -1
  106. package/dist/routes/git-credentials.js +1 -1
  107. package/dist/routes/git-oauth.js +1 -1
  108. package/dist/routes/git-provider-setup.js +1 -1
  109. package/dist/routes/health.js +1 -1
  110. package/dist/routes/jira.js +1 -1
  111. package/dist/routes/objective-management.js +1 -1
  112. package/dist/routes/password.js +1 -1
  113. package/dist/routes/prompt.js +1 -1
  114. package/dist/routes/provider-auth.js +1 -1
  115. package/dist/routes/qa.js +1 -1
  116. package/dist/routes/roles.js +1 -1
  117. package/dist/routes/settings.js +1 -1
  118. package/dist/routes/skill-management.js +1 -1
  119. package/dist/routes/skills.js +1 -1
  120. package/dist/routes/tasks.js +1 -1
  121. package/dist/routes/teams.js +1 -1
  122. package/dist/routes/templates.js +1 -1
  123. package/dist/routes/test-task.js +1 -1
  124. package/dist/routes/test.js +1 -1
  125. package/dist/routes/users.js +1 -1
  126. package/dist/routes/visualizations.js +1 -1
  127. package/dist/scripts/create-user.js +1 -1
  128. package/dist/scripts/migrate-config-to-data-dir.js +1 -1
  129. package/dist/start.js +1 -1
  130. package/dist/web-ui/public/activity-detail-modal.js +1 -1
  131. package/dist/web-ui/public/activity-feed.js +1 -1
  132. package/dist/web-ui/public/activity-formatters.js +1 -1
  133. package/dist/web-ui/public/agent-event-parser.js +1 -1
  134. package/dist/web-ui/public/app.js +1 -1
  135. package/dist/web-ui/public/approve-dialog.js +1 -1
  136. package/dist/web-ui/public/automation-links.js +1 -1
  137. package/dist/web-ui/public/automation-schedule.js +1 -1
  138. package/dist/web-ui/public/comments-widget.js +1 -1
  139. package/dist/web-ui/public/diff-utils.js +1 -1
  140. package/dist/web-ui/public/environments.js +1 -1
  141. package/dist/web-ui/public/feedback-widget.js +1 -1
  142. package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
  143. package/dist/web-ui/public/git-history.js +1 -1
  144. package/dist/web-ui/public/git-status.js +1 -1
  145. package/dist/web-ui/public/index.js +1 -1
  146. package/dist/web-ui/public/login.js +1 -1
  147. package/dist/web-ui/public/markdown-editor.js +1 -1
  148. package/dist/web-ui/public/markdown-file-editor.js +1 -1
  149. package/dist/web-ui/public/modal-maximize.js +1 -1
  150. package/dist/web-ui/public/notifications.js +1 -1
  151. package/dist/web-ui/public/pr-dialog.js +1 -1
  152. package/dist/web-ui/public/roles.js +1 -1
  153. package/dist/web-ui/public/server-health.js +1 -1
  154. package/dist/web-ui/public/settings.js +1 -1
  155. package/dist/web-ui/public/setup-password.js +1 -1
  156. package/dist/web-ui/public/skills.js +1 -1
  157. package/dist/web-ui/public/sse-client.js +1 -1
  158. package/dist/web-ui/public/sse-shared-worker.js +1 -1
  159. package/dist/web-ui/public/task.js +1 -1
  160. package/dist/web-ui/public/teams.js +1 -1
  161. package/dist/web-ui/public/terminal.js +1 -1
  162. package/dist/web-ui/public/theme.js +1 -1
  163. package/dist/web-ui/public/users.js +1 -1
  164. package/dist/web-ui/public/variant-grouping.js +1 -1
  165. package/package.json +1 -1
@@ -1 +1 @@
1
- const _0x1f4ecd=_0x54dd;(function(_0x520c1b,_0x11a1e1){const _0x2c6751=_0x54dd,_0x215795=_0x520c1b();while(!![]){try{const _0x3d914f=-parseInt(_0x2c6751(0x1e3))/0x1*(-parseInt(_0x2c6751(0x1a5))/0x2)+-parseInt(_0x2c6751(0x1c8))/0x3*(parseInt(_0x2c6751(0x190))/0x4)+parseInt(_0x2c6751(0x1c1))/0x5*(-parseInt(_0x2c6751(0x1b1))/0x6)+parseInt(_0x2c6751(0x1bd))/0x7*(-parseInt(_0x2c6751(0x1c5))/0x8)+-parseInt(_0x2c6751(0x188))/0x9*(parseInt(_0x2c6751(0x18d))/0xa)+-parseInt(_0x2c6751(0x1ec))/0xb+parseInt(_0x2c6751(0x1b0))/0xc;if(_0x3d914f===_0x11a1e1)break;else _0x215795['push'](_0x215795['shift']());}catch(_0x1d8e86){_0x215795['push'](_0x215795['shift']());}}}(_0x7b11,0x702a3));let monacoLoadPromise=null;async function ensureMonacoLoaded(){const _0x337c30=_0x54dd;if(typeof monaco!==_0x337c30(0x1d2))return;if(monacoLoadPromise)return monacoLoadPromise;const _0x55e1c7=document[_0x337c30(0x1a0)](_0x337c30(0x1d0));if(_0x55e1c7)return monacoLoadPromise=new Promise((_0x46966f,_0xb346d)=>{const _0x9fc8da=setInterval(()=>{const _0x591778=_0x54dd;typeof monaco!==_0x591778(0x1d2)&&(clearInterval(_0x9fc8da),_0x46966f());},0x32);setTimeout(()=>{const _0x403fee=_0x54dd;clearInterval(_0x9fc8da),_0xb346d(new Error(_0x403fee(0x1dc)));},0x2710);}),monacoLoadPromise;return monacoLoadPromise=new Promise((_0x169dc7,_0x451bea)=>{const _0xb721dc=_0x337c30,_0x5b3a45=document[_0xb721dc(0x195)](_0xb721dc(0x197));_0x5b3a45[_0xb721dc(0x1a4)]='https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.45.0/min/vs/loader.min.js',_0x5b3a45[_0xb721dc(0x1a3)]=()=>{const _0x388a7b=_0xb721dc;require[_0x388a7b(0x1de)]({'paths':{'vs':'https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.45.0/min/vs'}}),require([_0x388a7b(0x1d3)],()=>{_0x169dc7();});},_0x5b3a45[_0xb721dc(0x1d8)]=()=>_0x451bea(new Error(_0xb721dc(0x1a7))),document[_0xb721dc(0x1cb)][_0xb721dc(0x1a1)](_0x5b3a45);}),monacoLoadPromise;}function getMonacoTheme(){const _0x3328b9=_0x54dd,_0x5d6552=document[_0x3328b9(0x191)][_0x3328b9(0x1c0)]('data-theme')==='dark';return _0x5d6552?_0x3328b9(0x1e6):'vs';}function _0x54dd(_0x3c930a,_0x1fe6e2){_0x3c930a=_0x3c930a-0x17f;const _0x7b11b5=_0x7b11();let _0x54dd3e=_0x7b11b5[_0x3c930a];if(_0x54dd['lRoYbP']===undefined){var _0x49cf9b=function(_0x22176e){const _0x49d7fe='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x55e1c7='',_0x46966f='';for(let _0xb346d=0x0,_0x9fc8da,_0x169dc7,_0x451bea=0x0;_0x169dc7=_0x22176e['charAt'](_0x451bea++);~_0x169dc7&&(_0x9fc8da=_0xb346d%0x4?_0x9fc8da*0x40+_0x169dc7:_0x169dc7,_0xb346d++%0x4)?_0x55e1c7+=String['fromCharCode'](0xff&_0x9fc8da>>(-0x2*_0xb346d&0x6)):0x0){_0x169dc7=_0x49d7fe['indexOf'](_0x169dc7);}for(let _0x5b3a45=0x0,_0x5d6552=_0x55e1c7['length'];_0x5b3a45<_0x5d6552;_0x5b3a45++){_0x46966f+='%'+('00'+_0x55e1c7['charCodeAt'](_0x5b3a45)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x46966f);};_0x54dd['YEYbju']=_0x49cf9b,_0x54dd['ipyKdT']={},_0x54dd['lRoYbP']=!![];}const _0x7d6e6e=_0x7b11b5[0x0],_0x1059d3=_0x3c930a+_0x7d6e6e,_0x3a6a94=_0x54dd['ipyKdT'][_0x1059d3];return!_0x3a6a94?(_0x54dd3e=_0x54dd['YEYbju'](_0x54dd3e),_0x54dd['ipyKdT'][_0x1059d3]=_0x54dd3e):_0x54dd3e=_0x3a6a94,_0x54dd3e;}function isMarkdownFile(_0x1e7ed0){const _0x411af9=_0x54dd;if(!_0x1e7ed0)return![];const _0x5e917a=_0x1e7ed0[_0x411af9(0x192)]('.')[_0x411af9(0x1eb)]()[_0x411af9(0x18c)]();return _0x5e917a==='md'||_0x5e917a==='markdown';}function createMarkdownFileEditor(_0x1c9a59){const _0x5fe35a=_0x54dd,{container:_0x54f782,content:content='',readOnly:readOnly=![],height:height='400px',onChange:onChange=null,placeholder:placeholder=_0x5fe35a(0x189),enableModeToggle:enableModeToggle=!![],initialMode:initialMode=_0x5fe35a(0x1ca)}=_0x1c9a59;_0x54f782[_0x5fe35a(0x1af)]='';let _0x377ab1=_0x5fe35a(0x1ca),_0x390a30=content,_0x180bce=null,_0x3ca837=null,_0x36eae7=![],_0x300591=initialMode==='source';const _0x5e2016=document['createElement'](_0x5fe35a(0x1c3));_0x5e2016['className']=_0x5fe35a(0x1e5),_0x5e2016[_0x5fe35a(0x1ab)]['height']=height,_0x5e2016[_0x5fe35a(0x1ab)][_0x5fe35a(0x1b9)]=_0x5fe35a(0x1ba),_0x5e2016['style'][_0x5fe35a(0x1a6)]=_0x5fe35a(0x19c),_0x5e2016[_0x5fe35a(0x1ab)]['border']='1px\x20solid\x20var(--color-border)',_0x5e2016['style']['borderRadius']=_0x5fe35a(0x1b2),_0x5e2016[_0x5fe35a(0x1ab)]['overflow']='hidden';let _0x278e27=null,_0x15a8e2=null,_0x4b7268=null;!readOnly&&enableModeToggle&&(_0x278e27=document[_0x5fe35a(0x195)](_0x5fe35a(0x1c3)),_0x278e27[_0x5fe35a(0x1c7)]=_0x5fe35a(0x1cd),_0x278e27[_0x5fe35a(0x1ab)][_0x5fe35a(0x1b9)]=_0x5fe35a(0x1ba),_0x278e27[_0x5fe35a(0x1ab)][_0x5fe35a(0x1b5)]=_0x5fe35a(0x1db),_0x278e27['style'][_0x5fe35a(0x1ad)]=_0x5fe35a(0x1e1),_0x278e27['style']['borderBottom']=_0x5fe35a(0x1c6),_0x278e27[_0x5fe35a(0x1ab)][_0x5fe35a(0x1ac)]=_0x5fe35a(0x184),_0x278e27['style'][_0x5fe35a(0x1ce)]=_0x5fe35a(0x1e4),_0x278e27[_0x5fe35a(0x1ab)][_0x5fe35a(0x1bf)]='0',_0x15a8e2=document[_0x5fe35a(0x195)](_0x5fe35a(0x18e)),_0x15a8e2[_0x5fe35a(0x1c9)]=_0x5fe35a(0x18e),_0x15a8e2[_0x5fe35a(0x1c7)]=_0x5fe35a(0x181),_0x15a8e2['innerHTML']=_0x5fe35a(0x180),_0x15a8e2[_0x5fe35a(0x1ed)]=_0x5fe35a(0x186),_0x4b7268=document[_0x5fe35a(0x195)]('button'),_0x4b7268['type']=_0x5fe35a(0x18e),_0x4b7268[_0x5fe35a(0x1c7)]=_0x5fe35a(0x181),_0x4b7268[_0x5fe35a(0x1af)]=_0x5fe35a(0x1b6),_0x4b7268[_0x5fe35a(0x1ed)]=_0x5fe35a(0x1a2),_0x278e27[_0x5fe35a(0x1a1)](_0x15a8e2),_0x278e27['appendChild'](_0x4b7268),_0x5e2016[_0x5fe35a(0x1a1)](_0x278e27));const _0xbbf89e=document[_0x5fe35a(0x195)](_0x5fe35a(0x1c3));_0xbbf89e['className']=_0x5fe35a(0x182),_0xbbf89e['style']['flex']='1',_0xbbf89e['style'][_0x5fe35a(0x1b9)]=_0x5fe35a(0x1ba),_0xbbf89e[_0x5fe35a(0x1ab)]['flexDirection']=_0x5fe35a(0x19c),_0xbbf89e[_0x5fe35a(0x1ab)][_0x5fe35a(0x1e7)]=_0x5fe35a(0x17f),_0xbbf89e[_0x5fe35a(0x1ab)][_0x5fe35a(0x18f)]='0';const _0x4b8928=document[_0x5fe35a(0x195)]('textarea');_0x4b8928[_0x5fe35a(0x1ab)][_0x5fe35a(0x1b9)]=_0x5fe35a(0x1b7),_0x4b8928[_0x5fe35a(0x193)]=content,_0xbbf89e[_0x5fe35a(0x1a1)](_0x4b8928),_0x5e2016[_0x5fe35a(0x1a1)](_0xbbf89e);const _0x579dce=document['createElement'](_0x5fe35a(0x1c3));_0x579dce['className']=_0x5fe35a(0x187),_0x579dce[_0x5fe35a(0x1ab)][_0x5fe35a(0x1ba)]='1',_0x579dce[_0x5fe35a(0x1ab)][_0x5fe35a(0x1b9)]=_0x5fe35a(0x1b7),_0x579dce['style'][_0x5fe35a(0x1e7)]=_0x5fe35a(0x17f),_0x579dce[_0x5fe35a(0x1ab)][_0x5fe35a(0x18f)]='0',_0x5e2016[_0x5fe35a(0x1a1)](_0x579dce),_0x54f782[_0x5fe35a(0x1a1)](_0x5e2016),_0x180bce=new window[(_0x5fe35a(0x1aa))](_0x4b8928,{'placeholder':placeholder,'editable':!readOnly,'minHeight':'100%','toolbar':!readOnly,'onChange':_0x3516c4=>{_0x390a30=_0x3516c4,onChange&&onChange(_0x3516c4);}});_0x180bce[_0x5fe35a(0x1d1)]&&(_0x180bce['container'][_0x5fe35a(0x1ab)][_0x5fe35a(0x1ba)]='1',_0x180bce[_0x5fe35a(0x1d1)][_0x5fe35a(0x1ab)]['display']='flex',_0x180bce['container']['style'][_0x5fe35a(0x1a6)]='column',_0x180bce[_0x5fe35a(0x1d1)][_0x5fe35a(0x1ab)][_0x5fe35a(0x1e7)]='hidden');_0x180bce[_0x5fe35a(0x18b)]&&(_0x180bce[_0x5fe35a(0x18b)][_0x5fe35a(0x1ab)][_0x5fe35a(0x1ba)]='1',_0x180bce['editor'][_0x5fe35a(0x1ab)][_0x5fe35a(0x1e7)]=_0x5fe35a(0x1c4),_0x180bce['editor'][_0x5fe35a(0x1ab)]['minHeight']='0',_0x180bce[_0x5fe35a(0x18b)][_0x5fe35a(0x1ab)]['border']=_0x5fe35a(0x1b7),_0x180bce[_0x5fe35a(0x18b)][_0x5fe35a(0x1ab)][_0x5fe35a(0x1cc)]='0',_0x180bce[_0x5fe35a(0x18b)][_0x5fe35a(0x1ab)][_0x5fe35a(0x1ad)]=_0x5fe35a(0x1dd),_0x180bce[_0x5fe35a(0x18b)][_0x5fe35a(0x1ab)][_0x5fe35a(0x19e)]=_0x5fe35a(0x185),_0x180bce[_0x5fe35a(0x18b)][_0x5fe35a(0x1ab)][_0x5fe35a(0x19a)]=_0x5fe35a(0x1d5));_0x180bce[_0x5fe35a(0x19d)]&&(_0x180bce[_0x5fe35a(0x19d)]['style'][_0x5fe35a(0x1cc)]='0',_0x180bce['toolbar']['style'][_0x5fe35a(0x1bf)]='0');content&&_0x180bce[_0x5fe35a(0x1be)](content);function _0x47e186(){const _0x4ba134=_0x5fe35a;if(!_0x15a8e2||!_0x4b7268)return;_0x377ab1===_0x4ba134(0x1ca)?(_0x15a8e2['classList'][_0x4ba134(0x199)](_0x4ba134(0x1a9)),_0x4b7268['classList'][_0x4ba134(0x1c2)](_0x4ba134(0x1a9))):(_0x15a8e2[_0x4ba134(0x1e0)][_0x4ba134(0x1c2)]('active'),_0x4b7268[_0x4ba134(0x1e0)][_0x4ba134(0x199)](_0x4ba134(0x1a9)));}async function _0x41375c(){const _0x1ed2d7=_0x5fe35a;if(_0x36eae7)return;try{await ensureMonacoLoaded(),_0x3ca837=monaco[_0x1ed2d7(0x18b)]['create'](_0x579dce,{'value':_0x390a30,'language':_0x1ed2d7(0x1ea),'theme':getMonacoTheme(),'readOnly':readOnly,'minimap':{'enabled':![]},'automaticLayout':!![],'wordWrap':'on','lineNumbers':'on','scrollBeyondLastLine':![],'fontSize':0xe,'lineHeight':0x16,'padding':{'top':0x10,'bottom':0x10},'renderWhitespace':_0x1ed2d7(0x1b4),'tabSize':0x2,'insertSpaces':!![]}),_0x3ca837['onDidChangeModelContent'](()=>{const _0x25d84a=_0x1ed2d7;_0x390a30=_0x3ca837[_0x25d84a(0x1d6)](),onChange&&onChange(_0x390a30);}),_0x36eae7=!![];}catch(_0x27409a){console[_0x1ed2d7(0x1ae)]('Failed\x20to\x20initialize\x20Monaco\x20editor:',_0x27409a);throw _0x27409a;}}async function _0x3a1355(_0x1ad82d){const _0x48b65a=_0x5fe35a;if(_0x1ad82d===_0x377ab1)return;if(_0x377ab1==='visual')_0x390a30=_0x180bce['getMarkdown']();else _0x3ca837&&(_0x390a30=_0x3ca837['getValue']());_0x377ab1=_0x1ad82d;if(_0x1ad82d==='visual')_0x579dce[_0x48b65a(0x1ab)]['display']='none',_0xbbf89e[_0x48b65a(0x1ab)]['display']='flex',_0x180bce[_0x48b65a(0x1be)](_0x390a30),_0x180bce[_0x48b65a(0x198)]();else{_0xbbf89e[_0x48b65a(0x1ab)][_0x48b65a(0x1b9)]='none',_0x579dce['style']['display']=_0x48b65a(0x183);if(!_0x36eae7)try{await _0x41375c();}catch(_0x73fc4c){console[_0x48b65a(0x1ae)](_0x48b65a(0x1b8),_0x73fc4c),_0x377ab1=_0x48b65a(0x1ca),_0x579dce[_0x48b65a(0x1ab)][_0x48b65a(0x1b9)]='none',_0xbbf89e[_0x48b65a(0x1ab)][_0x48b65a(0x1b9)]=_0x48b65a(0x1ba),_0x47e186();return;}_0x3ca837&&(_0x3ca837[_0x48b65a(0x1e9)](_0x390a30),_0x3ca837['focus'](),_0x3ca837['layout']());}_0x47e186();}_0x15a8e2&&_0x4b7268&&(_0x15a8e2[_0x5fe35a(0x1d9)](_0x5fe35a(0x1da),_0x10bd42=>{_0x10bd42['preventDefault'](),_0x3a1355('visual');}),_0x4b7268[_0x5fe35a(0x1d9)](_0x5fe35a(0x1da),_0x187ef7=>{const _0x33d7e8=_0x5fe35a;_0x187ef7['preventDefault'](),_0x3a1355(_0x33d7e8(0x196));}),_0x47e186());_0x300591&&setTimeout(()=>_0x3a1355(_0x5fe35a(0x196)),0x0);const _0x1c454a={'getValue':()=>{const _0x3d1b52=_0x5fe35a;if(_0x377ab1===_0x3d1b52(0x1ca))return _0x180bce[_0x3d1b52(0x18a)]();else{if(_0x3ca837)return _0x3ca837[_0x3d1b52(0x1d6)]();}return _0x390a30;},'setValue':_0x300a54=>{const _0x13a012=_0x5fe35a;_0x390a30=_0x300a54||'';if(_0x377ab1==='visual')_0x180bce[_0x13a012(0x1be)](_0x390a30);else _0x3ca837&&_0x3ca837[_0x13a012(0x1e9)](_0x390a30);},'focus':()=>{const _0x50f5d6=_0x5fe35a;if(_0x377ab1==='visual')_0x180bce['focus']();else _0x3ca837&&_0x3ca837[_0x50f5d6(0x198)]();},'setEditable':_0x14db6e=>{const _0x40bac3=_0x5fe35a;_0x180bce['setEditable'](_0x14db6e),_0x3ca837&&_0x3ca837[_0x40bac3(0x1ee)]({'readOnly':!_0x14db6e});},'destroy':()=>{_0x180bce['destroy'](),_0x3ca837&&(_0x3ca837['dispose'](),_0x3ca837=null),_0x54f782['innerHTML']='';},'getMode':()=>_0x377ab1,'setMode':_0x270fa5=>_0x3a1355(_0x270fa5),'toggleMode':()=>_0x3a1355(_0x377ab1===_0x5fe35a(0x1ca)?'source':'visual'),'_visualEditor':_0x180bce,'_getSourceEditor':()=>_0x3ca837,'_container':_0x54f782,'_isMarkdownFileEditor':!![],'_hasModeToggle':enableModeToggle};return _0x1c454a;}const markdownFileEditors=new Map();function getOrCreateMarkdownFileEditor(_0xa1f3f3,_0x2cc9b7,_0x6de447=![],_0x1ef24f=_0x1f4ecd(0x1d7),_0x4ead78=null,_0x403a2b={}){const _0x31829d=_0x1f4ecd,_0x989de7=document[_0x31829d(0x1a8)](_0xa1f3f3);if(!_0x989de7)return console[_0x31829d(0x1ae)](_0x31829d(0x1e2)+_0xa1f3f3),null;const _0x589093=markdownFileEditors[_0x31829d(0x19f)](_0xa1f3f3);if(_0x589093){try{_0x589093[_0x31829d(0x194)]();}catch(_0x5181e1){console[_0x31829d(0x1b3)](_0x31829d(0x1df),_0x5181e1);}markdownFileEditors[_0x31829d(0x1bb)](_0xa1f3f3);}const _0x33e629=createMarkdownFileEditor({'container':_0x989de7,'content':_0x2cc9b7,'readOnly':_0x6de447,'height':_0x1ef24f,'onChange':_0x4ead78,..._0x403a2b});return markdownFileEditors[_0x31829d(0x1cf)](_0xa1f3f3,_0x33e629),_0x33e629;}function getMarkdownFileEditorValue(_0x3a6b51){const _0x7b230f=_0x1f4ecd,_0x557ad5=markdownFileEditors['get'](_0x3a6b51);if(!_0x557ad5)return null;return _0x557ad5[_0x7b230f(0x1d6)]();}function setMarkdownFileEditorValue(_0x3a147d,_0x3fccc5){const _0x2af368=_0x1f4ecd,_0x3fb39c=markdownFileEditors[_0x2af368(0x19f)](_0x3a147d);_0x3fb39c&&_0x3fb39c[_0x2af368(0x1e9)](_0x3fccc5||'');}function disposeMarkdownFileEditor(_0x12f548){const _0x2d35aa=_0x1f4ecd,_0x269d95=markdownFileEditors[_0x2d35aa(0x19f)](_0x12f548);if(_0x269d95){try{_0x269d95[_0x2d35aa(0x194)]();}catch(_0x1336b0){console[_0x2d35aa(0x1b3)]('Failed\x20to\x20dispose\x20markdown\x20editor:',_0x1336b0);}markdownFileEditors['delete'](_0x12f548);}}function hasMarkdownFileEditor(_0x3372b3){const _0x2ebd99=_0x1f4ecd;return markdownFileEditors[_0x2ebd99(0x1bc)](_0x3372b3);}function getMarkdownFileEditorMode(_0x4c3c43){const _0x1cee4b=_0x1f4ecd,_0x25134c=markdownFileEditors['get'](_0x4c3c43);if(!_0x25134c||!_0x25134c[_0x1cee4b(0x1d4)])return null;return _0x25134c[_0x1cee4b(0x1d4)]();}function _0x7b11(){const _0x3442ff=['mtrWEa','vMLZDwfSigvKAxrPBMCGBw9KzsaOv1LtsvDzrYK','BwfYA2rVD24TC291CMnLlwnVBNrHAw5LCG','otbszeLNsxq','rw50zxiGBwfYA2rVD24Gy29UDgvUDc4UlG','z2v0twfYA2rVD24','zwrPDg9Y','Dg9mB3DLCKnHC2u','ndi4ntKWAMThsuHA','yNv0Dg9U','BwLUsgvPz2H0','ne5eueP3wq','zg9JDw1LBNrfBgvTzw50','C3bSAxq','DMfSDwu','zgvZDhjVEq','y3jLyxrLrwXLBwvUDa','C291CMnL','C2nYAxb0','zM9JDxm','ywrK','BgLUzuHLAwDODa','C2v0tw9Kzq','y29SDw1U','Dg9VBgjHCG','zM9UDfnPEMu','z2v0','CxvLCNLtzwXLy3rVCG','yxbWzw5Kq2HPBgq','u291CMnLigvKAxrPBMCGBw9KzsaOtw9UywnVievKAxrVCIK','B25SB2fK','C3jJ','mNDTzeXWCa','zMXLEerPCMvJDgLVBG','rMfPBgvKihrVigXVywqGtw9UywnVievKAxrVCG','z2v0rwXLBwvUDej5swq','ywn0AxzL','twfYA2rVD25fzgL0B3i','C3r5Bgu','yMfJA2DYB3vUza','CgfKzgLUzW','zxjYB3i','Aw5Uzxjive1m','mtKYmJK4mJb5s3HsC2y','mJG0mJHpCeTnELm','DMfYkc0TCMfKAxvZlxnTywXSkq','D2fYBG','C2vSzwn0Aw9U','ywXPz25jDgvTCW','phn2zYb2Awv3qM94psiWidaGmJqGmJqIihDPzhrOpsiXnciGAgvPz2H0psiXnciGC3rYB2TLpsjJDxjYzw50q29SB3iIihn0CM9Rzs13Awr0Ad0ImIiGzMLSBd0IBM9Uzsi+phbVBhLSAw5LihbVAw50CZ0ImtyGmtGGmJiGmtiGmtyGnIi+pc9WB2X5BgLUzt48Cg9SEwXPBMuGCg9PBNrZpsi4idyGmIaXmIa4ide4iJ48l3bVBhLSAw5LpJWVC3zNpIbtB3vYy2u','BM9Uzq','rMfPBgvKihrVihn3AxrJAcb0BYbZB3vYy2uGBw9KztO','zgLZCgXHEq','zMXLEa','zgvSzxrL','AgfZ','mtmZEhzTrMDn','C2v0twfYA2rVD24','zMXLEfnOCMLUAW','z2v0qxr0CMLIDxrL','mZm1rvzLD1HT','CMvTB3zL','zgL2','yxv0BW','mtyWodHbsNDTsge','mxb4ihnVBgLKihzHCIGTlwnVBg9YlwjVCMrLCIK','y2XHC3noyw1L','ntC5ndm4qNbJBwDy','DhLWzq','DMLZDwfS','AgvHza','yM9YzgvYuMfKAxvZ','BwfYA2rVD24TzwrPDg9Ylw1VzguTDg9Nz2XL','z2fW','C2v0','C2nYAxb0w3nYyYO9iM1VBMfJBY1LzgL0B3iIxvTZCMmQpsjSB2fKzxiUBwLUlMPZiL0','y29UDgfPBMvY','Dw5KzwzPBMvK','DNmVzwrPDg9Yl2vKAxrVCI5TywLU','z2v0tw9Kzq','ms42','z2v0vMfSDwu','ndaWChG','B25LCNjVCG','ywrKrxzLBNrmAxn0zw5LCG','y2XPy2S','y2vUDgvY','tw9UywnVigXVywrPBMCGDgLTzw91Da','mtzWEa','y29UzMLN','rMfPBgvKihrVigrLC3rYB3KGzxHPC3rPBMCGBwfYA2rVD24GzwrPDg9YoG','y2XHC3nmAxn0','nhb4idHWEa','q29UDgfPBMvYig5VDcbMB3vUzdOG','mtmWmJK0zKvfywTr','nhb4','BwfYA2rVD24TzMLSzs1LzgL0B3iTD3jHChbLCG','DNmTzgfYAW','B3zLCMzSB3C','twfYA2rVD25gAwXLrwrPDg9Y','C2v0vMfSDwu','BwfYA2rVD24','Cg9W','mZi1ntu3mvLxBK9NBq','DgL0Bgu','DxbKyxrLt3b0Aw9UCW','AgLKzgvU','phn2zYb2Awv3qM94psiWidaGmJqGmJqIihDPzhrOpsiXnciGAgvPz2H0psiXnciGC3rYB2TLpsjJDxjYzw50q29SB3iIihn0CM9Rzs13Awr0Ad0ImIiGzMLSBd0IBM9Uzsi+phbHDgGGzd0ItteGmtjZnc04ideXltGGmteGocaXmsa4ltqGoc0Xmsa4lteXltGTmteTohOIpJWVCgf0Ad48y2LYy2XLign4psiXmIiGy3K9iJeYiIbYpsiZiJ48l2nPCMnSzt48l3n2zZ4GvMLZDwfS','BwfYA2rVD24TBw9Kzs1IDg4','BwfYA2rVD24TDMLZDwfSlwnVBNrHAw5LCG','yMXVy2S','DMfYkc0Ty29SB3iTC3vYzMfJzs1ZzwnVBMrHCNKP'];_0x7b11=function(){return _0x3442ff;};return _0x7b11();}function setMarkdownFileEditorMode(_0x2a7621,_0x203b75){const _0x51a81c=_0x1f4ecd,_0xb791e9=markdownFileEditors[_0x51a81c(0x19f)](_0x2a7621);_0xb791e9&&_0xb791e9[_0x51a81c(0x19b)]&&_0xb791e9['setMode'](_0x203b75);}typeof window!==_0x1f4ecd(0x1d2)&&(window[_0x1f4ecd(0x1e8)]={'isMarkdownFile':isMarkdownFile,'create':createMarkdownFileEditor,'getOrCreate':getOrCreateMarkdownFileEditor,'getValue':getMarkdownFileEditorValue,'setValue':setMarkdownFileEditorValue,'dispose':disposeMarkdownFileEditor,'has':hasMarkdownFileEditor,'getMode':getMarkdownFileEditorMode,'setMode':setMarkdownFileEditorMode,'editors':markdownFileEditors,'ensureMonacoLoaded':ensureMonacoLoaded});
1
+ let monacoLoadPromise=null;async function ensureMonacoLoaded(){if(typeof monaco!=='undefined')return;if(monacoLoadPromise)return monacoLoadPromise;const _0x57dc83=document['querySelector']('script[src*=\x22monaco-editor\x22][src*=\x22loader.min.js\x22]');if(_0x57dc83)return monacoLoadPromise=new Promise((_0x3cb35d,_0x230d29)=>{const _0x12b517=setInterval(()=>{typeof monaco!=='undefined'&&(clearInterval(_0x12b517),_0x3cb35d());},0x32);setTimeout(()=>{clearInterval(_0x12b517),_0x230d29(new Error('Monaco\x20loading\x20timeout'));},0x2710);}),monacoLoadPromise;return monacoLoadPromise=new Promise((_0x2e3f23,_0x1bbaf1)=>{const _0x347251=document['createElement']('script');_0x347251['src']='https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.45.0/min/vs/loader.min.js',_0x347251['onload']=()=>{require['config']({'paths':{'vs':'https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.45.0/min/vs'}}),require(['vs/editor/editor.main'],()=>{_0x2e3f23();});},_0x347251['onerror']=()=>_0x1bbaf1(new Error('Failed\x20to\x20load\x20Monaco\x20Editor')),document['head']['appendChild'](_0x347251);}),monacoLoadPromise;}function getMonacoTheme(){const _0x3d6d47=document['documentElement']['getAttribute']('data-theme')==='dark';return _0x3d6d47?'vs-dark':'vs';}function isMarkdownFile(_0x25a70a){if(!_0x25a70a)return![];const _0x12de5f=_0x25a70a['split']('.')['pop']()['toLowerCase']();return _0x12de5f==='md'||_0x12de5f==='markdown';}function createMarkdownFileEditor(_0x48bed1){const {container:_0x202ef6,content:content='',readOnly:readOnly=![],height:height='400px',onChange:onChange=null,placeholder:placeholder='Enter\x20markdown\x20content...',enableModeToggle:enableModeToggle=!![],initialMode:initialMode='visual'}=_0x48bed1;_0x202ef6['innerHTML']='';let _0x2cc35c='visual',_0x19c58d=content,_0x3371ae=null,_0x41125d=null,_0x32838e=![],_0x2bfd07=initialMode==='source';const _0x389959=document['createElement']('div');_0x389959['className']='markdown-file-editor-wrapper',_0x389959['style']['height']=height,_0x389959['style']['display']='flex',_0x389959['style']['flexDirection']='column',_0x389959['style']['border']='1px\x20solid\x20var(--color-border)',_0x389959['style']['borderRadius']='var(--radius-small)',_0x389959['style']['overflow']='hidden';let _0x1dbef7=null,_0x43bee8=null,_0x575198=null;!readOnly&&enableModeToggle&&(_0x1dbef7=document['createElement']('div'),_0x1dbef7['className']='markdown-editor-mode-toggle',_0x1dbef7['style']['display']='flex',_0x1dbef7['style']['alignItems']='center',_0x1dbef7['style']['padding']='4px\x208px',_0x1dbef7['style']['borderBottom']='1px\x20solid\x20var(--color-border)',_0x1dbef7['style']['background']='var(--color-surface-secondary)',_0x1dbef7['style']['gap']='4px',_0x1dbef7['style']['flexShrink']='0',_0x43bee8=document['createElement']('button'),_0x43bee8['type']='button',_0x43bee8['className']='markdown-mode-btn',_0x43bee8['innerHTML']='<svg\x20viewBox=\x220\x200\x2024\x2024\x22\x20width=\x2214\x22\x20height=\x2214\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20fill=\x22none\x22><path\x20d=\x22M1\x2012s4-8\x2011-8\x2011\x208\x2011\x208-4\x208-11\x208-11-8-11-8z\x22></path><circle\x20cx=\x2212\x22\x20cy=\x2212\x22\x20r=\x223\x22></circle></svg>\x20Visual',_0x43bee8['title']='Visual\x20editing\x20mode\x20(WYSIWYG)',_0x575198=document['createElement']('button'),_0x575198['type']='button',_0x575198['className']='markdown-mode-btn',_0x575198['innerHTML']='<svg\x20viewBox=\x220\x200\x2024\x2024\x22\x20width=\x2214\x22\x20height=\x2214\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20fill=\x22none\x22><polyline\x20points=\x2216\x2018\x2022\x2012\x2016\x206\x22></polyline><polyline\x20points=\x228\x206\x202\x2012\x208\x2018\x22></polyline></svg>\x20Source',_0x575198['title']='Source\x20editing\x20mode\x20(Monaco\x20Editor)',_0x1dbef7['appendChild'](_0x43bee8),_0x1dbef7['appendChild'](_0x575198),_0x389959['appendChild'](_0x1dbef7));const _0x32ad1c=document['createElement']('div');_0x32ad1c['className']='markdown-visual-container',_0x32ad1c['style']['flex']='1',_0x32ad1c['style']['display']='flex',_0x32ad1c['style']['flexDirection']='column',_0x32ad1c['style']['overflow']='hidden',_0x32ad1c['style']['minHeight']='0';const _0x1db24f=document['createElement']('textarea');_0x1db24f['style']['display']='none',_0x1db24f['value']=content,_0x32ad1c['appendChild'](_0x1db24f),_0x389959['appendChild'](_0x32ad1c);const _0x541ed4=document['createElement']('div');_0x541ed4['className']='markdown-source-container',_0x541ed4['style']['flex']='1',_0x541ed4['style']['display']='none',_0x541ed4['style']['overflow']='hidden',_0x541ed4['style']['minHeight']='0',_0x389959['appendChild'](_0x541ed4),_0x202ef6['appendChild'](_0x389959),_0x3371ae=new window['MarkdownEditor'](_0x1db24f,{'placeholder':placeholder,'editable':!readOnly,'minHeight':'100%','toolbar':!readOnly,'onChange':_0x1f17be=>{_0x19c58d=_0x1f17be,onChange&&onChange(_0x1f17be);}});_0x3371ae['container']&&(_0x3371ae['container']['style']['flex']='1',_0x3371ae['container']['style']['display']='flex',_0x3371ae['container']['style']['flexDirection']='column',_0x3371ae['container']['style']['overflow']='hidden');_0x3371ae['editor']&&(_0x3371ae['editor']['style']['flex']='1',_0x3371ae['editor']['style']['overflow']='auto',_0x3371ae['editor']['style']['minHeight']='0',_0x3371ae['editor']['style']['border']='none',_0x3371ae['editor']['style']['borderRadius']='0',_0x3371ae['editor']['style']['padding']='16px',_0x3371ae['editor']['style']['fontSize']='14px',_0x3371ae['editor']['style']['lineHeight']='1.6');_0x3371ae['toolbar']&&(_0x3371ae['toolbar']['style']['borderRadius']='0',_0x3371ae['toolbar']['style']['flexShrink']='0');content&&_0x3371ae['setMarkdown'](content);function _0x34c74a(){if(!_0x43bee8||!_0x575198)return;_0x2cc35c==='visual'?(_0x43bee8['classList']['add']('active'),_0x575198['classList']['remove']('active')):(_0x43bee8['classList']['remove']('active'),_0x575198['classList']['add']('active'));}async function _0x49ef07(){if(_0x32838e)return;try{await ensureMonacoLoaded(),_0x41125d=monaco['editor']['create'](_0x541ed4,{'value':_0x19c58d,'language':'markdown','theme':getMonacoTheme(),'readOnly':readOnly,'minimap':{'enabled':![]},'automaticLayout':!![],'wordWrap':'on','lineNumbers':'on','scrollBeyondLastLine':![],'fontSize':0xe,'lineHeight':0x16,'padding':{'top':0x10,'bottom':0x10},'renderWhitespace':'selection','tabSize':0x2,'insertSpaces':!![]}),_0x41125d['onDidChangeModelContent'](()=>{_0x19c58d=_0x41125d['getValue'](),onChange&&onChange(_0x19c58d);}),_0x32838e=!![];}catch(_0x38c649){console['error']('Failed\x20to\x20initialize\x20Monaco\x20editor:',_0x38c649);throw _0x38c649;}}async function _0x27fa5e(_0xbb21a6){if(_0xbb21a6===_0x2cc35c)return;if(_0x2cc35c==='visual')_0x19c58d=_0x3371ae['getMarkdown']();else _0x41125d&&(_0x19c58d=_0x41125d['getValue']());_0x2cc35c=_0xbb21a6;if(_0xbb21a6==='visual')_0x541ed4['style']['display']='none',_0x32ad1c['style']['display']='flex',_0x3371ae['setMarkdown'](_0x19c58d),_0x3371ae['focus']();else{_0x32ad1c['style']['display']='none',_0x541ed4['style']['display']='block';if(!_0x32838e)try{await _0x49ef07();}catch(_0x1cc9fd){console['error']('Failed\x20to\x20switch\x20to\x20source\x20mode:',_0x1cc9fd),_0x2cc35c='visual',_0x541ed4['style']['display']='none',_0x32ad1c['style']['display']='flex',_0x34c74a();return;}_0x41125d&&(_0x41125d['setValue'](_0x19c58d),_0x41125d['focus'](),_0x41125d['layout']());}_0x34c74a();}_0x43bee8&&_0x575198&&(_0x43bee8['addEventListener']('click',_0x4319f5=>{_0x4319f5['preventDefault'](),_0x27fa5e('visual');}),_0x575198['addEventListener']('click',_0x4b7ecf=>{_0x4b7ecf['preventDefault'](),_0x27fa5e('source');}),_0x34c74a());_0x2bfd07&&setTimeout(()=>_0x27fa5e('source'),0x0);const _0x188347={'getValue':()=>{if(_0x2cc35c==='visual')return _0x3371ae['getMarkdown']();else{if(_0x41125d)return _0x41125d['getValue']();}return _0x19c58d;},'setValue':_0x48a15c=>{_0x19c58d=_0x48a15c||'';if(_0x2cc35c==='visual')_0x3371ae['setMarkdown'](_0x19c58d);else _0x41125d&&_0x41125d['setValue'](_0x19c58d);},'focus':()=>{if(_0x2cc35c==='visual')_0x3371ae['focus']();else _0x41125d&&_0x41125d['focus']();},'setEditable':_0x1eb82e=>{_0x3371ae['setEditable'](_0x1eb82e),_0x41125d&&_0x41125d['updateOptions']({'readOnly':!_0x1eb82e});},'destroy':()=>{_0x3371ae['destroy'](),_0x41125d&&(_0x41125d['dispose'](),_0x41125d=null),_0x202ef6['innerHTML']='';},'getMode':()=>_0x2cc35c,'setMode':_0xcfe26b=>_0x27fa5e(_0xcfe26b),'toggleMode':()=>_0x27fa5e(_0x2cc35c==='visual'?'source':'visual'),'_visualEditor':_0x3371ae,'_getSourceEditor':()=>_0x41125d,'_container':_0x202ef6,'_isMarkdownFileEditor':!![],'_hasModeToggle':enableModeToggle};return _0x188347;}const markdownFileEditors=new Map();function getOrCreateMarkdownFileEditor(_0x2680ea,_0x475d75,_0x43a806=![],_0x2dd2e1='400px',_0x21df66=null,_0x309de5={}){const _0x54e0bb=document['getElementById'](_0x2680ea);if(!_0x54e0bb)return console['error']('Container\x20not\x20found:\x20'+_0x2680ea),null;const _0xbad5b3=markdownFileEditors['get'](_0x2680ea);if(_0xbad5b3){try{_0xbad5b3['destroy']();}catch(_0x41716a){console['warn']('Failed\x20to\x20destroy\x20existing\x20markdown\x20editor:',_0x41716a);}markdownFileEditors['delete'](_0x2680ea);}const _0x48603f=createMarkdownFileEditor({'container':_0x54e0bb,'content':_0x475d75,'readOnly':_0x43a806,'height':_0x2dd2e1,'onChange':_0x21df66,..._0x309de5});return markdownFileEditors['set'](_0x2680ea,_0x48603f),_0x48603f;}function getMarkdownFileEditorValue(_0x3cc1e9){const _0x405e45=markdownFileEditors['get'](_0x3cc1e9);if(!_0x405e45)return null;return _0x405e45['getValue']();}function setMarkdownFileEditorValue(_0x4556b9,_0x2d1f27){const _0x49f0d4=markdownFileEditors['get'](_0x4556b9);_0x49f0d4&&_0x49f0d4['setValue'](_0x2d1f27||'');}function disposeMarkdownFileEditor(_0x570b41){const _0x55860e=markdownFileEditors['get'](_0x570b41);if(_0x55860e){try{_0x55860e['destroy']();}catch(_0x17e7f7){console['warn']('Failed\x20to\x20dispose\x20markdown\x20editor:',_0x17e7f7);}markdownFileEditors['delete'](_0x570b41);}}function hasMarkdownFileEditor(_0x2f1fdb){return markdownFileEditors['has'](_0x2f1fdb);}function getMarkdownFileEditorMode(_0x151be7){const _0x3e4257=markdownFileEditors['get'](_0x151be7);if(!_0x3e4257||!_0x3e4257['getMode'])return null;return _0x3e4257['getMode']();}function setMarkdownFileEditorMode(_0x24baeb,_0x93d658){const _0x56b566=markdownFileEditors['get'](_0x24baeb);_0x56b566&&_0x56b566['setMode']&&_0x56b566['setMode'](_0x93d658);}typeof window!=='undefined'&&(window['MarkdownFileEditor']={'isMarkdownFile':isMarkdownFile,'create':createMarkdownFileEditor,'getOrCreate':getOrCreateMarkdownFileEditor,'getValue':getMarkdownFileEditorValue,'setValue':setMarkdownFileEditorValue,'dispose':disposeMarkdownFileEditor,'has':hasMarkdownFileEditor,'getMode':getMarkdownFileEditorMode,'setMode':setMarkdownFileEditorMode,'editors':markdownFileEditors,'ensureMonacoLoaded':ensureMonacoLoaded});
@@ -1 +1 @@
1
- function _0x7069(_0x2a5a43,_0x3cf71b){_0x2a5a43=_0x2a5a43-0x178;const _0xd6add0=_0xd6ad();let _0x70698e=_0xd6add0[_0x2a5a43];if(_0x7069['QJDVqG']===undefined){var _0xf83068=function(_0x4d2265){const _0x23c059='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2ad6c4='',_0xb4cf34='';for(let _0x6fdca1=0x0,_0x374ff8,_0x8b3d3c,_0xfeef77=0x0;_0x8b3d3c=_0x4d2265['charAt'](_0xfeef77++);~_0x8b3d3c&&(_0x374ff8=_0x6fdca1%0x4?_0x374ff8*0x40+_0x8b3d3c:_0x8b3d3c,_0x6fdca1++%0x4)?_0x2ad6c4+=String['fromCharCode'](0xff&_0x374ff8>>(-0x2*_0x6fdca1&0x6)):0x0){_0x8b3d3c=_0x23c059['indexOf'](_0x8b3d3c);}for(let _0x4be914=0x0,_0x30da27=_0x2ad6c4['length'];_0x4be914<_0x30da27;_0x4be914++){_0xb4cf34+='%'+('00'+_0x2ad6c4['charCodeAt'](_0x4be914)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xb4cf34);};_0x7069['fDGVSC']=_0xf83068,_0x7069['jmfoob']={},_0x7069['QJDVqG']=!![];}const _0x59bcc2=_0xd6add0[0x0],_0x54bdf5=_0x2a5a43+_0x59bcc2,_0x233949=_0x7069['jmfoob'][_0x54bdf5];return!_0x233949?(_0x70698e=_0x7069['fDGVSC'](_0x70698e),_0x7069['jmfoob'][_0x54bdf5]=_0x70698e):_0x70698e=_0x233949,_0x70698e;}(function(_0x153a97,_0x1daef1){const _0x17290d=_0x7069,_0x2018af=_0x153a97();while(!![]){try{const _0x4bf7fd=-parseInt(_0x17290d(0x187))/0x1*(-parseInt(_0x17290d(0x185))/0x2)+-parseInt(_0x17290d(0x199))/0x3+parseInt(_0x17290d(0x188))/0x4*(-parseInt(_0x17290d(0x191))/0x5)+-parseInt(_0x17290d(0x194))/0x6*(parseInt(_0x17290d(0x17b))/0x7)+-parseInt(_0x17290d(0x18c))/0x8*(-parseInt(_0x17290d(0x1a0))/0x9)+parseInt(_0x17290d(0x198))/0xa+parseInt(_0x17290d(0x17c))/0xb;if(_0x4bf7fd===_0x1daef1)break;else _0x2018af['push'](_0x2018af['shift']());}catch(_0x2bb152){_0x2018af['push'](_0x2018af['shift']());}}}(_0xd6ad,0x41d3e));const DEFAULT_DURATION_MS=0xfa;function prefersReducedMotion(){const _0x3548b6=_0x7069;try{return window[_0x3548b6(0x19d)]&&window[_0x3548b6(0x19d)](_0x3548b6(0x18b))[_0x3548b6(0x19a)];}catch{return![];}}function safeCancelAnimations(_0x2ad6c4){const _0x68f7cb=_0x7069;if(!_0x2ad6c4||typeof _0x2ad6c4[_0x68f7cb(0x181)]!==_0x68f7cb(0x17a))return;try{_0x2ad6c4['getAnimations']()[_0x68f7cb(0x17d)](_0xb4cf34=>_0xb4cf34['cancel']());}catch{}}function animateRestoreFlip({contentEl:_0x6fdca1,fromRect:_0x374ff8,toRect:_0x8b3d3c,durationMs:_0xfeef77}){const _0x24dde2=_0x7069;if(!_0x6fdca1)return;if(!_0x374ff8||!_0x8b3d3c)return;if(prefersReducedMotion())return;const _0x4be914=_0x8b3d3c[_0x24dde2(0x17e)]||0x0,_0x30da27=_0x8b3d3c[_0x24dde2(0x179)]||0x0,_0x1d0021=_0x374ff8[_0x24dde2(0x17e)]||0x0,_0x3efb24=_0x374ff8[_0x24dde2(0x179)]||0x0;if(_0x4be914<=0x0||_0x30da27<=0x0||_0x1d0021<=0x0||_0x3efb24<=0x0)return;const _0xc0c0da=_0x374ff8[_0x24dde2(0x18d)]-_0x8b3d3c[_0x24dde2(0x18d)],_0x217082=_0x374ff8[_0x24dde2(0x17f)]-_0x8b3d3c[_0x24dde2(0x17f)],_0x179c62=_0x1d0021/_0x4be914,_0x271fcf=_0x3efb24/_0x30da27;if(!Number['isFinite'](_0xc0c0da)||!Number[_0x24dde2(0x19f)](_0x217082)||!Number[_0x24dde2(0x19f)](_0x179c62)||!Number[_0x24dde2(0x19f)](_0x271fcf))return;safeCancelAnimations(_0x6fdca1);const _0x44534c=_0x6fdca1[_0x24dde2(0x197)]['transition'],_0x5048f9=_0x6fdca1[_0x24dde2(0x197)][_0x24dde2(0x180)],_0x4488cf=_0x6fdca1[_0x24dde2(0x197)]['willChange'];_0x6fdca1[_0x24dde2(0x197)][_0x24dde2(0x193)]=_0x24dde2(0x182),_0x6fdca1['style'][_0x24dde2(0x180)]=_0x24dde2(0x192),_0x6fdca1[_0x24dde2(0x197)][_0x24dde2(0x19c)]=_0x24dde2(0x178);const _0x4fe973='translate('+_0xc0c0da+_0x24dde2(0x189)+_0x217082+_0x24dde2(0x19e)+_0x179c62+',\x20'+_0x271fcf+')',_0x2c065b=_0x6fdca1[_0x24dde2(0x19b)]([{'transform':_0x4fe973},{'transform':_0x24dde2(0x182)}],{'duration':_0xfeef77,'easing':'ease','fill':_0x24dde2(0x18e)}),_0x3a3571=()=>{const _0x159d1f=_0x24dde2;_0x6fdca1[_0x159d1f(0x197)][_0x159d1f(0x193)]=_0x44534c,_0x6fdca1['style'][_0x159d1f(0x180)]=_0x5048f9,_0x6fdca1[_0x159d1f(0x197)][_0x159d1f(0x19c)]=_0x4488cf;};_0x2c065b[_0x24dde2(0x184)](_0x24dde2(0x186),_0x3a3571,{'once':!![]}),_0x2c065b[_0x24dde2(0x184)]('cancel',_0x3a3571,{'once':!![]});}export function toggleModalMaximize(_0x357785,_0x4a27c9={}){const _0x5be96a=_0x7069;if(!_0x357785)return;const {storageKey:_0x36fe57,updateIcon:_0x540dbd,onAfterToggle:_0x377ad2,durationMs:durationMs=DEFAULT_DURATION_MS}=_0x4a27c9,_0x255cd3=_0x357785[_0x5be96a(0x1a1)]('.modal-content'),_0x136ef7=_0x357785[_0x5be96a(0x183)][_0x5be96a(0x195)]('maximized'),_0x4c221e=!_0x136ef7;if(!_0x255cd3){_0x357785[_0x5be96a(0x183)]['toggle'](_0x5be96a(0x18a)),_0x540dbd?.(_0x4c221e),_0x377ad2?.(_0x4c221e);if(_0x36fe57)try{localStorage[_0x5be96a(0x196)](_0x36fe57,String(_0x4c221e));}catch{}return;}if(_0x136ef7&&!prefersReducedMotion()){const _0x4c5011=_0x255cd3[_0x5be96a(0x190)]();_0x357785[_0x5be96a(0x183)][_0x5be96a(0x18f)]('maximized');const _0x586366=_0x255cd3[_0x5be96a(0x190)]();animateRestoreFlip({'contentEl':_0x255cd3,'fromRect':_0x4c5011,'toRect':_0x586366,'durationMs':durationMs});}else _0x357785[_0x5be96a(0x183)]['toggle']('maximized');_0x540dbd?.(_0x4c221e),_0x377ad2?.(_0x4c221e);if(_0x36fe57)try{localStorage[_0x5be96a(0x196)](_0x36fe57,String(_0x4c221e));}catch{}}function _0xd6ad(){const _0x3572db=['zMLUAxnO','mtaYndC0turerMve','ntm3mZa4rMnQvfLQ','ChGSia','Bwf4Aw1PEMvK','khbYzwzLCNmTCMvKDwnLzc1TB3rPB246ihjLzhvJzsK','ntuYmtq0vw5PBurr','BgvMDa','yM90Aa','CMvTB3zL','z2v0qM91BMrPBMDdBgLLBNrszwn0','mJbys2LKseW','Dg9WigXLzNq','DhjHBNnPDgLVBG','mJa3mtjlwhn6Dwu','y29UDgfPBNm','C2v0sxrLBq','C3r5Bgu','mtaXotKZmhjNyxLmvG','mteWmZG3nfbYEKDxwG','Bwf0y2HLCW','yw5PBwf0zq','D2LSBenOyw5Nzq','Bwf0y2HnzwrPyq','ChGPihnJywXLka','AxngAw5PDgu','ndvdEe9uug4','CxvLCNLtzwXLy3rVCG','DhjHBNnMB3jT','AgvPz2H0','zNvUy3rPB24','nZa3sLHny1Hn','nZmZmJi1ownpuK1pqG','zM9YrwfJAa','D2LKDgG','Dg9W','DhjHBNnMB3jTt3jPz2LU','z2v0qw5PBwf0Aw9UCW','BM9Uzq','y2XHC3nmAxn0','ywrKrxzLBNrmAxn0zw5LCG','ohnwCeL6rq'];_0xd6ad=function(){return _0x3572db;};return _0xd6ad();}
1
+ const DEFAULT_DURATION_MS=0xfa;function prefersReducedMotion(){try{return window['matchMedia']&&window['matchMedia']('(prefers-reduced-motion:\x20reduce)')['matches'];}catch{return![];}}function safeCancelAnimations(_0x15b710){if(!_0x15b710||typeof _0x15b710['getAnimations']!=='function')return;try{_0x15b710['getAnimations']()['forEach'](_0x380861=>_0x380861['cancel']());}catch{}}function animateRestoreFlip({contentEl:_0x177d34,fromRect:_0x17d4e1,toRect:_0x83a5d5,durationMs:_0x2a24b2}){if(!_0x177d34)return;if(!_0x17d4e1||!_0x83a5d5)return;if(prefersReducedMotion())return;const _0x5de1c3=_0x83a5d5['width']||0x0,_0x2f6a27=_0x83a5d5['height']||0x0,_0x14a112=_0x17d4e1['width']||0x0,_0x4a570f=_0x17d4e1['height']||0x0;if(_0x5de1c3<=0x0||_0x2f6a27<=0x0||_0x14a112<=0x0||_0x4a570f<=0x0)return;const _0x45cd4e=_0x17d4e1['left']-_0x83a5d5['left'],_0x2ed62d=_0x17d4e1['top']-_0x83a5d5['top'],_0x4e954e=_0x14a112/_0x5de1c3,_0x25247e=_0x4a570f/_0x2f6a27;if(!Number['isFinite'](_0x45cd4e)||!Number['isFinite'](_0x2ed62d)||!Number['isFinite'](_0x4e954e)||!Number['isFinite'](_0x25247e))return;safeCancelAnimations(_0x177d34);const _0x2e4f91=_0x177d34['style']['transition'],_0x3dfafa=_0x177d34['style']['transformOrigin'],_0x5e9783=_0x177d34['style']['willChange'];_0x177d34['style']['transition']='none',_0x177d34['style']['transformOrigin']='top\x20left',_0x177d34['style']['willChange']='transform';const _0x80a360='translate('+_0x45cd4e+'px,\x20'+_0x2ed62d+'px)\x20scale('+_0x4e954e+',\x20'+_0x25247e+')',_0x3afae5=_0x177d34['animate']([{'transform':_0x80a360},{'transform':'none'}],{'duration':_0x2a24b2,'easing':'ease','fill':'both'}),_0x54176a=()=>{_0x177d34['style']['transition']=_0x2e4f91,_0x177d34['style']['transformOrigin']=_0x3dfafa,_0x177d34['style']['willChange']=_0x5e9783;};_0x3afae5['addEventListener']('finish',_0x54176a,{'once':!![]}),_0x3afae5['addEventListener']('cancel',_0x54176a,{'once':!![]});}export function toggleModalMaximize(_0x3f5398,_0x2daa55={}){if(!_0x3f5398)return;const {storageKey:_0xae4c5a,updateIcon:_0x3bdd13,onAfterToggle:_0x1e1610,durationMs:durationMs=DEFAULT_DURATION_MS}=_0x2daa55,_0x1fafc8=_0x3f5398['querySelector']('.modal-content'),_0x208bce=_0x3f5398['classList']['contains']('maximized'),_0x3bec81=!_0x208bce;if(!_0x1fafc8){_0x3f5398['classList']['toggle']('maximized'),_0x3bdd13?.(_0x3bec81),_0x1e1610?.(_0x3bec81);if(_0xae4c5a)try{localStorage['setItem'](_0xae4c5a,String(_0x3bec81));}catch{}return;}if(_0x208bce&&!prefersReducedMotion()){const _0x2829b1=_0x1fafc8['getBoundingClientRect']();_0x3f5398['classList']['remove']('maximized');const _0x1a157c=_0x1fafc8['getBoundingClientRect']();animateRestoreFlip({'contentEl':_0x1fafc8,'fromRect':_0x2829b1,'toRect':_0x1a157c,'durationMs':durationMs});}else _0x3f5398['classList']['toggle']('maximized');_0x3bdd13?.(_0x3bec81),_0x1e1610?.(_0x3bec81);if(_0xae4c5a)try{localStorage['setItem'](_0xae4c5a,String(_0x3bec81));}catch{}}
@@ -1 +1 @@
1
- (function(_0x264956,_0xadef42){const _0xe8649a=_0x1483,_0x164f3d=_0x264956();while(!![]){try{const _0x5777c3=-parseInt(_0xe8649a(0xc4))/0x1*(parseInt(_0xe8649a(0xd8))/0x2)+-parseInt(_0xe8649a(0xb8))/0x3*(parseInt(_0xe8649a(0x9c))/0x4)+-parseInt(_0xe8649a(0x8e))/0x5*(-parseInt(_0xe8649a(0xcb))/0x6)+-parseInt(_0xe8649a(0xbd))/0x7+parseInt(_0xe8649a(0x85))/0x8+-parseInt(_0xe8649a(0x9b))/0x9*(parseInt(_0xe8649a(0x9a))/0xa)+parseInt(_0xe8649a(0x88))/0xb;if(_0x5777c3===_0xadef42)break;else _0x164f3d['push'](_0x164f3d['shift']());}catch(_0x51b27c){_0x164f3d['push'](_0x164f3d['shift']());}}}(_0xc010,0xc281b));function _0x1483(_0x5326ca,_0x56e767){_0x5326ca=_0x5326ca-0x83;const _0xc010da=_0xc010();let _0x14837b=_0xc010da[_0x5326ca];if(_0x1483['qrIQMa']===undefined){var _0x4b20ba=function(_0x305f77){const _0x500d4c='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1c0dcc='',_0x3e0a14='';for(let _0x235bbb=0x0,_0x1f3924,_0x22fa76,_0x844740=0x0;_0x22fa76=_0x305f77['charAt'](_0x844740++);~_0x22fa76&&(_0x1f3924=_0x235bbb%0x4?_0x1f3924*0x40+_0x22fa76:_0x22fa76,_0x235bbb++%0x4)?_0x1c0dcc+=String['fromCharCode'](0xff&_0x1f3924>>(-0x2*_0x235bbb&0x6)):0x0){_0x22fa76=_0x500d4c['indexOf'](_0x22fa76);}for(let _0x532ba3=0x0,_0x363f01=_0x1c0dcc['length'];_0x532ba3<_0x363f01;_0x532ba3++){_0x3e0a14+='%'+('00'+_0x1c0dcc['charCodeAt'](_0x532ba3)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3e0a14);};_0x1483['YBuZrZ']=_0x4b20ba,_0x1483['DKuTfg']={},_0x1483['qrIQMa']=!![];}const _0x260cb5=_0xc010da[0x0],_0x1d9250=_0x5326ca+_0x260cb5,_0x4b9d72=_0x1483['DKuTfg'][_0x1d9250];return!_0x4b9d72?(_0x14837b=_0x1483['YBuZrZ'](_0x14837b),_0x1483['DKuTfg'][_0x1d9250]=_0x14837b):_0x14837b=_0x4b9d72,_0x14837b;}function _0xc010(){const _0x1a6598=['nJfUEK9luLu','lI4U','CMvXDwvZDfbLCM1PC3nPB24','AgfZ','l2zHDMLJB24UAwnV','y2XVC2u','zxHPDf9JB2rL','nZeZntGWqwLeBNfm','CMvXDwLYzuLUDgvYywn0Aw9U','C2HVDW','BgvUz3rO','DgvZDa','C2XPy2u','zM9SBg93vxbiAxn0B3j5','zw52vMfYCW','zgvUAwvK','zgvWBg95','Aw5ZDhj1y3rPB25Z','DgfZAY0','4P2mifrHC2SGrMfPBgvK','ndiYmtrdC0DbB0W','yMfKz2u','zgvWBg95rgvZy3jPChrPB24','Aw50zxjYDxb0zwq','mJi2mJmWneXyuwDcrq','DgfZA1r5Cgu','CMvTB3zLsxrLBq','mZeZodqXmZn4tgPsA2u','zM9JDxm','C3rHDhvZ','B3bLBG','rMfPBgvKihrVihnOB3CGBM90AwzPy2f0Aw9UoG','CgvYBwLZC2LVBG','mZvOywPgrva','ChjLDMvUDerLzMf1Bhq','zhvYyxrPB24','4PYfifrHC2SGq29TCgXLDgvKifn1y2nLC3nMDwXSEq','rgvWBg95','q09ervjFquDftLq','rgvWBg95oIa','Dhj1zq','w0zVBgXVDY11Cf0G','C2LSzw50','yM9KEq','y2HHCKf0','mtbJwwPQwuK','mtuWnJa1mxPKtM9hsW','ntyYohLevhH1ra','D2fYBG','ic0G','ChvZAa','zM9YrwfJAa','z2v0sxrLBq','C3vIC3rYAw5N','BM90AwzPzwqT','rMfPBgvKihrVihjLCxvLC3qGBM90AwzPy2f0Aw9UihbLCM1PC3nPB246','DgvZDerLC2nYAxb0Aw9U','zxHPDenVzgu','BM90AwzPy2f0Aw9UCY1LBMfIBgvK','DgfZA0LK','zMfPBgvK','BMfTzq','AwnVBG','AxnbCNjHEq','zgf0yq','zgvMyxvSDf9Hz2vUDa','DgfN','C2v0sxrLBq','zxjYB3i','AxntDxbWB3j0zwq','tM90AwzPy2f0Aw9U','tM90AwzPy2f0Aw9UCYbHCMuGBM90ihn1ChbVCNrLzcbPBIb0AgLZigjYB3DZzxi','zMfSC2u','Dg9vChbLCKnHC2u','tM90AwzPy2f0Aw9UihbLCM1PC3nPB24GBM90igDYyw50zwq','mtqXou11sgzXCW','A2v5','vgvZDa','C3rHCNrZv2L0Aa','4O+577IpifrHC2SGsw50zxjYDxb0zwq','nZm1oti3nxfsBvzJEq','B25JBgLJAW','zgvWBg95uhjVzMLSzq','AxnfBMfIBgvK','z3jHBNrLza','y29TCgXLDgvK','B25dBgLJAW'];_0xc010=function(){return _0x1a6598;};return _0xc010();}export const NotificationManager={'isSupported'(){const _0x4eb62a=_0x1483;return _0x4eb62a(0xb3)in window;},'isEnabled'(){const _0xc7dc46=_0x1483;if(!this[_0xc7dc46(0xb2)]())return![];return localStorage['getItem'](_0xc7dc46(0xa7))===_0xc7dc46(0x95);},'setEnabled'(_0x1c0dcc){const _0x3744ba=_0x1483;localStorage[_0x3744ba(0xb0)](_0x3744ba(0xa7),_0x1c0dcc?_0x3744ba(0x95):_0x3744ba(0xb5));},'getPermission'(){const _0xd7d805=_0x1483;if(!this[_0xd7d805(0xb2)]())return'unsupported';return Notification[_0xd7d805(0x8d)];},async 'requestPermission'(){const _0x8e3a53=_0x1483;if(!this[_0x8e3a53(0xb2)]())return'unsupported';if(Notification['permission']===_0x8e3a53(0xc1))return'granted';if(Notification['permission']==='denied')return _0x8e3a53(0xd3);try{const _0x3e0a14=await Notification[_0x8e3a53(0xc6)]();return _0x3e0a14;}catch(_0x235bbb){return console[_0x8e3a53(0xb1)](_0x8e3a53(0xa4),_0x235bbb),_0x8e3a53(0xd3);}},async 'show'(_0x1f3924,_0x22fa76={}){const _0x2b47ae=_0x1483;if(!this[_0x2b47ae(0xc0)]())return null;if(!this[_0x2b47ae(0xb2)]())return console[_0x2b47ae(0x9d)](_0x2b47ae(0xb4)),null;if(Notification[_0x2b47ae(0x8d)]!==_0x2b47ae(0xc1))return console[_0x2b47ae(0x9d)](_0x2b47ae(0xb7)),null;try{const _0x844740=new Notification(_0x1f3924,{'icon':_0x22fa76[_0x2b47ae(0xab)]||_0x2b47ae(0xc8),'badge':_0x22fa76[_0x2b47ae(0xd9)]||_0x2b47ae(0xc8),'body':_0x22fa76[_0x2b47ae(0x98)]||'','tag':_0x22fa76[_0x2b47ae(0xaf)]||'','requireInteraction':_0x22fa76[_0x2b47ae(0xcc)]||![],'silent':_0x22fa76[_0x2b47ae(0x97)]||![],'data':_0x22fa76[_0x2b47ae(0xad)]||{}});_0x22fa76['onClick']&&(_0x844740[_0x2b47ae(0xbe)]=_0x532ba3=>{const _0x1549fe=_0x2b47ae;_0x532ba3[_0x1549fe(0x8f)](),window[_0x1549fe(0x89)](),_0x22fa76[_0x1549fe(0xc3)](_0x532ba3,_0x844740),_0x844740[_0x1549fe(0xc9)]();});if(!_0x22fa76[_0x2b47ae(0xcc)]){const _0x363f01=_0x22fa76[_0x2b47ae(0x90)]||0x1388;setTimeout(()=>{const _0x58068a=_0x2b47ae;_0x844740[_0x58068a(0xc9)]();},_0x363f01);}return _0x844740;}catch(_0x2384a1){return console[_0x2b47ae(0xb1)](_0x2b47ae(0x8c),_0x2384a1),null;}},async 'notifyTaskComplete'(_0x777317){const _0x2a85d2=_0x1483,_0x5c5561=_0x777317[_0x2a85d2(0xa6)]!==undefined?_0x777317[_0x2a85d2(0xa6)]:_0x777317[_0x2a85d2(0xca)],_0x382500=_0x777317[_0x2a85d2(0x8a)]===_0x2a85d2(0xc2)&&_0x5c5561===0x0,_0x1715e6=_0x777317['status']==='interrupted',_0x5bd73a=_0x382500?_0x2a85d2(0x91):_0x1715e6?_0x2a85d2(0xbc):_0x2a85d2(0xd7);let _0x2efc4b;if(_0x777317[_0x2a85d2(0x86)]===_0x2a85d2(0xcf)){const _0x40fd84=_0x777317['testName']||_0x2a85d2(0xba),_0x30ae46=_0x777317[_0x2a85d2(0xa5)]||_0x777317['description']||'';if(_0x30ae46&&_0x30ae46[_0x2a85d2(0xce)]>0x0){let _0x8188b1=_0x30ae46;_0x30ae46[_0x2a85d2(0xce)]>0x50&&(_0x8188b1=_0x30ae46[_0x2a85d2(0xa2)](0x0,0x4d)+_0x2a85d2(0xc5)),_0x2efc4b='Test:\x20'+_0x40fd84+_0x2a85d2(0x9e)+_0x8188b1;}else _0x2efc4b='Test:\x20'+_0x40fd84;}else{if(_0x777317[_0x2a85d2(0x86)]===_0x2a85d2(0xd4)){const _0x206d2e=_0x777317[_0x2a85d2(0xbf)]||_0x2a85d2(0x92),_0x1d8472=_0x777317[_0x2a85d2(0x83)]||_0x777317['description']||'';if(_0x1d8472&&_0x1d8472['length']>0x0){let _0x48dc72=_0x1d8472;_0x1d8472[_0x2a85d2(0xce)]>0x50&&(_0x48dc72=_0x1d8472['substring'](0x0,0x4d)+_0x2a85d2(0xc5)),_0x2efc4b='Deploy:\x20'+_0x206d2e+_0x2a85d2(0x9e)+_0x48dc72;}else _0x2efc4b=_0x2a85d2(0x94)+_0x206d2e;}else{const _0x37ddac=_0x777317[_0x2a85d2(0xaa)]?_0x777317[_0x2a85d2(0xaa)]['trim']():null,_0x5431e4=_0x777317['envVars']?.[_0x2a85d2(0x93)]||_0x777317[_0x2a85d2(0xd2)]?.[_0x2a85d2(0xae)]||'Unknown',_0x1f81ba=_0x5431e4[_0x2a85d2(0x99)](0x0)[_0x2a85d2(0xb6)]()+_0x5431e4[_0x2a85d2(0xd0)](0x1);let _0x86e021,_0x182aa3=![];if(_0x777317[_0x2a85d2(0xd1)]&&Array[_0x2a85d2(0xac)](_0x777317['followUpHistory'])&&_0x777317[_0x2a85d2(0xd1)][_0x2a85d2(0xce)]>0x0){const _0xd3a236=_0x777317[_0x2a85d2(0xd1)][_0x777317[_0x2a85d2(0xd1)][_0x2a85d2(0xce)]-0x1];_0x86e021=_0xd3a236[_0x2a85d2(0xd5)],_0x182aa3=!![];}else _0x86e021=_0x777317['description']||_0x777317['instructions']||_0x777317[_0x2a85d2(0xa8)];_0x86e021['length']>0x64&&(_0x86e021=_0x86e021[_0x2a85d2(0xa2)](0x0,0x61)+'...');const _0x2aaf5f=_0x182aa3?_0x2a85d2(0x96):'';_0x37ddac?_0x2efc4b=_0x37ddac+'\x0a'+_0x1f81ba+':\x20'+_0x2aaf5f+_0x86e021:_0x2efc4b=_0x1f81ba+':\x20'+_0x2aaf5f+_0x86e021;}}return this[_0x2a85d2(0xcd)](_0x5bd73a,{'body':_0x2efc4b,'tag':_0x2a85d2(0xd6)+_0x777317[_0x2a85d2(0xa8)],'requireInteraction':![],'duration':0x1f40,'data':{'taskId':_0x777317[_0x2a85d2(0xa8)]},'onClick':(_0x1a6857,_0xb5b36a)=>{const _0x90f5b0=_0x2a85d2;window[_0x90f5b0(0x8b)]('task.html?id='+_0x777317[_0x90f5b0(0xa8)],'_blank');}});},'shouldNotify'(_0x302a48,_0x40c7c6){const _0x3776eb=_0x1483;if(!this[_0x3776eb(0xc0)]())return![];if(_0x302a48[_0x3776eb(0x8a)]!==_0x3776eb(0xc2)&&_0x302a48[_0x3776eb(0x8a)]!==_0x3776eb(0xa9)&&_0x302a48[_0x3776eb(0x8a)]!==_0x3776eb(0x84))return![];if(!_0x40c7c6[_0x3776eb(0xc7)](_0x302a48[_0x3776eb(0xa8)]))return![];const _0x5f38c8='notified-'+_0x302a48['taskId'];if(sessionStorage[_0x3776eb(0xa1)](_0x5f38c8)==='true')return![];return!![];},'markNotified'(_0x1b933c){const _0x1f6e3e=_0x1483;sessionStorage[_0x1f6e3e(0xb0)]('notified-'+_0x1b933c,_0x1f6e3e(0x95));},'clearNotificationHistory'(){const _0x4e33ea=_0x1483,_0x3f6223=[];for(let _0x30de12=0x0;_0x30de12<sessionStorage[_0x4e33ea(0xce)];_0x30de12++){const _0x47cb0f=sessionStorage[_0x4e33ea(0xb9)](_0x30de12);_0x47cb0f[_0x4e33ea(0xbb)](_0x4e33ea(0xa3))&&_0x3f6223[_0x4e33ea(0x9f)](_0x47cb0f);}_0x3f6223[_0x4e33ea(0xa0)](_0x33ada8=>sessionStorage[_0x4e33ea(0x87)](_0x33ada8));}};
1
+ export const NotificationManager={'isSupported'(){return'Notification'in window;},'isEnabled'(){if(!this['isSupported']())return![];return localStorage['getItem']('notifications-enabled')==='true';},'setEnabled'(_0x57d0f5){localStorage['setItem']('notifications-enabled',_0x57d0f5?'true':'false');},'getPermission'(){if(!this['isSupported']())return'unsupported';return Notification['permission'];},async 'requestPermission'(){if(!this['isSupported']())return'unsupported';if(Notification['permission']==='granted')return'granted';if(Notification['permission']==='denied')return'denied';try{const _0x48d408=await Notification['requestPermission']();return _0x48d408;}catch(_0x3be1da){return console['error']('Failed\x20to\x20request\x20notification\x20permission:',_0x3be1da),'denied';}},async 'show'(_0x569124,_0x3d40ef={}){if(!this['isEnabled']())return null;if(!this['isSupported']())return console['warn']('Notifications\x20are\x20not\x20supported\x20in\x20this\x20browser'),null;if(Notification['permission']!=='granted')return console['warn']('Notification\x20permission\x20not\x20granted'),null;try{const _0x4bf9e4=new Notification(_0x569124,{'icon':_0x3d40ef['icon']||'/favicon.ico','badge':_0x3d40ef['badge']||'/favicon.ico','body':_0x3d40ef['body']||'','tag':_0x3d40ef['tag']||'','requireInteraction':_0x3d40ef['requireInteraction']||![],'silent':_0x3d40ef['silent']||![],'data':_0x3d40ef['data']||{}});_0x3d40ef['onClick']&&(_0x4bf9e4['onclick']=_0x469216=>{_0x469216['preventDefault'](),window['focus'](),_0x3d40ef['onClick'](_0x469216,_0x4bf9e4),_0x4bf9e4['close']();});if(!_0x3d40ef['requireInteraction']){const _0xa5ff1=_0x3d40ef['duration']||0x1388;setTimeout(()=>{_0x4bf9e4['close']();},_0xa5ff1);}return _0x4bf9e4;}catch(_0x3a8349){return console['error']('Failed\x20to\x20show\x20notification:',_0x3a8349),null;}},async 'notifyTaskComplete'(_0x2797ab){const _0x1fdd7c=_0x2797ab['exitCode']!==undefined?_0x2797ab['exitCode']:_0x2797ab['exit_code'],_0x45ee09=_0x2797ab['status']==='completed'&&_0x1fdd7c===0x0,_0x5710f8=_0x2797ab['status']==='interrupted',_0x11159a=_0x45ee09?'✅\x20Task\x20Completed\x20Successfully':_0x5710f8?'⏹️\x20Task\x20Interrupted':'❌\x20Task\x20Failed';let _0x3aefac;if(_0x2797ab['taskType']==='test'){const _0x5ec37e=_0x2797ab['testName']||'Test',_0x5a75aa=_0x2797ab['testDescription']||_0x2797ab['description']||'';if(_0x5a75aa&&_0x5a75aa['length']>0x0){let _0x1870fb=_0x5a75aa;_0x5a75aa['length']>0x50&&(_0x1870fb=_0x5a75aa['substring'](0x0,0x4d)+'...'),_0x3aefac='Test:\x20'+_0x5ec37e+'\x20-\x20'+_0x1870fb;}else _0x3aefac='Test:\x20'+_0x5ec37e;}else{if(_0x2797ab['taskType']==='deploy'){const _0x49effe=_0x2797ab['deployProfile']||'Deploy',_0x13a559=_0x2797ab['deployDescription']||_0x2797ab['description']||'';if(_0x13a559&&_0x13a559['length']>0x0){let _0x55efdf=_0x13a559;_0x13a559['length']>0x50&&(_0x55efdf=_0x13a559['substring'](0x0,0x4d)+'...'),_0x3aefac='Deploy:\x20'+_0x49effe+'\x20-\x20'+_0x55efdf;}else _0x3aefac='Deploy:\x20'+_0x49effe;}else{const _0x567c22=_0x2797ab['name']?_0x2797ab['name']['trim']():null,_0x191a03=_0x2797ab['envVars']?.['CODER_AGENT']||_0x2797ab['envVars']?.['default_agent']||'Unknown',_0x26aaae=_0x191a03['charAt'](0x0)['toUpperCase']()+_0x191a03['slice'](0x1);let _0x28b18c,_0x30663f=![];if(_0x2797ab['followUpHistory']&&Array['isArray'](_0x2797ab['followUpHistory'])&&_0x2797ab['followUpHistory']['length']>0x0){const _0x56e2e6=_0x2797ab['followUpHistory'][_0x2797ab['followUpHistory']['length']-0x1];_0x28b18c=_0x56e2e6['instructions'],_0x30663f=!![];}else _0x28b18c=_0x2797ab['description']||_0x2797ab['instructions']||_0x2797ab['taskId'];_0x28b18c['length']>0x64&&(_0x28b18c=_0x28b18c['substring'](0x0,0x61)+'...');const _0x3b1564=_0x30663f?'[Follow-up]\x20':'';_0x567c22?_0x3aefac=_0x567c22+'\x0a'+_0x26aaae+':\x20'+_0x3b1564+_0x28b18c:_0x3aefac=_0x26aaae+':\x20'+_0x3b1564+_0x28b18c;}}return this['show'](_0x11159a,{'body':_0x3aefac,'tag':'task-'+_0x2797ab['taskId'],'requireInteraction':![],'duration':0x1f40,'data':{'taskId':_0x2797ab['taskId']},'onClick':(_0x4c8360,_0xd6bac9)=>{window['open']('task.html?id='+_0x2797ab['taskId'],'_blank');}});},'shouldNotify'(_0x495d45,_0xf3edd1){if(!this['isEnabled']())return![];if(_0x495d45['status']!=='completed'&&_0x495d45['status']!=='failed'&&_0x495d45['status']!=='interrupted')return![];if(!_0xf3edd1['has'](_0x495d45['taskId']))return![];const _0x4480d5='notified-'+_0x495d45['taskId'];if(sessionStorage['getItem'](_0x4480d5)==='true')return![];return!![];},'markNotified'(_0xd71398){sessionStorage['setItem']('notified-'+_0xd71398,'true');},'clearNotificationHistory'(){const _0x51f124=[];for(let _0x1e75ff=0x0;_0x1e75ff<sessionStorage['length'];_0x1e75ff++){const _0x409633=sessionStorage['key'](_0x1e75ff);_0x409633['startsWith']('notified-')&&_0x51f124['push'](_0x409633);}_0x51f124['forEach'](_0x4933c1=>sessionStorage['removeItem'](_0x4933c1));}};
@@ -1 +1 @@
1
- const _0x4bbad8=_0x244e;function _0x244e(_0x1add09,_0x37dfb0){_0x1add09=_0x1add09-0x180;const _0x346814=_0x3468();let _0x244e4f=_0x346814[_0x1add09];if(_0x244e['NNQDPV']===undefined){var _0x381ecc=function(_0x3a3bb8){const _0x41a634='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5dc7d9='',_0x1f9fbf='';for(let _0xc86ecb=0x0,_0x3c294d,_0x442807,_0x15bfab=0x0;_0x442807=_0x3a3bb8['charAt'](_0x15bfab++);~_0x442807&&(_0x3c294d=_0xc86ecb%0x4?_0x3c294d*0x40+_0x442807:_0x442807,_0xc86ecb++%0x4)?_0x5dc7d9+=String['fromCharCode'](0xff&_0x3c294d>>(-0x2*_0xc86ecb&0x6)):0x0){_0x442807=_0x41a634['indexOf'](_0x442807);}for(let _0x4da4aa=0x0,_0x3768b3=_0x5dc7d9['length'];_0x4da4aa<_0x3768b3;_0x4da4aa++){_0x1f9fbf+='%'+('00'+_0x5dc7d9['charCodeAt'](_0x4da4aa)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1f9fbf);};_0x244e['qJaMnD']=_0x381ecc,_0x244e['CckmwW']={},_0x244e['NNQDPV']=!![];}const _0x4d7936=_0x346814[0x0],_0x3d6209=_0x1add09+_0x4d7936,_0x251b6a=_0x244e['CckmwW'][_0x3d6209];return!_0x251b6a?(_0x244e4f=_0x244e['qJaMnD'](_0x244e4f),_0x244e['CckmwW'][_0x3d6209]=_0x244e4f):_0x244e4f=_0x251b6a,_0x244e4f;}(function(_0x5b2d88,_0x243327){const _0x486ac2=_0x244e,_0x4efe84=_0x5b2d88();while(!![]){try{const _0x2350ba=parseInt(_0x486ac2(0x1b0))/0x1*(parseInt(_0x486ac2(0x194))/0x2)+parseInt(_0x486ac2(0x1ce))/0x3*(parseInt(_0x486ac2(0x1e0))/0x4)+-parseInt(_0x486ac2(0x182))/0x5*(parseInt(_0x486ac2(0x1e5))/0x6)+-parseInt(_0x486ac2(0x1c4))/0x7*(parseInt(_0x486ac2(0x188))/0x8)+-parseInt(_0x486ac2(0x1b3))/0x9+-parseInt(_0x486ac2(0x1eb))/0xa+-parseInt(_0x486ac2(0x1d6))/0xb*(-parseInt(_0x486ac2(0x197))/0xc);if(_0x2350ba===_0x243327)break;else _0x4efe84['push'](_0x4efe84['shift']());}catch(_0x1ce40c){_0x4efe84['push'](_0x4efe84['shift']());}}}(_0x3468,0x81c0b));export function createPRDialogHTML(_0x5dc7d9='',_0x1f9fbf={}){const _0x483727=_0x244e,_0xc86ecb=_0x5dc7d9,_0x3c294d=_0x1f9fbf['useTaskPageStyles']?'modal\x20profound-pr-modal':'profound-feedback-modal\x20profound-pr-modal',_0x442807=_0x1f9fbf['useTaskPageStyles']?_0x483727(0x1e7):'pr-modal-warning',_0x15bfab=_0x1f9fbf[_0x483727(0x1d3)]?_0x483727(0x192):'pr-modal-error';return _0x483727(0x1ea)+_0xc86ecb+_0x483727(0x1d0)+_0x3c294d+_0x483727(0x1b6)+_0xc86ecb+_0x483727(0x1e6)+_0xc86ecb+_0x483727(0x1a2)+_0x15bfab+_0x483727(0x19f)+_0xc86ecb+_0x483727(0x1ee)+_0xc86ecb+_0x483727(0x1a9)+_0xc86ecb+_0x483727(0x1ed)+_0xc86ecb+_0x483727(0x185)+_0xc86ecb+'pr-body\x22>Description:</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<textarea\x20id=\x22'+_0xc86ecb+'pr-body\x22\x20class=\x22pr-body-input\x22\x20rows=\x226\x22\x20placeholder=\x22Enter\x20pull\x20request\x20description...\x22></textarea>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22'+_0xc86ecb+'pr-repos-section\x22\x20class=\x22modal-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Target\x20Branches</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22'+_0xc86ecb+_0x483727(0x1b2)+_0xc86ecb+_0x483727(0x199)+_0xc86ecb+_0x483727(0x1cf);}function _0x3468(){const _0x12c199=['ChiTzxjYB3iTDgv4Dci+pc9ZCgfUpGOGicaGicaGicaGpc9KAxy+cGOGicaGicaGicaGpgrPDIbPzd0I','yMfZzvvYBa','C3vWCg9YDhnquG','nuDACKvqqW','ChiTyM9KEq','tM8GCMvWB3nPDg9YAwvZihnLBgvJDgvK','ChiTDgL0BguIignSyxnZpsjWCI10AxrSzs1PBNb1DciGCgXHy2vOB2XKzxi9iKvUDgvYihb1BgWGCMvXDwvZDcb0AxrSzs4UlIi+cIaGicaGicaGicaGidWVzgL2pGOkicaGicaGicaGicaGpgrPDIbJBgfZCZ0IBw9KywWTC2vJDgLVBIi+cIaGicaGicaGicaGicaGpgXHyMvSigzVCJ0I','DhjPBq','y29UzMLYBs1WCG','mta0C2zOyMrf','DgLTzxn0yw1W','Aw5PDgLHBgL6zwq','CgfYC2u','BMfTzq','ChiTBw9KywW','qwXSihb1BgWGCMvXDwvZDcbJCMvHDgLVBNmGzMfPBgvK','z2L0x2nVBM5Ly3rPB24','DgfZA0LK','q3jLyxrLifb1BgWGuMvXDwvZDa','Bw9KywWTzxjYB3i','u29TzsbWDwXSihjLCxvLC3rZignYzwf0zwqGC3vJy2vZC2z1BgX5','nJzzDeTcug0','zgL2','rxnJyxbL','mtm2nduYCgfLzM5O','CMvZDwX0CW','y2fUy2vSlxbYiJ5dyw5JzwW8l2j1DhrVBJ4kicaGicaGicaGidXIDxr0B24Gy2XHC3m9iMj0BI1WCMLTyxj5iIbPzd0I','AgLKzgvU','lNbYlwjHC2uTyNjHBMnO','C291CMnL','B25dyw5JzwW','kgHLywqGyNjHBMnOkq','iIbOAwrKzw4+cIaGicaGicaGicaGidXZCgfUignSyxnZpsjLCNjVCI1Py29UiJ4Hpc9ZCgfUpGOGicaGicaGicaGica8C3bHBIbPzd0I','ChiTC291CMnLlwjYyw5JAa','zMLUza','ChiTzxjYB3iIignSyxnZpsi','rMfPBgvKihrVignYzwf0zsbWDwXSihjLCxvLC3rZ','z2v0','y3jLyxrLrwXLBwvUDa','CMvMCMvZAfrHC2S','C3vJy2vZCW','AgvHza','ChiTzM9YBs1Zzwn0Aw9UiJ4kicaGicaGicaGicaGpgrPDIbJBgfZCZ0IBw9KywWTC2vJDgLVBIi+cIaGicaGicaGicaGicaGpgXHyMvSigzVCJ0I','z2v0rwXLBwvUDej5swq','y2XHC3noyw1L','ChiTDgL0Bgu','C29Tzq','zxjYB3i','AxntDwjTAxr0Aw5N','mJm1nJfVzuHnvg8','ChjeyxrH','ChiTCMvWB3mTBgLZDciGy2XHC3m9iNbYlxjLCg9ZlwXPC3qIpJWVzgL2pGOGicaGicaGicaGica8l2rPDJ4kicaGicaGicaGidWVzgL2pGOGicaGicaGidWVzgL2pGOGicaGicaGidXKAxyGy2XHC3m9iM1VzgfSlwzVB3rLCIi+cIaGicaGicaGica8yNv0Dg9UignSyxnZpsjIDg4Tz2HVC3qIigLKpsi','nZK0mtK0mMD6uxD5Aq','D2fYBMLUzW','yxbWzw5Kq2HPBgq','iIbOAwrKzw4+cIaGicaGidXKAxyGy2XHC3m9iM1VzgfSlw92zxjSyxKIpJWVzgL2pGOGicaGica8zgL2ignSyxnZpsjTB2rHBc1JB250zw50iJ4kicaGicaGica8zgL2ignSyxnZpsjTB2rHBc1OzwfKzxiIpGOGicaGicaGicaGpgGYpKnYzwf0zsbqDwXSifjLCxvLC3q8l2GYpGOGicaGicaGicaGpgj1DhrVBIbJBgfZCZ0IBw9KywWTy2XVC2uIigLKpsi','BM93','y29UDgfPBMvY','zMLYC3rfBgvTzw50q2HPBgq','ChiTyMfZzs1ICMfUy2G','ChiTCMvWB3mTBgLZDa','zgLZywjSzwq','y2XVC2uTChiTBw9KywW','x2vS','ChjLzML4','ChiTzxjYB3i','C3bHBG','CgvUzgLUz1bsrgf0yq','y2fUy2vSlxbY','mZKXmJiZA1D4Bgfn','DgfYz2v0','zgf0yxnLDa','CMvWB3m','q3jLyxrPBMCUlI4','x3jLBMrLCLjLCg9tzwXLy3rVCNm','zxzLCNK','BwfPBG','ywrKrxzLBNrmAxn0zw5LCG','ChvZAa','nJLOr0Dtveu','y29UzMLYBs1WCIi+q3jLyxrLifb1BgWGuMvXDwvZDdWVyNv0Dg9UpGOGicaGicaGidWVzgL2pGOGicaGica8l2rPDJ4kicaGidWVzgL2pGOGia','ChiTBw9KywWIignSyxnZpsi','uhvSBcbYzxf1zxn0ihrPDgXLigLZihjLCxvPCMvK','z2v0sxrLBq','DxnLvgfZA1bHz2vtDhLSzxm','Dgv4DenVBNrLBNq','x2jPBMrfDMvUDhm','mJyYovblDeDzra','B25tDwjTAxq','y2XPy2S','Aw5PDa','C2HVD1rVyxn0','ChiTzxjYB3iTDgv4Da','zgvMyxvSDejYyw5JAa','Aw5Uzxjive1m','rMfPBgvKihrVihbHCNnLihbLBMrPBMCGufiGzgf0ytO','CxvLCNLtzwXLy3rVCKfSBa','nJa0odrPzuDuq1i','AgLKzq','y2HLy2Tpqxv0AfjLzgLYzwn0','A2v5','DMfSDwu','mZKWmJGXnfrgy0LYBa','y2XVC2uTChiTBw9KywWIpIz0Aw1LCZS8l2j1DhrVBJ4kicaGicaGica8l2rPDJ4kicaGicaGica8zgL2ignSyxnZpsjTB2rHBc1IB2r5iJ4kicaGicaGicaGidXKAxyGAwq9iG','Bw9KywWTD2fYBMLUzW','yMfZzq','x3nOB3DfCNjVCG','cIaGica8zgL2igLKpsi','mta1mJaZndbeshr0z1K','BgvUz3rO','ChiTDgL0BguIpLrPDgXLoJWVBgfIzwW+cIaGicaGicaGicaGicaGpgLUChv0ihr5Cgu9iNrLEhqIigLKpsi'];_0x3468=function(){return _0x12c199;};return _0x3468();}export class PRDialog{constructor(_0x4da4aa={}){const _0x58f12a=_0x244e;this[_0x58f12a(0x1bf)]=_0x4da4aa[_0x58f12a(0x1bf)]||'',this['onSubmit']=_0x4da4aa[_0x58f12a(0x1d7)],this[_0x58f12a(0x19d)]=_0x4da4aa[_0x58f12a(0x19d)],this['showToast']=_0x4da4aa[_0x58f12a(0x1da)]||(()=>{}),this['container']=_0x4da4aa[_0x58f12a(0x1b8)]||document['body'],this[_0x58f12a(0x1d3)]=_0x4da4aa[_0x58f12a(0x1d3)]||![],this[_0x58f12a(0x180)]=_0x4da4aa['baseUrl']||'',this[_0x58f12a(0x1b1)]=null,this[_0x58f12a(0x18a)]=![],this[_0x58f12a(0x1af)]=![];}['init'](){const _0x4f4267=_0x244e;if(this[_0x4f4267(0x18a)])return;const _0x3768b3=document['createElement']('div');_0x3768b3[_0x4f4267(0x1dd)]=createPRDialogHTML(this[_0x4f4267(0x1bf)],{'useTaskPageStyles':this[_0x4f4267(0x1d3)]}),this[_0x4f4267(0x1b8)][_0x4f4267(0x1b5)](_0x3768b3[_0x4f4267(0x1b9)]),this[_0x4f4267(0x1d5)](),this[_0x4f4267(0x18a)]=!![];}[_0x4bbad8(0x1be)](_0x5cccd3){const _0x474832=_0x4bbad8;return document[_0x474832(0x1aa)](''+this[_0x474832(0x1bf)]+_0x5cccd3);}[_0x4bbad8(0x1d5)](){const _0x2f0b65=_0x4bbad8;this[_0x2f0b65(0x1be)](_0x2f0b65(0x1bd))?.[_0x2f0b65(0x1cc)](_0x2f0b65(0x1d8),()=>this['hide']()),this[_0x2f0b65(0x1be)](_0x2f0b65(0x1c3))?.[_0x2f0b65(0x1cc)](_0x2f0b65(0x1d8),()=>this['hide']()),this[_0x2f0b65(0x1be)](_0x2f0b65(0x187))?.['addEventListener'](_0x2f0b65(0x1d8),()=>this['_handleSubmit']()),this[_0x2f0b65(0x1be)](_0x2f0b65(0x18d))?.[_0x2f0b65(0x1cc)](_0x2f0b65(0x1d8),_0x461b5d=>{const _0x46dd89=_0x2f0b65;_0x461b5d[_0x46dd89(0x1c5)]['id']===this['prefix']+'pr-modal'&&this[_0x46dd89(0x1e1)]();}),document[_0x2f0b65(0x1cc)]('keydown',_0x32d9ea=>{const _0x30d1dd=_0x2f0b65;_0x32d9ea[_0x30d1dd(0x1e3)]===_0x30d1dd(0x196)&&!this['_el']('pr-modal')[_0x30d1dd(0x19a)]&&this[_0x30d1dd(0x1e1)]();});}async['show'](_0x43aa41){const _0x5b2035=_0x4bbad8;if(!this[_0x5b2035(0x18a)])this[_0x5b2035(0x1d9)]();this['prData']=_0x43aa41;const {taskId:_0x4714bc,repos:_0x2da315,suggestedTitle:_0x527e19,suggestedBody:_0x634ce5}=_0x43aa41;this[_0x5b2035(0x1be)](_0x5b2035(0x1ac))['value']=_0x527e19||'',this[_0x5b2035(0x1be)](_0x5b2035(0x183))[_0x5b2035(0x1e4)]=_0x634ce5||'',this[_0x5b2035(0x1be)]('pr-error')[_0x5b2035(0x19a)]=!![],await this[_0x5b2035(0x1c9)](_0x2da315),this[_0x5b2035(0x1be)](_0x5b2035(0x18d))[_0x5b2035(0x19a)]=![];}async[_0x4bbad8(0x1c9)](_0x548102){const _0x5518d4=_0x4bbad8,_0xae5115=this[_0x5518d4(0x1be)]('pr-repos-list');_0xae5115[_0x5518d4(0x1dd)]='';for(const _0x5749da of _0x548102){if(!_0x5749da[_0x5518d4(0x181)])continue;const _0x3f6a1f=document[_0x5518d4(0x1a5)](_0x5518d4(0x195));_0x3f6a1f[_0x5518d4(0x1ab)]='pr-repo-selector';const _0x35d04c=document['createElement'](_0x5518d4(0x1c1));_0x35d04c[_0x5518d4(0x1ab)]='pr-repo-name',_0x35d04c['textContent']=_0x5749da['name'];const _0x45e332=document[_0x5518d4(0x1a5)]('span');_0x45e332['className']=_0x5518d4(0x1ba),_0x45e332[_0x5518d4(0x1d4)]=_0x5749da[_0x5518d4(0x1e8)]||_0x5749da[_0x5518d4(0x1dc)]||_0x5518d4(0x1cb),_0x45e332[_0x5518d4(0x1c6)]['repo']=_0x5749da[_0x5518d4(0x18c)],_0x45e332['dataset'][_0x5518d4(0x1e8)]=_0x5749da[_0x5518d4(0x1e8)]||_0x5749da['defaultBranch']||_0x5518d4(0x1cb);const _0x4fb5c9=document['createElement'](_0x5518d4(0x1c1));_0x4fb5c9['className']='pr-arrow',_0x4fb5c9['textContent']='←';const _0x380663=document[_0x5518d4(0x1a5)](_0x5518d4(0x1c1));_0x380663[_0x5518d4(0x1ab)]=_0x5518d4(0x1a0),_0x380663['textContent']=_0x5749da[_0x5518d4(0x1a8)]||_0x5518d4(0x19e),_0x3f6a1f[_0x5518d4(0x1b5)](_0x35d04c),_0x3f6a1f[_0x5518d4(0x1b5)](_0x45e332),_0x3f6a1f[_0x5518d4(0x1b5)](_0x4fb5c9),_0x3f6a1f[_0x5518d4(0x1b5)](_0x380663),_0xae5115['appendChild'](_0x3f6a1f);}}[_0x4bbad8(0x1e1)](){const _0x492e4f=_0x4bbad8;if(this[_0x492e4f(0x1af)])return;this[_0x492e4f(0x1be)](_0x492e4f(0x18d))[_0x492e4f(0x19a)]=!![],this[_0x492e4f(0x19d)]&&this[_0x492e4f(0x19d)]();}async['_handleSubmit'](){const _0x497c41=_0x4bbad8;if(this[_0x497c41(0x1af)])return;const _0x30330f=this[_0x497c41(0x1be)]('pr-title')['value'][_0x497c41(0x186)](),_0x60bf1f=this[_0x497c41(0x1be)](_0x497c41(0x183))[_0x497c41(0x1e4)][_0x497c41(0x186)]();if(!_0x30330f){this[_0x497c41(0x1e9)](_0x497c41(0x1d1));return;}const _0x377a1f=[],_0x550e52=this['_el'](_0x497c41(0x1bb))[_0x497c41(0x1df)](_0x497c41(0x19b));for(const _0x613bb7 of _0x550e52){const _0x23840a=_0x613bb7['dataset']['repo'],_0x7adc5e=_0x613bb7['dataset'][_0x497c41(0x1e8)],_0x2b75d3=this[_0x497c41(0x1b1)][_0x497c41(0x1c7)][_0x497c41(0x1a1)](_0xef762b=>_0xef762b[_0x497c41(0x18c)]===_0x23840a);if(!_0x2b75d3)continue;_0x377a1f[_0x497c41(0x1cd)]({'name':_0x23840a,'title':_0x30330f,'body':_0x60bf1f,'head':_0x2b75d3[_0x497c41(0x1a8)],'base':_0x7adc5e});}if(_0x377a1f[_0x497c41(0x1ec)]===0x0){this[_0x497c41(0x1e9)](_0x497c41(0x184));return;}this[_0x497c41(0x1af)]=!![],this[_0x497c41(0x1be)](_0x497c41(0x187))['disabled']=!![],this[_0x497c41(0x1be)](_0x497c41(0x187))[_0x497c41(0x1d4)]=_0x497c41(0x1c8);try{const _0x14aba7=await this[_0x497c41(0x1d7)](this[_0x497c41(0x1b1)][_0x497c41(0x190)],_0x377a1f),_0x77c643=_0x14aba7['results'][_0x497c41(0x1ca)](_0x4970cf=>_0x4970cf[_0x497c41(0x1a7)]),_0x45ae30=_0x14aba7[_0x497c41(0x198)][_0x497c41(0x1ad)](_0x3b7c41=>_0x3b7c41[_0x497c41(0x1a7)]);if(_0x77c643)this[_0x497c41(0x1da)]('Pull\x20requests\x20created\x20successfully','success');else{if(_0x45ae30)this[_0x497c41(0x1da)](_0x497c41(0x193),_0x497c41(0x1b4));else throw new Error(_0x497c41(0x18e));}this['isSubmitting']=![],this[_0x497c41(0x1be)](_0x497c41(0x187))[_0x497c41(0x1bc)]=![],this[_0x497c41(0x1be)](_0x497c41(0x187))[_0x497c41(0x1d4)]=_0x497c41(0x191),this[_0x497c41(0x1e1)](),window[_0x497c41(0x1a6)]&&window[_0x497c41(0x1a6)]({'withSpinner':![]});}catch(_0x220644){console[_0x497c41(0x1ae)]('PR\x20creation\x20failed:',_0x220644),this[_0x497c41(0x1e9)](_0x220644['message']||_0x497c41(0x1a3)),this[_0x497c41(0x1af)]=![],this[_0x497c41(0x1be)](_0x497c41(0x187))[_0x497c41(0x1bc)]=![],this[_0x497c41(0x1be)](_0x497c41(0x187))[_0x497c41(0x1d4)]='Create\x20Pull\x20Request';}}['_showError'](_0x14e380){const _0x4d2a9e=_0x4bbad8;this[_0x4d2a9e(0x1be)](_0x4d2a9e(0x1db))[_0x4d2a9e(0x1d4)]=_0x14e380,this[_0x4d2a9e(0x1be)](_0x4d2a9e(0x1c0))[_0x4d2a9e(0x19a)]=![];}static[_0x4bbad8(0x1e2)](_0x24afd6){const _0x6ea0c2=_0x4bbad8;if(_0x24afd6[_0x6ea0c2(0x1a4)](_0x6ea0c2(0x19c))==='pr'&&_0x24afd6[_0x6ea0c2(0x1a4)](_0x6ea0c2(0x18f))){const _0x5e684d=sessionStorage[_0x6ea0c2(0x1d2)](_0x6ea0c2(0x1c2));if(_0x5e684d)try{const _0x123b42=JSON[_0x6ea0c2(0x18b)](_0x5e684d);if(Date[_0x6ea0c2(0x1b7)]()-_0x123b42[_0x6ea0c2(0x189)]<0xa*0x3c*0x3e8)return sessionStorage['removeItem'](_0x6ea0c2(0x1c2)),_0x123b42;}catch(_0x1ec7ff){console[_0x6ea0c2(0x1ae)](_0x6ea0c2(0x1de),_0x1ec7ff);}}return null;}}
1
+ export function createPRDialogHTML(_0x499767='',_0xf6a1b3={}){const _0x5b9279=_0x499767,_0x59cadc=_0xf6a1b3['useTaskPageStyles']?'modal\x20profound-pr-modal':'profound-feedback-modal\x20profound-pr-modal',_0x4ef1c7=_0xf6a1b3['useTaskPageStyles']?'modal-warning':'pr-modal-warning',_0x4f0028=_0xf6a1b3['useTaskPageStyles']?'modal-error':'pr-modal-error';return'\x0a\x20\x20\x20\x20<div\x20id=\x22'+_0x5b9279+'pr-modal\x22\x20class=\x22'+_0x59cadc+'\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-overlay\x22></div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2>Create\x20Pull\x20Request</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22modal-close\x22\x20id=\x22'+_0x5b9279+'close-pr-modal\x22>&times;</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22'+_0x5b9279+'pr-error\x22\x20class=\x22'+_0x4f0028+'\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22error-icon\x22>!</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20id=\x22'+_0x5b9279+'pr-error-text\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22'+_0x5b9279+'pr-form-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22'+_0x5b9279+'pr-title\x22>Title:</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22'+_0x5b9279+'pr-title\x22\x20class=\x22pr-title-input\x22\x20placeholder=\x22Enter\x20pull\x20request\x20title...\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22'+_0x5b9279+'pr-body\x22>Description:</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<textarea\x20id=\x22'+_0x5b9279+'pr-body\x22\x20class=\x22pr-body-input\x22\x20rows=\x226\x22\x20placeholder=\x22Enter\x20pull\x20request\x20description...\x22></textarea>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22'+_0x5b9279+'pr-repos-section\x22\x20class=\x22modal-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Target\x20Branches</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22'+_0x5b9279+'pr-repos-list\x22\x20class=\x22pr-repos-list\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-footer\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x22\x20id=\x22'+_0x5b9279+'cancel-pr\x22>Cancel</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-primary\x22\x20id=\x22'+_0x5b9279+'confirm-pr\x22>Create\x20Pull\x20Request</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export class PRDialog{constructor(_0x37419a={}){this['prefix']=_0x37419a['prefix']||'',this['onSubmit']=_0x37419a['onSubmit'],this['onCancel']=_0x37419a['onCancel'],this['showToast']=_0x37419a['showToast']||(()=>{}),this['container']=_0x37419a['container']||document['body'],this['useTaskPageStyles']=_0x37419a['useTaskPageStyles']||![],this['baseUrl']=_0x37419a['baseUrl']||'',this['prData']=null,this['initialized']=![],this['isSubmitting']=![];}['init'](){if(this['initialized'])return;const _0x4f47e1=document['createElement']('div');_0x4f47e1['innerHTML']=createPRDialogHTML(this['prefix'],{'useTaskPageStyles':this['useTaskPageStyles']}),this['container']['appendChild'](_0x4f47e1['firstElementChild']),this['_bindEvents'](),this['initialized']=!![];}['_el'](_0x40b9c9){return document['getElementById'](''+this['prefix']+_0x40b9c9);}['_bindEvents'](){this['_el']('close-pr-modal')?.['addEventListener']('click',()=>this['hide']()),this['_el']('cancel-pr')?.['addEventListener']('click',()=>this['hide']()),this['_el']('confirm-pr')?.['addEventListener']('click',()=>this['_handleSubmit']()),this['_el']('pr-modal')?.['addEventListener']('click',_0x3a266d=>{_0x3a266d['target']['id']===this['prefix']+'pr-modal'&&this['hide']();}),document['addEventListener']('keydown',_0x310a18=>{_0x310a18['key']==='Escape'&&!this['_el']('pr-modal')['hidden']&&this['hide']();});}async['show'](_0x10b34e){if(!this['initialized'])this['init']();this['prData']=_0x10b34e;const {taskId:_0x21bb43,repos:_0x5916ed,suggestedTitle:_0x46dd1c,suggestedBody:_0x2506d6}=_0x10b34e;this['_el']('pr-title')['value']=_0x46dd1c||'',this['_el']('pr-body')['value']=_0x2506d6||'',this['_el']('pr-error')['hidden']=!![],await this['_renderRepoSelectors'](_0x5916ed),this['_el']('pr-modal')['hidden']=![];}async['_renderRepoSelectors'](_0x23743d){const _0x312e5c=this['_el']('pr-repos-list');_0x312e5c['innerHTML']='';for(const _0x5356ac of _0x23743d){if(!_0x5356ac['supportsPR'])continue;const _0x5afde6=document['createElement']('div');_0x5afde6['className']='pr-repo-selector';const _0x1fd949=document['createElement']('span');_0x1fd949['className']='pr-repo-name',_0x1fd949['textContent']=_0x5356ac['name'];const _0xda52f9=document['createElement']('span');_0xda52f9['className']='pr-base-branch',_0xda52f9['textContent']=_0x5356ac['base']||_0x5356ac['defaultBranch']||'main',_0xda52f9['dataset']['repo']=_0x5356ac['name'],_0xda52f9['dataset']['base']=_0x5356ac['base']||_0x5356ac['defaultBranch']||'main';const _0x48935a=document['createElement']('span');_0x48935a['className']='pr-arrow',_0x48935a['textContent']='←';const _0x39b2d4=document['createElement']('span');_0x39b2d4['className']='pr-source-branch',_0x39b2d4['textContent']=_0x5356ac['head']||'(head\x20branch)',_0x5afde6['appendChild'](_0x1fd949),_0x5afde6['appendChild'](_0xda52f9),_0x5afde6['appendChild'](_0x48935a),_0x5afde6['appendChild'](_0x39b2d4),_0x312e5c['appendChild'](_0x5afde6);}}['hide'](){if(this['isSubmitting'])return;this['_el']('pr-modal')['hidden']=!![],this['onCancel']&&this['onCancel']();}async['_handleSubmit'](){if(this['isSubmitting'])return;const _0x519089=this['_el']('pr-title')['value']['trim'](),_0x20ef1e=this['_el']('pr-body')['value']['trim']();if(!_0x519089){this['_showError']('Pull\x20request\x20title\x20is\x20required');return;}const _0x3b5e55=[],_0x461b1d=this['_el']('pr-repos-list')['querySelectorAll']('.pr-base-branch');for(const _0x3c4e73 of _0x461b1d){const _0x1d86b6=_0x3c4e73['dataset']['repo'],_0x200598=_0x3c4e73['dataset']['base'],_0x45a626=this['prData']['repos']['find'](_0x3ee870=>_0x3ee870['name']===_0x1d86b6);if(!_0x45a626)continue;_0x3b5e55['push']({'name':_0x1d86b6,'title':_0x519089,'body':_0x20ef1e,'head':_0x45a626['head'],'base':_0x200598});}if(_0x3b5e55['length']===0x0){this['_showError']('No\x20repositories\x20selected');return;}this['isSubmitting']=!![],this['_el']('confirm-pr')['disabled']=!![],this['_el']('confirm-pr')['textContent']='Creating...';try{const _0xb2b827=await this['onSubmit'](this['prData']['taskId'],_0x3b5e55),_0x36338f=_0xb2b827['results']['every'](_0x478113=>_0x478113['success']),_0x258feb=_0xb2b827['results']['some'](_0x43676a=>_0x43676a['success']);if(_0x36338f)this['showToast']('Pull\x20requests\x20created\x20successfully','success');else{if(_0x258feb)this['showToast']('Some\x20pull\x20requests\x20created\x20successfully','warning');else throw new Error('All\x20pull\x20request\x20creations\x20failed');}this['isSubmitting']=![],this['_el']('confirm-pr')['disabled']=![],this['_el']('confirm-pr')['textContent']='Create\x20Pull\x20Request',this['hide'](),window['refreshTask']&&window['refreshTask']({'withSpinner':![]});}catch(_0x4e1fd2){console['error']('PR\x20creation\x20failed:',_0x4e1fd2),this['_showError'](_0x4e1fd2['message']||'Failed\x20to\x20create\x20pull\x20requests'),this['isSubmitting']=![],this['_el']('confirm-pr')['disabled']=![],this['_el']('confirm-pr')['textContent']='Create\x20Pull\x20Request';}}['_showError'](_0x5e1ee2){this['_el']('pr-error-text')['textContent']=_0x5e1ee2,this['_el']('pr-error')['hidden']=![];}static['checkOAuthRedirect'](_0x222e07){if(_0x222e07['get']('source')==='pr'&&_0x222e07['get']('git_connection')){const _0x698193=sessionStorage['getItem']('pendingPRData');if(_0x698193)try{const _0x57c470=JSON['parse'](_0x698193);if(Date['now']()-_0x57c470['timestamp']<0xa*0x3c*0x3e8)return sessionStorage['removeItem']('pendingPRData'),_0x57c470;}catch(_0x3bcb3f){console['error']('Failed\x20to\x20parse\x20pending\x20PR\x20data:',_0x3bcb3f);}}return null;}}
@@ -1 +1 @@
1
- const _0x466c97=_0x3cbd;(function(_0x505b54,_0x3b1ba4){const _0x133348=_0x3cbd,_0x30f440=_0x505b54();while(!![]){try{const _0x230ce7=-parseInt(_0x133348(0x1f1))/0x1+-parseInt(_0x133348(0x1c3))/0x2*(-parseInt(_0x133348(0x229))/0x3)+-parseInt(_0x133348(0x218))/0x4+-parseInt(_0x133348(0x234))/0x5+-parseInt(_0x133348(0x201))/0x6*(-parseInt(_0x133348(0x1ad))/0x7)+parseInt(_0x133348(0x1ec))/0x8+parseInt(_0x133348(0x223))/0x9;if(_0x230ce7===_0x3b1ba4)break;else _0x30f440['push'](_0x30f440['shift']());}catch(_0x3485db){_0x30f440['push'](_0x30f440['shift']());}}}(_0x54d4,0x5f0a1));import{API,Utils,initializeAdminMenu}from'./app.js';import{initTheme,mountThemeToggle}from'./theme.js';const PERMISSION_CATEGORIES={'tasks':_0x466c97(0x206),'environments':'Environments','objectives':'Objectives','users':_0x466c97(0x1d2),'settings':_0x466c97(0x1cd),'server':_0x466c97(0x1e3),'deployments':_0x466c97(0x1f8),'apikeys':_0x466c97(0x202),'skills':_0x466c97(0x210),'bindings':'Access\x20Bindings','containers':_0x466c97(0x1bf),'tests':_0x466c97(0x204),'jira':_0x466c97(0x23e),'git-oauth':_0x466c97(0x1ca),'qa':'QA','visualizations':'Visualizations'},SCOPE_CONFIG={'environment':{'label':_0x466c97(0x236),'color':_0x466c97(0x1de),'bg':'rgba(59,130,246,0.12)'},'server':{'label':_0x466c97(0x1e3),'color':'#f59e0b','bg':_0x466c97(0x1af)},'team':{'label':'Team','color':_0x466c97(0x1a1),'bg':'rgba(16,185,129,0.12)'},'user':{'label':_0x466c97(0x1bb),'color':_0x466c97(0x1b7),'bg':_0x466c97(0x228)}},state={'roles':[],'availablePermissions':[],'currentUser':null,'editingRoleId':null,'deletingRoleId':null,'editModalSnapshot':null};document[_0x466c97(0x1f0)](_0x466c97(0x1a7),async()=>{const _0xef06b3=_0x466c97;initTheme(),mountThemeToggle();try{state[_0xef06b3(0x1a6)]=await API[_0xef06b3(0x1f9)]();}catch{window[_0xef06b3(0x1c0)][_0xef06b3(0x1cb)]='login.html';return;}await initializeAdminMenu(state[_0xef06b3(0x1a6)]),state[_0xef06b3(0x1a6)][_0xef06b3(0x1f2)]&&(document[_0xef06b3(0x23a)](_0xef06b3(0x20e))[_0xef06b3(0x224)]=![]),bindEventListeners(),await loadAvailablePermissions(),await loadRoles();});async function loadRoles(){const _0x395944=_0x466c97,_0x13991a=document['getElementById']('roles-loading'),_0x79d9a7=document[_0x395944(0x23a)](_0x395944(0x1d4)),_0x28de48=document[_0x395944(0x23a)](_0x395944(0x1e7));try{_0x13991a['hidden']=![],_0x79d9a7['hidden']=!![],_0x28de48['hidden']=!![];const {roles:_0x4cb7c3}=await API['getRoleDefinitions']();state['roles']=_0x4cb7c3||[],renderRoles(),_0x13991a[_0x395944(0x224)]=!![],_0x28de48['hidden']=![];}catch(_0x2a3f9b){_0x13991a[_0x395944(0x224)]=!![],_0x79d9a7[_0x395944(0x224)]=![],document[_0x395944(0x23a)](_0x395944(0x216))[_0x395944(0x212)]=_0x2a3f9b['message'];}}async function loadAvailablePermissions(){const _0x59bd6d=_0x466c97;try{const {permissions:_0x310db5}=await API[_0x59bd6d(0x214)]();state[_0x59bd6d(0x203)]=_0x310db5||[];}catch{state['availablePermissions']=[];}}function getPermissionScopeMap(){const _0x569548=_0x466c97,_0x5cb334={};for(const _0x4ffa4c of state[_0x569548(0x203)]){_0x4ffa4c[_0x569548(0x1a8)]&&(_0x5cb334[_0x4ffa4c['key']]=_0x4ffa4c[_0x569548(0x1a8)]);}return _0x5cb334;}function getRoleScopeTags(_0x3ef155){const _0x18ecd1=_0x466c97;if(!_0x3ef155||_0x3ef155[_0x18ecd1(0x20d)]===0x0)return'<span\x20style=\x22color:\x20var(--color-text-secondary);\x22>—</span>';if(_0x3ef155[_0x18ecd1(0x1bc)]('*'))return Object[_0x18ecd1(0x1be)](SCOPE_CONFIG)[_0x18ecd1(0x1e2)](_0x200e8c=>_0x18ecd1(0x233)+_0x200e8c['bg']+';\x20color:\x20'+_0x200e8c[_0x18ecd1(0x227)]+_0x18ecd1(0x207)+_0x200e8c[_0x18ecd1(0x21d)]+_0x18ecd1(0x22b))[_0x18ecd1(0x221)]('');const _0x357a57=getPermissionScopeMap(),_0x5d349d=new Set();for(const _0x5996ea of _0x3ef155){const _0x56d2e7=_0x357a57[_0x5996ea];if(_0x56d2e7)_0x5d349d[_0x18ecd1(0x1d0)](_0x56d2e7);}if(_0x5d349d[_0x18ecd1(0x1aa)]===0x0)return _0x18ecd1(0x208);const _0x429adc=[_0x18ecd1(0x1f5),_0x18ecd1(0x1c2),_0x18ecd1(0x211),_0x18ecd1(0x1a2)];return _0x429adc[_0x18ecd1(0x240)](_0x4badfb=>_0x5d349d['has'](_0x4badfb))['map'](_0x5683cc=>{const _0x56ad0e=_0x18ecd1,_0xd21bbb=SCOPE_CONFIG[_0x5683cc];return _0x56ad0e(0x233)+_0xd21bbb['bg']+_0x56ad0e(0x21e)+_0xd21bbb['color']+_0x56ad0e(0x207)+_0xd21bbb[_0x56ad0e(0x21d)]+'</span>';})[_0x18ecd1(0x221)]('');}function _0x54d4(){const _0x14b8d1=['y2XVC2uTzgvSzxrLlxjVBguTBw9KywW','CM9SzxmTzxjYB3i','zgvSzxrLuM9Szq','uM9SzsbKzwXLDgvK','CxvLCNLtzwXLy3rVCG','DMfSDwu','C29YDa','oYbWywrKAw5NlwXLzNq6idaUnZvYzw07iJ4kicaGicaGicaGicaG','y2HLy2TLza','CMv0CNKTCM9SzxmTyNrU','cIaGicaGicaGpgrPDIbZDhLSzt0IBwfYz2LUlwjVDhrVBtOGms4YnxjLBtSIpGOGicaGicaGicaGpgrPDIbZDhLSzt0IzgLZCgXHEtOGzMXLEdSGywXPz24TAxrLBxm6ignLBNrLCJSGz2fWoIaWlJvYzw07ig1HCMDPBI1IB3r0B206idaUmtvYzw07iJ4kicaGicaGicaGicaGphnWyw4GC3r5Bgu9iMzVBNqTC2L6ztOGmc44CMvToYbMB250lxDLAwDODdOGnZaWoYbJB2XVCJOG','iZnIodjMnG','pgrPDIbZDhLSzt0IzM9UDc1ZAxPLoIaWlJHLBtSGy29SB3i6ihzHCIGTlwnVBg9YlxrLEhqTC2vJB25Kyxj5ktSGBwfYz2LUlxrVCdOGmc4XnxjLBtSIpG','BMv3lxjVBguTBMfTzq','C3bSAxq','BwfW','u2vYDMvY','phaGC3r5Bgu9iMzVBNqTC2L6ztOGmc44nZvYzw07ignVBg9YoIb2yxiOls1JB2XVCI10zxH0lxnLy29UzgfYEsK7iJ5uAgLZihjVBguGAgfZidXZDhjVBMC+ywXSihbLCM1PC3nPB25Zpc9ZDhjVBMC+icH3AwXKy2fYzcKUpc9WpG','cIaGicaGicaGicaGidXSywjLBcbZDhLSzt0IzgLZCgXHEtOGzMXLEdSGywXPz24TAxrLBxm6igzSzxGTC3rHCNq7igDHCdOGmc41CMvToYbWywrKAw5NoIaWlJjYzw0GmdSGy3vYC29YoIa','zgLZywjSzwq','CM9SzxmTy29UDgvUDa','pgj1DhrVBIbJBgfZCZ0IyNrUlwDOB3n0igj0BI1ZBwfSBciGB25JBgLJAZ0ID2LUzg93lMrLBgv0zvjVBguOjW','zMLUza','pc9KAxy+','C3vJy2vZCW','nta5mteYs1DKDwnT','y2XVC2uTy3jLyxrLlxjVBguTBw9KywW','uM9SzsbJCMvHDgvK','CgvYBwLZC2LVBNm','ywrKrxzLBNrmAxn0zw5LCG','ntaYotu1txDjAM9I','AgfZqwXSugvYBwLZC2LVBNm','i3jVBguTBw9KywWGlM1VzgfSlw92zxjSyxK','lNbLCM0Ty2HLy2TIB3G6y2HLy2TLza','zw52AxjVBM1LBNq','zw50CMLLCW','CM9Szs1TB2rHBa','rgvWBg95BwvUDhm','z2v0q3vYCMvUDfvZzxi','A2v5','BMv3lxjVBguTzgvZy3jPChrPB24','pc90zd4kicaGicaGica8Dgq+','cIaGica8zgL2ihn0EwXLpsjMB250lxnPEMu6idaUohjLBtSGy29SB3i6ihzHCIGTlwnVBg9YlxrLEhqTC2vJB25Kyxj5ktSGyMfJA2DYB3vUzdOGDMfYkc0Ty29SB3iTC3vYzMfJzsK7igjVCMrLCJOGmxb4ihnVBgLKihzHCIGTlwnVBg9YlwjVCMrLCIK7igjVCMrLCI1YywrPDxm6idzWEdSGCgfKzgLUzZOGmc42CMvTidaUnZvYzw07ig1HCMDPBI1IB3r0B206idfYzw07iJ4kicaGicaGphn0CM9UzYbZDhLSzt0Iy29SB3i6ihzHCIGTlwnVBg9YlxrLEhqPoYi+u2nVCguGBwL4Aw5NoJWVC3rYB25NpGOGicaGicbbihjVBguGy2fUig1PEcbWzxjTAxnZAw9UCYbVzIbLywnOihnJB3bLihr5CgxIGjrLBNzPCM9UBwvUDcWGDxnLCIWGC2vYDMvYlcb0zwfT4OcuD2L0AcbVBMuGzxHJzxb0Aw9UoIbHihjVBguGy2fUBM90igLUy2X1zguGyM90AcbHihrLyw0GCgvYBwLZC2LVBIbHBMqGyw4Gzw52AxjVBM1LBNqGCgvYBwLZC2LVBI4kicaGidWVzgL2pG','Cg9PBNrLCG','Aw5Uzxjive1m','C2f2zs1UzxCTCM9Szq','mtiYnZKWquDiy015','qvbjieTLExm','yxzHAwXHyMXLugvYBwLZC2LVBNm','vgvZDhm','C2f2zs1YB2XL','vgfZA3m','oYbMB250lxnPEMu6idaUnZvYzw07ig1HCMDPBI1YAwDODdOGmc4YnxjLBtSIpG','phnWyw4GC3r5Bgu9iMnVBg9YoIb2yxiOls1JB2XVCI10zxH0lxnLy29UzgfYEsK7iJ7IGjq8l3nWyw4+','pc9KAxy+cIaGicaGicaGicaGia','u2vYDMvYlvnJB3bLza','CM9Szs1Uyw1L','BMfTzq','BgvUz3rO','y3jLyxrLlxjVBguTyNrU','zMLUzeLUzgv4','u2TPBgXZ','DgvHBq','Dgv4DenVBNrLBNq','vxnLCI1ty29Wzwq','z2v0qxzHAwXHyMXLugvYBwLZC2LVBNm','l0vKAxq','CM9SzxmTzxjYB3iTBwvZC2fNzq','CM9Szs1YzwfKB25SEs1UB3rPy2u','mZuXmJeYrfbxrNfK','CM9SzxmTDgfIBguTyM9KEq','CM9Szs1KzxnJCMLWDgLVBG','y2XVC2uTCM9Szs1TB2rHBa','q3vZDg9T','BgfIzwW','oYbJB2XVCJOG','ChjLzgvMAw5Lza','cIaGicaGicaGicaGicaGicbZDhLSzt0IBwfYz2LUlxrVCdOGmc4YCMvToYbMBgv4lxnOCMLUAZOGmdSIcIaGicaGicaGicaGicaGicbJBgfZCZ0ICgvYBs1JAgvJA2jVEciGzgf0ys1JB250ywLUzxi9iG','AM9PBG','C2HVD1rVyxn0','mtq3mtCXnKr1AwzwCq','AgLKzgvU','zM9JDxm','i2nYzwf0zs1YB2XLlw1VzgfSic5TB2rHBc1VDMvYBgf5','y29SB3i','CMDIysGXmZKSotiSmJq2ldaUmtiP','ndyWmJm5ruTNr29t','zxnJyxbLshrTBa','pc9ZCgfUpG','y3jLyxrLuM9SzurLzMLUAxrPB24','BMv3lxbLCM1PC3nPB25ZlwnOzwnRBgLZDa','pc9ZCgfUpGOGicaGicaGicaGica8C3bHBIbJBgfZCZ0IDgfNiIbZDhLSzt0IyMfJA2DYB3vUzdOG','zxjYB3i','DhjPBq','ww91igHHDMuGDw5ZyxzLzcbJAgfUz2vZlIbeAxnJyxjKihrOzw0/','oYi+cIaGicaGicaGicaGicaGpgLUChv0ihr5Cgu9iMnOzwnRyM94iIb2ywX1zt0I','phnWyw4Gy2XHC3m9iNrHzYiGC3r5Bgu9iMjHy2TNCM91BMq6ia','mtiZmJi1rvDduuDS','cIaGicaGicaGica8zgL2ihn0EwXLpsjTyxjNAw4TyM90Dg9ToIaWlJC1CMvToYi+cIaGicaGicaGicaGidXKAxyGC3r5Bgu9iMzVBNqTC2L6ztOGmc43nxjLBtSGzM9UDc13zwLNAhq6idCWmdSGDgv4Dc10CMfUC2zVCM06ihvWCgvYy2fZztSGBgv0DgvYlxnWywnPBMC6idaUmdvLBtSGy29SB3i6ihzHCIGTlwnVBg9YlxrLEhqTC2vJB25Kyxj5ktSGBwfYz2LUlwjVDhrVBtOGmc4ZnxjLBtSIpG','rw52','AgfZ','BwvZC2fNzq','CgvYBwLZC2LVBNmTy2HLy2TSAxn0','z2v0rwXLBwvUDej5swq','yMfJA2DYB3vUzdOGCMDIysGWldeWmcWYmdaSmc4XktSGy29SB3i6ihzHCIGTlwnVBg9YlxbYAw1HCNKPoW','zwrPDe1VzgfSu25HChnOB3q','vgvHBs1ty29Wzwq','sKLsqq','ChvZAa','zMLSDgvY','zgvSzxrLlxjVBguTBw9KywW','pc9ZCgfUpGOGicaGicaGicaGicaGidWVC3bHBJ4kicaGicaGicaGicaGpc9SywjLBd4','vgHLC2uGCgvYBwLZC2LVBNmGyxbWBhKGC2vYDMvYlxDPzguGyw5KigfYzsb0ExbPy2fSBhKGzM9YigfKBwLUigz1BMn0Aw9UCY4','y3jLyxrLlxjVBguTBw9KywW','cIaGicaGicaGpc90zd4kicaGicaGica8Dgq+phnWyw4Gy2XHC3m9iNrHzYiGC3r5Bgu9iG','pc9ZCgfUpGOGicaGicaGicaGicaGicaGphnWyw4GC3r5Bgu9iMzVBNqTC2L6ztOGmc43ohjLBtSGy29SB3i6ihzHCIGTlwnVBg9YlxrLEhqTC2vJB25Kyxj5ktSGBwfYz2LUlwXLzNq6idaUnxjLBtSIpG','zgvSzxrPBMDsB2XLswq','iZeWyJK4mq','DxnLCG','jYKIpKrLBgv0ztWVyNv0Dg9UpG','pc9ZCgfUpJWVDgq+cIaGicaGicaGphrKpG','u2vSzwn0igf0igXLyxn0ig9UzsbWzxjTAxnZAw9U','y3vYCMvUDfvZzxi','re9nq29UDgvUDeXVywrLza','C2nVCgu','zgvSzxrLlxjVBguTBMfTzq','C2L6zq','ihbLCM1PC3nPB24','q3jLyxrPBMFIGky','mtyXtgv1AKHw','uM9SzsbUyw1LigLZihjLCxvPCMvK','CMDIysGYnduSmtu4ldeXldaUmtiP','ihjVBgu','cIaGicaGicaGica8l2rPDJ4kicaGicaGica8l3rKpGOGicaGica8l3rYpG','rMfPBgvKihrVigrLBgv0zsbYB2XLoIa','uhjLzgvMAw5Lza','jYKIpLzPzxC','zwrPDgLUz1jVBgvjza','zgvZy3jPChrPB24','iZHInwnMnG','vgHLC2uGCgvYBwLZC2LVBNmGyxbWBhKGDg8GDgHLihvZzxiNCYbVD24GCMvZB3vYy2vZihjLz2fYzgXLC3mGB2yGyMLUzgLUz3mU','CM9Szxm','u2f2Aw5N4OcM','vxnLCG','Aw5JBhvKzxm','qwXSihbLCM1PC3nPB25Z','DMfSDwvZ','q29UDgfPBMvYCW','Bg9JyxrPB24','CM9Szs1MB3jTlwvYCM9Y','C2vYDMvY','nefgsfPJBW','CxvLCNLtzwXLy3rVCKfSBa','y2fUy2vSlxjVBgu','CM9Szs1TB2rHBc10AxrSzq','y2XPy2S','y3jLyxrLlxjVBguTzxjYB3i','y29UzMLYBs1KzwXLDguTCM9Szq','r2L0ie9bDxrO','AhjLzG','cIaGicaGicaGica8l2rPDJ4kicaGicaGica8l2rPDJ4','u2v0DgLUz3m','u2f2zsbsB2XL','zNjVBq','ywrK','DxbKyxrLuM9SzurLzMLUAxrPB24','vxnLCNm'];_0x54d4=function(){return _0x14b8d1;};return _0x54d4();}function renderRoles(){const _0x326390=_0x466c97,_0x5520d6=document[_0x326390(0x23a)](_0x326390(0x219)),_0x58b976=document['getElementById']('role-count');if(!_0x5520d6)return;_0x58b976&&(_0x58b976[_0x326390(0x212)]=state[_0x326390(0x1b9)][_0x326390(0x20d)]+_0x326390(0x1b0)+(state[_0x326390(0x1b9)][_0x326390(0x20d)]===0x1?'':'s'));const _0x59f91b=state[_0x326390(0x1a6)]?.[_0x326390(0x1f2)];_0x5520d6[_0x326390(0x1ff)]=state[_0x326390(0x1b9)]['map'](_0x5ccc0a=>{const _0x3a2dfc=_0x326390,_0x169892=_0x5ccc0a[_0x3a2dfc(0x1ef)]?.['length']??0x0,_0x9e6327=_0x5ccc0a[_0x3a2dfc(0x21f)]?_0x3a2dfc(0x1b3):_0x3a2dfc(0x21c),_0x5c8440=_0x5ccc0a[_0x3a2dfc(0x21f)]?'background:\x20var(--color-surface);\x20color:\x20var(--color-text-secondary);':_0x3a2dfc(0x23b),_0x298ca7=getRoleScopeTags(_0x5ccc0a['permissions']);return'\x0a\x20\x20\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20style=\x22font-weight:\x20600;\x20padding:\x200;\x20text-decoration:\x20underline;\x20text-decoration-style:\x20dotted;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onclick=\x22window.openRoleModal(\x27'+_0x5ccc0a['id']+'\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+Utils[_0x3a2dfc(0x22a)](_0x5ccc0a[_0x3a2dfc(0x20c)])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x5ccc0a[_0x3a2dfc(0x1b6)]?_0x3a2dfc(0x1df)+Utils['escapeHtml'](_0x5ccc0a['description'])+_0x3a2dfc(0x1ea):'')+_0x3a2dfc(0x245)+_0x5c8440+'\x22>'+_0x9e6327+_0x3a2dfc(0x1a4)+_0x298ca7+_0x3a2dfc(0x1fc)+(_0x169892===0x1&&_0x5ccc0a['permissions'][0x0]==='*'?_0x3a2dfc(0x1bd):_0x169892+_0x3a2dfc(0x1ab)+(_0x169892===0x1?'':'s'))+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22user-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-secondary\x20btn-small\x22\x20onclick=\x22window.openRoleModal(\x27'+_0x5ccc0a['id']+_0x3a2dfc(0x1b4)+(_0x59f91b?_0x3a2dfc(0x215):'')+'</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x59f91b&&!_0x5ccc0a[_0x3a2dfc(0x21f)]?_0x3a2dfc(0x1e8)+_0x5ccc0a['id']+_0x3a2dfc(0x1a3):'')+_0x3a2dfc(0x1b1);})[_0x326390(0x221)]('');}window['openRoleModal']=function(_0x4d6949){const _0x539f3b=_0x466c97,_0x4eccd0=state[_0x539f3b(0x1b9)]['find'](_0x175af2=>_0x175af2['id']===_0x4d6949);if(!_0x4eccd0)return;const _0x22dafb=state[_0x539f3b(0x1a6)]?.[_0x539f3b(0x1f2)],_0x52c0e8=_0x22dafb&&!_0x4eccd0[_0x539f3b(0x21f)];state[_0x539f3b(0x1b5)]=_0x4d6949,document[_0x539f3b(0x23a)](_0x539f3b(0x1c6))[_0x539f3b(0x212)]=_0x4eccd0[_0x539f3b(0x20c)],document['getElementById'](_0x539f3b(0x20b))[_0x539f3b(0x1d8)]=_0x4eccd0[_0x539f3b(0x20c)],document[_0x539f3b(0x23a)](_0x539f3b(0x20b))[_0x539f3b(0x1e6)]=!_0x52c0e8,document[_0x539f3b(0x23a)]('role-description')['value']=_0x4eccd0['description']||'',document[_0x539f3b(0x23a)]('role-description')[_0x539f3b(0x1e6)]=!_0x52c0e8,document[_0x539f3b(0x23a)](_0x539f3b(0x1c1))[_0x539f3b(0x224)]=!![],document[_0x539f3b(0x23a)](_0x539f3b(0x205))[_0x539f3b(0x224)]=!_0x52c0e8;const _0xdbc6bf=document['getElementById'](_0x539f3b(0x217));_0xdbc6bf['hidden']=_0x52c0e8,renderPermissionsChecklist('permissions-checklist',_0x4eccd0['permissions'],_0x52c0e8),_0x52c0e8?state[_0x539f3b(0x23c)]={'name':_0x4eccd0[_0x539f3b(0x20c)],'description':_0x4eccd0[_0x539f3b(0x1b6)]||'','permissions':[..._0x4eccd0[_0x539f3b(0x1ef)]||[]][_0x539f3b(0x1d9)]()}:state[_0x539f3b(0x23c)]=null,document['getElementById'](_0x539f3b(0x1f7))[_0x539f3b(0x224)]=![];};function isRoleModalDirty(){const _0x3c4b5a=_0x466c97;if(!state[_0x3c4b5a(0x23c)])return![];const _0x19c1ed=document[_0x3c4b5a(0x23a)](_0x3c4b5a(0x20b))[_0x3c4b5a(0x1d8)][_0x3c4b5a(0x230)](),_0x43aa69=document[_0x3c4b5a(0x23a)](_0x3c4b5a(0x21a))[_0x3c4b5a(0x1d8)][_0x3c4b5a(0x230)](),_0x3598f5=getCheckedPermissions(_0x3c4b5a(0x239))[_0x3c4b5a(0x1d9)]();return _0x19c1ed!==state[_0x3c4b5a(0x23c)][_0x3c4b5a(0x20c)]||_0x43aa69!==state[_0x3c4b5a(0x23c)][_0x3c4b5a(0x1b6)]||JSON['stringify'](_0x3598f5)!==JSON['stringify'](state[_0x3c4b5a(0x23c)][_0x3c4b5a(0x1ef)]);}function requestHideRoleModal(){const _0x485761=_0x466c97;if(isRoleModalDirty()){if(!confirm(_0x485761(0x231)))return;}hideRoleModal();}function hideRoleModal(){const _0x3b704b=_0x466c97;document['getElementById'](_0x3b704b(0x1f7))[_0x3b704b(0x224)]=!![],state['editingRoleId']=null,state['editModalSnapshot']=null;const _0x296855=document['getElementById']('save-role');_0x296855[_0x3b704b(0x1e6)]=![],_0x296855['textContent']=_0x3b704b(0x1ce);}function _0x3cbd(_0x1f3b15,_0x42d5da){_0x1f3b15=_0x1f3b15-0x1a0;const _0x54d4d8=_0x54d4();let _0x3cbdaa=_0x54d4d8[_0x1f3b15];if(_0x3cbd['uYcBaj']===undefined){var _0x1eb0d1=function(_0x133c74){const _0x49447e='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x13991a='',_0x79d9a7='';for(let _0x28de48=0x0,_0x4cb7c3,_0x2a3f9b,_0x310db5=0x0;_0x2a3f9b=_0x133c74['charAt'](_0x310db5++);~_0x2a3f9b&&(_0x4cb7c3=_0x28de48%0x4?_0x4cb7c3*0x40+_0x2a3f9b:_0x2a3f9b,_0x28de48++%0x4)?_0x13991a+=String['fromCharCode'](0xff&_0x4cb7c3>>(-0x2*_0x28de48&0x6)):0x0){_0x2a3f9b=_0x49447e['indexOf'](_0x2a3f9b);}for(let _0x5cb334=0x0,_0x4ffa4c=_0x13991a['length'];_0x5cb334<_0x4ffa4c;_0x5cb334++){_0x79d9a7+='%'+('00'+_0x13991a['charCodeAt'](_0x5cb334)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x79d9a7);};_0x3cbd['OCQJPi']=_0x1eb0d1,_0x3cbd['wxTwBN']={},_0x3cbd['uYcBaj']=!![];}const _0x310ff4=_0x54d4d8[0x0],_0x219fdd=_0x1f3b15+_0x310ff4,_0x23b50e=_0x3cbd['wxTwBN'][_0x219fdd];return!_0x23b50e?(_0x3cbdaa=_0x3cbd['OCQJPi'](_0x3cbdaa),_0x3cbd['wxTwBN'][_0x219fdd]=_0x3cbdaa):_0x3cbdaa=_0x23b50e,_0x3cbdaa;}function showCreateRoleModal(){const _0x47562f=_0x466c97;document[_0x47562f(0x23a)](_0x47562f(0x1e0))[_0x47562f(0x1d8)]='',document['getElementById'](_0x47562f(0x1fb))[_0x47562f(0x1d8)]='',document['getElementById'](_0x47562f(0x1c8))[_0x47562f(0x224)]=!![],renderPermissionsChecklist(_0x47562f(0x22d),[],!![]),document[_0x47562f(0x23a)](_0x47562f(0x244))[_0x47562f(0x224)]=![],setTimeout(()=>document[_0x47562f(0x23a)](_0x47562f(0x1e0))[_0x47562f(0x225)](),0x64);}function hideCreateRoleModal(){const _0x300865=_0x466c97;document[_0x300865(0x23a)]('create-role-modal')['hidden']=!![];const _0x4940f3=document[_0x300865(0x23a)](_0x300865(0x200));_0x4940f3[_0x300865(0x1e6)]=![],_0x4940f3[_0x300865(0x212)]='Create\x20Role';}function renderPermissionsChecklist(_0x551604,_0x459fef,_0x2c394f){const _0xb76842=_0x466c97,_0x3b02fe=document[_0xb76842(0x23a)](_0x551604);if(!_0x3b02fe)return;const _0x1f6ad7=_0x459fef[_0xb76842(0x1bc)]('*');if(_0x1f6ad7){_0x3b02fe[_0xb76842(0x1ff)]=_0xb76842(0x1e4);return;}const _0x30268c=[_0xb76842(0x1f5),'server',_0xb76842(0x211),'user'],_0x39ed50={'environment':'Environment-Scoped','server':_0xb76842(0x20a),'team':_0xb76842(0x23d),'user':_0xb76842(0x213)},_0xf0990e={'environment':'These\x20permissions\x20are\x20granted\x20via\x20bindings\x20and\x20apply\x20only\x20to\x20bound\x20environments.','server':_0xb76842(0x243),'team':'These\x20permissions\x20apply\x20to\x20team\x20management.','user':_0xb76842(0x1b8)},_0x56214e={};for(const _0x40e743 of state[_0xb76842(0x203)]){const _0x495f8e=_0x40e743[_0xb76842(0x1a8)]||_0xb76842(0x1f5),_0xb5cd50=_0x40e743['category']||_0x40e743[_0xb76842(0x1fa)][_0xb76842(0x1e1)](':')[0x0];if(!_0x56214e[_0x495f8e])_0x56214e[_0x495f8e]={};if(!_0x56214e[_0x495f8e][_0xb5cd50])_0x56214e[_0x495f8e][_0xb5cd50]=[];_0x56214e[_0x495f8e][_0xb5cd50][_0xb76842(0x23f)](_0x40e743);}const _0x25c02e=new Set(_0x459fef),_0x569b0f=_0xb76842(0x1fd),_0x26c3cf=_0x30268c[_0xb76842(0x240)](_0x5b9d7b=>_0x56214e[_0x5b9d7b])[_0xb76842(0x1e2)](_0x2ef566=>{const _0xf9137a=_0xb76842,_0x570519=_0x56214e[_0x2ef566],_0x2f57e0=SCOPE_CONFIG[_0x2ef566],_0x4806f4=Object[_0xf9137a(0x1f6)](_0x570519)['map'](([_0x44b791,_0x26ae58])=>{const _0x3b04a8=_0xf9137a,_0xe8ea25=PERMISSION_CATEGORIES[_0x44b791]||_0x44b791,_0x2bf68d=_0x26ae58[_0x3b04a8(0x1e2)](_0x5bc250=>{const _0x46e2e9=_0x3b04a8,_0x2a8a22=_0x25c02e[_0x46e2e9(0x237)](_0x5bc250[_0x46e2e9(0x1fa)])?_0x46e2e9(0x1db):'',_0xf1520c=_0x2c394f?'':'disabled';return _0x46e2e9(0x1e5)+(_0x2c394f?_0x46e2e9(0x1fe):'default')+_0x46e2e9(0x232)+_0x5bc250[_0x46e2e9(0x1fa)]+'\x22\x20'+_0x2a8a22+'\x20'+_0xf1520c+_0x46e2e9(0x220)+_0x551604+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:\x200.8rem;\x20font-family:\x20monospace;\x20color:\x20var(--color-primary);\x22>'+Utils['escapeHtml'](_0x5bc250[_0x46e2e9(0x1fa)])+_0x46e2e9(0x246)+Utils['escapeHtml'](_0x5bc250[_0x46e2e9(0x1b6)])+_0x46e2e9(0x242);})['join']('');return _0x3b04a8(0x235)+Utils['escapeHtml'](_0xe8ea25)+_0x3b04a8(0x209)+_0x2bf68d+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>';})[_0xf9137a(0x221)]('');return _0xf9137a(0x1dd)+_0x2f57e0[_0xf9137a(0x227)]+';\x22>'+_0x39ed50[_0x2ef566]+_0xf9137a(0x22e)+_0x2f57e0['bg']+_0xf9137a(0x21e)+_0x2f57e0[_0xf9137a(0x227)]+';\x20font-size:\x200.65rem;\x22>'+_0x2f57e0['label']+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:\x200.75rem;\x20color:\x20var(--color-text-secondary);\x20margin-bottom:\x200.5rem;\x22>'+_0xf0990e[_0x2ef566]+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22border-left:\x202px\x20solid\x20'+_0x2f57e0[_0xf9137a(0x227)]+_0xf9137a(0x1da)+_0x4806f4+_0xf9137a(0x1cc);})[_0xb76842(0x221)]('');_0x3b02fe[_0xb76842(0x1ff)]=_0x569b0f+_0x26c3cf;}function getCheckedPermissions(_0x278622){const _0x5d7c26=_0x466c97,_0x1ea641=document[_0x5d7c26(0x23a)](_0x278622);if(!_0x1ea641)return[];return Array[_0x5d7c26(0x1cf)](_0x1ea641[_0x5d7c26(0x1c4)](_0x5d7c26(0x1f4)))[_0x5d7c26(0x1e2)](_0x392f19=>_0x392f19['value']);}async function saveRole(){const _0x362ae2=_0x466c97,_0x1ba558=document['getElementById']('role-name')[_0x362ae2(0x1d8)][_0x362ae2(0x230)](),_0x167278=document[_0x362ae2(0x23a)](_0x362ae2(0x21a))[_0x362ae2(0x1d8)][_0x362ae2(0x230)](),_0x323597=getCheckedPermissions(_0x362ae2(0x239)),_0x15332a=document['getElementById'](_0x362ae2(0x1c1)),_0x46df2a=document['getElementById']('save-role');if(!_0x1ba558){_0x15332a['textContent']='Role\x20name\x20is\x20required',_0x15332a[_0x362ae2(0x224)]=![];return;}if(_0x323597[_0x362ae2(0x20d)]===0x0){_0x15332a[_0x362ae2(0x212)]=_0x362ae2(0x1a5),_0x15332a['hidden']=![];return;}_0x15332a[_0x362ae2(0x224)]=!![];const _0x457347=_0x46df2a[_0x362ae2(0x212)];_0x46df2a[_0x362ae2(0x1e6)]=!![],_0x46df2a['textContent']=_0x362ae2(0x1ba);try{const {role:_0x9ee6d2}=await API[_0x362ae2(0x1d1)](state[_0x362ae2(0x1b5)],{'name':_0x1ba558,'description':_0x167278,'permissions':_0x323597}),_0x42e0c1=state[_0x362ae2(0x1b9)][_0x362ae2(0x20f)](_0x3c43a4=>_0x3c43a4['id']===_0x9ee6d2['id']);if(_0x42e0c1>=0x0)state[_0x362ae2(0x1b9)][_0x42e0c1]=_0x9ee6d2;renderRoles(),Utils[_0x362ae2(0x222)]('Role\x20updated',_0x362ae2(0x1eb)),hideRoleModal();}catch(_0x10d338){_0x15332a['textContent']=_0x10d338[_0x362ae2(0x238)],_0x15332a[_0x362ae2(0x224)]=![],_0x46df2a[_0x362ae2(0x1e6)]=![],_0x46df2a['textContent']=_0x457347;}}async function createRole(){const _0x1f7ba7=_0x466c97,_0x262df1=document['getElementById']('new-role-name')[_0x1f7ba7(0x1d8)][_0x1f7ba7(0x230)](),_0x5e039a=document['getElementById'](_0x1f7ba7(0x1fb))[_0x1f7ba7(0x1d8)]['trim'](),_0x3dd941=getCheckedPermissions('new-permissions-checklist'),_0x4ee83d=document[_0x1f7ba7(0x23a)](_0x1f7ba7(0x1c8)),_0x1631e2=document[_0x1f7ba7(0x23a)](_0x1f7ba7(0x200));if(!_0x262df1){_0x4ee83d[_0x1f7ba7(0x212)]=_0x1f7ba7(0x1ae),_0x4ee83d[_0x1f7ba7(0x224)]=![];return;}if(_0x3dd941[_0x1f7ba7(0x20d)]===0x0){_0x4ee83d['textContent']='Select\x20at\x20least\x20one\x20permission',_0x4ee83d[_0x1f7ba7(0x224)]=![];return;}_0x4ee83d[_0x1f7ba7(0x224)]=!![];const _0x19e8ff=_0x1631e2[_0x1f7ba7(0x212)];_0x1631e2['disabled']=!![],_0x1631e2['textContent']=_0x1f7ba7(0x1ac);try{const {role:_0x32fa1c}=await API[_0x1f7ba7(0x22c)]({'name':_0x262df1,'description':_0x5e039a,'permissions':_0x3dd941});state[_0x1f7ba7(0x1b9)][_0x1f7ba7(0x23f)](_0x32fa1c),renderRoles(),Utils[_0x1f7ba7(0x222)](_0x1f7ba7(0x1ee),'success'),hideCreateRoleModal();}catch(_0xc9bd9f){_0x4ee83d['textContent']=_0xc9bd9f[_0x1f7ba7(0x238)],_0x4ee83d[_0x1f7ba7(0x224)]=![],_0x1631e2[_0x1f7ba7(0x1e6)]=![],_0x1631e2['textContent']=_0x19e8ff;}}window[_0x466c97(0x1d5)]=function(_0x38d480){const _0x2f164d=_0x466c97,_0x56719e=state[_0x2f164d(0x1b9)][_0x2f164d(0x1e9)](_0x5cdb3c=>_0x5cdb3c['id']===_0x38d480);if(!_0x56719e)return;state['deletingRoleId']=_0x38d480,document[_0x2f164d(0x23a)](_0x2f164d(0x1a9))[_0x2f164d(0x212)]=_0x56719e['name'],document[_0x2f164d(0x23a)](_0x2f164d(0x241))[_0x2f164d(0x224)]=![];};function hideDeleteRoleModal(){const _0x2bdf05=_0x466c97;document[_0x2bdf05(0x23a)](_0x2bdf05(0x241))['hidden']=!![],state['deletingRoleId']=null;const _0x373a9b=document[_0x2bdf05(0x23a)](_0x2bdf05(0x1c9));_0x373a9b['disabled']=![],_0x373a9b[_0x2bdf05(0x212)]='Delete\x20Role';}async function confirmDeleteRole(){const _0x53a56b=_0x466c97;if(!state[_0x53a56b(0x1a0)])return;const _0x2dcd83=document['getElementById'](_0x53a56b(0x1c9));_0x2dcd83[_0x53a56b(0x1e6)]=!![],_0x2dcd83['textContent']='Deleting…';try{await API['deleteRoleDefinition'](state[_0x53a56b(0x1a0)]),state[_0x53a56b(0x1b9)]=state[_0x53a56b(0x1b9)][_0x53a56b(0x240)](_0x18fe81=>_0x18fe81['id']!==state[_0x53a56b(0x1a0)]),renderRoles(),Utils['showToast'](_0x53a56b(0x1d6),'success'),hideDeleteRoleModal();}catch(_0x3b669d){Utils['showToast'](_0x53a56b(0x1b2)+_0x3b669d[_0x53a56b(0x238)],_0x53a56b(0x22f)),_0x2dcd83[_0x53a56b(0x1e6)]=![],_0x2dcd83[_0x53a56b(0x212)]='Delete\x20Role';}}function bindEventListeners(){const _0x261dcf=_0x466c97;document[_0x261dcf(0x23a)](_0x261dcf(0x20e))?.[_0x261dcf(0x1f0)](_0x261dcf(0x1c7),showCreateRoleModal),document[_0x261dcf(0x23a)](_0x261dcf(0x1dc))?.['addEventListener'](_0x261dcf(0x1c7),loadRoles),document[_0x261dcf(0x23a)](_0x261dcf(0x21b))?.[_0x261dcf(0x1f0)](_0x261dcf(0x1c7),requestHideRoleModal),document[_0x261dcf(0x23a)](_0x261dcf(0x1c5))?.[_0x261dcf(0x1f0)](_0x261dcf(0x1c7),requestHideRoleModal),document[_0x261dcf(0x23a)]('save-role')?.[_0x261dcf(0x1f0)](_0x261dcf(0x1c7),saveRole),document[_0x261dcf(0x1d7)](_0x261dcf(0x1f3))?.[_0x261dcf(0x1f0)](_0x261dcf(0x1c7),requestHideRoleModal),document[_0x261dcf(0x23a)](_0x261dcf(0x1ed))?.[_0x261dcf(0x1f0)](_0x261dcf(0x1c7),hideCreateRoleModal),document[_0x261dcf(0x23a)]('cancel-create-role')?.[_0x261dcf(0x1f0)](_0x261dcf(0x1c7),hideCreateRoleModal),document[_0x261dcf(0x23a)](_0x261dcf(0x200))?.['addEventListener'](_0x261dcf(0x1c7),createRole),document[_0x261dcf(0x1d7)](_0x261dcf(0x226))?.[_0x261dcf(0x1f0)]('click',hideCreateRoleModal),document['getElementById'](_0x261dcf(0x1d3))?.[_0x261dcf(0x1f0)](_0x261dcf(0x1c7),hideDeleteRoleModal),document[_0x261dcf(0x23a)]('cancel-delete-role')?.[_0x261dcf(0x1f0)]('click',hideDeleteRoleModal),document[_0x261dcf(0x23a)](_0x261dcf(0x1c9))?.[_0x261dcf(0x1f0)](_0x261dcf(0x1c7),confirmDeleteRole),document[_0x261dcf(0x1d7)]('#delete-role-modal\x20.modal-overlay')?.[_0x261dcf(0x1f0)](_0x261dcf(0x1c7),hideDeleteRoleModal);}
1
+ import{API,Utils,initializeAdminMenu}from'./app.js';import{initTheme,mountThemeToggle}from'./theme.js';const PERMISSION_CATEGORIES={'tasks':'Tasks','environments':'Environments','objectives':'Objectives','users':'Users','settings':'Settings','server':'Server','deployments':'Deployments','apikeys':'API\x20Keys','skills':'Skills','bindings':'Access\x20Bindings','containers':'Containers','tests':'Tests','jira':'JIRA','git-oauth':'Git\x20OAuth','qa':'QA','visualizations':'Visualizations'},SCOPE_CONFIG={'environment':{'label':'Env','color':'#3b82f6','bg':'rgba(59,130,246,0.12)'},'server':{'label':'Server','color':'#f59e0b','bg':'rgba(245,158,11,0.12)'},'team':{'label':'Team','color':'#10b981','bg':'rgba(16,185,129,0.12)'},'user':{'label':'User','color':'#8b5cf6','bg':'rgba(139,92,246,0.12)'}},state={'roles':[],'availablePermissions':[],'currentUser':null,'editingRoleId':null,'deletingRoleId':null,'editModalSnapshot':null};document['addEventListener']('DOMContentLoaded',async()=>{initTheme(),mountThemeToggle();try{state['currentUser']=await API['getCurrentUser']();}catch{window['location']['href']='login.html';return;}await initializeAdminMenu(state['currentUser']),state['currentUser']['hasAllPermissions']&&(document['getElementById']('create-role-btn')['hidden']=![]),bindEventListeners(),await loadAvailablePermissions(),await loadRoles();});async function loadRoles(){const _0x4f13c7=document['getElementById']('roles-loading'),_0x33e5ed=document['getElementById']('roles-error'),_0x12432c=document['getElementById']('roles-content');try{_0x4f13c7['hidden']=![],_0x33e5ed['hidden']=!![],_0x12432c['hidden']=!![];const {roles:_0x35f5e9}=await API['getRoleDefinitions']();state['roles']=_0x35f5e9||[],renderRoles(),_0x4f13c7['hidden']=!![],_0x12432c['hidden']=![];}catch(_0x10c6db){_0x4f13c7['hidden']=!![],_0x33e5ed['hidden']=![],document['getElementById']('roles-error-message')['textContent']=_0x10c6db['message'];}}async function loadAvailablePermissions(){try{const {permissions:_0x1b0ce2}=await API['getAvailablePermissions']();state['availablePermissions']=_0x1b0ce2||[];}catch{state['availablePermissions']=[];}}function getPermissionScopeMap(){const _0x68ad7f={};for(const _0x5d8c33 of state['availablePermissions']){_0x5d8c33['scope']&&(_0x68ad7f[_0x5d8c33['key']]=_0x5d8c33['scope']);}return _0x68ad7f;}function getRoleScopeTags(_0x20466c){if(!_0x20466c||_0x20466c['length']===0x0)return'<span\x20style=\x22color:\x20var(--color-text-secondary);\x22>—</span>';if(_0x20466c['includes']('*'))return Object['values'](SCOPE_CONFIG)['map'](_0x459030=>'<span\x20class=\x22tag\x22\x20style=\x22background:\x20'+_0x459030['bg']+';\x20color:\x20'+_0x459030['color']+';\x20font-size:\x200.75rem;\x20margin-right:\x200.25rem;\x22>'+_0x459030['label']+'</span>')['join']('');const _0x1c4e5b=getPermissionScopeMap(),_0x5b346d=new Set();for(const _0x871319 of _0x20466c){const _0x503f7b=_0x1c4e5b[_0x871319];if(_0x503f7b)_0x5b346d['add'](_0x503f7b);}if(_0x5b346d['size']===0x0)return'<span\x20style=\x22color:\x20var(--color-text-secondary);\x22>—</span>';const _0x2ed971=['environment','server','team','user'];return _0x2ed971['filter'](_0x2ffff0=>_0x5b346d['has'](_0x2ffff0))['map'](_0x37b2c4=>{const _0x47e9e6=SCOPE_CONFIG[_0x37b2c4];return'<span\x20class=\x22tag\x22\x20style=\x22background:\x20'+_0x47e9e6['bg']+';\x20color:\x20'+_0x47e9e6['color']+';\x20font-size:\x200.75rem;\x20margin-right:\x200.25rem;\x22>'+_0x47e9e6['label']+'</span>';})['join']('');}function renderRoles(){const _0x2bba41=document['getElementById']('roles-table-body'),_0x14aed4=document['getElementById']('role-count');if(!_0x2bba41)return;_0x14aed4&&(_0x14aed4['textContent']=state['roles']['length']+'\x20role'+(state['roles']['length']===0x1?'':'s'));const _0x19bc3f=state['currentUser']?.['hasAllPermissions'];_0x2bba41['innerHTML']=state['roles']['map'](_0x286c08=>{const _0x3def7a=_0x286c08['permissions']?.['length']??0x0,_0x2b70db=_0x286c08['predefined']?'Predefined':'Custom',_0x5c396c=_0x286c08['predefined']?'background:\x20var(--color-surface);\x20color:\x20var(--color-text-secondary);':'background:\x20rgba(0,100,200,0.1);\x20color:\x20var(--color-primary);',_0x1ced65=getRoleScopeTags(_0x286c08['permissions']);return'\x0a\x20\x20\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20style=\x22font-weight:\x20600;\x20padding:\x200;\x20text-decoration:\x20underline;\x20text-decoration-style:\x20dotted;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onclick=\x22window.openRoleModal(\x27'+_0x286c08['id']+'\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+Utils['escapeHtml'](_0x286c08['name'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x286c08['description']?'<div\x20style=\x22font-size:\x200.8em;\x20color:\x20var(--color-text-secondary);\x20margin-top:\x200.15rem;\x22>'+Utils['escapeHtml'](_0x286c08['description'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td><span\x20class=\x22tag\x22\x20style=\x22'+_0x5c396c+'\x22>'+_0x2b70db+'</span></td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+_0x1ced65+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+(_0x3def7a===0x1&&_0x286c08['permissions'][0x0]==='*'?'All\x20permissions':_0x3def7a+'\x20permission'+(_0x3def7a===0x1?'':'s'))+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22user-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-secondary\x20btn-small\x22\x20onclick=\x22window.openRoleModal(\x27'+_0x286c08['id']+'\x27)\x22>View'+(_0x19bc3f?'/Edit':'')+'</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x19bc3f&&!_0x286c08['predefined']?'<button\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22window.deleteRole(\x27'+_0x286c08['id']+'\x27)\x22>Delete</button>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20</tr>';})['join']('');}window['openRoleModal']=function(_0x3a906e){const _0x6d3301=state['roles']['find'](_0x22fb08=>_0x22fb08['id']===_0x3a906e);if(!_0x6d3301)return;const _0x4e37f8=state['currentUser']?.['hasAllPermissions'],_0x5c7538=_0x4e37f8&&!_0x6d3301['predefined'];state['editingRoleId']=_0x3a906e,document['getElementById']('role-modal-title')['textContent']=_0x6d3301['name'],document['getElementById']('role-name')['value']=_0x6d3301['name'],document['getElementById']('role-name')['disabled']=!_0x5c7538,document['getElementById']('role-description')['value']=_0x6d3301['description']||'',document['getElementById']('role-description')['disabled']=!_0x5c7538,document['getElementById']('role-form-error')['hidden']=!![],document['getElementById']('save-role')['hidden']=!_0x5c7538;const _0x13adc5=document['getElementById']('role-readonly-notice');_0x13adc5['hidden']=_0x5c7538,renderPermissionsChecklist('permissions-checklist',_0x6d3301['permissions'],_0x5c7538),_0x5c7538?state['editModalSnapshot']={'name':_0x6d3301['name'],'description':_0x6d3301['description']||'','permissions':[..._0x6d3301['permissions']||[]]['sort']()}:state['editModalSnapshot']=null,document['getElementById']('role-modal')['hidden']=![];};function isRoleModalDirty(){if(!state['editModalSnapshot'])return![];const _0x212ee8=document['getElementById']('role-name')['value']['trim'](),_0x3431d7=document['getElementById']('role-description')['value']['trim'](),_0x3d0d7e=getCheckedPermissions('permissions-checklist')['sort']();return _0x212ee8!==state['editModalSnapshot']['name']||_0x3431d7!==state['editModalSnapshot']['description']||JSON['stringify'](_0x3d0d7e)!==JSON['stringify'](state['editModalSnapshot']['permissions']);}function requestHideRoleModal(){if(isRoleModalDirty()){if(!confirm('You\x20have\x20unsaved\x20changes.\x20Discard\x20them?'))return;}hideRoleModal();}function hideRoleModal(){document['getElementById']('role-modal')['hidden']=!![],state['editingRoleId']=null,state['editModalSnapshot']=null;const _0x3e1db5=document['getElementById']('save-role');_0x3e1db5['disabled']=![],_0x3e1db5['textContent']='Save\x20Role';}function showCreateRoleModal(){document['getElementById']('new-role-name')['value']='',document['getElementById']('new-role-description')['value']='',document['getElementById']('create-role-error')['hidden']=!![],renderPermissionsChecklist('new-permissions-checklist',[],!![]),document['getElementById']('create-role-modal')['hidden']=![],setTimeout(()=>document['getElementById']('new-role-name')['focus'](),0x64);}function hideCreateRoleModal(){document['getElementById']('create-role-modal')['hidden']=!![];const _0x3c41fa=document['getElementById']('save-new-role');_0x3c41fa['disabled']=![],_0x3c41fa['textContent']='Create\x20Role';}function renderPermissionsChecklist(_0x3625bf,_0x4688de,_0x2a8272){const _0x3ff420=document['getElementById'](_0x3625bf);if(!_0x3ff420)return;const _0xe699fb=_0x4688de['includes']('*');if(_0xe699fb){_0x3ff420['innerHTML']='<p\x20style=\x22font-size:\x200.875rem;\x20color:\x20var(--color-text-secondary);\x22>This\x20role\x20has\x20<strong>all\x20permissions</strong>\x20(wildcard).</p>';return;}const _0x3c314a=['environment','server','team','user'],_0x119f12={'environment':'Environment-Scoped','server':'Server-Scoped','team':'Team-Scoped','user':'User-Scoped'},_0x5c2559={'environment':'These\x20permissions\x20are\x20granted\x20via\x20bindings\x20and\x20apply\x20only\x20to\x20bound\x20environments.','server':'These\x20permissions\x20apply\x20server-wide\x20and\x20are\x20typically\x20for\x20admin\x20functions.','team':'These\x20permissions\x20apply\x20to\x20team\x20management.','user':'These\x20permissions\x20apply\x20to\x20the\x20user\x27s\x20own\x20resources\x20regardless\x20of\x20bindings.'},_0x34cfbd={};for(const _0x26fe8b of state['availablePermissions']){const _0x1d60d9=_0x26fe8b['scope']||'environment',_0x4416e2=_0x26fe8b['category']||_0x26fe8b['key']['split'](':')[0x0];if(!_0x34cfbd[_0x1d60d9])_0x34cfbd[_0x1d60d9]={};if(!_0x34cfbd[_0x1d60d9][_0x4416e2])_0x34cfbd[_0x1d60d9][_0x4416e2]=[];_0x34cfbd[_0x1d60d9][_0x4416e2]['push'](_0x26fe8b);}const _0x1d706c=new Set(_0x4688de),_0x397c88='\x0a\x20\x20\x20\x20<div\x20style=\x22font-size:\x200.8rem;\x20color:\x20var(--color-text-secondary);\x20background:\x20var(--color-surface);\x20border:\x201px\x20solid\x20var(--color-border);\x20border-radius:\x206px;\x20padding:\x200.6rem\x200.75rem;\x20margin-bottom:\x201rem;\x22>\x0a\x20\x20\x20\x20\x20\x20<strong\x20style=\x22color:\x20var(--color-text);\x22>Scope\x20mixing:</strong>\x0a\x20\x20\x20\x20\x20\x20A\x20role\x20can\x20mix\x20permissions\x20of\x20each\x20scope\x20type—environment,\x20user,\x20server,\x20team—with\x20one\x20exception:\x20a\x20role\x20cannot\x20include\x20both\x20a\x20team\x20permission\x20and\x20an\x20environment\x20permission.\x0a\x20\x20\x20\x20</div>',_0x357242=_0x3c314a['filter'](_0x2b582e=>_0x34cfbd[_0x2b582e])['map'](_0x6b6876=>{const _0x27b13d=_0x34cfbd[_0x6b6876],_0x1d70da=SCOPE_CONFIG[_0x6b6876],_0x17b3ad=Object['entries'](_0x27b13d)['map'](([_0x31386b,_0x4d6d89])=>{const _0x305bb5=PERMISSION_CATEGORIES[_0x31386b]||_0x31386b,_0x1c0584=_0x4d6d89['map'](_0x264a53=>{const _0x3ddcba=_0x1d706c['has'](_0x264a53['key'])?'checked':'',_0x486eda=_0x2a8272?'':'disabled';return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:\x20flex;\x20align-items:\x20flex-start;\x20gap:\x200.5rem;\x20padding:\x200.2rem\x200;\x20cursor:\x20'+(_0x2a8272?'pointer':'default')+';\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20value=\x22'+_0x264a53['key']+'\x22\x20'+_0x3ddcba+'\x20'+_0x486eda+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22margin-top:\x200.2rem;\x20flex-shrink:\x200;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22perm-checkbox\x22\x20data-container=\x22'+_0x3625bf+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:\x200.8rem;\x20font-family:\x20monospace;\x20color:\x20var(--color-primary);\x22>'+Utils['escapeHtml'](_0x264a53['key'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:\x200.78rem;\x20color:\x20var(--color-text-secondary);\x20margin-left:\x200.5rem;\x22>'+Utils['escapeHtml'](_0x264a53['description'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>';})['join']('');return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-bottom:\x200.75rem;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:\x200.75rem;\x20font-weight:\x20700;\x20text-transform:\x20uppercase;\x20letter-spacing:\x200.05em;\x20color:\x20var(--color-text-secondary);\x20margin-bottom:\x200.35rem;\x22>'+Utils['escapeHtml'](_0x305bb5)+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x1c0584+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>';})['join']('');return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-bottom:\x201.25rem;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:\x20flex;\x20align-items:\x20center;\x20gap:\x200.5rem;\x20margin-bottom:\x200.15rem;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:\x200.8rem;\x20font-weight:\x20700;\x20color:\x20'+_0x1d70da['color']+';\x22>'+_0x119f12[_0x6b6876]+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22tag\x22\x20style=\x22background:\x20'+_0x1d70da['bg']+';\x20color:\x20'+_0x1d70da['color']+';\x20font-size:\x200.65rem;\x22>'+_0x1d70da['label']+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:\x200.75rem;\x20color:\x20var(--color-text-secondary);\x20margin-bottom:\x200.5rem;\x22>'+_0x5c2559[_0x6b6876]+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22border-left:\x202px\x20solid\x20'+_0x1d70da['color']+';\x20padding-left:\x200.75rem;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x17b3ad+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>';})['join']('');_0x3ff420['innerHTML']=_0x397c88+_0x357242;}function getCheckedPermissions(_0x4481e4){const _0x3e23e7=document['getElementById'](_0x4481e4);if(!_0x3e23e7)return[];return Array['from'](_0x3e23e7['querySelectorAll']('.perm-checkbox:checked'))['map'](_0x1c09d1=>_0x1c09d1['value']);}async function saveRole(){const _0x55c490=document['getElementById']('role-name')['value']['trim'](),_0x1cdc34=document['getElementById']('role-description')['value']['trim'](),_0x3a7a8a=getCheckedPermissions('permissions-checklist'),_0x179c81=document['getElementById']('role-form-error'),_0x36ee70=document['getElementById']('save-role');if(!_0x55c490){_0x179c81['textContent']='Role\x20name\x20is\x20required',_0x179c81['hidden']=![];return;}if(_0x3a7a8a['length']===0x0){_0x179c81['textContent']='Select\x20at\x20least\x20one\x20permission',_0x179c81['hidden']=![];return;}_0x179c81['hidden']=!![];const _0x58922b=_0x36ee70['textContent'];_0x36ee70['disabled']=!![],_0x36ee70['textContent']='Saving…';try{const {role:_0x55d753}=await API['updateRoleDefinition'](state['editingRoleId'],{'name':_0x55c490,'description':_0x1cdc34,'permissions':_0x3a7a8a}),_0x5ef692=state['roles']['findIndex'](_0x554cc9=>_0x554cc9['id']===_0x55d753['id']);if(_0x5ef692>=0x0)state['roles'][_0x5ef692]=_0x55d753;renderRoles(),Utils['showToast']('Role\x20updated','success'),hideRoleModal();}catch(_0x2b99fd){_0x179c81['textContent']=_0x2b99fd['message'],_0x179c81['hidden']=![],_0x36ee70['disabled']=![],_0x36ee70['textContent']=_0x58922b;}}async function createRole(){const _0x3dba16=document['getElementById']('new-role-name')['value']['trim'](),_0x2bb724=document['getElementById']('new-role-description')['value']['trim'](),_0x4fd28a=getCheckedPermissions('new-permissions-checklist'),_0x509c82=document['getElementById']('create-role-error'),_0x313afd=document['getElementById']('save-new-role');if(!_0x3dba16){_0x509c82['textContent']='Role\x20name\x20is\x20required',_0x509c82['hidden']=![];return;}if(_0x4fd28a['length']===0x0){_0x509c82['textContent']='Select\x20at\x20least\x20one\x20permission',_0x509c82['hidden']=![];return;}_0x509c82['hidden']=!![];const _0x292a64=_0x313afd['textContent'];_0x313afd['disabled']=!![],_0x313afd['textContent']='Creating…';try{const {role:_0x4d17a8}=await API['createRoleDefinition']({'name':_0x3dba16,'description':_0x2bb724,'permissions':_0x4fd28a});state['roles']['push'](_0x4d17a8),renderRoles(),Utils['showToast']('Role\x20created','success'),hideCreateRoleModal();}catch(_0x103560){_0x509c82['textContent']=_0x103560['message'],_0x509c82['hidden']=![],_0x313afd['disabled']=![],_0x313afd['textContent']=_0x292a64;}}window['deleteRole']=function(_0x451667){const _0x549306=state['roles']['find'](_0xce455b=>_0xce455b['id']===_0x451667);if(!_0x549306)return;state['deletingRoleId']=_0x451667,document['getElementById']('delete-role-name')['textContent']=_0x549306['name'],document['getElementById']('delete-role-modal')['hidden']=![];};function hideDeleteRoleModal(){document['getElementById']('delete-role-modal')['hidden']=!![],state['deletingRoleId']=null;const _0x3bdbb6=document['getElementById']('confirm-delete-role');_0x3bdbb6['disabled']=![],_0x3bdbb6['textContent']='Delete\x20Role';}async function confirmDeleteRole(){if(!state['deletingRoleId'])return;const _0x42dd2a=document['getElementById']('confirm-delete-role');_0x42dd2a['disabled']=!![],_0x42dd2a['textContent']='Deleting…';try{await API['deleteRoleDefinition'](state['deletingRoleId']),state['roles']=state['roles']['filter'](_0x2fac6d=>_0x2fac6d['id']!==state['deletingRoleId']),renderRoles(),Utils['showToast']('Role\x20deleted','success'),hideDeleteRoleModal();}catch(_0x392ab2){Utils['showToast']('Failed\x20to\x20delete\x20role:\x20'+_0x392ab2['message'],'error'),_0x42dd2a['disabled']=![],_0x42dd2a['textContent']='Delete\x20Role';}}function bindEventListeners(){document['getElementById']('create-role-btn')?.['addEventListener']('click',showCreateRoleModal),document['getElementById']('retry-roles-btn')?.['addEventListener']('click',loadRoles),document['getElementById']('close-role-modal')?.['addEventListener']('click',requestHideRoleModal),document['getElementById']('cancel-role')?.['addEventListener']('click',requestHideRoleModal),document['getElementById']('save-role')?.['addEventListener']('click',saveRole),document['querySelector']('#role-modal\x20.modal-overlay')?.['addEventListener']('click',requestHideRoleModal),document['getElementById']('close-create-role-modal')?.['addEventListener']('click',hideCreateRoleModal),document['getElementById']('cancel-create-role')?.['addEventListener']('click',hideCreateRoleModal),document['getElementById']('save-new-role')?.['addEventListener']('click',createRole),document['querySelector']('#create-role-modal\x20.modal-overlay')?.['addEventListener']('click',hideCreateRoleModal),document['getElementById']('close-delete-role-modal')?.['addEventListener']('click',hideDeleteRoleModal),document['getElementById']('cancel-delete-role')?.['addEventListener']('click',hideDeleteRoleModal),document['getElementById']('confirm-delete-role')?.['addEventListener']('click',confirmDeleteRole),document['querySelector']('#delete-role-modal\x20.modal-overlay')?.['addEventListener']('click',hideDeleteRoleModal);}
@@ -1 +1 @@
1
- const _0x31854f=_0x8736;(function(_0xc682f6,_0x3c7014){const _0x36443e=_0x8736,_0x33b77e=_0xc682f6();while(!![]){try{const _0x1d776a=parseInt(_0x36443e(0x1c7))/0x1*(-parseInt(_0x36443e(0x197))/0x2)+-parseInt(_0x36443e(0x19f))/0x3+-parseInt(_0x36443e(0x1f3))/0x4*(parseInt(_0x36443e(0x1c0))/0x5)+parseInt(_0x36443e(0x1e8))/0x6*(parseInt(_0x36443e(0x1df))/0x7)+-parseInt(_0x36443e(0x1e9))/0x8*(-parseInt(_0x36443e(0x1a4))/0x9)+-parseInt(_0x36443e(0x1a3))/0xa+parseInt(_0x36443e(0x19a))/0xb*(parseInt(_0x36443e(0x1ee))/0xc);if(_0x1d776a===_0x3c7014)break;else _0x33b77e['push'](_0x33b77e['shift']());}catch(_0x4653f0){_0x33b77e['push'](_0x33b77e['shift']());}}}(_0x91ce,0xa9e94));import{API}from'./app.js';let modalInjected=![];const SERVER_HEALTH_MODAL_HTML='\x0a<div\x20id=\x22server-health-modal\x22\x20class=\x22modal\x22\x20hidden>\x0a\x20\x20<div\x20class=\x22modal-overlay\x22></div>\x0a\x20\x20<div\x20class=\x22modal-content\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20<h2>Server\x20Health</h2>\x0a\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22server-health-close\x22\x20aria-label=\x22Close\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20width=\x2224\x22\x20height=\x2224\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<line\x20x1=\x2218\x22\x20y1=\x226\x22\x20x2=\x226\x22\x20y2=\x2218\x22></line>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<line\x20x1=\x226\x22\x20y1=\x226\x22\x20x2=\x2218\x22\x20y2=\x2218\x22></line>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20id=\x22server-health-loading\x22\x20class=\x22loading\x22>Loading\x20server\x20metrics</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20id=\x22server-health-error\x22\x20class=\x22error-message\x22\x20hidden></div>\x0a\x20\x20\x20\x20\x20\x20<div\x20id=\x22server-health-content\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22health-metrics\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-icon\x22>💻</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-details\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-label\x22>CPU\x20Usage</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20id=\x22cpu-usage\x22>-</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress\x22\x20role=\x22progressbar\x22\x20aria-label=\x22CPU\x20usage\x22\x20aria-valuemin=\x220\x22\x20aria-valuemax=\x22100\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress-fill\x22\x20id=\x22cpu-progress\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-icon\x22>🧠</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-details\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-label\x22>Memory\x20Usage</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20id=\x22memory-usage\x22>-</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress\x22\x20role=\x22progressbar\x22\x20aria-label=\x22Memory\x20usage\x22\x20aria-valuemin=\x220\x22\x20aria-valuemax=\x22100\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress-fill\x22\x20id=\x22memory-progress\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-icon\x22>💾</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-details\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-label\x22>Disk\x20Usage</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20id=\x22disk-usage\x22>-</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress\x22\x20role=\x22progressbar\x22\x20aria-label=\x22Disk\x20usage\x22\x20aria-valuemin=\x220\x22\x20aria-valuemax=\x22100\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress-fill\x22\x20id=\x22disk-progress\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-icon\x22>🐳</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-details\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-label\x22>Docker\x20Containers</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20id=\x22docker-containers\x22>-</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress\x22\x20role=\x22progressbar\x22\x20aria-label=\x22Running\x20containers\x20ratio\x22\x20aria-valuemin=\x220\x22\x20aria-valuemax=\x22100\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress-fill\x22\x20id=\x22docker-progress\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x20metric-card-wide\x22\x20id=\x22docker-storage-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-icon\x22>📦</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-details\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-label\x22>Docker\x20Storage</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20id=\x22docker-storage-total\x22>-</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress\x22\x20id=\x22docker-storage-progress-wrap\x22\x20role=\x22progressbar\x22\x20aria-label=\x22Docker\x20storage\x20usage\x22\x20aria-valuemin=\x220\x22\x20aria-valuemax=\x22100\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress-fill\x22\x20id=\x22docker-storage-progress\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-sub\x22\x20id=\x22docker-storage-available\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-sub\x22\x20id=\x22docker-storage-reclaimable\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22docker-storage-breakdown\x22\x20id=\x22docker-storage-breakdown\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22storage-item\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22storage-label\x22>Images:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22storage-value\x22\x20id=\x22docker-storage-images\x22>-</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22storage-item\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22storage-label\x22>Containers:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22storage-value\x22\x20id=\x22docker-storage-containers\x22>-</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22storage-item\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22storage-label\x22>Volumes:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22storage-value\x22\x20id=\x22docker-storage-volumes\x22>-</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22storage-item\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22storage-label\x22>Build\x20Cache:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22storage-value\x22\x20id=\x22docker-storage-buildcache\x22>-</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-icon\x22>⏱️</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-details\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-label\x22>Server\x20Uptime</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20id=\x22server-uptime\x22>-</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-icon\x22>📡</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-details\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-label\x22>User\x20Sessions</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20id=\x22active-sessions\x22>-</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22health-actions\x20collapsible-section\x22\x20id=\x22cleanup-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22health-actions-header\x20collapsible-toggle\x22\x20id=\x22cleanup-toggle\x22\x20aria-expanded=\x22false\x22\x20aria-controls=\x22cleanup-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22health-actions-title\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20class=\x22collapse-chevron\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<polyline\x20points=\x229\x2018\x2015\x2012\x209\x206\x22></polyline>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Clean\x20Up\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22server-health-action-status\x22\x20class=\x22health-action-status\x22\x20aria-live=\x22polite\x22\x20hidden></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22collapsible-content\x22\x20id=\x22cleanup-content\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-cards\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-icon\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20width=\x2224\x22\x20height=\x2224\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<rect\x20x=\x223\x22\x20y=\x223\x22\x20width=\x2218\x22\x20height=\x2218\x22\x20rx=\x222\x22\x20ry=\x222\x22></rect>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<line\x20x1=\x229\x22\x20y1=\x229\x22\x20x2=\x2215\x22\x20y2=\x2215\x22></line>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<line\x20x1=\x2215\x22\x20y1=\x229\x22\x20x2=\x229\x22\x20y2=\x2215\x22></line>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-title\x22>Stop\x20All\x20Containers</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-description\x22>Gracefully\x20stop\x20all\x20running\x20Docker\x20containers.\x20Active\x20coding\x20sessions\x20will\x20be\x20terminated.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-secondary\x20cleanup-card-btn\x22\x20id=\x22server-stop-containers\x22>Stop</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-icon\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20width=\x2224\x22\x20height=\x2224\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<polyline\x20points=\x223\x206\x205\x206\x2021\x206\x22></polyline>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<path\x20d=\x22M19\x206v14a2\x202\x200\x200\x201-2\x202H7a2\x202\x200\x200\x201-2-2V6m3\x200V4a2\x202\x200\x200\x201\x202-2h4a2\x202\x200\x200\x201\x202\x202v2\x22></path>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-title\x22>Remove\x20Stopped\x20Containers</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-description\x22>Delete\x20all\x20stopped\x20containers\x20to\x20free\x20up\x20disk\x20space.\x20This\x20cannot\x20be\x20undone.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-secondary\x20cleanup-card-btn\x22\x20id=\x22server-remove-stopped\x22>Remove</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card\x20cleanup-card-danger\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-icon\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20width=\x2224\x22\x20height=\x2224\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<path\x20d=\x22M12\x202L2\x207l10\x205\x2010-5-10-5z\x22></path>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<path\x20d=\x22M2\x2017l10\x205\x2010-5\x22></path>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<path\x20d=\x22M2\x2012l10\x205\x2010-5\x22></path>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-title\x22>Docker\x20System\x20Prune</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-description\x22>Remove\x20all\x20stopped\x20containers,\x20unused\x20networks,\x20dangling\x20images,\x20and\x20build\x20cache.\x20Frees\x20significant\x20disk\x20space.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-danger\x20cleanup-card-btn\x22\x20id=\x22server-prune-docker\x22>Prune</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20id=\x22server-health-refresh\x22\x20class=\x22btn-secondary\x22>Refresh</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20id=\x22server-health-ok\x22\x20class=\x22btn-primary\x22>OK</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a</div>\x0a';function _0x91ce(){const _0x596826=['CNvUBMLUzW','C2vYDMvYlwHLywX0Ac1SB2fKAw5N','C2vYDMvYlwHLywX0Ac1JB250zw50','Aw5Uzxjive1m','mtm4sNfgDMny','ndyYndiWoefbtMfqAq','y2XLyw51Cc1Zzwn0Aw9U','D2fYBMLUzW','zg9JA2vYlxn0B3jHz2uTChjVz3jLC3m','zg9JA2vYlxbYB2DYzxnZ','mJaWmdr0whvAB3G','y2XHC3nmAxn0','C3rHDhvZvgv4Da','yxbWzw5Kq2HPBgq','zMLYC3rfBgvTzw50q2HPBgq','otu2mZG4BKPfsKTw','C2vYDMvYlwHLywX0Ac1VAW','C3rHDhvZlw9R','C2vYDMvYlwHLywX0Ac1Hy3rPB24TC3rHDhvZ','AgLKzgvU','Aw5MBW','CgfYzw50rwXLBwvUDa','Dxb0Aw1L','Dhj1zq','yxzHAwXHyMXLrgLZCgXHEq','ywn0AxzLlxnLC3nPB25Z','ywrKrxzLBNrmAxn0zw5LCG','lI4U','ntq0mKHuzg1UyG','C2v0qxr0CMLIDxrL','rxnJyxbL','mtiYmJfZturtz1i','y2XLyw51Cc10B2DNBgu','C3rHDhvZlwnYAxrPy2fS','C2vYDMvYlwHLywX0Ac1YzwzYzxnO','Chj1BMveB2nRzxjszxnVDxjJzxm','mJu3odq5mwrKv3z2Aa','A2v5zg93BG','B3bLBLnLCNzLCKHLywX0Ae1VzgfS','Dg9mB3DLCKnHC2u','mteWnJG5otb5DvnluKG','mtHouNnbCuO','zg9JA2vYlxn0B3jHz2uTDM9SDw1LCW','yxjPys1LEhbHBMrLza','zg9JA2vYlxn0B3jHz2uTy29UDgfPBMvYCW','B25JBgLJAW','C3vJy2vZCW','zg9JA2vYlxn0B3jHz2uTyNvPBgrJywnOzq','Bwf4','zxHWyw5Kzwq','C2vYDMvYlwHLywX0Ac1LCNjVCG','CMvTB3zL','rMfPBgvKihDOAwXLia','C2vYDMvYlxvWDgLTzq','Dgv4DenVBNrLBNq','CxvLCNLtzwXLy3rVCG','Dw5KzwzPBMvK','rMfPBgvKihrVigXVywqGC2vYDMvYigHLywX0AcbTzxrYAwnZoG','y3jLyxrLrwXLBwvUDa','zg9JA2vYlwnVBNrHAw5LCNm','yM9KEq','z2v0rwXLBwvUDej5swq','CMvTB3zLu3rVChbLzenVBNrHAw5LCNm','zgLZAY1WCM9NCMvZCW','zM9YrwfJAa','l2HLywX0Ac9TzxrYAwnZ','r0vu','zgLZAW','zgLZAY11C2fNzq','nuX1q1nmCW','zMfSC2u','Dg90ywW','Aw1Hz2vZ','C3rHDhvZ','C2vZC2LVBNm','BwvZC2fNzq','mJGXC3zZs3zc','CgvYy2vUDa','y3jPDgLJywW','yxjPys12ywX1zw5VDW','yxbWBgLJyxrPB24VANnVBG','BwvTB3j5','tg9HzgLUzYbZzxj2zxiGBwv0CMLJCW','y3b1','C2vYDMvYlxn0B3aTy29UDgfPBMvYCW','rMfPBgvKihrVigXVywqGC2vYDMvYig1LDhjPy3m6ia','zxjYB3i','Aw5JBhvKzq','ywrK','C3rHDhvZlxDHCM5PBMC','zg9JA2vYlxn0B3jHz2uTyxzHAwXHyMXL','DM9SDw1LCW','zg9JA2vYlxn0B3jHz2uTDg90ywW','zg9JA2vY','zgLZywjSzwq','zg9JA2vYu3rVCMfNzq','C2vYDMvYlwHLywX0Ac1TB2rHBa','zgL2','CMvTB3zLrxzLBNrmAxn0zw5LCG','A2v5','mJaWmJq5wNj3yujm','ignVBxbSzxrLza','D2LKDgG','zgLZCgXHEq','zg9JA2vYlxn0B3jHz2uTAw1Hz2vZ'];_0x91ce=function(){return _0x596826;};return _0x91ce();}function _0x8736(_0x56287f,_0x4e8111){_0x56287f=_0x56287f-0x193;const _0x91ce74=_0x91ce();let _0x8736e7=_0x91ce74[_0x56287f];if(_0x8736['xCGNdi']===undefined){var _0x15b998=function(_0x3fd790){const _0x232bd4='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2b48d2='',_0x2c076a='';for(let _0x91a71=0x0,_0x108829,_0x5777f0,_0xc556c=0x0;_0x5777f0=_0x3fd790['charAt'](_0xc556c++);~_0x5777f0&&(_0x108829=_0x91a71%0x4?_0x108829*0x40+_0x5777f0:_0x5777f0,_0x91a71++%0x4)?_0x2b48d2+=String['fromCharCode'](0xff&_0x108829>>(-0x2*_0x91a71&0x6)):0x0){_0x5777f0=_0x232bd4['indexOf'](_0x5777f0);}for(let _0x4011c4=0x0,_0x58fad9=_0x2b48d2['length'];_0x4011c4<_0x58fad9;_0x4011c4++){_0x2c076a+='%'+('00'+_0x2b48d2['charCodeAt'](_0x4011c4)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2c076a);};_0x8736['CFUWWC']=_0x15b998,_0x8736['mRvdvH']={},_0x8736['xCGNdi']=!![];}const _0x1263ca=_0x91ce74[0x0],_0x54d451=_0x56287f+_0x1263ca,_0x419b9c=_0x8736['mRvdvH'][_0x54d451];return!_0x419b9c?(_0x8736e7=_0x8736['CFUWWC'](_0x8736e7),_0x8736['mRvdvH'][_0x54d451]=_0x8736e7):_0x8736e7=_0x419b9c,_0x8736e7;}function ensureModalExists(){const _0x3f99a6=_0x8736;if(modalInjected||document[_0x3f99a6(0x1b8)](_0x3f99a6(0x1db)))return;const _0x2b48d2=document[_0x3f99a6(0x1b5)](_0x3f99a6(0x1dc));_0x2b48d2[_0x3f99a6(0x1e7)]=SERVER_HEALTH_MODAL_HTML,document[_0x3f99a6(0x1b7)][_0x3f99a6(0x1f1)](_0x2b48d2[_0x3f99a6(0x1f2)]),modalInjected=!![];}function clampPercent(_0x2c076a){const _0x430f3f=_0x8736;if(!Number['isFinite'](_0x2c076a))return 0x0;return Math[_0x430f3f(0x1ab)](0x0,Math['min'](0x64,Math['round'](_0x2c076a)));}function setMetricProgress(_0x91a71,_0x108829,_0x5777f0='ok'){const _0x2a8be1=_0x8736,_0xc556c=document[_0x2a8be1(0x1b8)](_0x91a71);if(!_0xc556c)return;const _0x4011c4=_0xc556c[_0x2a8be1(0x1f9)],_0x58fad9=clampPercent(_0x108829);_0xc556c['style'][_0x2a8be1(0x1e1)]=_0x58fad9+'%',_0xc556c['classList']['remove']('status-ok',_0x2a8be1(0x1d4),'status-critical'),_0xc556c[_0x2a8be1(0x1ef)][_0x2a8be1(0x1d3)](_0x5777f0===_0x2a8be1(0x1c9)?'status-critical':_0x5777f0===_0x2a8be1(0x1eb)?_0x2a8be1(0x1d4):_0x2a8be1(0x1f5)),_0x4011c4&&_0x4011c4[_0x2a8be1(0x198)](_0x2a8be1(0x1ca),String(_0x58fad9));}function statusFromPercent(_0x54e574){const _0x316910=_0x8736;if(_0x54e574>=0x5a)return _0x316910(0x1c9);if(_0x54e574>=0x4b)return _0x316910(0x1eb);return'ok';}async function loadServerHealthMetrics(){const _0x319476=_0x8736,_0x37df6f=document[_0x319476(0x1b8)](_0x319476(0x1e5)),_0x1ad871=document['getElementById']('server-health-error'),_0x383e4d=document[_0x319476(0x1b8)](_0x319476(0x1e6));if(!_0x37df6f||!_0x1ad871||!_0x383e4d)return;_0x37df6f['textContent']=_0x319476(0x1cd);try{const _0x3970aa=await fetch(_0x319476(0x1bc),{'method':_0x319476(0x1bd),'headers':{'Content-Type':_0x319476(0x1cb)},'credentials':_0x319476(0x1d2)});if(!_0x3970aa['ok'])throw new Error('Failed\x20to\x20load\x20metrics:\x20'+_0x3970aa[_0x319476(0x1f0)]);const _0x230ef5=await _0x3970aa['json']();document[_0x319476(0x1b8)]('cpu-usage')[_0x319476(0x1b1)]=_0x230ef5[_0x319476(0x1ce)][_0x319476(0x1e2)],document[_0x319476(0x1b8)]('memory-usage')['textContent']=_0x230ef5[_0x319476(0x1cc)]['display'],document[_0x319476(0x1b8)](_0x319476(0x1bf))[_0x319476(0x1b1)]=_0x230ef5[_0x319476(0x1be)]['display'],document['getElementById'](_0x319476(0x1b6))[_0x319476(0x1b1)]=_0x230ef5['docker'][_0x319476(0x1e2)],document['getElementById'](_0x319476(0x1b0))[_0x319476(0x1b1)]=_0x230ef5[_0x319476(0x1fa)][_0x319476(0x1e2)],document[_0x319476(0x1b8)](_0x319476(0x194))[_0x319476(0x1b1)]=_0x230ef5[_0x319476(0x1c5)]['display'],setMetricProgress('cpu-progress',_0x230ef5['cpu'][_0x319476(0x1c8)],statusFromPercent(_0x230ef5[_0x319476(0x1ce)][_0x319476(0x1c8)])),setMetricProgress('memory-progress',_0x230ef5['memory'][_0x319476(0x1c8)],statusFromPercent(_0x230ef5[_0x319476(0x1cc)][_0x319476(0x1c8)])),setMetricProgress(_0x319476(0x1ba),_0x230ef5[_0x319476(0x1be)]['percent'],statusFromPercent(_0x230ef5[_0x319476(0x1be)][_0x319476(0x1c8)]));const _0x2ce8a0=_0x230ef5['docker'][_0x319476(0x1c2)]>0x0?_0x230ef5[_0x319476(0x1d8)][_0x319476(0x1e4)]/_0x230ef5['docker'][_0x319476(0x1c2)]*0x64:0x0;setMetricProgress(_0x319476(0x1ed),_0x2ce8a0);if(_0x230ef5[_0x319476(0x1da)]){const _0x4b6300=document[_0x319476(0x1b8)]('docker-storage-card');document[_0x319476(0x1b8)](_0x319476(0x1d7))[_0x319476(0x1b1)]=_0x230ef5[_0x319476(0x1da)][_0x319476(0x1e2)];const _0x9a77b2=document[_0x319476(0x1b8)](_0x319476(0x1d5));_0x230ef5['dockerStorage']['availableDisplay']?(_0x9a77b2[_0x319476(0x1b1)]=_0x230ef5[_0x319476(0x1da)][_0x319476(0x193)],_0x9a77b2['hidden']=![]):_0x9a77b2[_0x319476(0x1f7)]=!![];document[_0x319476(0x1b8)]('docker-storage-reclaimable')['textContent']=_0x230ef5[_0x319476(0x1da)]['reclaimableDisplay'],document['getElementById'](_0x319476(0x1e3))[_0x319476(0x1b1)]=_0x230ef5[_0x319476(0x1da)][_0x319476(0x1c3)][_0x319476(0x1e2)],document['getElementById'](_0x319476(0x1a7))[_0x319476(0x1b1)]=_0x230ef5[_0x319476(0x1da)]['containers'][_0x319476(0x1e2)],document['getElementById'](_0x319476(0x1a5))[_0x319476(0x1b1)]=_0x230ef5[_0x319476(0x1da)][_0x319476(0x1d6)][_0x319476(0x1e2)],document['getElementById'](_0x319476(0x1aa))[_0x319476(0x1b1)]=_0x230ef5[_0x319476(0x1da)]['buildCache'][_0x319476(0x1e2)],setMetricProgress(_0x319476(0x1ec),_0x230ef5[_0x319476(0x1da)]['percent'],_0x230ef5[_0x319476(0x1da)]['status']),_0x4b6300[_0x319476(0x1ef)]['remove'](_0x319476(0x1d4),_0x319476(0x19c));if(_0x230ef5['dockerStorage'][_0x319476(0x1c4)]===_0x319476(0x1c9))_0x4b6300[_0x319476(0x1ef)]['add'](_0x319476(0x19c));else _0x230ef5[_0x319476(0x1da)][_0x319476(0x1c4)]===_0x319476(0x1eb)&&_0x4b6300[_0x319476(0x1ef)]['add'](_0x319476(0x1d4));}_0x37df6f[_0x319476(0x1f7)]=!![],_0x383e4d[_0x319476(0x1f7)]=![];}catch(_0x206491){console[_0x319476(0x1d1)](_0x319476(0x1b4),_0x206491),_0x37df6f['hidden']=!![],_0x1ad871[_0x319476(0x1f7)]=![],_0x1ad871['textContent']=_0x319476(0x1d0)+_0x206491[_0x319476(0x1c6)];}}export async function openServerHealthModal(){const _0x32e413=_0x8736;ensureModalExists();const _0x57fb2b=document['getElementById'](_0x32e413(0x1db)),_0xdada4e=document[_0x32e413(0x1b8)]('server-health-loading'),_0x511ff0=document['getElementById'](_0x32e413(0x1ad)),_0x6c8fa8=document[_0x32e413(0x1b8)]('server-health-content'),_0x2a905b=document[_0x32e413(0x1b8)]('server-health-close'),_0x894887=document[_0x32e413(0x1b8)](_0x32e413(0x1f4)),_0x1fa312=document['getElementById'](_0x32e413(0x19d)),_0x3e1943=document[_0x32e413(0x1b8)](_0x32e413(0x1cf)),_0x5e15ce=document[_0x32e413(0x1b8)]('server-remove-stopped'),_0x4be50e=document[_0x32e413(0x1b8)]('server-prune-docker'),_0x457d81=document[_0x32e413(0x1b8)](_0x32e413(0x1f6)),_0x4c5137=document['getElementById'](_0x32e413(0x19b)),_0x17ebbc=document['getElementById']('cleanup-content'),_0x324d2c=document['getElementById'](_0x32e413(0x1ea));if(!_0x57fb2b)return;_0x57fb2b[_0x32e413(0x1f7)]=![],_0xdada4e['hidden']=![],_0x511ff0[_0x32e413(0x1f7)]=!![],_0x6c8fa8[_0x32e413(0x1f7)]=!![];_0x457d81&&(_0x457d81[_0x32e413(0x1f7)]=!![],_0x457d81[_0x32e413(0x1b1)]='',_0x457d81[_0x32e413(0x1ef)][_0x32e413(0x1ae)](_0x32e413(0x1a9),_0x32e413(0x1d1)));_0x324d2c&&_0x324d2c['classList']['remove'](_0x32e413(0x1ac));_0x17ebbc&&(_0x17ebbc['hidden']=!![]);_0x4c5137&&_0x4c5137[_0x32e413(0x198)](_0x32e413(0x1a6),_0x32e413(0x1c1));const _0x4f754a=[_0x3e1943,_0x5e15ce,_0x4be50e,_0x1fa312],_0x5b8520=_0x2fb843=>{const _0x5eeca6=_0x32e413;_0x4f754a[_0x5eeca6(0x1bb)](_0x297a29=>{const _0x5475aa=_0x5eeca6;if(_0x297a29)_0x297a29[_0x5475aa(0x1d9)]=_0x2fb843;});},_0x36347f=(_0x5a565c,_0x159468=_0x32e413(0x1f8))=>{const _0x5c81df=_0x32e413;if(!_0x457d81)return;_0x457d81['hidden']=![],_0x457d81['textContent']=_0x5a565c,_0x457d81['classList']['remove'](_0x5c81df(0x1a9),'error');if(_0x159468===_0x5c81df(0x1a9))_0x457d81[_0x5c81df(0x1ef)][_0x5c81df(0x1d3)](_0x5c81df(0x1a9));else _0x159468==='error'&&_0x457d81[_0x5c81df(0x1ef)][_0x5c81df(0x1d3)](_0x5c81df(0x1d1));};await loadServerHealthMetrics();const _0x5dc6e9=()=>{const _0x579a3d=_0x32e413;_0x57fb2b[_0x579a3d(0x1f7)]=!![],document[_0x579a3d(0x1dd)](_0x579a3d(0x1a0),_0x2d3bdf);},_0x2d3bdf=_0x468144=>{const _0x1f669c=_0x32e413;_0x468144[_0x1f669c(0x1de)]===_0x1f669c(0x199)&&!_0x57fb2b['hidden']&&_0x5dc6e9();};_0x2a905b[_0x32e413(0x1a8)]=_0x5dc6e9,_0x894887[_0x32e413(0x1a8)]=_0x5dc6e9,_0x1fa312[_0x32e413(0x1a8)]=async()=>{const _0x3cad79=_0x32e413;_0xdada4e[_0x3cad79(0x1f7)]=![],_0x511ff0[_0x3cad79(0x1f7)]=!![],_0x6c8fa8['hidden']=!![],await loadServerHealthMetrics();};const _0xc76670=async(_0x345ae5,_0x42c395)=>{const _0x516aa2=_0x32e413;_0xdada4e[_0x516aa2(0x1b1)]=_0x345ae5,_0xdada4e[_0x516aa2(0x1f7)]=![],_0x511ff0[_0x516aa2(0x1f7)]=!![],_0x6c8fa8[_0x516aa2(0x1f7)]=!![],_0x5b8520(!![]),_0x36347f(_0x345ae5+_0x516aa2(0x196));try{const _0x48884d=await _0x42c395(),_0x1c281a=_0x48884d?.[_0x516aa2(0x1c6)]||_0x345ae5+_0x516aa2(0x1e0);_0x36347f(_0x1c281a,_0x516aa2(0x1a9));}catch(_0x3381bf){console[_0x516aa2(0x1d1)]('Server\x20cleanup\x20action\x20failed\x20('+_0x345ae5+')',_0x3381bf),_0x36347f(_0x3381bf[_0x516aa2(0x1c6)]||_0x516aa2(0x1af)+_0x345ae5[_0x516aa2(0x1a2)](),_0x516aa2(0x1d1));}finally{await loadServerHealthMetrics(),_0x5b8520(![]);}};_0x3e1943&&(_0x3e1943[_0x32e413(0x1a8)]=()=>_0xc76670('Stopping\x20containers',()=>API['stopAllContainers']()));_0x5e15ce&&(_0x5e15ce[_0x32e413(0x1a8)]=()=>_0xc76670('Removing\x20stopped\x20containers',()=>API[_0x32e413(0x1b9)]()));_0x4be50e&&(_0x4be50e['onclick']=()=>_0xc76670('Pruning\x20Docker\x20resources',()=>API[_0x32e413(0x19e)]()));_0x4c5137&&_0x17ebbc&&_0x324d2c&&(_0x4c5137[_0x32e413(0x1a8)]=()=>{const _0x425c2c=_0x32e413,_0x5719c6=_0x324d2c['classList']['toggle'](_0x425c2c(0x1ac));_0x17ebbc[_0x425c2c(0x1f7)]=!_0x5719c6,_0x4c5137['setAttribute']('aria-expanded',_0x5719c6?_0x425c2c(0x1fb):_0x425c2c(0x1c1));});document[_0x32e413(0x195)](_0x32e413(0x1a0),_0x2d3bdf);const _0x2eb64f=_0x57fb2b[_0x32e413(0x1b2)]('.modal-overlay');_0x2eb64f&&(_0x2eb64f[_0x32e413(0x1a8)]=_0x5dc6e9);}export{loadServerHealthMetrics};typeof window!==_0x31854f(0x1b3)&&(window[_0x31854f(0x1a1)]=openServerHealthModal);
1
+ import{API}from'./app.js';let modalInjected=![];const SERVER_HEALTH_MODAL_HTML='\x0a<div\x20id=\x22server-health-modal\x22\x20class=\x22modal\x22\x20hidden>\x0a\x20\x20<div\x20class=\x22modal-overlay\x22></div>\x0a\x20\x20<div\x20class=\x22modal-content\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20<h2>Server\x20Health</h2>\x0a\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22server-health-close\x22\x20aria-label=\x22Close\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20width=\x2224\x22\x20height=\x2224\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<line\x20x1=\x2218\x22\x20y1=\x226\x22\x20x2=\x226\x22\x20y2=\x2218\x22></line>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<line\x20x1=\x226\x22\x20y1=\x226\x22\x20x2=\x2218\x22\x20y2=\x2218\x22></line>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20id=\x22server-health-loading\x22\x20class=\x22loading\x22>Loading\x20server\x20metrics</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20id=\x22server-health-error\x22\x20class=\x22error-message\x22\x20hidden></div>\x0a\x20\x20\x20\x20\x20\x20<div\x20id=\x22server-health-content\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22health-metrics\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-icon\x22>💻</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-details\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-label\x22>CPU\x20Usage</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20id=\x22cpu-usage\x22>-</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress\x22\x20role=\x22progressbar\x22\x20aria-label=\x22CPU\x20usage\x22\x20aria-valuemin=\x220\x22\x20aria-valuemax=\x22100\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress-fill\x22\x20id=\x22cpu-progress\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-icon\x22>🧠</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-details\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-label\x22>Memory\x20Usage</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20id=\x22memory-usage\x22>-</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress\x22\x20role=\x22progressbar\x22\x20aria-label=\x22Memory\x20usage\x22\x20aria-valuemin=\x220\x22\x20aria-valuemax=\x22100\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress-fill\x22\x20id=\x22memory-progress\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-icon\x22>💾</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-details\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-label\x22>Disk\x20Usage</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20id=\x22disk-usage\x22>-</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress\x22\x20role=\x22progressbar\x22\x20aria-label=\x22Disk\x20usage\x22\x20aria-valuemin=\x220\x22\x20aria-valuemax=\x22100\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress-fill\x22\x20id=\x22disk-progress\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-icon\x22>🐳</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-details\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-label\x22>Docker\x20Containers</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20id=\x22docker-containers\x22>-</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress\x22\x20role=\x22progressbar\x22\x20aria-label=\x22Running\x20containers\x20ratio\x22\x20aria-valuemin=\x220\x22\x20aria-valuemax=\x22100\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress-fill\x22\x20id=\x22docker-progress\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x20metric-card-wide\x22\x20id=\x22docker-storage-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-icon\x22>📦</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-details\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-label\x22>Docker\x20Storage</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20id=\x22docker-storage-total\x22>-</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress\x22\x20id=\x22docker-storage-progress-wrap\x22\x20role=\x22progressbar\x22\x20aria-label=\x22Docker\x20storage\x20usage\x22\x20aria-valuemin=\x220\x22\x20aria-valuemax=\x22100\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress-fill\x22\x20id=\x22docker-storage-progress\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-sub\x22\x20id=\x22docker-storage-available\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-sub\x22\x20id=\x22docker-storage-reclaimable\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22docker-storage-breakdown\x22\x20id=\x22docker-storage-breakdown\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22storage-item\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22storage-label\x22>Images:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22storage-value\x22\x20id=\x22docker-storage-images\x22>-</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22storage-item\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22storage-label\x22>Containers:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22storage-value\x22\x20id=\x22docker-storage-containers\x22>-</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22storage-item\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22storage-label\x22>Volumes:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22storage-value\x22\x20id=\x22docker-storage-volumes\x22>-</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22storage-item\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22storage-label\x22>Build\x20Cache:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22storage-value\x22\x20id=\x22docker-storage-buildcache\x22>-</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-icon\x22>⏱️</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-details\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-label\x22>Server\x20Uptime</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20id=\x22server-uptime\x22>-</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-icon\x22>📡</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-details\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-label\x22>User\x20Sessions</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20id=\x22active-sessions\x22>-</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22health-actions\x20collapsible-section\x22\x20id=\x22cleanup-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22health-actions-header\x20collapsible-toggle\x22\x20id=\x22cleanup-toggle\x22\x20aria-expanded=\x22false\x22\x20aria-controls=\x22cleanup-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22health-actions-title\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20class=\x22collapse-chevron\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<polyline\x20points=\x229\x2018\x2015\x2012\x209\x206\x22></polyline>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Clean\x20Up\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22server-health-action-status\x22\x20class=\x22health-action-status\x22\x20aria-live=\x22polite\x22\x20hidden></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22collapsible-content\x22\x20id=\x22cleanup-content\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-cards\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-icon\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20width=\x2224\x22\x20height=\x2224\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<rect\x20x=\x223\x22\x20y=\x223\x22\x20width=\x2218\x22\x20height=\x2218\x22\x20rx=\x222\x22\x20ry=\x222\x22></rect>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<line\x20x1=\x229\x22\x20y1=\x229\x22\x20x2=\x2215\x22\x20y2=\x2215\x22></line>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<line\x20x1=\x2215\x22\x20y1=\x229\x22\x20x2=\x229\x22\x20y2=\x2215\x22></line>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-title\x22>Stop\x20All\x20Containers</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-description\x22>Gracefully\x20stop\x20all\x20running\x20Docker\x20containers.\x20Active\x20coding\x20sessions\x20will\x20be\x20terminated.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-secondary\x20cleanup-card-btn\x22\x20id=\x22server-stop-containers\x22>Stop</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-icon\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20width=\x2224\x22\x20height=\x2224\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<polyline\x20points=\x223\x206\x205\x206\x2021\x206\x22></polyline>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<path\x20d=\x22M19\x206v14a2\x202\x200\x200\x201-2\x202H7a2\x202\x200\x200\x201-2-2V6m3\x200V4a2\x202\x200\x200\x201\x202-2h4a2\x202\x200\x200\x201\x202\x202v2\x22></path>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-title\x22>Remove\x20Stopped\x20Containers</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-description\x22>Delete\x20all\x20stopped\x20containers\x20to\x20free\x20up\x20disk\x20space.\x20This\x20cannot\x20be\x20undone.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-secondary\x20cleanup-card-btn\x22\x20id=\x22server-remove-stopped\x22>Remove</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card\x20cleanup-card-danger\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-icon\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20width=\x2224\x22\x20height=\x2224\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<path\x20d=\x22M12\x202L2\x207l10\x205\x2010-5-10-5z\x22></path>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<path\x20d=\x22M2\x2017l10\x205\x2010-5\x22></path>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<path\x20d=\x22M2\x2012l10\x205\x2010-5\x22></path>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-title\x22>Docker\x20System\x20Prune</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-description\x22>Remove\x20all\x20stopped\x20containers,\x20unused\x20networks,\x20dangling\x20images,\x20and\x20build\x20cache.\x20Frees\x20significant\x20disk\x20space.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-danger\x20cleanup-card-btn\x22\x20id=\x22server-prune-docker\x22>Prune</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20id=\x22server-health-refresh\x22\x20class=\x22btn-secondary\x22>Refresh</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20id=\x22server-health-ok\x22\x20class=\x22btn-primary\x22>OK</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a</div>\x0a';function ensureModalExists(){if(modalInjected||document['getElementById']('server-health-modal'))return;const _0x3387c2=document['createElement']('div');_0x3387c2['innerHTML']=SERVER_HEALTH_MODAL_HTML,document['body']['appendChild'](_0x3387c2['firstElementChild']),modalInjected=!![];}function clampPercent(_0x1befcf){if(!Number['isFinite'](_0x1befcf))return 0x0;return Math['max'](0x0,Math['min'](0x64,Math['round'](_0x1befcf)));}function setMetricProgress(_0x2019a6,_0x1068a8,_0x3e24f6='ok'){const _0x530540=document['getElementById'](_0x2019a6);if(!_0x530540)return;const _0x410bb2=_0x530540['parentElement'],_0x55b3e1=clampPercent(_0x1068a8);_0x530540['style']['width']=_0x55b3e1+'%',_0x530540['classList']['remove']('status-ok','status-warning','status-critical'),_0x530540['classList']['add'](_0x3e24f6==='critical'?'status-critical':_0x3e24f6==='warning'?'status-warning':'status-ok'),_0x410bb2&&_0x410bb2['setAttribute']('aria-valuenow',String(_0x55b3e1));}function statusFromPercent(_0x29a212){if(_0x29a212>=0x5a)return'critical';if(_0x29a212>=0x4b)return'warning';return'ok';}async function loadServerHealthMetrics(){const _0x3a9b58=document['getElementById']('server-health-loading'),_0x170d8e=document['getElementById']('server-health-error'),_0x4f95d0=document['getElementById']('server-health-content');if(!_0x3a9b58||!_0x170d8e||!_0x4f95d0)return;_0x3a9b58['textContent']='Loading\x20server\x20metrics';try{const _0x1d9728=await fetch('/health/metrics',{'method':'GET','headers':{'Content-Type':'application/json'},'credentials':'include'});if(!_0x1d9728['ok'])throw new Error('Failed\x20to\x20load\x20metrics:\x20'+_0x1d9728['statusText']);const _0x2858f5=await _0x1d9728['json']();document['getElementById']('cpu-usage')['textContent']=_0x2858f5['cpu']['display'],document['getElementById']('memory-usage')['textContent']=_0x2858f5['memory']['display'],document['getElementById']('disk-usage')['textContent']=_0x2858f5['disk']['display'],document['getElementById']('docker-containers')['textContent']=_0x2858f5['docker']['display'],document['getElementById']('server-uptime')['textContent']=_0x2858f5['uptime']['display'],document['getElementById']('active-sessions')['textContent']=_0x2858f5['sessions']['display'],setMetricProgress('cpu-progress',_0x2858f5['cpu']['percent'],statusFromPercent(_0x2858f5['cpu']['percent'])),setMetricProgress('memory-progress',_0x2858f5['memory']['percent'],statusFromPercent(_0x2858f5['memory']['percent'])),setMetricProgress('disk-progress',_0x2858f5['disk']['percent'],statusFromPercent(_0x2858f5['disk']['percent']));const _0xbefa44=_0x2858f5['docker']['total']>0x0?_0x2858f5['docker']['running']/_0x2858f5['docker']['total']*0x64:0x0;setMetricProgress('docker-progress',_0xbefa44);if(_0x2858f5['dockerStorage']){const _0x1b1760=document['getElementById']('docker-storage-card');document['getElementById']('docker-storage-total')['textContent']=_0x2858f5['dockerStorage']['display'];const _0x3e310e=document['getElementById']('docker-storage-available');_0x2858f5['dockerStorage']['availableDisplay']?(_0x3e310e['textContent']=_0x2858f5['dockerStorage']['availableDisplay'],_0x3e310e['hidden']=![]):_0x3e310e['hidden']=!![];document['getElementById']('docker-storage-reclaimable')['textContent']=_0x2858f5['dockerStorage']['reclaimableDisplay'],document['getElementById']('docker-storage-images')['textContent']=_0x2858f5['dockerStorage']['images']['display'],document['getElementById']('docker-storage-containers')['textContent']=_0x2858f5['dockerStorage']['containers']['display'],document['getElementById']('docker-storage-volumes')['textContent']=_0x2858f5['dockerStorage']['volumes']['display'],document['getElementById']('docker-storage-buildcache')['textContent']=_0x2858f5['dockerStorage']['buildCache']['display'],setMetricProgress('docker-storage-progress',_0x2858f5['dockerStorage']['percent'],_0x2858f5['dockerStorage']['status']),_0x1b1760['classList']['remove']('status-warning','status-critical');if(_0x2858f5['dockerStorage']['status']==='critical')_0x1b1760['classList']['add']('status-critical');else _0x2858f5['dockerStorage']['status']==='warning'&&_0x1b1760['classList']['add']('status-warning');}_0x3a9b58['hidden']=!![],_0x4f95d0['hidden']=![];}catch(_0x6b53ea){console['error']('Failed\x20to\x20load\x20server\x20health\x20metrics:',_0x6b53ea),_0x3a9b58['hidden']=!![],_0x170d8e['hidden']=![],_0x170d8e['textContent']='Failed\x20to\x20load\x20server\x20metrics:\x20'+_0x6b53ea['message'];}}export async function openServerHealthModal(){ensureModalExists();const _0xb1e243=document['getElementById']('server-health-modal'),_0x4305d8=document['getElementById']('server-health-loading'),_0x1cf278=document['getElementById']('server-health-error'),_0x358c42=document['getElementById']('server-health-content'),_0x5d3b10=document['getElementById']('server-health-close'),_0x3db409=document['getElementById']('server-health-ok'),_0x5e95b0=document['getElementById']('server-health-refresh'),_0x3c3287=document['getElementById']('server-stop-containers'),_0xe96b1f=document['getElementById']('server-remove-stopped'),_0x215116=document['getElementById']('server-prune-docker'),_0x514744=document['getElementById']('server-health-action-status'),_0x2bd47b=document['getElementById']('cleanup-toggle'),_0xbc83a4=document['getElementById']('cleanup-content'),_0x2b891b=document['getElementById']('cleanup-section');if(!_0xb1e243)return;_0xb1e243['hidden']=![],_0x4305d8['hidden']=![],_0x1cf278['hidden']=!![],_0x358c42['hidden']=!![];_0x514744&&(_0x514744['hidden']=!![],_0x514744['textContent']='',_0x514744['classList']['remove']('success','error'));_0x2b891b&&_0x2b891b['classList']['remove']('expanded');_0xbc83a4&&(_0xbc83a4['hidden']=!![]);_0x2bd47b&&_0x2bd47b['setAttribute']('aria-expanded','false');const _0x29f546=[_0x3c3287,_0xe96b1f,_0x215116,_0x5e95b0],_0x2e67b0=_0x3cd15f=>{_0x29f546['forEach'](_0x2bad3a=>{if(_0x2bad3a)_0x2bad3a['disabled']=_0x3cd15f;});},_0x57eb17=(_0x555ca1,_0x5bd6b6='info')=>{if(!_0x514744)return;_0x514744['hidden']=![],_0x514744['textContent']=_0x555ca1,_0x514744['classList']['remove']('success','error');if(_0x5bd6b6==='success')_0x514744['classList']['add']('success');else _0x5bd6b6==='error'&&_0x514744['classList']['add']('error');};await loadServerHealthMetrics();const _0x8562c7=()=>{_0xb1e243['hidden']=!![],document['removeEventListener']('keydown',_0x5270fe);},_0x5270fe=_0x182c88=>{_0x182c88['key']==='Escape'&&!_0xb1e243['hidden']&&_0x8562c7();};_0x5d3b10['onclick']=_0x8562c7,_0x3db409['onclick']=_0x8562c7,_0x5e95b0['onclick']=async()=>{_0x4305d8['hidden']=![],_0x1cf278['hidden']=!![],_0x358c42['hidden']=!![],await loadServerHealthMetrics();};const _0x413792=async(_0x35fb49,_0x5310f8)=>{_0x4305d8['textContent']=_0x35fb49,_0x4305d8['hidden']=![],_0x1cf278['hidden']=!![],_0x358c42['hidden']=!![],_0x2e67b0(!![]),_0x57eb17(_0x35fb49+'...');try{const _0x4526a3=await _0x5310f8(),_0x4f97ab=_0x4526a3?.['message']||_0x35fb49+'\x20completed';_0x57eb17(_0x4f97ab,'success');}catch(_0x319891){console['error']('Server\x20cleanup\x20action\x20failed\x20('+_0x35fb49+')',_0x319891),_0x57eb17(_0x319891['message']||'Failed\x20while\x20'+_0x35fb49['toLowerCase'](),'error');}finally{await loadServerHealthMetrics(),_0x2e67b0(![]);}};_0x3c3287&&(_0x3c3287['onclick']=()=>_0x413792('Stopping\x20containers',()=>API['stopAllContainers']()));_0xe96b1f&&(_0xe96b1f['onclick']=()=>_0x413792('Removing\x20stopped\x20containers',()=>API['removeStoppedContainers']()));_0x215116&&(_0x215116['onclick']=()=>_0x413792('Pruning\x20Docker\x20resources',()=>API['pruneDockerResources']()));_0x2bd47b&&_0xbc83a4&&_0x2b891b&&(_0x2bd47b['onclick']=()=>{const _0x5742d5=_0x2b891b['classList']['toggle']('expanded');_0xbc83a4['hidden']=!_0x5742d5,_0x2bd47b['setAttribute']('aria-expanded',_0x5742d5?'true':'false');});document['addEventListener']('keydown',_0x5270fe);const _0x1267d4=_0xb1e243['querySelector']('.modal-overlay');_0x1267d4&&(_0x1267d4['onclick']=_0x8562c7);}export{loadServerHealthMetrics};typeof window!=='undefined'&&(window['openServerHealthModal']=openServerHealthModal);