diff --git a/docker-compose.yml b/docker-compose.yml index 7db5a20..0561dab 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -54,6 +54,13 @@ services: environment: - PORT=5000 - SERVICE_NAME=Streamer + - DB_HOSTNAME=mongodb + - REDIS_HOSTNAME=redis + depends_on: + mongodb: + condition: service_healthy + redis: + condition: service_healthy healthcheck: test: - CMD diff --git a/docs/performance-plan.md b/docs/performance-plan.md new file mode 100644 index 0000000..f22e131 --- /dev/null +++ b/docs/performance-plan.md @@ -0,0 +1,253 @@ +# Anonymous GitHub performance remediation plan + +Status: all fourteen fixes implemented. Local test and measurement results follow. Deployment validation remains outstanding. + +The implementation removes repeated request work, coordinates shared cache fills, bounds retained resources, and moves large anonymization jobs into a worker pipeline. The phase descriptions below retain the original implementation plan. Preserve anonymization output, authorization checks, repository lifecycle rules, and existing content APIs throughout. + +The fourteen IDs below cover the eight initial findings and six follow-up findings. The incidental synchronous disk-usage check is outside this fourteen-item scope. + +## Implementation and local results, 7 October 2026 + +Baseline revision: `a7e3826`. Tests and CPU measurements used Node `v24.14.1`. Measurements are saved in [performance-results.json](performance-results.json). Unrelated working-tree files and configuration were preserved. + +| Finding | Implemented behavior | Local evidence | +| --- | --- | --- | +| F01 | Search mapped names and directories once, with a 500-result cap. Store JavaScript-lowercased search fields to preserve Unicode behavior. | The 10,000-file CPU fixture fell from 22,445 ms to 0.32 ms. The 100,000-file capped fixture took 0.38 ms. Database Unicode parity is covered. | +| F02 | Spool text above 256 KiB; use a bounded worker queue, estimated byte admission, deadlines and cancellation. Cache complete transformed outputs by content and all settings. Drain ZIP output before admitting another entry. | Four 48 MiB responses finished in 10.56 s at 555 MiB peak RSS, with 11.6 ms event-loop p95. A 100 MiB input peaked at 641 MiB. The slow-client ZIP fixture retained one transformer and zero queued output MiB. Worker parity, settings edits, failure recovery and spool cleanup are tested. | +| F03 | Compile path rules once; build separate indexed mapping generations in 250-row batches. Activate mappings conditionally and invalidate after settings, tree or recovered-file changes. Exact original paths retain priority. | Compile-once matching improved 56 times on 10,000 paths. An exact MongoDB lookup examined one document. Collision, invalidation, overlapping builder and failed-refresh tests pass. | +| F04 | Destroy response upstreams and transformations on disconnect, completion and error. Shared cache producers finish independently of a subscriber. | Terminal-event regression checks and existing stream/ZIP error tests pass. | +| F05 | Release editor-specific listeners on unmount; register explorer dark-mode handling once. | Ten code navigations retained one hash listener; replacing the editor retained zero. Existing anchor and navigation tests pass. | +| F06 | Add GitHub-ID membership and generation-aware file indexes. Quota queries select owned, ready, unexpired repository metadata and cache valid zero counts. | Membership plans over 2,000 unrelated repositories avoided collection scans and examined fewer than ten documents. Replacement-tree quota tests pass. | +| F07 | Reuse bounded S3 client profiles and connection pools. Warm reads reuse one metadata check. Reject undersized uploads before publication. | The AWS SDK protocol fixture observes one HEAD and one GET on a warm hit, reused clients, and no committed short object. | +| F08 | Share current statistics and history cache misses locally and through Redis; bound history keys and handle zero, failure and UTC history rollover. | Concurrent stat/history calls make one calculation; retry and day-range tests pass. Daily snapshots retain their fresh calculation behavior. | +| F09 | Coordinate cache misses with renewable Redis leases and independent follower streams; publish verified immutable generation paths. Bound lease waits and Redis command timeouts. | Ten callers across two child processes make one producer download. Lease-expiry recovery and partial-upload rejection pass. | +| F10 | Add globally filtered and sorted dashboard summaries with cursor pagination. Exclude PR/gist bodies and reconcile private project names through a bounded backfill. | MongoDB tests combine types without duplicate pages and exclude megabyte bodies. The browser loads 50 rows, then 100, and finds project 149 with a global count of 150. | +| F11 | Request a recursive root tree first; retain bounded subdivision when GitHub truncates it. | A complete twenty-folder fixture uses one request; truncated listings retain their files. | +| F12 | Enforce expiration logically in reads; claim physical repository cleanup with renewable MongoDB leases and generation predicates. Drain the persisted backlog from nonoverlapping maintenance runs, with up to ten repository cleanups at once. | Reading 100 expired projects performs no physical cleanup. Concurrent cleanup, restoration and stale-generation tests pass. | +| F13 | Cache raw queue snapshots by the three supported queues; apply arbitrary searches after loading the snapshot. | One thousand search terms reuse the snapshot; a controlled clock confirms reload after expiration. | +| F14 | Keep at most six PDF page canvases near the viewport and at most two render tasks. Cancel and release distant or obsolete pages. | The 100-page browser fixture retained at most two canvases during the tested jumps, about 33 MiB of backing pixels. Zoom to 125 percent worked. PDF lifecycle UI tests pass. | + +The cleanup implementation uses MongoDB's persisted `expiring` records as its durable backlog, rather than adding a BullMQ expiration queue. The existing maintenance runner supplies bounded background execution and retries. Request reads do not depend on enqueueing Redis jobs. GitHub content lives under immutable lifecycle prefixes, and tree replacements preserve the old active tree until the new generation activates. + +The worker defaults are `ANONYMIZATION_WORKERS=1` and `ANONYMIZATION_MEMORY_MB=512`. The pool estimates each admitted job as 64 MiB plus four times its input bytes, retains at most sixteen queued jobs, and terminates workers after large jobs. Spool reservations are capped at twice the configured budget. This admission budget is not a hard process RSS cap. Keep container memory monitoring enabled when tuning concurrency or replacements that expand content. + +Transformed output has a one-hour TTL, a 128-entry limit and a 512 MiB disk budget; entries larger than 128 MiB bypass that cache. Temporary inputs use private directories, cleanup on cancellation, and periodic removal of hour-old crash leftovers. Redis connection and command failures fall back to bounded local work. Request authorization remains independent of cache reuse. + +The isolated CPU search fixture starts with pre-anonymized rows and excludes database, anonymization and HTTP latency. It demonstrates removal of the quadratic scan and early stopping. Arbitrary substring search still scans the current repository's derived mapping; a normal MongoDB index does not accelerate those substrings. Path indexes build lazily, so first access can cost more than a warm lookup. + +The PR review follow-up fixes forced conference expiration for every active repository status, persists completion for empty tree generations, preserves permanent GitHub download error statuses, suppresses duplicate initial dashboard loads, and restores commit metadata in dashboard summaries. Twelve new regression cases cover these behaviors; the existing mixed-dashboard database test also checks the returned commit. + +The second review follow-up makes gist and PR expiration a single conditional write that revalidates lifecycle and expiration settings before clearing embedded content. Maintenance indexes cover repository, gist and PR expiration scans and repository inactivity scans. The dashboard distinguishes empty accounts from empty filtered pages and updates global attention totals as polling changes a loaded repository. Fifteen new regression cases cover these changes, including query plans and additive migration checks. + +The third review follow-up preserves completed, verified cache fills after Redis heartbeat failures, removes all derived private path mappings during repository reset and removal, and invalidates builders from the retired metadata revision. Renaming a dashboard project reloads pagination and totals and rebinds the details panel to the refreshed row. Seven new regression cases cover Redis restart and timeout, reset and removal, overlapping path construction, and rename sorting and filtering. + +The fourth review follow-up revalidates expiration settings, lifecycle and metadata before claiming repository cleanup. Settings saves reject a concurrent cleanup claim. Expiration invalidates path builders and deletes every derived mapping generation. Polled repository status changes reload dashboard summaries and discard stale appended pages. Ten new regression cases cover both directions of the settings/cleanup race, complete path deletion, overlapping expiration and indexing, and status-sorted and filtered pagination, including later polls after a repository leaves the loaded page. + +The fifth review follow-up records retired file generations atomically with activation and retries their deletion through indexed, bounded maintenance. Expiration removes the full storage root and every file generation, including ZIP directories and legacy data. Recovered files retain a pending-invalidation marker until path and quota invalidation succeeds; failed invalidation propagates, and a later lookup or maintenance retries it. Nine new MongoDB regressions cover interrupted retirement, root deletion and isolation, changed cleanup claims, indexed recovery scans, failed invalidation and obsolete recoveries. The additive migration creates the sparse retirement index and partial pending-invalidation index. + +The sixth review follow-up records retired content-cache prefixes with tree activation and retries storage deletion before clearing the durable work. A retirement marker prevents an older producer from leaving output behind after cleanup. The migration queues legacy stream-cache cleanup once; filesystem directory iteration and paginated S3 bulk deletion preserve managed caches, ZIP source roots and other repositories. Five new regressions cover interrupted storage cleanup, legacy directories, more than 1,000 S3 objects, and producers starting or finishing after retirement. Existing migration and query-plan tests verify the new indexes and backfill. + +The seventh review follow-up activates truncation folders atomically with the new file tree, including clearing an older list when the replacement is complete. A failure during later quota computation cannot disable missing-file recovery for the active tree. Repository, gist and PR expiration reads update local state only after a successful claim; a missed claim reloads current settings, lifecycle and content. Eleven new MongoDB regressions cover interrupted activation, recovered and untruncated paths, concurrent expiration extensions, terminal and preparing states, deletion, and cleanup using the successful claim on the same instance. The existing overlapping-tree test also verifies that a later size write preserves the newer tree’s truncation folders. + +The eighth review follow-up revalidates the persisted repository lifecycle and captured content generation before a cold GitHub download and after storage publication. This fence survives expiration deleting the root and its retirement markers; late publishers remove their own output. Warm hits retain one metadata lookup without an added lifecycle query. Five new regressions cover held filesystem and S3 writes across root deletion, inactive or deleted records, replacement generations, and the warm fast path. + +The ninth review follow-up registers renewable staged-tree leases before inserting rows and marks staged files for indexed recovery, including inserts that finish after a lease was retired. Maintenance preserves live builders and active trees and retries interrupted completion. API and streamer startup now clean stale text spools and transformed caches, with independent, nonoverlapping scans every sixty seconds while idle. Transformed entries record their repository, content generation and cache revision; reset, removal and expiration purge local copies and fence late publishers. Connected replicas remove obsolete entries on their next scan, independently of new writes. Raw fills use the same reset revision. Streamers wait for MongoDB before serving, cap each MongoDB pool at ten connections and exit on startup failure. Nineteen new regressions cover crashes, late inserts and writes, generation retirement, cache isolation, idle cleanup across processes, startup gating and failure. The clean full run exercises compiled streamer code against disposable MongoDB. TTL and disk-budget pruning finish even when a repository lifecycle lookup fails; the scan reports the deferred failure and retries lifecycle validation later. The additive migration installs sparse staged-lease and partial staged-file indexes. + +The tenth review follow-up makes conference removal attempt every repository sequentially before reporting all failures. Legacy repository, gist and pull-request lists retain one bulk expiration update and then reload affected documents, preserving owner extensions, current statuses and options, and omitting concurrently deleted artifacts. Four new regressions cover multiple removal failures and concurrent list changes across all three artifact types. + +## Reproduce and deploy + +Run `npm run build`, `npm run lint`, and `npm test`. On 8 October 2026, a clean committed checkout passed build, lint and the full suite: 948 passing, 51 pending, and no failures, with disposable MongoDB and Redis enabled. The streamer startup, lifecycle and idle-cleanup tests used compiled application code in separate processes. This run used temporary memory-backed database and spool storage after local disk I/O stalls caused integration connection and large-file deadline failures. Lint reports seven existing warnings. The full suite includes the dashboard UI regressions; both focused rename tests and five status-polling UI tests also passed. An earlier working-tree run included unrelated untracked runtime tests with two pre-existing missing-export failures; those files are excluded from this PR. The clean run includes the final generation guards for file counts and readiness. + +The full run includes all 122 focused performance tests with disposable MongoDB and Redis. Run them separately with `npm run test:performance`. To include database and cross-process lease checks, set `PERFORMANCE_MONGO_URI` to a disposable MongoDB database named `perf_test_*`, and `PERFORMANCE_REDIS_PORT` to a disposable Redis port. The MongoDB suite drops its test database afterward. The S3 tests use a local HTTP protocol fixture by default; set `PERFORMANCE_S3_ENDPOINT` to test a disposable compatible service instead. + +Run `npm run benchmark:performance` for CPU comparisons. Add `-- --memory-only` for four 48 MiB worker responses. Set `PERF_FILE_MIB=100 PERF_CONCURRENCY=1` for the limit-sized fixture. `node scripts/performance-browser.js` serves code, a 100-page PDF and 150 dashboard summaries on port 4175 for collaborative-browser checks. + +Before deploying the readers, run `npm run migrate:performance` with the application's database environment. This adds the membership, file-generation, mapping, private-name, maintenance and cleanup-recovery indexes; it never drops indexes. It also queues legacy stream-cache cleanup once. Maintenance preserves managed content caches and ZIP source roots. Rerun it if you applied the migration before the cleanup-recovery indexes were added. The command passed twice against the disposable MongoDB fixture and retained existing indexes. Deploy the compiled worker file with the application build. Source-mode workers use ts-node and have additional startup cost. + +Production rollout still needs latency percentiles under the real mixed workload, cleanup-backlog observation, and real S3 multipart/network-failure checks. The local S3 fixture exercises SDK requests and short-upload publication but does not emulate all service failure modes. No deployment or production data changes were performed. + +## Baseline and implementation rules + +1. Preserve the existing working-tree changes and record the exact revision and environment used for comparisons. +2. Move the useful local review probes into a reproducible benchmark script and retain their fixtures. Use medians from repeated runs on the same hardware. Run benchmarks with a deadline; do not repeat the quadratic implementation at 100,000 files. +3. Add meaningful regression tests alongside each behavior change. Use disposable MongoDB, Redis, and S3-compatible fixtures for query plans, cross-process coordination, and storage behavior. Browser memory checks require the collaborative browser. +4. Capture API p50 and p95 latency, event-loop delay, RSS, active upstream requests, cache producers, queue depth, and MongoDB documents examined. Keep credentials and original private paths out of metric labels. +5. Use the current anonymization tests as the compatibility oracle. Preserve arbitrary-regex boundaries, Unicode and encoding behavior, setting changes, ETags, GitHub access revocation, truncated trees, and failure responses. Never return partial anonymization after a timeout. +6. Performance numbers below are proposed acceptance targets for local fixtures, not production latency promises. Set deployment latency and memory budgets from a realistic baseline before rollout. + +## Finding coverage + +| Finding | Problem | Phase | +| --- | --- | --- | +| F01 | Remove quadratic file search | 1 | +| F02 | Bound anonymization memory and move CPU work off request threads | 6 | +| F03 | Compile path terms once and index anonymized paths | 1 | +| F04 | Cancel disconnected proxy requests | 3 | +| F05 | Dispose explorer handlers per editor | 5 | +| F06 | Index dashboard membership and narrow quota queries | 2 | +| F07 | Reuse S3 clients and metadata | 3 | +| F08 | Share statistics computations and cache misses | 4 | +| F09 | Deduplicate file cache fills across replicas | 3 | +| F10 | Return paginated dashboard summaries | 2 | +| F11 | Fetch complete GitHub trees in one request | 4 | +| F12 | Move expiration cleanup out of reads | 2 | +| F13 | Bound admin queue cache retention | 4 | +| F14 | Recycle PDF canvases and bound rendering | 5 | + +## Implementation phases + +### Phase 1 Fix search and path resolution + +Start after baseline capture. Compile-once and linear search can ship before the derived-path migration; complete this phase after generation-safe indexed lookup is validated. + +#### F01 Remove quadratic file search + +Affected files: src/server/routes/repository-public.ts and src/core/Repository.ts. + +Check each file name and its own ancestor path segments, then stop at the 500-result limit. Fetch only required fields through a bounded cursor. Search versioned anonymized names and paths once F03 provides the mapping; preserve substring matching rather than assuming a normal MongoDB index accelerates arbitrary substrings. + +Acceptance: Compare results against the existing behavior for names, ancestor folders, custom masks, Unicode, and the result cap. Benchmark 1,000, 5,000, and 10,000 files with many matching folders. Target at least a 50-fold reduction in isolated CPU time at 10,000 files; check the new implementation at 100,000 files with a time limit. + +#### F03 Compile path terms once and index anonymized paths + +Affected files: src/core/AnonymizedFile.ts, src/core/anonymize-utils.ts, file models and preparation workers. + +First reuse one compiled term set per lookup and project only candidate fields. Add a separate derived mapping keyed by repository, tree generation, and ordered-term hash plus matcher version. Index exact anonymized path lookup. Build new generations separately, activate them atomically, and invalidate on settings changes and refreshes. Define collision behavior explicitly and retain a bounded fallback during backfill. + +Acceptance: Require identical original-file resolution for default masks, custom replacements, Unicode, missing files, and truncated-tree recovery. Test colliding paths and concurrent settings edits. Target at least a 10-fold improvement in the 10,000-candidate probe before indexing; indexed lookup must avoid loading the repository's complete file list. + +### Phase 2 Make dashboard reads small and predictable + +Independent of phase 1. Deploy indexes and durable cleanup support before switching the dashboard summary endpoint and frontend pagination. + +#### F06 Index dashboard membership and narrow quota queries + +Affected files: src/core/User.ts, anonymized repository schema and src/server/routes/user.ts. + +Inspect deployed indexes and execution plans. Add the missing coauthors.githubId index through an explicit migration while keeping owner and legacy username membership queries covered. Query only owned repositories and quota fields for quota calculation, rather than loading coauthored repositories and filtering afterward. + +Acceptance: Use a disposable MongoDB fixture with many unrelated repositories. Verify owner, GitHub-ID coauthor, legacy coauthor, and quota results. Confirm selective membership queries avoid collection scans and inspect examined-document counts. Do not drop existing indexes without workload evidence. + +#### F10 Return paginated dashboard summaries + +Affected files: src/server/routes/user.ts, src/core/User.ts, public/script/app.js and dashboard templates. + +Introduce a dashboard summary contract with explicit MongoDB projections and lean results. Return only row metadata; exclude PR diffs, comment bodies, and gist file contents. Support server filtering, stable sorting, and cursor pagination across resource types. Keep counts and quota over the complete authorized set. Switch the dashboard to this contract while retaining content and editor API contracts. + +Acceptance: Make summary payload size independent of embedded artifact size. Test large PR and gist bodies, mixed resource types, project names, actions, global counts, and page boundaries without duplicates or missing rows. Validate saved filters and frontend interactions. + +#### F12 Move expiration cleanup out of reads + +Affected files: src/core/User.ts, src/core/Conference.ts, route checks, src/server/schedule.ts and queue processes. + +Separate the logical expiration decision from physical deletion. Enforce expired access immediately, claim cleanup durably, and enqueue one idempotent cleanup job per repository generation. Let workers perform database and storage deletion with bounded concurrency. Make dashboard and conference reads return without waiting for deletion. Recover interrupted jobs and prevent old cleanup jobs deleting a restored generation. + +Acceptance: The 100-expired-repository read probe must perform no inline physical cleanup. Test concurrent reads, worker retries, queue failure, restart recovery, restore-versus-cleanup races, and access denial throughout cleanup. Extend existing lifecycle and refresh tests. + +### Phase 3 Coordinate downloads and release resources + +The cancellation fix can ship first. Agree on generation and publication ownership before shared fills; S3 reuse can ship separately. + +#### F04 Cancel disconnected proxy requests + +Affected files: src/core/AnonymizedFile.ts, src/server/routes/repository-public.ts and src/streamer/route.ts. + +Tie upstream requests, transformations, and response listeners to request completion and cancellation. Destroy the proxy's upstream request on premature client disconnect and remove listeners on every terminal path. Cover file and archive proxies. Distinguish subscriber cancellation from an intentional shared cache fill managed by F09. + +Acceptance: Reproduce a client closing before headers, during a body, and during an upstream error. Require released sockets and streams, no late writes, no unhandled errors, and normal completion for another subscriber to a shared fill. + +#### F09 Deduplicate file cache fills across replicas + +Affected files: src/core/source/GitHubStream.ts, storage adapters and Redis coordination. + +Use a lease keyed by repository, content generation, commit, and original path. One producer downloads and atomically publishes a verified cache entry; followers wait for publication and open independent readable streams. Use lease renewal and ownership checks, bounded waits, and crash recovery. Keep current access checks for every caller. Make refresh, revocation, and deletion invalidate old publication rights. + +Acceptance: Ten simultaneous misses must cause one producer download and one successful publication, including across two streamer instances. Test producer crashes, failed and partial downloads, lease expiry, follower disconnect, refresh races, and both filesystem and S3 storage. Never share one Readable directly between responses. + +#### F07 Reuse S3 clients and metadata + +Affected files: src/core/storage/S3.ts and src/core/source/GitHubStream.ts. + +Reuse a bounded set of S3 clients and HTTP connection pools instead of constructing a client per operation. Preserve operation-specific timeouts and cancellation. Return existence and size from one metadata lookup and reuse it for cache validation. Keep multipart uploads and incomplete-write protection intact. + +Acceptance: A sized warm-cache hit must use one HEAD and one GET with reused clients. Verify missing objects, directories, undersized cache entries, LFS size differences, timeouts, disconnects, and multipart failures through an S3-compatible integration fixture. + +### Phase 4 Reduce repeated metadata work + +Independent of the dashboard changes. Keep statistics, tree traversal, and admin caching as separate reviewable changes. + +#### F08 Share statistics computations and cache misses + +Affected files: src/server/index.ts and src/server/dailyStatsSnapshot.ts. + +Use one statistics provider for current totals, history, and snapshots. Coalesce in-flight calculations within a process and use Redis coordination for replicas. Preserve the current freshness policy, treat zero counts as valid, and bound cache entries for history ranges. Include the UTC date in history validity. Clear failed in-flight computations so later requests can retry. + +Acceptance: Concurrent stat and history requests must trigger one shared calculation per cache generation. Test zero repositories, different day ranges, UTC rollover, Redis failure, calculation failure, retry, and expiry. Confirm history and snapshot totals remain consistent. + +#### F11 Fetch complete GitHub trees in one request + +Affected files: src/core/source/GitHubStream.ts. + +Try a recursive root tree request first. When complete, convert and persist it directly. If truncated, use the existing shallow-tree subdivision with bounded GitHub concurrency, progress reporting, and truncated-folder recovery. Preserve authentication renewal and rate-limit handling. + +Acceptance: The complete twenty-folder fixture must require one tree call. Compare file listings and metadata for complete and truncated roots, nested truncation, empty repositories, missing commits, and rate-limit delays. The fallback must neither lose nor duplicate entries. + +#### F13 Bound admin queue cache retention + +Affected files: src/server/routes/admin.ts. + +Cache bounded queue snapshots by queue and supported state parameters, then apply search filtering to the snapshot. Remove arbitrary search text from persistent cache keys. Add maximum entries and explicit expiry eviction to any remaining query cache, and coalesce snapshot loads. + +Acceptance: Run thousands of distinct searches with a controlled clock. Retained entries and memory must remain bounded, expired snapshots must be released, and fresh results must match existing filtering and ordering. Test snapshot fetch failures and retries. + +### Phase 5 Bound browser resource use + +Independent of backend phases. Validate listeners and PDF resource recycling separately. + +#### F05 Dispose explorer handlers per editor + +Affected files: public/script/app.js, public/script/state.js and public/script/components.js. + +Register dark-mode handling once per explorer page. Give each editor its own listener cleanup and invoke it when the editor is replaced or unmounted. Release hash-change callbacks that capture old editors. Keep page disposal idempotent. + +Acceptance: Opening ten code files must retain at most one handler of each relevant kind for the active editor or page. Require zero handlers after disposal. Verify line anchors, gutter selection, dark-mode changes, and navigation into non-code viewers. + +#### F14 Recycle PDF canvases and bound rendering + +Affected files: public/script/pdf-viewer.js. + +Retain canvases only in a bounded window around the visible pages. Replace distant canvases with placeholders of the measured dimensions, cancel obsolete render tasks, and limit simultaneous page rendering. Release PDF page resources when safe and retain document-level teardown. + +Acceptance: Scroll a long PDF end to end and back; live canvases must stay within the configured window and graphics memory must stabilize. Test high-DPI screens, zoom, page jumps, resize, late render completion, and document replacement. Use a real browser for layout and memory checks. + +### Phase 6 Rework large text and archive processing + +Use phase 3 cancellation and publication rules. Validate the worker and memory design before enabling it, then introduce derived-output caching. + +#### F02 Bound anonymization memory and move CPU work off request threads + +Affected files: src/core/anonymize-utils.ts, src/core/zipStream.ts, streamer processes, configuration and Compose limits. + +Retain complete-text semantics for arbitrary regular expressions and Unicode. Spool large text input to bounded temporary storage, admit jobs through a byte-budgeted worker pool, and publish complete verified output atomically before serving it through backpressure-aware streams. Reuse derived output keyed by content generation and the complete options hash plus matcher version. Keep access validation independent of cache reuse. Bound pending ZIP entries and transformed bytes, retain existing file limits and execution deadlines, and clean temporary files on cancellation or crash. + +Acceptance: Require byte-for-byte parity with existing anonymization fixtures, including cross-chunk matches, Unicode, URLs, binary passthrough, custom replacements, and fail-closed timeout behavior. Repeat four 48 MiB responses, near-limit inputs, match-heavy files, and slow-client archives under streamer container limits. Reserved and active work must stay within the configured memory budget; large transformations must not synchronously occupy the HTTP event loop. + +## Dependencies and delivery + +- Agree on repository content and settings generations before implementing F03, F09, F12, and F02. Use the existing lifecycle and access revisions where possible, and specify which events invalidate derived data. +- Build derived indexes and caches additively. Backfill in bounded batches, activate a generation only when complete, and keep an authorized fallback for legacy records. Define collision handling before adding a uniqueness constraint. +- Split database migrations, new endpoint contracts, backend work, and frontend switches into reviewable changes. Each pull request must identify the finding IDs it closes, show relevant tests, and include before/after measurements when performance is its purpose. +- Phases 1 through 5 contain independently deliverable changes. Phase 6 follows shared-stream cancellation and publication work. Do not delay the search, payload, or listener fixes until the anonymization redesign is complete. + +## Validation and rollout + +For each change, run the relevant existing and new tests, TypeScript checks, and lint. Build the frontend and run the UI regression suite when scripts or templates change. Run the complete suite at integration milestones, not after every documentation or isolated adjustment. + +Deploy additive indexes and worker support before switching readers. Introduce flags for the dashboard contract, derived-path lookup, shared fills, and worker anonymization where rollback requires choosing an older implementation. Canary backend behavior and watch latency, RSS, producer counts, error rates, and cleanup backlog. + +Exercise concurrent settings edits, refreshes, removal, restoration, and access revocation during the canary. A request or worker from an older generation must not publish over a replacement generation. Queue and Redis failures must remain retryable without unlimited duplicate work or silent partial output. + +Rollback must preserve schema compatibility and repository lifecycle safety. Retire the older direct anonymization path after byte-parity, cancellation, and memory validation; do not automatically bypass a required memory budget when a worker fails. + +The plan is complete when all fourteen acceptance checks pass, the mixed-workload run stays within agreed memory and latency budgets, and the deployment records no regressions in anonymization or access behavior. Close each finding only after its implementation and validation are complete. diff --git a/docs/performance-results.json b/docs/performance-results.json new file mode 100644 index 0000000..ed13ddc --- /dev/null +++ b/docs/performance-results.json @@ -0,0 +1,177 @@ +{ + "date": "2026-10-07", + "baselineRevision": "a7e3826", + "node": "v24.14.1", + "cpu": [ + { + "case": "search", + "files": 1000, + "medianMs": 0.502400000000307, + "baselineMs": 222.9168720000007, + "speedup": 443.70396496788305 + }, + { + "case": "search", + "files": 5000, + "medianMs": 0.46089800000027026, + "baselineMs": 4724.687013999999, + "speedup": 10251.04689974187 + }, + { + "case": "search", + "files": 10000, + "medianMs": 0.32013899999583373, + "baselineMs": 22445.405297999998, + "speedup": 70111.43690175861 + }, + { + "case": "search", + "files": 100000, + "medianMs": 0.38411400000040885, + "baselineMs": null, + "speedup": null + }, + { + "case": "compile-once paths", + "files": 10000, + "medianMs": 39.23022500000661, + "baselineMs": 2198.6516830000037, + "speedup": 56.04483999262388 + } + ], + "largeText": [ + { + "case": "large text", + "concurrent": 4, + "fileMiB": 48, + "elapsedMs": 10560.582797, + "outputMiB": 192, + "peakRssMiB": 555.45703125, + "rssIncreaseMiB": 274.4453125, + "eventLoopP95Ms": 11.608063, + "eventLoopMaxMs": 45.023231 + }, + { + "case": "large text", + "concurrent": 1, + "fileMiB": 100, + "elapsedMs": 6453.477399, + "outputMiB": 100, + "peakRssMiB": 640.92578125, + "rssIncreaseMiB": 361.0390625, + "eventLoopP95Ms": 11.239423, + "eventLoopMaxMs": 33.488895 + } + ], + "browser": { + "pdfPages": 100, + "codeNavigations": 10, + "activeHashListeners": 1, + "hashListenersAfterEditorRemoval": 0, + "maxObservedPdfCanvases": 2, + "maxObservedCanvasBackingMiB": 33.13, + "pdfZoomPercent": 125, + "dashboardInitialRows": 50, + "dashboardRowsAfterLoadMore": 100, + "dashboardFilteredRows": 1, + "dashboardTotal": 150 + }, + "database": { + "unrelatedRepositories": 2000, + "membershipDocsExaminedUpperBoundExclusive": 10, + "indexedPathLookupDocsExamined": 1, + "maintenanceCollections": [ + "repositories", + "gists", + "pullRequests" + ], + "maintenanceDocsExaminedUpperBoundExclusive": 10 + }, + "cache": { + "processes": 2, + "concurrentCallers": 10, + "producerDownloads": 1, + "warmS3HeadRequests": 1, + "warmS3GetRequests": 1 + }, + "slowZip": { + "entries": 12, + "entryMiB": 1, + "activeTransformers": 1, + "queuedOutputMiB": 0 + }, + "limits": [ + "Search CPU fixture uses pre-anonymized rows and excludes MongoDB and HTTP latency.", + "RSS measurements include the source-mode application imports and ts-node workers. Worker memory admission uses estimates; it is not a hard process RSS cap.", + "S3 validation uses the AWS SDK against a disposable HTTP protocol fixture. Production service multipart and failure behavior still needs rollout validation.", + "Browser results cover the tested navigation sequence and 100-page fixture, not all PDF documents." + ], + "tests": { + "fullSuite": { + "passing": 948, + "pending": 51, + "failing": 0, + "note": "Clean committed checkout after ten PR review follow-ups, with disposable MongoDB/Redis and memory-backed temporary storage. Streamer startup/lifecycle/idle-cleanup integration uses compiled application code in separate processes; unrelated workspace files excluded. Includes bulk expiration races across repositories, gists and pull requests, and conference removal after multiple storage failures.", + "validationDate": "2026-10-08" + }, + "performanceSuite": { + "passing": 122, + "note": "Included in the latest clean full-suite run with disposable MongoDB and Redis." + }, + "uiSuite": { + "passing": 134, + "note": "Earlier standalone UI run; the latest full suite includes subsequent UI additions. Both focused rename cases and five status-polling cases passed." + }, + "build": "passed", + "lint": { + "errors": 0, + "existingWarnings": 7 + }, + "indexMigration": "passed twice on disposable MongoDB; existing indexes retained; staging, retirement and pending-cleanup indexes verified; legacy stream-cache cleanup queued and ZIP sources excluded", + "workspaceSuite": { + "passing": 862, + "pending": 51, + "failing": 2, + "failures": [ + "Pre-existing missing export PullRequest.buildPullRequestDiffRequest", + "Pre-existing missing export applyNewPullRequestFields" + ], + "note": "Earlier working-tree run included unrelated untracked runtime regression tests that are excluded from this PR." + }, + "streamerRuntime": { + "compiled": true, + "startupWaitsForMongoDB": "passed", + "maxPoolSize": 10, + "minPoolSize": 0, + "expirationLateFillHttpStatus": 409, + "idleReplicaCacheAndSpoolCleanup": "passed", + "startupFailureExitCode": 1, + "scope": "Disposable MongoDB and local filesystem; controlled download/publication fixtures. Pool settings are asserted, not production socket measurements." + } + }, + "sockets": { + "sequential": { + "reads": 100, + "httpRequests": 200, + "connectionsOpened": 1, + "peakConnections": 1, + "idleConnections": 1 + }, + "parallel": { + "concurrentReads": 100, + "httpRequests": 200, + "totalConnectionsOpened": 50, + "peakConnections": 50, + "idleConnections": 50 + }, + "afterPoolDestroy": 0, + "cancellation": { + "requests": 20, + "connectionsOpened": 20, + "peakConnections": 1, + "connectionsAfterEachCancellation": 0, + "maxObservedReleaseMs": 14.330879000000095 + }, + "scope": "Local HTTP probe using the actual S3 SDK/storage adapter and got proxy streams. S3 measurements use one timeout profile and one endpoint; counts are not application-wide or production measurements." + } +} diff --git a/eslint.config.mjs b/eslint.config.mjs index 6f922a3..b59ac90 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -5,7 +5,7 @@ export default tseslint.config( eslint.configs.recommended, ...tseslint.configs.recommended, { - ignores: ["build/", "public/", "gulpfile.js", "healthcheck.js", "opentelemetry.js"], + ignores: ["db_backups/", "esdata/", "repositories/", "build/", "public/", "gulpfile.js", "healthcheck.js", "opentelemetry.js"], }, { rules: { @@ -33,10 +33,13 @@ export default tseslint.config( __dirname: "readonly", console: "readonly", Buffer: "readonly", + process: "readonly", + AbortController: "readonly", }, }, rules: { "@typescript-eslint/no-unused-expressions": "off", + "no-redeclare": ["error", { builtinGlobals: false }], }, }, { diff --git a/package.json b/package.json index 976db2f..cbb52f1 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,9 @@ "knip": "knip", "migrate:credentials": "node -r ts-node/register src/scripts/migrate-credentials.ts", "recover:owners": "node -r ts-node/register src/scripts/recover-repository-owners.ts", + "migrate:performance": "node -r ts-node/register src/scripts/create-performance-indexes.ts", + "test:performance": "mocha test/performance-*.test.js", + "benchmark:performance": "node scripts/performance-benchmark.js", "build:ui": "gulp", "test:ui": "gulp && mocha test/frontend-regressions.test.js test/dashboard-ui.test.js test/vue-ui.test.js" }, diff --git a/public/asset-manifest.json b/public/asset-manifest.json index 27e68c5..16941dc 100644 --- a/public/asset-manifest.json +++ b/public/asset-manifest.json @@ -1,6 +1,6 @@ { "core.min.js": "core.3b07189932.min.js", - "vendor.min.js": "vendor.7e58c2ba4a.min.js", + "vendor.min.js": "vendor.9e4516e8b9.min.js", "mermaid.min.js": "mermaid.f848a72d16.min.js", "all.min.css": "all.947ab87f1c.min.css", "markdown.min.js": "markdown.44f2e93820.min.js", diff --git a/public/i18n/locale-en.json b/public/i18n/locale-en.json index e6d05f4..85909c3 100644 --- a/public/i18n/locale-en.json +++ b/public/i18n/locale-en.json @@ -1,5 +1,9 @@ { "ERRORS": { + "cache_busy": "Downloads are busy. Please try again shortly.", + "invalid_sort": "The selected sort order is invalid.", + "invalid_cursor": "This project page is no longer valid. Reload the list.", + "repository_changed": "The repository changed while processing. Please retry.", "repository_job_cancelled": "The repository changed or was removed while processing.", "storage_delete_failed": "Unable to remove cached files. Please try again later.", "unknown_error": "Unknown error, contact the admin.", diff --git a/public/partials/dashboard.htm b/public/partials/dashboard.htm index f4243e1..14004c4 100644 --- a/public/partials/dashboard.htm +++ b/public/partials/dashboard.htm @@ -94,8 +94,8 @@ - {{ fmt?.number(items?.length) }} projects - {{ fmt?.number(filteredItems?.length) }} of {{ fmt?.number(items?.length) }} shown + {{ fmt?.number(dashboardTotals?.total ?? items?.length) }} projects + {{ fmt?.number(dashboardTotals?.filtered ?? filteredItems?.length) }} of {{ fmt?.number(dashboardTotals?.total ?? items?.length) }} shown
@@ -246,13 +246,19 @@
- You have no anonymizations yet. - Nothing matches the current filters. + You have no anonymizations yet. + Nothing matches the current filters.
+
+

{{ dashboardError }}

+ +
diff --git a/public/script/app.js b/public/script/app.js index f7d2151..e1d8d3f 100644 --- a/public/script/app.js +++ b/public/script/app.js @@ -461,7 +461,8 @@ export const unifiedDashboardController = function (state, http, location, promi state.nameMessage = ""; state.needsAttention = item => item.status === "error" || item._broken || (statusKey(item.status) === "progress" && item._stale); - state.attentionCount = () => state.items.filter(state.needsAttention).length; + state.attentionCount = () => state.dashboardTotals?.attention ?? state.items.filter(state.needsAttention).length; + state.hasProjects = () => (state.dashboardTotals?.total ?? state.items.length) > 0; state.setProjectView = view => { state.projectView = view; if (view === "attention") { @@ -496,6 +497,13 @@ export const unifiedDashboardController = function (state, http, location, promi item.projectName = res.data.name; item._label = item.projectName || item._fallbackLabel; if (state.selectedProject === item) state.nameMessage = name ? "Project name saved." : "Default project name restored."; + if (!legacyDashboard) { + state.dashboardCursor = null; + await loadAll(); + if (state.selectedProject === item) { + state.selectedProject = state.items.find(current => current._type === item._type && current._id === item._id) || null; + } + } } catch (_) { if (state.selectedProject === item) state.nameError = "The project name could not be saved. Try again."; } finally { state.nameSaving = false; } @@ -681,7 +689,7 @@ export const unifiedDashboardController = function (state, http, location, promi // All three lists load in parallel and are merged once, so the table // does not re-sort three times while it fills in. - function loadAll() { + function loadLegacy() { state.loading = true; return promises .all([ @@ -740,6 +748,55 @@ export const unifiedDashboardController = function (state, http, location, promi state.loading = false; }); } + let dashboardGeneration = 0; + let legacyDashboard = false; + state.dashboardCursor = null; + state.dashboardError = ""; + function decorateSummary(item) { + const src = item.source || {}; + if (item._type === "repo") return decorateItem(item, item.repoId, item.repoId, src.fullName, "/anonymize/" + item.repoId, "/r/" + item.repoId + "/"); + if (item._type === "pr") return decorateItem(item, item.pullRequestId, item.pullRequestId, + src.repositoryFullName ? src.repositoryFullName + "#" + src.pullRequestId : undefined, + "/pull-request-anonymize/" + item.pullRequestId, "/pr/" + item.pullRequestId + "/"); + return decorateItem(item, item.gistId, item.gistId, src.gistId, "/gist-anonymize/" + item.gistId, "/gist/" + item.gistId + "/"); + } + function loadAll(append = false) { + if (legacyDashboard) return loadLegacy(); + const generation = ++dashboardGeneration; + state.loading = !append; + state.loadingMore = append; + state.dashboardError = ""; + return http.get("/api/user/dashboard", { params: { + q: state.search, type: state.typeFilter, sort: state.orderBy, + statuses: Object.keys(state.filters.status).filter(key => state.filters.status[key] !== false).join(",") || "none", + attention: String(state.projectView === "attention"), + cursor: append ? state.dashboardCursor : undefined, + } }).then(response => { + if (generation !== dashboardGeneration) return; + // Compatibility with servers that have not gained the summary API. + if (!Array.isArray(response.data?.items)) { legacyDashboard = true; return loadLegacy(); } + state.items = (append ? state.items : []).concat(response.data.items.map(decorateSummary)); + state.dashboardCursor = response.data.cursor; + state.dashboardTotals = response.data; + }, error => { + if (generation !== dashboardGeneration) return; + if (error.status === 404) { legacyDashboard = true; return loadLegacy(); } + state.dashboardError = "Projects could not be loaded. Please try again."; + }).finally(() => { + if (generation === dashboardGeneration) { state.loading = false; state.loadingMore = false; } + }); + } + state.loadMoreProjects = () => loadAll(true); + let reloadTimer; + state.watchGroup(["search", "typeFilter", "orderBy", "projectView"], () => { + if (legacyDashboard) return; + if (reloadTimer) timers.timeout.cancel(reloadTimer); + reloadTimer = timers.timeout(() => loadAll(), 150); + }, false); + state.watch("filters", () => { + if (!legacyDashboard) loadAll(); + }, true, false); + state.on("dispose", () => { dashboardGeneration++; }); loadAll(); // Whole row opens the anonymized view; clicks on links, buttons and the @@ -773,17 +830,32 @@ export const unifiedDashboardController = function (state, http, location, promi }); }; - function waitRepoToBeReady(repoId, callback, onError) { - http.get("/api/repo/" + repoId).then((res) => { + function waitRepoToBeReady(repoId, callback, onError, previousStatus) { + http.get("/api/repo/" + repoId).then(async (res) => { + let statusChanged = previousStatus !== undefined && previousStatus !== res.data.status; for (const item of state.items) { if (item._type === "repo" && item.repoId == repoId) { + statusChanged = statusChanged || item.status !== res.data.status; + const neededAttention = state.needsAttention(item); item.status = res.data.status; item.statusMessage = res.data.statusMessage; item._statusKey = statusKey(item.status); if (item._statusKey !== "progress") item._stale = false; + const needsAttention = state.needsAttention(item); + if (state.dashboardTotals && neededAttention !== needsAttention) { + state.dashboardTotals.attention = Math.max(0, state.dashboardTotals.attention + (needsAttention ? 1 : -1)); + } break; } } + if (statusChanged && !legacyDashboard) { + state.dashboardCursor = null; + const selected = state.selectedProject; + await loadAll(); + if (selected && state.selectedProject === selected) { + state.selectedProject = state.items.find(item => item._type === selected._type && item._id === selected._id) || null; + } + } if ( res.data.status == "ready" || res.data.status == "error" || @@ -793,7 +865,7 @@ export const unifiedDashboardController = function (state, http, location, promi callback(res.data); return; } - timers.timeout(() => waitRepoToBeReady(repoId, callback, onError), 2500); + timers.timeout(() => waitRepoToBeReady(repoId, callback, onError, res.data.status), 2500); }, onError); } @@ -819,7 +891,7 @@ export const unifiedDashboardController = function (state, http, location, promi toast.title = `${item._id} is removed.`; toast.body = `The ${label} ${item._id} is removed.`; - }); + }, undefined, item.status); } else { toast.title = `${item._id} is removed.`; toast.body = `The ${label} ${item._id} is removed.`; @@ -860,7 +932,7 @@ export const unifiedDashboardController = function (state, http, location, promi toast.title = `${item._id} is refreshed.`; toast.body = `The ${label} ${item._id} is refreshed.`; - }, onError); + }, onError, item.status); } else { toast.title = `${item._id} is refreshed.`; toast.body = `The ${label} ${item._id} is refreshed.`; @@ -887,7 +959,7 @@ export const unifiedDashboardController = function (state, http, location, promi toast.title = `${item._id} is extended.`; toast.body = `The expiration of ${label} ${item._id} is extended by 6 months.`; - }); + }, undefined, item.status); } else { toast.title = `${item._id} is extended.`; toast.body = `The expiration of ${label} ${item._id} is extended by 6 months.`; @@ -2065,6 +2137,14 @@ export const anonymizeController = function (state, http, html, params, location export const exploreController = function (state, http, location, params, html, promises) { const timers = createTimers(); const listen = createListeners(); + state.on("dark-mode", (event, on) => { + if (!state.aceOption) return; + if (on) { + state.aceOption.theme = "nord_dark"; + } else { + state.aceOption.theme = "chrome"; + } + }); let contentGeneration = 0; let destroyed = false; state.on("dispose", () => { @@ -2618,7 +2698,7 @@ export const exploreController = function (state, http, location, params, html, e.stop(); }); - listen(window, "hashchange", () => applyHashFromUrl(false)); + const removeHashListener = listen(window, "hashchange", () => applyHashFromUrl(false)); _editor.setFontSize(state.aceOption.fontSize); _editor.setReadOnly(state.aceOption.readOnly); @@ -2649,15 +2729,9 @@ export const exploreController = function (state, http, location, params, html, _editor.session.setTabSize(state.aceOption.tabSize); _editor.setBehavioursEnabled(state.aceOption.enableBehaviours); _editor.setFadeFoldWidgets(state.aceOption.fadeFoldWidgets); + return removeHashListener; }, }; - state.on("dark-mode", (event, on) => { - if (on) { - state.aceOption.theme = "nord_dark"; - } else { - state.aceOption.theme = "chrome"; - } - }); if (state.isDarkMode) { state.aceOption.theme = "nord_dark"; } diff --git a/public/script/components.js b/public/script/components.js index 1faa357..8defeb7 100644 --- a/public/script/components.js +++ b/public/script/components.js @@ -95,7 +95,7 @@ export const codeEditor = { el._editor = editor; editor.setValue(String(latest.content ?? ""), -1); applyEditorOptions(el, latest.options); - latest.options?.onLoad?.(editor); + el._editorCleanup = latest.options?.onLoad?.(editor); } catch (error) { if (!el._editorDisposed) el.textContent = error.message; } @@ -106,7 +106,7 @@ export const codeEditor = { if (el._editor.getValue() !== String(value.content ?? "")) el._editor.setValue(String(value.content ?? ""), -1); applyEditorOptions(el, value.options); }, - beforeUnmount(el) { el._editorDisposed = true; el._editor?.destroy(); }, + beforeUnmount(el) { el._editorDisposed = true; el._editorCleanup?.(); el._editor?.destroy(); }, }; function applyEditorOptions(el, options = {}) { const mode = editorModes.has(options.mode) ? options.mode : "text"; diff --git a/public/script/pdf-viewer.js b/public/script/pdf-viewer.js index 2cfa490..1e98d29 100644 --- a/public/script/pdf-viewer.js +++ b/public/script/pdf-viewer.js @@ -33,6 +33,21 @@ export default { // Bumped on every load so pages still resolving from a previous // document are dropped instead of appended to the new one. let generation = 0; + let loadingTask = null; + const renders = new Map(); + let rendering = 0; + function releaseSlot(slot) { + const record = renders.get(slot); + if (record) { + record.cancelled = true; + record.task?.cancel?.(); + renders.delete(slot); + } + const canvas = slot.querySelector("canvas"); + if (canvas) { canvas.width = 0; canvas.height = 0; } + slot.innerHTML = ""; + delete slot.dataset.state; + } // --------------------------------------------------------------- // Toolbar @@ -183,6 +198,8 @@ export default { // --------------------------------------------------------------- function teardown() { generation++; + slots.forEach(releaseSlot); + if (loadingTask) { Promise.resolve(loadingTask.destroy?.()).catch(() => {}); loadingTask = null; } if (resizeTimer) { clearTimeout(resizeTimer); resizeTimer = null; @@ -214,7 +231,7 @@ export default { // Match the canvas backing store to the device pixel ratio, else text // is visibly soft on HiDPI screens. - function renderPage(page, slot) { + function renderPage(page, slot, record) { const ratio = window.devicePixelRatio || 1; const unscaled = page.getViewport({ scale: 1 }); const cssWidth = parseFloat(slot.style.width); @@ -231,11 +248,12 @@ export default { slot.appendChild(canvas); // The placeholder height was an estimate; the canvas is now the // authority on how tall this page is. - slot.style.height = ""; - return page.render({ + slot.style.height = canvas.style.height; + record.task = page.render({ canvasContext: canvas.getContext("2d"), viewport: viewport, - }).promise; + }); + return record.task.promise; } function renderVisible() { @@ -249,36 +267,35 @@ export default { const view = pages.getBoundingClientRect(); const top = view.top - PRERENDER_MARGIN; const bottom = view.top + pages.clientHeight + PRERENDER_MARGIN; - slots.forEach(function (slot, i) { - if (slot.dataset.state) return; - const rect = slot.getBoundingClientRect(); - if (rect.top > bottom || rect.bottom < top) return; + const visible = slots.map((slot, i) => ({ slot, i, rect: slot.getBoundingClientRect() })) + .filter(item => item.rect.top <= bottom && item.rect.bottom >= top) + .sort((a, b) => Math.abs(a.rect.top - view.top) - Math.abs(b.rect.top - view.top)).slice(0, 6); + const keep = new Set(visible.map(item => item.slot)); + for (const slot of renders.keys()) if (!keep.has(slot)) releaseSlot(slot); + for (const { slot, i } of visible) { + if (slot.dataset.state || rendering >= 2) continue; + const record = { cancelled: false, task: null }; + renders.set(slot, record); + rendering++; slot.dataset.state = "rendering"; - doc - .getPage(i + 1) - .then(function (page) { - if (myGeneration !== generation) return; - return renderPage(page, slot); - }) - .then(function () { - if (myGeneration !== generation) return; - slot.dataset.state = "done"; - // A real page height replaces an estimate, moving everything - // below it — re-pin the page the reader asked for. - if (anchorPage && Date.now() < anchorUntil) { - scrollToPage(anchorPage); - } - // The shift can also bring further pages into view. Called - // directly rather than through schedule() so this doesn't - // depend on a frame callback firing. - renderVisible(); - }) - .catch(function () { - // A single unrenderable page shouldn't blank the whole - // document — leave the placeholder empty and move on. - slot.dataset.state = "failed"; - }); - }); + let page; + doc.getPage(i + 1).then(value => { + page = value; + if (record.cancelled || myGeneration !== generation) return; + return renderPage(page, slot, record); + }).then(() => { + if (record.cancelled || myGeneration !== generation) return; + slot.dataset.state = "done"; + if (anchorPage && Date.now() < anchorUntil) scrollToPage(anchorPage); + }).catch(() => { + if (!record.cancelled && myGeneration === generation) slot.dataset.state = "failed"; + }).finally(() => { + rendering--; + page?.cleanup?.(); + if (doc) renderVisible(); + }); + } + } function schedule() { @@ -309,6 +326,8 @@ export default { // whatever is on screen. Used for zoom changes and window resizes, // both of which invalidate canvases rasterised at the old width. function relayout() { + generation++; + slots.forEach(releaseSlot); const width = pageWidth(); slots.forEach(function (slot) { delete slot.dataset.state; @@ -320,7 +339,7 @@ export default { } function setZoom(value) { - if (!doc || value === zoom) return; + if (!doc || !slots.length || value === zoom) return; const anchor = currentPage; zoom = value; syncToolbar(); @@ -333,7 +352,7 @@ export default { if (resizeTimer) clearTimeout(resizeTimer); resizeTimer = setTimeout(function () { resizeTimer = null; - if (doc) relayout(); + if (doc && slots.length) relayout(); }, 250); } @@ -342,8 +361,7 @@ export default { if (!url) return; const myGeneration = generation; - pdfjsLib - .getDocument({ + loadingTask = pdfjsLib.getDocument({ url: url, isEvalSupported: false, // Needed for PDFs that reference the 14 standard fonts without @@ -352,8 +370,8 @@ export default { standardFontDataUrl: "/script/external/pdf-standard-fonts/", cMapUrl: "/script/external/pdf-cmaps/", cMapPacked: true, - }) - .promise.then(function (_doc) { + }); + loadingTask.promise.then(function (_doc) { if (myGeneration !== generation) { _doc.destroy(); return; diff --git a/public/script/state.js b/public/script/state.js index 6562d68..0308d3d 100644 --- a/public/script/state.js +++ b/public/script/state.js @@ -19,14 +19,14 @@ export function createPageState(parent = null, events = new Map()) { }); Object.defineProperty(own, "parent", { value: parent, configurable: true }); Object.defineProperty(own, "viewState", { get: () => state }); - state.watch = (source, callback, deep = false) => { + state.watch = (source, callback, deep = false, immediate = true) => { const read = typeof source === "function" ? () => source(state) : () => getPath(state, source); const stop = watch(read, callback, { deep, flush: "post" }); cleanups.push(stop); - nextTick(() => { if (!disposed) callback(read(), read()); }); + if (immediate) nextTick(() => { if (!disposed) callback(read(), read()); }); return stop; }; - state.watchGroup = (sources, callback) => state.watch(() => sources.map(s => getPath(state, s)), callback, true); + state.watchGroup = (sources, callback, immediate = true) => state.watch(() => sources.map(s => getPath(state, s)), callback, true, immediate); state.on = (name, callback) => { if (name === "dispose") { cleanups.push(callback); return () => {}; } if (!events.has(name)) events.set(name, new Set()); @@ -69,10 +69,15 @@ export function createTimers() { } export function createListeners() { - const cleanups = []; - onScopeDispose(() => cleanups.forEach(fn => fn())); + const cleanups = new Set(); + onScopeDispose(() => { cleanups.forEach(fn => fn()); cleanups.clear(); }); return (target, type, callback, options) => { target.addEventListener(type, callback, options); - cleanups.push(() => target.removeEventListener(type, callback, options)); + const off = () => { + target.removeEventListener(type, callback, options); + cleanups.delete(off); + }; + cleanups.add(off); + return off; }; } diff --git a/public/script/vendor.min.js b/public/script/vendor.min.js index e6c1173..b0e9990 100644 --- a/public/script/vendor.min.js +++ b/public/script/vendor.min.js @@ -1,30 +1,30 @@ -"use strict";(()=>{var xl=Object.defineProperty;var ed=(e,t)=>{for(var n in t)xl(e,n,{get:t[n],enumerable:!0})};var pe=["abap","abc","actionscript","ada","alda","apache_conf","apex","applescript","aql","asciidoc","asl","assembly_x86","autohotkey","batchfile","c9search","c_cpp","cirru","clojure","cobol","coffee","coldfusion","crystal","csharp","csound_document","csound_orchestra","csound_score","csp","css","curly","d","dart","diff","django","dockerfile","dot","drools","edifact","eiffel","ejs","elixir","elm","erlang","forth","fortran","fsharp","fsl","ftl","gcode","gherkin","gitignore","glsl","gobstones","golang","graphqlschema","groovy","haml","handlebars","haskell","haskell_cabal","haxe","hjson","html","html_elixir","html_ruby","ini","io","jack","jade","java","javascript","json","json5","jsoniq","jsp","jssm","jsx","julia","kotlin","latex","less","liquid","lisp","livescript","logiql","logtalk","lsl","lua","luapage","lucene","makefile","markdown","mask","matlab","maze","mediawiki","mel","mixal","mushcode","mysql","nginx","nim","nix","nsis","nunjucks","objectivec","ocaml","pascal","perl","perl6","pgsql","php","php_laravel_blade","pig","plain_text","powershell","praat","prisma","prolog","properties","protobuf","puppet","python","qml","r","razor","rdoc","red","redshift","rhtml","rst","ruby","rust","sass","scad","scala","scheme","scss","sh","sjs","slim","smarty","snippets","soy_template","space","sparql","sql","sqlserver","stylus","svg","swift","tcl","terraform","tex","text","textile","toml","tsx","turtle","twig","typescript","vala","vbscript","velocity","verilog","vhdl","visualforce","wollok","xml","xquery","yaml","zeek"];var fe={notebook:"/script/notebook.c3144c18ae.min.js",org:"/script/org.f61f262915.min.js",pdf:"/script/pdf.4d9cc6ff49.min.js",markdown:"/script/markdown.44f2e93820.min.js",editor:"/script/editor.4f142d3adc.min.js"};var us=new Map,sd=fe;function Jt(e){if(!us.has(e)){let t=document.createElement("script");t.src=sd[e];let n=new Promise((r,s)=>{t.onload=r,t.onerror=()=>{us.delete(e),t.remove(),s(new Error(`Unable to load ${e}. Please retry.`))}});us.set(e,n),document.head.appendChild(t)}return us.get(e)}async function lr(){await Jt("editor"),ace.config.set("basePath","/script/external/ace/")}function po(e){let t=Object.create(null);for(let n of e.split(","))t[n]=1;return n=>n in t}var Ie={},Qt=[],at=()=>{},sn=()=>!1,fo=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),mo=e=>e.startsWith("onUpdate:"),Ge=Object.assign,Oo=(e,t)=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)},nd=Object.prototype.hasOwnProperty,De=(e,t)=>nd.call(e,t),be=Array.isArray,$t=e=>Io(e)==="[object Map]",co=e=>Io(e)==="[object Set]",dr=e=>Io(e)==="[object Date]";var we=e=>typeof e=="function",ze=e=>typeof e=="string",mt=e=>typeof e=="symbol",Ae=e=>e!==null&&typeof e=="object",nn=e=>(Ae(e)||we(e))&&we(e.then)&&we(e.catch),pr=Object.prototype.toString,Io=e=>pr.call(e),rn=e=>Io(e).slice(8,-1),cs=e=>Io(e)==="[object Object]",ps=e=>ze(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ho=po(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted");var fs=e=>{let t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},rd=/-\w/g,Je=fs(e=>e.replace(rd,t=>t.slice(1).toUpperCase())),id=/\B([A-Z])/g,St=fs(e=>e.replace(id,"-$1").toLowerCase()),Xt=fs(e=>e.charAt(0).toUpperCase()+e.slice(1)),Po=fs(e=>e?`on${Xt(e)}`:""),gt=(e,t)=>!Object.is(e,t),vo=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},Vo=e=>{let t=parseFloat(e);return isNaN(t)?e:t};var ur,qo=()=>ur||(ur=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Me(e){if(be(e)){let t={};for(let n=0;n{if(n){let r=n.split(ld);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function A(e){let t="";if(ze(e))t=e;else if(be(e))for(let n=0;n!!(e&&e.__v_isRef===!0),c=e=>ze(e)?e:e==null?"":be(e)||Ae(e)&&(e.toString===pr||!we(e.toString))?hr(e)?c(e.value):JSON.stringify(e,vr,2):String(e),vr=(e,t)=>hr(t)?vr(e,t.value):$t(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],i)=>(n[on(r,i)+" =>"]=s,n),{})}:co(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>on(n))}:mt(t)?on(t):Ae(t)&&!be(t)&&!cs(t)?String(t):t,on=(e,t="")=>{var n;return mt(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};function fd(e,...t){console.warn(`[Vue warn] ${e}`,...t)}var Qe,Uo=class{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&Qe&&(Qe.active?(this.parent=Qe,this.index=(Qe.scopes||(Qe.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes){let r=this.scopes.slice();for(t=0,n=r.length;t0&&--this._on===0){if(Qe===this)Qe=this.prevScope;else{let t=Qe;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let n,r;for(n=0,r=this.effects.length;n0)return;if(Lo){let t=Lo;for(Lo=void 0;t;){let n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;$o;){let t=$o;for($o=void 0;t;){let n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=n}}if(e)throw e}function Er(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Cr(e){let t,n=e.depsTail,r=n;for(;r;){let s=r.prevDep;r.version===-1?(r===n&&(n=s),wn(r),md(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=s}e.deps=t,e.depsTail=n}function un(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(_r(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function _r(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Fo)||(e.globalVersion=Fo,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!un(e))))return;e.flags|=2;let t=e.dep,n=Le,r=Et;Le=e,Et=!0;try{Er(e);let s=e.fn(e._value);(t.version===0||gt(s,e._value))&&(e.flags|=128,e._value=s,t.version++)}catch(s){throw t.version++,s}finally{Le=n,Et=r,Cr(e),e.flags&=-3}}function wn(e,t=!1){let{dep:n,prevSub:r,nextSub:s}=e;if(r&&(r.nextSub=s,e.prevSub=void 0),s&&(s.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)wn(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function md(e){let{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}var Et=!0,Sr=[];function Tt(){Sr.push(Et),Et=!1}function At(){let e=Sr.pop();Et=e===void 0?!0:e}function gr(e){let{cleanup:t}=e;if(e.cleanup=void 0,t){let n=Le;Le=void 0;try{t()}finally{Le=n}}}var Fo=0,cn=class{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}},zo=class{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!Le||!Et||Le===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==Le)n=this.activeLink=new cn(Le,this),Le.deps?(n.prevDep=Le.depsTail,Le.depsTail.nextDep=n,Le.depsTail=n):Le.deps=Le.depsTail=n,Nr(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){let r=n.nextDep;r.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=r),n.prevDep=Le.depsTail,n.nextDep=void 0,Le.depsTail.nextDep=n,Le.depsTail=n,Le.deps===n&&(Le.deps=r)}return n}trigger(t){this.version++,Fo++,this.notify(t)}notify(t){yn();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{bn()}}};function Nr(e){if(e.dep.sc++,e.sub.flags&4){let t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)Nr(r)}let n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}var pn=new WeakMap,xt=Symbol(""),fn=Symbol(""),Ho=Symbol("");function xe(e,t,n){if(Et&&Le){let r=pn.get(e);r||pn.set(e,r=new Map);let s=r.get(n);s||(r.set(n,s=new zo),s.map=r,s.key=n),s.track()}}function Dt(e,t,n,r,s,i){let a=pn.get(e);if(!a){Fo++;return}let u=m=>{m&&m.trigger()};if(yn(),t==="clear")a.forEach(u);else{let m=be(e),h=m&&ps(n);if(m&&n==="length"){let v=Number(r);a.forEach((w,f)=>{(f==="length"||f===Ho||!mt(f)&&f>=v)&&u(w)})}else switch((n!==void 0||a.has(void 0))&&u(a.get(n)),h&&u(a.get(Ho)),t){case"add":m?h&&u(a.get("length")):(u(a.get(xt)),$t(e)&&u(a.get(fn)));break;case"delete":m||(u(a.get(xt)),$t(e)&&u(a.get(fn)));break;case"set":$t(e)&&u(a.get(xt));break}}bn()}function yo(e){let t=Re(e);return t===e?t:(xe(t,"iterate",Ho),lt(e)?t:t.map(yt))}function jo(e){return xe(e=Re(e),"iterate",Ho),e}function Nt(e,t){return Ct(e)?eo(Ut(e)?yt(t):t):yt(t)}var hd={__proto__:null,[Symbol.iterator](){return ln(this,Symbol.iterator,e=>Nt(this,e))},concat(...e){return yo(this).concat(...e.map(t=>be(t)?yo(t):t))},entries(){return ln(this,"entries",e=>(e[1]=Nt(this,e[1]),e))},every(e,t){return Lt(this,"every",e,t,void 0,arguments)},filter(e,t){return Lt(this,"filter",e,t,n=>n.map(r=>Nt(this,r)),arguments)},find(e,t){return Lt(this,"find",e,t,n=>Nt(this,n),arguments)},findIndex(e,t){return Lt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Lt(this,"findLast",e,t,n=>Nt(this,n),arguments)},findLastIndex(e,t){return Lt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Lt(this,"forEach",e,t,void 0,arguments)},includes(...e){return dn(this,"includes",e)},indexOf(...e){return dn(this,"indexOf",e)},join(e){return yo(this).join(e)},lastIndexOf(...e){return dn(this,"lastIndexOf",e)},map(e,t){return Lt(this,"map",e,t,void 0,arguments)},pop(){return Mo(this,"pop")},push(...e){return Mo(this,"push",e)},reduce(e,...t){return yr(this,"reduce",e,t)},reduceRight(e,...t){return yr(this,"reduceRight",e,t)},shift(){return Mo(this,"shift")},some(e,t){return Lt(this,"some",e,t,void 0,arguments)},splice(...e){return Mo(this,"splice",e)},toReversed(){return yo(this).toReversed()},toSorted(e){return yo(this).toSorted(e)},toSpliced(...e){return yo(this).toSpliced(...e)},unshift(...e){return Mo(this,"unshift",e)},values(){return ln(this,"values",e=>Nt(this,e))}};function ln(e,t,n){let r=jo(e),s=r[t]();return r!==e&&!lt(e)&&(s._next=s.next,s.next=()=>{let i=s._next();return i.done||(i.value=n(i.value)),i}),s}var vd=Array.prototype;function Lt(e,t,n,r,s,i){let a=jo(e),u=a!==e&&!lt(e),m=a[t];if(m!==vd[t]){let w=m.apply(e,i);return u?yt(w):w}let h=n;a!==e&&(u?h=function(w,f){return n.call(this,Nt(e,w),f,e)}:n.length>2&&(h=function(w,f){return n.call(this,w,f,e)}));let v=m.call(a,h,r);return u&&s?s(v):v}function yr(e,t,n,r){let s=jo(e),i=s!==e&&!lt(e),a=n,u=!1;s!==e&&(i?(u=r.length===0,a=function(h,v,w){return u&&(u=!1,h=Nt(e,h)),n.call(this,h,Nt(e,v),w,e)}):n.length>3&&(a=function(h,v,w){return n.call(this,h,v,w,e)}));let m=s[t](a,...r);return u?Nt(e,m):m}function dn(e,t,n){let r=Re(e);xe(r,"iterate",Ho);let s=r[t](...n);return(s===-1||s===!1)&&Wo(n[0])?(n[0]=Re(n[0]),r[t](...n)):s}function Mo(e,t,n=[]){Tt(),yn();let r=Re(e)[t].apply(e,n);return bn(),At(),r}var gd=po("__proto__,__v_isRef,__isVue"),Dr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(mt));function yd(e){mt(e)||(e=String(e));let t=Re(this);return xe(t,"has",e),t.hasOwnProperty(e)}var bs=class{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){if(n==="__v_skip")return t.__v_skip;let s=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return i;if(n==="__v_raw")return r===(s?i?Dd:Ar:i?Tr:Rr).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;let a=be(t);if(!s){let m;if(a&&(m=hd[n]))return m;if(n==="hasOwnProperty")return yd}let u=Reflect.get(t,n,Ze(t)?t:r);if((mt(n)?Dr.has(n):gd(n))||(s||xe(t,"get",n),i))return u;if(Ze(u)){let m=a&&ps(n)?u:u.value;return s&&Ae(m)?ks(m):m}return Ae(u)?s?ks(u):He(u):u}},ws=class extends bs{constructor(t=!1){super(!1,t)}set(t,n,r,s){let i=t[n],a=be(t)&&ps(n);if(!this._isShallow){let h=Ct(i);if(!lt(r)&&!Ct(r)&&(i=Re(i),r=Re(r)),!a&&Ze(i)&&!Ze(r))return h||(i.value=r),!0}let u=a?Number(n)e,vs=e=>Reflect.getPrototypeOf(e);function Ed(e,t,n){return function(...r){let s=this.__v_raw,i=Re(s),a=$t(i),u=e==="entries"||e===Symbol.iterator&&a,m=e==="keys"&&a,h=s[e](...r),v=n?hn:t?eo:yt;return!t&&xe(i,"iterate",m?fn:xt),Ge(Object.create(h),{next(){let{value:w,done:f}=h.next();return f?{value:w,done:f}:{value:u?[v(w[0]),v(w[1])]:v(w),done:f}}})}}function gs(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Cd(e,t){let n={get(s){let i=this.__v_raw,a=Re(i),u=Re(s);e||(gt(s,u)&&xe(a,"get",s),xe(a,"get",u));let{has:m}=vs(a),h=t?hn:e?eo:yt;if(m.call(a,s))return h(i.get(s));if(m.call(a,u))return h(i.get(u));i!==a&&i.get(s)},get size(){let s=this.__v_raw;return!e&&xe(Re(s),"iterate",xt),s.size},has(s){let i=this.__v_raw,a=Re(i),u=Re(s);return e||(gt(s,u)&&xe(a,"has",s),xe(a,"has",u)),s===u?i.has(s):i.has(s)||i.has(u)},forEach(s,i){let a=this,u=a.__v_raw,m=Re(u),h=t?hn:e?eo:yt;return!e&&xe(m,"iterate",xt),u.forEach((v,w)=>s.call(i,h(v),h(w),a))}};return Ge(n,e?{add:gs("add"),set:gs("set"),delete:gs("delete"),clear:gs("clear")}:{add(s){let i=Re(this),a=vs(i),u=Re(s),m=!t&&!lt(s)&&!Ct(s)?u:s;return a.has.call(i,m)||gt(s,m)&&a.has.call(i,s)||gt(u,m)&&a.has.call(i,u)||(i.add(m),Dt(i,"add",m,m)),this},set(s,i){!t&&!lt(i)&&!Ct(i)&&(i=Re(i));let a=Re(this),{has:u,get:m}=vs(a),h=u.call(a,s);h||(s=Re(s),h=u.call(a,s));let v=m.call(a,s);return a.set(s,i),h?gt(i,v)&&Dt(a,"set",s,i,v):Dt(a,"add",s,i),this},delete(s){let i=Re(this),{has:a,get:u}=vs(i),m=a.call(i,s);m||(s=Re(s),m=a.call(i,s));let h=u?u.call(i,s):void 0,v=i.delete(s);return m&&Dt(i,"delete",s,void 0,h),v},clear(){let s=Re(this),i=s.size!==0,a=void 0,u=s.clear();return i&&Dt(s,"clear",void 0,void 0,a),u}}),["keys","values","entries",Symbol.iterator].forEach(s=>{n[s]=Ed(s,e,t)}),n}function kn(e,t){let n=Cd(e,t);return(r,s,i)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(De(n,s)&&s in r?n:r,s,i)}var _d={get:kn(!1,!1)},Sd={get:kn(!1,!0)},Nd={get:kn(!0,!1)};var Rr=new WeakMap,Tr=new WeakMap,Ar=new WeakMap,Dd=new WeakMap;function Rd(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function He(e){return Ct(e)?e:En(e,!1,bd,_d,Rr)}function Go(e){return En(e,!1,kd,Sd,Tr)}function ks(e){return En(e,!0,wd,Nd,Ar)}function En(e,t,n,r,s){if(!Ae(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;let i=s.get(e);if(i)return i;let a=Rd(rn(e));if(a===0)return e;let u=new Proxy(e,a===2?r:n);return s.set(e,u),u}function Ut(e){return Ct(e)?Ut(e.__v_raw):!!(e&&e.__v_isReactive)}function Ct(e){return!!(e&&e.__v_isReadonly)}function lt(e){return!!(e&&e.__v_isShallow)}function Wo(e){return e?!!e.__v_raw:!1}function Re(e){let t=e&&e.__v_raw;return t?Re(t):e}function Cn(e){return!De(e,"__v_skip")&&Object.isExtensible(e)&&ms(e,"__v_skip",!0),e}var yt=e=>Ae(e)?He(e):e,eo=e=>Ae(e)?ks(e):e;function Ze(e){return e?e.__v_isRef===!0:!1}function et(e){return Or(e,!1)}function Cs(e){return Or(e,!0)}function Or(e,t){return Ze(e)?e:new vn(e,t)}var vn=class{constructor(t,n){this.dep=new zo,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:Re(t),this._value=n?t:yt(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){let n=this._rawValue,r=this.__v_isShallow||lt(t)||Ct(t);t=r?t:Re(t),gt(t,n)&&(this._rawValue=t,this._value=r?t:yt(t),this.dep.trigger())}};function Ft(e){return Ze(e)?e.value:e}var Td={get:(e,t,n)=>t==="__v_raw"?e:Ft(Reflect.get(e,t,n)),set:(e,t,n,r)=>{let s=e[t];return Ze(s)&&!Ze(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function _s(e){return Ut(e)?e:new Proxy(e,Td)}var gn=class{constructor(t,n,r){this.fn=t,this.setter=n,this._value=void 0,this.dep=new zo(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Fo-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=r}notify(){if(this.flags|=16,!(this.flags&8)&&Le!==this)return kr(this,!0),!0}get value(){let t=this.dep.track();return _r(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}};function Ir(e,t,n=!1){let r,s;return we(e)?r=e:(r=e.get,s=e.set),new gn(r,s,n)}var ys={},Es=new WeakMap,Zt;function Pr(e,t=!1,n=Zt){if(n){let r=Es.get(n);r||Es.set(n,r=[]),r.push(e)}}function Vr(e,t,n=Ie){let{immediate:r,deep:s,once:i,scheduler:a,augmentJob:u,call:m}=n,h=O=>{(n.onWarn||fd)("Invalid watch source: ",O,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},v=O=>s?O:lt(O)||s===!1||s===0?Rt(O,1):Rt(O),w,f,b,C,k=!1,R=!1;if(Ze(e)?(f=()=>e.value,k=lt(e)):Ut(e)?(f=()=>v(e),k=!0):be(e)?(R=!0,k=e.some(O=>Ut(O)||lt(O)),f=()=>e.map(O=>{if(Ze(O))return O.value;if(Ut(O))return v(O);if(we(O))return m?m(O,2):O()})):we(e)?t?f=m?()=>m(e,2):e:f=()=>{if(b){Tt();try{b()}finally{At()}}let O=Zt;Zt=w;try{return m?m(e,3,[C]):e(C)}finally{Zt=O}}:f=at,t&&s){let O=f,I=s===!0?1/0:s;f=()=>Rt(O(),I)}let D=br(),T=()=>{w.stop(),D&&D.active&&Oo(D.effects,w)};if(i&&t){let O=t;t=(...I)=>{let J=O(...I);return T(),J}}let V=R?new Array(e.length).fill(ys):ys,_=O=>{if(!(!(w.flags&1)||!w.dirty&&!O))if(t){let I=w.run();if(O||s||k||(R?I.some((J,Y)=>gt(J,V[Y])):gt(I,V))){b&&b();let J=Zt;Zt=w;try{let Y=[I,V===ys?void 0:R&&V[0]===ys?[]:V,C];V=I,m?m(t,3,Y):t(...Y)}finally{Zt=J}}}else w.run()};return u&&u(_),w=new bo(f),w.scheduler=a?()=>a(_,!1):_,C=O=>Pr(O,!1,w),b=w.onStop=()=>{let O=Es.get(w);if(O){if(m)m(O,4);else for(let I of O)I();Es.delete(w)}},t?r?_(!0):V=w.run():a?a(_.bind(null,!0),!0):w.run(),T.pause=w.pause.bind(w),T.resume=w.resume.bind(w),T.stop=T,T}function Rt(e,t=1/0,n){if(t<=0||!Ae(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,Ze(e))Rt(e.value,t,n);else if(be(e))for(let r=0;r{Rt(r,t,n)});else if(cs(e)){for(let r in e)Rt(e[r],t,n);for(let r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&Rt(e[r],t,n)}return e}function os(e,t,n,r){try{return r?e(...r):e()}catch(s){ss(s,t,n)}}function bt(e,t,n,r){if(we(e)){let s=os(e,t,n,r);return s&&nn(s)&&s.catch(i=>{ss(i,t,n)}),s}if(be(e)){let s=[];for(let i=0;i>>1,s=nt[r],i=xo(s);i=xo(n)?nt.push(e):nt.splice(Vd(t),0,e),e.flags|=1,Zr()}}function Zr(){Ds||(Ds=Xr.then(ti))}function xr(e){if(!be(e))Yt&&e.id===-1?Yt.splice(wo+1,0,e):e.flags&1||(ko.push(e),e.flags|=1);else for(let t=0;txo(n)-xo(r));if(ko.length=0,Yt){for(let n=0;ne.id==null?e.flags&2?-1:1/0:e.id;function ti(e){let t=at;try{for(It=0;It{r._d&&Os(-1);let i=Rs(t),a=so.length,u;try{u=e(...s)}finally{for(let m=so.length;m>a;m--)Oi();Rs(i),r._d&&Os(1)}return u};return r._n=!0,r._c=!0,r._d=!0,r}function N(e,t){if(ht===null)return e;let n=zs(ht),r=e.dirs||(e.dirs=[]);for(let s=0;s1)return n&&we(t)?t.call(r&&r.proxy):t}}var Md=Symbol.for("v-scx"),$d=()=>{{let e=ut(Md);return e}};function Be(e,t,n){return si(e,t,n)}function si(e,t,n=Ie){let{immediate:r,deep:s,flush:i,once:a}=n,u=Ge({},n),m=t&&r||!t&&i!=="post",h;if(_o){if(i==="sync"){let b=$d();h=b.__watcherHandles||(b.__watcherHandles=[])}else if(!m){let b=()=>{};return b.stop=at,b.resume=at,b.pause=at,b}}let v=tt;u.call=(b,C,k)=>bt(b,v,C,k);let w=!1;i==="post"?u.scheduler=b=>{dt(b,v&&v.suspense)}:i!=="sync"&&(w=!0,u.scheduler=(b,C)=>{C?b():In(b)}),u.augmentJob=b=>{t&&(b.flags|=4),w&&(b.flags|=2,v&&(b.id=v.uid,b.i=v))};let f=Vr(e,t,u);return _o&&(h?h.push(f):m&&f()),f}function Ld(e,t,n){let r=this.proxy,s=ze(e)?e.includes(".")?ni(r,e):()=>r[e]:e.bind(r,r),i;we(t)?i=t:(i=t.handler,n=t);let a=is(this),u=si(s,i.bind(r),n);return a(),u}function ni(e,t){let n=t.split(".");return()=>{let r=e;for(let s=0;se.__isTeleport;var _n=Symbol("_leaveCb");function Fd(e){let t=e[0];if(e.length>1){let n=!1;for(let r of e)if(r.type!==Ht){t=r,n=!0;break}}return t}function ri(e){if(!$s(e))return qs(e.type)&&e.children?Fd(e.children):e;if(e.component)return e.component.subTree;let{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&we(n.default))return n.default()}}function Ms(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;let n=e.component.subTree;Ms(qs(n.type)&&ri(n)||n,t)}else e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function ns(e,t){return we(e)?Ge({name:e.name},t,{setup:e}):e}function Pn(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function Mr(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}var Ts=new WeakMap;function Jo(e,t,n,r,s=!1){if(be(e)){e.forEach((k,R)=>Jo(k,t&&(be(t)?t[R]:t),n,r,s));return}if(Qo(r)&&!s){r.shapeFlag&512&&r.type.__asyncResolved&&r.component.subTree.component&&Jo(e,t,n,r.component.subTree);return}let i=r.shapeFlag&4?zs(r.component):r.el,a=s?null:i,{i:u,r:m}=e,h=t&&t.r,v=u.refs===Ie?u.refs={}:u.refs,w=u.setupState,f=Re(w),b=w===Ie?sn:k=>Mr(v,k)?!1:De(f,k),C=(k,R)=>!(R&&Mr(v,R));if(h!=null&&h!==m){if($r(t),ze(h))v[h]=null,b(h)&&(w[h]=null);else if(Ze(h)){let k=t;C(h,k.k)&&(h.value=null),k.k&&(v[k.k]=null)}}if(we(m))os(m,u,12,[a,v]);else{let k=ze(m),R=Ze(m);if(k||R){let D=()=>{if(e.f){let T=k?b(m)?w[m]:v[m]:C(m)||!e.k?m.value:v[e.k];if(s)be(T)&&Oo(T,i);else if(be(T))T.includes(i)||T.push(i);else if(k)v[m]=[i],b(m)&&(w[m]=v[m]);else{let V=[i];C(m,e.k)&&(m.value=V),e.k&&(v[e.k]=V)}}else k?(v[m]=a,b(m)&&(w[m]=a)):R&&(C(m,e.k)&&(m.value=a),e.k&&(v[e.k]=a))};if(a){let T=()=>{D(),Ts.delete(e)};T.id=-1,Ts.set(e,T),dt(T,n)}else $r(e),D()}}}function $r(e){let t=Ts.get(e);t&&(t.flags|=8,Ts.delete(e))}var Lr=e=>e.nodeType===8;var W8=qo().requestIdleCallback||(e=>setTimeout(e,1)),K8=qo().cancelIdleCallback||(e=>clearTimeout(e));function zd(e,t){if(Lr(e)&&e.data==="["){let n=1,r=e.nextSibling;for(;r;){if(r.nodeType===1){if(t(r)===!1)break}else if(Lr(r))if(r.data==="]"){if(--n===0)break}else r.data==="["&&n++;r=r.nextSibling}}else t(e)}var Qo=e=>!!e.type.__asyncLoader;function ii(e){we(e)&&(e={loader:e});let{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,hydrate:i,timeout:a,suspensible:u=!0,onError:m}=e,h=null,v,w=0,f=()=>(w++,h=null,b()),b=()=>{let C;return h||(C=h=t().catch(k=>{if(k=k instanceof Error?k:new Error(String(k)),m)return new Promise((R,D)=>{m(k,()=>R(f()),()=>D(k),w+1)});throw k}).then(k=>C!==h&&h?h:(k&&(k.__esModule||k[Symbol.toStringTag]==="Module")&&(k=k.default),v=k,k)))};return ns({name:"AsyncComponentWrapper",__asyncLoader:b,__asyncHydrate(C,k,R){let D=C.isConnected,T=!1;(k.bu||(k.bu=[])).push(()=>T=!0);let V=()=>{T||!C.parentNode||D&&!C.isConnected||R()},_=i?()=>{let O=i(V,I=>zd(C,I));O&&(k.bum||(k.bum=[])).push(O)}:V;v?_():b().then(()=>!k.isUnmounted&&_())},get __asyncResolved(){return v},setup(){let C=tt;if(Pn(C),v)return()=>Ss(v,C);let k=O=>{h=null,ss(O,C,13,!r)};if(u&&C.suspense||_o)return b().then(O=>()=>Ss(O,C)).catch(O=>(k(O),()=>r?_e(r,{error:O}):null));let R=et(!1),D=et(),T=et(!!s),V,_;return rs(()=>{V!=null&&clearTimeout(V),_!=null&&clearTimeout(_)}),s&&(_=setTimeout(()=>{C.isUnmounted||(T.value=!1)},s)),a!=null&&(V=setTimeout(()=>{if(!C.isUnmounted&&!R.value&&!D.value){let O=new Error(`Async component timed out after ${a}ms.`);k(O),D.value=O}},a)),b().then(()=>{C.isUnmounted||(R.value=!0,C.parent&&$s(C.parent.vnode)&&C.parent.update())}).catch(O=>{if(C.isUnmounted){h=null;return}k(O),D.value=O}),()=>{if(R.value&&v)return Ss(v,C);if(D.value&&r)return _e(r,{error:D.value});if(n&&!T.value)return Ss(n,C)}}})}function Ss(e,t){let{ref:n,props:r,children:s,ce:i}=t.vnode,a=_e(e,r,s);return a.ref=n,a.ce=i,delete t.vnode.ce,a}var $s=e=>e.type.__isKeepAlive;function ai(e,t){di(e,"a",t)}function li(e,t){di(e,"da",t)}function di(e,t,n=tt){let r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(Ls(t,r,n),n){let s=n.parent;for(;s&&s.parent;)$s(s.parent.vnode)&&Hd(r,t,n,s),s=s.parent}}function Hd(e,t,n,r){let s=Ls(t,e,r,!0);rs(()=>{Oo(r[t],s)},n)}function Ls(e,t,n=tt,r=!1){if(n){let s=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...a)=>{Tt();let u=is(n),m=bt(t,n,e,a);return u(),At(),m});return r?s.unshift(i):s.push(i),i}}var Bt=e=>(t,n=tt)=>{(!_o||e==="sp")&&Ls(e,(...r)=>t(...r),n)},Bd=Bt("bm"),Vt=Bt("m"),ui=Bt("bu"),ci=Bt("u"),ro=Bt("bum"),rs=Bt("um"),jd=Bt("sp"),Gd=Bt("rtg"),Wd=Bt("rtc");function Kd(e,t=tt){Ls("ec",e,t)}var pi="components",Yd="directives";function We(e,t){return fi(pi,e,!0,t)||e}var Jd=Symbol.for("v-ndc");function ye(e){return fi(Yd,e)}function fi(e,t,n=!0,r=!1){let s=ht||tt;if(s){let i=s.type;if(e===pi){let u=Iu(i,!1);if(u&&(u===t||u===Je(t)||u===Xt(Je(t))))return i}let a=Ur(s[e]||i[e],t)||Ur(s.appContext[e],t);return!a&&r?i:a}}function Ur(e,t){return e&&(e[t]||e[Je(t)]||e[Xt(Je(t))])}function se(e,t,n,r){let s,i=n&&n[r],a=be(e);if(a||ze(e)){let u=a&&Ut(e),m=!1,h=!1;u&&(m=!lt(e),h=Ct(e),e=jo(e)),s=new Array(e.length);for(let v=0,w=e.length;vt(u,m,void 0,i&&i[m]));else{let u=Object.keys(e);s=new Array(u.length);for(let m=0,h=u.length;me?Vi(e)?zs(e):Rn(e.parent):null;var Xo=Ge(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Rn(e.parent),$root:e=>Rn(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Vn(e),$forceUpdate:e=>e.f||(e.f=()=>{In(e.update)}),$nextTick:e=>e.n||(e.n=rt.bind(e.proxy)),$watch:e=>Ld.bind(e)});var Sn=(e,t)=>e!==Ie&&!e.__isScriptSetup&&De(e,t),Qd={get({_:e},t){if(t==="__v_skip")return!0;let{ctx:n,setupState:r,data:s,props:i,accessCache:a,type:u,appContext:m}=e;if(t[0]!=="$"){let f=a[t];if(f!==void 0)switch(f){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return i[t]}else{if(Sn(r,t))return a[t]=1,r[t];if(s!==Ie&&De(s,t))return a[t]=2,s[t];if(De(i,t))return a[t]=3,i[t];if(n!==Ie&&De(n,t))return a[t]=4,n[t];Tn&&(a[t]=0)}}let h=Xo[t],v,w;if(h)return t==="$attrs"&&xe(e.attrs,"get",""),h(e);if((v=u.__cssModules)&&(v=v[t]))return v;if(n!==Ie&&De(n,t))return a[t]=4,n[t];if(w=m.config.globalProperties,De(w,t))return w[t]},set({_:e},t,n){let{data:r,setupState:s,ctx:i}=e;return Sn(s,t)?(s[t]=n,!0):r!==Ie&&De(r,t)?(r[t]=n,!0):De(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,props:i,type:a}},u){let m;return!!(n[u]||e!==Ie&&u[0]!=="$"&&De(e,u)||Sn(t,u)||De(i,u)||De(r,u)||De(Xo,u)||De(s.config.globalProperties,u)||(m=a.__cssModules)&&m[u])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:De(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Fr(e){return be(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}var Tn=!0;function Xd(e){let t=Vn(e),n=e.proxy,r=e.ctx;Tn=!1,t.beforeCreate&&zr(t.beforeCreate,e,"bc");let{data:s,computed:i,methods:a,watch:u,provide:m,inject:h,created:v,beforeMount:w,mounted:f,beforeUpdate:b,updated:C,activated:k,deactivated:R,beforeDestroy:D,beforeUnmount:T,destroyed:V,unmounted:_,render:O,renderTracked:I,renderTriggered:J,errorCaptured:Y,serverPrefetch:K,expose:B,inheritAttrs:ae,components:oe,directives:ne,filters:ue}=t;if(h&&Zd(h,r,null),a)for(let me in a){let ie=a[me];we(ie)&&(r[me]=ie.bind(n))}if(s){let me=s.call(n,n);Ae(me)&&(e.data=He(me))}if(Tn=!0,i)for(let me in i){let ie=i[me],Pe=we(ie)?ie.bind(n,n):we(ie.get)?ie.get.bind(n,n):at,Ee=!we(ie)&&we(ie.set)?ie.set.bind(n):at,Se=ot({get:Pe,set:Ee});Object.defineProperty(r,me,{enumerable:!0,configurable:!0,get:()=>Se.value,set:Ce=>Se.value=Ce})}if(u)for(let me in u)mi(u[me],r,n,me);if(m){let me=we(m)?m.call(n):m;Reflect.ownKeys(me).forEach(ie=>{no(ie,me[ie])})}v&&zr(v,e,"c");function ve(me,ie){be(ie)?ie.forEach(Pe=>me(Pe.bind(n))):ie&&me(ie.bind(n))}if(ve(Bd,w),ve(Vt,f),ve(ui,b),ve(ci,C),ve(ai,k),ve(li,R),ve(Kd,Y),ve(Wd,I),ve(Gd,J),ve(ro,T),ve(rs,_),ve(jd,K),be(B))if(B.length){let me=e.exposed||(e.exposed={});B.forEach(ie=>{Object.defineProperty(me,ie,{get:()=>n[ie],set:Pe=>n[ie]=Pe,enumerable:!0})})}else e.exposed||(e.exposed={});O&&e.render===at&&(e.render=O),ae!=null&&(e.inheritAttrs=ae),oe&&(e.components=oe),ne&&(e.directives=ne),K&&Pn(e)}function Zd(e,t,n=at){be(e)&&(e=An(e));for(let r in e){let s=e[r],i;Ae(s)?"default"in s?i=ut(s.from||r,s.default,!0):i=ut(s.from||r):i=ut(s),Ze(i)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>i.value,set:a=>i.value=a}):t[r]=i}}function zr(e,t,n){bt(be(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function mi(e,t,n,r){let s=r.includes(".")?ni(n,r):()=>n[r];if(ze(e)){let i=t[e];we(i)&&Be(s,i)}else if(we(e))Be(s,e.bind(n));else if(Ae(e))if(be(e))e.forEach(i=>mi(i,t,n,r));else{let i=we(e.handler)?e.handler.bind(n):t[e.handler];we(i)&&Be(s,i,e)}}function Vn(e){let t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:i,config:{optionMergeStrategies:a}}=e.appContext,u=i.get(t),m;return u?m=u:!s.length&&!n&&!r?m=t:(m={},s.length&&s.forEach(h=>As(m,h,a,!0)),As(m,t,a)),Ae(t)&&i.set(t,m),m}function As(e,t,n,r=!1){let{mixins:s,extends:i}=t;i&&As(e,i,n,!0),s&&s.forEach(a=>As(e,a,n,!0));for(let a in t)if(!(r&&a==="expose")){let u=xd[a]||n&&n[a];e[a]=u?u(e[a],t[a]):t[a]}return e}var xd={data:Hr,props:Br,emits:Br,methods:Yo,computed:Yo,beforeCreate:st,created:st,beforeMount:st,mounted:st,beforeUpdate:st,updated:st,beforeDestroy:st,beforeUnmount:st,destroyed:st,unmounted:st,activated:st,deactivated:st,errorCaptured:st,serverPrefetch:st,components:Yo,directives:Yo,watch:tu,provide:Hr,inject:eu};function Hr(e,t){return t?e?function(){return Ge(we(e)?e.call(this,this):e,we(t)?t.call(this,this):t)}:t:e}function eu(e,t){return Yo(An(e),An(t))}function An(e){if(be(e)){let t={};for(let n=0;nt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Je(t)}Modifiers`]||e[`${St(t)}Modifiers`];function ru(e,t,...n){if(e.isUnmounted)return;let r=e.vnode.props||Ie,s=n,i=t.startsWith("update:"),a=i&&nu(r,t.slice(7));a&&(a.trim&&(s=n.map(v=>ze(v)?v.trim():v)),a.number&&(s=s.map(Vo)));let u,m=r[u=Po(t)]||r[u=Po(Je(t))];!m&&i&&(m=r[u=Po(St(t))]),m&&bt(m,e,6,s);let h=r[u+"Once"];if(h){if(!e.emitted)e.emitted={};else if(e.emitted[u])return;e.emitted[u]=!0,bt(h,e,6,s)}}var iu=new WeakMap;function vi(e,t,n=!1){let r=n?iu:t.emitsCache,s=r.get(e);if(s!==void 0)return s;let i=e.emits,a={},u=!1;if(!we(e)){let m=h=>{let v=vi(h,t,!0);v&&(u=!0,Ge(a,v))};!n&&t.mixins.length&&t.mixins.forEach(m),e.extends&&m(e.extends),e.mixins&&e.mixins.forEach(m)}return!i&&!u?(Ae(e)&&r.set(e,null),null):(be(i)?i.forEach(m=>a[m]=null):Ge(a,i),Ae(e)&&r.set(e,a),a)}function Us(e,t){return!e||!fo(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),De(e,t[0].toLowerCase()+t.slice(1))||De(e,St(t))||De(e,t))}function Nn(e){let{type:t,vnode:n,proxy:r,withProxy:s,propsOptions:[i],slots:a,attrs:u,emit:m,render:h,renderCache:v,props:w,data:f,setupState:b,ctx:C,inheritAttrs:k}=e,R=Rs(e),D,T;try{if(n.shapeFlag&4){let O=s||r,I=O;D=Pt(h.call(I,O,v,w,b,f,C)),T=u}else{let O=t;D=Pt(O.length>1?O(w,{attrs:u,slots:a,emit:m}):O(w,null)),T=t.props?u:au(u)}}catch(O){so.length=0,ss(O,e,1),D=_e(Ht)}let V=D,_;if(T&&k!==!1){let O=Object.keys(T),{shapeFlag:I}=V;O.length&&I&7&&(i&&O.some(mo)&&(T=lu(T,i)),V=Co(V,T,!1,!0))}if(n.dirs&&(V=Co(V,null,!1,!0),V.dirs=V.dirs?V.dirs.concat(n.dirs):n.dirs),n.transition){let O=qs(V.type)&&ri(V)||V;Ms(O,n.transition)}return D=V,Rs(R),D}var au=e=>{let t;for(let n in e)(n==="class"||n==="style"||fo(n))&&((t||(t={}))[n]=e[n]);return t},lu=(e,t)=>{let n={};for(let r in e)(!mo(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function du(e,t,n){let{props:r,children:s,component:i}=e,{props:a,children:u,patchFlag:m}=t,h=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&m>=0){if(m&1024)return!0;if(m&16)return r?jr(r,a,h):!!a;if(m&8){let v=t.dynamicProps;for(let w=0;wObject.create(yi),wi=e=>Object.getPrototypeOf(e)===yi;function cu(e,t,n,r=!1){let s={},i=bi();e.propsDefaults=Object.create(null),ki(e,t,s,i);for(let a in e.propsOptions[0])a in s||(s[a]=void 0);n?e.props=r?s:Go(s):e.type.props?e.props=s:e.props=i,e.attrs=i}function pu(e,t,n,r){let{props:s,attrs:i,vnode:{patchFlag:a}}=e,u=Re(s),[m]=e.propsOptions,h=!1;if((r||a>0)&&!(a&16)){if(a&8){let v=e.vnode.dynamicProps;for(let w=0;w{m=!0;let[f,b]=Ei(w,t,!0);Ge(a,f),b&&u.push(...b)};!n&&t.mixins.length&&t.mixins.forEach(v),e.extends&&v(e.extends),e.mixins&&e.mixins.forEach(v)}if(!i&&!m)return Ae(e)&&r.set(e,Qt),Qt;if(be(i))for(let v=0;ve==="_"||e==="_ctx"||e==="$stable",Mn=e=>be(e)?e.map(Pt):[Pt(e)],mu=(e,t,n)=>{if(t._n)return t;let r=qd((...s)=>Mn(t(...s)),n);return r._c=!1,r},Ci=(e,t,n)=>{let r=e._ctx;for(let s in e){if(qn(s))continue;let i=e[s];if(we(i))t[s]=mu(s,i,r);else if(i!=null){let a=Mn(i);t[s]=()=>a}}},_i=(e,t)=>{let n=Mn(t);e.slots.default=()=>n},Si=(e,t,n)=>{for(let r in t)(n||!qn(r))&&(e[r]=t[r])},hu=(e,t,n)=>{let r=e.slots=bi();if(e.vnode.shapeFlag&32){let s=t._;s?(Si(r,t,n),n&&ms(r,"_",s,!0)):Ci(t,r)}else t&&_i(e,t)},vu=(e,t,n)=>{let{vnode:r,slots:s}=e,i=!0,a=Ie;if(r.shapeFlag&32){let u=t._;u?n&&u===1?i=!1:Si(s,t,n):(i=!t.$stable,Ci(t,s)),a=t}else t&&(_i(e,t),a={default:1});if(i)for(let u in s)!qn(u)&&a[u]==null&&delete s[u]};function gu(){let e=[]}var dt=ku;function Ni(e){return yu(e)}function yu(e,t){gu();let n=qo();n.__VUE__=!0;let{insert:r,remove:s,patchProp:i,createElement:a,createText:u,createComment:m,setText:h,setElementText:v,parentNode:w,nextSibling:f,setScopeId:b=at,insertStaticContent:C}=e,k=(y,S,q,H=null,j=null,L=null,X=void 0,x=null,Z=!!S.dynamicChildren)=>{if(y===S)return;y&&!Ko(y,S)&&(H=te(y),Te(y,j,L,!0),y=null),S.patchFlag===-2&&(Z=!1,S.dynamicChildren=null);let{type:G,ref:de,shapeFlag:ee}=S;switch(G){case Fs:R(y,S,q,H);break;case Ht:D(y,S,q,H);break;case Zo:y==null&&T(S,q,H,X);break;case Q:ne(y,S,q,H,j,L,X,x,Z);break;default:ee&1?I(y,S,q,H,j,L,X,x,Z):ee&6?ue(y,S,q,H,j,L,X,x,Z):(ee&64||ee&128)&&G.process(y,S,q,H,j,L,X,x,Z,P)}de!=null&&j?Jo(de,y&&y.ref,L,S||y,!S):de==null&&y&&y.ref!=null&&Jo(y.ref,null,L,y,!0)},R=(y,S,q,H)=>{if(y==null)r(S.el=u(S.children),q,H);else{let j=S.el=y.el;S.children!==y.children&&h(j,S.children)}},D=(y,S,q,H)=>{y==null?r(S.el=m(S.children||""),q,H):S.el=y.el},T=(y,S,q,H)=>{[y.el,y.anchor]=C(y.children,S,q,H,y.el,y.anchor)},V=(y,S,q,H)=>{if(S.children!==y.children){let j=f(y.anchor);O(y),[S.el,S.anchor]=C(S.children,q,j,H)}else S.el=y.el,S.anchor=y.anchor},_=({el:y,anchor:S},q,H)=>{let j;for(;y&&y!==S;)j=f(y),r(y,q,H),y=j;r(S,q,H)},O=({el:y,anchor:S})=>{let q;for(;y&&y!==S;)q=f(y),s(y),y=q;s(S)},I=(y,S,q,H,j,L,X,x,Z)=>{if(S.type==="svg"?X="svg":S.type==="math"&&(X="mathml"),y==null)J(S,q,H,j,L,X,x,Z);else{let G=y.el&&y.el._isVueCE?y.el:null;try{G&&G._beginPatch(),B(y,S,j,L,X,x,Z)}finally{G&&G._endPatch()}}},J=(y,S,q,H,j,L,X,x)=>{let Z,G,{props:de,shapeFlag:ee,transition:re,dirs:ge}=y;if(Z=y.el=a(y.type,L,de&&de.is,de),ee&8?v(Z,y.children):ee&16&&K(y.children,Z,null,H,j,Dn(y,L),X,x),ge&&to(y,null,H,"created"),Y(Z,y,y.scopeId,X,H),de){for(let $e in de)$e!=="value"&&!ho($e)&&i(Z,$e,null,de[$e],L,H);"value"in de&&i(Z,"value",null,de.value,L),(G=de.onVnodeBeforeMount)&&Ot(G,H,y)}ge&&to(y,null,H,"beforeMount");let Ne=bu(j,re);Ne&&re.beforeEnter(Z),r(Z,S,q),((G=de&&de.onVnodeMounted)||Ne||ge)&&dt(()=>{let qe;try{G&&Ot(G,H,y),Ne&&re.enter(Z),ge&&to(y,null,H,"mounted")}finally{}},j)},Y=(y,S,q,H,j)=>{if(q&&b(y,q),H)for(let L=0;L{for(let G=Z;G{let x=S.el=y.el,{patchFlag:Z,dynamicChildren:G,dirs:de}=S;Z|=y.patchFlag&16;let ee=y.props||Ie,re=S.props||Ie,ge;if(q&&oo(q,!1),(ge=re.onVnodeBeforeUpdate)&&Ot(ge,q,S,y),de&&to(S,y,q,"beforeUpdate"),q&&oo(q,!0),G&&(!y.dynamicChildren||y.dynamicChildren.length!==G.length)&&(Z=0,X=!1,G=null),(ee.innerHTML&&re.innerHTML==null||ee.textContent&&re.textContent==null)&&v(x,""),G?ae(y.dynamicChildren,G,x,q,H,Dn(S,j),L):X||Pe(y,S,x,null,q,H,Dn(S,j),L,!1),Z>0){if(Z&16)oe(x,ee,re,q,j);else if(Z&2&&ee.class!==re.class&&i(x,"class",null,re.class,j),Z&4&&i(x,"style",ee.style,re.style,j),Z&8){let Ne=S.dynamicProps;for(let $e=0;$e{ge&&Ot(ge,q,S,y),de&&to(S,y,q,"updated")},H)},ae=(y,S,q,H,j,L,X)=>{for(let x=0;x{if(S!==q){if(S!==Ie)for(let L in S)!ho(L)&&!(L in q)&&i(y,L,S[L],null,j,H);for(let L in q){if(ho(L))continue;let X=q[L],x=S[L];X!==x&&L!=="value"&&i(y,L,x,X,j,H)}"value"in q&&i(y,"value",S.value,q.value,j)}},ne=(y,S,q,H,j,L,X,x,Z)=>{let G=S.el=y?y.el:u(""),de=S.anchor=y?y.anchor:u(""),{patchFlag:ee,dynamicChildren:re,slotScopeIds:ge}=S;ge&&(x=x?x.concat(ge):ge),y==null?(r(G,q,H),r(de,q,H),K(S.children||[],q,de,j,L,X,x,Z)):ee>0&&ee&64&&re&&y.dynamicChildren&&y.dynamicChildren.length===re.length?(ae(y.dynamicChildren,re,q,j,L,X,x),(S.key!=null||j&&S===j.subTree)&&Di(y,S,!0)):Pe(y,S,q,de,j,L,X,x,Z)},ue=(y,S,q,H,j,L,X,x,Z)=>{S.slotScopeIds=x,y==null?S.shapeFlag&512?j.ctx.activate(S,q,H,X,Z):he(S,q,H,j,L,X,Z):ve(y,S,Z)},he=(y,S,q,H,j,L,X)=>{let x=y.component=Du(y,H,j);if($s(y)&&(x.ctx.renderer=P),Ru(x,!1,X),x.asyncDep){if(j&&j.registerDep(x,me,X),!y.el){let Z=x.subTree=_e(Ht);D(null,Z,S,q),y.placeholder=Z.el}}else me(x,y,S,q,j,L,X)},ve=(y,S,q)=>{let H=S.component=y.component;if(du(y,S,q))if(H.asyncDep&&!H.asyncResolved){ie(H,S,q);return}else H.next=S,H.update();else S.el=y.el,H.vnode=S},me=(y,S,q,H,j,L,X)=>{let x=()=>{if(y.isMounted){let{next:ee,bu:re,u:ge,parent:Ne,vnode:$e}=y;{let pt=Ri(y);if(pt){ee&&(ee.el=$e.el,ie(y,ee,X)),pt.asyncDep.then(()=>{dt(()=>{y.isUnmounted||G()},j)});return}}let qe=ee,Ke;oo(y,!1),ee?(ee.el=$e.el,ie(y,ee,X)):ee=$e,re&&vo(re),(Ke=ee.props&&ee.props.onVnodeBeforeUpdate)&&Ot(Ke,Ne,ee,$e),oo(y,!0);let Ye=Nn(y),kt=y.subTree;y.subTree=Ye,k(kt,Ye,w(kt.el),te(kt),y,j,L),ee.el=Ye.el,qe===null&&uu(y,Ye.el),ge&&dt(ge,j),(Ke=ee.props&&ee.props.onVnodeUpdated)&&dt(()=>Ot(Ke,Ne,ee,$e),j)}else{let ee,{el:re,props:ge}=S,{bm:Ne,m:$e,parent:qe,root:Ke,type:Ye}=y,kt=Qo(S);if(oo(y,!1),Ne&&vo(Ne),!kt&&(ee=ge&&ge.onVnodeBeforeMount)&&Ot(ee,qe,S),oo(y,!0),re&&z){let pt=()=>{y.subTree=Nn(y),z(re,y.subTree,y,j,null)};kt&&Ye.__asyncHydrate?Ye.__asyncHydrate(re,y,pt):pt()}else{Ke.ce&&Ke.ce._hasShadowRoot()&&Ke.ce._injectChildStyle(Ye,y.parent?y.parent.type:void 0);let pt=y.subTree=Nn(y);k(null,pt,q,H,y,j,L),S.el=pt.el}if($e&&dt($e,j),!kt&&(ee=ge&&ge.onVnodeMounted)){let pt=S;dt(()=>Ot(ee,qe,pt),j)}(S.shapeFlag&256||qe&&Qo(qe.vnode)&&qe.vnode.shapeFlag&256)&&y.a&&dt(y.a,j),y.isMounted=!0,S=q=H=null}};y.scope.on();let Z=y.effect=new bo(x);y.scope.off();let G=y.update=Z.run.bind(Z),de=y.job=Z.runIfDirty.bind(Z);de.i=y,de.id=y.uid,Z.scheduler=()=>In(de),oo(y,!0),G()},ie=(y,S,q)=>{S.component=y;let H=y.vnode.props;y.vnode=S,y.next=null,pu(y,S.props,H,q),vu(y,S.children,q),Tt(),qr(y),At()},Pe=(y,S,q,H,j,L,X,x,Z=!1)=>{let G=y&&y.children,de=y?y.shapeFlag:0,ee=S.children,{patchFlag:re,shapeFlag:ge}=S;if(re>0){if(re&128){Se(G,ee,q,H,j,L,X,x,Z);return}else if(re&256){Ee(G,ee,q,H,j,L,X,x,Z);return}}ge&8?(de&16&&U(G,j,L),ee!==G&&v(q,ee)):de&16?ge&16?Se(G,ee,q,H,j,L,X,x,Z):U(G,j,L,!0):(de&8&&v(q,""),ge&16&&K(ee,q,H,j,L,X,x,Z))},Ee=(y,S,q,H,j,L,X,x,Z)=>{y=y||Qt,S=S||Qt;let G=y.length,de=S.length,ee=Math.min(G,de),re;for(re=0;rede?U(y,j,L,!0,!1,ee):K(S,q,H,j,L,X,x,Z,ee)},Se=(y,S,q,H,j,L,X,x,Z)=>{let G=0,de=S.length,ee=y.length-1,re=de-1;for(;G<=ee&&G<=re;){let ge=y[G],Ne=S[G]=Z?zt(S[G]):Pt(S[G]);if(Ko(ge,Ne))k(ge,Ne,q,null,j,L,X,x,Z);else break;G++}for(;G<=ee&&G<=re;){let ge=y[ee],Ne=S[re]=Z?zt(S[re]):Pt(S[re]);if(Ko(ge,Ne))k(ge,Ne,q,null,j,L,X,x,Z);else break;ee--,re--}if(G>ee){if(G<=re){let ge=re+1,Ne=gere)for(;G<=ee;)Te(y[G],j,L,!0),G++;else{let ge=G,Ne=G,$e=new Map;for(G=Ne;G<=re;G++){let ft=S[G]=Z?zt(S[G]):Pt(S[G]);ft.key!=null&&$e.set(ft.key,G)}let qe,Ke=0,Ye=re-Ne+1,kt=!1,pt=0,Ao=new Array(Ye);for(G=0;G=Ye){Te(ft,j,L,!0);continue}let _t;if(ft.key!=null)_t=$e.get(ft.key);else for(qe=Ne;qe<=re;qe++)if(Ao[qe-Ne]===0&&Ko(ft,S[qe])){_t=qe;break}_t===void 0?Te(ft,j,L,!0):(Ao[_t-Ne]=G+1,_t>=pt?pt=_t:kt=!0,k(ft,S[_t],q,null,j,L,X,x,Z),Ke++)}let rr=kt?wu(Ao):Qt;for(qe=rr.length-1,G=Ye-1;G>=0;G--){let ft=Ne+G,_t=S[ft],ir=S[ft+1],ar=ft+1{let{el:L,type:X,transition:x,children:Z,shapeFlag:G}=y;if(G&6){Ce(y.component.subTree,S,q,H);return}if(G&128){y.suspense.move(S,q,H);return}if(G&64){X.move(y,S,q,P);return}if(X===Q){r(L,S,q);for(let ee=0;eex.enter(L),j));else{let{leave:ee,delayLeave:re,afterLeave:ge}=x,Ne=()=>{y.ctx.isUnmounted?s(L):r(L,S,q)},$e=()=>{let qe=L._isLeaving||!!L[_n];L._isLeaving&&L[_n](!0),x.persisted&&!qe?Ne():ee(L,()=>{Ne(),ge&&ge()})};re?re(L,Ne,$e):$e()}else r(L,S,q)},Te=(y,S,q,H=!1,j=!1)=>{let{type:L,props:X,ref:x,children:Z,dynamicChildren:G,shapeFlag:de,patchFlag:ee,dirs:re,cacheIndex:ge,memo:Ne}=y;if(ee===-2&&(j=!1),x!=null&&(Tt(),Jo(x,null,q,y,!0),At()),ge!=null&&(S.renderCache[ge]=void 0),de&256){S.ctx.deactivate(y);return}let $e=de&1&&re,qe=!Qo(y),Ke;if(qe&&(Ke=X&&X.onVnodeBeforeUnmount)&&Ot(Ke,S,y),de&6)Fe(y.component,q,H);else{if(de&128){y.suspense.unmount(q,H);return}$e&&to(y,null,S,"beforeUnmount"),de&64?y.type.remove(y,S,q,P,H):G&&!G.hasOnce&&(L!==Q||ee>0&&ee&64)?U(G,S,q,!1,!0):(L===Q&&ee&384||!j&&de&16)&&U(Z,S,q),H&&Ve(y)}let Ye=Ne!=null&&ge==null;(qe&&(Ke=X&&X.onVnodeUnmounted)||$e||Ye)&&dt(()=>{Ke&&Ot(Ke,S,y),$e&&to(y,null,S,"unmounted"),Ye&&(y.el=null)},q)},Ve=y=>{let{type:S,el:q,anchor:H,transition:j}=y;if(S===Q){Ue(q,H);return}if(S===Zo){O(y);return}let L=()=>{s(q),j&&!j.persisted&&j.afterLeave&&j.afterLeave()};if(y.shapeFlag&1&&j&&!j.persisted){let{leave:X,delayLeave:x}=j,Z=()=>X(q,L);x?x(y.el,L,Z):Z()}else L()},Ue=(y,S)=>{let q;for(;y!==S;)q=f(y),s(y),y=q;s(S)},Fe=(y,S,q)=>{let{bum:H,scope:j,job:L,subTree:X,um:x,m:Z,a:G}=y;Wr(Z),Wr(G),H&&vo(H),j.stop(),L&&(L.flags|=8,Te(X,y,S,q)),x&&dt(x,S),dt(()=>{y.isUnmounted=!0},S)},U=(y,S,q,H=!1,j=!1,L=0)=>{for(let X=L;X{if(y.shapeFlag&6)return te(y.component.subTree);if(y.shapeFlag&128)return y.suspense.next();let S=f(y.anchor||y.el),q=S&&S[Ud];return q?f(q):S},F=!1,E=(y,S,q)=>{let H;y==null?S._vnode&&(Te(S._vnode,null,null,!0),H=S._vnode.component):k(S._vnode||null,y,S,null,null,null,q),S._vnode=y,F||(F=!0,qr(H),ei(),F=!1)},P={p:k,um:Te,m:Ce,r:Ve,mt:he,mc:K,pc:Pe,pbc:ae,n:te,o:e},M,z;return t&&([M,z]=t(P)),{render:E,hydrate:M,createApp:su(E,M)}}function Dn({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function oo({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function bu(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Di(e,t,n=!1){let r=e.children,s=t.children;if(be(r)&&be(s))for(let i=0;i>1,e[n[u]]0&&(t[r]=n[i-1]),n[i]=r)}}for(i=n.length,a=n[i-1];i-- >0;)n[i]=a,a=t[a];return n}function Ri(e){let t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Ri(t)}function Wr(e){if(e)for(let t=0;te.__isSuspense;function ku(e,t){t&&t.pendingBranch?be(e)?t.effects.push(...e):t.effects.push(e):xr(e)}var Q=Symbol.for("v-fgt"),Fs=Symbol.for("v-txt"),Ht=Symbol.for("v-cmt"),Zo=Symbol.for("v-stc"),so=[],vt=null;function l(e=!1){so.push(vt=e?null:[])}function Oi(){so.pop(),vt=so[so.length-1]||null}var es=1;function Os(e,t=!1){es+=e,e<0&&vt&&t&&(vt.hasOnce=!0)}function Ii(e){return e.dynamicChildren=es>0?vt||Qt:null,Oi(),es>0&&vt&&vt.push(e),e}function d(e,t,n,r,s,i){return Ii(o(e,t,n,r,s,i,!0))}function qt(e,t,n,r,s){return Ii(_e(e,t,n,r,s,!0))}function Is(e){return e?e.__v_isVNode===!0:!1}function Ko(e,t){return e.type===t.type&&e.key===t.key}var Pi=({key:e})=>e??null,Ns=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ze(e)||Ze(e)||we(e)?{i:ht,r:e,k:t,f:!!n}:e:null);function o(e,t=null,n=null,r=0,s=null,i=e===Q?0:1,a=!1,u=!1){let m={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Pi(t),ref:t&&Ns(t),scopeId:oi,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:ht};return u?(Ps(m,n),i&128&&e.normalize(m)):n&&(m.shapeFlag|=ze(n)?8:16),es>0&&!a&&vt&&(m.patchFlag>0||i&6)&&m.patchFlag!==32&&vt.push(m),m}var _e=Eu;function Eu(e,t=null,n=null,r=0,s=null,i=!1){if((!e||e===Jd)&&(e=Ht),Is(e)){let u=Co(e,t,!0);return n&&Ps(u,n),es>0&&!i&&vt&&(u.shapeFlag&6?vt[vt.indexOf(e)]=u:vt.push(u)),u.patchFlag=-2,u}if(Pu(e)&&(e=e.__vccOpts),t){t=Cu(t);let{class:u,style:m}=t;u&&!ze(u)&&(t.class=A(u)),Ae(m)&&(Wo(m)&&!be(m)&&(m=Ge({},m)),t.style=Me(m))}let a=ze(e)?1:Ai(e)?128:qs(e)?64:Ae(e)?4:we(e)?2:0;return o(e,t,n,r,s,a,i,!0)}function Cu(e){return e?Wo(e)||wi(e)?Ge({},e):e:null}function Co(e,t,n=!1,r=!1){let{props:s,ref:i,patchFlag:a,children:u,transition:m}=e,h=t?_u(s||{},t):s,v={__v_isVNode:!0,__v_skip:!0,type:e.type,props:h,key:h&&Pi(h),ref:t&&t.ref?n&&i?be(i)?i.concat(Ns(t)):[i,Ns(t)]:Ns(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:u,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Q?a===-1?16:a|16:a,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:m,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Co(e.ssContent),ssFallback:e.ssFallback&&Co(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return m&&r&&Ms(v,m.clone(v)),v}function g(e=" ",t=0){return _e(Fs,null,e,t)}function le(e,t){let n=_e(Zo,null,e);return n.staticCount=t,n}function p(e="",t=!1){return t?(l(),qt(Ht,null,e)):_e(Ht,null,e)}function Pt(e){return e==null||typeof e=="boolean"?_e(Ht):be(e)?_e(Q,null,e.slice()):Is(e)?zt(e):_e(Fs,null,String(e))}function zt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Co(e)}function Ps(e,t){let n=0,{shapeFlag:r}=e;if(t==null)t=null;else if(be(t))n=16;else if(typeof t=="object")if(r&65){let s=t.default;s&&(s._c&&(s._d=!1),Ps(e,s()),s._c&&(s._d=!0));return}else{n=32;let s=t._;!s&&!wi(t)?t._ctx=ht:s===3&&ht&&(ht.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(we(t)){if(r&65){Ps(e,{default:t});return}t={default:t,_ctx:ht},n=32}else t=String(t),r&64?(n=16,t=[g(t)]):n=8;e.children=t,e.shapeFlag|=n}function _u(...e){let t={};for(let n=0;ntt||ht,Vs,ts;{let e=qo(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),i=>{s.length>1?s.forEach(a=>a(i)):s[0](i)}};Vs=t("__VUE_INSTANCE_SETTERS__",n=>tt=n),ts=t("__VUE_SSR_SETTERS__",n=>_o=n)}var is=e=>{let t=tt;return Vs(e),e.scope.on(),()=>{e.scope.off(),Vs(t)}},Kr=()=>{tt&&tt.scope.off(),Vs(null)};function Vi(e){return e.vnode.shapeFlag&4}var _o=!1;function Ru(e,t=!1,n=!1){t&&ts(t);let{props:r,children:s}=e.vnode,i=Vi(e);cu(e,r,i,t),hu(e,s,n||t);let a=i?Tu(e,t):void 0;return t&&ts(!1),a}function Tu(e,t){let n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Qd);let{setup:r}=n;if(r){Tt();let s=e.setupContext=r.length>1?Ou(e):null,i=is(e),a=os(r,e,0,[e.props,s]),u=nn(a);if(At(),i(),(u||e.sp)&&!Qo(e)&&Pn(e),u){if(a.then(Kr,Kr),t)return a.then(m=>{ts(!0);try{Yr(e,m,t)}finally{ts(!1)}}).catch(m=>{ss(m,e,0)});e.asyncDep=a}else Yr(e,a,t)}else qi(e,t)}function Yr(e,t,n){we(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Ae(t)&&(e.setupState=_s(t)),qi(e,n)}var Jr,Qr;function qi(e,t,n){let r=e.type;if(!e.render){if(!t&&Jr&&!r.render){let s=r.template||Vn(e).template;if(s){let{isCustomElement:i,compilerOptions:a}=e.appContext.config,{delimiters:u,compilerOptions:m}=r,h=Ge(Ge({isCustomElement:i,delimiters:u},a),m);r.render=Jr(s,h)}}e.render=r.render||at,Qr&&Qr(e)}{let s=is(e);Tt();try{Xd(e)}finally{At(),s()}}}var Au={get(e,t){return xe(e,"get",""),e[t]}};function Ou(e){let t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Au),slots:e.slots,emit:e.emit,expose:t}}function zs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(_s(Cn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Xo)return Xo[n](e)},has(t,n){return n in t||n in Xo}})):e.proxy}function Iu(e,t=!0){return we(e)?e.displayName||e.name:e.name||t&&e.__name}function Pu(e){return we(e)&&"__vccOpts"in e}var ot=(e,t)=>Ir(e,t,_o);function ke(e,t,n){try{Os(-1);let r=arguments.length;return r===2?Ae(t)&&!be(t)?Is(t)?_e(e,null,[t]):_e(e,t):_e(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Is(n)&&(n=[n]),_e(e,t,n))}finally{Os(1)}}var Vu="3.5.42";var zn,Mi=typeof window<"u"&&window.trustedTypes;if(Mi)try{zn=Mi.createPolicy("vue",{createHTML:e=>e})}catch{}var Ki=zn?e=>zn.createHTML(e):e=>e,qu="http://www.w3.org/2000/svg",Mu="http://www.w3.org/1998/Math/MathML",jt=typeof document<"u"?document:null,$i=jt&&jt.createElement("template"),$u={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{let t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{let s=t==="svg"?jt.createElementNS(qu,e):t==="mathml"?jt.createElementNS(Mu,e):n?jt.createElement(e,{is:n}):jt.createElement(e);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>jt.createTextNode(e),createComment:e=>jt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>jt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,i){let a=n?n.previousSibling:t.lastChild;if(s&&(s===i||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===i||!(s=s.nextSibling)););else{$i.innerHTML=Ki(r==="svg"?`${e}`:r==="mathml"?`${e}`:e);let u=$i.content;if(r==="svg"||r==="mathml"){let m=u.firstChild;for(;m.firstChild;)u.appendChild(m.firstChild);u.removeChild(m)}t.insertBefore(u,n)}return[a?a.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};var Lu=Symbol("_vtc");function Uu(e,t,n){let r=e[Lu];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}var Gs=Symbol("_vod"),Yi=Symbol("_vsh"),W={name:"show",beforeMount(e,{value:t},{transition:n}){e[Gs]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):as(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),as(e,!0),r.enter(e)):r.leave(e,()=>{as(e,!1)}):as(e,t))},beforeUnmount(e,{value:t}){as(e,t)}};function as(e,t){e.style.display=t?e[Gs]:"none",e[Yi]=!t}var Fu=Symbol("");var zu=/(?:^|;)\s*display\s*:/;function Hu(e,t,n){let r=e.style,s=ze(n),i=!1;if(n&&!s){if(t)if(ze(t))for(let a of t.split(";")){let u=a.slice(0,a.indexOf(":")).trim();n[u]==null&&ls(r,u,"")}else for(let a in t)n[a]==null&&ls(r,a,"");for(let a in n){a==="display"&&(i=!0);let u=n[a];u!=null?ju(e,a,!ze(t)&&t?t[a]:void 0,u)||ls(r,a,u):ls(r,a,"")}}else if(s){if(t!==n){let a=r[Fu];a&&(n+=";"+a),r.cssText=n,i=zu.test(n)}}else t&&e.removeAttribute("style");Gs in e&&(e[Gs]=i?r.display:"",e[Yi]&&(r.display="none"))}var Hs=/\s*!important$/;function ls(e,t,n){if(be(n))n.forEach(r=>ls(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))Hs.test(n)?e.setProperty(t,n.replace(Hs,""),"important"):e.setProperty(t,n);else{let r=Bu(e,t);Hs.test(n)?e.setProperty(St(r),n.replace(Hs,""),"important"):e[r]=n}}var Li=["Webkit","Moz","ms"],Ln={};function Bu(e,t){let n=Ln[t];if(n)return n;let r=Je(t);if(r!=="filter"&&r in e)return Ln[t]=r;r=Xt(r);for(let s=0;sUn||(Qu.then(()=>Un=0),Un=Date.now());function Zu(e,t){let n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;let s=n.value;if(be(s)){let i=r.stopImmediatePropagation;r.stopImmediatePropagation=()=>{i.call(r),r._stopped=!0};let a=s.slice(),u=[r];for(let m=0;me.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,xu=(e,t,n,r,s,i)=>{let a=s==="svg";t==="class"?Uu(e,r,a):t==="style"?Hu(e,n,r):fo(t)?mo(t)||Wu(e,t,n,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):ec(e,t,r,a))?(zi(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Fi(e,t,r,a,i,t!=="value")):e._isVueCE&&(tc(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!ze(r)))?zi(e,Je(t),r,i,t):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Fi(e,t,r,a))};function ec(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&Bi(t)&&we(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){let s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return Bi(t)&&ze(n)?!1:t in e}function tc(e,t){let n=e._def.props;if(!n)return!1;let r=Je(t);return Array.isArray(n)?n.some(s=>Je(s)===r):Object.keys(n).some(s=>Je(s)===r)}var ji=e=>{let t=e.props["onUpdate:modelValue"]||!1;return be(t)?n=>vo(t,n):t};function oc(e){e.target.composing=!0}function Gi(e){let t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}var Bs=Symbol("_assign"),js=Symbol("_initialValue");function Fn(e,t,n){return t&&(e=e.trim()),n&&(e=Vo(e)),e}var Ji={created(e,{modifiers:{lazy:t,trim:n,number:r}},s){e.parentNode&&(e.type==="text"?e[js]=e.defaultValue.replace(/[\r\n]/g,""):e.type==="textarea"&&(e[js]=e.defaultValue.replace(/\r\n?/g,` -`))),e[Bs]=ji(s);let i=r||s.props&&s.props.type==="number";So(e,t?"change":"input",a=>{a.target.composing||e[Bs](Fn(e.value,n,i))}),(n||i)&&So(e,"change",()=>{e.value=Fn(e.value,n,i)}),t||(So(e,"compositionstart",oc),So(e,"compositionend",Gi),So(e,"change",Gi))},mounted(e,{value:t,modifiers:{trim:n,number:r}}){let s=t??"",i=e[js];delete e[js],i!==void 0&&(e.type==="text"||e.type==="textarea")&&e.value!==i?e[Bs](Fn(e.value,n,r)):e.value=s},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:s,number:i}},a){if(e[Bs]=ji(a),e.composing)return;let u=(i||e.type==="number")&&!/^0\d/.test(e.value)?Vo(e.value):e.value,m=t??"";if(u===m)return;let h=e.getRootNode();(h instanceof Document||h instanceof ShadowRoot)&&h.activeElement===e&&e.type!=="range"&&(r&&t===n||s&&e.value.trim()===m)||(e.value=m)}};var sc=["ctrl","shift","alt","meta"],nc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>sc.some(n=>e[`${n}Key`]&&!t.includes(n))},ce=(e,t)=>{if(!e)return e;let n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=((s,...i)=>{for(let a=0;a{let n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=(s=>{if(!("key"in s))return;let i=St(s.key);if(t.some(a=>a===i||rc[a]===i))return e(s)}))},ic=Ge({patchProp:xu},$u),Wi;function ac(){return Wi||(Wi=Ni(ic))}var Qi=((...e)=>{let t=ac().createApp(...e),{mount:n}=t;return t.mount=r=>{let s=dc(r);if(!s)return;let i=t._component;!we(i)&&!i.render&&!i.template&&(i.template=s.innerHTML),s.nodeType===1&&(s.textContent="");let a=n(s,!1,lc(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),a},t});function lc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function dc(e){return ze(e)?document.querySelector(e):e}var lo=typeof document<"u";function Zi(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function uc(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Zi(e.default)}var Oe=Object.assign;function Ws(e,t){let n={};for(let r in t){let s=t[r];n[r]=wt(s)?s.map(e):e(s)}return n}var Ro=()=>{},wt=Array.isArray;function jn(e,t){let n={};for(let r in e)n[r]=r in t?t[r]:e[r];return n}var xi=/#/g,cc=/&/g,pc=/\//g,fc=/=/g,mc=/\?/g,ea=/\+/g,hc=/%5B/g,vc=/%5D/g,ta=/%5E/g,gc=/%60/g,oa=/%7B/g,yc=/%7C/g,sa=/%7D/g,bc=/%20/g;function Gn(e){return e==null?"":encodeURI(""+e).replace(yc,"|").replace(hc,"[").replace(vc,"]")}function na(e){return Gn(e).replace(oa,"{").replace(sa,"}").replace(ta,"^")}function Hn(e){return Gn(e).replace(ea,"%2B").replace(bc,"+").replace(xi,"%23").replace(cc,"%26").replace(gc,"`").replace(oa,"{").replace(sa,"}").replace(ta,"^")}function wc(e){return Hn(e).replace(fc,"%3D")}function kc(e){return Gn(e).replace(xi,"%23").replace(mc,"%3F")}function ra(e){return kc(e).replace(pc,"%2F")}function Do(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}var Ec=/\/$/,Cc=e=>e.replace(Ec,"");function Ks(e,t,n="/"){let r,s={},i="",a="",u=t.indexOf("#"),m=t.indexOf("?");return m=u>=0&&m>u?-1:m,m>=0&&(r=t.slice(0,m),i=t.slice(m,u>0?u:t.length),s=e(i.slice(1))),u>=0&&(r=r||t.slice(0,u),a=t.slice(u,t.length)),r=Sc(r??t,n),{fullPath:r+i+a,path:r,query:s,hash:Do(a)}}function ia(e,t){let n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Wn(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function aa(e,t,n){let r=t.matched.length-1,s=n.matched.length-1;return r>-1&&r===s&&io(t.matched[r],n.matched[s])&&Kn(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function io(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Kn(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!_c(e[n],t[n]))return!1;return!0}function _c(e,t){return wt(e)?Xi(e,t):wt(t)?Xi(t,e):e?.valueOf()===t?.valueOf()}function Xi(e,t){return wt(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function Sc(e,t){if(e.startsWith("/"))return e;if(!e)return t;let n=t.split("/"),r=e.split("/"),s=r[r.length-1];(s===".."||s===".")&&r.push("");let i=n.length-1,a,u;for(a=0;a1&&i--;else break;return n.slice(0,i).join("/")+"/"+r.slice(a).join("/")}var Wt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},Ys=(function(e){return e.pop="pop",e.push="push",e})({}),Js=(function(e){return e.back="back",e.forward="forward",e.unknown="",e})({});function la(e){if(!e)if(lo){let t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Cc(e)}var Nc=/^[^#]+#/;function da(e,t){return e.replace(Nc,"#")+t}function Dc(e,t){let n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}var ds=()=>({left:window.scrollX,top:window.scrollY});function ua(e){let t;if("el"in e){let n=e.el,r=typeof n=="string"&&n.startsWith("#"),s=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!s)return;t=Dc(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Yn(e,t){return(history.state?history.state.position-t:-1)+e}var Bn=new Map;function ca(e,t){Bn.set(e,t)}function pa(e){let t=Bn.get(e);return Bn.delete(e),t}function Rc(e){return typeof e=="string"||e&&typeof e=="object"}function Jn(e){return typeof e=="string"||typeof e=="symbol"}var je=(function(e){return e[e.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",e[e.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",e[e.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",e[e.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",e[e.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",e})({}),fa=Symbol("");var SM={[je.MATCHER_NOT_FOUND]({location:e,currentLocation:t}){return`No match for +"use strict";(()=>{var xl=Object.defineProperty;var ed=(e,t)=>{for(var n in t)xl(e,n,{get:t[n],enumerable:!0})};var me=["abap","abc","actionscript","ada","alda","apache_conf","apex","applescript","aql","asciidoc","asl","assembly_x86","autohotkey","batchfile","c9search","c_cpp","cirru","clojure","cobol","coffee","coldfusion","crystal","csharp","csound_document","csound_orchestra","csound_score","csp","css","curly","d","dart","diff","django","dockerfile","dot","drools","edifact","eiffel","ejs","elixir","elm","erlang","forth","fortran","fsharp","fsl","ftl","gcode","gherkin","gitignore","glsl","gobstones","golang","graphqlschema","groovy","haml","handlebars","haskell","haskell_cabal","haxe","hjson","html","html_elixir","html_ruby","ini","io","jack","jade","java","javascript","json","json5","jsoniq","jsp","jssm","jsx","julia","kotlin","latex","less","liquid","lisp","livescript","logiql","logtalk","lsl","lua","luapage","lucene","makefile","markdown","mask","matlab","maze","mediawiki","mel","mixal","mushcode","mysql","nginx","nim","nix","nsis","nunjucks","objectivec","ocaml","pascal","perl","perl6","pgsql","php","php_laravel_blade","pig","plain_text","powershell","praat","prisma","prolog","properties","protobuf","puppet","python","qml","r","razor","rdoc","red","redshift","rhtml","rst","ruby","rust","sass","scad","scala","scheme","scss","sh","sjs","slim","smarty","snippets","soy_template","space","sparql","sql","sqlserver","stylus","svg","swift","tcl","terraform","tex","text","textile","toml","tsx","turtle","twig","typescript","vala","vbscript","velocity","verilog","vhdl","visualforce","wollok","xml","xquery","yaml","zeek"];var ve={notebook:"/script/notebook.c3144c18ae.min.js",org:"/script/org.f61f262915.min.js",pdf:"/script/pdf.4d9cc6ff49.min.js",markdown:"/script/markdown.44f2e93820.min.js",editor:"/script/editor.4f142d3adc.min.js"};var us=new Map,sd=ve;function Jt(e){if(!us.has(e)){let t=document.createElement("script");t.src=sd[e];let n=new Promise((r,s)=>{t.onload=r,t.onerror=()=>{us.delete(e),t.remove(),s(new Error(`Unable to load ${e}. Please retry.`))}});us.set(e,n),document.head.appendChild(t)}return us.get(e)}async function lr(){await Jt("editor"),ace.config.set("basePath","/script/external/ace/")}function po(e){let t=Object.create(null);for(let n of e.split(","))t[n]=1;return n=>n in t}var Pe={},Qt=[],at=()=>{},sn=()=>!1,fo=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),ho=e=>e.startsWith("onUpdate:"),Ge=Object.assign,Oo=(e,t)=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)},nd=Object.prototype.hasOwnProperty,De=(e,t)=>nd.call(e,t),be=Array.isArray,$t=e=>Io(e)==="[object Map]",co=e=>Io(e)==="[object Set]",dr=e=>Io(e)==="[object Date]";var we=e=>typeof e=="function",ze=e=>typeof e=="string",ht=e=>typeof e=="symbol",Te=e=>e!==null&&typeof e=="object",nn=e=>(Te(e)||we(e))&&we(e.then)&&we(e.catch),pr=Object.prototype.toString,Io=e=>pr.call(e),rn=e=>Io(e).slice(8,-1),cs=e=>Io(e)==="[object Object]",ps=e=>ze(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,mo=po(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted");var fs=e=>{let t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},rd=/-\w/g,Je=fs(e=>e.replace(rd,t=>t.slice(1).toUpperCase())),id=/\B([A-Z])/g,St=fs(e=>e.replace(id,"-$1").toLowerCase()),Xt=fs(e=>e.charAt(0).toUpperCase()+e.slice(1)),Po=fs(e=>e?`on${Xt(e)}`:""),gt=(e,t)=>!Object.is(e,t),vo=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},Vo=e=>{let t=parseFloat(e);return isNaN(t)?e:t};var ur,qo=()=>ur||(ur=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Me(e){if(be(e)){let t={};for(let n=0;n{if(n){let r=n.split(ld);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function A(e){let t="";if(ze(e))t=e;else if(be(e))for(let n=0;n!!(e&&e.__v_isRef===!0),c=e=>ze(e)?e:e==null?"":be(e)||Te(e)&&(e.toString===pr||!we(e.toString))?mr(e)?c(e.value):JSON.stringify(e,vr,2):String(e),vr=(e,t)=>mr(t)?vr(e,t.value):$t(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],i)=>(n[on(r,i)+" =>"]=s,n),{})}:co(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>on(n))}:ht(t)?on(t):Te(t)&&!be(t)&&!cs(t)?String(t):t,on=(e,t="")=>{var n;return ht(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};function fd(e,...t){console.warn(`[Vue warn] ${e}`,...t)}var Qe,Uo=class{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&Qe&&(Qe.active?(this.parent=Qe,this.index=(Qe.scopes||(Qe.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes){let r=this.scopes.slice();for(t=0,n=r.length;t0&&--this._on===0){if(Qe===this)Qe=this.prevScope;else{let t=Qe;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let n,r;for(n=0,r=this.effects.length;n0)return;if(Lo){let t=Lo;for(Lo=void 0;t;){let n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;$o;){let t=$o;for($o=void 0;t;){let n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=n}}if(e)throw e}function Er(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Cr(e){let t,n=e.depsTail,r=n;for(;r;){let s=r.prevDep;r.version===-1?(r===n&&(n=s),wn(r),hd(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=s}e.deps=t,e.depsTail=n}function un(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(_r(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function _r(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Fo)||(e.globalVersion=Fo,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!un(e))))return;e.flags|=2;let t=e.dep,n=Fe,r=Et;Fe=e,Et=!0;try{Er(e);let s=e.fn(e._value);(t.version===0||gt(s,e._value))&&(e.flags|=128,e._value=s,t.version++)}catch(s){throw t.version++,s}finally{Fe=n,Et=r,Cr(e),e.flags&=-3}}function wn(e,t=!1){let{dep:n,prevSub:r,nextSub:s}=e;if(r&&(r.nextSub=s,e.prevSub=void 0),s&&(s.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)wn(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function hd(e){let{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}var Et=!0,Sr=[];function Tt(){Sr.push(Et),Et=!1}function At(){let e=Sr.pop();Et=e===void 0?!0:e}function gr(e){let{cleanup:t}=e;if(e.cleanup=void 0,t){let n=Fe;Fe=void 0;try{t()}finally{Fe=n}}}var Fo=0,cn=class{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}},zo=class{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!Fe||!Et||Fe===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==Fe)n=this.activeLink=new cn(Fe,this),Fe.deps?(n.prevDep=Fe.depsTail,Fe.depsTail.nextDep=n,Fe.depsTail=n):Fe.deps=Fe.depsTail=n,Nr(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){let r=n.nextDep;r.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=r),n.prevDep=Fe.depsTail,n.nextDep=void 0,Fe.depsTail.nextDep=n,Fe.depsTail=n,Fe.deps===n&&(Fe.deps=r)}return n}trigger(t){this.version++,Fo++,this.notify(t)}notify(t){yn();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{bn()}}};function Nr(e){if(e.dep.sc++,e.sub.flags&4){let t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)Nr(r)}let n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}var pn=new WeakMap,xt=Symbol(""),fn=Symbol(""),Ho=Symbol("");function xe(e,t,n){if(Et&&Fe){let r=pn.get(e);r||pn.set(e,r=new Map);let s=r.get(n);s||(r.set(n,s=new zo),s.map=r,s.key=n),s.track()}}function Dt(e,t,n,r,s,i){let a=pn.get(e);if(!a){Fo++;return}let u=f=>{f&&f.trigger()};if(yn(),t==="clear")a.forEach(u);else{let f=be(e),m=f&&ps(n);if(f&&n==="length"){let g=Number(r);a.forEach((w,h)=>{(h==="length"||h===Ho||!ht(h)&&h>=g)&&u(w)})}else switch((n!==void 0||a.has(void 0))&&u(a.get(n)),m&&u(a.get(Ho)),t){case"add":f?m&&u(a.get("length")):(u(a.get(xt)),$t(e)&&u(a.get(fn)));break;case"delete":f||(u(a.get(xt)),$t(e)&&u(a.get(fn)));break;case"set":$t(e)&&u(a.get(xt));break}}bn()}function yo(e){let t=Re(e);return t===e?t:(xe(t,"iterate",Ho),lt(e)?t:t.map(yt))}function Bo(e){return xe(e=Re(e),"iterate",Ho),e}function Nt(e,t){return Ct(e)?eo(Ut(e)?yt(t):t):yt(t)}var md={__proto__:null,[Symbol.iterator](){return ln(this,Symbol.iterator,e=>Nt(this,e))},concat(...e){return yo(this).concat(...e.map(t=>be(t)?yo(t):t))},entries(){return ln(this,"entries",e=>(e[1]=Nt(this,e[1]),e))},every(e,t){return Lt(this,"every",e,t,void 0,arguments)},filter(e,t){return Lt(this,"filter",e,t,n=>n.map(r=>Nt(this,r)),arguments)},find(e,t){return Lt(this,"find",e,t,n=>Nt(this,n),arguments)},findIndex(e,t){return Lt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Lt(this,"findLast",e,t,n=>Nt(this,n),arguments)},findLastIndex(e,t){return Lt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Lt(this,"forEach",e,t,void 0,arguments)},includes(...e){return dn(this,"includes",e)},indexOf(...e){return dn(this,"indexOf",e)},join(e){return yo(this).join(e)},lastIndexOf(...e){return dn(this,"lastIndexOf",e)},map(e,t){return Lt(this,"map",e,t,void 0,arguments)},pop(){return Mo(this,"pop")},push(...e){return Mo(this,"push",e)},reduce(e,...t){return yr(this,"reduce",e,t)},reduceRight(e,...t){return yr(this,"reduceRight",e,t)},shift(){return Mo(this,"shift")},some(e,t){return Lt(this,"some",e,t,void 0,arguments)},splice(...e){return Mo(this,"splice",e)},toReversed(){return yo(this).toReversed()},toSorted(e){return yo(this).toSorted(e)},toSpliced(...e){return yo(this).toSpliced(...e)},unshift(...e){return Mo(this,"unshift",e)},values(){return ln(this,"values",e=>Nt(this,e))}};function ln(e,t,n){let r=Bo(e),s=r[t]();return r!==e&&!lt(e)&&(s._next=s.next,s.next=()=>{let i=s._next();return i.done||(i.value=n(i.value)),i}),s}var vd=Array.prototype;function Lt(e,t,n,r,s,i){let a=Bo(e),u=a!==e&&!lt(e),f=a[t];if(f!==vd[t]){let w=f.apply(e,i);return u?yt(w):w}let m=n;a!==e&&(u?m=function(w,h){return n.call(this,Nt(e,w),h,e)}:n.length>2&&(m=function(w,h){return n.call(this,w,h,e)}));let g=f.call(a,m,r);return u&&s?s(g):g}function yr(e,t,n,r){let s=Bo(e),i=s!==e&&!lt(e),a=n,u=!1;s!==e&&(i?(u=r.length===0,a=function(m,g,w){return u&&(u=!1,m=Nt(e,m)),n.call(this,m,Nt(e,g),w,e)}):n.length>3&&(a=function(m,g,w){return n.call(this,m,g,w,e)}));let f=s[t](a,...r);return u?Nt(e,f):f}function dn(e,t,n){let r=Re(e);xe(r,"iterate",Ho);let s=r[t](...n);return(s===-1||s===!1)&&Wo(n[0])?(n[0]=Re(n[0]),r[t](...n)):s}function Mo(e,t,n=[]){Tt(),yn();let r=Re(e)[t].apply(e,n);return bn(),At(),r}var gd=po("__proto__,__v_isRef,__isVue"),Dr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(ht));function yd(e){ht(e)||(e=String(e));let t=Re(this);return xe(t,"has",e),t.hasOwnProperty(e)}var bs=class{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){if(n==="__v_skip")return t.__v_skip;let s=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return i;if(n==="__v_raw")return r===(s?i?Dd:Ar:i?Tr:Rr).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;let a=be(t);if(!s){let f;if(a&&(f=md[n]))return f;if(n==="hasOwnProperty")return yd}let u=Reflect.get(t,n,Ze(t)?t:r);if((ht(n)?Dr.has(n):gd(n))||(s||xe(t,"get",n),i))return u;if(Ze(u)){let f=a&&ps(n)?u:u.value;return s&&Te(f)?ks(f):f}return Te(u)?s?ks(u):He(u):u}},ws=class extends bs{constructor(t=!1){super(!1,t)}set(t,n,r,s){let i=t[n],a=be(t)&&ps(n);if(!this._isShallow){let m=Ct(i);if(!lt(r)&&!Ct(r)&&(i=Re(i),r=Re(r)),!a&&Ze(i)&&!Ze(r))return m||(i.value=r),!0}let u=a?Number(n)e,vs=e=>Reflect.getPrototypeOf(e);function Ed(e,t,n){return function(...r){let s=this.__v_raw,i=Re(s),a=$t(i),u=e==="entries"||e===Symbol.iterator&&a,f=e==="keys"&&a,m=s[e](...r),g=n?mn:t?eo:yt;return!t&&xe(i,"iterate",f?fn:xt),Ge(Object.create(m),{next(){let{value:w,done:h}=m.next();return h?{value:w,done:h}:{value:u?[g(w[0]),g(w[1])]:g(w),done:h}}})}}function gs(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Cd(e,t){let n={get(s){let i=this.__v_raw,a=Re(i),u=Re(s);e||(gt(s,u)&&xe(a,"get",s),xe(a,"get",u));let{has:f}=vs(a),m=t?mn:e?eo:yt;if(f.call(a,s))return m(i.get(s));if(f.call(a,u))return m(i.get(u));i!==a&&i.get(s)},get size(){let s=this.__v_raw;return!e&&xe(Re(s),"iterate",xt),s.size},has(s){let i=this.__v_raw,a=Re(i),u=Re(s);return e||(gt(s,u)&&xe(a,"has",s),xe(a,"has",u)),s===u?i.has(s):i.has(s)||i.has(u)},forEach(s,i){let a=this,u=a.__v_raw,f=Re(u),m=t?mn:e?eo:yt;return!e&&xe(f,"iterate",xt),u.forEach((g,w)=>s.call(i,m(g),m(w),a))}};return Ge(n,e?{add:gs("add"),set:gs("set"),delete:gs("delete"),clear:gs("clear")}:{add(s){let i=Re(this),a=vs(i),u=Re(s),f=!t&&!lt(s)&&!Ct(s)?u:s;return a.has.call(i,f)||gt(s,f)&&a.has.call(i,s)||gt(u,f)&&a.has.call(i,u)||(i.add(f),Dt(i,"add",f,f)),this},set(s,i){!t&&!lt(i)&&!Ct(i)&&(i=Re(i));let a=Re(this),{has:u,get:f}=vs(a),m=u.call(a,s);m||(s=Re(s),m=u.call(a,s));let g=f.call(a,s);return a.set(s,i),m?gt(i,g)&&Dt(a,"set",s,i,g):Dt(a,"add",s,i),this},delete(s){let i=Re(this),{has:a,get:u}=vs(i),f=a.call(i,s);f||(s=Re(s),f=a.call(i,s));let m=u?u.call(i,s):void 0,g=i.delete(s);return f&&Dt(i,"delete",s,void 0,m),g},clear(){let s=Re(this),i=s.size!==0,a=void 0,u=s.clear();return i&&Dt(s,"clear",void 0,void 0,a),u}}),["keys","values","entries",Symbol.iterator].forEach(s=>{n[s]=Ed(s,e,t)}),n}function kn(e,t){let n=Cd(e,t);return(r,s,i)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(De(n,s)&&s in r?n:r,s,i)}var _d={get:kn(!1,!1)},Sd={get:kn(!1,!0)},Nd={get:kn(!0,!1)};var Rr=new WeakMap,Tr=new WeakMap,Ar=new WeakMap,Dd=new WeakMap;function Rd(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function He(e){return Ct(e)?e:En(e,!1,bd,_d,Rr)}function Go(e){return En(e,!1,kd,Sd,Tr)}function ks(e){return En(e,!0,wd,Nd,Ar)}function En(e,t,n,r,s){if(!Te(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;let i=s.get(e);if(i)return i;let a=Rd(rn(e));if(a===0)return e;let u=new Proxy(e,a===2?r:n);return s.set(e,u),u}function Ut(e){return Ct(e)?Ut(e.__v_raw):!!(e&&e.__v_isReactive)}function Ct(e){return!!(e&&e.__v_isReadonly)}function lt(e){return!!(e&&e.__v_isShallow)}function Wo(e){return e?!!e.__v_raw:!1}function Re(e){let t=e&&e.__v_raw;return t?Re(t):e}function Cn(e){return!De(e,"__v_skip")&&Object.isExtensible(e)&&hs(e,"__v_skip",!0),e}var yt=e=>Te(e)?He(e):e,eo=e=>Te(e)?ks(e):e;function Ze(e){return e?e.__v_isRef===!0:!1}function et(e){return Or(e,!1)}function Cs(e){return Or(e,!0)}function Or(e,t){return Ze(e)?e:new vn(e,t)}var vn=class{constructor(t,n){this.dep=new zo,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:Re(t),this._value=n?t:yt(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){let n=this._rawValue,r=this.__v_isShallow||lt(t)||Ct(t);t=r?t:Re(t),gt(t,n)&&(this._rawValue=t,this._value=r?t:yt(t),this.dep.trigger())}};function Ft(e){return Ze(e)?e.value:e}var Td={get:(e,t,n)=>t==="__v_raw"?e:Ft(Reflect.get(e,t,n)),set:(e,t,n,r)=>{let s=e[t];return Ze(s)&&!Ze(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function _s(e){return Ut(e)?e:new Proxy(e,Td)}var gn=class{constructor(t,n,r){this.fn=t,this.setter=n,this._value=void 0,this.dep=new zo(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Fo-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=r}notify(){if(this.flags|=16,!(this.flags&8)&&Fe!==this)return kr(this,!0),!0}get value(){let t=this.dep.track();return _r(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}};function Ir(e,t,n=!1){let r,s;return we(e)?r=e:(r=e.get,s=e.set),new gn(r,s,n)}var ys={},Es=new WeakMap,Zt;function Pr(e,t=!1,n=Zt){if(n){let r=Es.get(n);r||Es.set(n,r=[]),r.push(e)}}function Vr(e,t,n=Pe){let{immediate:r,deep:s,once:i,scheduler:a,augmentJob:u,call:f}=n,m=q=>{(n.onWarn||fd)("Invalid watch source: ",q,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},g=q=>s?q:lt(q)||s===!1||s===0?Rt(q,1):Rt(q),w,h,b,E,k=!1,R=!1;if(Ze(e)?(h=()=>e.value,k=lt(e)):Ut(e)?(h=()=>g(e),k=!0):be(e)?(R=!0,k=e.some(q=>Ut(q)||lt(q)),h=()=>e.map(q=>{if(Ze(q))return q.value;if(Ut(q))return g(q);if(we(q))return f?f(q,2):q()})):we(e)?t?h=f?()=>f(e,2):e:h=()=>{if(b){Tt();try{b()}finally{At()}}let q=Zt;Zt=w;try{return f?f(e,3,[E]):e(E)}finally{Zt=q}}:h=at,t&&s){let q=h,U=s===!0?1/0:s;h=()=>Rt(q(),U)}let D=br(),T=()=>{w.stop(),D&&D.active&&Oo(D.effects,w)};if(i&&t){let q=t;t=(...U)=>{let ie=q(...U);return T(),ie}}let P=R?new Array(e.length).fill(ys):ys,H=q=>{if(!(!(w.flags&1)||!w.dirty&&!q))if(t){let U=w.run();if(q||s||k||(R?U.some((ie,re)=>gt(ie,P[re])):gt(U,P))){b&&b();let ie=Zt;Zt=w;try{let re=[U,P===ys?void 0:R&&P[0]===ys?[]:P,E];P=U,f?f(t,3,re):t(...re)}finally{Zt=ie}}}else w.run()};return u&&u(H),w=new bo(h),w.scheduler=a?()=>a(H,!1):H,E=q=>Pr(q,!1,w),b=w.onStop=()=>{let q=Es.get(w);if(q){if(f)f(q,4);else for(let U of q)U();Es.delete(w)}},t?r?H(!0):P=w.run():a?a(H.bind(null,!0),!0):w.run(),T.pause=w.pause.bind(w),T.resume=w.resume.bind(w),T.stop=T,T}function Rt(e,t=1/0,n){if(t<=0||!Te(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,Ze(e))Rt(e.value,t,n);else if(be(e))for(let r=0;r{Rt(r,t,n)});else if(cs(e)){for(let r in e)Rt(e[r],t,n);for(let r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&Rt(e[r],t,n)}return e}function os(e,t,n,r){try{return r?e(...r):e()}catch(s){ss(s,t,n)}}function bt(e,t,n,r){if(we(e)){let s=os(e,t,n,r);return s&&nn(s)&&s.catch(i=>{ss(i,t,n)}),s}if(be(e)){let s=[];for(let i=0;i>>1,s=nt[r],i=xo(s);i=xo(n)?nt.push(e):nt.splice(Vd(t),0,e),e.flags|=1,Zr()}}function Zr(){Ds||(Ds=Xr.then(ti))}function xr(e){if(!be(e))Yt&&e.id===-1?Yt.splice(wo+1,0,e):e.flags&1||(ko.push(e),e.flags|=1);else for(let t=0;txo(n)-xo(r));if(ko.length=0,Yt){for(let n=0;ne.id==null?e.flags&2?-1:1/0:e.id;function ti(e){let t=at;try{for(It=0;It{r._d&&Os(-1);let i=Rs(t),a=so.length,u;try{u=e(...s)}finally{for(let f=so.length;f>a;f--)Oi();Rs(i),r._d&&Os(1)}return u};return r._n=!0,r._c=!0,r._d=!0,r}function N(e,t){if(mt===null)return e;let n=zs(mt),r=e.dirs||(e.dirs=[]);for(let s=0;s1)return n&&we(t)?t.call(r&&r.proxy):t}}var Md=Symbol.for("v-scx"),$d=()=>{{let e=ut(Md);return e}};function je(e,t,n){return si(e,t,n)}function si(e,t,n=Pe){let{immediate:r,deep:s,flush:i,once:a}=n,u=Ge({},n),f=t&&r||!t&&i!=="post",m;if(_o){if(i==="sync"){let b=$d();m=b.__watcherHandles||(b.__watcherHandles=[])}else if(!f){let b=()=>{};return b.stop=at,b.resume=at,b.pause=at,b}}let g=tt;u.call=(b,E,k)=>bt(b,g,E,k);let w=!1;i==="post"?u.scheduler=b=>{dt(b,g&&g.suspense)}:i!=="sync"&&(w=!0,u.scheduler=(b,E)=>{E?b():In(b)}),u.augmentJob=b=>{t&&(b.flags|=4),w&&(b.flags|=2,g&&(b.id=g.uid,b.i=g))};let h=Vr(e,t,u);return _o&&(m?m.push(h):f&&h()),h}function Ld(e,t,n){let r=this.proxy,s=ze(e)?e.includes(".")?ni(r,e):()=>r[e]:e.bind(r,r),i;we(t)?i=t:(i=t.handler,n=t);let a=is(this),u=si(s,i.bind(r),n);return a(),u}function ni(e,t){let n=t.split(".");return()=>{let r=e;for(let s=0;se.__isTeleport;var _n=Symbol("_leaveCb");function Fd(e){let t=e[0];if(e.length>1){let n=!1;for(let r of e)if(r.type!==Ht){t=r,n=!0;break}}return t}function ri(e){if(!$s(e))return qs(e.type)&&e.children?Fd(e.children):e;if(e.component)return e.component.subTree;let{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&we(n.default))return n.default()}}function Ms(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;let n=e.component.subTree;Ms(qs(n.type)&&ri(n)||n,t)}else e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function ns(e,t){return we(e)?Ge({name:e.name},t,{setup:e}):e}function Pn(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function Mr(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}var Ts=new WeakMap;function Jo(e,t,n,r,s=!1){if(be(e)){e.forEach((k,R)=>Jo(k,t&&(be(t)?t[R]:t),n,r,s));return}if(Qo(r)&&!s){r.shapeFlag&512&&r.type.__asyncResolved&&r.component.subTree.component&&Jo(e,t,n,r.component.subTree);return}let i=r.shapeFlag&4?zs(r.component):r.el,a=s?null:i,{i:u,r:f}=e,m=t&&t.r,g=u.refs===Pe?u.refs={}:u.refs,w=u.setupState,h=Re(w),b=w===Pe?sn:k=>Mr(g,k)?!1:De(h,k),E=(k,R)=>!(R&&Mr(g,R));if(m!=null&&m!==f){if($r(t),ze(m))g[m]=null,b(m)&&(w[m]=null);else if(Ze(m)){let k=t;E(m,k.k)&&(m.value=null),k.k&&(g[k.k]=null)}}if(we(f))os(f,u,12,[a,g]);else{let k=ze(f),R=Ze(f);if(k||R){let D=()=>{if(e.f){let T=k?b(f)?w[f]:g[f]:E(f)||!e.k?f.value:g[e.k];if(s)be(T)&&Oo(T,i);else if(be(T))T.includes(i)||T.push(i);else if(k)g[f]=[i],b(f)&&(w[f]=g[f]);else{let P=[i];E(f,e.k)&&(f.value=P),e.k&&(g[e.k]=P)}}else k?(g[f]=a,b(f)&&(w[f]=a)):R&&(E(f,e.k)&&(f.value=a),e.k&&(g[e.k]=a))};if(a){let T=()=>{D(),Ts.delete(e)};T.id=-1,Ts.set(e,T),dt(T,n)}else $r(e),D()}}}function $r(e){let t=Ts.get(e);t&&(t.flags|=8,Ts.delete(e))}var Lr=e=>e.nodeType===8;var J8=qo().requestIdleCallback||(e=>setTimeout(e,1)),Q8=qo().cancelIdleCallback||(e=>clearTimeout(e));function zd(e,t){if(Lr(e)&&e.data==="["){let n=1,r=e.nextSibling;for(;r;){if(r.nodeType===1){if(t(r)===!1)break}else if(Lr(r))if(r.data==="]"){if(--n===0)break}else r.data==="["&&n++;r=r.nextSibling}}else t(e)}var Qo=e=>!!e.type.__asyncLoader;function ii(e){we(e)&&(e={loader:e});let{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,hydrate:i,timeout:a,suspensible:u=!0,onError:f}=e,m=null,g,w=0,h=()=>(w++,m=null,b()),b=()=>{let E;return m||(E=m=t().catch(k=>{if(k=k instanceof Error?k:new Error(String(k)),f)return new Promise((R,D)=>{f(k,()=>R(h()),()=>D(k),w+1)});throw k}).then(k=>E!==m&&m?m:(k&&(k.__esModule||k[Symbol.toStringTag]==="Module")&&(k=k.default),g=k,k)))};return ns({name:"AsyncComponentWrapper",__asyncLoader:b,__asyncHydrate(E,k,R){let D=E.isConnected,T=!1;(k.bu||(k.bu=[])).push(()=>T=!0);let P=()=>{T||!E.parentNode||D&&!E.isConnected||R()},H=i?()=>{let q=i(P,U=>zd(E,U));q&&(k.bum||(k.bum=[])).push(q)}:P;g?H():b().then(()=>!k.isUnmounted&&H())},get __asyncResolved(){return g},setup(){let E=tt;if(Pn(E),g)return()=>Ss(g,E);let k=q=>{m=null,ss(q,E,13,!r)};if(u&&E.suspense||_o)return b().then(q=>()=>Ss(q,E)).catch(q=>(k(q),()=>r?Ce(r,{error:q}):null));let R=et(!1),D=et(),T=et(!!s),P,H;return rs(()=>{P!=null&&clearTimeout(P),H!=null&&clearTimeout(H)}),s&&(H=setTimeout(()=>{E.isUnmounted||(T.value=!1)},s)),a!=null&&(P=setTimeout(()=>{if(!E.isUnmounted&&!R.value&&!D.value){let q=new Error(`Async component timed out after ${a}ms.`);k(q),D.value=q}},a)),b().then(()=>{E.isUnmounted||(R.value=!0,E.parent&&$s(E.parent.vnode)&&E.parent.update())}).catch(q=>{if(E.isUnmounted){m=null;return}k(q),D.value=q}),()=>{if(R.value&&g)return Ss(g,E);if(D.value&&r)return Ce(r,{error:D.value});if(n&&!T.value)return Ss(n,E)}}})}function Ss(e,t){let{ref:n,props:r,children:s,ce:i}=t.vnode,a=Ce(e,r,s);return a.ref=n,a.ce=i,delete t.vnode.ce,a}var $s=e=>e.type.__isKeepAlive;function ai(e,t){di(e,"a",t)}function li(e,t){di(e,"da",t)}function di(e,t,n=tt){let r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(Ls(t,r,n),n){let s=n.parent;for(;s&&s.parent;)$s(s.parent.vnode)&&Hd(r,t,n,s),s=s.parent}}function Hd(e,t,n,r){let s=Ls(t,e,r,!0);rs(()=>{Oo(r[t],s)},n)}function Ls(e,t,n=tt,r=!1){if(n){let s=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...a)=>{Tt();let u=is(n),f=bt(t,n,e,a);return u(),At(),f});return r?s.unshift(i):s.push(i),i}}var jt=e=>(t,n=tt)=>{(!_o||e==="sp")&&Ls(e,(...r)=>t(...r),n)},jd=jt("bm"),Vt=jt("m"),ui=jt("bu"),ci=jt("u"),ro=jt("bum"),rs=jt("um"),Bd=jt("sp"),Gd=jt("rtg"),Wd=jt("rtc");function Kd(e,t=tt){Ls("ec",e,t)}var pi="components",Yd="directives";function We(e,t){return fi(pi,e,!0,t)||e}var Jd=Symbol.for("v-ndc");function ye(e){return fi(Yd,e)}function fi(e,t,n=!0,r=!1){let s=mt||tt;if(s){let i=s.type;if(e===pi){let u=Iu(i,!1);if(u&&(u===t||u===Je(t)||u===Xt(Je(t))))return i}let a=Ur(s[e]||i[e],t)||Ur(s.appContext[e],t);return!a&&r?i:a}}function Ur(e,t){return e&&(e[t]||e[Je(t)]||e[Xt(Je(t))])}function ae(e,t,n,r){let s,i=n&&n[r],a=be(e);if(a||ze(e)){let u=a&&Ut(e),f=!1,m=!1;u&&(f=!lt(e),m=Ct(e),e=Bo(e)),s=new Array(e.length);for(let g=0,w=e.length;gt(u,f,void 0,i&&i[f]));else{let u=Object.keys(e);s=new Array(u.length);for(let f=0,m=u.length;fe?Vi(e)?zs(e):Rn(e.parent):null;var Xo=Ge(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Rn(e.parent),$root:e=>Rn(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Vn(e),$forceUpdate:e=>e.f||(e.f=()=>{In(e.update)}),$nextTick:e=>e.n||(e.n=rt.bind(e.proxy)),$watch:e=>Ld.bind(e)});var Sn=(e,t)=>e!==Pe&&!e.__isScriptSetup&&De(e,t),Qd={get({_:e},t){if(t==="__v_skip")return!0;let{ctx:n,setupState:r,data:s,props:i,accessCache:a,type:u,appContext:f}=e;if(t[0]!=="$"){let h=a[t];if(h!==void 0)switch(h){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return i[t]}else{if(Sn(r,t))return a[t]=1,r[t];if(s!==Pe&&De(s,t))return a[t]=2,s[t];if(De(i,t))return a[t]=3,i[t];if(n!==Pe&&De(n,t))return a[t]=4,n[t];Tn&&(a[t]=0)}}let m=Xo[t],g,w;if(m)return t==="$attrs"&&xe(e.attrs,"get",""),m(e);if((g=u.__cssModules)&&(g=g[t]))return g;if(n!==Pe&&De(n,t))return a[t]=4,n[t];if(w=f.config.globalProperties,De(w,t))return w[t]},set({_:e},t,n){let{data:r,setupState:s,ctx:i}=e;return Sn(s,t)?(s[t]=n,!0):r!==Pe&&De(r,t)?(r[t]=n,!0):De(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,props:i,type:a}},u){let f;return!!(n[u]||e!==Pe&&u[0]!=="$"&&De(e,u)||Sn(t,u)||De(i,u)||De(r,u)||De(Xo,u)||De(s.config.globalProperties,u)||(f=a.__cssModules)&&f[u])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:De(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Fr(e){return be(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}var Tn=!0;function Xd(e){let t=Vn(e),n=e.proxy,r=e.ctx;Tn=!1,t.beforeCreate&&zr(t.beforeCreate,e,"bc");let{data:s,computed:i,methods:a,watch:u,provide:f,inject:m,created:g,beforeMount:w,mounted:h,beforeUpdate:b,updated:E,activated:k,deactivated:R,beforeDestroy:D,beforeUnmount:T,destroyed:P,unmounted:H,render:q,renderTracked:U,renderTriggered:ie,errorCaptured:re,serverPrefetch:C,expose:O,inheritAttrs:G,components:J,directives:ee,filters:Q}=t;if(m&&Zd(m,r,null),a)for(let pe in a){let le=a[pe];we(le)&&(r[pe]=le.bind(n))}if(s){let pe=s.call(n,n);Te(pe)&&(e.data=He(pe))}if(Tn=!0,i)for(let pe in i){let le=i[pe],Ie=we(le)?le.bind(n,n):we(le.get)?le.get.bind(n,n):at,_e=!we(le)&&we(le.set)?le.set.bind(n):at,Ae=ot({get:Ie,set:_e});Object.defineProperty(r,pe,{enumerable:!0,configurable:!0,get:()=>Ae.value,set:Ee=>Ae.value=Ee})}if(u)for(let pe in u)hi(u[pe],r,n,pe);if(f){let pe=we(f)?f.call(n):f;Reflect.ownKeys(pe).forEach(le=>{no(le,pe[le])})}g&&zr(g,e,"c");function ue(pe,le){be(le)?le.forEach(Ie=>pe(Ie.bind(n))):le&&pe(le.bind(n))}if(ue(jd,w),ue(Vt,h),ue(ui,b),ue(ci,E),ue(ai,k),ue(li,R),ue(Kd,re),ue(Wd,U),ue(Gd,ie),ue(ro,T),ue(rs,H),ue(Bd,C),be(O))if(O.length){let pe=e.exposed||(e.exposed={});O.forEach(le=>{Object.defineProperty(pe,le,{get:()=>n[le],set:Ie=>n[le]=Ie,enumerable:!0})})}else e.exposed||(e.exposed={});q&&e.render===at&&(e.render=q),G!=null&&(e.inheritAttrs=G),J&&(e.components=J),ee&&(e.directives=ee),C&&Pn(e)}function Zd(e,t,n=at){be(e)&&(e=An(e));for(let r in e){let s=e[r],i;Te(s)?"default"in s?i=ut(s.from||r,s.default,!0):i=ut(s.from||r):i=ut(s),Ze(i)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>i.value,set:a=>i.value=a}):t[r]=i}}function zr(e,t,n){bt(be(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function hi(e,t,n,r){let s=r.includes(".")?ni(n,r):()=>n[r];if(ze(e)){let i=t[e];we(i)&&je(s,i)}else if(we(e))je(s,e.bind(n));else if(Te(e))if(be(e))e.forEach(i=>hi(i,t,n,r));else{let i=we(e.handler)?e.handler.bind(n):t[e.handler];we(i)&&je(s,i,e)}}function Vn(e){let t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:i,config:{optionMergeStrategies:a}}=e.appContext,u=i.get(t),f;return u?f=u:!s.length&&!n&&!r?f=t:(f={},s.length&&s.forEach(m=>As(f,m,a,!0)),As(f,t,a)),Te(t)&&i.set(t,f),f}function As(e,t,n,r=!1){let{mixins:s,extends:i}=t;i&&As(e,i,n,!0),s&&s.forEach(a=>As(e,a,n,!0));for(let a in t)if(!(r&&a==="expose")){let u=xd[a]||n&&n[a];e[a]=u?u(e[a],t[a]):t[a]}return e}var xd={data:Hr,props:jr,emits:jr,methods:Yo,computed:Yo,beforeCreate:st,created:st,beforeMount:st,mounted:st,beforeUpdate:st,updated:st,beforeDestroy:st,beforeUnmount:st,destroyed:st,unmounted:st,activated:st,deactivated:st,errorCaptured:st,serverPrefetch:st,components:Yo,directives:Yo,watch:tu,provide:Hr,inject:eu};function Hr(e,t){return t?e?function(){return Ge(we(e)?e.call(this,this):e,we(t)?t.call(this,this):t)}:t:e}function eu(e,t){return Yo(An(e),An(t))}function An(e){if(be(e)){let t={};for(let n=0;nt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Je(t)}Modifiers`]||e[`${St(t)}Modifiers`];function ru(e,t,...n){if(e.isUnmounted)return;let r=e.vnode.props||Pe,s=n,i=t.startsWith("update:"),a=i&&nu(r,t.slice(7));a&&(a.trim&&(s=n.map(g=>ze(g)?g.trim():g)),a.number&&(s=s.map(Vo)));let u,f=r[u=Po(t)]||r[u=Po(Je(t))];!f&&i&&(f=r[u=Po(St(t))]),f&&bt(f,e,6,s);let m=r[u+"Once"];if(m){if(!e.emitted)e.emitted={};else if(e.emitted[u])return;e.emitted[u]=!0,bt(m,e,6,s)}}var iu=new WeakMap;function vi(e,t,n=!1){let r=n?iu:t.emitsCache,s=r.get(e);if(s!==void 0)return s;let i=e.emits,a={},u=!1;if(!we(e)){let f=m=>{let g=vi(m,t,!0);g&&(u=!0,Ge(a,g))};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}return!i&&!u?(Te(e)&&r.set(e,null),null):(be(i)?i.forEach(f=>a[f]=null):Ge(a,i),Te(e)&&r.set(e,a),a)}function Us(e,t){return!e||!fo(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),De(e,t[0].toLowerCase()+t.slice(1))||De(e,St(t))||De(e,t))}function Nn(e){let{type:t,vnode:n,proxy:r,withProxy:s,propsOptions:[i],slots:a,attrs:u,emit:f,render:m,renderCache:g,props:w,data:h,setupState:b,ctx:E,inheritAttrs:k}=e,R=Rs(e),D,T;try{if(n.shapeFlag&4){let q=s||r,U=q;D=Pt(m.call(U,q,g,w,b,h,E)),T=u}else{let q=t;D=Pt(q.length>1?q(w,{attrs:u,slots:a,emit:f}):q(w,null)),T=t.props?u:au(u)}}catch(q){so.length=0,ss(q,e,1),D=Ce(Ht)}let P=D,H;if(T&&k!==!1){let q=Object.keys(T),{shapeFlag:U}=P;q.length&&U&7&&(i&&q.some(ho)&&(T=lu(T,i)),P=Co(P,T,!1,!0))}if(n.dirs&&(P=Co(P,null,!1,!0),P.dirs=P.dirs?P.dirs.concat(n.dirs):n.dirs),n.transition){let q=qs(P.type)&&ri(P)||P;Ms(q,n.transition)}return D=P,Rs(R),D}var au=e=>{let t;for(let n in e)(n==="class"||n==="style"||fo(n))&&((t||(t={}))[n]=e[n]);return t},lu=(e,t)=>{let n={};for(let r in e)(!ho(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function du(e,t,n){let{props:r,children:s,component:i}=e,{props:a,children:u,patchFlag:f}=t,m=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&f>=0){if(f&1024)return!0;if(f&16)return r?Br(r,a,m):!!a;if(f&8){let g=t.dynamicProps;for(let w=0;wObject.create(yi),wi=e=>Object.getPrototypeOf(e)===yi;function cu(e,t,n,r=!1){let s={},i=bi();e.propsDefaults=Object.create(null),ki(e,t,s,i);for(let a in e.propsOptions[0])a in s||(s[a]=void 0);n?e.props=r?s:Go(s):e.type.props?e.props=s:e.props=i,e.attrs=i}function pu(e,t,n,r){let{props:s,attrs:i,vnode:{patchFlag:a}}=e,u=Re(s),[f]=e.propsOptions,m=!1;if((r||a>0)&&!(a&16)){if(a&8){let g=e.vnode.dynamicProps;for(let w=0;w{f=!0;let[h,b]=Ei(w,t,!0);Ge(a,h),b&&u.push(...b)};!n&&t.mixins.length&&t.mixins.forEach(g),e.extends&&g(e.extends),e.mixins&&e.mixins.forEach(g)}if(!i&&!f)return Te(e)&&r.set(e,Qt),Qt;if(be(i))for(let g=0;ge==="_"||e==="_ctx"||e==="$stable",Mn=e=>be(e)?e.map(Pt):[Pt(e)],hu=(e,t,n)=>{if(t._n)return t;let r=qd((...s)=>Mn(t(...s)),n);return r._c=!1,r},Ci=(e,t,n)=>{let r=e._ctx;for(let s in e){if(qn(s))continue;let i=e[s];if(we(i))t[s]=hu(s,i,r);else if(i!=null){let a=Mn(i);t[s]=()=>a}}},_i=(e,t)=>{let n=Mn(t);e.slots.default=()=>n},Si=(e,t,n)=>{for(let r in t)(n||!qn(r))&&(e[r]=t[r])},mu=(e,t,n)=>{let r=e.slots=bi();if(e.vnode.shapeFlag&32){let s=t._;s?(Si(r,t,n),n&&hs(r,"_",s,!0)):Ci(t,r)}else t&&_i(e,t)},vu=(e,t,n)=>{let{vnode:r,slots:s}=e,i=!0,a=Pe;if(r.shapeFlag&32){let u=t._;u?n&&u===1?i=!1:Si(s,t,n):(i=!t.$stable,Ci(t,s)),a=t}else t&&(_i(e,t),a={default:1});if(i)for(let u in s)!qn(u)&&a[u]==null&&delete s[u]};function gu(){let e=[]}var dt=ku;function Ni(e){return yu(e)}function yu(e,t){gu();let n=qo();n.__VUE__=!0;let{insert:r,remove:s,patchProp:i,createElement:a,createText:u,createComment:f,setText:m,setElementText:g,parentNode:w,nextSibling:h,setScopeId:b=at,insertStaticContent:E}=e,k=(v,S,V,F=null,B=null,L=null,W=void 0,x=null,Z=!!S.dynamicChildren)=>{if(v===S)return;v&&!Ko(v,S)&&(F=ne(v),Ve(v,B,L,!0),v=null),S.patchFlag===-2&&(Z=!1,S.dynamicChildren=null);let{type:K,ref:fe,shapeFlag:se}=S;switch(K){case Fs:R(v,S,V,F);break;case Ht:D(v,S,V,F);break;case Zo:v==null&&T(S,V,F,W);break;case X:ee(v,S,V,F,B,L,W,x,Z);break;default:se&1?U(v,S,V,F,B,L,W,x,Z):se&6?Q(v,S,V,F,B,L,W,x,Z):(se&64||se&128)&&K.process(v,S,V,F,B,L,W,x,Z,I)}fe!=null&&B?Jo(fe,v&&v.ref,L,S||v,!S):fe==null&&v&&v.ref!=null&&Jo(v.ref,null,L,v,!0)},R=(v,S,V,F)=>{if(v==null)r(S.el=u(S.children),V,F);else{let B=S.el=v.el;S.children!==v.children&&m(B,S.children)}},D=(v,S,V,F)=>{v==null?r(S.el=f(S.children||""),V,F):S.el=v.el},T=(v,S,V,F)=>{[v.el,v.anchor]=E(v.children,S,V,F,v.el,v.anchor)},P=(v,S,V,F)=>{if(S.children!==v.children){let B=h(v.anchor);q(v),[S.el,S.anchor]=E(S.children,V,B,F)}else S.el=v.el,S.anchor=v.anchor},H=({el:v,anchor:S},V,F)=>{let B;for(;v&&v!==S;)B=h(v),r(v,V,F),v=B;r(S,V,F)},q=({el:v,anchor:S})=>{let V;for(;v&&v!==S;)V=h(v),s(v),v=V;s(S)},U=(v,S,V,F,B,L,W,x,Z)=>{if(S.type==="svg"?W="svg":S.type==="math"&&(W="mathml"),v==null)ie(S,V,F,B,L,W,x,Z);else{let K=v.el&&v.el._isVueCE?v.el:null;try{K&&K._beginPatch(),O(v,S,B,L,W,x,Z)}finally{K&&K._endPatch()}}},ie=(v,S,V,F,B,L,W,x)=>{let Z,K,{props:fe,shapeFlag:se,transition:de,dirs:ge}=v;if(Z=v.el=a(v.type,L,fe&&fe.is,fe),se&8?g(Z,v.children):se&16&&C(v.children,Z,null,F,B,Dn(v,L),W,x),ge&&to(v,null,F,"created"),re(Z,v,v.scopeId,W,F),fe){for(let $e in fe)$e!=="value"&&!mo($e)&&i(Z,$e,null,fe[$e],L,F);"value"in fe&&i(Z,"value",null,fe.value,L),(K=fe.onVnodeBeforeMount)&&Ot(K,F,v)}ge&&to(v,null,F,"beforeMount");let Ne=bu(B,de);Ne&&de.beforeEnter(Z),r(Z,S,V),((K=fe&&fe.onVnodeMounted)||Ne||ge)&&dt(()=>{let qe;try{K&&Ot(K,F,v),Ne&&de.enter(Z),ge&&to(v,null,F,"mounted")}finally{}},B)},re=(v,S,V,F,B)=>{if(V&&b(v,V),F)for(let L=0;L{for(let K=Z;K{let x=S.el=v.el,{patchFlag:Z,dynamicChildren:K,dirs:fe}=S;Z|=v.patchFlag&16;let se=v.props||Pe,de=S.props||Pe,ge;if(V&&oo(V,!1),(ge=de.onVnodeBeforeUpdate)&&Ot(ge,V,S,v),fe&&to(S,v,V,"beforeUpdate"),V&&oo(V,!0),K&&(!v.dynamicChildren||v.dynamicChildren.length!==K.length)&&(Z=0,W=!1,K=null),(se.innerHTML&&de.innerHTML==null||se.textContent&&de.textContent==null)&&g(x,""),K?G(v.dynamicChildren,K,x,V,F,Dn(S,B),L):W||Ie(v,S,x,null,V,F,Dn(S,B),L,!1),Z>0){if(Z&16)J(x,se,de,V,B);else if(Z&2&&se.class!==de.class&&i(x,"class",null,de.class,B),Z&4&&i(x,"style",se.style,de.style,B),Z&8){let Ne=S.dynamicProps;for(let $e=0;$e{ge&&Ot(ge,V,S,v),fe&&to(S,v,V,"updated")},F)},G=(v,S,V,F,B,L,W)=>{for(let x=0;x{if(S!==V){if(S!==Pe)for(let L in S)!mo(L)&&!(L in V)&&i(v,L,S[L],null,B,F);for(let L in V){if(mo(L))continue;let W=V[L],x=S[L];W!==x&&L!=="value"&&i(v,L,x,W,B,F)}"value"in V&&i(v,"value",S.value,V.value,B)}},ee=(v,S,V,F,B,L,W,x,Z)=>{let K=S.el=v?v.el:u(""),fe=S.anchor=v?v.anchor:u(""),{patchFlag:se,dynamicChildren:de,slotScopeIds:ge}=S;ge&&(x=x?x.concat(ge):ge),v==null?(r(K,V,F),r(fe,V,F),C(S.children||[],V,fe,B,L,W,x,Z)):se>0&&se&64&&de&&v.dynamicChildren&&v.dynamicChildren.length===de.length?(G(v.dynamicChildren,de,V,B,L,W,x),(S.key!=null||B&&S===B.subTree)&&Di(v,S,!0)):Ie(v,S,V,fe,B,L,W,x,Z)},Q=(v,S,V,F,B,L,W,x,Z)=>{S.slotScopeIds=x,v==null?S.shapeFlag&512?B.ctx.activate(S,V,F,W,Z):oe(S,V,F,B,L,W,Z):ue(v,S,Z)},oe=(v,S,V,F,B,L,W)=>{let x=v.component=Du(v,F,B);if($s(v)&&(x.ctx.renderer=I),Ru(x,!1,W),x.asyncDep){if(B&&B.registerDep(x,pe,W),!v.el){let Z=x.subTree=Ce(Ht);D(null,Z,S,V),v.placeholder=Z.el}}else pe(x,v,S,V,B,L,W)},ue=(v,S,V)=>{let F=S.component=v.component;if(du(v,S,V))if(F.asyncDep&&!F.asyncResolved){le(F,S,V);return}else F.next=S,F.update();else S.el=v.el,F.vnode=S},pe=(v,S,V,F,B,L,W)=>{let x=()=>{if(v.isMounted){let{next:se,bu:de,u:ge,parent:Ne,vnode:$e}=v;{let pt=Ri(v);if(pt){se&&(se.el=$e.el,le(v,se,W)),pt.asyncDep.then(()=>{dt(()=>{v.isUnmounted||K()},B)});return}}let qe=se,Ke;oo(v,!1),se?(se.el=$e.el,le(v,se,W)):se=$e,de&&vo(de),(Ke=se.props&&se.props.onVnodeBeforeUpdate)&&Ot(Ke,Ne,se,$e),oo(v,!0);let Ye=Nn(v),kt=v.subTree;v.subTree=Ye,k(kt,Ye,w(kt.el),ne(kt),v,B,L),se.el=Ye.el,qe===null&&uu(v,Ye.el),ge&&dt(ge,B),(Ke=se.props&&se.props.onVnodeUpdated)&&dt(()=>Ot(Ke,Ne,se,$e),B)}else{let se,{el:de,props:ge}=S,{bm:Ne,m:$e,parent:qe,root:Ke,type:Ye}=v,kt=Qo(S);if(oo(v,!1),Ne&&vo(Ne),!kt&&(se=ge&&ge.onVnodeBeforeMount)&&Ot(se,qe,S),oo(v,!0),de&&M){let pt=()=>{v.subTree=Nn(v),M(de,v.subTree,v,B,null)};kt&&Ye.__asyncHydrate?Ye.__asyncHydrate(de,v,pt):pt()}else{Ke.ce&&Ke.ce._hasShadowRoot()&&Ke.ce._injectChildStyle(Ye,v.parent?v.parent.type:void 0);let pt=v.subTree=Nn(v);k(null,pt,V,F,v,B,L),S.el=pt.el}if($e&&dt($e,B),!kt&&(se=ge&&ge.onVnodeMounted)){let pt=S;dt(()=>Ot(se,qe,pt),B)}(S.shapeFlag&256||qe&&Qo(qe.vnode)&&qe.vnode.shapeFlag&256)&&v.a&&dt(v.a,B),v.isMounted=!0,S=V=F=null}};v.scope.on();let Z=v.effect=new bo(x);v.scope.off();let K=v.update=Z.run.bind(Z),fe=v.job=Z.runIfDirty.bind(Z);fe.i=v,fe.id=v.uid,Z.scheduler=()=>In(fe),oo(v,!0),K()},le=(v,S,V)=>{S.component=v;let F=v.vnode.props;v.vnode=S,v.next=null,pu(v,S.props,F,V),vu(v,S.children,V),Tt(),qr(v),At()},Ie=(v,S,V,F,B,L,W,x,Z=!1)=>{let K=v&&v.children,fe=v?v.shapeFlag:0,se=S.children,{patchFlag:de,shapeFlag:ge}=S;if(de>0){if(de&128){Ae(K,se,V,F,B,L,W,x,Z);return}else if(de&256){_e(K,se,V,F,B,L,W,x,Z);return}}ge&8?(fe&16&&z(K,B,L),se!==K&&g(V,se)):fe&16?ge&16?Ae(K,se,V,F,B,L,W,x,Z):z(K,B,L,!0):(fe&8&&g(V,""),ge&16&&C(se,V,F,B,L,W,x,Z))},_e=(v,S,V,F,B,L,W,x,Z)=>{v=v||Qt,S=S||Qt;let K=v.length,fe=S.length,se=Math.min(K,fe),de;for(de=0;defe?z(v,B,L,!0,!1,se):C(S,V,F,B,L,W,x,Z,se)},Ae=(v,S,V,F,B,L,W,x,Z)=>{let K=0,fe=S.length,se=v.length-1,de=fe-1;for(;K<=se&&K<=de;){let ge=v[K],Ne=S[K]=Z?zt(S[K]):Pt(S[K]);if(Ko(ge,Ne))k(ge,Ne,V,null,B,L,W,x,Z);else break;K++}for(;K<=se&&K<=de;){let ge=v[se],Ne=S[de]=Z?zt(S[de]):Pt(S[de]);if(Ko(ge,Ne))k(ge,Ne,V,null,B,L,W,x,Z);else break;se--,de--}if(K>se){if(K<=de){let ge=de+1,Ne=gede)for(;K<=se;)Ve(v[K],B,L,!0),K++;else{let ge=K,Ne=K,$e=new Map;for(K=Ne;K<=de;K++){let ft=S[K]=Z?zt(S[K]):Pt(S[K]);ft.key!=null&&$e.set(ft.key,K)}let qe,Ke=0,Ye=de-Ne+1,kt=!1,pt=0,Ao=new Array(Ye);for(K=0;K=Ye){Ve(ft,B,L,!0);continue}let _t;if(ft.key!=null)_t=$e.get(ft.key);else for(qe=Ne;qe<=de;qe++)if(Ao[qe-Ne]===0&&Ko(ft,S[qe])){_t=qe;break}_t===void 0?Ve(ft,B,L,!0):(Ao[_t-Ne]=K+1,_t>=pt?pt=_t:kt=!0,k(ft,S[_t],V,null,B,L,W,x,Z),Ke++)}let rr=kt?wu(Ao):Qt;for(qe=rr.length-1,K=Ye-1;K>=0;K--){let ft=Ne+K,_t=S[ft],ir=S[ft+1],ar=ft+1{let{el:L,type:W,transition:x,children:Z,shapeFlag:K}=v;if(K&6){Ee(v.component.subTree,S,V,F);return}if(K&128){v.suspense.move(S,V,F);return}if(K&64){W.move(v,S,V,I);return}if(W===X){r(L,S,V);for(let se=0;sex.enter(L),B));else{let{leave:se,delayLeave:de,afterLeave:ge}=x,Ne=()=>{v.ctx.isUnmounted?s(L):r(L,S,V)},$e=()=>{let qe=L._isLeaving||!!L[_n];L._isLeaving&&L[_n](!0),x.persisted&&!qe?Ne():se(L,()=>{Ne(),ge&&ge()})};de?de(L,Ne,$e):$e()}else r(L,S,V)},Ve=(v,S,V,F=!1,B=!1)=>{let{type:L,props:W,ref:x,children:Z,dynamicChildren:K,shapeFlag:fe,patchFlag:se,dirs:de,cacheIndex:ge,memo:Ne}=v;if(se===-2&&(B=!1),x!=null&&(Tt(),Jo(x,null,V,v,!0),At()),ge!=null&&(S.renderCache[ge]=void 0),fe&256){S.ctx.deactivate(v);return}let $e=fe&1&&de,qe=!Qo(v),Ke;if(qe&&(Ke=W&&W.onVnodeBeforeUnmount)&&Ot(Ke,S,v),fe&6)Ue(v.component,V,F);else{if(fe&128){v.suspense.unmount(V,F);return}$e&&to(v,null,S,"beforeUnmount"),fe&64?v.type.remove(v,S,V,I,F):K&&!K.hasOnce&&(L!==X||se>0&&se&64)?z(K,S,V,!1,!0):(L===X&&se&384||!B&&fe&16)&&z(Z,S,V),F&&Se(v)}let Ye=Ne!=null&&ge==null;(qe&&(Ke=W&&W.onVnodeUnmounted)||$e||Ye)&&dt(()=>{Ke&&Ot(Ke,S,v),$e&&to(v,null,S,"unmounted"),Ye&&(v.el=null)},V)},Se=v=>{let{type:S,el:V,anchor:F,transition:B}=v;if(S===X){Le(V,F);return}if(S===Zo){q(v);return}let L=()=>{s(V),B&&!B.persisted&&B.afterLeave&&B.afterLeave()};if(v.shapeFlag&1&&B&&!B.persisted){let{leave:W,delayLeave:x}=B,Z=()=>W(V,L);x?x(v.el,L,Z):Z()}else L()},Le=(v,S)=>{let V;for(;v!==S;)V=h(v),s(v),v=V;s(S)},Ue=(v,S,V)=>{let{bum:F,scope:B,job:L,subTree:W,um:x,m:Z,a:K}=v;Wr(Z),Wr(K),F&&vo(F),B.stop(),L&&(L.flags|=8,Ve(W,v,S,V)),x&&dt(x,S),dt(()=>{v.isUnmounted=!0},S)},z=(v,S,V,F=!1,B=!1,L=0)=>{for(let W=L;W{if(v.shapeFlag&6)return ne(v.component.subTree);if(v.shapeFlag&128)return v.suspense.next();let S=h(v.anchor||v.el),V=S&&S[Ud];return V?h(V):S},te=!1,_=(v,S,V)=>{let F;v==null?S._vnode&&(Ve(S._vnode,null,null,!0),F=S._vnode.component):k(S._vnode||null,v,S,null,null,null,V),S._vnode=v,te||(te=!0,qr(F),ei(),te=!1)},I={p:k,um:Ve,m:Ee,r:Se,mt:oe,mc:C,pc:Ie,pbc:G,n:ne,o:e},j,M;return t&&([j,M]=t(I)),{render:_,hydrate:j,createApp:su(_,j)}}function Dn({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function oo({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function bu(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Di(e,t,n=!1){let r=e.children,s=t.children;if(be(r)&&be(s))for(let i=0;i>1,e[n[u]]0&&(t[r]=n[i-1]),n[i]=r)}}for(i=n.length,a=n[i-1];i-- >0;)n[i]=a,a=t[a];return n}function Ri(e){let t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Ri(t)}function Wr(e){if(e)for(let t=0;te.__isSuspense;function ku(e,t){t&&t.pendingBranch?be(e)?t.effects.push(...e):t.effects.push(e):xr(e)}var X=Symbol.for("v-fgt"),Fs=Symbol.for("v-txt"),Ht=Symbol.for("v-cmt"),Zo=Symbol.for("v-stc"),so=[],vt=null;function l(e=!1){so.push(vt=e?null:[])}function Oi(){so.pop(),vt=so[so.length-1]||null}var es=1;function Os(e,t=!1){es+=e,e<0&&vt&&t&&(vt.hasOnce=!0)}function Ii(e){return e.dynamicChildren=es>0?vt||Qt:null,Oi(),es>0&&vt&&vt.push(e),e}function d(e,t,n,r,s,i){return Ii(o(e,t,n,r,s,i,!0))}function qt(e,t,n,r,s){return Ii(Ce(e,t,n,r,s,!0))}function Is(e){return e?e.__v_isVNode===!0:!1}function Ko(e,t){return e.type===t.type&&e.key===t.key}var Pi=({key:e})=>e??null,Ns=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ze(e)||Ze(e)||we(e)?{i:mt,r:e,k:t,f:!!n}:e:null);function o(e,t=null,n=null,r=0,s=null,i=e===X?0:1,a=!1,u=!1){let f={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Pi(t),ref:t&&Ns(t),scopeId:oi,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:mt};return u?(Ps(f,n),i&128&&e.normalize(f)):n&&(f.shapeFlag|=ze(n)?8:16),es>0&&!a&&vt&&(f.patchFlag>0||i&6)&&f.patchFlag!==32&&vt.push(f),f}var Ce=Eu;function Eu(e,t=null,n=null,r=0,s=null,i=!1){if((!e||e===Jd)&&(e=Ht),Is(e)){let u=Co(e,t,!0);return n&&Ps(u,n),es>0&&!i&&vt&&(u.shapeFlag&6?vt[vt.indexOf(e)]=u:vt.push(u)),u.patchFlag=-2,u}if(Pu(e)&&(e=e.__vccOpts),t){t=Cu(t);let{class:u,style:f}=t;u&&!ze(u)&&(t.class=A(u)),Te(f)&&(Wo(f)&&!be(f)&&(f=Ge({},f)),t.style=Me(f))}let a=ze(e)?1:Ai(e)?128:qs(e)?64:Te(e)?4:we(e)?2:0;return o(e,t,n,r,s,a,i,!0)}function Cu(e){return e?Wo(e)||wi(e)?Ge({},e):e:null}function Co(e,t,n=!1,r=!1){let{props:s,ref:i,patchFlag:a,children:u,transition:f}=e,m=t?_u(s||{},t):s,g={__v_isVNode:!0,__v_skip:!0,type:e.type,props:m,key:m&&Pi(m),ref:t&&t.ref?n&&i?be(i)?i.concat(Ns(t)):[i,Ns(t)]:Ns(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:u,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==X?a===-1?16:a|16:a,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:f,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Co(e.ssContent),ssFallback:e.ssFallback&&Co(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return f&&r&&Ms(g,f.clone(g)),g}function y(e=" ",t=0){return Ce(Fs,null,e,t)}function ce(e,t){let n=Ce(Zo,null,e);return n.staticCount=t,n}function p(e="",t=!1){return t?(l(),qt(Ht,null,e)):Ce(Ht,null,e)}function Pt(e){return e==null||typeof e=="boolean"?Ce(Ht):be(e)?Ce(X,null,e.slice()):Is(e)?zt(e):Ce(Fs,null,String(e))}function zt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Co(e)}function Ps(e,t){let n=0,{shapeFlag:r}=e;if(t==null)t=null;else if(be(t))n=16;else if(typeof t=="object")if(r&65){let s=t.default;s&&(s._c&&(s._d=!1),Ps(e,s()),s._c&&(s._d=!0));return}else{n=32;let s=t._;!s&&!wi(t)?t._ctx=mt:s===3&&mt&&(mt.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(we(t)){if(r&65){Ps(e,{default:t});return}t={default:t,_ctx:mt},n=32}else t=String(t),r&64?(n=16,t=[y(t)]):n=8;e.children=t,e.shapeFlag|=n}function _u(...e){let t={};for(let n=0;ntt||mt,Vs,ts;{let e=qo(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),i=>{s.length>1?s.forEach(a=>a(i)):s[0](i)}};Vs=t("__VUE_INSTANCE_SETTERS__",n=>tt=n),ts=t("__VUE_SSR_SETTERS__",n=>_o=n)}var is=e=>{let t=tt;return Vs(e),e.scope.on(),()=>{e.scope.off(),Vs(t)}},Kr=()=>{tt&&tt.scope.off(),Vs(null)};function Vi(e){return e.vnode.shapeFlag&4}var _o=!1;function Ru(e,t=!1,n=!1){t&&ts(t);let{props:r,children:s}=e.vnode,i=Vi(e);cu(e,r,i,t),mu(e,s,n||t);let a=i?Tu(e,t):void 0;return t&&ts(!1),a}function Tu(e,t){let n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Qd);let{setup:r}=n;if(r){Tt();let s=e.setupContext=r.length>1?Ou(e):null,i=is(e),a=os(r,e,0,[e.props,s]),u=nn(a);if(At(),i(),(u||e.sp)&&!Qo(e)&&Pn(e),u){if(a.then(Kr,Kr),t)return a.then(f=>{ts(!0);try{Yr(e,f,t)}finally{ts(!1)}}).catch(f=>{ss(f,e,0)});e.asyncDep=a}else Yr(e,a,t)}else qi(e,t)}function Yr(e,t,n){we(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Te(t)&&(e.setupState=_s(t)),qi(e,n)}var Jr,Qr;function qi(e,t,n){let r=e.type;if(!e.render){if(!t&&Jr&&!r.render){let s=r.template||Vn(e).template;if(s){let{isCustomElement:i,compilerOptions:a}=e.appContext.config,{delimiters:u,compilerOptions:f}=r,m=Ge(Ge({isCustomElement:i,delimiters:u},a),f);r.render=Jr(s,m)}}e.render=r.render||at,Qr&&Qr(e)}{let s=is(e);Tt();try{Xd(e)}finally{At(),s()}}}var Au={get(e,t){return xe(e,"get",""),e[t]}};function Ou(e){let t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Au),slots:e.slots,emit:e.emit,expose:t}}function zs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(_s(Cn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Xo)return Xo[n](e)},has(t,n){return n in t||n in Xo}})):e.proxy}function Iu(e,t=!0){return we(e)?e.displayName||e.name:e.name||t&&e.__name}function Pu(e){return we(e)&&"__vccOpts"in e}var ot=(e,t)=>Ir(e,t,_o);function ke(e,t,n){try{Os(-1);let r=arguments.length;return r===2?Te(t)&&!be(t)?Is(t)?Ce(e,null,[t]):Ce(e,t):Ce(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Is(n)&&(n=[n]),Ce(e,t,n))}finally{Os(1)}}var Vu="3.5.42";var zn,Mi=typeof window<"u"&&window.trustedTypes;if(Mi)try{zn=Mi.createPolicy("vue",{createHTML:e=>e})}catch{}var Ki=zn?e=>zn.createHTML(e):e=>e,qu="http://www.w3.org/2000/svg",Mu="http://www.w3.org/1998/Math/MathML",Bt=typeof document<"u"?document:null,$i=Bt&&Bt.createElement("template"),$u={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{let t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{let s=t==="svg"?Bt.createElementNS(qu,e):t==="mathml"?Bt.createElementNS(Mu,e):n?Bt.createElement(e,{is:n}):Bt.createElement(e);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>Bt.createTextNode(e),createComment:e=>Bt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Bt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,i){let a=n?n.previousSibling:t.lastChild;if(s&&(s===i||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===i||!(s=s.nextSibling)););else{$i.innerHTML=Ki(r==="svg"?`${e}`:r==="mathml"?`${e}`:e);let u=$i.content;if(r==="svg"||r==="mathml"){let f=u.firstChild;for(;f.firstChild;)u.appendChild(f.firstChild);u.removeChild(f)}t.insertBefore(u,n)}return[a?a.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};var Lu=Symbol("_vtc");function Uu(e,t,n){let r=e[Lu];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}var Gs=Symbol("_vod"),Yi=Symbol("_vsh"),Y={name:"show",beforeMount(e,{value:t},{transition:n}){e[Gs]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):as(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),as(e,!0),r.enter(e)):r.leave(e,()=>{as(e,!1)}):as(e,t))},beforeUnmount(e,{value:t}){as(e,t)}};function as(e,t){e.style.display=t?e[Gs]:"none",e[Yi]=!t}var Fu=Symbol("");var zu=/(?:^|;)\s*display\s*:/;function Hu(e,t,n){let r=e.style,s=ze(n),i=!1;if(n&&!s){if(t)if(ze(t))for(let a of t.split(";")){let u=a.slice(0,a.indexOf(":")).trim();n[u]==null&&ls(r,u,"")}else for(let a in t)n[a]==null&&ls(r,a,"");for(let a in n){a==="display"&&(i=!0);let u=n[a];u!=null?Bu(e,a,!ze(t)&&t?t[a]:void 0,u)||ls(r,a,u):ls(r,a,"")}}else if(s){if(t!==n){let a=r[Fu];a&&(n+=";"+a),r.cssText=n,i=zu.test(n)}}else t&&e.removeAttribute("style");Gs in e&&(e[Gs]=i?r.display:"",e[Yi]&&(r.display="none"))}var Hs=/\s*!important$/;function ls(e,t,n){if(be(n))n.forEach(r=>ls(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))Hs.test(n)?e.setProperty(t,n.replace(Hs,""),"important"):e.setProperty(t,n);else{let r=ju(e,t);Hs.test(n)?e.setProperty(St(r),n.replace(Hs,""),"important"):e[r]=n}}var Li=["Webkit","Moz","ms"],Ln={};function ju(e,t){let n=Ln[t];if(n)return n;let r=Je(t);if(r!=="filter"&&r in e)return Ln[t]=r;r=Xt(r);for(let s=0;sUn||(Qu.then(()=>Un=0),Un=Date.now());function Zu(e,t){let n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;let s=n.value;if(be(s)){let i=r.stopImmediatePropagation;r.stopImmediatePropagation=()=>{i.call(r),r._stopped=!0};let a=s.slice(),u=[r];for(let f=0;fe.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,xu=(e,t,n,r,s,i)=>{let a=s==="svg";t==="class"?Uu(e,r,a):t==="style"?Hu(e,n,r):fo(t)?ho(t)||Wu(e,t,n,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):ec(e,t,r,a))?(zi(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Fi(e,t,r,a,i,t!=="value")):e._isVueCE&&(tc(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!ze(r)))?zi(e,Je(t),r,i,t):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Fi(e,t,r,a))};function ec(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&ji(t)&&we(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){let s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return ji(t)&&ze(n)?!1:t in e}function tc(e,t){let n=e._def.props;if(!n)return!1;let r=Je(t);return Array.isArray(n)?n.some(s=>Je(s)===r):Object.keys(n).some(s=>Je(s)===r)}var Bi=e=>{let t=e.props["onUpdate:modelValue"]||!1;return be(t)?n=>vo(t,n):t};function oc(e){e.target.composing=!0}function Gi(e){let t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}var js=Symbol("_assign"),Bs=Symbol("_initialValue");function Fn(e,t,n){return t&&(e=e.trim()),n&&(e=Vo(e)),e}var Ji={created(e,{modifiers:{lazy:t,trim:n,number:r}},s){e.parentNode&&(e.type==="text"?e[Bs]=e.defaultValue.replace(/[\r\n]/g,""):e.type==="textarea"&&(e[Bs]=e.defaultValue.replace(/\r\n?/g,` +`))),e[js]=Bi(s);let i=r||s.props&&s.props.type==="number";So(e,t?"change":"input",a=>{a.target.composing||e[js](Fn(e.value,n,i))}),(n||i)&&So(e,"change",()=>{e.value=Fn(e.value,n,i)}),t||(So(e,"compositionstart",oc),So(e,"compositionend",Gi),So(e,"change",Gi))},mounted(e,{value:t,modifiers:{trim:n,number:r}}){let s=t??"",i=e[Bs];delete e[Bs],i!==void 0&&(e.type==="text"||e.type==="textarea")&&e.value!==i?e[js](Fn(e.value,n,r)):e.value=s},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:s,number:i}},a){if(e[js]=Bi(a),e.composing)return;let u=(i||e.type==="number")&&!/^0\d/.test(e.value)?Vo(e.value):e.value,f=t??"";if(u===f)return;let m=e.getRootNode();(m instanceof Document||m instanceof ShadowRoot)&&m.activeElement===e&&e.type!=="range"&&(r&&t===n||s&&e.value.trim()===f)||(e.value=f)}};var sc=["ctrl","shift","alt","meta"],nc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>sc.some(n=>e[`${n}Key`]&&!t.includes(n))},he=(e,t)=>{if(!e)return e;let n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=((s,...i)=>{for(let a=0;a{let n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=(s=>{if(!("key"in s))return;let i=St(s.key);if(t.some(a=>a===i||rc[a]===i))return e(s)}))},ic=Ge({patchProp:xu},$u),Wi;function ac(){return Wi||(Wi=Ni(ic))}var Qi=((...e)=>{let t=ac().createApp(...e),{mount:n}=t;return t.mount=r=>{let s=dc(r);if(!s)return;let i=t._component;!we(i)&&!i.render&&!i.template&&(i.template=s.innerHTML),s.nodeType===1&&(s.textContent="");let a=n(s,!1,lc(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),a},t});function lc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function dc(e){return ze(e)?document.querySelector(e):e}var lo=typeof document<"u";function Zi(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function uc(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Zi(e.default)}var Oe=Object.assign;function Ws(e,t){let n={};for(let r in t){let s=t[r];n[r]=wt(s)?s.map(e):e(s)}return n}var Ro=()=>{},wt=Array.isArray;function Bn(e,t){let n={};for(let r in e)n[r]=r in t?t[r]:e[r];return n}var xi=/#/g,cc=/&/g,pc=/\//g,fc=/=/g,hc=/\?/g,ea=/\+/g,mc=/%5B/g,vc=/%5D/g,ta=/%5E/g,gc=/%60/g,oa=/%7B/g,yc=/%7C/g,sa=/%7D/g,bc=/%20/g;function Gn(e){return e==null?"":encodeURI(""+e).replace(yc,"|").replace(mc,"[").replace(vc,"]")}function na(e){return Gn(e).replace(oa,"{").replace(sa,"}").replace(ta,"^")}function Hn(e){return Gn(e).replace(ea,"%2B").replace(bc,"+").replace(xi,"%23").replace(cc,"%26").replace(gc,"`").replace(oa,"{").replace(sa,"}").replace(ta,"^")}function wc(e){return Hn(e).replace(fc,"%3D")}function kc(e){return Gn(e).replace(xi,"%23").replace(hc,"%3F")}function ra(e){return kc(e).replace(pc,"%2F")}function Do(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}var Ec=/\/$/,Cc=e=>e.replace(Ec,"");function Ks(e,t,n="/"){let r,s={},i="",a="",u=t.indexOf("#"),f=t.indexOf("?");return f=u>=0&&f>u?-1:f,f>=0&&(r=t.slice(0,f),i=t.slice(f,u>0?u:t.length),s=e(i.slice(1))),u>=0&&(r=r||t.slice(0,u),a=t.slice(u,t.length)),r=Sc(r??t,n),{fullPath:r+i+a,path:r,query:s,hash:Do(a)}}function ia(e,t){let n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Wn(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function aa(e,t,n){let r=t.matched.length-1,s=n.matched.length-1;return r>-1&&r===s&&io(t.matched[r],n.matched[s])&&Kn(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function io(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Kn(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!_c(e[n],t[n]))return!1;return!0}function _c(e,t){return wt(e)?Xi(e,t):wt(t)?Xi(t,e):e?.valueOf()===t?.valueOf()}function Xi(e,t){return wt(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function Sc(e,t){if(e.startsWith("/"))return e;if(!e)return t;let n=t.split("/"),r=e.split("/"),s=r[r.length-1];(s===".."||s===".")&&r.push("");let i=n.length-1,a,u;for(a=0;a1&&i--;else break;return n.slice(0,i).join("/")+"/"+r.slice(a).join("/")}var Wt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},Ys=(function(e){return e.pop="pop",e.push="push",e})({}),Js=(function(e){return e.back="back",e.forward="forward",e.unknown="",e})({});function la(e){if(!e)if(lo){let t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Cc(e)}var Nc=/^[^#]+#/;function da(e,t){return e.replace(Nc,"#")+t}function Dc(e,t){let n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}var ds=()=>({left:window.scrollX,top:window.scrollY});function ua(e){let t;if("el"in e){let n=e.el,r=typeof n=="string"&&n.startsWith("#"),s=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!s)return;t=Dc(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Yn(e,t){return(history.state?history.state.position-t:-1)+e}var jn=new Map;function ca(e,t){jn.set(e,t)}function pa(e){let t=jn.get(e);return jn.delete(e),t}function Rc(e){return typeof e=="string"||e&&typeof e=="object"}function Jn(e){return typeof e=="string"||typeof e=="symbol"}var Be=(function(e){return e[e.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",e[e.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",e[e.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",e[e.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",e[e.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",e})({}),fa=Symbol("");var RM={[Be.MATCHER_NOT_FOUND]({location:e,currentLocation:t}){return`No match for ${JSON.stringify(e)}${t?` while being at -`+JSON.stringify(t):""}`},[je.NAVIGATION_GUARD_REDIRECT]({from:e,to:t}){return`Redirected from "${e.fullPath}" to "${Ac(t)}" via a navigation guard.`},[je.NAVIGATION_ABORTED]({from:e,to:t}){return`Navigation aborted from "${e.fullPath}" to "${t.fullPath}" via a navigation guard.`},[je.NAVIGATION_CANCELLED]({from:e,to:t}){return`Navigation cancelled from "${e.fullPath}" to "${t.fullPath}" with a new navigation.`},[je.NAVIGATION_DUPLICATED]({from:e,to:t}){return`Avoided redundant navigation to current location: "${e.fullPath}".`}};function ao(e,t){return Oe(new Error,{type:e,[fa]:!0},t)}function Mt(e,t){return e instanceof Error&&fa in e&&(t==null||!!(e.type&t))}var Tc=["params","query","hash"];function Ac(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;let t={};for(let n of Tc)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}function ma(e){let t={};if(e===""||e==="?")return t;let n=(e[0]==="?"?e.slice(1):e).split("&");for(let r=0;rs&&Hn(s)):[r&&Hn(r)]).forEach(s=>{s!==void 0&&(t+=(t.length?"&":"")+n,s!=null&&(t+="="+s))})}return t}function ha(e){let t={};for(let n in e){let r=e[n];r!==void 0&&(t[n]=wt(r)?r.map(s=>s==null?null:""+s):r==null?r:""+r)}return t}var va=Symbol(""),Xn=Symbol(""),Qs=Symbol(""),Xs=Symbol(""),Zs=Symbol("");function To(){let e=[];function t(r){return e.push(r),()=>{let s=e.indexOf(r);s>-1&&e.splice(s,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Gt(e,t,n,r,s,i=a=>a()){let a=r&&(r.enterCallbacks[s]=r.enterCallbacks[s]||[]);return()=>new Promise((u,m)=>{let h=f=>{f===!1?m(ao(je.NAVIGATION_ABORTED,{from:n,to:t})):f instanceof Error?m(f):Rc(f)?m(ao(je.NAVIGATION_GUARD_REDIRECT,{from:t,to:f})):(a&&r.enterCallbacks[s]===a&&typeof f=="function"&&a.push(f),u())},v=i(()=>e.call(r&&r.instances[s],t,n,h)),w=Promise.resolve(v);e.length<3&&(w=w.then(h)),w.catch(f=>m(f))})}function xs(e,t,n,r,s=i=>i()){let i=[];for(let a of e)for(let u in a.components){let m=a.components[u];if(!(t!=="beforeRouteEnter"&&!a.instances[u]))if(Zi(m)){let h=(m.__vccOpts||m)[t];h&&i.push(Gt(h,n,r,a,u,s))}else{let h=m();i.push(()=>h.then(v=>{if(!v)throw new Error(`Couldn't resolve component "${u}" at "${a.path}"`);let w=uc(v)?v.default:v;a.mods[u]=v,a.components[u]=w;let f=(w.__vccOpts||w)[t];return f&&Gt(f,n,r,a,u,s)()}))}}return i}function ga(e,t){let n=[],r=[],s=[],i=Math.max(t.matched.length,e.matched.length);for(let a=0;aio(h,u))?r.push(u):n.push(u));let m=e.matched[a];m&&(t.matched.find(h=>io(h,m))||s.push(m))}return[n,r,s]}var Oc=()=>location.protocol+"//"+location.host;function Ra(e,t){let{pathname:n,search:r,hash:s}=t,i=e.indexOf("#");if(i>-1){let a=s.includes(e.slice(i))?e.slice(i).length:1,u=s.slice(a);return u[0]!=="/"&&(u="/"+u),Wn(u,"")}return Wn(n,e)+r+s}function Ic(e,t,n,r){let s=[],i=[],a=null,u=({state:f})=>{let b=Ra(e,location),C=n.value,k=t.value,R=0;if(f){if(n.value=b,t.value=f,a&&a===C){a=null;return}R=k?f.position-k.position:0}else r(b);s.forEach(D=>{D(n.value,C,{delta:R,type:Ys.pop,direction:R?R>0?Js.forward:Js.back:Js.unknown})})};function m(){a=n.value}function h(f){s.push(f);let b=()=>{let C=s.indexOf(f);C>-1&&s.splice(C,1)};return i.push(b),b}function v(){if(document.visibilityState==="hidden"){let{history:f}=window;if(!f.state)return;f.replaceState(Oe({},f.state,{scroll:ds()}),"")}}function w(){for(let f of i)f();i=[],window.removeEventListener("popstate",u),window.removeEventListener("pagehide",v),document.removeEventListener("visibilitychange",v)}return window.addEventListener("popstate",u),window.addEventListener("pagehide",v),document.addEventListener("visibilitychange",v),{pauseListeners:m,listen:h,destroy:w}}function ya(e,t,n,r=!1,s=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:s?ds():null}}function Pc(e){let{history:t,location:n}=window,r={value:Ra(e,n)},s={value:t.state};s.value||i(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function i(m,h,v){let w=e.indexOf("#"),f=w>-1?(n.host&&document.querySelector("base")?e:e.slice(w))+m:Oc()+e+m;try{t[v?"replaceState":"pushState"](h,"",f),s.value=h}catch(b){console.error(b),n[v?"replace":"assign"](f)}}function a(m,h){i(m,Oe({},t.state,ya(s.value.back,m,s.value.forward,!0),h,{position:s.value.position}),!0),r.value=m}function u(m,h){let v=Oe({},s.value,t.state,{forward:m,scroll:ds()});i(v.current,v,!0),i(m,Oe({},ya(r.value,m,null),{position:v.position+1},h),!1),r.value=m}return{location:r,state:s,push:u,replace:a}}function Ta(e){e=la(e);let t=Pc(e),n=Ic(e,t.state,t.location,t.replace);function r(i,a=!0){a||n.pauseListeners(),history.go(i)}let s=Oe({location:"",base:e,go:r,createHref:da.bind(null,e)},t,n);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}var uo=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({}),Xe=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e})(Xe||{}),Vc={type:uo.Static,value:""},qc=/[a-zA-Z0-9_]/;function Mc(e){if(!e)return[[]];if(e==="/")return[[Vc]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(b){throw new Error(`ERR (${n})/"${h}": ${b}`)}let n=Xe.Static,r=n,s=[],i;function a(){i&&s.push(i),i=[]}let u=0,m,h="",v="";function w(){h&&(n===Xe.Static?i.push({type:uo.Static,value:h}):n===Xe.Param||n===Xe.ParamRegExp||n===Xe.ParamRegExpEnd?(i.length>1&&(m==="*"||m==="+")&&t(`A repeatable param (${h}) must be alone in its segment. eg: '/:ids+.`),i.push({type:uo.Param,value:h,regexp:v,repeatable:m==="*"||m==="+",optional:m==="*"||m==="?"})):t("Invalid state to consume buffer"),h="")}function f(){h+=m}for(;ut.length?t.length===1&&t[0]===it.Static+it.Segment?1:-1:0}function Aa(e,t){let n=0,r=e.score,s=t.score;for(;n0&&t[t.length-1]<0}var zc={strict:!1,end:!0,sensitive:!1};function Hc(e,t,n){let r=Uc(Mc(e.path),n),s=Oe(r,{record:e,parent:t,children:[],alias:[]});return t&&!s.record.aliasOf==!t.record.aliasOf&&t.children.push(s),s}function Bc(e,t){let n=[],r=new Map;t=jn(zc,t);function s(w){return r.get(w)}function i(w,f,b){let C=!b,k=Ea(w);k.aliasOf=b&&b.record;let R=jn(t,w),D=[k];if("alias"in w){let _=typeof w.alias=="string"?[w.alias]:w.alias;for(let O of _)D.push(Ea(Oe({},k,{components:b?b.record.components:k.components,path:O,aliasOf:b?b.record:k})))}let T,V;for(let _ of D){let{path:O}=_;if(f&&O[0]!=="/"){let I=f.record.path,J=I[I.length-1]==="/"?"":"/";_.path=f.record.path+(O&&J+O)}if(T=Hc(_,f,R),b?b.alias.push(T):(V=V||T,V!==T&&V.alias.push(T),C&&w.name&&!Ca(T)&&a(w.name)),Oa(T)&&m(T),k.children){let I=k.children;for(let J=0;J{a(V)}:Ro}function a(w){if(Jn(w)){let f=r.get(w);f&&(r.delete(w),n.splice(n.indexOf(f),1),f.children.forEach(a),f.alias.forEach(a))}else{let f=n.indexOf(w);f>-1&&(n.splice(f,1),w.record.name&&r.delete(w.record.name),w.children.forEach(a),w.alias.forEach(a))}}function u(){return n}function m(w){let f=Wc(w,n);n.splice(f,0,w),w.record.name&&!Ca(w)&&r.set(w.record.name,w)}function h(w,f){let b,C={},k,R;if("name"in w&&w.name){if(b=r.get(w.name),!b)throw ao(je.MATCHER_NOT_FOUND,{location:w});R=b.record.name,C=Oe(ka(f.params,b.keys.filter(V=>!V.optional).concat(b.parent?b.parent.keys.filter(V=>V.optional):[]).map(V=>V.name)),w.params&&ka(w.params,b.keys.map(V=>V.name))),k=b.stringify(C)}else if(w.path!=null)k=w.path,b=n.find(V=>V.re.test(k)),b&&(C=b.parse(k),R=b.record.name);else{if(b=f.name?r.get(f.name):n.find(V=>V.re.test(f.path)),!b)throw ao(je.MATCHER_NOT_FOUND,{location:w,currentLocation:f});R=b.record.name,C=Oe({},f.params,w.params),k=b.stringify(C)}let D=[],T=b;for(;T;)D.unshift(T.record),T=T.parent;return{name:R,path:k,params:C,matched:D,meta:Gc(D)}}e.forEach(w=>i(w));function v(){n.length=0,r.clear()}return{addRoute:i,resolve:h,removeRoute:a,clearRoutes:v,getRoutes:u,getRecordMatcher:s}}function ka(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function Ea(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:jc(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function jc(e){let t={},n=e.props||!1;if("component"in e)t.default=n;else for(let r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function Ca(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Gc(e){return e.reduce((t,n)=>Oe(t,n.meta),{})}function Wc(e,t){let n=0,r=t.length;for(;n!==r;){let i=n+r>>1;Aa(e,t[i])<0?r=i:n=i+1}let s=Kc(e);return s&&(r=t.lastIndexOf(s,r-1)),r}function Kc(e){let t=e;for(;t=t.parent;)if(Oa(t)&&Aa(e,t)===0)return t}function Oa({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function _a(e){let t=ut(Qs),n=ut(Xs),r=!1,s=null,i=ot(()=>{let v=Ft(e.to);return t.resolve(v)}),a=ot(()=>{let{matched:v}=i.value,{length:w}=v,f=v[w-1],b=n.matched;if(!f||!b.length)return-1;let C=b.findIndex(io.bind(null,f));if(C>-1)return C;let k=Sa(v[w-2]);return w>1&&Sa(f)===k&&b[b.length-1].path!==k?b.findIndex(io.bind(null,v[w-2])):C}),u=ot(()=>a.value>-1&&Zc(n.params,i.value.params)),m=ot(()=>a.value>-1&&a.value===n.matched.length-1&&Kn(n.params,i.value.params));function h(v={}){if(Xc(v)){let w=t[Ft(e.replace)?"replace":"push"](Ft(e.to)).catch(Ro);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>w),w}return Promise.resolve()}return{route:i,href:ot(()=>i.value.href),isActive:u,isExactActive:m,navigate:h}}function Yc(e){return e.length===1?e[0]:e}var Jc=ns({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:_a,setup(e,{slots:t}){let n=He(_a(e)),{options:r}=ut(Qs),s=ot(()=>({[Na(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[Na(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{let i=t.default&&Yc(t.default(n));return e.custom?i:ke("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:s.value},i)}}}),Qc=Jc;function Xc(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){let t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Zc(e,t){for(let n in t){let r=t[n],s=e[n];if(typeof r=="string"){if(r!==s)return!1}else if(!wt(s)||s.length!==r.length||r.some((i,a)=>i.valueOf()!==s[a].valueOf()))return!1}return!0}function Sa(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}var Na=(e,t,n)=>e??t??n,xc=ns({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){let r=ut(Zs),s=ot(()=>e.route||r.value),i=ut(Xn,0),a=ot(()=>{let h=Ft(i),{matched:v}=s.value,w;for(;(w=v[h])&&!w.components;)h++;return h}),u=ot(()=>s.value.matched[a.value]);no(Xn,ot(()=>a.value+1)),no(va,u),no(Zs,s);let m=et();return Be(()=>[m.value,u.value,e.name],([h,v,w],[f,b,C])=>{v&&(v.instances[w]=h,b&&b!==v&&h&&h===f&&(v.leaveGuards.size||(v.leaveGuards=b.leaveGuards),v.updateGuards.size||(v.updateGuards=b.updateGuards))),h&&v&&(!b||!io(v,b)||!f)&&(v.enterCallbacks[w]||[]).forEach(k=>k(h))},{flush:"post"}),()=>{let h=s.value,v=e.name,w=u.value,f=w&&w.components[v];if(!f)return Da(n.default,{Component:f,route:h});let b=w.props[v],C=b?b===!0?h.params:typeof b=="function"?b(h):b:null,R=ke(f,Oe({},C,t,{onVnodeUnmounted:D=>{D.component.isUnmounted&&(w.instances[v]=null)},ref:m}));return Da(n.default,{Component:R,route:h})||R}}});function Da(e,t){if(!e)return null;let n=e(t);return n.length===1?n[0]:n}var Zn=xc;function Ia(e){let t=Bc(e.routes,e),n=e.parseQuery||ma,r=e.stringifyQuery||Qn,s=e.history,i=To(),a=To(),u=To(),m=Cs(Wt),h=Wt;lo&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");let v=Ws.bind(null,U=>""+U),w=Ws.bind(null,ra),f=Ws.bind(null,Do);function b(U,te){let F,E;return Jn(U)?(F=t.getRecordMatcher(U),E=te):E=U,t.addRoute(E,F)}function C(U){let te=t.getRecordMatcher(U);te&&t.removeRoute(te)}function k(){return t.getRoutes().map(U=>U.record)}function R(U){return!!t.getRecordMatcher(U)}function D(U,te){if(te=Oe({},te||m.value),typeof U=="string"){let y=Ks(n,U,te.path),S=t.resolve({path:y.path},te),q=s.createHref(y.fullPath);return Oe(y,S,{params:f(S.params),hash:Do(y.hash),redirectedFrom:void 0,href:q})}let F;if(U.path!=null)F=Oe({},U,{path:Ks(n,U.path,te.path).path});else{let y=Oe({},U.params);for(let S in y)y[S]==null&&delete y[S];F=Oe({},U,{params:w(y)}),te.params=w(te.params)}let E=t.resolve(F,te),P=U.hash||"";E.params=v(f(E.params));let M=ia(r,Oe({},U,{hash:na(P),path:E.path})),z=s.createHref(M);return Oe({fullPath:M,hash:P,query:r===Qn?ha(U.query):U.query||{}},E,{redirectedFrom:void 0,href:z})}function T(U){return typeof U=="string"?Ks(n,U,m.value.path):Oe({},U)}function V(U,te){if(h!==U)return ao(je.NAVIGATION_CANCELLED,{from:te,to:U})}function _(U){return J(U)}function O(U){return _(Oe(T(U),{replace:!0}))}function I(U,te){let F=U.matched[U.matched.length-1];if(F&&F.redirect){let{redirect:E}=F,P=typeof E=="function"?E(U,te):E;return typeof P=="string"&&(P=P.includes("?")||P.includes("#")?P=T(P):{path:P},P.params={}),Oe({query:U.query,hash:U.hash,params:P.path!=null?{}:U.params},P)}}function J(U,te){let F=h=D(U),E=m.value,P=U.state,M=U.force,z=U.replace===!0,y=I(F,E);if(y)return J(Oe(T(y),{state:typeof y=="object"?Oe({},P,y.state):P,force:M,replace:z}),te||F);let S=F;S.redirectedFrom=te;let q;return!M&&aa(r,E,F)&&(q=ao(je.NAVIGATION_DUPLICATED,{to:S,from:E}),Se(E,E,!0,!1)),(q?Promise.resolve(q):B(S,E)).catch(H=>Mt(H)?Mt(H,je.NAVIGATION_GUARD_REDIRECT)?H:Ee(H):ie(H,S,E)).then(H=>{if(H){if(Mt(H,je.NAVIGATION_GUARD_REDIRECT))return J(Oe({replace:z},T(H.to),{state:typeof H.to=="object"?Oe({},P,H.to.state):P,force:M}),te||S)}else H=oe(S,E,!0,z,P);return ae(S,E,H),H})}function Y(U,te){let F=V(U,te);return F?Promise.reject(F):Promise.resolve()}function K(U){let te=Ve.values().next().value;return te&&typeof te.runWithContext=="function"?te.runWithContext(U):U()}function B(U,te){let F,[E,P,M]=ga(U,te);F=xs(E.reverse(),"beforeRouteLeave",U,te);for(let y of E)y.leaveGuards.forEach(S=>{F.push(Gt(S,U,te))});let z=Y.bind(null,U,te);return F.push(z),Fe(F).then(()=>{F=[];for(let y of i.list())F.push(Gt(y,U,te));return F.push(z),Fe(F)}).then(()=>{F=xs(P,"beforeRouteUpdate",U,te);for(let y of P)y.updateGuards.forEach(S=>{F.push(Gt(S,U,te))});return F.push(z),Fe(F)}).then(()=>{F=[];for(let y of M)if(y.beforeEnter)if(wt(y.beforeEnter))for(let S of y.beforeEnter)F.push(Gt(S,U,te));else F.push(Gt(y.beforeEnter,U,te));return F.push(z),Fe(F)}).then(()=>(U.matched.forEach(y=>y.enterCallbacks={}),F=xs(M,"beforeRouteEnter",U,te,K),F.push(z),Fe(F))).then(()=>{F=[];for(let y of a.list())F.push(Gt(y,U,te));return F.push(z),Fe(F)}).catch(y=>Mt(y,je.NAVIGATION_CANCELLED)?y:Promise.reject(y))}function ae(U,te,F){u.list().forEach(E=>K(()=>E(U,te,F)))}function oe(U,te,F,E,P){let M=V(U,te);if(M)return M;let z=te===Wt,y=lo?history.state:{};F&&(E||z?s.replace(U.fullPath,Oe({scroll:z&&y&&y.scroll},P)):s.push(U.fullPath,P)),m.value=U,Se(U,te,F,z),Ee()}let ne;function ue(){ne||(ne=s.listen((U,te,F)=>{if(!Ue.listening)return;let E=D(U),P=I(E,Ue.currentRoute.value);if(P){J(Oe(P,{replace:!0,force:!0}),E).catch(Ro);return}h=E;let M=m.value;lo&&ca(Yn(M.fullPath,F.delta),ds()),B(E,M).catch(z=>Mt(z,je.NAVIGATION_ABORTED|je.NAVIGATION_CANCELLED)?z:Mt(z,je.NAVIGATION_GUARD_REDIRECT)?(J(Oe(T(z.to),{force:!0}),E).then(y=>{Mt(y,je.NAVIGATION_ABORTED|je.NAVIGATION_DUPLICATED)&&!F.delta&&F.type===Ys.pop&&s.go(-1,!1)}).catch(Ro),Promise.reject()):(F.delta&&s.go(-F.delta,!1),ie(z,E,M))).then(z=>{z=z||oe(E,M,!1),z&&(F.delta&&!Mt(z,je.NAVIGATION_CANCELLED)?s.go(-F.delta,!1):F.type===Ys.pop&&Mt(z,je.NAVIGATION_ABORTED|je.NAVIGATION_DUPLICATED)&&s.go(-1,!1)),ae(E,M,z)}).catch(Ro)}))}let he=To(),ve=To(),me;function ie(U,te,F){Ee(U);let E=ve.list();return E.length?E.forEach(P=>P(U,te,F)):console.error(U),Promise.reject(U)}function Pe(){return me&&m.value!==Wt?Promise.resolve():new Promise((U,te)=>{he.add([U,te])})}function Ee(U){return me||(me=!U,ue(),he.list().forEach(([te,F])=>U?F(U):te()),he.reset()),U}function Se(U,te,F,E){let{scrollBehavior:P}=e;if(!lo||!P)return Promise.resolve();let M=!F&&pa(Yn(U.fullPath,0))||(E||!F)&&history.state&&history.state.scroll||null;return rt().then(()=>P(U,te,M)).then(z=>z&&ua(z)).catch(z=>ie(z,U,te))}let Ce=U=>s.go(U),Te,Ve=new Set,Ue={currentRoute:m,listening:!0,addRoute:b,removeRoute:C,clearRoutes:t.clearRoutes,hasRoute:R,getRoutes:k,resolve:D,options:e,push:_,replace:O,go:Ce,back:()=>Ce(-1),forward:()=>Ce(1),beforeEach:i.add,beforeResolve:a.add,afterEach:u.add,onError:ve.add,isReady:Pe,install(U){U.component("RouterLink",Qc),U.component("RouterView",Zn),U.config.globalProperties.$router=Ue,Object.defineProperty(U.config.globalProperties,"$route",{enumerable:!0,get:()=>Ft(m)}),lo&&!Te&&m.value===Wt&&(Te=!0,_(s.location).catch(E=>{}));let te={};for(let E in Wt)Object.defineProperty(te,E,{get:()=>m.value[E],enumerable:!0});U.provide(Qs,Ue),U.provide(Xs,Go(te)),U.provide(Zs,m);let F=U.unmount;Ve.add(U),U.unmount=function(){Ve.delete(U),Ve.size<1&&(h=Wt,ne&&ne(),ne=null,m.value=Wt,Te=!1,me=!1),F()}}};function Fe(U){return U.reduce((te,F)=>te.then(()=>K(F)),Promise.resolve())}return Ue}function Pa(e){return ut(Xs)}function Va(e,t){return t?.split(".").reduce((n,r)=>n?.[r],e)}function xn(e=null,t=new Map){let n=He({}),r=[],s=!1,i=new Proxy(n,{get(a,u){return typeof u=="string"&&u.startsWith("__v_")||Reflect.has(a,u)?Reflect.get(a,u):e?.[u]}});return Object.defineProperty(n,"parent",{value:e,configurable:!0}),Object.defineProperty(n,"viewState",{get:()=>i}),i.watch=(a,u,m=!1)=>{let h=typeof a=="function"?()=>a(i):()=>Va(i,a),v=Be(h,u,{deep:m,flush:"post"});return r.push(v),rt(()=>{s||u(h(),h())}),v},i.watchGroup=(a,u)=>i.watch(()=>a.map(m=>Va(i,m)),u,!0),i.on=(a,u)=>{if(a==="dispose")return r.push(u),()=>{};t.has(a)||t.set(a,new Set),t.get(a).add(u);let m=()=>t.get(a)?.delete(u);return r.push(m),m},i.emit=(a,...u)=>{for(let m of[...t.get(a)||[]])m({},...u)},i.dispose=()=>{s=!0,r.splice(0).reverse().forEach(a=>a())},Bo(i.dispose),i}function ct(){let e=new Set,t=new Set,n=!1,r=(i,a=0)=>{if(n)return;let u=setTimeout(()=>{e.delete(u),i()},a);return e.add(u),u};r.cancel=i=>{clearTimeout(i),e.delete(i)};let s=(i,a)=>{if(n)return;let u=setInterval(i,a);return t.add(u),u};return s.cancel=i=>{clearInterval(i),t.delete(i)},Bo(()=>{n=!0,e.forEach(clearTimeout),t.forEach(clearInterval)}),{timeout:r,interval:s}}function Kt(){let e=[];return Bo(()=>e.forEach(t=>t())),(t,n,r,s)=>{t.addEventListener(n,r,s),e.push(()=>t.removeEventListener(n,r,s))}}function er(e,t,n){let r,s=!1,i="form-draft:"+n,a=()=>Object.fromEntries(t.map(f=>[f,e[f]])),u=()=>JSON.stringify(a()),m=f=>{for(let b of t)Object.prototype.hasOwnProperty.call(f,b)&&(e[b]=f[b]);e.options?.expirationDate&&(e.options.expirationDate=new Date(e.options.expirationDate))},h=()=>{try{window.sessionStorage.removeItem(i)}catch{}},v=(f=!1)=>{if(r!==void 0){if(f&&document.querySelectorAll("input, select, textarea").forEach(b=>{b._field?.binding.state===e&&b._field.timer&&b._field.commit()}),e.unsavedChanges=u()!==r,e.draftSaved=!1,!e.unsavedChanges){h();return}try{window.sessionStorage.setItem(i,JSON.stringify({account:e.user?.username||null,savedAt:Date.now(),values:a()})),e.draftSaved=!0}catch{}}},w=()=>v(!0);return e.on("routeLeave",w),window.addEventListener("beforeunload",w),e.on("dispose",()=>window.removeEventListener("beforeunload",w)),{restore(){r=u();let f;try{f=JSON.parse(window.sessionStorage.getItem(i)||"null")}catch{}let b=f&&f.account===(e.user?.username||null)&&Date.now()-f.savedAt<30*6e4&&f.values;return b&&(m(f.values),e.draftRestored=!0),s||(s=!0,e.watch(()=>a(),()=>v(),!0)),e.unsavedChanges=u()!==r,!!b},checkpoint(){return JSON.parse(u())},accept(f){r=JSON.stringify(f),e.draftRestored=!1,v()},discard(){document.querySelectorAll("input, select, textarea").forEach(f=>{f._field?.binding.state!==e||!f._field.timer||(clearTimeout(f._field.timer),f._field.timer=null,f.value=f._field.binding.value??"")}),r!==void 0&&m(JSON.parse(r)),e.draftRestored=!1,v()},clear(){r=u(),e.unsavedChanges=!1,e.draftRestored=!1,e.draftSaved=!1,h()}}}function ep(e){if(!["ArrowLeft","ArrowRight","Home","End"].includes(e.key))return;let t=[...e.currentTarget.closest('[role="tablist"]').querySelectorAll('[role="tab"]')],n=t.indexOf(e.currentTarget),r=e.key==="Home"?0:e.key==="End"?t.length-1:(n+(e.key==="ArrowRight"?1:-1)+t.length)%t.length;e.preventDefault(),t[r]?.focus(),t[r]?.click()}var qa=function(e,t,n,r){e.previewTabKeydown=ep,e.title="Main",e.user={status:"connection"},e.site_options,e.toasts=[],e.removeToast=function(m){let h=e.toasts.indexOf(m);h!==-1&&e.toasts.splice(h,1)},e.addToast=function(m){return e.toasts.push(m),r(function(){e.removeToast(m)},8e3),m},e.path=n.url(),e.paths=n.path().substring(1).split("/"),e.darkMode=function(m){localStorage.setItem("darkMode",m),e.isDarkMode=m;let h="/css/prism-okaidia.css",v="/css/prism.css";if(m){$("body").addClass("dark-mode");let f=document.createElement("link");f.href=h,f.rel="stylesheet",document.head.append(f),$(`link[href='${v}']`).remove()}else{$("body").removeClass("dark-mode");let f=document.createElement("link");f.href=v,f.rel="stylesheet",document.head.append(f),$(`link[href='${h}']`).remove()}let w=document.querySelector("[class*='floatingchat-container-wrap'] [class*='floating-chat-kofi-text-container-wrap']");w&&(w.style.backgroundColor=m?"#FAF9F6":"#1A1815",w.style.color=m?"#1A1815":"#FAF9F6"),e.emit("dark-mode",m)},e.darkMode(localStorage.getItem("darkMode")=="true");function s(){t.get("/api/user").then(m=>{m&&(e.user=m.data)},()=>{e.user=null})}s();function i(){t.get("/api/options").then(m=>{m&&(e.site_options=m.data)},()=>{e.site_options=null})}i();function a(){t.get("/api/message").then(m=>{m&&(e.generalMessage=m.data)},()=>{e.generalMessage=null})}a();function u(m,h){h&&(e.title=h.title),e.path=n.url(),e.paths=n.path().substring(1).split("/")}e.on("routeChange",u),e.on("routeUpdate",u)},Ma=function(e,t){let n=Kt(),r=ct(),s=()=>{let i=window.location.hash.slice(1),a=document.getElementById(i);if(!a?.classList.contains("panel-collapse"))return;$(a).collapse("show");let u=document.getElementById(a.getAttribute("aria-labelledby"));u?.setAttribute("tabindex","-1"),u?.focus({preventScroll:!0}),u?.scrollIntoView?.({block:"start"})};e.on("routeUpdate",()=>r.timeout(s,0)),n(window,"hashchange",s),r.timeout(s,0)},$a=function(e,t,n,r,s){e.terms="",e.options={expirationMode:"remove",update:!1,image:!0,pdf:!0,notebook:!0,loc:!0,link:!0},e.saving=!1,e.message=null,e.error=null,s.load().then(m=>{e.quota=m},console.error);let i=er(e,["terms","options"],"profile");e.discardDraft=()=>i.discard();function a(){t.get("/api/user/default").then(m=>{let h=m.data||{};h.terms&&(e.terms=h.terms.join(` -`)),e.options=Object.assign({},e.options,h.options),i.restore()})}a();let u=null;e.saveDefault=m=>{if(m&&m.preventDefault&&m.preventDefault(),e.saving)return;let h=i.checkpoint(),v={terms:e.terms.split(` -`).map(w=>w.trim()).filter(w=>w.length>0),options:e.options};e.saving=!0,e.error=null,t.post("/api/user/default",v).then(()=>{i.accept(h),e.saving=!1,e.message=e.unsavedChanges?null:"Saved",u&&r.cancel(u),u=r(()=>{e.message=null},2500)},w=>{e.saving=!1;let b="ERRORS."+(w&&w.data&&w.data.error);n(b).then(C=>{e.error=C&&C!==b?C:"Unable to save your defaults. Please try again."},()=>{e.error="Unable to save your defaults. Please try again."})})},e.deleteAccount=()=>{confirm("Delete your account? All your anonymized repositories, gists, and pull requests will be removed, and your personal data will be erased. This cannot be undone.")&&(e.deletingAccount=!0,t.delete("/api/user").then(()=>{window.location.href="/"},()=>{e.deletingAccount=!1,e.deleteError="Unable to delete the account. Please try again."}))}},La=function(e,t,n){e.repoId=null,e.repoUrl=null,e.claim=()=>{t.post("/api/repo/claim",{repoId:e.repoId,repoUrl:e.repoUrl}).then(r=>{n.url("/dashboard")},r=>{e.error=r.data,e.claimForm.repoUrl.setValidity("not_found",!1),e.claimForm.repoId.setValidity("not_found",!1)})}},Ua=function(e,t,n,r,s){e.user&&!e.user.status&&n.url("/dashboard"),e.watch("user.status",()=>{e.user&&!e.user.status&&n.url("/dashboard")}),e.features=[{key:"anonymize",num:"01",eyebrow:"Anonymize",title:"Double-anonymous,",accent:"your rules.",text:"Choose what reviewers may see: links, images, PDFs, notebooks, GitHub Pages. Add your own terms, with regex if you need it, and pick the expiration date.",cta:"Start an anonymization",href:"/anonymize",url:"anonymous.4open.science/anonymize",img:"/imgs/anonymize.png",alt:"The anonymize form: source repository, terms to redact, options and a live README preview"},{key:"review",num:"02",eyebrow:"Review",title:"Reviewers browse",accent:"the real thing.",text:"Highlighted source code, rendered PDFs, images, and notebooks, in a familiar file explorer. GitHub Pages is also supported.",cta:"Open the example",href:"https://anonymous.4open.science/r/840c8c57-3c32-451e-bf12-0e20be300389/",target:"_self",url:"anonymous.4open.science/r/840c8c57-\u2026",img:"/imgs/explorer.png",alt:"The repository explorer with a file tree and a rendered README"},{key:"manage",num:"03",eyebrow:"Manage",title:"One dashboard,",accent:"until the decision.",text:"Monitor views, edit configuration, remove or update your repository. Program chairs can group submissions under a conference with one shared expiry.",cta:"Open the dashboard",href:"/dashboard",needsUser:!0,url:"anonymous.4open.science/dashboard",img:"/imgs/dashboard.png",alt:"The dashboard listing anonymized repositories with status, views and expiry"}],e.feature=e.features[0].key,e.selectFeature=function(u){e.feature=u},e.featureHref=function(u){return u.needsUser&&!e.user?"/signin":u.href},e.featureTarget=function(u){return u.needsUser&&!e.user?"_self":u.target||void 0},e.featureKeydown=function(u,m){let h={ArrowDown:1,ArrowRight:1,ArrowUp:-1,ArrowLeft:-1,Home:"first",End:"last"}[u.key];if(h===void 0)return;u.preventDefault();let v=e.features.length,w=h==="first"?0:h==="last"?v-1:(m+h+v)%v;e.feature=e.features[w].key,s(()=>{let f=r.document.getElementById("feature-tab-"+e.feature);f&&f.focus()})},e.cards=[{key:"repositories",total:0,label:"repositories anonymized"},{key:"users",total:0,label:"researchers"},{key:"pageViews",total:0,label:"page views"},{key:"pullRequests",total:0,label:"pull requests"}];function i(){t.get("/api/stat/").then(u=>{e.stat=u.data,e.cards[0].total=u.data.nbRepositories,e.cards[1].total=u.data.nbUsers,e.cards[2].total=u.data.nbPageViews,e.cards[3].total=u.data.nbPullRequests})}i();function a(u){let m={series:u,bars:[],viewW:100,deltaToday:0,pctChange:0,pctAbs:0,isUp:!0};if(!u||u.length<2)return m;let h=new Array(u.length-1);for(let k=1;k=2){let k=h[v-2];k&&(m.pctChange=(m.deltaToday-k)/k*100)}return m.pctAbs=Math.round(Math.abs(m.pctChange)),m.isUp=m.pctChange>=0,m}e.history={repositories:a([]),users:a([]),pageViews:a([]),pullRequests:a([])},t.get("/api/stat/history?days=60").then(u=>{let m=u.data||[];e.history={repositories:a(m.map(h=>h.nbRepositories||0)),users:a(m.map(h=>h.nbUsers||0)),pageViews:a(m.map(h=>h.nbPageViews||0)),pullRequests:a(m.map(h=>h.nbPullRequests||0))}})},Fa=function(e,t,n,r,s,i){let a=ct();e.on("routeLeave",function(){$('[data-toggle="tooltip"]').tooltip("dispose")}),e.watch("user.status",()=>{e.user==null&&n.url("/")}),e.user==null&&n.url("/"),a.timeout(()=>{$('[data-toggle="tooltip"]').tooltip()},250),e.quotaExpanded=!1,e.closeQuota=()=>{e.quotaExpanded=!1,rt(()=>document.querySelector(".dashboard-quota > summary")?.focus())},Kt()(document,"click",_=>{e.quotaExpanded&&!_.target.closest?.(".dashboard-quota")&&(e.quotaExpanded=!1)}),e.filtersExpanded=!1,e.projectView="all",e.selectedProject=null,e.projectName="",e.nameSaving=!1,e.nameError="",e.nameMessage="",e.needsAttention=_=>_.status==="error"||_._broken||m(_.status)==="progress"&&_._stale,e.attentionCount=()=>e.items.filter(e.needsAttention).length,e.setProjectView=_=>{e.projectView=_,_==="attention"&&(e.filters.status.error=!0,e.filters.status.progress=!0)},e.projectDetailsId=_=>"project-details-"+encodeURIComponent(_._type+":"+(_._id||_._source||"unknown")),e.showProjectDetails=async _=>{e.selectedProject=_,e.projectName=_.projectName||"",e.nameError="",e.nameMessage="",await rt();let O=document.getElementById(e.projectDetailsId(_));O?.focus(),O?.scrollIntoView?.({block:"nearest"})},e.closeProjectDetails=_=>{e.selectedProject=null,rt(()=>document.querySelector(`[data-project-actions="${encodeURIComponent(_._type+":"+_._id)}"]`)?.focus())},e.saveProjectName=async _=>{if(e.nameSaving||!_._id)return;let O=e.projectName.trim();if(O.length>100){e.nameError="Use 100 characters or fewer.";return}e.nameSaving=!0,e.nameError="",e.nameMessage="";try{let I=await t.post("/api/user/project-name",{type:_._type,id:_._id,name:O});_.projectName=I.data.name,_._label=_.projectName||_._fallbackLabel,e.selectedProject===_&&(e.nameMessage=O?"Project name saved.":"Default project name restored.")}catch{e.selectedProject===_&&(e.nameError="The project name could not be saved. Try again.")}finally{e.nameSaving=!1}},e.copyingId=null,e.copyLink=async _=>{if(!_._viewUrl||e.copyingId)return;let O=new URL(_._viewUrl,s.location.origin).href;e.copyingId=_._type+":"+_._id;try{if(s.navigator.clipboard?.writeText)await s.navigator.clipboard.writeText(O);else{let I=document.createElement("textarea");I.value=O,I.setAttribute("readonly",""),I.style.position="fixed",I.style.opacity="0";let J=document.activeElement;document.body.appendChild(I);try{if(I.select(),!document.execCommand?.("copy"))throw Error("Copy unavailable")}finally{I.remove(),J?.focus()}}e.addToast({title:"Link copied",body:"The anonymous link is ready to share."})}catch{e.addToast({title:"Copy this anonymous link",body:O})}finally{e.copyingId=null}},e.items=[],e.search="",e.loading=!0,e.statusKeyLabels={ready:"Ready",progress:"In progress",error:"Error",expired:"Expired",removed:"Removed"};let u=["queue","download","downloaded","preparing","anonymizing"];function m(_){return _==="ready"||_==="error"?_:_==="expired"||_==="expiring"?"expired":_==="removed"||_==="removing"?"removed":(u.indexOf(_)>-1,"progress")}let h=7200*1e3,v="dashboard.filterPrefs",w={typeFilter:"all",filters:{status:{ready:!0,progress:!0,error:!0,expired:!0,removed:!1}},orderBy:"-anonymizeDate"},f=loadFilterPrefs(v)||{};e.typeFilter=f.typeFilter||w.typeFilter,e.filters={status:Object.assign({},w.filters.status,f.filters&&f.filters.status||{})},e.orderBy=f.orderBy||w.orderBy;let b={_name:{label:"Anonymous ID",defaultDesc:!1},_label:{label:"Project",defaultDesc:!1},anonymizeDate:{label:"Anonymize date",defaultDesc:!0},status:{label:"Status",defaultDesc:!1},lastView:{label:"Last view",defaultDesc:!0},pageView:{label:"Views",defaultDesc:!0},"options.expirationDate":{label:"Expiration",defaultDesc:!1}};e.sortFields=b,e.sortField=()=>e.orderBy.replace(/^-/,""),e.sortDesc=()=>e.orderBy.charAt(0)==="-",e.sortLabel=()=>{let _=b[e.sortField()];return _?_.label:"Custom"},e.isSortedBy=_=>e.sortField()===_,e.setSort=(_,O)=>{typeof O!="boolean"&&(O=e.isSortedBy(_)?!e.sortDesc():!!(b[_]&&b[_].defaultDesc)),e.orderBy=(O?"-":"")+_},e.toggleSortDirection=()=>{e.setSort(e.sortField(),!e.sortDesc())},e.watchGroup(["typeFilter","orderBy"],()=>{saveFilterPrefs(v,{typeFilter:e.typeFilter,filters:e.filters,orderBy:e.orderBy})}),e.watch("filters",()=>{saveFilterPrefs(v,{typeFilter:e.typeFilter,filters:e.filters,orderBy:e.orderBy})},!0),i.load().then(_=>{e.quota=_},console.error);function C(_,O,I,J,Y,K){_.pageView||(_.pageView=0),_.lastView||(_.lastView=""),_.options=_.options||{},_.options.terms=(_.options.terms||[]).filter(ae=>ae),_._id=O||"",_._source=J,_._broken=!O,_._name=O||J||"(unnamed)",_._fallbackLabel=_._type==="gist"?"Gist "+(O||J||"without an ID"):J||I||_._name,_._label=_.projectName||_._fallbackLabel,_._editUrl=O?Y:null,_._viewUrl=O?K:null,_._broken&&(_.status="error",_.statusMessage="incomplete_record"),_._statusKey=m(_.status);let B=_.anonymizeDate||_.lastView;return _._stale=_._statusKey==="progress"&&!!B&&Date.now()-new Date(B).getTime()>h,_.status==="expired"||_.status==="expiring"?_._expiry={kind:"expired",date:_.options.expirationDate}:_.status!=="ready"?_._expiry={kind:"none"}:_.options.expirationMode==="never"||!_.options.expirationDate?_._expiry={kind:"never"}:_._expiry={kind:"date",date:_.options.expirationDate},_}function k(_){return t.get(_).then(O=>O.data||[],O=>(console.error(O),[]))}function R(){return e.loading=!0,r.all([k("/api/user/anonymized_repositories"),k("/api/user/anonymized_pull_requests"),k("/api/user/anonymized_gists")]).then(_=>{let O=_[0],I=_[1],J=_[2],Y=[];O.forEach(K=>{K._type="repo";let B=K.source||{};Y.push(C(K,K.repoId,K.repoId,B.fullName,"/anonymize/"+K.repoId,"/r/"+K.repoId+"/"))}),I.forEach(K=>{K._type="pr";let B=K.source||{};Y.push(C(K,K.pullRequestId,K.pullRequestId,B.repositoryFullName?B.repositoryFullName+"#"+B.pullRequestId:void 0,"/pull-request-anonymize/"+K.pullRequestId,"/pr/"+K.pullRequestId+"/"))}),J.forEach(K=>{K._type="gist";let B=K.source||{};Y.push(C(K,K.gistId,K.gistId,B.gistId,"/gist-anonymize/"+K.gistId,"/gist/"+K.gistId+"/"))}),e.items=Y,e.loading=!1})}R(),e.openItem=(_,O)=>{if(!_._viewUrl)return;let I=O&&O.target;I&&I.closest&&I.closest("a, button, .dropdown, input")||(s.location.href=_._viewUrl)},e.hiddenStatusCount=()=>Object.keys(e.filters.status).filter(_=>e.filters.status[_]===!1).length,e.hasHiddenStatus=()=>e.hiddenStatusCount()>0,e.hasActiveFilters=()=>e.projectView!=="all"||e.typeFilter!=="all"||e.search.trim().length>0||Object.keys(e.filters.status).some(_=>e.filters.status[_]===!1),e.showClearFilters=()=>e.search.trim().length>0||e.typeFilter!=="all"||e.hiddenStatusCount()>1,e.clearFilters=()=>{e.projectView="all",e.typeFilter="all",e.search="",Object.keys(e.filters.status).forEach(_=>{e.filters.status[_]=!0})};function D(_,O,I){t.get("/api/repo/"+_).then(J=>{for(let Y of e.items)if(Y._type==="repo"&&Y.repoId==_){Y.status=J.data.status,Y.statusMessage=J.data.statusMessage,Y._statusKey=m(Y.status),Y._statusKey!=="progress"&&(Y._stale=!1);break}if(J.data.status=="ready"||J.data.status=="error"||J.data.status=="removed"||J.data.status=="expired"){O(J.data);return}a.timeout(()=>D(_,O,I),2500)},I)}let T=_=>_==="repo"?"repository":_==="gist"?"gist":"pull request",V=_=>_==="repo"?"/api/repo":_==="gist"?"/api/gist":"/api/pr";e.removeItem=_=>{let O=T(_._type);if(confirm(`Are you sure that you want to remove the ${O} ${_._id}?`)){let I=He({title:`Removing ${_._id}...`,date:new Date,body:`The ${O} ${_._id} is going to be removed.`});e.addToast(I);let J=`${V(_._type)}/${_._id}`;t.delete(J).then(()=>{_._type==="repo"?D(_._id,()=>{I.title=`${_._id} is removed.`,I.body=`The ${O} ${_._id} is removed.`}):(I.title=`${_._id} is removed.`,I.body=`The ${O} ${_._id} is removed.`,R())},Y=>{I.title=`Error during the removal of ${_._id}.`,I.body=Y.body,R()})}},e.refreshItem=_=>{let O=T(_._type),I=He({title:`Refreshing ${_._id}...`,date:new Date,body:`The ${O} ${_._id} is going to be refreshed.`});e.addToast(I);let J=K=>{I.title=`Error during the refresh of ${_._id}.`,I.body=K.data?.error||K.body||"The refresh could not be completed. Please try again.",R()},Y=`${V(_._type)}/${_._id}/refresh`;t.post(Y).then(()=>{_._type==="repo"?D(_._id,K=>{if(K.status!=="ready"){J({body:K.statusMessage||`The repository is ${K.status}.`});return}I.title=`${_._id} is refreshed.`,I.body=`The ${O} ${_._id} is refreshed.`},J):(I.title=`${_._id} is refreshed.`,I.body=`The ${O} ${_._id} is refreshed.`,R())},J)},e.extendItem=_=>{let O=T(_._type),I=He({title:`Extending ${_._id}...`,date:new Date,body:`The expiration of ${O} ${_._id} is going to be extended by 6 months.`});e.addToast(I);let J=`${V(_._type)}/${_._id}/extend`;t.post(J).then(()=>{_._type==="repo"?D(_._id,()=>{I.title=`${_._id} is extended.`,I.body=`The expiration of ${O} ${_._id} is extended by 6 months.`}):(I.title=`${_._id} is extended.`,I.body=`The expiration of ${O} ${_._id} is extended by 6 months.`,R())},Y=>{I.title=`Error during the extension of ${_._id}.`,I.body=Y.data&&Y.data.error||Y.body,R()})},e.itemFilter=_=>{if(e.projectView==="attention"&&!e.needsAttention(_)||e.typeFilter!=="all"&&_._type!==e.typeFilter||e.filters.status[_._statusKey]===!1)return!1;let O=e.search.trim().toLowerCase();return!!(O.length==0||_._label&&String(_._label).toLowerCase().indexOf(O)>-1||_._source&&String(_._source).toLowerCase().indexOf(O)>-1||_._id&&String(_._id).toLowerCase().indexOf(O)>-1||_.conference&&String(_.conference).toLowerCase().indexOf(O)>-1)}};var za=function(e,t,n){let r=ct();e.repoId=n.repoId,e.repo=null,e.progress=0,e.rateLimitResetAt=0,e.rateLimitCountdown="";var s=null;let i=null,a=!1;function u(h){e.rateLimitResetAt=h,s&&r.interval.cancel(s);function v(){var w=Math.max(0,Math.ceil((h-Date.now())/1e3));if(w<=0)e.rateLimitCountdown="",e.rateLimitResetAt=0,r.interval.cancel(s),s=null;else{var f=Math.floor(w/60),b=w%60;e.rateLimitCountdown=f>0?f+"m "+b+"s":b+"s"}}v(),s=r.interval(v,1e3)}e.on("dispose",function(){a=!0,s&&r.interval.cancel(s),i&&r.timeout.cancel(i)});function m(h){if(!h)return h;var v=h.match(/^rate_limited:(\d+)$/);return v?(u(parseInt(v[1],10)),null):(e.rateLimitResetAt=0,h)}e.getStatus=()=>{a||t.get("/api/repo/"+e.repoId,{repoId:e.repoId,repoUrl:e.repoUrl}).then(h=>{if(!a){e.repo=h.data,h.data.rateLimitResetAt?u(h.data.rateLimitResetAt):e.repo.statusMessage=m(e.repo.statusMessage),e.repo.status=="ready"?e.progress=100:e.repo.status=="queue"?e.progress=10:e.repo.status=="downloaded"?e.progress=50:e.repo.status=="download"||e.repo.status=="preparing"?e.progress=25:e.repo.status=="anonymizing"&&(e.progress=75);var v=!["ready","removed","expired"].includes(e.repo.status);e.repo.status=="error"&&!e.rateLimitResetAt&&(v=!1),v&&(i=r.timeout(e.getStatus,2e3))}},h=>{e.error=h.data.error})},e.getStatus()},en=function(e,t,n,r,s,i,a){e.sourceUrl="",e.workspaceOpen=!1,e.sourceUrlError="",e.previewStatus="idle",e.sourceLoading=!1,e.mobilePane="settings";let u=window.matchMedia?.("(max-width: 767px)");e.mobileWorkspace=!!u?.matches,u?.addEventListener&&Kt()(u,"change",E=>{e.mobileWorkspace=E.matches}),e.selectMobilePane=E=>{e.mobilePane=E};let m=0,h=!1,v=new Set,w=(E,P=!1)=>!h&&E.generation===m&&E.url===e.sourceUrl.trim()&&E.connection===e.githubConnection&&(!P||E.branch===e.source.branch),f=()=>{let E={generation:m,url:e.sourceUrl.trim(),connection:e.githubConnection,branch:e.source.branch};return v.add(E),e.sourceLoading=!0,E},b=E=>{v.delete(E),h||(e.sourceLoading=[...v].some(P=>w(P)))};e.on("dispose",()=>{h=!0,m++});let C=null,k=E=>E.gistId&&!E.repo?"gist:"+E.gistId.toLowerCase():(E.owner+"/"+E.repo).toLowerCase()+(E.pullRequestId?"/pull/"+E.pullRequestId:""),R=er(e,["sourceUrl","terms","repoId","pullRequestId","gistId","source","options","conference","githubConnection"],"anonymize:"+(s.path?.()||""));e.discardDraft=async()=>{R.discard(),e.workspaceOpen=!!e.sourceUrl,e.error=null,e.sourceUrl?await e.urlSelected(!0):(m++,e.sourceLoading=!1,e.detectedType=null,e.details=null,e.sourceUrlError="",he.cancel(),Ee.cancel(),Ve.cancel(),e.previewStatus="idle")},e.githubConnection=void 0,e.githubConnections=null,e.gistOAuthRequired=!1;let D=()=>{let E={};for(let P of["sourceUrl","terms","repoId","pullRequestId","gistId","source","options","conference","githubConnection"])E[P]=e[P];sessionStorage.setItem("github-access-draft",JSON.stringify({path:s.path(),savedAt:Date.now(),draft:E}))};e.connectGistOAuth=()=>{D(),window.location.href="/github/login?returnTo="+encodeURIComponent(s.path())},e.grantGitHubAccess=()=>{D();let E=s.path(),P=J(e.sourceUrl)||"",M=e.githubConnections?.appConnected?"/github/app/install":"/github/app/login";window.location.href=M+"?returnTo="+encodeURIComponent(E)+"&repository="+encodeURIComponent(P)+"&install=1"},e.chooseGitHubConnection=async E=>{e.githubConnection=E,e.readme="",e.sourceUrl&&await K()},e.detectedType=null,e.repoId="",e.pullRequestId="",e.gistId="",e.terms="",e.defaultTerms="",e.branches=[],e.source={branch:"",commit:""},e.options={expirationMode:"remove",expirationDate:new Date,update:!1,image:!0,pdf:!0,notebook:!0,link:!0,body:!0,title:!0,origin:!1,diff:!0,content:!0,comments:!0,username:!0,date:!0};function T(){let E=new Date;return E.setMonth(E.getMonth()+6),E}e.options.expirationDate=T();function V(E){let P=E.getFullYear(),M=String(E.getMonth()+1).padStart(2,"0"),z=String(E.getDate()).padStart(2,"0");return`${P}-${M}-${z}`}e.minExpirationDate=V(new Date);let _=new Date;_.setFullYear(_.getFullYear()+1),e.maxExpirationDate=V(_),e.anonymize_readme="",e.readme="",e.html_readme="",e.isUpdate=!1;function O(E){t.get("/api/user/default").then(P=>{let M=P.data;M.terms&&(e.defaultTerms=M.terms.join(` -`)),e.options=Object.assign({},e.options,M.options),e.options.expirationDate=M.options&&M.options.expirationDate?new Date(M.options.expirationDate):T(),!r.repoId&&!r.pullRequestId&&!r.gistId&&!e.anonymize?.terms?.dirty&&(e.terms=e.defaultTerms),E&&E()})}function I(E,P,M){e.anonymize&&e.anonymize[E]&&e.anonymize[E].setValidity(P,M)}function J(E){try{let P=parseGithubUrl(E);if(P&&P.owner&&P.repo)return P.owner+"/"+P.repo}catch{}return null}e.reconnectingSource=!1,e.reconnectRepositoryId=void 0,e.reconnectSource=async()=>{if(confirm("Reconnect to the repository currently at this GitHub URL? Review its branch and commit before saving. Saving will replace the published snapshot.")){e.reconnectingSource=!0,e.reconnectRepositoryId=void 0,e.source.commit="",e.source.branch="",e.readme="",e.branches=[];try{await ae()}catch{}}};function Y(){return e.reconnectingSource||!e.isUpdate||!e._originalRepositoryID?void 0:J(e.sourceUrl)===e._originalFullName?e._originalRepositoryID:void 0}async function K(){e._preservingDraft=!0;try{await e.urlSelected(!0)}finally{e._preservingDraft=!1}}async function B(){let E;try{E=JSON.parse(sessionStorage.getItem("github-access-draft")||"null")}catch{return!1}if(!E||E.path!==s.path()||Date.now()-E.savedAt>=30*6e4)return R.restore()?(e.sourceUrl&&await K(),!0):!1;R.restore();for(let P of["sourceUrl","terms","repoId","pullRequestId","gistId","source","options","conference","githubConnection"])Object.prototype.hasOwnProperty.call(E.draft,P)&&(e[P]=E.draft[P]);return e.options.expirationDate&&(e.options.expirationDate=new Date(e.options.expirationDate)),await K(),sessionStorage.removeItem("github-access-draft"),!0}O(()=>{!r.repoId&&!r.pullRequestId&&!r.gistId&&a(B,0),r.repoId&&r.repoId!=""&&(e.isUpdate=!0,e.detectedType="repo",e.repoId=r.repoId,t.get("/api/repo/"+e.repoId).then(async E=>{e.githubConnection=E.data.connection||"oauth",e.sourceUrl="https://github.com/"+E.data.source.fullName,e._originalFullName=E.data.source.fullName,e.terms=E.data.options.terms.filter(P=>P).join(` -`),e.source=E.data.source,e.role=E.data.role||"owner",e.coauthors=E.data.coauthors||[],e._originalBranch=E.data.source.branch,e.options=Object.assign({},e.options,E.data.options),e.conference=E.data.conference,e._originalConference=E.data.conference,e.repositoryID=E.data.source.repositoryID,e._originalRepositoryID=E.data.source.repositoryID,E.data.options.expirationDate&&(e.options.expirationDate=new Date(E.data.options.expirationDate)),C=k(parseGithubUrl(e.sourceUrl)),!await B()&&(await Promise.all([ae(),oe()]),ve())},()=>{s.url("/404")})),r.pullRequestId&&r.pullRequestId!=""&&(e.isUpdate=!0,e.detectedType="pr",e.pullRequestId=r.pullRequestId,t.get("/api/pr/"+e.pullRequestId).then(async E=>{if(e.githubConnection=E.data.connection||"oauth",e.sourceUrl="https://github.com/"+E.data.source.repositoryFullName+"/pull/"+E.data.source.pullRequestId,e.terms=E.data.options.terms.filter(P=>P).join(` -`),e.source=E.data.source,e.options=Object.assign({},e.options,E.data.options),e.conference=E.data.conference,e._originalConference=E.data.conference,E.data.options.expirationDate&&(e.options.expirationDate=new Date(E.data.options.expirationDate)),C=k(parseGithubUrl(e.sourceUrl)),!await B())try{await me()}catch{}},()=>{s.url("/404")})),r.gistId&&r.gistId!=""&&(e.isUpdate=!0,e.detectedType="gist",e.gistId=r.gistId,t.get("/api/gist/"+e.gistId).then(async E=>{e.sourceUrl="https://gist.github.com/"+E.data.source.gistId,e.terms=E.data.options.terms.filter(P=>P).join(` -`),e.source=E.data.source,e.options=Object.assign({},e.options,E.data.options),e.conference=E.data.conference,e._originalConference=E.data.conference,E.data.options.expirationDate&&(e.options.expirationDate=new Date(E.data.options.expirationDate)),C=k(parseGithubUrl(e.sourceUrl)),!await B()&&await Se()},()=>{s.url("/404")}))}),t.get("/github/connections").then(E=>{e.githubConnections=E.data,!r.repoId&&!r.pullRequestId&&!r.gistId&&e.githubConnection===void 0&&E.data.appEnabled&&E.data.appConnected&&(e.githubConnection="github-app",e.sourceUrl&&e.workspaceOpen&&K())}).catch(()=>{}),e.urlSelected=async(E=!1)=>{let P=++m,M;try{M=parseGithubUrl(e.sourceUrl.trim())}catch{e.sourceLoading=!1,he.cancel(),Ee.cancel(),Ve.cancel(),e.previewStatus="idle",e.sourceUrlError=e.sourceUrl?"Please provide a valid GitHub URL.":"",I("sourceUrl","github",!1);return}let z=k(M),y=E||C===z;C=z,e.sourceUrlError="",I("sourceUrl","github",!0);let S=document.activeElement?.id==="sourceUrl-landing";e.workspaceOpen=!0,S&&a(()=>document.getElementById("sourceUrl")?.focus(),0),e.reconnectingSource=!1,e.reconnectRepositoryId=void 0,!y&&!e.isUpdate&&(e.repoId="",e.pullRequestId="",e.gistId=""),e.details=null,e.branches=[],y||(e.source={type:"GitHubStream",branch:"",commit:""}),he.cancel(),Ee.cancel(),Ve.cancel(),ie.clear(),Ce.clear(),e.previewStatus="idle",e.anonymize_readme="",e.readme="",e.html_readme="",e.detectedType=null,e.gistOAuthRequired=!1,e._preservingDraft=y;try{M.gistId&&!M.repo?(e.detectedType="gist",e.source={gistId:M.gistId},await Se()):M.pullRequestId?(e.detectedType="pr",e.source={repositoryFullName:M.owner+"/"+M.repo,pullRequestId:M.pullRequestId},await me()):(e.detectedType="repo",await Promise.all([ae(),oe()]),ve())}catch{}finally{P===m&&(e._preservingDraft=!1)}$('[data-toggle="tooltip"]').tooltip()},$('[data-toggle="tooltip"]').tooltip(),e.watch("source.branch",async()=>{if(e.detectedType!=="repo")return;let E=e.branches.filter(M=>M.name==e.source.branch)[0];if(!E)return;!(!e.reconnectingSource&&e.isUpdate&&e._originalBranch===e.source.branch&&!!e.source.commit)&&!(e._preservingDraft&&e.source.commit)&&(e.source.commit=E.commit),e.readme=E.readme,await oe(),ve()}),e.getBranches=async E=>{let P=parseGithubUrl(e.sourceUrl),M=f();try{let z=await t.get(`/api/repo/${P.owner}/${P.repo}/branches`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&r.repoId&&J(e.sourceUrl)===e._originalFullName?r.repoId:void 0,connection:e.githubConnection,force:E===!0||e.reconnectingSource?"1":"0",repositoryID:Y()}});if(!w(M))return;e.branches=z.data,e.sourceUnreachable=!1,e.source.branch||(e.source.branch=e.details.defaultBranch);let y=e.branches.filter(S=>S.name==e.source.branch);y.length>0&&(!(!e.reconnectingSource&&!E&&e.isUpdate&&!e.options.update&&e._originalBranch===e.source.branch&&e.source.commit)&&!(e._preservingDraft&&e.source.commit)&&(e.source.commit=y[0].commit),e.readme=y[0].readme,await oe(E))}catch(z){if(!w(M))return;e.branches=[],e.sourceUnreachable=z&&(z.status===404||z.data&&z.data.error==="repo_not_found");let y=z&&z.data&&z.data.error||(z&&z.status===404?"repo_not_found":"unknown_error");i("ERRORS."+y).then(S=>{e.toasts=e.toasts||[],e.addToast({title:"Error",date:new Date,body:S}),e.error=S},console.error),typeof I=="function"&&I("sourceUrl","missing",!1)}finally{b(M)}};async function ae(){let E=parseGithubUrl(e.sourceUrl),P=f();try{U();let M=await t.get(`/api/repo/${E.owner}/${E.repo}/`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&r.repoId&&J(e.sourceUrl)===e._originalFullName?r.repoId:void 0,connection:e.githubConnection,repositoryID:Y(),force:"1"}});if(!w(P))return;e.details=M.data,e.reconnectingSource&&(e.reconnectRepositoryId=e.details.externalId),e.details&&e.details.id&&(e.repositoryID=e.details.id),e.repoId||(e.repoId=e.details.repo+"-"+generateRandomId(4)),await e.getBranches(e.reconnectingSource)}catch(M){if(!w(P))return;throw M.data&&(i("ERRORS."+M.data.error).then(z=>{e.addToast({title:"Error",date:new Date,body:z}),e.error=z},console.error),F(M.data.error)),I("sourceUrl","missing",!1),M}finally{b(P)}}async function oe(E){if(e.readme&&!E)return e.readme;let P=parseGithubUrl(e.sourceUrl),M=f();try{let z=await t.get(`/api/repo/${P.owner}/${P.repo}/readme`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&r.repoId&&J(e.sourceUrl)===e._originalFullName?r.repoId:void 0,connection:e.githubConnection,force:E===!0?"1":"0",branch:e.source.branch,repositoryID:Y()}});w(M,!0)&&(e.readme=z.data)}catch{w(M,!0)&&(e.readme="")}finally{b(M)}}function ne(){let E={terms:e.terms?e.terms.split(` -`):[],image:!!e.options.image,link:!!e.options.link,repoId:e.repoId};e.source&&e.source.branch&&(E.branchName=e.source.branch);try{let P=parseGithubUrl(e.sourceUrl);E.repoName=`${P.owner}/${P.repo}`}catch{}return E}function ue(E,P,M){let z=null,y=0,S=()=>{if(e.detectedType!==E)return;z&&a.cancel(z);let q=++y;e.previewStatus="loading",z=a(()=>{z=null;let H=P();if(!H){e.previewStatus="idle";return}t.post("/api/anonymize-preview",H).then(j=>{q===y&&(M(j.data,H),e.previewStatus="ready")}).catch(()=>{q===y&&(e.previewStatus="error")})},200)};return S.cancel=()=>{y++,z&&a.cancel(z),z=null},e.on("dispose",S.cancel),S}e.retryPreview=()=>{e.detectedType==="repo"&&he(),e.detectedType==="pr"&&Ee(),e.detectedType==="gist"&&Ve()};let he=ue("repo",()=>e.readme?{content:e.readme,options:ne()}:null,E=>{if(typeof E?.content!="string")throw Error("Invalid preview response");e.anonymize_readme=E.content;let P="";try{let z=parseGithubUrl(e.sourceUrl),y=e.source.branch||e.details&&e.details.defaultBranch||"main";P=`https://github.com/${z.owner}/${z.repo}/raw/${y}/`}catch{}let M=renderMD(e.anonymize_readme,P);e.html_readme=M,a(Prism.highlightAll,150)});function ve(){!e.anonymize||!e.anonymize.terms||(e.termsRegexWarning=!!e.terms&&!!e.terms.match(/[-[\]{}()*+?.,\\^$|#]/g),he())}async function me(){let E=parseGithubUrl(e.sourceUrl),P=f();try{U();let M=await t.get(`/api/pr/${E.owner}/${E.repo}/${E.pullRequestId}`,{params:{connection:e.githubConnection}});if(!w(P))return;e.details=M.data,e.pullRequestId||(e.pullRequestId=E.repo+"-PR"+E.pullRequestId+"-"+generateRandomId(4))}catch(M){if(!w(P))return;throw M.data&&(i("ERRORS."+M.data.error).then(z=>{e.addToast({title:"Error",date:new Date,body:z}),e.error=z},console.error),F(M.data.error)),I("sourceUrl","missing",!1),M}finally{b(P)}}let ie=He(new Map);function Pe(){let E=new Set,P=e.details&&e.details.pullRequest;if(!P)return E;typeof P.title=="string"&&E.add(P.title),typeof P.body=="string"&&E.add(P.body),typeof P.diff=="string"&&E.add(P.diff);let M=P.comments||[];for(let z of M)typeof z.author=="string"&&E.add(z.author),typeof z.body=="string"&&E.add(z.body);return E}let Ee=ue("pr",()=>{let E=Pe(),P=Array.from(E);return P.length===0?null:{contents:P,options:ne()}},(E,P)=>{if(!Array.isArray(E?.contents)||E.contents.length!==P.contents.length||E.contents.some(y=>typeof y!="string"))throw Error("Invalid preview response");let M=P.contents,z=new Map;for(let y=0;yie.set(S,y))});e.anonymizePrContent=function(E){return E&&(ie.has(E)?ie.get(E):"")};async function Se(){let E=parseGithubUrl(e.sourceUrl),P=f();try{if(U(),e.gistOAuthRequired=!1,e.githubConnections?.oauthConnected===!1){e.gistOAuthRequired=!0,I("sourceUrl","missing",!1);return}let M=await t.get(`/api/gist/source/${E.gistId}`);if(!w(P))return;e.details=M.data,e.gistId||(e.gistId="gist-"+E.gistId.substring(0,6)+"-"+generateRandomId(4))}catch(M){if(!w(P))return;if(M.data?.error==="github_oauth_required"){e.gistOAuthRequired=!0,I("sourceUrl","missing",!1);return}throw M.data&&(i("ERRORS."+M.data.error).then(z=>{e.addToast({title:"Error",date:new Date,body:z}),e.error=z},console.error),F(M.data.error)),I("sourceUrl","missing",!1),M}finally{b(P)}}let Ce=He(new Map);function Te(){let E=new Set,P=e.details&&e.details.gist;if(!P)return E;typeof P.description=="string"&&E.add(P.description),typeof P.ownerLogin=="string"&&E.add(P.ownerLogin);let M=P.files||[];for(let y of M)typeof y.filename=="string"&&E.add(y.filename),typeof y.content=="string"&&E.add(y.content);let z=P.comments||[];for(let y of z)typeof y.author=="string"&&E.add(y.author),typeof y.body=="string"&&E.add(y.body);return E}let Ve=ue("gist",()=>{let E=Te(),P=Array.from(E);return P.length===0?null:{contents:P,options:ne()}},(E,P)=>{if(!Array.isArray(E?.contents)||E.contents.length!==P.contents.length||E.contents.some(y=>typeof y!="string"))throw Error("Invalid preview response");let M=P.contents,z=new Map;for(let y=0;yCe.set(S,y)),Ue()});e.anonymizeGistContent=function(E){return E&&(Ce.has(E)?Ce.get(E):"")},e.previewGistFiles=[];function Ue(){let E=e.details&&e.details.gist&&e.details.gist.files||[];e.previewGistFiles=E.map(P=>({filename:e.anonymizeGistContent(P.filename),content:e.anonymizeGistContent(P.content),language:P.language}))}e.watch("details.gist.files",Ue,!0),e.watch("terms",Ue);function Fe(){let E=e.conference;if(e.conference_data=null,!E)return;let P=e.isUpdate&&E===e._originalConference;t.get("/api/conferences/"+E).then(M=>{e.conference===E&&(e.conference_data=M.data,e.conference_data.startDate=new Date(e.conference_data.startDate),e.conference_data.endDate=new Date(e.conference_data.endDate),!P&&(e.options.expirationDate=new Date(e.conference_data.endDate),e.options.expirationMode="remove",e.options.update=e.conference_data.options.update,e.options.image=e.conference_data.options.image,e.options.pdf=e.conference_data.options.pdf,e.options.notebook=e.conference_data.options.notebook,e.options.link=e.conference_data.options.link))},()=>{e.conference===E&&(e.conference_data=null)})}function U(){I("repoId","used",!0),I("repoId","format",!0),I("pullRequestId","used",!0),I("pullRequestId","format",!0),I("gistId","used",!0),I("gistId","format",!0),I("sourceUrl","used",!0),I("sourceUrl","missing",!0),I("sourceUrl","access",!0),I("sourceUrl","github",!0),I("commit","exists",!0),I("conference","activated",!0),I("terms","format",!0),e.termsRegexWarning=!1}function te(){let E=e.anonymize&&e.anonymize.expirationDate;return!e.options.expirationDate||E&&E.invalid?(E&&E.setDirty&&E.setDirty(),e.error="Please choose a valid expiration date.",!0):!1}function F(E){let P=e.detectedType==="pr"?"pullRequestId":e.detectedType==="gist"?"gistId":"repoId";switch(E){case"repoId_already_used":I(P,"used",!1);break;case"invalid_repoId":I(P,"format",!1);break;case"options_not_provided":I(P,"format",!1);break;case"repo_already_anonymized":I("sourceUrl","used",!1);break;case"invalid_terms_format":I("terms","format",!1);break;case"repo_not_found":I("sourceUrl","missing",!1);break;case"repo_not_accessible":I("sourceUrl","access",!1);break;case"commit_not_found":I("commit","exists",!1);break;case"conf_not_activated":I("conference","activated",!1);break}}e.coauthors=e.coauthors||[],e.coauthorResults=[],e.coauthorError="",e.searchCoauthors=()=>{let E=(e.coauthorSearch||"").trim();if(e.coauthorError="",E.length<2){e.coauthorResults=[];return}t.get("/api/user/search/github-users",{params:{q:E}}).then(P=>{let M=new Set((e.coauthors||[]).map(z=>(z.username||"").toLowerCase()));e.coauthorResults=(P.data||[]).filter(z=>!M.has((z.username||"").toLowerCase()))},()=>{e.coauthorResults=[]})},e.addCoauthor=(E,P)=>{P&&P.preventDefault(),!(!E||!E.username)&&t.post("/api/repo/"+e.repoId+"/coauthors",{username:E.username}).then(M=>{e.coauthors=M.data||[],e.coauthorResults=[],e.coauthorSearch="",e.coauthorError=""},M=>{let z=M&&M.data&&M.data.error||"unknown_error";e.coauthorError=z})},e.removeCoauthor=E=>{!E||!E.username||confirm("Remove co-author "+E.username+"?")&&t.delete("/api/repo/"+e.repoId+"/coauthors/"+encodeURIComponent(E.username)).then(P=>{e.coauthors=P.data||[]},P=>{let M=P&&P.data&&P.data.error||"unknown_error";e.coauthorError=M})},e.anonymizeRepo=E=>{if(e.sourceLoading){e.error="Wait for the source to finish loading before saving.";return}if(e.reconnectingSource&&!e.reconnectRepositoryId||te())return;if(e.anonymize?.invalid||e.sourceUrlError){e.error="Please correct the highlighted fields before saving.";return}let P=E.currentTarget||E.target.closest?.("button")||E.target;P.disabled=!0;let M=parseGithubUrl(e.sourceUrl),z={repoId:e.repoId,terms:e.terms.trim().split(` -`).filter(S=>S),connection:e.githubConnection,fullName:`${M.owner}/${M.repo}`,repository:e.sourceUrl,reconnectRepositoryId:e.reconnectRepositoryId,options:e.options,source:e.source,conference:e.conference};e.details&&(z.options.pageSource=e.details.pageSource),U();let y=e.isUpdate?"/api/repo/"+e.repoId:"/api/repo/";t.post(y,z,{headers:{"Content-Type":"application/json"}}).then(()=>{R.clear(),window.location.href="/status/"+e.repoId},S=>{S.data&&(i("ERRORS."+S.data.error).then(q=>{e.error=q},console.error),F(S.data.error))}).finally(()=>{P.disabled=!1})},e.anonymizeGist=E=>{if(e.sourceLoading){e.error="Wait for the source to finish loading before saving.";return}if(te())return;if(e.anonymize?.invalid||e.sourceUrlError){e.error="Please correct the highlighted fields before saving.";return}let P=E.currentTarget||E.target.closest?.("button")||E.target;P.disabled=!0;let M=parseGithubUrl(e.sourceUrl),z={gistId:e.gistId,terms:e.terms.trim().split(` -`).filter(S=>S),source:{gistId:M.gistId},options:e.options,conference:e.conference};U();let y=e.isUpdate?"/api/gist/"+e.gistId:"/api/gist/";t.post(y,z,{headers:{"Content-Type":"application/json"}}).then(()=>{R.clear(),window.location.href="/gist/"+e.gistId},S=>{S.data&&(i("ERRORS."+S.data.error).then(q=>{e.error=q},console.error),F(S.data.error))}).finally(()=>{P.disabled=!1})},e.anonymizePullRequest=E=>{if(e.sourceLoading){e.error="Wait for the source to finish loading before saving.";return}if(te())return;if(e.anonymize?.invalid||e.sourceUrlError){e.error="Please correct the highlighted fields before saving.";return}let P=E.currentTarget||E.target.closest?.("button")||E.target;P.disabled=!0;let M=parseGithubUrl(e.sourceUrl),z={pullRequestId:e.pullRequestId,connection:e.githubConnection,terms:e.terms.trim().split(` -`).filter(S=>S),source:{repositoryFullName:`${M.owner}/${M.repo}`,pullRequestId:M.pullRequestId},options:e.options,conference:e.conference};U();let y=e.isUpdate?"/api/pr/"+e.pullRequestId:"/api/pr/";t.post(y,z,{headers:{"Content-Type":"application/json"}}).then(()=>{R.clear(),window.location.href="/pr/"+e.pullRequestId},S=>{S.data&&(i("ERRORS."+S.data.error).then(q=>{e.error=q},console.error),F(S.data.error))}).finally(()=>{P.disabled=!1})},e.watch("conference",()=>{Fe()}),e.watch("terms",()=>{e.detectedType==="repo"&&ve(),e.detectedType==="pr"&&Ee(),e.detectedType==="gist"&&Ve()}),e.watch("options.image",()=>{e.detectedType==="repo"&&ve(),e.detectedType==="pr"&&Ee(),e.detectedType==="gist"&&Ve()}),e.watch("options.link",()=>{e.detectedType==="repo"&&ve(),e.detectedType==="pr"&&Ee(),e.detectedType==="gist"&&Ve()}),e.watch("details",()=>{e.detectedType==="pr"&&Ee(),e.detectedType==="gist"&&Ve()},!0)},tr=function(e,t,n,r,s,i){let a=ct(),u=Kt(),m=0,h=!1;e.on("dispose",()=>{h=!0,m++,v&&v.resolve()}),e.files=[],e.isMac=/Mac|iPhone|iPad|iPod/.test(navigator.platform||navigator.userAgent),e.fileSearchQuery="",e.fileSearchResults=null,e.fileSearchLoading=!1,u(document,"keydown",function(B){if((B.metaKey||B.ctrlKey)&&B.key==="k"){B.preventDefault();var ae=document.querySelector(".tree-search-input");ae&&(ae.focus(),ae.select())}});var v=null;e.onFileSearchChange=function(){v&&(v.resolve(),v=null);let B=e.fileSearchQuery;if(!B||B.length<2){e.fileSearchResults=null,e.fileSearchLoading=!1;return}e.fileSearchLoading=!0;let ae=i.defer();v=ae,t.get(`/api/repo/${e.repoId}/files/search?q=${encodeURIComponent(B)}`,{timeout:ae.promise}).then(function(oe){if(!(h||v!==ae)){v=null,e.fileSearchLoading=!1;var ne={};e.files.forEach(function(U){ne[(U.path||"")+"/"+U.name]=!0});for(var ue=[],he={},ve=0;ve0&&e.files.push.apply(e.files,ue);for(var Te=[],Ve=0;Ve0&&e.files.push.apply(e.files,Te),e.fileSearchResults=oe.data}},function(){!h&&v===ae&&(v=null,e.fileSearchLoading=!1,e.fileSearchResults=[])})};let w={yml:"yaml",txt:"text",py:"python",js:"javascript",ts:"typescript"},f=["license","txt"],b=["png","jpg","jpeg","gif","svg","ico","bmp","tiff","tif","webp","avif","heif","heic"],C=["wav","mp3","ogg","wma","flac","aac","m4a"],k=["mp4","avi","webm","mov","mpg","mpeg","mkv","flv","wmv","3gp","3g2","m4v","f4v","f4p","f4a","f4b"];e.on("routeUpdate",function(B,ae){if(e.repoId!=r.repoId)return K();if((r.path||"")!=e.filePath){e.filePath=r.path||"",e.paths=e.filePath.split("/").filter(oe=>oe&&oe.trim().length>0),Y();for(let oe=0;oe0?e.paths.slice(0,oe).join("/"):"";e.files.some(he=>he.path===ne)||e.getFiles(ne)}}});function R(){if(e.paths[0]!="")return;let B=["readme.md","readme.txt","readme.org","readme.1st","readme"],ae={};for(let ne of e.files)ne.name.toLowerCase().indexOf("readme")>-1&&(ae[ne.name.toLowerCase()]=ne.name);let oe=null;for(let ne of B)if(ae[ne]){oe=ne;break}if(!oe&&Object.keys(ae).length>0&&(oe=Object.keys(ae)[0]),oe){let ne=n.url();ne[ne.length-1]!="/"&&(ne+="/"),n.url(ne+encodePathForUrl(ae[oe]))}}e.fileCounts=null,e.getFiles=function(B){let ae=e.repoId;return t.get(`/api/repo/${e.repoId}/files/?path=${encodeURIComponent(B)}&v=${e.options.lastUpdateDate}`).then(function(oe){if(h||ae!==e.repoId)return[];let ne=B||"";return e.files=e.files.filter(ue=>ue.path!==ne),e.files.push(...oe.data),oe.data},function(oe){if(h||ae!==e.repoId)return[];e.type="error",e.content=oe&&oe.data&&oe.data.error||"unknown_error",e.files=[]})};function D(){let B=e.repoId;t.get(`/api/repo/${e.repoId}/files/counts`).then(function(ae){h||B!==e.repoId||(e.fileCounts=ae.data)},function(){e.fileCounts={}})}function T(){return e.files.filter(B=>B.name==e.paths[e.paths.length-1]&&B.path==e.paths.slice(0,e.paths.length-1).join("/"))[0]}var V=null;e.on("dispose",function(){V&&a.interval.cancel(V)});function _(B){if(h)return;let ae=e.repoId;t.get(`/api/repo/${e.repoId}/options`).then(oe=>{if(!(h||ae!==e.repoId)){if(e.options=oe.data,e.options.url){window.location=e.options.url;return}B&&B(oe.data)}},oe=>{if(!(h||ae!==e.repoId)){var ne=oe.data||{};if(ne.error==="rate_limited"&&ne.resetAt){let he=function(){var ve=Math.max(0,Math.ceil((e.rateLimitResetAt-Date.now())/1e3));if(ve<=0)e.rateLimitCountdown="",e.rateLimitResetAt=0,V&&(a.interval.cancel(V),V=null),_(B);else{var me=Math.floor(ve/60),ie=ve%60;e.rateLimitCountdown=me>0?me+"m "+ie+"s":ie+"s"}};var ue=he;e.type="rate_limited",e.rateLimitResetAt=ne.resetAt,V&&a.interval.cancel(V),he(),V=a.interval(he,1e3)}else ne.error==="repository_not_ready"?(e.type="loading",a.timeout(function(){_(B)},3e3)):(e.type="error",e.content=ne.error)}})}e.toggleSource=function(){e.showSource=!e.showSource},e.toggleAllowScripts=function(){e.allowScripts=!e.allowScripts};function O(B){return w[B]?w[B]:B}function I(B){return B=="pdf"?"pdf":B=="html"||B=="htm"?"html-doc":B=="md"?"md":B=="org"?"org":B=="ipynb"?"IPython":f.indexOf(B)>-1?"text":b.indexOf(B)>-1?"image":k.indexOf(B)>-1?"media":C.indexOf(B)>-1?"audio":"code"}function J(B,ae){let oe=m;if(!B){e.type="error",e.content="no_file_selected";return}let ne=e.type;e.type="loading",e.content="loading";let ue=ae&&ae.sha||"0";t.get(`/api/repo/${e.repoId}/file/${encodePathForUrl(B)}?v=`+ue,{transformResponse:he=>he}).then(he=>{if(!(h||oe!==m)){if(e.type=ne,e.content=he.data,e.content==""&&(e.content=null),e.type=="md"&&(e.content=renderMD(he.data,n.url()+"/../"),e.type="html"),e.type=="org"){let me=contentAbs2Relative(he.data);var ve=new Org.Parser().parse(me).convert(Org.ConverterHTML,{headerOffset:1,exportFromLineNumber:!1,suppressSubScriptHandling:!0,suppressAutoLink:!1});e.content=DOMPurify.sanitize(ve.toString()),e.type="html"}e.type=="code"&&he.headers("content-type")=="application/octet-stream"&&(e.type="binary",e.content="binary"),a.timeout(()=>{Prism.highlightAll()},50)}},he=>{if(!(h||oe!==m)){e.type="error",e.content="unknown_error";try{he.data=JSON.parse(he.data),he.data.error?e.content=he.data.error:e.content=he.data}catch{console.log(he),he.status==-1?e.content="request_error":he.status==502&&(e.content="unreachable")}}})}function Y(){m++,e.content="",e.file=T();let B="0";e.file&&e.file.sha&&(B=e.file.sha),e.url=`/api/repo/${e.repoId}/file/${encodePathForUrl(e.filePath)}?v=${B}`;let ae=e.filePath.substring(0,e.filePath.lastIndexOf("/")+1);e.fileBaseUrl=`/api/repo/${e.repoId}/file/${ae?encodePathForUrl(ae):""}`,e.showSource=!1,e.allowScripts=!1;let oe=e.filePath.toLowerCase(),ne=oe.lastIndexOf(".");if(ne>-1&&(oe=oe.substring(ne+1)),e.aceOption={readOnly:!0,useWrapMode:!0,showGutter:!0,theme:"chrome",useSoftTab:!0,tabSize:2,fontSize:15,keyBinding:"vscode",fullLineSelection:!0,highlightActiveLine:!1,highlightGutterLine:!1,cursor:"hide",showInvisibles:!1,showIndentGuides:!0,showPrintMargin:!1,highlightSelectedWord:!1,enableBehaviours:!0,fadeFoldWidgets:!1,mode:O(oe),onLoad:function(ue){let he=ace.require("ace/range").Range,ve=null;function me(Ee,Se){ve!==null&&(ue.session.removeMarker(ve),ve=null),Ee!=null&&(ve=ue.session.addMarker(new he(Ee,0,Se,1),"highlighted-line","fullLine"))}function ie(Ee){let Se=window.location.hash.match(/^#L(\d+)(?:-L(\d+))?/);if(!Se){me(null);return}let Ce=parseInt(Se[1])-1,Te=Se[2]?parseInt(Se[2])-1:Ce;me(Ce,Te),Ee&&a.timeout(()=>{ue.scrollToLine(Ce,!0,!0,function(){})},100)}ie(!0);let Pe=null;ue.on("guttermousedown",function(Ee){let Se=Ee.getDocumentPosition().row,Ce=Ee.domEvent&&Ee.domEvent.shiftKey,Te=Se,Ve=Se;Ce&&Pe!==null?(Te=Math.min(Pe,Se),Ve=Math.max(Pe,Se)):Pe=Se;let Ue=Te===Ve?`#L${Te+1}`:`#L${Te+1}-L${Ve+1}`,Fe=window.location.pathname+window.location.search+Ue;window.history.replaceState(null,"",Fe),me(Te,Ve),Ee.stop()}),u(window,"hashchange",()=>ie(!1)),ue.setFontSize(e.aceOption.fontSize),ue.setReadOnly(e.aceOption.readOnly),ue.setKeyboardHandler(e.aceOption.keyBinding),ue.setSelectionStyle(e.aceOption.fullLineSelection?"line":"text"),ue.setOption("displayIndentGuides",!0),ue.setHighlightActiveLine(e.aceOption.highlightActiveLine),e.aceOption.cursor=="hide"&&(ue.renderer.$cursorLayer.element.style.display="none"),ue.setHighlightGutterLine(e.aceOption.highlightGutterLine),ue.setShowInvisibles(e.aceOption.showInvisibles),ue.setDisplayIndentGuides(e.aceOption.showIndentGuides),ue.renderer.setShowPrintMargin(e.aceOption.showPrintMargin),ue.setHighlightSelectedWord(e.aceOption.highlightSelectedWord),ue.session.setUseSoftTabs(e.aceOption.useSoftTab),ue.session.setTabSize(e.aceOption.tabSize),ue.setBehavioursEnabled(e.aceOption.enableBehaviours),ue.setFadeFoldWidgets(e.aceOption.fadeFoldWidgets)}},e.on("dark-mode",(ue,he)=>{he?e.aceOption.theme="nord_dark":e.aceOption.theme="chrome"}),e.isDarkMode&&(e.aceOption.theme="nord_dark"),e.type=I(oe),e.type=="pdf"){e.content="pdf";return}J(e.filePath,e.file)}function K(){m++,e.files=[],e.content=null,e.fileCounts=null,e.fileSearchQuery="",e.onFileSearchChange(),e.repoId=r.repoId,e.type="loading",e.filePath=r.path||"",e.paths=e.filePath.split("/");let B=e.repoId;_(function(ae){D();var oe=i.resolve();for(let ne=0;ne0?e.paths.slice(0,ne).join("/"):"";oe=oe.then(function(){return e.getFiles(ue)}).then(function(){if(e.type==="error")return i.reject("error")})}oe.then(function(){h||B!==e.repoId||(e.files.length==1&&e.files[0].name==""?(e.files=[],e.type="empty"):(R(),Y()))})})}K()},Ha=function(e,t,n,r,s){async function i(m){t.get(`/api/pr/${e.pullRequestId}/options`).then(h=>{if(e.options=h.data,e.options.url){window.location=e.options.url;return}m&&m(h.data)},h=>{e.type="error",e.content=h.data.error})}async function a(m){t.get(`/api/pr/${e.pullRequestId}/content`).then(h=>{e.details=h.data,e.tabState={active:h.data.diff?"diff":"comments"},m&&m(h.data)},h=>{e.type="error",e.content=h.data.error})}function u(){e.pullRequestId=r.pullRequestId,e.type="loading",i(m=>{a()})}u()},Ba=function(e,t,n,r,s){async function i(m){t.get(`/api/gist/${e.gistId}/options`).then(h=>{if(e.options=h.data,e.options.url){window.location=e.options.url;return}m&&m(h.data)},h=>{e.type="error",e.content=h.data.error})}async function a(m){t.get(`/api/gist/${e.gistId}/content`).then(h=>{e.details=h.data;let v=h.data&&h.data.files&&h.data.files.length;e.tabState={active:v?"files":"comments"},m&&m(h.data)},h=>{e.type="error",e.content=h.data.error})}function u(){e.gistId=r.gistId,e.type="loading",i(()=>{a()})}u()},ja=function(e,t,n){e.watch("user.status",()=>{e.user==null&&n.url("/")}),e.user==null&&n.url("/"),e.conferences=[],e.loading=!0,e.error="",e.search="";let r="conferences.filterPrefs",s={filters:{status:{ready:!0,expired:!1,removed:!1}},orderBy:"name"},i=loadFilterPrefs(r)||{};e.filters={status:Object.assign({},s.filters.status,i.filters&&i.filters.status||{})},e.orderBy=i.orderBy||s.orderBy,e.watch("orderBy",()=>{saveFilterPrefs(r,{filters:e.filters,orderBy:e.orderBy})}),e.watch("filters",()=>{saveFilterPrefs(r,{filters:e.filters,orderBy:e.orderBy})},!0),e.removeConference=function(a){if(!a.removing&&confirm(`Are you sure that you want to remove the conference ${a.name}? All the repositories linked to this conference will expire.`)){a.removing=!0;let u=He({title:`Removing ${a.name}...`,date:new Date,body:`The conference ${a.name} is going to be removed.`});e.addToast(u),t.delete(`/api/conferences/${a.conferenceID}`).then(()=>{u.title=`${a.name} is removed.`,u.body=`The conference ${a.name} is removed.`,e.loadConferences()}).catch(()=>{u.title="Unable to remove conference",u.body="Please try again. The conference has not been removed."}).finally(()=>{a.removing=!1})}},e.loadConferences=()=>(e.loading=!0,e.error="",t.get("/api/conferences/").then(a=>{e.conferences=a.data||[]},a=>{e.error="Unable to load your conferences. Please try again."}).finally(()=>{e.loading=!1})),e.loadConferences(),e.conferenceFilter=a=>{if(e.filters.status[a.status]==!1)return!1;let u=e.search.trim().toLowerCase();return!!(!u||(a.name||"").toLowerCase().includes(u)||(a.conferenceID||"").toLowerCase().includes(u))}},or=function(e,t,n,r){e.watch("user.status",()=>{e.user==null&&n.url("/")}),e.user==null&&n.url("/"),e.plans=[],e.editionMode=!1,e.saving=!1,e.error="";function s(){t.get("/api/conferences/"+r.conferenceId).then(v=>{e.options={...e.options,...v.data,billing:v.data.billing||{}},e.options.startDate=new Date(e.options.startDate),e.options.endDate=new Date(e.options.endDate)})}r.conferenceId&&(e.editionMode=!0,s());function i(){t.get("/api/conferences/plans").then(v=>{e.plans=v.data,e.plan=e.plans.filter(w=>w.id==e.options.plan.planID)[0]})}i();let a=new Date;a.setDate(1),a.setMonth(a.getMonth()+1);let u=new Date(a);u.setMonth(a.getMonth()+7,0),e.options={billing:{},startDate:a,endDate:u,plan:{planID:"free_conference"},options:{link:!0,image:!0,pdf:!0,notebook:!0,update:!0,page:!0}},e.plan=null,e.watch("options.plan.planID",()=>{e.plan=e.plans.filter(v=>v.id==e.options.plan.planID)[0]});function m(){e.conference.name.setValidity("required",!0),e.conference.conferenceID.setValidity("pattern",!0),e.conference.conferenceID.setValidity("required",!0),e.conference.conferenceID.setValidity("used",!0),e.conference.startDate.setValidity("required",!0),e.conference.startDate.setValidity("invalid",!0),e.conference.endDate.setValidity("required",!0),e.conference.endDate.setValidity("invalid",!0),e.conference.setValidity("error",!0)}function h(v){switch(v){case"conf_name_missing":e.conference.name.setValidity("required",!1);break;case"conf_id_missing":e.conference.conferenceID.setValidity("required",!1);break;case"conf_id_format":e.conference.conferenceID.setValidity("pattern",!1);break;case"conf_id_used":e.conference.conferenceID.setValidity("used",!1);break;case"conf_start_date_missing":e.conference.startDate.setValidity("required",!1);break;case"conf_end_date_missing":e.conference.endDate.setValidity("required",!1);break;case"conf_start_date_invalid":e.conference.startDate.setValidity("invalid",!1);break;case"conf_end_date_invalid":e.conference.endDate.setValidity("invalid",!1);break;default:e.conference.setValidity("error",!1);break}}e.submit=function(){if(e.saving)return;e.saving=!0,e.error="";let v=JSON.parse(JSON.stringify(e.options)),w=He({title:`Creating ${v.name}...`,date:new Date,body:`The conference ${v.conferenceID} is in creation.`});e.editionMode&&(w.title=`Updating ${v.name}...`,w.body=`The conference '${v.conferenceID}' is updating.`),e.addToast(w),m(),t.post("/api/conferences/"+(e.editionMode?v.conferenceID:""),v).then(()=>{e.editionMode?(w.title=`${v.name} updated`,w.body=`The conference '${v.conferenceID}' is updated.`):(w.title=`${v.name} created`,w.body=`The conference '${v.conferenceID}' is created.`),n.url("/conference/"+v.conferenceID)},f=>{h(f.data?.error),e.error="Unable to save the conference. Please correct any highlighted fields and try again.",e.removeToast(w)}).finally(()=>{e.saving=!1})}},Ga=function(e,t,n,r){e.watch("user.status",()=>{e.user==null&&n.url("/")}),e.user==null&&n.url("/"),e.conference=null,e.search="",e.filters={status:{ready:!0,expired:!1,removed:!1}},e.orderBy="-anonymizeDate",e.repoFiler=i=>{if(e.filters.status[i.status]==!1)return!1;let a=e.search.trim().toLowerCase();return!!(!a||(i.source?.fullName||"").toLowerCase().includes(a)||(i.repoId||"").toLowerCase().includes(a))};function s(){t.get("/api/conferences/"+r.conferenceId).then(i=>{e.conference=i.data})}s()},Wa=function(e,t){e.connections=null,e.connectionError="",e.busy=!1,e.loadConnections=()=>t.get("/github/connections").then(n=>{e.connections=n.data}).catch(n=>{e.connectionError=n.data?.error||"Unable to load connections."}),e.changeConnection=async(n,r,s)=>{e.busy=!0,e.connectionError="";try{let i=await t.post("/github/connections/migrate",{type:n.type,id:n.id,connection:r,preview:s},{headers:{"X-CSRF-Token":e.connections.csrf}});s?n.eligible=i.data.eligible:await e.loadConnections()}catch(i){e.connectionError=i.data?.error||"Unable to change connection."}finally{e.busy=!1}},e.disconnectOAuth=async()=>{e.busy=!0;try{await t.post("/github/connections/disconnect-oauth",{},{headers:{"X-CSRF-Token":e.connections.csrf}}),await e.loadConnections()}catch(n){e.connectionError=n.data?.error||"Unable to disconnect OAuth."}finally{e.busy=!1}},e.loadConnections()},Ka=function(e,t){e.accountRecovery=!1,t.get("/github/account-recovery").then(n=>{e.accountRecovery=n.data.required}).catch(()=>{})};var Ya=function(e,t,n){let r=ct(),s=Kt();e.Math=Math,e.watch("user.status",()=>{e.user==null&&n.url("/")}),e.user==null&&n.url("/"),e.repositories=[],e.total=-1,e.totalPage=0,e.statusCounts=[],e.totalSize=0,e.selected={},e.allSelected=!1;let i=C=>{if(C.key==="/"&&!["INPUT","TEXTAREA","SELECT"].includes(document.activeElement?.tagName)){C.preventDefault();let k=document.querySelector('.admin-filter-toolbar input[type="search"]');k&&k.focus()}};s(document,"keydown",i),e.on("dispose",()=>document.removeEventListener("keydown",i)),e.clearFilter=C=>{C==="dateRange"?(e.query.dateFrom="",e.query.dateTo=""):e.query[C]="",e.query.page=1},e.chips=[];let a=()=>{let C=[];e.query.owner&&C.push({key:"owner",label:"Owner",value:e.query.owner}),e.query.conference&&C.push({key:"conference",label:"Conference",value:e.query.conference}),e.chips=C};e.showStatusMessage=C=>{let k=C.statusMessage||"(no message)";window.prompt(`Status message for ${C.repoId} (${C.status}):`,k)},e.fetchGithubInfo=C=>{let k=window.open("","_blank");k&&k.document.write("
Loading GitHub info for "+C.repoId+"...
"),t.get("/api/admin/repos/"+C.repoId+"/github").then(R=>{k&&(k.document.open(),k.document.write('
'+JSON.stringify(R.data,null,2).replace(/[<>]/g,D=>D==="<"?"<":">")+"
"),k.document.close())},R=>{let D=R&&R.data?JSON.stringify(R.data,null,2):String(R);k&&(k.document.body.innerHTML='
'+D+"
")})},e.statusCountFor=C=>{let k=(e.statusCounts||[]).find(R=>R._id===C);return k?k.count:0},e.statusStorageFor=C=>{let k=(e.statusCounts||[]).find(R=>R._id===C);return k?k.storage:0},e.isErrorsOnly=()=>e.query&&e.query.error&&!e.query.ready&&!e.query.preparing&&!e.query.expired&&!e.query.removed,e.toggleErrorsOnly=()=>{e.isErrorsOnly()?Object.assign(e.query,{ready:!1,preparing:!0,expired:!1,removed:!1,error:!0}):Object.assign(e.query,{ready:!1,preparing:!1,expired:!1,removed:!1,error:!0}),e.query.page=1},e.toggleSortDirection=()=>{e.query.direction=e.query.direction==="asc"?"desc":"asc"},e.sortBy=C=>{e.query.sort===C?e.query.direction=e.query.direction==="asc"?"desc":"asc":(e.query.sort=C,e.query.direction="desc"),e.query.page=1},e.sortIcon=C=>e.query.sort===C?e.query.direction==="asc"?"fa-arrow-up":"fa-arrow-down":"";let u="admin.repos.filterPrefs",m={page:1,limit:25,sort:"lastView",direction:"desc",search:"",owner:"",conference:"",dateFrom:"",dateTo:"",ready:!1,expired:!1,removed:!1,error:!0,preparing:!0},h=loadFilterPrefs(u)||{};e.query=Object.assign({},m,h,{page:1,search:""});let v=n.search();v.owner&&(e.query.owner=v.owner),v.conference&&(e.query.conference=v.conference),v.search&&(e.query.search=v.search);let w="admin.repos.presets";e.presets=JSON.parse(localStorage.getItem(w)||"[]"),e.savePreset=()=>{let C=window.prompt("Preset name:");if(!C)return;let k=Object.assign({},e.query);delete k.page,e.presets=(e.presets||[]).filter(R=>R.name!==C),e.presets.push({name:C,query:k}),localStorage.setItem(w,JSON.stringify(e.presets))},e.applyPreset=C=>{Object.assign(e.query,C.query,{page:1})},e.deletePreset=C=>{e.presets=(e.presets||[]).filter(k=>k.name!==C.name),localStorage.setItem(w,JSON.stringify(e.presets))},e.selectAllOnPage=()=>{e.allSelected=!e.allSelected,e.repositories.forEach(C=>{e.selected[C.repoId]=e.allSelected})},e.selectedCount=()=>Object.values(e.selected||{}).filter(Boolean).length,e.selectedRepos=()=>e.repositories.filter(C=>e.selected[C.repoId]),e.bulkRefresh=()=>{let C=e.selectedRepos();C.length&&confirm(`Force refresh ${C.length} repositories?`)&&C.forEach(k=>e.updateRepository(k))},e.bulkRemoveCache=()=>{let C=e.selectedRepos();C.length&&confirm(`Purge cache for ${C.length} repositories?`)&&C.forEach(k=>e.removeCache(k))},e.clearSelection=()=>{e.selected={},e.allSelected=!1},e.exportCsv=()=>{let C=new URLSearchParams(Object.entries(e.query).filter(([,k])=>k!==""&&k!==!1&&k!=null));C.set("format","csv"),C.set("limit","10000"),window.open("/api/admin/repos?"+C.toString(),"_blank")},e.removeCache=C=>{confirm("Remove cached files for "+C.repoId+"?")&&t.delete("/api/admin/repos/"+C.repoId).then(()=>f(),k=>console.error(k))},e.removeRepository=C=>{confirm("Remove repository "+C.repoId+"?")&&t.delete("/api/repo/"+C.repoId+"/").then(()=>f(),k=>console.error(k))},e.updateRepository=C=>{let k=He({title:`Refreshing ${C.repoId}...`,date:new Date,body:`The repository ${C.repoId} is going to be refreshed.`});e.toasts.push(k),t.post(`/api/repo/${C.repoId}/refresh`).then(R=>{R.data.status=="ready"?k.title=`${C.repoId} is refreshed.`:k.title=`Refreshing of ${C.repoId}.`},R=>{k.title=`Error during the refresh of ${C.repoId}.`,k.body=R.body})},e.fetchError=null;function f(){e.fetchError=null,t.get("/api/admin/repos",{params:e.query}).then(C=>{e.total=C.data.total,e.totalPage=Math.ceil(C.data.total/e.query.limit),e.repositories=C.data.results,e.statusCounts=C.data.statusCounts||[],e.totalSize=C.data.totalSize||0,e.allSelected=!1},C=>{e.fetchError=C&&C.data&&C.data.error||"Failed to load repositories",console.error(C)})}f();let b=null;e.watch("query",()=>{r.timeout.cancel(b),b=r.timeout(f,500);let{page:C,search:k,...R}=e.query;saveFilterPrefs(u,R),a()},!0),a()},Ja=function(e,t,n){let r=ct(),s=Kt();e.Math=Math,e.watch("user.status",()=>{e.user==null&&n.url("/")}),e.user==null&&n.url("/"),e.users=[],e.total=-1,e.totalPage=0,e.statusCounts=[],e.selected={},e.allSelected=!1;let i=f=>{if(f.key==="/"&&!["INPUT","TEXTAREA","SELECT"].includes(document.activeElement?.tagName)){f.preventDefault();let b=document.querySelector('.admin-filter-toolbar input[type="search"]');b&&b.focus()}};s(document,"keydown",i),e.on("dispose",()=>document.removeEventListener("keydown",i)),e.clearFilter=f=>{f==="dateRange"?(e.query.dateFrom="",e.query.dateTo=""):e.query[f]="",e.query.page=1},e.chips=[];let a=()=>{let f=[];e.query.role&&f.push({key:"role",label:"Role",value:e.query.role}),e.chips=f};e.statusCountFor=f=>{let b=(e.statusCounts||[]).find(C=>C._id===f);return b?b.count:0},e.toggleSortDirection=()=>{e.query.direction=e.query.direction==="asc"?"desc":"asc"},e.sortBy=f=>{e.query.sort===f?e.query.direction=e.query.direction==="asc"?"desc":"asc":(e.query.sort=f,e.query.direction="desc"),e.query.page=1},e.sortIcon=f=>e.query.sort===f?e.query.direction==="asc"?"fa-arrow-up":"fa-arrow-down":"";let u="admin.users.filterPrefs",m={page:1,limit:25,sort:"username",direction:"asc",search:"",status:"",role:"",dateFrom:"",dateTo:""},h=loadFilterPrefs(u)||{};e.query=Object.assign({},m,h,{page:1,search:""}),e.selectAllOnPage=()=>{e.allSelected=!e.allSelected,e.users.forEach(f=>{e.selected[f.username]=e.allSelected})},e.selectedCount=()=>Object.values(e.selected||{}).filter(Boolean).length,e.selectedUsers=()=>e.users.filter(f=>e.selected[f.username]),e.banUser=f=>{confirm(`Ban user ${f.username}?`)&&t.post(`/api/admin/users/${f.username}/ban`).then(v,b=>console.error(b))},e.activateUser=f=>{t.post(`/api/admin/users/${f.username}/activate`).then(v,b=>console.error(b))},e.bulkBan=()=>{let f=e.selectedUsers();f.length&&confirm(`Ban ${f.length} users?`)&&f.forEach(b=>e.banUser(b))},e.exportCsv=()=>{let f=new URLSearchParams(Object.entries(e.query).filter(([,b])=>b!==""&&b!==!1&&b!=null));f.set("format","csv"),f.set("limit","10000"),window.open("/api/admin/users?"+f.toString(),"_blank")},e.fetchError=null;function v(){e.fetchError=null,t.get("/api/admin/users",{params:e.query}).then(f=>{e.total=f.data.total,e.totalPage=Math.ceil(f.data.total/e.query.limit),e.users=f.data.results,e.statusCounts=f.data.statusCounts||[],e.allSelected=!1},f=>{e.fetchError=f&&f.data&&f.data.error||"Failed to load users",console.error(f)})}v();let w=null;e.watch("query",()=>{r.timeout.cancel(w),w=r.timeout(v,500);let{page:f,search:b,...C}=e.query;saveFilterPrefs(u,C),a()},!0),a()},Qa=function(e,t,n,r){let s=ct();e.watch("user.status",()=>{e.user==null&&n.url("/")}),e.user==null&&n.url("/"),e.userInfo,e.repositories=[],e.search="",e.selected={},e.allSelected=!1;let i="admin.user.filterPrefs",a={filters:{status:{ready:!0,expired:!0,removed:!0,error:!0,preparing:!0}},sort:"anonymizeDate",direction:"desc"},u=loadFilterPrefs(i)||{};e.filters={status:Object.assign({},a.filters.status,u.filters&&u.filters.status||{})},e.query={sort:u.sort||a.sort,direction:u.direction||a.direction},e.orderBy=(e.query.direction==="asc"?"":"-")+e.query.sort,e.sortBy=f=>{e.query.sort===f?e.query.direction=e.query.direction==="asc"?"desc":"asc":(e.query.sort=f,e.query.direction="desc"),e.orderBy=(e.query.direction==="asc"?"":"-")+e.query.sort},e.sortIcon=f=>e.query.sort===f?e.query.direction==="asc"?"fa-arrow-up":"fa-arrow-down":"",e.watch("query",()=>{saveFilterPrefs(i,{filters:e.filters,sort:e.query.sort,direction:e.query.direction})},!0),e.watch("filters",()=>{saveFilterPrefs(i,{filters:e.filters,sort:e.query.sort,direction:e.query.direction})},!0),e.statusCountFor=f=>(e.repositories||[]).filter(b=>b.status===f).length,e.repoFiler=f=>e.filters.status[f.status]==!1?!1:!!(e.search.trim().length==0||f.source.fullName.indexOf(e.search)>-1||f.repoId.indexOf(e.search)>-1||f.statusMessage&&f.statusMessage.indexOf(e.search)>-1||f.conference&&f.conference.indexOf(e.search)>-1),e.selectAllOnPage=()=>{e.allSelected=!e.allSelected,(e.filteredRepositories||e.repositories).forEach(f=>{e.selected[f.repoId]=e.allSelected})},e.selectedCount=()=>Object.values(e.selected||{}).filter(Boolean).length,e.selectedRepos=()=>e.repositories.filter(f=>e.selected[f.repoId]),e.bulkRefresh=()=>{let f=e.selectedRepos();f.length&&confirm(`Force refresh ${f.length} repositories?`)&&f.forEach(b=>e.updateRepository(b))},e.bulkRemoveCache=()=>{let f=e.selectedRepos();f.length&&confirm(`Purge cache for ${f.length} repositories?`)&&f.forEach(b=>e.removeCache(b))},e.clearSelection=()=>{e.selected={},e.allSelected=!1},e.exportCsv=()=>{let f=e.filteredRepositories||e.repositories,C=["repoId","status","statusMessage","pageView","anonymizeDate","source.fullName","conference","size.storage"].join(","),k=f.map(T=>[T.repoId,T.status,T.statusMessage||"",T.pageView||0,T.anonymizeDate||"",T.source&&T.source.fullName||"",T.conference||"",T.size&&T.size.storage||0].map(V=>{let _=String(V??"");return/[",\n\r]/.test(_)?'"'+_.replace(/"/g,'""')+'"':_}).join(",")),R=new Blob([C+` +`+JSON.stringify(t):""}`},[Be.NAVIGATION_GUARD_REDIRECT]({from:e,to:t}){return`Redirected from "${e.fullPath}" to "${Ac(t)}" via a navigation guard.`},[Be.NAVIGATION_ABORTED]({from:e,to:t}){return`Navigation aborted from "${e.fullPath}" to "${t.fullPath}" via a navigation guard.`},[Be.NAVIGATION_CANCELLED]({from:e,to:t}){return`Navigation cancelled from "${e.fullPath}" to "${t.fullPath}" with a new navigation.`},[Be.NAVIGATION_DUPLICATED]({from:e,to:t}){return`Avoided redundant navigation to current location: "${e.fullPath}".`}};function ao(e,t){return Oe(new Error,{type:e,[fa]:!0},t)}function Mt(e,t){return e instanceof Error&&fa in e&&(t==null||!!(e.type&t))}var Tc=["params","query","hash"];function Ac(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;let t={};for(let n of Tc)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}function ha(e){let t={};if(e===""||e==="?")return t;let n=(e[0]==="?"?e.slice(1):e).split("&");for(let r=0;rs&&Hn(s)):[r&&Hn(r)]).forEach(s=>{s!==void 0&&(t+=(t.length?"&":"")+n,s!=null&&(t+="="+s))})}return t}function ma(e){let t={};for(let n in e){let r=e[n];r!==void 0&&(t[n]=wt(r)?r.map(s=>s==null?null:""+s):r==null?r:""+r)}return t}var va=Symbol(""),Xn=Symbol(""),Qs=Symbol(""),Xs=Symbol(""),Zs=Symbol("");function To(){let e=[];function t(r){return e.push(r),()=>{let s=e.indexOf(r);s>-1&&e.splice(s,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Gt(e,t,n,r,s,i=a=>a()){let a=r&&(r.enterCallbacks[s]=r.enterCallbacks[s]||[]);return()=>new Promise((u,f)=>{let m=h=>{h===!1?f(ao(Be.NAVIGATION_ABORTED,{from:n,to:t})):h instanceof Error?f(h):Rc(h)?f(ao(Be.NAVIGATION_GUARD_REDIRECT,{from:t,to:h})):(a&&r.enterCallbacks[s]===a&&typeof h=="function"&&a.push(h),u())},g=i(()=>e.call(r&&r.instances[s],t,n,m)),w=Promise.resolve(g);e.length<3&&(w=w.then(m)),w.catch(h=>f(h))})}function xs(e,t,n,r,s=i=>i()){let i=[];for(let a of e)for(let u in a.components){let f=a.components[u];if(!(t!=="beforeRouteEnter"&&!a.instances[u]))if(Zi(f)){let m=(f.__vccOpts||f)[t];m&&i.push(Gt(m,n,r,a,u,s))}else{let m=f();i.push(()=>m.then(g=>{if(!g)throw new Error(`Couldn't resolve component "${u}" at "${a.path}"`);let w=uc(g)?g.default:g;a.mods[u]=g,a.components[u]=w;let h=(w.__vccOpts||w)[t];return h&&Gt(h,n,r,a,u,s)()}))}}return i}function ga(e,t){let n=[],r=[],s=[],i=Math.max(t.matched.length,e.matched.length);for(let a=0;aio(m,u))?r.push(u):n.push(u));let f=e.matched[a];f&&(t.matched.find(m=>io(m,f))||s.push(f))}return[n,r,s]}var Oc=()=>location.protocol+"//"+location.host;function Ra(e,t){let{pathname:n,search:r,hash:s}=t,i=e.indexOf("#");if(i>-1){let a=s.includes(e.slice(i))?e.slice(i).length:1,u=s.slice(a);return u[0]!=="/"&&(u="/"+u),Wn(u,"")}return Wn(n,e)+r+s}function Ic(e,t,n,r){let s=[],i=[],a=null,u=({state:h})=>{let b=Ra(e,location),E=n.value,k=t.value,R=0;if(h){if(n.value=b,t.value=h,a&&a===E){a=null;return}R=k?h.position-k.position:0}else r(b);s.forEach(D=>{D(n.value,E,{delta:R,type:Ys.pop,direction:R?R>0?Js.forward:Js.back:Js.unknown})})};function f(){a=n.value}function m(h){s.push(h);let b=()=>{let E=s.indexOf(h);E>-1&&s.splice(E,1)};return i.push(b),b}function g(){if(document.visibilityState==="hidden"){let{history:h}=window;if(!h.state)return;h.replaceState(Oe({},h.state,{scroll:ds()}),"")}}function w(){for(let h of i)h();i=[],window.removeEventListener("popstate",u),window.removeEventListener("pagehide",g),document.removeEventListener("visibilitychange",g)}return window.addEventListener("popstate",u),window.addEventListener("pagehide",g),document.addEventListener("visibilitychange",g),{pauseListeners:f,listen:m,destroy:w}}function ya(e,t,n,r=!1,s=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:s?ds():null}}function Pc(e){let{history:t,location:n}=window,r={value:Ra(e,n)},s={value:t.state};s.value||i(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function i(f,m,g){let w=e.indexOf("#"),h=w>-1?(n.host&&document.querySelector("base")?e:e.slice(w))+f:Oc()+e+f;try{t[g?"replaceState":"pushState"](m,"",h),s.value=m}catch(b){console.error(b),n[g?"replace":"assign"](h)}}function a(f,m){i(f,Oe({},t.state,ya(s.value.back,f,s.value.forward,!0),m,{position:s.value.position}),!0),r.value=f}function u(f,m){let g=Oe({},s.value,t.state,{forward:f,scroll:ds()});i(g.current,g,!0),i(f,Oe({},ya(r.value,f,null),{position:g.position+1},m),!1),r.value=f}return{location:r,state:s,push:u,replace:a}}function Ta(e){e=la(e);let t=Pc(e),n=Ic(e,t.state,t.location,t.replace);function r(i,a=!0){a||n.pauseListeners(),history.go(i)}let s=Oe({location:"",base:e,go:r,createHref:da.bind(null,e)},t,n);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}var uo=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({}),Xe=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e})(Xe||{}),Vc={type:uo.Static,value:""},qc=/[a-zA-Z0-9_]/;function Mc(e){if(!e)return[[]];if(e==="/")return[[Vc]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(b){throw new Error(`ERR (${n})/"${m}": ${b}`)}let n=Xe.Static,r=n,s=[],i;function a(){i&&s.push(i),i=[]}let u=0,f,m="",g="";function w(){m&&(n===Xe.Static?i.push({type:uo.Static,value:m}):n===Xe.Param||n===Xe.ParamRegExp||n===Xe.ParamRegExpEnd?(i.length>1&&(f==="*"||f==="+")&&t(`A repeatable param (${m}) must be alone in its segment. eg: '/:ids+.`),i.push({type:uo.Param,value:m,regexp:g,repeatable:f==="*"||f==="+",optional:f==="*"||f==="?"})):t("Invalid state to consume buffer"),m="")}function h(){m+=f}for(;ut.length?t.length===1&&t[0]===it.Static+it.Segment?1:-1:0}function Aa(e,t){let n=0,r=e.score,s=t.score;for(;n0&&t[t.length-1]<0}var zc={strict:!1,end:!0,sensitive:!1};function Hc(e,t,n){let r=Uc(Mc(e.path),n),s=Oe(r,{record:e,parent:t,children:[],alias:[]});return t&&!s.record.aliasOf==!t.record.aliasOf&&t.children.push(s),s}function jc(e,t){let n=[],r=new Map;t=Bn(zc,t);function s(w){return r.get(w)}function i(w,h,b){let E=!b,k=Ea(w);k.aliasOf=b&&b.record;let R=Bn(t,w),D=[k];if("alias"in w){let H=typeof w.alias=="string"?[w.alias]:w.alias;for(let q of H)D.push(Ea(Oe({},k,{components:b?b.record.components:k.components,path:q,aliasOf:b?b.record:k})))}let T,P;for(let H of D){let{path:q}=H;if(h&&q[0]!=="/"){let U=h.record.path,ie=U[U.length-1]==="/"?"":"/";H.path=h.record.path+(q&&ie+q)}if(T=Hc(H,h,R),b?b.alias.push(T):(P=P||T,P!==T&&P.alias.push(T),E&&w.name&&!Ca(T)&&a(w.name)),Oa(T)&&f(T),k.children){let U=k.children;for(let ie=0;ie{a(P)}:Ro}function a(w){if(Jn(w)){let h=r.get(w);h&&(r.delete(w),n.splice(n.indexOf(h),1),h.children.forEach(a),h.alias.forEach(a))}else{let h=n.indexOf(w);h>-1&&(n.splice(h,1),w.record.name&&r.delete(w.record.name),w.children.forEach(a),w.alias.forEach(a))}}function u(){return n}function f(w){let h=Wc(w,n);n.splice(h,0,w),w.record.name&&!Ca(w)&&r.set(w.record.name,w)}function m(w,h){let b,E={},k,R;if("name"in w&&w.name){if(b=r.get(w.name),!b)throw ao(Be.MATCHER_NOT_FOUND,{location:w});R=b.record.name,E=Oe(ka(h.params,b.keys.filter(P=>!P.optional).concat(b.parent?b.parent.keys.filter(P=>P.optional):[]).map(P=>P.name)),w.params&&ka(w.params,b.keys.map(P=>P.name))),k=b.stringify(E)}else if(w.path!=null)k=w.path,b=n.find(P=>P.re.test(k)),b&&(E=b.parse(k),R=b.record.name);else{if(b=h.name?r.get(h.name):n.find(P=>P.re.test(h.path)),!b)throw ao(Be.MATCHER_NOT_FOUND,{location:w,currentLocation:h});R=b.record.name,E=Oe({},h.params,w.params),k=b.stringify(E)}let D=[],T=b;for(;T;)D.unshift(T.record),T=T.parent;return{name:R,path:k,params:E,matched:D,meta:Gc(D)}}e.forEach(w=>i(w));function g(){n.length=0,r.clear()}return{addRoute:i,resolve:m,removeRoute:a,clearRoutes:g,getRoutes:u,getRecordMatcher:s}}function ka(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function Ea(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Bc(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Bc(e){let t={},n=e.props||!1;if("component"in e)t.default=n;else for(let r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function Ca(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Gc(e){return e.reduce((t,n)=>Oe(t,n.meta),{})}function Wc(e,t){let n=0,r=t.length;for(;n!==r;){let i=n+r>>1;Aa(e,t[i])<0?r=i:n=i+1}let s=Kc(e);return s&&(r=t.lastIndexOf(s,r-1)),r}function Kc(e){let t=e;for(;t=t.parent;)if(Oa(t)&&Aa(e,t)===0)return t}function Oa({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function _a(e){let t=ut(Qs),n=ut(Xs),r=!1,s=null,i=ot(()=>{let g=Ft(e.to);return t.resolve(g)}),a=ot(()=>{let{matched:g}=i.value,{length:w}=g,h=g[w-1],b=n.matched;if(!h||!b.length)return-1;let E=b.findIndex(io.bind(null,h));if(E>-1)return E;let k=Sa(g[w-2]);return w>1&&Sa(h)===k&&b[b.length-1].path!==k?b.findIndex(io.bind(null,g[w-2])):E}),u=ot(()=>a.value>-1&&Zc(n.params,i.value.params)),f=ot(()=>a.value>-1&&a.value===n.matched.length-1&&Kn(n.params,i.value.params));function m(g={}){if(Xc(g)){let w=t[Ft(e.replace)?"replace":"push"](Ft(e.to)).catch(Ro);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>w),w}return Promise.resolve()}return{route:i,href:ot(()=>i.value.href),isActive:u,isExactActive:f,navigate:m}}function Yc(e){return e.length===1?e[0]:e}var Jc=ns({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:_a,setup(e,{slots:t}){let n=He(_a(e)),{options:r}=ut(Qs),s=ot(()=>({[Na(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[Na(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{let i=t.default&&Yc(t.default(n));return e.custom?i:ke("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:s.value},i)}}}),Qc=Jc;function Xc(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){let t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Zc(e,t){for(let n in t){let r=t[n],s=e[n];if(typeof r=="string"){if(r!==s)return!1}else if(!wt(s)||s.length!==r.length||r.some((i,a)=>i.valueOf()!==s[a].valueOf()))return!1}return!0}function Sa(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}var Na=(e,t,n)=>e??t??n,xc=ns({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){let r=ut(Zs),s=ot(()=>e.route||r.value),i=ut(Xn,0),a=ot(()=>{let m=Ft(i),{matched:g}=s.value,w;for(;(w=g[m])&&!w.components;)m++;return m}),u=ot(()=>s.value.matched[a.value]);no(Xn,ot(()=>a.value+1)),no(va,u),no(Zs,s);let f=et();return je(()=>[f.value,u.value,e.name],([m,g,w],[h,b,E])=>{g&&(g.instances[w]=m,b&&b!==g&&m&&m===h&&(g.leaveGuards.size||(g.leaveGuards=b.leaveGuards),g.updateGuards.size||(g.updateGuards=b.updateGuards))),m&&g&&(!b||!io(g,b)||!h)&&(g.enterCallbacks[w]||[]).forEach(k=>k(m))},{flush:"post"}),()=>{let m=s.value,g=e.name,w=u.value,h=w&&w.components[g];if(!h)return Da(n.default,{Component:h,route:m});let b=w.props[g],E=b?b===!0?m.params:typeof b=="function"?b(m):b:null,R=ke(h,Oe({},E,t,{onVnodeUnmounted:D=>{D.component.isUnmounted&&(w.instances[g]=null)},ref:f}));return Da(n.default,{Component:R,route:m})||R}}});function Da(e,t){if(!e)return null;let n=e(t);return n.length===1?n[0]:n}var Zn=xc;function Ia(e){let t=jc(e.routes,e),n=e.parseQuery||ha,r=e.stringifyQuery||Qn,s=e.history,i=To(),a=To(),u=To(),f=Cs(Wt),m=Wt;lo&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");let g=Ws.bind(null,z=>""+z),w=Ws.bind(null,ra),h=Ws.bind(null,Do);function b(z,ne){let te,_;return Jn(z)?(te=t.getRecordMatcher(z),_=ne):_=z,t.addRoute(_,te)}function E(z){let ne=t.getRecordMatcher(z);ne&&t.removeRoute(ne)}function k(){return t.getRoutes().map(z=>z.record)}function R(z){return!!t.getRecordMatcher(z)}function D(z,ne){if(ne=Oe({},ne||f.value),typeof z=="string"){let v=Ks(n,z,ne.path),S=t.resolve({path:v.path},ne),V=s.createHref(v.fullPath);return Oe(v,S,{params:h(S.params),hash:Do(v.hash),redirectedFrom:void 0,href:V})}let te;if(z.path!=null)te=Oe({},z,{path:Ks(n,z.path,ne.path).path});else{let v=Oe({},z.params);for(let S in v)v[S]==null&&delete v[S];te=Oe({},z,{params:w(v)}),ne.params=w(ne.params)}let _=t.resolve(te,ne),I=z.hash||"";_.params=g(h(_.params));let j=ia(r,Oe({},z,{hash:na(I),path:_.path})),M=s.createHref(j);return Oe({fullPath:j,hash:I,query:r===Qn?ma(z.query):z.query||{}},_,{redirectedFrom:void 0,href:M})}function T(z){return typeof z=="string"?Ks(n,z,f.value.path):Oe({},z)}function P(z,ne){if(m!==z)return ao(Be.NAVIGATION_CANCELLED,{from:ne,to:z})}function H(z){return ie(z)}function q(z){return H(Oe(T(z),{replace:!0}))}function U(z,ne){let te=z.matched[z.matched.length-1];if(te&&te.redirect){let{redirect:_}=te,I=typeof _=="function"?_(z,ne):_;return typeof I=="string"&&(I=I.includes("?")||I.includes("#")?I=T(I):{path:I},I.params={}),Oe({query:z.query,hash:z.hash,params:I.path!=null?{}:z.params},I)}}function ie(z,ne){let te=m=D(z),_=f.value,I=z.state,j=z.force,M=z.replace===!0,v=U(te,_);if(v)return ie(Oe(T(v),{state:typeof v=="object"?Oe({},I,v.state):I,force:j,replace:M}),ne||te);let S=te;S.redirectedFrom=ne;let V;return!j&&aa(r,_,te)&&(V=ao(Be.NAVIGATION_DUPLICATED,{to:S,from:_}),Ae(_,_,!0,!1)),(V?Promise.resolve(V):O(S,_)).catch(F=>Mt(F)?Mt(F,Be.NAVIGATION_GUARD_REDIRECT)?F:_e(F):le(F,S,_)).then(F=>{if(F){if(Mt(F,Be.NAVIGATION_GUARD_REDIRECT))return ie(Oe({replace:M},T(F.to),{state:typeof F.to=="object"?Oe({},I,F.to.state):I,force:j}),ne||S)}else F=J(S,_,!0,M,I);return G(S,_,F),F})}function re(z,ne){let te=P(z,ne);return te?Promise.reject(te):Promise.resolve()}function C(z){let ne=Se.values().next().value;return ne&&typeof ne.runWithContext=="function"?ne.runWithContext(z):z()}function O(z,ne){let te,[_,I,j]=ga(z,ne);te=xs(_.reverse(),"beforeRouteLeave",z,ne);for(let v of _)v.leaveGuards.forEach(S=>{te.push(Gt(S,z,ne))});let M=re.bind(null,z,ne);return te.push(M),Ue(te).then(()=>{te=[];for(let v of i.list())te.push(Gt(v,z,ne));return te.push(M),Ue(te)}).then(()=>{te=xs(I,"beforeRouteUpdate",z,ne);for(let v of I)v.updateGuards.forEach(S=>{te.push(Gt(S,z,ne))});return te.push(M),Ue(te)}).then(()=>{te=[];for(let v of j)if(v.beforeEnter)if(wt(v.beforeEnter))for(let S of v.beforeEnter)te.push(Gt(S,z,ne));else te.push(Gt(v.beforeEnter,z,ne));return te.push(M),Ue(te)}).then(()=>(z.matched.forEach(v=>v.enterCallbacks={}),te=xs(j,"beforeRouteEnter",z,ne,C),te.push(M),Ue(te))).then(()=>{te=[];for(let v of a.list())te.push(Gt(v,z,ne));return te.push(M),Ue(te)}).catch(v=>Mt(v,Be.NAVIGATION_CANCELLED)?v:Promise.reject(v))}function G(z,ne,te){u.list().forEach(_=>C(()=>_(z,ne,te)))}function J(z,ne,te,_,I){let j=P(z,ne);if(j)return j;let M=ne===Wt,v=lo?history.state:{};te&&(_||M?s.replace(z.fullPath,Oe({scroll:M&&v&&v.scroll},I)):s.push(z.fullPath,I)),f.value=z,Ae(z,ne,te,M),_e()}let ee;function Q(){ee||(ee=s.listen((z,ne,te)=>{if(!Le.listening)return;let _=D(z),I=U(_,Le.currentRoute.value);if(I){ie(Oe(I,{replace:!0,force:!0}),_).catch(Ro);return}m=_;let j=f.value;lo&&ca(Yn(j.fullPath,te.delta),ds()),O(_,j).catch(M=>Mt(M,Be.NAVIGATION_ABORTED|Be.NAVIGATION_CANCELLED)?M:Mt(M,Be.NAVIGATION_GUARD_REDIRECT)?(ie(Oe(T(M.to),{force:!0}),_).then(v=>{Mt(v,Be.NAVIGATION_ABORTED|Be.NAVIGATION_DUPLICATED)&&!te.delta&&te.type===Ys.pop&&s.go(-1,!1)}).catch(Ro),Promise.reject()):(te.delta&&s.go(-te.delta,!1),le(M,_,j))).then(M=>{M=M||J(_,j,!1),M&&(te.delta&&!Mt(M,Be.NAVIGATION_CANCELLED)?s.go(-te.delta,!1):te.type===Ys.pop&&Mt(M,Be.NAVIGATION_ABORTED|Be.NAVIGATION_DUPLICATED)&&s.go(-1,!1)),G(_,j,M)}).catch(Ro)}))}let oe=To(),ue=To(),pe;function le(z,ne,te){_e(z);let _=ue.list();return _.length?_.forEach(I=>I(z,ne,te)):console.error(z),Promise.reject(z)}function Ie(){return pe&&f.value!==Wt?Promise.resolve():new Promise((z,ne)=>{oe.add([z,ne])})}function _e(z){return pe||(pe=!z,Q(),oe.list().forEach(([ne,te])=>z?te(z):ne()),oe.reset()),z}function Ae(z,ne,te,_){let{scrollBehavior:I}=e;if(!lo||!I)return Promise.resolve();let j=!te&&pa(Yn(z.fullPath,0))||(_||!te)&&history.state&&history.state.scroll||null;return rt().then(()=>I(z,ne,j)).then(M=>M&&ua(M)).catch(M=>le(M,z,ne))}let Ee=z=>s.go(z),Ve,Se=new Set,Le={currentRoute:f,listening:!0,addRoute:b,removeRoute:E,clearRoutes:t.clearRoutes,hasRoute:R,getRoutes:k,resolve:D,options:e,push:H,replace:q,go:Ee,back:()=>Ee(-1),forward:()=>Ee(1),beforeEach:i.add,beforeResolve:a.add,afterEach:u.add,onError:ue.add,isReady:Ie,install(z){z.component("RouterLink",Qc),z.component("RouterView",Zn),z.config.globalProperties.$router=Le,Object.defineProperty(z.config.globalProperties,"$route",{enumerable:!0,get:()=>Ft(f)}),lo&&!Ve&&f.value===Wt&&(Ve=!0,H(s.location).catch(_=>{}));let ne={};for(let _ in Wt)Object.defineProperty(ne,_,{get:()=>f.value[_],enumerable:!0});z.provide(Qs,Le),z.provide(Xs,Go(ne)),z.provide(Zs,f);let te=z.unmount;Se.add(z),z.unmount=function(){Se.delete(z),Se.size<1&&(m=Wt,ee&&ee(),ee=null,f.value=Wt,Ve=!1,pe=!1),te()}}};function Ue(z){return z.reduce((ne,te)=>ne.then(()=>C(te)),Promise.resolve())}return Le}function Pa(e){return ut(Xs)}function Va(e,t){return t?.split(".").reduce((n,r)=>n?.[r],e)}function xn(e=null,t=new Map){let n=He({}),r=[],s=!1,i=new Proxy(n,{get(a,u){return typeof u=="string"&&u.startsWith("__v_")||Reflect.has(a,u)?Reflect.get(a,u):e?.[u]}});return Object.defineProperty(n,"parent",{value:e,configurable:!0}),Object.defineProperty(n,"viewState",{get:()=>i}),i.watch=(a,u,f=!1,m=!0)=>{let g=typeof a=="function"?()=>a(i):()=>Va(i,a),w=je(g,u,{deep:f,flush:"post"});return r.push(w),m&&rt(()=>{s||u(g(),g())}),w},i.watchGroup=(a,u,f=!0)=>i.watch(()=>a.map(m=>Va(i,m)),u,!0,f),i.on=(a,u)=>{if(a==="dispose")return r.push(u),()=>{};t.has(a)||t.set(a,new Set),t.get(a).add(u);let f=()=>t.get(a)?.delete(u);return r.push(f),f},i.emit=(a,...u)=>{for(let f of[...t.get(a)||[]])f({},...u)},i.dispose=()=>{s=!0,r.splice(0).reverse().forEach(a=>a())},jo(i.dispose),i}function ct(){let e=new Set,t=new Set,n=!1,r=(i,a=0)=>{if(n)return;let u=setTimeout(()=>{e.delete(u),i()},a);return e.add(u),u};r.cancel=i=>{clearTimeout(i),e.delete(i)};let s=(i,a)=>{if(n)return;let u=setInterval(i,a);return t.add(u),u};return s.cancel=i=>{clearInterval(i),t.delete(i)},jo(()=>{n=!0,e.forEach(clearTimeout),t.forEach(clearInterval)}),{timeout:r,interval:s}}function Kt(){let e=new Set;return jo(()=>{e.forEach(t=>t()),e.clear()}),(t,n,r,s)=>{t.addEventListener(n,r,s);let i=()=>{t.removeEventListener(n,r,s),e.delete(i)};return e.add(i),i}}function er(e,t,n){let r,s=!1,i="form-draft:"+n,a=()=>Object.fromEntries(t.map(h=>[h,e[h]])),u=()=>JSON.stringify(a()),f=h=>{for(let b of t)Object.prototype.hasOwnProperty.call(h,b)&&(e[b]=h[b]);e.options?.expirationDate&&(e.options.expirationDate=new Date(e.options.expirationDate))},m=()=>{try{window.sessionStorage.removeItem(i)}catch{}},g=(h=!1)=>{if(r!==void 0){if(h&&document.querySelectorAll("input, select, textarea").forEach(b=>{b._field?.binding.state===e&&b._field.timer&&b._field.commit()}),e.unsavedChanges=u()!==r,e.draftSaved=!1,!e.unsavedChanges){m();return}try{window.sessionStorage.setItem(i,JSON.stringify({account:e.user?.username||null,savedAt:Date.now(),values:a()})),e.draftSaved=!0}catch{}}},w=()=>g(!0);return e.on("routeLeave",w),window.addEventListener("beforeunload",w),e.on("dispose",()=>window.removeEventListener("beforeunload",w)),{restore(){r=u();let h;try{h=JSON.parse(window.sessionStorage.getItem(i)||"null")}catch{}let b=h&&h.account===(e.user?.username||null)&&Date.now()-h.savedAt<30*6e4&&h.values;return b&&(f(h.values),e.draftRestored=!0),s||(s=!0,e.watch(()=>a(),()=>g(),!0)),e.unsavedChanges=u()!==r,!!b},checkpoint(){return JSON.parse(u())},accept(h){r=JSON.stringify(h),e.draftRestored=!1,g()},discard(){document.querySelectorAll("input, select, textarea").forEach(h=>{h._field?.binding.state!==e||!h._field.timer||(clearTimeout(h._field.timer),h._field.timer=null,h.value=h._field.binding.value??"")}),r!==void 0&&f(JSON.parse(r)),e.draftRestored=!1,g()},clear(){r=u(),e.unsavedChanges=!1,e.draftRestored=!1,e.draftSaved=!1,m()}}}function ep(e){if(!["ArrowLeft","ArrowRight","Home","End"].includes(e.key))return;let t=[...e.currentTarget.closest('[role="tablist"]').querySelectorAll('[role="tab"]')],n=t.indexOf(e.currentTarget),r=e.key==="Home"?0:e.key==="End"?t.length-1:(n+(e.key==="ArrowRight"?1:-1)+t.length)%t.length;e.preventDefault(),t[r]?.focus(),t[r]?.click()}var qa=function(e,t,n,r){e.previewTabKeydown=ep,e.title="Main",e.user={status:"connection"},e.site_options,e.toasts=[],e.removeToast=function(f){let m=e.toasts.indexOf(f);m!==-1&&e.toasts.splice(m,1)},e.addToast=function(f){return e.toasts.push(f),r(function(){e.removeToast(f)},8e3),f},e.path=n.url(),e.paths=n.path().substring(1).split("/"),e.darkMode=function(f){localStorage.setItem("darkMode",f),e.isDarkMode=f;let m="/css/prism-okaidia.css",g="/css/prism.css";if(f){$("body").addClass("dark-mode");let h=document.createElement("link");h.href=m,h.rel="stylesheet",document.head.append(h),$(`link[href='${g}']`).remove()}else{$("body").removeClass("dark-mode");let h=document.createElement("link");h.href=g,h.rel="stylesheet",document.head.append(h),$(`link[href='${m}']`).remove()}let w=document.querySelector("[class*='floatingchat-container-wrap'] [class*='floating-chat-kofi-text-container-wrap']");w&&(w.style.backgroundColor=f?"#FAF9F6":"#1A1815",w.style.color=f?"#1A1815":"#FAF9F6"),e.emit("dark-mode",f)},e.darkMode(localStorage.getItem("darkMode")=="true");function s(){t.get("/api/user").then(f=>{f&&(e.user=f.data)},()=>{e.user=null})}s();function i(){t.get("/api/options").then(f=>{f&&(e.site_options=f.data)},()=>{e.site_options=null})}i();function a(){t.get("/api/message").then(f=>{f&&(e.generalMessage=f.data)},()=>{e.generalMessage=null})}a();function u(f,m){m&&(e.title=m.title),e.path=n.url(),e.paths=n.path().substring(1).split("/")}e.on("routeChange",u),e.on("routeUpdate",u)},Ma=function(e,t){let n=Kt(),r=ct(),s=()=>{let i=window.location.hash.slice(1),a=document.getElementById(i);if(!a?.classList.contains("panel-collapse"))return;$(a).collapse("show");let u=document.getElementById(a.getAttribute("aria-labelledby"));u?.setAttribute("tabindex","-1"),u?.focus({preventScroll:!0}),u?.scrollIntoView?.({block:"start"})};e.on("routeUpdate",()=>r.timeout(s,0)),n(window,"hashchange",s),r.timeout(s,0)},$a=function(e,t,n,r,s){e.terms="",e.options={expirationMode:"remove",update:!1,image:!0,pdf:!0,notebook:!0,loc:!0,link:!0},e.saving=!1,e.message=null,e.error=null,s.load().then(f=>{e.quota=f},console.error);let i=er(e,["terms","options"],"profile");e.discardDraft=()=>i.discard();function a(){t.get("/api/user/default").then(f=>{let m=f.data||{};m.terms&&(e.terms=m.terms.join(` +`)),e.options=Object.assign({},e.options,m.options),i.restore()})}a();let u=null;e.saveDefault=f=>{if(f&&f.preventDefault&&f.preventDefault(),e.saving)return;let m=i.checkpoint(),g={terms:e.terms.split(` +`).map(w=>w.trim()).filter(w=>w.length>0),options:e.options};e.saving=!0,e.error=null,t.post("/api/user/default",g).then(()=>{i.accept(m),e.saving=!1,e.message=e.unsavedChanges?null:"Saved",u&&r.cancel(u),u=r(()=>{e.message=null},2500)},w=>{e.saving=!1;let b="ERRORS."+(w&&w.data&&w.data.error);n(b).then(E=>{e.error=E&&E!==b?E:"Unable to save your defaults. Please try again."},()=>{e.error="Unable to save your defaults. Please try again."})})},e.deleteAccount=()=>{confirm("Delete your account? All your anonymized repositories, gists, and pull requests will be removed, and your personal data will be erased. This cannot be undone.")&&(e.deletingAccount=!0,t.delete("/api/user").then(()=>{window.location.href="/"},()=>{e.deletingAccount=!1,e.deleteError="Unable to delete the account. Please try again."}))}},La=function(e,t,n){e.repoId=null,e.repoUrl=null,e.claim=()=>{t.post("/api/repo/claim",{repoId:e.repoId,repoUrl:e.repoUrl}).then(r=>{n.url("/dashboard")},r=>{e.error=r.data,e.claimForm.repoUrl.setValidity("not_found",!1),e.claimForm.repoId.setValidity("not_found",!1)})}},Ua=function(e,t,n,r,s){e.user&&!e.user.status&&n.url("/dashboard"),e.watch("user.status",()=>{e.user&&!e.user.status&&n.url("/dashboard")}),e.features=[{key:"anonymize",num:"01",eyebrow:"Anonymize",title:"Double-anonymous,",accent:"your rules.",text:"Choose what reviewers may see: links, images, PDFs, notebooks, GitHub Pages. Add your own terms, with regex if you need it, and pick the expiration date.",cta:"Start an anonymization",href:"/anonymize",url:"anonymous.4open.science/anonymize",img:"/imgs/anonymize.png",alt:"The anonymize form: source repository, terms to redact, options and a live README preview"},{key:"review",num:"02",eyebrow:"Review",title:"Reviewers browse",accent:"the real thing.",text:"Highlighted source code, rendered PDFs, images, and notebooks, in a familiar file explorer. GitHub Pages is also supported.",cta:"Open the example",href:"https://anonymous.4open.science/r/840c8c57-3c32-451e-bf12-0e20be300389/",target:"_self",url:"anonymous.4open.science/r/840c8c57-\u2026",img:"/imgs/explorer.png",alt:"The repository explorer with a file tree and a rendered README"},{key:"manage",num:"03",eyebrow:"Manage",title:"One dashboard,",accent:"until the decision.",text:"Monitor views, edit configuration, remove or update your repository. Program chairs can group submissions under a conference with one shared expiry.",cta:"Open the dashboard",href:"/dashboard",needsUser:!0,url:"anonymous.4open.science/dashboard",img:"/imgs/dashboard.png",alt:"The dashboard listing anonymized repositories with status, views and expiry"}],e.feature=e.features[0].key,e.selectFeature=function(u){e.feature=u},e.featureHref=function(u){return u.needsUser&&!e.user?"/signin":u.href},e.featureTarget=function(u){return u.needsUser&&!e.user?"_self":u.target||void 0},e.featureKeydown=function(u,f){let m={ArrowDown:1,ArrowRight:1,ArrowUp:-1,ArrowLeft:-1,Home:"first",End:"last"}[u.key];if(m===void 0)return;u.preventDefault();let g=e.features.length,w=m==="first"?0:m==="last"?g-1:(f+m+g)%g;e.feature=e.features[w].key,s(()=>{let h=r.document.getElementById("feature-tab-"+e.feature);h&&h.focus()})},e.cards=[{key:"repositories",total:0,label:"repositories anonymized"},{key:"users",total:0,label:"researchers"},{key:"pageViews",total:0,label:"page views"},{key:"pullRequests",total:0,label:"pull requests"}];function i(){t.get("/api/stat/").then(u=>{e.stat=u.data,e.cards[0].total=u.data.nbRepositories,e.cards[1].total=u.data.nbUsers,e.cards[2].total=u.data.nbPageViews,e.cards[3].total=u.data.nbPullRequests})}i();function a(u){let f={series:u,bars:[],viewW:100,deltaToday:0,pctChange:0,pctAbs:0,isUp:!0};if(!u||u.length<2)return f;let m=new Array(u.length-1);for(let k=1;k=2){let k=m[g-2];k&&(f.pctChange=(f.deltaToday-k)/k*100)}return f.pctAbs=Math.round(Math.abs(f.pctChange)),f.isUp=f.pctChange>=0,f}e.history={repositories:a([]),users:a([]),pageViews:a([]),pullRequests:a([])},t.get("/api/stat/history?days=60").then(u=>{let f=u.data||[];e.history={repositories:a(f.map(m=>m.nbRepositories||0)),users:a(f.map(m=>m.nbUsers||0)),pageViews:a(f.map(m=>m.nbPageViews||0)),pullRequests:a(f.map(m=>m.nbPullRequests||0))}})},Fa=function(e,t,n,r,s,i){let a=ct();e.on("routeLeave",function(){$('[data-toggle="tooltip"]').tooltip("dispose")}),e.watch("user.status",()=>{e.user==null&&n.url("/")}),e.user==null&&n.url("/"),a.timeout(()=>{$('[data-toggle="tooltip"]').tooltip()},250),e.quotaExpanded=!1,e.closeQuota=()=>{e.quotaExpanded=!1,rt(()=>document.querySelector(".dashboard-quota > summary")?.focus())},Kt()(document,"click",C=>{e.quotaExpanded&&!C.target.closest?.(".dashboard-quota")&&(e.quotaExpanded=!1)}),e.filtersExpanded=!1,e.projectView="all",e.selectedProject=null,e.projectName="",e.nameSaving=!1,e.nameError="",e.nameMessage="",e.needsAttention=C=>C.status==="error"||C._broken||f(C.status)==="progress"&&C._stale,e.attentionCount=()=>e.dashboardTotals?.attention??e.items.filter(e.needsAttention).length,e.hasProjects=()=>(e.dashboardTotals?.total??e.items.length)>0,e.setProjectView=C=>{e.projectView=C,C==="attention"&&(e.filters.status.error=!0,e.filters.status.progress=!0)},e.projectDetailsId=C=>"project-details-"+encodeURIComponent(C._type+":"+(C._id||C._source||"unknown")),e.showProjectDetails=async C=>{e.selectedProject=C,e.projectName=C.projectName||"",e.nameError="",e.nameMessage="",await rt();let O=document.getElementById(e.projectDetailsId(C));O?.focus(),O?.scrollIntoView?.({block:"nearest"})},e.closeProjectDetails=C=>{e.selectedProject=null,rt(()=>document.querySelector(`[data-project-actions="${encodeURIComponent(C._type+":"+C._id)}"]`)?.focus())},e.saveProjectName=async C=>{if(e.nameSaving||!C._id)return;let O=e.projectName.trim();if(O.length>100){e.nameError="Use 100 characters or fewer.";return}e.nameSaving=!0,e.nameError="",e.nameMessage="";try{let G=await t.post("/api/user/project-name",{type:C._type,id:C._id,name:O});C.projectName=G.data.name,C._label=C.projectName||C._fallbackLabel,e.selectedProject===C&&(e.nameMessage=O?"Project name saved.":"Default project name restored."),T||(e.dashboardCursor=null,await H(),e.selectedProject===C&&(e.selectedProject=e.items.find(J=>J._type===C._type&&J._id===C._id)||null))}catch{e.selectedProject===C&&(e.nameError="The project name could not be saved. Try again.")}finally{e.nameSaving=!1}},e.copyingId=null,e.copyLink=async C=>{if(!C._viewUrl||e.copyingId)return;let O=new URL(C._viewUrl,s.location.origin).href;e.copyingId=C._type+":"+C._id;try{if(s.navigator.clipboard?.writeText)await s.navigator.clipboard.writeText(O);else{let G=document.createElement("textarea");G.value=O,G.setAttribute("readonly",""),G.style.position="fixed",G.style.opacity="0";let J=document.activeElement;document.body.appendChild(G);try{if(G.select(),!document.execCommand?.("copy"))throw Error("Copy unavailable")}finally{G.remove(),J?.focus()}}e.addToast({title:"Link copied",body:"The anonymous link is ready to share."})}catch{e.addToast({title:"Copy this anonymous link",body:O})}finally{e.copyingId=null}},e.items=[],e.search="",e.loading=!0,e.statusKeyLabels={ready:"Ready",progress:"In progress",error:"Error",expired:"Expired",removed:"Removed"};let u=["queue","download","downloaded","preparing","anonymizing"];function f(C){return C==="ready"||C==="error"?C:C==="expired"||C==="expiring"?"expired":C==="removed"||C==="removing"?"removed":(u.indexOf(C)>-1,"progress")}let m=7200*1e3,g="dashboard.filterPrefs",w={typeFilter:"all",filters:{status:{ready:!0,progress:!0,error:!0,expired:!0,removed:!1}},orderBy:"-anonymizeDate"},h=loadFilterPrefs(g)||{};e.typeFilter=h.typeFilter||w.typeFilter,e.filters={status:Object.assign({},w.filters.status,h.filters&&h.filters.status||{})},e.orderBy=h.orderBy||w.orderBy;let b={_name:{label:"Anonymous ID",defaultDesc:!1},_label:{label:"Project",defaultDesc:!1},anonymizeDate:{label:"Anonymize date",defaultDesc:!0},status:{label:"Status",defaultDesc:!1},lastView:{label:"Last view",defaultDesc:!0},pageView:{label:"Views",defaultDesc:!0},"options.expirationDate":{label:"Expiration",defaultDesc:!1}};e.sortFields=b,e.sortField=()=>e.orderBy.replace(/^-/,""),e.sortDesc=()=>e.orderBy.charAt(0)==="-",e.sortLabel=()=>{let C=b[e.sortField()];return C?C.label:"Custom"},e.isSortedBy=C=>e.sortField()===C,e.setSort=(C,O)=>{typeof O!="boolean"&&(O=e.isSortedBy(C)?!e.sortDesc():!!(b[C]&&b[C].defaultDesc)),e.orderBy=(O?"-":"")+C},e.toggleSortDirection=()=>{e.setSort(e.sortField(),!e.sortDesc())},e.watchGroup(["typeFilter","orderBy"],()=>{saveFilterPrefs(g,{typeFilter:e.typeFilter,filters:e.filters,orderBy:e.orderBy})}),e.watch("filters",()=>{saveFilterPrefs(g,{typeFilter:e.typeFilter,filters:e.filters,orderBy:e.orderBy})},!0),i.load().then(C=>{e.quota=C},console.error);function E(C,O,G,J,ee,Q){C.pageView||(C.pageView=0),C.lastView||(C.lastView=""),C.options=C.options||{},C.options.terms=(C.options.terms||[]).filter(ue=>ue),C._id=O||"",C._source=J,C._broken=!O,C._name=O||J||"(unnamed)",C._fallbackLabel=C._type==="gist"?"Gist "+(O||J||"without an ID"):J||G||C._name,C._label=C.projectName||C._fallbackLabel,C._editUrl=O?ee:null,C._viewUrl=O?Q:null,C._broken&&(C.status="error",C.statusMessage="incomplete_record"),C._statusKey=f(C.status);let oe=C.anonymizeDate||C.lastView;return C._stale=C._statusKey==="progress"&&!!oe&&Date.now()-new Date(oe).getTime()>m,C.status==="expired"||C.status==="expiring"?C._expiry={kind:"expired",date:C.options.expirationDate}:C.status!=="ready"?C._expiry={kind:"none"}:C.options.expirationMode==="never"||!C.options.expirationDate?C._expiry={kind:"never"}:C._expiry={kind:"date",date:C.options.expirationDate},C}function k(C){return t.get(C).then(O=>O.data||[],O=>(console.error(O),[]))}function R(){return e.loading=!0,r.all([k("/api/user/anonymized_repositories"),k("/api/user/anonymized_pull_requests"),k("/api/user/anonymized_gists")]).then(C=>{let O=C[0],G=C[1],J=C[2],ee=[];O.forEach(Q=>{Q._type="repo";let oe=Q.source||{};ee.push(E(Q,Q.repoId,Q.repoId,oe.fullName,"/anonymize/"+Q.repoId,"/r/"+Q.repoId+"/"))}),G.forEach(Q=>{Q._type="pr";let oe=Q.source||{};ee.push(E(Q,Q.pullRequestId,Q.pullRequestId,oe.repositoryFullName?oe.repositoryFullName+"#"+oe.pullRequestId:void 0,"/pull-request-anonymize/"+Q.pullRequestId,"/pr/"+Q.pullRequestId+"/"))}),J.forEach(Q=>{Q._type="gist";let oe=Q.source||{};ee.push(E(Q,Q.gistId,Q.gistId,oe.gistId,"/gist-anonymize/"+Q.gistId,"/gist/"+Q.gistId+"/"))}),e.items=ee,e.loading=!1})}let D=0,T=!1;e.dashboardCursor=null,e.dashboardError="";function P(C){let O=C.source||{};return C._type==="repo"?E(C,C.repoId,C.repoId,O.fullName,"/anonymize/"+C.repoId,"/r/"+C.repoId+"/"):C._type==="pr"?E(C,C.pullRequestId,C.pullRequestId,O.repositoryFullName?O.repositoryFullName+"#"+O.pullRequestId:void 0,"/pull-request-anonymize/"+C.pullRequestId,"/pr/"+C.pullRequestId+"/"):E(C,C.gistId,C.gistId,O.gistId,"/gist-anonymize/"+C.gistId,"/gist/"+C.gistId+"/")}function H(C=!1){if(T)return R();let O=++D;return e.loading=!C,e.loadingMore=C,e.dashboardError="",t.get("/api/user/dashboard",{params:{q:e.search,type:e.typeFilter,sort:e.orderBy,statuses:Object.keys(e.filters.status).filter(G=>e.filters.status[G]!==!1).join(",")||"none",attention:String(e.projectView==="attention"),cursor:C?e.dashboardCursor:void 0}}).then(G=>{if(O===D){if(!Array.isArray(G.data?.items))return T=!0,R();e.items=(C?e.items:[]).concat(G.data.items.map(P)),e.dashboardCursor=G.data.cursor,e.dashboardTotals=G.data}},G=>{if(O===D){if(G.status===404)return T=!0,R();e.dashboardError="Projects could not be loaded. Please try again."}}).finally(()=>{O===D&&(e.loading=!1,e.loadingMore=!1)})}e.loadMoreProjects=()=>H(!0);let q;e.watchGroup(["search","typeFilter","orderBy","projectView"],()=>{T||(q&&a.timeout.cancel(q),q=a.timeout(()=>H(),150))},!1),e.watch("filters",()=>{T||H()},!0,!1),e.on("dispose",()=>{D++}),H(),e.openItem=(C,O)=>{if(!C._viewUrl)return;let G=O&&O.target;G&&G.closest&&G.closest("a, button, .dropdown, input")||(s.location.href=C._viewUrl)},e.hiddenStatusCount=()=>Object.keys(e.filters.status).filter(C=>e.filters.status[C]===!1).length,e.hasHiddenStatus=()=>e.hiddenStatusCount()>0,e.hasActiveFilters=()=>e.projectView!=="all"||e.typeFilter!=="all"||e.search.trim().length>0||Object.keys(e.filters.status).some(C=>e.filters.status[C]===!1),e.showClearFilters=()=>e.search.trim().length>0||e.typeFilter!=="all"||e.hiddenStatusCount()>1,e.clearFilters=()=>{e.projectView="all",e.typeFilter="all",e.search="",Object.keys(e.filters.status).forEach(C=>{e.filters.status[C]=!0})};function U(C,O,G,J){t.get("/api/repo/"+C).then(async ee=>{let Q=J!==void 0&&J!==ee.data.status;for(let oe of e.items)if(oe._type==="repo"&&oe.repoId==C){Q=Q||oe.status!==ee.data.status;let ue=e.needsAttention(oe);oe.status=ee.data.status,oe.statusMessage=ee.data.statusMessage,oe._statusKey=f(oe.status),oe._statusKey!=="progress"&&(oe._stale=!1);let pe=e.needsAttention(oe);e.dashboardTotals&&ue!==pe&&(e.dashboardTotals.attention=Math.max(0,e.dashboardTotals.attention+(pe?1:-1)));break}if(Q&&!T){e.dashboardCursor=null;let oe=e.selectedProject;await H(),oe&&e.selectedProject===oe&&(e.selectedProject=e.items.find(ue=>ue._type===oe._type&&ue._id===oe._id)||null)}if(ee.data.status=="ready"||ee.data.status=="error"||ee.data.status=="removed"||ee.data.status=="expired"){O(ee.data);return}a.timeout(()=>U(C,O,G,ee.data.status),2500)},G)}let ie=C=>C==="repo"?"repository":C==="gist"?"gist":"pull request",re=C=>C==="repo"?"/api/repo":C==="gist"?"/api/gist":"/api/pr";e.removeItem=C=>{let O=ie(C._type);if(confirm(`Are you sure that you want to remove the ${O} ${C._id}?`)){let G=He({title:`Removing ${C._id}...`,date:new Date,body:`The ${O} ${C._id} is going to be removed.`});e.addToast(G);let J=`${re(C._type)}/${C._id}`;t.delete(J).then(()=>{C._type==="repo"?U(C._id,()=>{G.title=`${C._id} is removed.`,G.body=`The ${O} ${C._id} is removed.`},void 0,C.status):(G.title=`${C._id} is removed.`,G.body=`The ${O} ${C._id} is removed.`,H())},ee=>{G.title=`Error during the removal of ${C._id}.`,G.body=ee.body,H()})}},e.refreshItem=C=>{let O=ie(C._type),G=He({title:`Refreshing ${C._id}...`,date:new Date,body:`The ${O} ${C._id} is going to be refreshed.`});e.addToast(G);let J=Q=>{G.title=`Error during the refresh of ${C._id}.`,G.body=Q.data?.error||Q.body||"The refresh could not be completed. Please try again.",H()},ee=`${re(C._type)}/${C._id}/refresh`;t.post(ee).then(()=>{C._type==="repo"?U(C._id,Q=>{if(Q.status!=="ready"){J({body:Q.statusMessage||`The repository is ${Q.status}.`});return}G.title=`${C._id} is refreshed.`,G.body=`The ${O} ${C._id} is refreshed.`},J,C.status):(G.title=`${C._id} is refreshed.`,G.body=`The ${O} ${C._id} is refreshed.`,H())},J)},e.extendItem=C=>{let O=ie(C._type),G=He({title:`Extending ${C._id}...`,date:new Date,body:`The expiration of ${O} ${C._id} is going to be extended by 6 months.`});e.addToast(G);let J=`${re(C._type)}/${C._id}/extend`;t.post(J).then(()=>{C._type==="repo"?U(C._id,()=>{G.title=`${C._id} is extended.`,G.body=`The expiration of ${O} ${C._id} is extended by 6 months.`},void 0,C.status):(G.title=`${C._id} is extended.`,G.body=`The expiration of ${O} ${C._id} is extended by 6 months.`,H())},ee=>{G.title=`Error during the extension of ${C._id}.`,G.body=ee.data&&ee.data.error||ee.body,H()})},e.itemFilter=C=>{if(e.projectView==="attention"&&!e.needsAttention(C)||e.typeFilter!=="all"&&C._type!==e.typeFilter||e.filters.status[C._statusKey]===!1)return!1;let O=e.search.trim().toLowerCase();return!!(O.length==0||C._label&&String(C._label).toLowerCase().indexOf(O)>-1||C._source&&String(C._source).toLowerCase().indexOf(O)>-1||C._id&&String(C._id).toLowerCase().indexOf(O)>-1||C.conference&&String(C.conference).toLowerCase().indexOf(O)>-1)}};var za=function(e,t,n){let r=ct();e.repoId=n.repoId,e.repo=null,e.progress=0,e.rateLimitResetAt=0,e.rateLimitCountdown="";var s=null;let i=null,a=!1;function u(m){e.rateLimitResetAt=m,s&&r.interval.cancel(s);function g(){var w=Math.max(0,Math.ceil((m-Date.now())/1e3));if(w<=0)e.rateLimitCountdown="",e.rateLimitResetAt=0,r.interval.cancel(s),s=null;else{var h=Math.floor(w/60),b=w%60;e.rateLimitCountdown=h>0?h+"m "+b+"s":b+"s"}}g(),s=r.interval(g,1e3)}e.on("dispose",function(){a=!0,s&&r.interval.cancel(s),i&&r.timeout.cancel(i)});function f(m){if(!m)return m;var g=m.match(/^rate_limited:(\d+)$/);return g?(u(parseInt(g[1],10)),null):(e.rateLimitResetAt=0,m)}e.getStatus=()=>{a||t.get("/api/repo/"+e.repoId,{repoId:e.repoId,repoUrl:e.repoUrl}).then(m=>{if(!a){e.repo=m.data,m.data.rateLimitResetAt?u(m.data.rateLimitResetAt):e.repo.statusMessage=f(e.repo.statusMessage),e.repo.status=="ready"?e.progress=100:e.repo.status=="queue"?e.progress=10:e.repo.status=="downloaded"?e.progress=50:e.repo.status=="download"||e.repo.status=="preparing"?e.progress=25:e.repo.status=="anonymizing"&&(e.progress=75);var g=!["ready","removed","expired"].includes(e.repo.status);e.repo.status=="error"&&!e.rateLimitResetAt&&(g=!1),g&&(i=r.timeout(e.getStatus,2e3))}},m=>{e.error=m.data.error})},e.getStatus()},en=function(e,t,n,r,s,i,a){e.sourceUrl="",e.workspaceOpen=!1,e.sourceUrlError="",e.previewStatus="idle",e.sourceLoading=!1,e.mobilePane="settings";let u=window.matchMedia?.("(max-width: 767px)");e.mobileWorkspace=!!u?.matches,u?.addEventListener&&Kt()(u,"change",_=>{e.mobileWorkspace=_.matches}),e.selectMobilePane=_=>{e.mobilePane=_};let f=0,m=!1,g=new Set,w=(_,I=!1)=>!m&&_.generation===f&&_.url===e.sourceUrl.trim()&&_.connection===e.githubConnection&&(!I||_.branch===e.source.branch),h=()=>{let _={generation:f,url:e.sourceUrl.trim(),connection:e.githubConnection,branch:e.source.branch};return g.add(_),e.sourceLoading=!0,_},b=_=>{g.delete(_),m||(e.sourceLoading=[...g].some(I=>w(I)))};e.on("dispose",()=>{m=!0,f++});let E=null,k=_=>_.gistId&&!_.repo?"gist:"+_.gistId.toLowerCase():(_.owner+"/"+_.repo).toLowerCase()+(_.pullRequestId?"/pull/"+_.pullRequestId:""),R=er(e,["sourceUrl","terms","repoId","pullRequestId","gistId","source","options","conference","githubConnection"],"anonymize:"+(s.path?.()||""));e.discardDraft=async()=>{R.discard(),e.workspaceOpen=!!e.sourceUrl,e.error=null,e.sourceUrl?await e.urlSelected(!0):(f++,e.sourceLoading=!1,e.detectedType=null,e.details=null,e.sourceUrlError="",oe.cancel(),_e.cancel(),Se.cancel(),e.previewStatus="idle")},e.githubConnection=void 0,e.githubConnections=null,e.gistOAuthRequired=!1;let D=()=>{let _={};for(let I of["sourceUrl","terms","repoId","pullRequestId","gistId","source","options","conference","githubConnection"])_[I]=e[I];sessionStorage.setItem("github-access-draft",JSON.stringify({path:s.path(),savedAt:Date.now(),draft:_}))};e.connectGistOAuth=()=>{D(),window.location.href="/github/login?returnTo="+encodeURIComponent(s.path())},e.grantGitHubAccess=()=>{D();let _=s.path(),I=ie(e.sourceUrl)||"",j=e.githubConnections?.appConnected?"/github/app/install":"/github/app/login";window.location.href=j+"?returnTo="+encodeURIComponent(_)+"&repository="+encodeURIComponent(I)+"&install=1"},e.chooseGitHubConnection=async _=>{e.githubConnection=_,e.readme="",e.sourceUrl&&await C()},e.detectedType=null,e.repoId="",e.pullRequestId="",e.gistId="",e.terms="",e.defaultTerms="",e.branches=[],e.source={branch:"",commit:""},e.options={expirationMode:"remove",expirationDate:new Date,update:!1,image:!0,pdf:!0,notebook:!0,link:!0,body:!0,title:!0,origin:!1,diff:!0,content:!0,comments:!0,username:!0,date:!0};function T(){let _=new Date;return _.setMonth(_.getMonth()+6),_}e.options.expirationDate=T();function P(_){let I=_.getFullYear(),j=String(_.getMonth()+1).padStart(2,"0"),M=String(_.getDate()).padStart(2,"0");return`${I}-${j}-${M}`}e.minExpirationDate=P(new Date);let H=new Date;H.setFullYear(H.getFullYear()+1),e.maxExpirationDate=P(H),e.anonymize_readme="",e.readme="",e.html_readme="",e.isUpdate=!1;function q(_){t.get("/api/user/default").then(I=>{let j=I.data;j.terms&&(e.defaultTerms=j.terms.join(` +`)),e.options=Object.assign({},e.options,j.options),e.options.expirationDate=j.options&&j.options.expirationDate?new Date(j.options.expirationDate):T(),!r.repoId&&!r.pullRequestId&&!r.gistId&&!e.anonymize?.terms?.dirty&&(e.terms=e.defaultTerms),_&&_()})}function U(_,I,j){e.anonymize&&e.anonymize[_]&&e.anonymize[_].setValidity(I,j)}function ie(_){try{let I=parseGithubUrl(_);if(I&&I.owner&&I.repo)return I.owner+"/"+I.repo}catch{}return null}e.reconnectingSource=!1,e.reconnectRepositoryId=void 0,e.reconnectSource=async()=>{if(confirm("Reconnect to the repository currently at this GitHub URL? Review its branch and commit before saving. Saving will replace the published snapshot.")){e.reconnectingSource=!0,e.reconnectRepositoryId=void 0,e.source.commit="",e.source.branch="",e.readme="",e.branches=[];try{await G()}catch{}}};function re(){return e.reconnectingSource||!e.isUpdate||!e._originalRepositoryID?void 0:ie(e.sourceUrl)===e._originalFullName?e._originalRepositoryID:void 0}async function C(){e._preservingDraft=!0;try{await e.urlSelected(!0)}finally{e._preservingDraft=!1}}async function O(){let _;try{_=JSON.parse(sessionStorage.getItem("github-access-draft")||"null")}catch{return!1}if(!_||_.path!==s.path()||Date.now()-_.savedAt>=30*6e4)return R.restore()?(e.sourceUrl&&await C(),!0):!1;R.restore();for(let I of["sourceUrl","terms","repoId","pullRequestId","gistId","source","options","conference","githubConnection"])Object.prototype.hasOwnProperty.call(_.draft,I)&&(e[I]=_.draft[I]);return e.options.expirationDate&&(e.options.expirationDate=new Date(e.options.expirationDate)),await C(),sessionStorage.removeItem("github-access-draft"),!0}q(()=>{!r.repoId&&!r.pullRequestId&&!r.gistId&&a(O,0),r.repoId&&r.repoId!=""&&(e.isUpdate=!0,e.detectedType="repo",e.repoId=r.repoId,t.get("/api/repo/"+e.repoId).then(async _=>{e.githubConnection=_.data.connection||"oauth",e.sourceUrl="https://github.com/"+_.data.source.fullName,e._originalFullName=_.data.source.fullName,e.terms=_.data.options.terms.filter(I=>I).join(` +`),e.source=_.data.source,e.role=_.data.role||"owner",e.coauthors=_.data.coauthors||[],e._originalBranch=_.data.source.branch,e.options=Object.assign({},e.options,_.data.options),e.conference=_.data.conference,e._originalConference=_.data.conference,e.repositoryID=_.data.source.repositoryID,e._originalRepositoryID=_.data.source.repositoryID,_.data.options.expirationDate&&(e.options.expirationDate=new Date(_.data.options.expirationDate)),E=k(parseGithubUrl(e.sourceUrl)),!await O()&&(await Promise.all([G(),J()]),ue())},()=>{s.url("/404")})),r.pullRequestId&&r.pullRequestId!=""&&(e.isUpdate=!0,e.detectedType="pr",e.pullRequestId=r.pullRequestId,t.get("/api/pr/"+e.pullRequestId).then(async _=>{if(e.githubConnection=_.data.connection||"oauth",e.sourceUrl="https://github.com/"+_.data.source.repositoryFullName+"/pull/"+_.data.source.pullRequestId,e.terms=_.data.options.terms.filter(I=>I).join(` +`),e.source=_.data.source,e.options=Object.assign({},e.options,_.data.options),e.conference=_.data.conference,e._originalConference=_.data.conference,_.data.options.expirationDate&&(e.options.expirationDate=new Date(_.data.options.expirationDate)),E=k(parseGithubUrl(e.sourceUrl)),!await O())try{await pe()}catch{}},()=>{s.url("/404")})),r.gistId&&r.gistId!=""&&(e.isUpdate=!0,e.detectedType="gist",e.gistId=r.gistId,t.get("/api/gist/"+e.gistId).then(async _=>{e.sourceUrl="https://gist.github.com/"+_.data.source.gistId,e.terms=_.data.options.terms.filter(I=>I).join(` +`),e.source=_.data.source,e.options=Object.assign({},e.options,_.data.options),e.conference=_.data.conference,e._originalConference=_.data.conference,_.data.options.expirationDate&&(e.options.expirationDate=new Date(_.data.options.expirationDate)),E=k(parseGithubUrl(e.sourceUrl)),!await O()&&await Ae()},()=>{s.url("/404")}))}),t.get("/github/connections").then(_=>{e.githubConnections=_.data,!r.repoId&&!r.pullRequestId&&!r.gistId&&e.githubConnection===void 0&&_.data.appEnabled&&_.data.appConnected&&(e.githubConnection="github-app",e.sourceUrl&&e.workspaceOpen&&C())}).catch(()=>{}),e.urlSelected=async(_=!1)=>{let I=++f,j;try{j=parseGithubUrl(e.sourceUrl.trim())}catch{e.sourceLoading=!1,oe.cancel(),_e.cancel(),Se.cancel(),e.previewStatus="idle",e.sourceUrlError=e.sourceUrl?"Please provide a valid GitHub URL.":"",U("sourceUrl","github",!1);return}let M=k(j),v=_||E===M;E=M,e.sourceUrlError="",U("sourceUrl","github",!0);let S=document.activeElement?.id==="sourceUrl-landing";e.workspaceOpen=!0,S&&a(()=>document.getElementById("sourceUrl")?.focus(),0),e.reconnectingSource=!1,e.reconnectRepositoryId=void 0,!v&&!e.isUpdate&&(e.repoId="",e.pullRequestId="",e.gistId=""),e.details=null,e.branches=[],v||(e.source={type:"GitHubStream",branch:"",commit:""}),oe.cancel(),_e.cancel(),Se.cancel(),le.clear(),Ee.clear(),e.previewStatus="idle",e.anonymize_readme="",e.readme="",e.html_readme="",e.detectedType=null,e.gistOAuthRequired=!1,e._preservingDraft=v;try{j.gistId&&!j.repo?(e.detectedType="gist",e.source={gistId:j.gistId},await Ae()):j.pullRequestId?(e.detectedType="pr",e.source={repositoryFullName:j.owner+"/"+j.repo,pullRequestId:j.pullRequestId},await pe()):(e.detectedType="repo",await Promise.all([G(),J()]),ue())}catch{}finally{I===f&&(e._preservingDraft=!1)}$('[data-toggle="tooltip"]').tooltip()},$('[data-toggle="tooltip"]').tooltip(),e.watch("source.branch",async()=>{if(e.detectedType!=="repo")return;let _=e.branches.filter(j=>j.name==e.source.branch)[0];if(!_)return;!(!e.reconnectingSource&&e.isUpdate&&e._originalBranch===e.source.branch&&!!e.source.commit)&&!(e._preservingDraft&&e.source.commit)&&(e.source.commit=_.commit),e.readme=_.readme,await J(),ue()}),e.getBranches=async _=>{let I=parseGithubUrl(e.sourceUrl),j=h();try{let M=await t.get(`/api/repo/${I.owner}/${I.repo}/branches`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&r.repoId&&ie(e.sourceUrl)===e._originalFullName?r.repoId:void 0,connection:e.githubConnection,force:_===!0||e.reconnectingSource?"1":"0",repositoryID:re()}});if(!w(j))return;e.branches=M.data,e.sourceUnreachable=!1,e.source.branch||(e.source.branch=e.details.defaultBranch);let v=e.branches.filter(S=>S.name==e.source.branch);v.length>0&&(!(!e.reconnectingSource&&!_&&e.isUpdate&&!e.options.update&&e._originalBranch===e.source.branch&&e.source.commit)&&!(e._preservingDraft&&e.source.commit)&&(e.source.commit=v[0].commit),e.readme=v[0].readme,await J(_))}catch(M){if(!w(j))return;e.branches=[],e.sourceUnreachable=M&&(M.status===404||M.data&&M.data.error==="repo_not_found");let v=M&&M.data&&M.data.error||(M&&M.status===404?"repo_not_found":"unknown_error");i("ERRORS."+v).then(S=>{e.toasts=e.toasts||[],e.addToast({title:"Error",date:new Date,body:S}),e.error=S},console.error),typeof U=="function"&&U("sourceUrl","missing",!1)}finally{b(j)}};async function G(){let _=parseGithubUrl(e.sourceUrl),I=h();try{z();let j=await t.get(`/api/repo/${_.owner}/${_.repo}/`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&r.repoId&&ie(e.sourceUrl)===e._originalFullName?r.repoId:void 0,connection:e.githubConnection,repositoryID:re(),force:"1"}});if(!w(I))return;e.details=j.data,e.reconnectingSource&&(e.reconnectRepositoryId=e.details.externalId),e.details&&e.details.id&&(e.repositoryID=e.details.id),e.repoId||(e.repoId=e.details.repo+"-"+generateRandomId(4)),await e.getBranches(e.reconnectingSource)}catch(j){if(!w(I))return;throw j.data&&(i("ERRORS."+j.data.error).then(M=>{e.addToast({title:"Error",date:new Date,body:M}),e.error=M},console.error),te(j.data.error)),U("sourceUrl","missing",!1),j}finally{b(I)}}async function J(_){if(e.readme&&!_)return e.readme;let I=parseGithubUrl(e.sourceUrl),j=h();try{let M=await t.get(`/api/repo/${I.owner}/${I.repo}/readme`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&r.repoId&&ie(e.sourceUrl)===e._originalFullName?r.repoId:void 0,connection:e.githubConnection,force:_===!0?"1":"0",branch:e.source.branch,repositoryID:re()}});w(j,!0)&&(e.readme=M.data)}catch{w(j,!0)&&(e.readme="")}finally{b(j)}}function ee(){let _={terms:e.terms?e.terms.split(` +`):[],image:!!e.options.image,link:!!e.options.link,repoId:e.repoId};e.source&&e.source.branch&&(_.branchName=e.source.branch);try{let I=parseGithubUrl(e.sourceUrl);_.repoName=`${I.owner}/${I.repo}`}catch{}return _}function Q(_,I,j){let M=null,v=0,S=()=>{if(e.detectedType!==_)return;M&&a.cancel(M);let V=++v;e.previewStatus="loading",M=a(()=>{M=null;let F=I();if(!F){e.previewStatus="idle";return}t.post("/api/anonymize-preview",F).then(B=>{V===v&&(j(B.data,F),e.previewStatus="ready")}).catch(()=>{V===v&&(e.previewStatus="error")})},200)};return S.cancel=()=>{v++,M&&a.cancel(M),M=null},e.on("dispose",S.cancel),S}e.retryPreview=()=>{e.detectedType==="repo"&&oe(),e.detectedType==="pr"&&_e(),e.detectedType==="gist"&&Se()};let oe=Q("repo",()=>e.readme?{content:e.readme,options:ee()}:null,_=>{if(typeof _?.content!="string")throw Error("Invalid preview response");e.anonymize_readme=_.content;let I="";try{let M=parseGithubUrl(e.sourceUrl),v=e.source.branch||e.details&&e.details.defaultBranch||"main";I=`https://github.com/${M.owner}/${M.repo}/raw/${v}/`}catch{}let j=renderMD(e.anonymize_readme,I);e.html_readme=j,a(Prism.highlightAll,150)});function ue(){!e.anonymize||!e.anonymize.terms||(e.termsRegexWarning=!!e.terms&&!!e.terms.match(/[-[\]{}()*+?.,\\^$|#]/g),oe())}async function pe(){let _=parseGithubUrl(e.sourceUrl),I=h();try{z();let j=await t.get(`/api/pr/${_.owner}/${_.repo}/${_.pullRequestId}`,{params:{connection:e.githubConnection}});if(!w(I))return;e.details=j.data,e.pullRequestId||(e.pullRequestId=_.repo+"-PR"+_.pullRequestId+"-"+generateRandomId(4))}catch(j){if(!w(I))return;throw j.data&&(i("ERRORS."+j.data.error).then(M=>{e.addToast({title:"Error",date:new Date,body:M}),e.error=M},console.error),te(j.data.error)),U("sourceUrl","missing",!1),j}finally{b(I)}}let le=He(new Map);function Ie(){let _=new Set,I=e.details&&e.details.pullRequest;if(!I)return _;typeof I.title=="string"&&_.add(I.title),typeof I.body=="string"&&_.add(I.body),typeof I.diff=="string"&&_.add(I.diff);let j=I.comments||[];for(let M of j)typeof M.author=="string"&&_.add(M.author),typeof M.body=="string"&&_.add(M.body);return _}let _e=Q("pr",()=>{let _=Ie(),I=Array.from(_);return I.length===0?null:{contents:I,options:ee()}},(_,I)=>{if(!Array.isArray(_?.contents)||_.contents.length!==I.contents.length||_.contents.some(v=>typeof v!="string"))throw Error("Invalid preview response");let j=I.contents,M=new Map;for(let v=0;vle.set(S,v))});e.anonymizePrContent=function(_){return _&&(le.has(_)?le.get(_):"")};async function Ae(){let _=parseGithubUrl(e.sourceUrl),I=h();try{if(z(),e.gistOAuthRequired=!1,e.githubConnections?.oauthConnected===!1){e.gistOAuthRequired=!0,U("sourceUrl","missing",!1);return}let j=await t.get(`/api/gist/source/${_.gistId}`);if(!w(I))return;e.details=j.data,e.gistId||(e.gistId="gist-"+_.gistId.substring(0,6)+"-"+generateRandomId(4))}catch(j){if(!w(I))return;if(j.data?.error==="github_oauth_required"){e.gistOAuthRequired=!0,U("sourceUrl","missing",!1);return}throw j.data&&(i("ERRORS."+j.data.error).then(M=>{e.addToast({title:"Error",date:new Date,body:M}),e.error=M},console.error),te(j.data.error)),U("sourceUrl","missing",!1),j}finally{b(I)}}let Ee=He(new Map);function Ve(){let _=new Set,I=e.details&&e.details.gist;if(!I)return _;typeof I.description=="string"&&_.add(I.description),typeof I.ownerLogin=="string"&&_.add(I.ownerLogin);let j=I.files||[];for(let v of j)typeof v.filename=="string"&&_.add(v.filename),typeof v.content=="string"&&_.add(v.content);let M=I.comments||[];for(let v of M)typeof v.author=="string"&&_.add(v.author),typeof v.body=="string"&&_.add(v.body);return _}let Se=Q("gist",()=>{let _=Ve(),I=Array.from(_);return I.length===0?null:{contents:I,options:ee()}},(_,I)=>{if(!Array.isArray(_?.contents)||_.contents.length!==I.contents.length||_.contents.some(v=>typeof v!="string"))throw Error("Invalid preview response");let j=I.contents,M=new Map;for(let v=0;vEe.set(S,v)),Le()});e.anonymizeGistContent=function(_){return _&&(Ee.has(_)?Ee.get(_):"")},e.previewGistFiles=[];function Le(){let _=e.details&&e.details.gist&&e.details.gist.files||[];e.previewGistFiles=_.map(I=>({filename:e.anonymizeGistContent(I.filename),content:e.anonymizeGistContent(I.content),language:I.language}))}e.watch("details.gist.files",Le,!0),e.watch("terms",Le);function Ue(){let _=e.conference;if(e.conference_data=null,!_)return;let I=e.isUpdate&&_===e._originalConference;t.get("/api/conferences/"+_).then(j=>{e.conference===_&&(e.conference_data=j.data,e.conference_data.startDate=new Date(e.conference_data.startDate),e.conference_data.endDate=new Date(e.conference_data.endDate),!I&&(e.options.expirationDate=new Date(e.conference_data.endDate),e.options.expirationMode="remove",e.options.update=e.conference_data.options.update,e.options.image=e.conference_data.options.image,e.options.pdf=e.conference_data.options.pdf,e.options.notebook=e.conference_data.options.notebook,e.options.link=e.conference_data.options.link))},()=>{e.conference===_&&(e.conference_data=null)})}function z(){U("repoId","used",!0),U("repoId","format",!0),U("pullRequestId","used",!0),U("pullRequestId","format",!0),U("gistId","used",!0),U("gistId","format",!0),U("sourceUrl","used",!0),U("sourceUrl","missing",!0),U("sourceUrl","access",!0),U("sourceUrl","github",!0),U("commit","exists",!0),U("conference","activated",!0),U("terms","format",!0),e.termsRegexWarning=!1}function ne(){let _=e.anonymize&&e.anonymize.expirationDate;return!e.options.expirationDate||_&&_.invalid?(_&&_.setDirty&&_.setDirty(),e.error="Please choose a valid expiration date.",!0):!1}function te(_){let I=e.detectedType==="pr"?"pullRequestId":e.detectedType==="gist"?"gistId":"repoId";switch(_){case"repoId_already_used":U(I,"used",!1);break;case"invalid_repoId":U(I,"format",!1);break;case"options_not_provided":U(I,"format",!1);break;case"repo_already_anonymized":U("sourceUrl","used",!1);break;case"invalid_terms_format":U("terms","format",!1);break;case"repo_not_found":U("sourceUrl","missing",!1);break;case"repo_not_accessible":U("sourceUrl","access",!1);break;case"commit_not_found":U("commit","exists",!1);break;case"conf_not_activated":U("conference","activated",!1);break}}e.coauthors=e.coauthors||[],e.coauthorResults=[],e.coauthorError="",e.searchCoauthors=()=>{let _=(e.coauthorSearch||"").trim();if(e.coauthorError="",_.length<2){e.coauthorResults=[];return}t.get("/api/user/search/github-users",{params:{q:_}}).then(I=>{let j=new Set((e.coauthors||[]).map(M=>(M.username||"").toLowerCase()));e.coauthorResults=(I.data||[]).filter(M=>!j.has((M.username||"").toLowerCase()))},()=>{e.coauthorResults=[]})},e.addCoauthor=(_,I)=>{I&&I.preventDefault(),!(!_||!_.username)&&t.post("/api/repo/"+e.repoId+"/coauthors",{username:_.username}).then(j=>{e.coauthors=j.data||[],e.coauthorResults=[],e.coauthorSearch="",e.coauthorError=""},j=>{let M=j&&j.data&&j.data.error||"unknown_error";e.coauthorError=M})},e.removeCoauthor=_=>{!_||!_.username||confirm("Remove co-author "+_.username+"?")&&t.delete("/api/repo/"+e.repoId+"/coauthors/"+encodeURIComponent(_.username)).then(I=>{e.coauthors=I.data||[]},I=>{let j=I&&I.data&&I.data.error||"unknown_error";e.coauthorError=j})},e.anonymizeRepo=_=>{if(e.sourceLoading){e.error="Wait for the source to finish loading before saving.";return}if(e.reconnectingSource&&!e.reconnectRepositoryId||ne())return;if(e.anonymize?.invalid||e.sourceUrlError){e.error="Please correct the highlighted fields before saving.";return}let I=_.currentTarget||_.target.closest?.("button")||_.target;I.disabled=!0;let j=parseGithubUrl(e.sourceUrl),M={repoId:e.repoId,terms:e.terms.trim().split(` +`).filter(S=>S),connection:e.githubConnection,fullName:`${j.owner}/${j.repo}`,repository:e.sourceUrl,reconnectRepositoryId:e.reconnectRepositoryId,options:e.options,source:e.source,conference:e.conference};e.details&&(M.options.pageSource=e.details.pageSource),z();let v=e.isUpdate?"/api/repo/"+e.repoId:"/api/repo/";t.post(v,M,{headers:{"Content-Type":"application/json"}}).then(()=>{R.clear(),window.location.href="/status/"+e.repoId},S=>{S.data&&(i("ERRORS."+S.data.error).then(V=>{e.error=V},console.error),te(S.data.error))}).finally(()=>{I.disabled=!1})},e.anonymizeGist=_=>{if(e.sourceLoading){e.error="Wait for the source to finish loading before saving.";return}if(ne())return;if(e.anonymize?.invalid||e.sourceUrlError){e.error="Please correct the highlighted fields before saving.";return}let I=_.currentTarget||_.target.closest?.("button")||_.target;I.disabled=!0;let j=parseGithubUrl(e.sourceUrl),M={gistId:e.gistId,terms:e.terms.trim().split(` +`).filter(S=>S),source:{gistId:j.gistId},options:e.options,conference:e.conference};z();let v=e.isUpdate?"/api/gist/"+e.gistId:"/api/gist/";t.post(v,M,{headers:{"Content-Type":"application/json"}}).then(()=>{R.clear(),window.location.href="/gist/"+e.gistId},S=>{S.data&&(i("ERRORS."+S.data.error).then(V=>{e.error=V},console.error),te(S.data.error))}).finally(()=>{I.disabled=!1})},e.anonymizePullRequest=_=>{if(e.sourceLoading){e.error="Wait for the source to finish loading before saving.";return}if(ne())return;if(e.anonymize?.invalid||e.sourceUrlError){e.error="Please correct the highlighted fields before saving.";return}let I=_.currentTarget||_.target.closest?.("button")||_.target;I.disabled=!0;let j=parseGithubUrl(e.sourceUrl),M={pullRequestId:e.pullRequestId,connection:e.githubConnection,terms:e.terms.trim().split(` +`).filter(S=>S),source:{repositoryFullName:`${j.owner}/${j.repo}`,pullRequestId:j.pullRequestId},options:e.options,conference:e.conference};z();let v=e.isUpdate?"/api/pr/"+e.pullRequestId:"/api/pr/";t.post(v,M,{headers:{"Content-Type":"application/json"}}).then(()=>{R.clear(),window.location.href="/pr/"+e.pullRequestId},S=>{S.data&&(i("ERRORS."+S.data.error).then(V=>{e.error=V},console.error),te(S.data.error))}).finally(()=>{I.disabled=!1})},e.watch("conference",()=>{Ue()}),e.watch("terms",()=>{e.detectedType==="repo"&&ue(),e.detectedType==="pr"&&_e(),e.detectedType==="gist"&&Se()}),e.watch("options.image",()=>{e.detectedType==="repo"&&ue(),e.detectedType==="pr"&&_e(),e.detectedType==="gist"&&Se()}),e.watch("options.link",()=>{e.detectedType==="repo"&&ue(),e.detectedType==="pr"&&_e(),e.detectedType==="gist"&&Se()}),e.watch("details",()=>{e.detectedType==="pr"&&_e(),e.detectedType==="gist"&&Se()},!0)},tr=function(e,t,n,r,s,i){let a=ct(),u=Kt();e.on("dark-mode",(O,G)=>{e.aceOption&&(G?e.aceOption.theme="nord_dark":e.aceOption.theme="chrome")});let f=0,m=!1;e.on("dispose",()=>{m=!0,f++,g&&g.resolve()}),e.files=[],e.isMac=/Mac|iPhone|iPad|iPod/.test(navigator.platform||navigator.userAgent),e.fileSearchQuery="",e.fileSearchResults=null,e.fileSearchLoading=!1,u(document,"keydown",function(O){if((O.metaKey||O.ctrlKey)&&O.key==="k"){O.preventDefault();var G=document.querySelector(".tree-search-input");G&&(G.focus(),G.select())}});var g=null;e.onFileSearchChange=function(){g&&(g.resolve(),g=null);let O=e.fileSearchQuery;if(!O||O.length<2){e.fileSearchResults=null,e.fileSearchLoading=!1;return}e.fileSearchLoading=!0;let G=i.defer();g=G,t.get(`/api/repo/${e.repoId}/files/search?q=${encodeURIComponent(O)}`,{timeout:G.promise}).then(function(J){if(!(m||g!==G)){g=null,e.fileSearchLoading=!1;var ee={};e.files.forEach(function(z){ee[(z.path||"")+"/"+z.name]=!0});for(var Q=[],oe={},ue=0;ue0&&e.files.push.apply(e.files,Q);for(var Ve=[],Se=0;Se0&&e.files.push.apply(e.files,Ve),e.fileSearchResults=J.data}},function(){!m&&g===G&&(g=null,e.fileSearchLoading=!1,e.fileSearchResults=[])})};let w={yml:"yaml",txt:"text",py:"python",js:"javascript",ts:"typescript"},h=["license","txt"],b=["png","jpg","jpeg","gif","svg","ico","bmp","tiff","tif","webp","avif","heif","heic"],E=["wav","mp3","ogg","wma","flac","aac","m4a"],k=["mp4","avi","webm","mov","mpg","mpeg","mkv","flv","wmv","3gp","3g2","m4v","f4v","f4p","f4a","f4b"];e.on("routeUpdate",function(O,G){if(e.repoId!=r.repoId)return C();if((r.path||"")!=e.filePath){e.filePath=r.path||"",e.paths=e.filePath.split("/").filter(J=>J&&J.trim().length>0),re();for(let J=0;J0?e.paths.slice(0,J).join("/"):"";e.files.some(oe=>oe.path===ee)||e.getFiles(ee)}}});function R(){if(e.paths[0]!="")return;let O=["readme.md","readme.txt","readme.org","readme.1st","readme"],G={};for(let ee of e.files)ee.name.toLowerCase().indexOf("readme")>-1&&(G[ee.name.toLowerCase()]=ee.name);let J=null;for(let ee of O)if(G[ee]){J=ee;break}if(!J&&Object.keys(G).length>0&&(J=Object.keys(G)[0]),J){let ee=n.url();ee[ee.length-1]!="/"&&(ee+="/"),n.url(ee+encodePathForUrl(G[J]))}}e.fileCounts=null,e.getFiles=function(O){let G=e.repoId;return t.get(`/api/repo/${e.repoId}/files/?path=${encodeURIComponent(O)}&v=${e.options.lastUpdateDate}`).then(function(J){if(m||G!==e.repoId)return[];let ee=O||"";return e.files=e.files.filter(Q=>Q.path!==ee),e.files.push(...J.data),J.data},function(J){if(m||G!==e.repoId)return[];e.type="error",e.content=J&&J.data&&J.data.error||"unknown_error",e.files=[]})};function D(){let O=e.repoId;t.get(`/api/repo/${e.repoId}/files/counts`).then(function(G){m||O!==e.repoId||(e.fileCounts=G.data)},function(){e.fileCounts={}})}function T(){return e.files.filter(O=>O.name==e.paths[e.paths.length-1]&&O.path==e.paths.slice(0,e.paths.length-1).join("/"))[0]}var P=null;e.on("dispose",function(){P&&a.interval.cancel(P)});function H(O){if(m)return;let G=e.repoId;t.get(`/api/repo/${e.repoId}/options`).then(J=>{if(!(m||G!==e.repoId)){if(e.options=J.data,e.options.url){window.location=e.options.url;return}O&&O(J.data)}},J=>{if(!(m||G!==e.repoId)){var ee=J.data||{};if(ee.error==="rate_limited"&&ee.resetAt){let oe=function(){var ue=Math.max(0,Math.ceil((e.rateLimitResetAt-Date.now())/1e3));if(ue<=0)e.rateLimitCountdown="",e.rateLimitResetAt=0,P&&(a.interval.cancel(P),P=null),H(O);else{var pe=Math.floor(ue/60),le=ue%60;e.rateLimitCountdown=pe>0?pe+"m "+le+"s":le+"s"}};var Q=oe;e.type="rate_limited",e.rateLimitResetAt=ee.resetAt,P&&a.interval.cancel(P),oe(),P=a.interval(oe,1e3)}else ee.error==="repository_not_ready"?(e.type="loading",a.timeout(function(){H(O)},3e3)):(e.type="error",e.content=ee.error)}})}e.toggleSource=function(){e.showSource=!e.showSource},e.toggleAllowScripts=function(){e.allowScripts=!e.allowScripts};function q(O){return w[O]?w[O]:O}function U(O){return O=="pdf"?"pdf":O=="html"||O=="htm"?"html-doc":O=="md"?"md":O=="org"?"org":O=="ipynb"?"IPython":h.indexOf(O)>-1?"text":b.indexOf(O)>-1?"image":k.indexOf(O)>-1?"media":E.indexOf(O)>-1?"audio":"code"}function ie(O,G){let J=f;if(!O){e.type="error",e.content="no_file_selected";return}let ee=e.type;e.type="loading",e.content="loading";let Q=G&&G.sha||"0";t.get(`/api/repo/${e.repoId}/file/${encodePathForUrl(O)}?v=`+Q,{transformResponse:oe=>oe}).then(oe=>{if(!(m||J!==f)){if(e.type=ee,e.content=oe.data,e.content==""&&(e.content=null),e.type=="md"&&(e.content=renderMD(oe.data,n.url()+"/../"),e.type="html"),e.type=="org"){let pe=contentAbs2Relative(oe.data);var ue=new Org.Parser().parse(pe).convert(Org.ConverterHTML,{headerOffset:1,exportFromLineNumber:!1,suppressSubScriptHandling:!0,suppressAutoLink:!1});e.content=DOMPurify.sanitize(ue.toString()),e.type="html"}e.type=="code"&&oe.headers("content-type")=="application/octet-stream"&&(e.type="binary",e.content="binary"),a.timeout(()=>{Prism.highlightAll()},50)}},oe=>{if(!(m||J!==f)){e.type="error",e.content="unknown_error";try{oe.data=JSON.parse(oe.data),oe.data.error?e.content=oe.data.error:e.content=oe.data}catch{console.log(oe),oe.status==-1?e.content="request_error":oe.status==502&&(e.content="unreachable")}}})}function re(){f++,e.content="",e.file=T();let O="0";e.file&&e.file.sha&&(O=e.file.sha),e.url=`/api/repo/${e.repoId}/file/${encodePathForUrl(e.filePath)}?v=${O}`;let G=e.filePath.substring(0,e.filePath.lastIndexOf("/")+1);e.fileBaseUrl=`/api/repo/${e.repoId}/file/${G?encodePathForUrl(G):""}`,e.showSource=!1,e.allowScripts=!1;let J=e.filePath.toLowerCase(),ee=J.lastIndexOf(".");if(ee>-1&&(J=J.substring(ee+1)),e.aceOption={readOnly:!0,useWrapMode:!0,showGutter:!0,theme:"chrome",useSoftTab:!0,tabSize:2,fontSize:15,keyBinding:"vscode",fullLineSelection:!0,highlightActiveLine:!1,highlightGutterLine:!1,cursor:"hide",showInvisibles:!1,showIndentGuides:!0,showPrintMargin:!1,highlightSelectedWord:!1,enableBehaviours:!0,fadeFoldWidgets:!1,mode:q(J),onLoad:function(Q){let oe=ace.require("ace/range").Range,ue=null;function pe(Ae,Ee){ue!==null&&(Q.session.removeMarker(ue),ue=null),Ae!=null&&(ue=Q.session.addMarker(new oe(Ae,0,Ee,1),"highlighted-line","fullLine"))}function le(Ae){let Ee=window.location.hash.match(/^#L(\d+)(?:-L(\d+))?/);if(!Ee){pe(null);return}let Ve=parseInt(Ee[1])-1,Se=Ee[2]?parseInt(Ee[2])-1:Ve;pe(Ve,Se),Ae&&a.timeout(()=>{Q.scrollToLine(Ve,!0,!0,function(){})},100)}le(!0);let Ie=null;Q.on("guttermousedown",function(Ae){let Ee=Ae.getDocumentPosition().row,Ve=Ae.domEvent&&Ae.domEvent.shiftKey,Se=Ee,Le=Ee;Ve&&Ie!==null?(Se=Math.min(Ie,Ee),Le=Math.max(Ie,Ee)):Ie=Ee;let Ue=Se===Le?`#L${Se+1}`:`#L${Se+1}-L${Le+1}`,z=window.location.pathname+window.location.search+Ue;window.history.replaceState(null,"",z),pe(Se,Le),Ae.stop()});let _e=u(window,"hashchange",()=>le(!1));return Q.setFontSize(e.aceOption.fontSize),Q.setReadOnly(e.aceOption.readOnly),Q.setKeyboardHandler(e.aceOption.keyBinding),Q.setSelectionStyle(e.aceOption.fullLineSelection?"line":"text"),Q.setOption("displayIndentGuides",!0),Q.setHighlightActiveLine(e.aceOption.highlightActiveLine),e.aceOption.cursor=="hide"&&(Q.renderer.$cursorLayer.element.style.display="none"),Q.setHighlightGutterLine(e.aceOption.highlightGutterLine),Q.setShowInvisibles(e.aceOption.showInvisibles),Q.setDisplayIndentGuides(e.aceOption.showIndentGuides),Q.renderer.setShowPrintMargin(e.aceOption.showPrintMargin),Q.setHighlightSelectedWord(e.aceOption.highlightSelectedWord),Q.session.setUseSoftTabs(e.aceOption.useSoftTab),Q.session.setTabSize(e.aceOption.tabSize),Q.setBehavioursEnabled(e.aceOption.enableBehaviours),Q.setFadeFoldWidgets(e.aceOption.fadeFoldWidgets),_e}},e.isDarkMode&&(e.aceOption.theme="nord_dark"),e.type=U(J),e.type=="pdf"){e.content="pdf";return}ie(e.filePath,e.file)}function C(){f++,e.files=[],e.content=null,e.fileCounts=null,e.fileSearchQuery="",e.onFileSearchChange(),e.repoId=r.repoId,e.type="loading",e.filePath=r.path||"",e.paths=e.filePath.split("/");let O=e.repoId;H(function(G){D();var J=i.resolve();for(let ee=0;ee0?e.paths.slice(0,ee).join("/"):"";J=J.then(function(){return e.getFiles(Q)}).then(function(){if(e.type==="error")return i.reject("error")})}J.then(function(){m||O!==e.repoId||(e.files.length==1&&e.files[0].name==""?(e.files=[],e.type="empty"):(R(),re()))})})}C()},Ha=function(e,t,n,r,s){async function i(f){t.get(`/api/pr/${e.pullRequestId}/options`).then(m=>{if(e.options=m.data,e.options.url){window.location=e.options.url;return}f&&f(m.data)},m=>{e.type="error",e.content=m.data.error})}async function a(f){t.get(`/api/pr/${e.pullRequestId}/content`).then(m=>{e.details=m.data,e.tabState={active:m.data.diff?"diff":"comments"},f&&f(m.data)},m=>{e.type="error",e.content=m.data.error})}function u(){e.pullRequestId=r.pullRequestId,e.type="loading",i(f=>{a()})}u()},ja=function(e,t,n,r,s){async function i(f){t.get(`/api/gist/${e.gistId}/options`).then(m=>{if(e.options=m.data,e.options.url){window.location=e.options.url;return}f&&f(m.data)},m=>{e.type="error",e.content=m.data.error})}async function a(f){t.get(`/api/gist/${e.gistId}/content`).then(m=>{e.details=m.data;let g=m.data&&m.data.files&&m.data.files.length;e.tabState={active:g?"files":"comments"},f&&f(m.data)},m=>{e.type="error",e.content=m.data.error})}function u(){e.gistId=r.gistId,e.type="loading",i(()=>{a()})}u()},Ba=function(e,t,n){e.watch("user.status",()=>{e.user==null&&n.url("/")}),e.user==null&&n.url("/"),e.conferences=[],e.loading=!0,e.error="",e.search="";let r="conferences.filterPrefs",s={filters:{status:{ready:!0,expired:!1,removed:!1}},orderBy:"name"},i=loadFilterPrefs(r)||{};e.filters={status:Object.assign({},s.filters.status,i.filters&&i.filters.status||{})},e.orderBy=i.orderBy||s.orderBy,e.watch("orderBy",()=>{saveFilterPrefs(r,{filters:e.filters,orderBy:e.orderBy})}),e.watch("filters",()=>{saveFilterPrefs(r,{filters:e.filters,orderBy:e.orderBy})},!0),e.removeConference=function(a){if(!a.removing&&confirm(`Are you sure that you want to remove the conference ${a.name}? All the repositories linked to this conference will expire.`)){a.removing=!0;let u=He({title:`Removing ${a.name}...`,date:new Date,body:`The conference ${a.name} is going to be removed.`});e.addToast(u),t.delete(`/api/conferences/${a.conferenceID}`).then(()=>{u.title=`${a.name} is removed.`,u.body=`The conference ${a.name} is removed.`,e.loadConferences()}).catch(()=>{u.title="Unable to remove conference",u.body="Please try again. The conference has not been removed."}).finally(()=>{a.removing=!1})}},e.loadConferences=()=>(e.loading=!0,e.error="",t.get("/api/conferences/").then(a=>{e.conferences=a.data||[]},a=>{e.error="Unable to load your conferences. Please try again."}).finally(()=>{e.loading=!1})),e.loadConferences(),e.conferenceFilter=a=>{if(e.filters.status[a.status]==!1)return!1;let u=e.search.trim().toLowerCase();return!!(!u||(a.name||"").toLowerCase().includes(u)||(a.conferenceID||"").toLowerCase().includes(u))}},or=function(e,t,n,r){e.watch("user.status",()=>{e.user==null&&n.url("/")}),e.user==null&&n.url("/"),e.plans=[],e.editionMode=!1,e.saving=!1,e.error="";function s(){t.get("/api/conferences/"+r.conferenceId).then(g=>{e.options={...e.options,...g.data,billing:g.data.billing||{}},e.options.startDate=new Date(e.options.startDate),e.options.endDate=new Date(e.options.endDate)})}r.conferenceId&&(e.editionMode=!0,s());function i(){t.get("/api/conferences/plans").then(g=>{e.plans=g.data,e.plan=e.plans.filter(w=>w.id==e.options.plan.planID)[0]})}i();let a=new Date;a.setDate(1),a.setMonth(a.getMonth()+1);let u=new Date(a);u.setMonth(a.getMonth()+7,0),e.options={billing:{},startDate:a,endDate:u,plan:{planID:"free_conference"},options:{link:!0,image:!0,pdf:!0,notebook:!0,update:!0,page:!0}},e.plan=null,e.watch("options.plan.planID",()=>{e.plan=e.plans.filter(g=>g.id==e.options.plan.planID)[0]});function f(){e.conference.name.setValidity("required",!0),e.conference.conferenceID.setValidity("pattern",!0),e.conference.conferenceID.setValidity("required",!0),e.conference.conferenceID.setValidity("used",!0),e.conference.startDate.setValidity("required",!0),e.conference.startDate.setValidity("invalid",!0),e.conference.endDate.setValidity("required",!0),e.conference.endDate.setValidity("invalid",!0),e.conference.setValidity("error",!0)}function m(g){switch(g){case"conf_name_missing":e.conference.name.setValidity("required",!1);break;case"conf_id_missing":e.conference.conferenceID.setValidity("required",!1);break;case"conf_id_format":e.conference.conferenceID.setValidity("pattern",!1);break;case"conf_id_used":e.conference.conferenceID.setValidity("used",!1);break;case"conf_start_date_missing":e.conference.startDate.setValidity("required",!1);break;case"conf_end_date_missing":e.conference.endDate.setValidity("required",!1);break;case"conf_start_date_invalid":e.conference.startDate.setValidity("invalid",!1);break;case"conf_end_date_invalid":e.conference.endDate.setValidity("invalid",!1);break;default:e.conference.setValidity("error",!1);break}}e.submit=function(){if(e.saving)return;e.saving=!0,e.error="";let g=JSON.parse(JSON.stringify(e.options)),w=He({title:`Creating ${g.name}...`,date:new Date,body:`The conference ${g.conferenceID} is in creation.`});e.editionMode&&(w.title=`Updating ${g.name}...`,w.body=`The conference '${g.conferenceID}' is updating.`),e.addToast(w),f(),t.post("/api/conferences/"+(e.editionMode?g.conferenceID:""),g).then(()=>{e.editionMode?(w.title=`${g.name} updated`,w.body=`The conference '${g.conferenceID}' is updated.`):(w.title=`${g.name} created`,w.body=`The conference '${g.conferenceID}' is created.`),n.url("/conference/"+g.conferenceID)},h=>{m(h.data?.error),e.error="Unable to save the conference. Please correct any highlighted fields and try again.",e.removeToast(w)}).finally(()=>{e.saving=!1})}},Ga=function(e,t,n,r){e.watch("user.status",()=>{e.user==null&&n.url("/")}),e.user==null&&n.url("/"),e.conference=null,e.search="",e.filters={status:{ready:!0,expired:!1,removed:!1}},e.orderBy="-anonymizeDate",e.repoFiler=i=>{if(e.filters.status[i.status]==!1)return!1;let a=e.search.trim().toLowerCase();return!!(!a||(i.source?.fullName||"").toLowerCase().includes(a)||(i.repoId||"").toLowerCase().includes(a))};function s(){t.get("/api/conferences/"+r.conferenceId).then(i=>{e.conference=i.data})}s()},Wa=function(e,t){e.connections=null,e.connectionError="",e.busy=!1,e.loadConnections=()=>t.get("/github/connections").then(n=>{e.connections=n.data}).catch(n=>{e.connectionError=n.data?.error||"Unable to load connections."}),e.changeConnection=async(n,r,s)=>{e.busy=!0,e.connectionError="";try{let i=await t.post("/github/connections/migrate",{type:n.type,id:n.id,connection:r,preview:s},{headers:{"X-CSRF-Token":e.connections.csrf}});s?n.eligible=i.data.eligible:await e.loadConnections()}catch(i){e.connectionError=i.data?.error||"Unable to change connection."}finally{e.busy=!1}},e.disconnectOAuth=async()=>{e.busy=!0;try{await t.post("/github/connections/disconnect-oauth",{},{headers:{"X-CSRF-Token":e.connections.csrf}}),await e.loadConnections()}catch(n){e.connectionError=n.data?.error||"Unable to disconnect OAuth."}finally{e.busy=!1}},e.loadConnections()},Ka=function(e,t){e.accountRecovery=!1,t.get("/github/account-recovery").then(n=>{e.accountRecovery=n.data.required}).catch(()=>{})};var Ya=function(e,t,n){let r=ct(),s=Kt();e.Math=Math,e.watch("user.status",()=>{e.user==null&&n.url("/")}),e.user==null&&n.url("/"),e.repositories=[],e.total=-1,e.totalPage=0,e.statusCounts=[],e.totalSize=0,e.selected={},e.allSelected=!1;let i=E=>{if(E.key==="/"&&!["INPUT","TEXTAREA","SELECT"].includes(document.activeElement?.tagName)){E.preventDefault();let k=document.querySelector('.admin-filter-toolbar input[type="search"]');k&&k.focus()}};s(document,"keydown",i),e.on("dispose",()=>document.removeEventListener("keydown",i)),e.clearFilter=E=>{E==="dateRange"?(e.query.dateFrom="",e.query.dateTo=""):e.query[E]="",e.query.page=1},e.chips=[];let a=()=>{let E=[];e.query.owner&&E.push({key:"owner",label:"Owner",value:e.query.owner}),e.query.conference&&E.push({key:"conference",label:"Conference",value:e.query.conference}),e.chips=E};e.showStatusMessage=E=>{let k=E.statusMessage||"(no message)";window.prompt(`Status message for ${E.repoId} (${E.status}):`,k)},e.fetchGithubInfo=E=>{let k=window.open("","_blank");k&&k.document.write("
Loading GitHub info for "+E.repoId+"...
"),t.get("/api/admin/repos/"+E.repoId+"/github").then(R=>{k&&(k.document.open(),k.document.write('
'+JSON.stringify(R.data,null,2).replace(/[<>]/g,D=>D==="<"?"<":">")+"
"),k.document.close())},R=>{let D=R&&R.data?JSON.stringify(R.data,null,2):String(R);k&&(k.document.body.innerHTML='
'+D+"
")})},e.statusCountFor=E=>{let k=(e.statusCounts||[]).find(R=>R._id===E);return k?k.count:0},e.statusStorageFor=E=>{let k=(e.statusCounts||[]).find(R=>R._id===E);return k?k.storage:0},e.isErrorsOnly=()=>e.query&&e.query.error&&!e.query.ready&&!e.query.preparing&&!e.query.expired&&!e.query.removed,e.toggleErrorsOnly=()=>{e.isErrorsOnly()?Object.assign(e.query,{ready:!1,preparing:!0,expired:!1,removed:!1,error:!0}):Object.assign(e.query,{ready:!1,preparing:!1,expired:!1,removed:!1,error:!0}),e.query.page=1},e.toggleSortDirection=()=>{e.query.direction=e.query.direction==="asc"?"desc":"asc"},e.sortBy=E=>{e.query.sort===E?e.query.direction=e.query.direction==="asc"?"desc":"asc":(e.query.sort=E,e.query.direction="desc"),e.query.page=1},e.sortIcon=E=>e.query.sort===E?e.query.direction==="asc"?"fa-arrow-up":"fa-arrow-down":"";let u="admin.repos.filterPrefs",f={page:1,limit:25,sort:"lastView",direction:"desc",search:"",owner:"",conference:"",dateFrom:"",dateTo:"",ready:!1,expired:!1,removed:!1,error:!0,preparing:!0},m=loadFilterPrefs(u)||{};e.query=Object.assign({},f,m,{page:1,search:""});let g=n.search();g.owner&&(e.query.owner=g.owner),g.conference&&(e.query.conference=g.conference),g.search&&(e.query.search=g.search);let w="admin.repos.presets";e.presets=JSON.parse(localStorage.getItem(w)||"[]"),e.savePreset=()=>{let E=window.prompt("Preset name:");if(!E)return;let k=Object.assign({},e.query);delete k.page,e.presets=(e.presets||[]).filter(R=>R.name!==E),e.presets.push({name:E,query:k}),localStorage.setItem(w,JSON.stringify(e.presets))},e.applyPreset=E=>{Object.assign(e.query,E.query,{page:1})},e.deletePreset=E=>{e.presets=(e.presets||[]).filter(k=>k.name!==E.name),localStorage.setItem(w,JSON.stringify(e.presets))},e.selectAllOnPage=()=>{e.allSelected=!e.allSelected,e.repositories.forEach(E=>{e.selected[E.repoId]=e.allSelected})},e.selectedCount=()=>Object.values(e.selected||{}).filter(Boolean).length,e.selectedRepos=()=>e.repositories.filter(E=>e.selected[E.repoId]),e.bulkRefresh=()=>{let E=e.selectedRepos();E.length&&confirm(`Force refresh ${E.length} repositories?`)&&E.forEach(k=>e.updateRepository(k))},e.bulkRemoveCache=()=>{let E=e.selectedRepos();E.length&&confirm(`Purge cache for ${E.length} repositories?`)&&E.forEach(k=>e.removeCache(k))},e.clearSelection=()=>{e.selected={},e.allSelected=!1},e.exportCsv=()=>{let E=new URLSearchParams(Object.entries(e.query).filter(([,k])=>k!==""&&k!==!1&&k!=null));E.set("format","csv"),E.set("limit","10000"),window.open("/api/admin/repos?"+E.toString(),"_blank")},e.removeCache=E=>{confirm("Remove cached files for "+E.repoId+"?")&&t.delete("/api/admin/repos/"+E.repoId).then(()=>h(),k=>console.error(k))},e.removeRepository=E=>{confirm("Remove repository "+E.repoId+"?")&&t.delete("/api/repo/"+E.repoId+"/").then(()=>h(),k=>console.error(k))},e.updateRepository=E=>{let k=He({title:`Refreshing ${E.repoId}...`,date:new Date,body:`The repository ${E.repoId} is going to be refreshed.`});e.toasts.push(k),t.post(`/api/repo/${E.repoId}/refresh`).then(R=>{R.data.status=="ready"?k.title=`${E.repoId} is refreshed.`:k.title=`Refreshing of ${E.repoId}.`},R=>{k.title=`Error during the refresh of ${E.repoId}.`,k.body=R.body})},e.fetchError=null;function h(){e.fetchError=null,t.get("/api/admin/repos",{params:e.query}).then(E=>{e.total=E.data.total,e.totalPage=Math.ceil(E.data.total/e.query.limit),e.repositories=E.data.results,e.statusCounts=E.data.statusCounts||[],e.totalSize=E.data.totalSize||0,e.allSelected=!1},E=>{e.fetchError=E&&E.data&&E.data.error||"Failed to load repositories",console.error(E)})}h();let b=null;e.watch("query",()=>{r.timeout.cancel(b),b=r.timeout(h,500);let{page:E,search:k,...R}=e.query;saveFilterPrefs(u,R),a()},!0),a()},Ja=function(e,t,n){let r=ct(),s=Kt();e.Math=Math,e.watch("user.status",()=>{e.user==null&&n.url("/")}),e.user==null&&n.url("/"),e.users=[],e.total=-1,e.totalPage=0,e.statusCounts=[],e.selected={},e.allSelected=!1;let i=h=>{if(h.key==="/"&&!["INPUT","TEXTAREA","SELECT"].includes(document.activeElement?.tagName)){h.preventDefault();let b=document.querySelector('.admin-filter-toolbar input[type="search"]');b&&b.focus()}};s(document,"keydown",i),e.on("dispose",()=>document.removeEventListener("keydown",i)),e.clearFilter=h=>{h==="dateRange"?(e.query.dateFrom="",e.query.dateTo=""):e.query[h]="",e.query.page=1},e.chips=[];let a=()=>{let h=[];e.query.role&&h.push({key:"role",label:"Role",value:e.query.role}),e.chips=h};e.statusCountFor=h=>{let b=(e.statusCounts||[]).find(E=>E._id===h);return b?b.count:0},e.toggleSortDirection=()=>{e.query.direction=e.query.direction==="asc"?"desc":"asc"},e.sortBy=h=>{e.query.sort===h?e.query.direction=e.query.direction==="asc"?"desc":"asc":(e.query.sort=h,e.query.direction="desc"),e.query.page=1},e.sortIcon=h=>e.query.sort===h?e.query.direction==="asc"?"fa-arrow-up":"fa-arrow-down":"";let u="admin.users.filterPrefs",f={page:1,limit:25,sort:"username",direction:"asc",search:"",status:"",role:"",dateFrom:"",dateTo:""},m=loadFilterPrefs(u)||{};e.query=Object.assign({},f,m,{page:1,search:""}),e.selectAllOnPage=()=>{e.allSelected=!e.allSelected,e.users.forEach(h=>{e.selected[h.username]=e.allSelected})},e.selectedCount=()=>Object.values(e.selected||{}).filter(Boolean).length,e.selectedUsers=()=>e.users.filter(h=>e.selected[h.username]),e.banUser=h=>{confirm(`Ban user ${h.username}?`)&&t.post(`/api/admin/users/${h.username}/ban`).then(g,b=>console.error(b))},e.activateUser=h=>{t.post(`/api/admin/users/${h.username}/activate`).then(g,b=>console.error(b))},e.bulkBan=()=>{let h=e.selectedUsers();h.length&&confirm(`Ban ${h.length} users?`)&&h.forEach(b=>e.banUser(b))},e.exportCsv=()=>{let h=new URLSearchParams(Object.entries(e.query).filter(([,b])=>b!==""&&b!==!1&&b!=null));h.set("format","csv"),h.set("limit","10000"),window.open("/api/admin/users?"+h.toString(),"_blank")},e.fetchError=null;function g(){e.fetchError=null,t.get("/api/admin/users",{params:e.query}).then(h=>{e.total=h.data.total,e.totalPage=Math.ceil(h.data.total/e.query.limit),e.users=h.data.results,e.statusCounts=h.data.statusCounts||[],e.allSelected=!1},h=>{e.fetchError=h&&h.data&&h.data.error||"Failed to load users",console.error(h)})}g();let w=null;e.watch("query",()=>{r.timeout.cancel(w),w=r.timeout(g,500);let{page:h,search:b,...E}=e.query;saveFilterPrefs(u,E),a()},!0),a()},Qa=function(e,t,n,r){let s=ct();e.watch("user.status",()=>{e.user==null&&n.url("/")}),e.user==null&&n.url("/"),e.userInfo,e.repositories=[],e.search="",e.selected={},e.allSelected=!1;let i="admin.user.filterPrefs",a={filters:{status:{ready:!0,expired:!0,removed:!0,error:!0,preparing:!0}},sort:"anonymizeDate",direction:"desc"},u=loadFilterPrefs(i)||{};e.filters={status:Object.assign({},a.filters.status,u.filters&&u.filters.status||{})},e.query={sort:u.sort||a.sort,direction:u.direction||a.direction},e.orderBy=(e.query.direction==="asc"?"":"-")+e.query.sort,e.sortBy=h=>{e.query.sort===h?e.query.direction=e.query.direction==="asc"?"desc":"asc":(e.query.sort=h,e.query.direction="desc"),e.orderBy=(e.query.direction==="asc"?"":"-")+e.query.sort},e.sortIcon=h=>e.query.sort===h?e.query.direction==="asc"?"fa-arrow-up":"fa-arrow-down":"",e.watch("query",()=>{saveFilterPrefs(i,{filters:e.filters,sort:e.query.sort,direction:e.query.direction})},!0),e.watch("filters",()=>{saveFilterPrefs(i,{filters:e.filters,sort:e.query.sort,direction:e.query.direction})},!0),e.statusCountFor=h=>(e.repositories||[]).filter(b=>b.status===h).length,e.repoFiler=h=>e.filters.status[h.status]==!1?!1:!!(e.search.trim().length==0||h.source.fullName.indexOf(e.search)>-1||h.repoId.indexOf(e.search)>-1||h.statusMessage&&h.statusMessage.indexOf(e.search)>-1||h.conference&&h.conference.indexOf(e.search)>-1),e.selectAllOnPage=()=>{e.allSelected=!e.allSelected,(e.filteredRepositories||e.repositories).forEach(h=>{e.selected[h.repoId]=e.allSelected})},e.selectedCount=()=>Object.values(e.selected||{}).filter(Boolean).length,e.selectedRepos=()=>e.repositories.filter(h=>e.selected[h.repoId]),e.bulkRefresh=()=>{let h=e.selectedRepos();h.length&&confirm(`Force refresh ${h.length} repositories?`)&&h.forEach(b=>e.updateRepository(b))},e.bulkRemoveCache=()=>{let h=e.selectedRepos();h.length&&confirm(`Purge cache for ${h.length} repositories?`)&&h.forEach(b=>e.removeCache(b))},e.clearSelection=()=>{e.selected={},e.allSelected=!1},e.exportCsv=()=>{let h=e.filteredRepositories||e.repositories,E=["repoId","status","statusMessage","pageView","anonymizeDate","source.fullName","conference","size.storage"].join(","),k=h.map(T=>[T.repoId,T.status,T.statusMessage||"",T.pageView||0,T.anonymizeDate||"",T.source&&T.source.fullName||"",T.conference||"",T.size&&T.size.storage||0].map(P=>{let H=String(P??"");return/[",\n\r]/.test(H)?'"'+H.replace(/"/g,'""')+'"':H}).join(",")),R=new Blob([E+` `+k.join(` -`)],{type:"text/csv"}),D=document.createElement("a");D.href=URL.createObjectURL(R),D.download=r.username+"-repositories.csv",D.click()},e.showStatusMessage=f=>{let b=f.statusMessage||"(no message)";window.prompt(`Status message for ${f.repoId} (${f.status}):`,b)},e.fetchGithubInfo=f=>{let b=window.open("","_blank");b&&b.document.write("
Loading GitHub info for "+f.repoId+"...
"),t.get("/api/admin/repos/"+f.repoId+"/github").then(C=>{b&&(b.document.open(),b.document.write('
'+JSON.stringify(C.data,null,2).replace(/[<>]/g,k=>k==="<"?"<":">")+"
"),b.document.close())},C=>{let k=C&&C.data?JSON.stringify(C.data,null,2):String(C);b&&(b.document.body.innerHTML='
'+k+"
")})};function m(f){t.get("/api/admin/users/"+f+"/repos",{}).then(b=>{e.repositories=b.data},b=>{console.error(b)})}function h(f){t.get("/api/admin/users/"+f,{}).then(b=>{e.userInfo=b.data},b=>{console.error(b)})}h(r.username),m(r.username),e.banUser=()=>{confirm(`Ban user ${r.username}?`)&&t.post(`/api/admin/users/${r.username}/ban`).then(()=>h(r.username),f=>console.error(f))},e.activateUser=()=>{t.post(`/api/admin/users/${r.username}/activate`).then(()=>h(r.username),f=>console.error(f))},e.promoteUser=()=>{confirm(`Promote ${r.username} to admin?`)&&t.post(`/api/admin/users/${r.username}/promote`).then(()=>h(r.username),f=>console.error(f))},e.demoteUser=()=>{confirm(`Remove admin privileges from ${r.username}?`)&&t.post(`/api/admin/users/${r.username}/demote`).then(()=>h(r.username),f=>console.error(f))},e.tokens=[],e.tokenForm={name:"",plaintext:null};function v(){t.get("/api/admin/tokens").then(f=>{e.tokens=f.data||[]},f=>{f.status!==401&&f.status!==403&&console.error(f)})}v(),e.createToken=()=>{e.tokenForm.name&&t.post("/api/admin/tokens",{name:e.tokenForm.name}).then(f=>{e.tokenForm.plaintext=f.data.token,e.tokenForm.name="",v()},f=>console.error(f))},e.revokeToken=f=>{confirm(`Revoke token "${f.name}"?`)&&t.delete("/api/admin/tokens/"+f.id).then(()=>v(),b=>console.error(b))},e.removeCache=f=>{confirm("Remove cached files for "+f.repoId+"?")&&t.delete("/api/admin/repos/"+f.repoId).then(()=>m(r.username),b=>console.error(b))},e.removeRepository=f=>{confirm("Remove repository "+f.repoId+"?")&&t.delete("/api/repo/"+f.repoId+"/").then(()=>m(r.username),b=>console.error(b))},e.updateRepository=f=>{let b=He({title:`Refreshing ${f.repoId}...`,date:new Date,body:`The repository ${f.repoId} is going to be refreshed.`});e.toasts.push(b),t.post(`/api/repo/${f.repoId}/refresh`).then(C=>{C.data.status=="ready"?b.title=`${f.repoId} is refreshed.`:b.title=`Refreshing of ${f.repoId}.`},C=>{b.title=`Error during the refresh of ${f.repoId}.`,b.body=C.body})},e.getGitHubRepositories=f=>{t.get(`/api/user/${e.userInfo.username}/all_repositories`,{params:{force:"1"}}).then(b=>{e.userInfo.repositories=b.data})};let w=null;e.watch("query",()=>{s.timeout.cancel(w),w=s.timeout(()=>{m(r.username)},500)},!0)},Xa=function(e,t,n){let r=ct(),s=Kt();e.Math=Math,e.watch("user.status",()=>{e.user==null&&n.url("/")}),e.user==null&&n.url("/"),e.conferences=[],e.total=-1,e.totalPage=0,e.statusCounts=[];let i=C=>{if(C.key==="/"&&!["INPUT","TEXTAREA","SELECT"].includes(document.activeElement?.tagName)){C.preventDefault();let k=document.querySelector('.admin-filter-toolbar input[type="search"]');k&&k.focus()}};s(document,"keydown",i),e.on("dispose",()=>document.removeEventListener("keydown",i)),e.clearFilter=C=>{C==="dateRange"?(e.query.dateFrom="",e.query.dateTo=""):e.query[C]="",e.query.page=1},e.chips=[];let a=()=>{let C=[];(e.query.dateFrom||e.query.dateTo)&&C.push({key:"dateRange",label:"Date",value:(e.query.dateFrom||"\u2026")+" \u2013 "+(e.query.dateTo||"\u2026")}),e.chips=C};e.statusCountFor=C=>{let k=(e.statusCounts||[]).find(R=>R._id===C);return k?k.count:0},e.toggleSortDirection=()=>{e.query.direction=e.query.direction==="asc"?"desc":"asc"},e.sortBy=C=>{e.query.sort===C?e.query.direction=e.query.direction==="asc"?"desc":"asc":(e.query.sort=C,e.query.direction="desc"),e.query.page=1},e.sortIcon=C=>e.query.sort===C?e.query.direction==="asc"?"fa-arrow-up":"fa-arrow-down":"";let u="admin.conferences.filterPrefs",m={page:1,limit:25,sort:"name",direction:"asc",search:"",dateFrom:"",dateTo:"",ready:!1,expired:!1,removed:!1,error:!0,preparing:!0},h=loadFilterPrefs(u)||{};e.query=Object.assign({},m,h,{page:1,search:""});let v=n.search();v.search&&(e.query.search=v.search);let w="admin.conferences.presets";e.presets=JSON.parse(localStorage.getItem(w)||"[]"),e.savePreset=()=>{let C=window.prompt("Preset name:");if(!C)return;let k=Object.assign({},e.query);delete k.page,e.presets=(e.presets||[]).filter(R=>R.name!==C),e.presets.push({name:C,query:k}),localStorage.setItem(w,JSON.stringify(e.presets))},e.applyPreset=C=>{Object.assign(e.query,C.query,{page:1})},e.deletePreset=C=>{e.presets=(e.presets||[]).filter(k=>k.name!==C.name),localStorage.setItem(w,JSON.stringify(e.presets))},e.removeConference=C=>{confirm("Remove conference "+C.conferenceID+"?")&&t.delete("/api/admin/conferences/"+C.conferenceID).then(()=>f(),k=>console.error(k))},e.exportCsv=()=>{let C=new URLSearchParams(Object.entries(e.query).filter(([,k])=>k!==""&&k!==!1&&k!=null));C.set("format","csv"),C.set("limit","10000"),window.open("/api/admin/conferences?"+C.toString(),"_blank")},e.fetchError=null;function f(){e.fetchError=null,t.get("/api/admin/conferences",{params:e.query}).then(C=>{e.total=C.data.total,e.totalPage=Math.ceil(C.data.total/e.query.limit),e.conferences=C.data.results,e.statusCounts=C.data.statusCounts||[]},C=>{e.fetchError=C&&C.data&&C.data.error||"Failed to load conferences",console.error(C)})}f();let b=null;e.watch("query",()=>{r.timeout.cancel(b),b=r.timeout(f,500);let{page:C,search:k,...R}=e.query;saveFilterPrefs(u,R),a()},!0),a()},Za=function(e,t,n,r,s){let i=ct();e.watch("user.status",()=>{e.user==null&&n.url("/")}),e.user==null&&n.url("/"),e.queueList=[],e.jobs=[],e.selectedQueue="download",e.selectedStats=null,e.range="1h",e.allStates=["active","waiting","delayed","failed","completed"],e.stateFilter={active:!0,waiting:!0,delayed:!0,failed:!0,completed:!0},e.query={search:"",autoRefresh:!0},e.filteredJobs=()=>(e.jobs||[]).filter(k=>e.stateFilter[k._state]),e.jobProgressPct=k=>k&&k.progress&&typeof k.progress=="object"&&typeof k.progress.percent=="number"?Math.max(0,Math.min(100,Math.round(k.progress.percent))):typeof k.progress=="number"?Math.max(0,Math.min(100,Math.round(k.progress))):null,e.jobDuration=k=>{if(!k.processedOn)return"-";let D=(k.finishedOn||Date.now())-k.processedOn;return D<1e3?D+"ms":(D/1e3).toFixed(1)+"s"},e.metricsPoints=[],e.selectQueue=k=>{e.selectedQueue=k,a(),u()},e.setRange=k=>{e.range=k,u()};function a(){let k={queue:e.selectedQueue,search:e.query.search};t.get("/api/admin/queues",{params:k}).then(R=>{e.queueList=R.data.queues||[],e.jobs=R.data.jobs||[],e.selectedStats=e.queueList.find(D=>D.key===e.selectedQueue)||e.queueList[0]||null},R=>console.error(R))}function u(){t.get("/api/admin/queues/metrics",{params:{queue:e.selectedQueue,range:e.range}}).then(k=>{e.metricsPoints=k.data.points||[],s(f,0)},k=>console.error(k))}a(),u();let m=r(()=>{e.query.autoRefresh&&(a(),u())},15e3);e.on("dispose",()=>r.cancel(m)),e.refreshNow=function(){a(),u()};function h(k){let R=k&&k.data&&(k.data.message||k.data.error)||"Request failed";e.actionError=R,s(()=>{e.actionError=null},5e3),console.error(k)}e.actionError=null,e.removeJob=k=>{t.delete(`/api/admin/queue/${e.selectedQueue}/${k.id}`).then(a,h)},e.retryJob=k=>{t.post(`/api/admin/queue/${e.selectedQueue}/${k.id}`).then(a,h)},e.retryFailed=()=>{confirm(`Retry all failed jobs in ${e.selectedQueue}?`)&&t.post(`/api/admin/queue/${e.selectedQueue}/retry-failed`).then(a,k=>console.error(k))},e.drainSelected=()=>{confirm(`Drain the ${e.selectedQueue} queue?`)&&t.post(`/api/admin/queue/${e.selectedQueue}/drain`).then(a,k=>console.error(k))},e.togglePause=()=>{let k=e.selectedStats&&e.selectedStats.paused?"resume":"pause";t.post(`/api/admin/queue/${e.selectedQueue}/${k}`).then(a,R=>console.error(R))},e.emptyQueue=()=>{confirm(`Empty the ${e.selectedQueue} queue? This removes ALL jobs.`)&&t.post(`/api/admin/queue/${e.selectedQueue}/empty`).then(a,k=>console.error(k))},e.pauseAll=()=>{confirm("Pause all queues?")&&t.post("/api/admin/queues/pause-all").then(a,k=>console.error(k))};let v=null;e.watch("query.search",()=>{i.timeout.cancel(v),v=i.timeout(a,350)}),e.expanded={},e.toggleJob=k=>{e.expanded[k.id]=!e.expanded[k.id]},e.humanTime=k=>{if(!k)return"";let R=new Date(k);return R.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})+" "+R.toLocaleDateString([],{month:"short",day:"numeric"})},e.delayCountdown=k=>{if(!k)return"";var R=Math.max(0,Math.ceil((k-Date.now())/1e3));if(R<=0)return"resuming soon";var D=Math.floor(R/60),T=R%60;return"in "+(D>0?D+"m "+T+"s":T+"s")};function w(k){if(k<=0)return{ticks:[0],niceMax:1};let R=Math.pow(10,Math.floor(Math.log10(k))),D=R;k/D<2?D=R/2:k/D>5&&(D=R*2);let T=Math.ceil(k/D)*D,V=[];for(let _=0;_<=T;_+=D)V.push(_);return{ticks:V,niceMax:T}}function f(){var k=document.getElementById("q-throughput-chart");if(!k)return;var R=k.getContext("2d"),D=window.devicePixelRatio||1,T=k.parentElement.getBoundingClientRect(),V=44,_=50,O=20,I=T.width-40,J=180,Y=I-V-_,K=J-O;k.width=I*D,k.height=J*D,k.style.width=I+"px",k.style.height=J+"px",R.setTransform(D,0,0,D,0,0);var B=document.body.classList.contains("dark-mode"),ae="#8A857C",oe=B?"rgba(255,255,255,0.06)":"rgba(0,0,0,0.06)",ne=B?"#A7B2FF":"#3B4AD6",ue=B?"rgba(167,178,255,0.12)":"rgba(59,74,214,0.08)",he=B?"#F08A82":"#B42318",ve=B?"rgba(240,138,130,0.08)":"rgba(180,35,24,0.06)",me=B?"#F5C842":"#B8860B",ie=e.metricsPoints||[];if(ie.length===0){R.fillStyle=ae,R.font="12px monospace",R.textAlign="center",R.fillText("No metrics data yet",I/2,J/2),b=null;return}var Pe=ie.map(function(L){return L.completed}),Ee=ie.map(function(L){return L.failed}),Se=ie.map(function(L){return L.avgMs}),Ce=ie.length,Te=Y/(Ce-1||1),Ve=Math.max(1,Math.max.apply(null,Pe),Math.max.apply(null,Ee)),Ue=w(Ve),Fe=Math.max.apply(null,Se),U=Fe>0?w(Fe):{ticks:[0],niceMax:1},te=function(L){return K-L/Ue.niceMax*(K-10)},F=function(L){return K-L/U.niceMax*(K-10)},E=function(L){return V+L*Te};R.textAlign="right",R.textBaseline="middle",R.font="10px monospace",Ue.ticks.forEach(function(L){var X=te(L);R.strokeStyle=oe,R.lineWidth=1,R.beginPath(),R.moveTo(V,X),R.lineTo(I-_,X),R.stroke(),R.fillStyle=ae,R.fillText(L>=1e3?(L/1e3).toFixed(1)+"k":String(L),V-6,X)}),Fe>0&&(R.textAlign="left",U.ticks.forEach(function(L){var X=F(L);R.fillStyle=me,R.fillText(L>=1e3?(L/1e3).toFixed(1)+"s":L+"ms",I-_+6,X)}));var P=Date.now(),M=Math.min(6,Ce);R.textAlign="center",R.textBaseline="top";for(var z=0;z0&&(R.beginPath(),Se.forEach(function(L,X){var x=E(X),Z=F(L);if(X===0)R.moveTo(x,Z);else{var G=(E(X-1)+x)/2;R.bezierCurveTo(G,F(Se[X-1]),G,Z,x,Z)}}),R.strokeStyle=me,R.lineWidth=1,R.setLineDash([4,3]),R.stroke(),R.setLineDash([])),b={pts:ie,maxLen:Ce,marginLeft:V,step:Te,totalW:I,toX:E}}var b=null;function C(){var k=document.getElementById("q-throughput-chart");if(!(!k||k._tipBound)){k._tipBound=!0;var R=document.getElementById("q-chart-tooltip"),D=document.getElementById("q-chart-crosshair");k.addEventListener("mousemove",function(T){if(!(!b||!R||!D)){var V=b,_=k.getBoundingClientRect(),O=T.clientX-_.left,I=Math.round((O-V.marginLeft)/V.step);if(I<0||I>=V.maxLen){R.style.display="none",D.style.display="none";return}var J=V.pts[I],Y=Date.now(),K=Math.round((Y-J.ts)/6e4),B;if(K<=0)B="now";else if(K<60)B=K+"m ago";else if(K<1440){var ae=Math.floor(K/60),oe=K%60;B=ae+"h"+(oe?" "+oe+"m":"")+" ago"}else B=Math.round(K/1440)+"d ago";var ne='
'+B+'
● completed: '+J.completed+'/min
● failed: '+J.failed+"/min
";if(J.avgMs>0){var ue=J.avgMs>=1e3?(J.avgMs/1e3).toFixed(1)+"s":J.avgMs+"ms";ne+='
● avg time: '+ue+"
"}R.innerHTML=ne;var he=V.toX(I),ve=R.offsetWidth,me=he+10;me+ve>V.totalW&&(me=he-ve-10),R.style.display="block",R.style.left=me+"px",R.style.top="8px",D.style.display="block",D.style.left=he+"px"}}),k.addEventListener("mouseleave",function(){R&&(R.style.display="none"),D&&(D.style.display="none")})}}e.watch("metricsPoints",function(){s(C,50)})},xa=function(e,t,n,r){let s=ct();e.watch("user.status",()=>{e.user==null&&n.url("/")}),e.user==null&&n.url("/"),e.entries=[],e.visible=[],e.available=!0,e.cap=1e3,e.total=0,e.pageSize=250,e.expanded={},e.detailTab={},e.copyHint="",e.parsedFilterCount=0,e.stats={last24h:0,prev24h:0,delta:0,severity:{error:0,warn:0,info:0},unique:{error:0,warn:0,info:0},buckets:[],dropped:0},e.query={search:"",bucket:"",sort:"recent",group:"code",autoRefresh:!0},e.relTime=D=>{if(!D)return"";let T=new Date(D).getTime();if(isNaN(T))return D;let V=Math.max(0,Date.now()-T),_=Math.floor(V/1e3);if(_<5)return"just now";if(_<60)return`${_}s ago`;let O=Math.floor(_/60);if(O<60)return`${O}m ago`;let I=Math.floor(O/60);if(I<24)return`${I}h ago`;let J=Math.floor(I/24);return J<7?`${J}d ago`:new Date(D).toLocaleDateString()},e.absTime=D=>{if(!D)return"";let T=new Date(D);return isNaN(T.getTime())?D:T.toLocaleString()},e.absTimeShort=D=>{if(!D)return"";let T=new Date(D);return isNaN(T.getTime())?D:T.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})};let i=/^[a-zA-Z][a-zA-Z0-9]*(?:_[a-zA-Z0-9]+)+$/;function a(D,T){let V=D&&(D.httpStatus||D.status)||null;if(typeof V=="number"){if(V>=500)return"error";if(V===401||V===403||V===404)return"info";if(V>=400)return"warn"}return T==="error"?"error":T==="warn"?"warn":"info"}function u(D){let T=(D.raw||[]).find(I=>I&&typeof I=="object"&&!Array.isArray(I));if(T){T.message&&i.test(T.message)?(D.displayMessage=T.message,D.displayContext=D.message):T.code&&i.test(String(T.code))?(D.displayMessage=String(T.code),D.displayContext=D.message):T.name&&T.name!=="AnonymousError"&&T.name!=="Error"?(D.displayMessage=T.name,D.displayContext=T.message||D.message):D.displayMessage=D.message,D._status=T.httpStatus||T.status||null,D._url=T.url||null,D._method=T.method||null,D._repoId=T.repoId||T.detail||null,D._detail=T.detail&&T.detail!==D._repoId?T.detail:null;let I=typeof T.stack=="string"?T.stack:null;for(var V=[T.cause,T.err].filter(Boolean),_=0;!I&&_{K==null||K===""||V.push([Y,K])};_("name",T&&T.name),_("code",D.displayMessage||T&&T.message),D._bucket&&_("kind",D._bucket),_("httpStatus",T&&T.httpStatus),T&&T.status&&!T.httpStatus&&_("status",T.status),_("module",D.module);let O=T&&T.detail;if(typeof O=="string"){let Y=O.trim();if(Y[0]==="{"||Y[0]==="[")try{O=JSON.parse(O)}catch{}}if(_("detail",O),_("repoId",T&&T.repoId),_("filePath",T&&T.filePath),_("upstreamStatus",T&&T.upstreamStatus),_("upstreamBody",T&&T.upstreamBody),_("url",D._url),_("err",T&&T.err),_("cause",T&&!T.err&&T.cause),_("ts",D.ts),!V.length)return JSON.stringify(D,null,2);let I=V.reduce((Y,K)=>Math.max(Y,K[0].length),0),J=["{"];return V.forEach(([Y,K],B)=>{let oe=` ${`"${Y}":`.padEnd(I+3," ")} `,ne=Bme===0?ve:he+ve).join(` -`)}else typeof K=="number"||typeof K=="boolean"?ue=String(K):ue=JSON.stringify(K);J.push(`${oe}${ue}${ne}`)}),J.push("}"),J.join(` -`)}function h(D){let T=[],V="",_=/(\w+):(>=|<=|!=|>|<|=)?([^\s]+)/g,O=0,I;for(;I=_.exec(D);)V+=D.slice(O,I.index),O=_.lastIndex,T.push({key:I[1],op:I[2]||"=",val:I[3]});return V+=D.slice(O),{filters:T,free:V.trim().toLowerCase()}}function v(D,T){for(let V of T.filters){let _=(I,J,Y)=>{let K=parseFloat(I),B=parseFloat(J);return Y==="="?String(I)===String(J):Y==="!="?String(I)!==String(J):Y===">="?K>=B:Y==="<="?K<=B:Y===">"?K>B:Y==="<"?KT&&O._bucket!==T?!1:v(O,D)),_=e.query.group;if(_){let O=Y=>_==="module"?Y.module:Y.displayMessage||Y.message||"_",I=new Map;for(let Y of V){let K=O(Y);if(I.has(K)){let B=I.get(K);B.count++,B._related.push(Y),new Date(Y.ts)>new Date(B.ts)&&(B.ts=Y.ts,B._url=Y._url,B._status=Y._status),new Date(Y.ts)new Date(K.ts).getTime()>=J).length;V=Array.from(I.values())}else V=V.map((O,I)=>(O._key="row:"+I+":"+O.ts,O._related=[O],O._firstSeen=O.ts,O._lastHourCount=0,O.count=1,O));e.query.sort==="count"?V.sort((O,I)=>I.count-O.count||new Date(I.ts)-new Date(O.ts)):V.sort((O,I)=>new Date(I.ts)-new Date(O.ts)),e.visible=V}function f(D){let T=D?e.entries.length:0,V=D?e.pageSize:Math.max(e.pageSize,e.entries.length||e.pageSize);t.get("/api/admin/errors",{params:{offset:T,limit:V}}).then(_=>{let O=(_.data.entries||[]).map(u);e.entries=D?e.entries.concat(O):O,e.available=!!_.data.available,e.cap=_.data.max||e.cap,e.total=_.data.total||e.entries.length,w()},_=>console.error(_))}e.loadMore=()=>f(!0),e.canLoadMore=()=>e.entries.length{let T=D.data||{},V=T.prev24h?Math.round((T.last24h-T.prev24h)/T.prev24h*100):0;e.stats={last24h:T.last24h||0,prev24h:T.prev24h||0,delta:V,severity:T.severity||{error:0,warn:0,info:0},unique:T.unique||{error:0,warn:0,info:0},buckets:T.buckets||[],dropped:T.dropped||0}},D=>console.error(D))}function C(){f(),b()}e.barPx=(D,T)=>{let V=e.stats.buckets||[],_=0;for(let Y of V)_=Math.max(_,(Y.error||0)+(Y.warn||0)+(Y.info||0));if(!_)return 0;let O=(D.error||0)+(D.warn||0)+(D.info||0);if(!O)return 0;let I=Math.round(O/_*60),J=D[T]||0;return Math.round(J/O*I)},e.bucketTitle=D=>`${new Date(D.hour).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})} \xB7 ${D.error||0} err \xB7 ${D.warn||0} warn \xB7 ${D.info||0} info`,e.toggle=D=>{e.expanded[D._key]=!e.expanded[D._key]},e.setBucket=D=>{e.query.bucket=D},e.refreshNow=C,e.clearAll=()=>{confirm("Clear all captured errors?")&&t.delete("/api/admin/errors").then(C,D=>console.error(D))},e.exportCsv=()=>{let D=["ts","level","module","displayMessage","_status","_url","_repoId"],T=[D.join(",")];for(let I of e.visible)T.push(D.map(J=>{let Y=I[J]==null?"":String(I[J]);return/[",\n]/.test(Y)?`"${Y.replace(/"/g,'""')}"`:Y}).join(","));let V=new Blob([T.join(` -`)],{type:"text/csv;charset=utf-8"}),_=URL.createObjectURL(V),O=document.createElement("a");O.href=_,O.download=`errors-${new Date().toISOString().slice(0,19)}.csv`,document.body.appendChild(O),O.click(),document.body.removeChild(O),URL.revokeObjectURL(_)};function k(D){e.copyHint=`${D} copied`,s.timeout(()=>{e.copyHint=""},1500)}e.copyJson=D=>{navigator.clipboard.writeText(D._detailJson).then(()=>k("JSON"))},e.copyCurl=D=>{if(!D._url)return;let V=`curl -X ${D._method||"GET"} '${window.location.origin}${D._url}'`;navigator.clipboard.writeText(V).then(()=>k("curl"))},C();let R=r(()=>{e.query.autoRefresh&&C()},15e3);e.on("dispose",()=>r.cancel(R)),e.watch("query.search",w),e.watch("query.bucket",w),e.watch("query.sort",w),e.watch("query.group",w)},el=function(e,t,n,r){if(e.Math=Math,e.watch("user.status",()=>{e.user==null&&n.url("/")}),e.user==null){n.url("/");return}e.data=null,e.loading=!0,e.error=null;function s(f){if(f==null)return"\u2014";for(var b=["B","KB","MB","GB","TB"],C=0,k=f;k>=1024&&C0?1:0)+" "+b[C]}e.humanBytes=s;function i(f){if(!f)return"\u2014";var b=Math.floor(f/86400),C=Math.floor(f%86400/3600),k=Math.floor(f%3600/60);return b>0?b+"d "+(C<10?"0":"")+C+"h":C>0?C+"h "+(k<10?"0":"")+k+"m":k+"m"}e.humanDuration=i;function a(f){return f==null?"\u2014":f>=1e6?(f/1e6).toFixed(1)+"M":f>=1e3?(f/1e3).toFixed(1)+"K":String(f)}e.humanNum=a,e.queueTotal=function(f){return f?(f.waiting||0)+(f.active||0)+(f.delayed||0)+(f.failed||0):0},e.statusCount=function(f){if(!e.data||!e.data.repos)return 0;for(var b=e.data.repos.statusBreakdown||[],C=0;Ch[C])&&(h[C]=b[C])})})},function(f){e.loading=!1,e.error=f.data&&f.data.error||"Failed to load overview"})}v();var w=r(v,3e4);e.on("dispose",function(){r.cancel(w)})};var tl=[{path:"/connections",template:"partials/connections.htm",title:"GitHub connections \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Wa(e,t.http)},{path:"/signin",template:"partials/signin.htm",title:"Sign in \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Ka(e,t.http)},{path:"/",template:"partials/home.htm",title:"Anonymous GitHub \u2013 Share the code, not the author",preserveExplorer:!1,setup:(e,t)=>Ua(e,t.http,t.location,t.window,t.timeout)},{path:"/dashboard",template:"partials/dashboard.htm",title:"Your anonymizations \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Fa(e,t.http,t.location,t.promises,t.window,t.quotaService)},{path:"/pr-dashboard",redirect:"/dashboard"},{path:"/anonymize/:repoId?",template:"partials/anonymize.htm",title:"New anonymization \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>en(e,t.http,t.html,t.params,t.location,t.translate,t.timeout)},{path:"/pull-request-anonymize/:pullRequestId?",template:"partials/anonymize.htm",title:"Anonymize a pull request \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>en(e,t.http,t.html,t.params,t.location,t.translate,t.timeout)},{path:"/gist-anonymize/:gistId?",template:"partials/anonymize.htm",title:"Anonymize a gist \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>en(e,t.http,t.html,t.params,t.location,t.translate,t.timeout)},{path:"/status/:repoId",template:"partials/status.htm",title:"Repository status \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>za(e,t.http,t.params)},{path:"/conferences",template:"partials/conferences.htm",title:"Your conferences \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>ja(e,t.http,t.location)},{path:"/conference/new",template:"partials/newConference.htm",title:"New conference \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>or(e,t.http,t.location,t.params)},{path:"/conference/:conferenceId/edit",template:"partials/newConference.htm",title:"Edit conference \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>or(e,t.http,t.location,t.params)},{path:"/conference/:conferenceId",template:"partials/conference.htm",title:"Conference \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Ga(e,t.http,t.location,t.params)},{path:"/faq",template:"partials/faq.htm",title:"FAQ \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Ma(e,t.http)},{path:"/profile",template:"partials/profile.htm",title:"Your settings \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>$a(e,t.http,t.translate,t.timeout,t.quotaService)},{path:"/claim",template:"partials/claim.htm",title:"Claim an anonymization \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>La(e,t.http,t.location)},{path:"/pr/:pullRequestId/:path(.*)*",template:"partials/pullRequest.htm",title:"Anonymous pull request \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Ha(e,t.http,t.location,t.params,t.html)},{path:"/gist/:gistId/:path(.*)*",template:"partials/gist.htm",title:"Anonymous gist \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Ba(e,t.http,t.location,t.params,t.html)},{path:"/r/:repoId/:path(.*)*",template:"partials/explorer.htm",title:"Anonymous repository \u2013 Anonymous GitHub",preserveExplorer:!0,setup:(e,t)=>tr(e,t.http,t.location,t.params,t.html,t.promises)},{path:"/repository/:repoId/:path(.*)*",template:"partials/explorer.htm",title:"Anonymous repository \u2013 Anonymous GitHub",preserveExplorer:!0,setup:(e,t)=>tr(e,t.http,t.location,t.params,t.html,t.promises)},{path:"/admin/",template:"partials/admin/overview.htm",title:"Admin \xB7 Overview \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>el(e,t.http,t.location,t.interval)},{path:"/admin/repositories",template:"partials/admin/repositories.htm",title:"Admin \xB7 Repositories \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Ya(e,t.http,t.location)},{path:"/admin/users",template:"partials/admin/users.htm",title:"Admin \xB7 Users \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Ja(e,t.http,t.location)},{path:"/admin/users/:username",template:"partials/admin/user.htm",title:"Admin \xB7 User details \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Qa(e,t.http,t.location,t.params)},{path:"/admin/conferences",template:"partials/admin/conferences.htm",title:"Admin \xB7 Conferences \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Xa(e,t.http,t.location)},{path:"/admin/queues",template:"partials/admin/queues.htm",title:"Admin \xB7 Queues \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Za(e,t.http,t.location,t.interval,t.timeout)},{path:"/admin/errors",template:"partials/admin/errors.htm",title:"Admin \xB7 Errors \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>xa(e,t.http,t.location,t.interval)},{path:"/404",template:"partials/404.htm",title:"Page not found \u2013 Anonymous GitHub",preserveExplorer:!1,setup:()=>{}},{path:"/:pathMatch(.*)*",template:"partials/404.htm",title:"Page not found \u2013 Anonymous GitHub",setup:()=>{}}];var sp={class:"container paper-page connections-page"},np={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},rp={key:1,role:"status"},ip=["disabled"],ap={key:3},lp={class:"connections-grid"},dp={key:0},up={class:"connection-title"},cp={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},pp={class:"connection-actions"},fp={key:0,class:"btn btn-ink",target:"_self",href:"/github/app/install"},mp={key:1,class:"connection-installations"},hp={key:0},vp=["href"],gp={class:"sr-only"},yp=["disabled"],bp={class:"connection-title"},wp={key:0,target:"_self",href:"/github/login",class:"btn btn-outline-ink"},kp={key:1,class:"connection-revoke"},Ep={key:0},Cp=["disabled"],_p={class:"connection-resources"},Sp={class:"connection-title"},Np={class:"connection-count"},Dp={key:0,class:"connection-empty"},Rp={class:"connection-resource-name"},Tp={key:0,class:"connection-resource-actions"},Ap=["disabled","onClick"],Op=["disabled","onClick"],Ip={key:1,class:"connection-help",role:"status"},Pp=["disabled","onClick"];function ol(e,t){return l(),d("div",sp,[t[20]||(t[20]=le('
My work / GitHub connections

GitHub connections

Manage how GitHub shares your code. Your anonymizations and URLs stay the same.

',2)),e.connectionError?(l(),d("p",np,c(e.connectionError),1)):p("v-if",!0),!e.connections&&!e.connectionError?(l(),d("p",rp,"Loading your connections\u2026")):p("v-if",!0),!e.connections&&e.connectionError?(l(),d("button",{key:2,class:"btn btn-outline-ink",disabled:e.busy,onClick:t[0]||(t[0]=n=>e.loadConnections())},"Try again",8,ip)):p("v-if",!0),e.connections?(l(),d("div",ap,[o("div",lp,[e.connections.appEnabled?(l(),d("section",dp,[t[8]||(t[8]=o("div",{class:"connection-top"},[o("i",{class:"fab fa-github","aria-hidden":"true"}),o("span",{class:"connection-badge"},"Recommended")],-1)),o("div",up,[t[3]||(t[3]=o("h2",null,"GitHub App",-1)),o("span",{class:A(["connection-status",{"is-connected":e.connections.appConnected&&!e.connections.appError}])},c(e.connections.appError?"Needs attention":e.connections.appConnected?"Connected":"Not connected"),3)]),t[9]||(t[9]=o("p",null,"Read-only access to the repositories you choose.",-1)),e.connections.appError?(l(),d("p",cp,c(e.connections.appError)+". Reconnect to restore access.",1)):p("v-if",!0),o("div",pp,[e.connections.appConnected&&!e.connections.appError?(l(),d("a",fp,[...t[4]||(t[4]=[g("Manage repository access ",-1),o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-external-link"})],-1)])])):p("v-if",!0),o("a",{class:A(e.connections.appConnected&&!e.connections.appError?"connection-link":"btn btn-ink"),target:"_self",href:"/github/app/login"},c(e.connections.appConnected?"Reconnect account":"Connect GitHub account"),3)]),t[10]||(t[10]=o("p",{class:"connection-help"},"Choose repositories on GitHub. Organization access may need an administrator's approval.",-1)),e.connections.installations?.length?(l(),d("ul",mp,[(l(!0),d(Q,null,se(e.connections.installations,n=>(l(),d("li",{key:n.id},[o("div",null,[o("strong",null,c(n.account),1),n.suspended?(l(),d("span",hp," \xB7 Suspended")):p("v-if",!0)]),o("a",{target:"_self",href:"/github/app/install?installationId="+n.id},[t[5]||(t[5]=g("Manage access ",-1)),o("span",gp,"for "+c(n.account),1),t[6]||(t[6]=g(" \u2192",-1))],8,vp)]))),128))])):p("v-if",!0),o("button",{class:"connection-link",disabled:e.busy,onClick:t[1]||(t[1]=n=>e.loadConnections())},[...t[7]||(t[7]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-refresh"})],-1),g(" Refresh access",-1)])],8,yp)])):p("v-if",!0),o("section",null,[t[13]||(t[13]=o("div",{class:"connection-top"},[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-key"})]),o("span",{class:"connection-badge connection-badge-muted"},"Legacy")],-1)),o("div",bp,[t[11]||(t[11]=o("h2",null,"GitHub OAuth",-1)),o("span",{class:A(["connection-status",{"is-connected":e.connections.oauthConnected}])},c(e.connections.oauthConnected?"Connected":"Not connected"),3)]),t[14]||(t[14]=o("p",null,"For existing OAuth anonymizations and gists.",-1)),t[15]||(t[15]=o("p",{class:"connection-help"},"This connection uses GitHub's broader repository permissions. Existing work keeps using it until you switch below.",-1)),e.connections.oauthEnabled?(l(),d("a",wp,c(e.connections.oauthConnected?"Reconnect OAuth":"Connect legacy OAuth"),1)):p("v-if",!0),e.connections.oauthConnected?(l(),d("div",kp,[e.connections.gistCount?(l(),d("p",Ep,c(e.connections.gistCount)+" gist(s) still require OAuth.",1)):p("v-if",!0),t[12]||(t[12]=o("p",null,"Switch all dependent repositories before revoking access. Gists still require OAuth.",-1)),e.connections.appConnected?(l(),d("button",{key:1,class:"connection-link connection-danger",disabled:e.busy||e.connections.gistCount||e.connections.resources.some(n=>n.connection==="oauth"),onClick:t[2]||(t[2]=n=>e.disconnectOAuth())},"Revoke OAuth access",8,Cp)):p("v-if",!0)])):p("v-if",!0)])]),o("section",_p,[o("div",Sp,[t[16]||(t[16]=o("h2",null,"Repository connections",-1)),o("span",Np,c(e.connections.resources?.length||0)+" resources",1)]),t[18]||(t[18]=o("p",null,"Check access, then switch each resource to the GitHub App. After reinstalling the App, reconnect existing resources here to keep their anonymous URLs and published snapshots.",-1)),e.connections.resources?.length?p("v-if",!0):(l(),d("div",Dp,[...t[17]||(t[17]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-type-repo"})],-1),o("div",null,[o("h3",null,"No repository connections yet"),o("p",null,"Your repositories and pull requests will appear here once you anonymize them.")],-1),o("a",{class:"connection-link",href:"/anonymize"},"New anonymization \u2192",-1)])])),(l(!0),d(Q,null,se(e.connections.resources,n=>(l(),d("div",{class:"connection-resource",key:n.type+n.id},[o("div",Rp,[o("strong",null,c(n.name||n.id),1),o("small",null,c(n.type)+" \xB7 "+c(n.id),1)]),o("span",{class:A(["connection-badge",{"connection-badge-muted":n.connection==="oauth"}])},c(n.connection==="github-app"?"Read-only App":"Legacy OAuth"),3),!["archived","removed","preparing","queue","removing","expiring"].includes(n.status)&&(n.status!=="download"||n.type==="pull-request"&&(!n.statusDate||new Date(n.statusDate).getTime()<=Date.now()-3e5))&&e.connections.appEnabled&&e.connections.appConnected?(l(),d("div",Tp,[o("button",{class:"btn btn-outline-ink",disabled:e.busy,onClick:r=>e.changeConnection(n,"github-app",!0)},"Check read-only access",8,Ap),n.eligible?(l(),d("button",{key:0,class:"btn btn-ink",disabled:e.busy,onClick:r=>e.changeConnection(n,"github-app",!1)},c(n.connection==="github-app"?"Reconnect read-only access":"Switch to read-only access"),9,Op)):p("v-if",!0),n.eligible===!1?(l(),d("span",Ip,"Access unavailable. Allow this repository on GitHub, then check again.")):p("v-if",!0)])):p("v-if",!0),!["archived","removed","preparing","queue","removing","expiring"].includes(n.status)&&(n.status!=="download"||n.type==="pull-request"&&(!n.statusDate||new Date(n.statusDate).getTime()<=Date.now()-3e5))&&n.connection==="github-app"&&e.connections.oauthConnected?(l(),d("button",{key:1,class:"connection-link",disabled:e.busy,onClick:r=>e.changeConnection(n,"oauth",!1)},"Use OAuth",8,Pp)):p("v-if",!0)]))),128)),t[19]||(t[19]=o("p",{class:"connection-footnote"},[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-info"})]),g(" Removing access stops new fetches from GitHub. Published content keeps its current expiration and removal settings.")],-1))])])):p("v-if",!0)])}var Vp={class:"container paper-page auth-page"},qp={class:"auth-layout"},Mp={class:"auth-options"},$p={key:0},Lp={key:0,class:"btn btn-ink auth-continue",target:"_self",href:"/github/login?recover=1"},Up={key:1},Fp={key:1},zp={key:2,class:"auth-legacy"},Hp={key:3,role:"status"};function sl(e,t){return l(),d("div",Vp,[t[5]||(t[5]=o("a",{class:"auth-back",href:"/"},[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-arrow-left"})]),g(" Anonymous GitHub")],-1)),o("div",qp,[t[4]||(t[4]=le('
Your research, ready for review

Your code.
Your identity,
protected.
Sign in to GitHub

Sign in to create and manage your anonymizations.

',1)),o("div",Mp,[e.accountRecovery?(l(),d("section",$p,[t[0]||(t[0]=o("h2",null,"Verify your existing account",-1)),t[1]||(t[1]=o("p",null,"We found an existing account. Verify it with your previous GitHub connection to keep your anonymizations. Future sign-ins will use the GitHub App.",-1)),e.site_options?.GITHUB_OAUTH_ENABLED?(l(),d("a",Lp,"Verify with previous GitHub connection")):(l(),d("p",Up,"Account verification is currently unavailable. Please try again later."))])):p("v-if",!0),e.site_options?.GITHUB_APP_ENABLED&&!e.accountRecovery?(l(),d("section",Fp,[...t[2]||(t[2]=[le('
Read-only access

Continue with GitHub

Connect through the GitHub App with read-only repository access.

  • You choose which repositories to share
  • No permission to write to your code
Sign in with GitHub Your existing anonymizations and connections stay with your account.',6)])])):p("v-if",!0),!e.site_options?.GITHUB_APP_ENABLED&&e.site_options?.GITHUB_OAUTH_ENABLED&&!e.accountRecovery?(l(),d("section",zp,[...t[3]||(t[3]=[o("div",{class:"connection-title"},[o("h2",null,"Continue with GitHub")],-1),o("p",null,"Sign in to access your account. GitHub OAuth includes write access to private repositories.",-1),o("a",{class:"connection-link",target:"_self",href:"/github/login"},[g("Sign in with GitHub "),o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-arrow-right"})])],-1)])])):p("v-if",!0),e.site_options&&!e.site_options.GITHUB_APP_ENABLED&&!e.site_options.GITHUB_OAUTH_ENABLED?(l(),d("p",Hp,"GitHub sign-in is currently unavailable. Please try again later.")):p("v-if",!0)])])])}var Bp={class:"paper-empty"};function nl(e,t){return l(),d("div",Bp,[...t[0]||(t[0]=[le('
Error \xB7 404

This link
isn\u2019t here.

The anonymous mirror you\u2019re looking for has expired, been removed by its owner, or never existed. If you received this URL from an author, ask them to re-issue it.

',1)])])}var jp={class:"container paper-page admin-page"},Gp={class:"admin-summary"},Wp={class:"summary-total"},Kp=["aria-pressed"],Yp={class:"count"},Jp=["aria-pressed"],Qp={class:"count"},Xp=["aria-pressed"],Zp={class:"count"},xp=["aria-pressed"],ef={class:"count"},tf=["aria-pressed"],of={class:"count"},sf={key:0,class:"alert alert-danger",style:{margin:"8px 0"}},nf={class:"w-100 admin-filter-toolbar","aria-label":"Conferences","accept-charset":"UTF-8"},rf={class:"admin-filter-row"},af={class:"search-wrap"},lf={type:"search",class:"form-control",placeholder:"Search conferences\u2026",autocomplete:"off"},df={key:0,class:"admin-search-hint"},uf={class:"admin-filter-inline","aria-label":"Pagination"},cf=["disabled"],pf={style:{"font-family":"var(--font-mono)","font-size":"12px",color:"var(--ink-muted)"}},ff=["disabled"],mf={key:0,class:"admin-filter-row"},hf={class:"admin-active-chips"},vf={class:"key"},gf=["onClick"],yf={class:"paper-table paper-table-conferences w-100",role:"table","aria-label":"Conferences"},bf={class:"paper-table-head",role:"row"},wf={role:"columnheader"},kf={role:"columnheader"},Ef={role:"columnheader"},Cf={class:"paper-table-row",role:"row"},_f={class:"cell-anon",role:"cell"},Sf={class:"anon-text"},Nf=["textContent","href"],Df={class:"anon-sub"},Rf={class:"cell-status",role:"cell"},Tf=["textContent"],Af={class:"cell-views num",role:"cell"},Of=["textContent","href"],If={class:"cell-expires",role:"cell"},Pf={class:"cell-actions",role:"cell"},Vf={class:"dropdown"},qf={class:"dropdown-menu dropdown-menu-right"},Mf=["href"],$f=["href"],Lf=["href"],Uf=["onClick"],Ff={key:0,class:"paper-table-empty"},zf={class:"admin-toolbar",style:{"justify-content":"space-between","border-bottom":"none"}},Hf={style:{"font-size":"12px",color:"var(--ink-muted)"}},Bf={key:0,class:"pagination-compact"},jf=["disabled"],Gf=["max"],Wf=["disabled"],Kf={class:"admin-filter-inline"},Yf={class:"form-control form-control-sm"};function rl(e,t){let n=ye("field"),r=ye("form");return l(),d("div",jp,[t[47]||(t[47]=le('
Admin \xA0/\xA0 Conferences

Conferences

',3)),o("div",Gp,[o("span",Wp,c(e.total>=0?e.fmt.number(e.total):"\u2026"),1),o("button",{type:"button",class:A(["summary-pill ok",{active:e.query?.ready}]),title:"Toggle ready filter",onClick:t[0]||(t[0]=s=>{e.query.ready=!e.query.ready,e.query.page=1}),"aria-pressed":!!e.query?.ready},[t[13]||(t[13]=g("Ready ",-1)),o("span",Yp,c(e.fmt?.number(e.statusCountFor("ready"))),1)],10,Kp),o("button",{type:"button",class:A(["summary-pill warn",{active:e.query?.preparing}]),title:"Toggle preparing filter",onClick:t[1]||(t[1]=s=>{e.query.preparing=!e.query.preparing,e.query.page=1}),"aria-pressed":!!e.query?.preparing},[t[14]||(t[14]=g("Preparing ",-1)),o("span",Qp,c(e.fmt?.number(e.statusCountFor("preparing"))),1)],10,Jp),o("button",{type:"button",class:A(["summary-pill error",{active:e.query?.error}]),title:"Toggle errored filter",onClick:t[2]||(t[2]=s=>{e.query.error=!e.query.error,e.query.page=1}),"aria-pressed":!!e.query?.error},[t[15]||(t[15]=g("Errored ",-1)),o("span",Zp,c(e.fmt?.number(e.statusCountFor("error"))),1)],10,Xp),o("button",{type:"button",class:A(["summary-pill",{active:e.query?.expired}]),title:"Toggle expired filter",onClick:t[3]||(t[3]=s=>{e.query.expired=!e.query.expired,e.query.page=1}),"aria-pressed":!!e.query?.expired},[t[16]||(t[16]=g("Expired ",-1)),o("span",ef,c(e.fmt?.number(e.statusCountFor("expired"))),1)],10,xp),o("button",{type:"button",class:A(["summary-pill",{active:e.query?.removed}]),title:"Toggle removed filter",onClick:t[4]||(t[4]=s=>{e.query.removed=!e.query.removed,e.query.page=1}),"aria-pressed":!!e.query?.removed},[t[17]||(t[17]=g("Removed ",-1)),o("span",of,c(e.fmt?.number(e.statusCountFor("removed"))),1)],10,tf)]),e.fetchError?(l(),d("div",sf,[t[18]||(t[18]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-warning"})],-1)),g(" "+c(e.fetchError),1)])):p("v-if",!0),N((l(),d("form",nf,[o("div",rf,[o("div",af,[N(o("input",lf,null,512),[[n,{state:e.viewState,set:s=>{e.query.search=s},value:e.query?.search,form:null,options:{}}]]),e.query?.search?p("v-if",!0):(l(),d("span",df,"/"))]),t[22]||(t[22]=o("span",{class:"admin-filter-spacer"},null,-1)),o("button",{class:"btn btn-sm",type:"button",onClick:t[5]||(t[5]=s=>e.exportCsv())},[...t[19]||(t[19]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-export"})],-1),g(" Export",-1)])]),o("span",uf,[o("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[6]||(t[6]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1,"aria-label":"Previous page"},[...t[20]||(t[20]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-chevron-left"})],-1)])],8,cf),o("span",pf,c(e.query?.page)+"/"+c(e.totalPage||1),1),o("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[7]||(t[7]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage,"aria-label":"Next page"},[...t[21]||(t[21]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-chevron-right"})],-1)])],8,ff)])]),e.chips?.length?(l(),d("div",mf,[o("div",hf,[(l(!0),d(Q,null,se(e.chips,(s,i)=>(l(),d("span",{class:"admin-active-chip",key:s?.key},[o("span",vf,c(s?.label),1),o("span",null,c(s?.value),1),o("button",{type:"button",onClick:a=>e.clearFilter(s.key),"aria-label":"Clear filter"},[...t[23]||(t[23]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-close"})],-1)])],8,gf)]))),128))])])):p("v-if",!0)])),[[r,e.viewState]]),o("div",yf,[o("div",bf,[o("div",wf,[o("button",{type:"button",class:A(["sortable",{active:e.query?.sort=="name"}]),onClick:t[8]||(t[8]=s=>e.sortBy("name"))},[t[25]||(t[25]=g("Conference ",-1)),e.sortIcon("name")?(l(),d("svg",{key:0,class:A(["ui-icon sort-direction",{ascending:e.sortIcon("name")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[24]||(t[24]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),o("div",kf,[o("button",{type:"button",class:A(["sortable",{active:e.query?.sort=="status"}]),onClick:t[9]||(t[9]=s=>e.sortBy("status"))},[t[27]||(t[27]=g("Status ",-1)),e.sortIcon("status")?(l(),d("svg",{key:0,class:A(["ui-icon sort-direction",{ascending:e.sortIcon("status")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[26]||(t[26]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),t[30]||(t[30]=o("div",{role:"columnheader",class:"num"},"Repos",-1)),o("div",Ef,[o("button",{type:"button",class:A(["sortable",{active:e.query?.sort=="startDate"}]),onClick:t[10]||(t[10]=s=>e.sortBy("startDate"))},[t[29]||(t[29]=g("Window ",-1)),e.sortIcon("startDate")?(l(),d("svg",{key:0,class:A(["ui-icon sort-direction",{ascending:e.sortIcon("startDate")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[28]||(t[28]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),t[31]||(t[31]=o("div",{role:"columnheader","aria-label":"Actions"},null,-1))]),(l(!0),d(Q,null,se(e.filteredConferences,(s,i)=>(l(),d("div",Cf,[o("div",_f,[t[33]||(t[33]=o("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Conference"},[o("use",{href:"#project-icon-conference"})],-1)),o("div",Sf,[o("a",{class:"repo-name",textContent:c(s?.name),href:e.safeUrl("/conference/"+s?.conferenceID)},null,8,Nf),o("div",Df,[o("span",null,c(s?.conferenceID),1),t[32]||(t[32]=g("\xA0\xB7\xA0",-1)),o("span",null,c(e.fmt?.number(s?.price||0))+" \u20AC",1)])])]),o("div",Rf,[o("span",{class:A(["status-dot",{"status-removed":s?.status=="removed"||s?.status=="expired","status-ready":s?.status=="ready","status-error":s?.status=="error","status-preparing":s?.status=="preparing"}])},null,2),o("span",{textContent:c(e.fmt?.title(s?.status))},null,8,Tf)]),o("div",Af,[t[34]||(t[34]=o("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[o("use",{href:"#project-type-repo"})],-1)),o("a",{title:"Show repositories in this conference",textContent:c(e.fmt?.number(s?.repositories?.length||0)),href:e.safeUrl("/admin/?conference="+s?.conferenceID)},null,8,Of)]),o("div",If,[t[35]||(t[35]=o("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-clock"})],-1)),g(" "+c(e.fmt?.date(s?.startDate))+" \u2013 "+c(e.fmt?.date(s?.endDate)),1)]),o("div",Pf,[o("div",Vf,[t[41]||(t[41]=o("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions"},[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-more"})])],-1)),o("div",qf,[o("a",{class:"dropdown-item",href:e.safeUrl("/conference/"+s?.conferenceID+"/edit")},[...t[36]||(t[36]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-edit"})],-1),g(" Edit",-1)])],8,Mf),o("a",{class:"dropdown-item",href:e.safeUrl("/conference/"+s?.conferenceID+"/")},[...t[37]||(t[37]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-eye"})],-1),g(" View",-1)])],8,$f),o("a",{class:"dropdown-item",href:e.safeUrl("/admin/?conference="+s?.conferenceID)},[...t[38]||(t[38]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-type-repo"})],-1),g(" View repositories",-1)])],8,Lf),t[40]||(t[40]=o("div",{class:"dropdown-divider"},null,-1)),N(o("a",{class:"dropdown-item text-danger",href:"#",onClick:ce(a=>e.removeConference(s),["prevent"])},[...t[39]||(t[39]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-trash"})],-1),g(" Remove",-1)])],8,Uf),[[W,s?.status!="removed"]])])])])]))),256)),e.filteredConferences?.length==0?(l(),d("div",Ff,[...t[42]||(t[42]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-inbox"})],-1),o("span",null,"No conferences match the current filters.",-1)])])):p("v-if",!0)]),o("div",zf,[o("span",Hf,c(e.fmt?.number(e.total))+" results",1),e.totalPage>1?(l(),d("div",Bf,[o("button",{class:"btn btn-sm",onClick:t[11]||(t[11]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1},[...t[43]||(t[43]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-chevron-left"})],-1),g(" Previous",-1)])],8,jf),N(o("input",{type:"number",class:"form-control form-control-sm",min:"1",style:{width:"56px"},max:e.totalPage},null,8,Gf),[[n,{state:e.viewState,set:s=>{e.query.page=s},value:e.query?.page,form:null,options:{}}]]),o("span",null,"of "+c(e.totalPage),1),o("button",{class:"btn btn-sm",onClick:t[12]||(t[12]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage},[...t[44]||(t[44]=[g("Next ",-1),o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-chevron-right"})],-1)])],8,Wf)])):p("v-if",!0),o("span",Kf,[t[46]||(t[46]=o("label",null,"Per page",-1)),N((l(),d("select",Yf,[...t[45]||(t[45]=[le('',5)])])),[[n,{state:e.viewState,set:s=>{e.query.limit=s},value:e.query?.limit,form:null,options:{}}]])])])])}var Jf={class:"container paper-page admin-page errors-page"},Qf={class:"errors-header"},Xf={class:"errors-actions"},Zf={class:"kpi-grid"},xf={class:"kpi-card"},em={class:"kpi-value"},tm={key:0},om={key:1},sm={class:"kpi-card kpi-error"},nm={class:"kpi-value"},rm={class:"kpi-sub"},im={class:"kpi-card kpi-warn"},am={class:"kpi-value"},lm={class:"kpi-sub"},dm={class:"kpi-card kpi-info"},um={class:"kpi-value"},cm={class:"kpi-sub"},pm={class:"kpi-value"},fm={class:"kpi-sub"},mm={key:0,class:"dropped-warn"},hm={class:"volume-chart"},vm={class:"volume-bars"},gm=["title"],ym={class:"errors-toolbar","aria-label":"Error filters"},bm={class:"seg-tabs"},wm={class:"search-wrap"},km={type:"search",class:"form-control",placeholder:"code:repo_not_found module:route status:>=400",autocomplete:"off"},Em={key:0,class:"filter-count"},Cm={class:"select-wrap"},_m={class:"form-control form-control-sm"},Sm={class:"select-wrap"},Nm={class:"form-control form-control-sm"},Dm={class:"autoref"},Rm={type:"checkbox"},Tm={key:0,class:"admin-empty"},Am={key:1,class:"errors-pager"},Om={key:2,class:"errors-list"},Im=["onClick"],Pm={class:"col-when"},Vm={class:"when-rel"},qm={class:"when-abs"},Mm={class:"col-sev"},$m={class:"sev-label"},Lm={class:"col-mod"},Um={class:"pill pill-module"},Fm={class:"col-msg"},zm={class:"msg-code"},Hm={key:0,class:"msg-context"},Bm={key:1,class:"msg-detail"},jm={key:2,class:"msg-url"},Gm={class:"col-count"},Wm={key:0,class:"count-pill"},Km={key:1,class:"count-pill count-pill-muted"},Ym={class:"col-status"},Jm={key:0,class:"errors-row-detail"},Qm={class:"detail-tabs"},Xm=["onClick"],Zm=["onClick"],xm=["onClick"],eh={class:"detail-body"},th={class:"detail-main"},oh={key:0},sh={key:1,class:"stack-pre"},nh={key:2,class:"related-list"},rh={class:"when-abs"},ih={class:"msg-url"},ah={class:"detail-actions"},lh=["onClick"],dh=["onClick"],uh={key:0,class:"copy-hint"},ch={class:"detail-aside"},ph={class:"aside-block"},fh=["title"],mh={class:"aside-block"},hh=["title"],vh={class:"aside-block"},gh={class:"aside-value"},yh={key:0,class:"aside-sub"},bh={key:0,class:"aside-block"},wh=["href"],kh={key:1,class:"aside-block"},Eh={class:"aside-value mono"};function il(e,t){let n=ye("field"),r=ye("form");return l(),d("div",Jf,[t[32]||(t[32]=o("div",{class:"paper-crumbs"},[g("Admin \xA0/\xA0 "),o("span",{class:"here"},"Errors")],-1)),o("header",Qf,[t[10]||(t[10]=o("h1",{class:"paper-page-title"},"Errors",-1)),o("div",Xf,[o("button",{class:"btn btn-sm",type:"button",onClick:t[0]||(t[0]=s=>e.exportCsv())},[...t[8]||(t[8]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-export"})],-1),g(" Export CSV",-1)])]),o("button",{class:"btn btn-sm btn-danger",type:"button",onClick:t[1]||(t[1]=s=>e.clearAll())},[...t[9]||(t[9]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-trash"})],-1),g(" Clear all",-1)])])])]),t[33]||(t[33]=le('',1)),o("section",Zf,[o("div",xf,[t[11]||(t[11]=o("div",{class:"kpi-label"},"Last 24h",-1)),o("div",em,c(e.stats?.last24h),1),o("div",{class:A(["kpi-sub",{up:e.stats?.delta>0,down:e.stats?.delta<0}])},[e.stats?.prev24h?(l(),d("span",tm,c(e.stats?.delta>0?"+":"")+c(e.stats?.delta)+"% vs yesterday",1)):p("v-if",!0),e.stats?.prev24h?p("v-if",!0):(l(),d("span",om,"no prior baseline"))],2)]),o("div",sm,[t[12]||(t[12]=o("div",{class:"kpi-label"},"Errors (5xx)",-1)),o("div",nm,c(e.stats?.severity?.error),1),o("div",rm,c(e.stats?.unique?.error)+" unique",1)]),o("div",im,[t[13]||(t[13]=o("div",{class:"kpi-label"},"Warnings (4xx)",-1)),o("div",am,c(e.stats?.severity?.warn),1),o("div",lm,c(e.stats?.unique?.warn)+" unique",1)]),o("div",dm,[t[14]||(t[14]=o("div",{class:"kpi-label"},"Info (auth, 404)",-1)),o("div",um,c(e.stats?.severity?.info),1),o("div",cm,c(e.stats?.unique?.info)+" unique",1)]),o("div",{class:A(["kpi-card",{"kpi-error":e.stats?.dropped>0}])},[t[15]||(t[15]=o("div",{class:"kpi-label"},"Captured",-1)),o("div",pm,c(e.total),1),o("div",fm,[g(" cap "+c(e.cap)+" \xB7 "+c(e.available?"live":"redis off")+" ",1),e.stats?.dropped>0?(l(),d("span",mm," \xB7 "+c(e.stats?.dropped)+" dropped",1)):p("v-if",!0)])],2)]),o("section",hm,[t[16]||(t[16]=le('
Volume \xB7 24h \xB7 1h bucketserror warn info
',1)),o("div",vm,[(l(!0),d(Q,null,se(e.stats?.buckets,(s,i)=>(l(),d("div",{class:"volume-bar",key:i,title:e.bucketTitle(s)},[o("span",{class:"seg seg-error",style:Me({height:e.barPx(s,"error")+"px"})},null,4),o("span",{class:"seg seg-warn",style:Me({height:e.barPx(s,"warn")+"px"})},null,4),o("span",{class:"seg seg-info",style:Me({height:e.barPx(s,"info")+"px"})},null,4)],8,gm))),128))])]),N((l(),d("form",ym,[o("div",bm,[o("button",{type:"button",class:A({active:e.query?.bucket===""}),onClick:t[2]||(t[2]=s=>e.setBucket(""))},"All",2),o("button",{type:"button",class:A({active:e.query?.bucket==="error"}),onClick:t[3]||(t[3]=s=>e.setBucket("error"))},"5xx",2),o("button",{type:"button",class:A({active:e.query?.bucket==="warn"}),onClick:t[4]||(t[4]=s=>e.setBucket("warn"))},"4xx",2),o("button",{type:"button",class:A({active:e.query?.bucket==="info"}),onClick:t[5]||(t[5]=s=>e.setBucket("info"))},"Info",2)]),o("div",wm,[t[17]||(t[17]=o("svg",{class:"ui-icon search-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-search"})],-1)),N(o("input",km,null,512),[[n,{state:e.viewState,set:s=>{e.query.search=s},value:e.query?.search,form:null,options:{}}]]),e.parsedFilterCount?(l(),d("span",Em,c(e.parsedFilterCount)+" filter"+c(e.parsedFilterCount>1?"s":""),1)):p("v-if",!0)]),o("div",Cm,[t[19]||(t[19]=o("label",null,"Sort",-1)),N((l(),d("select",_m,[...t[18]||(t[18]=[o("option",{value:"recent"},"Most recent",-1),o("option",{value:"count"},"Most frequent",-1)])])),[[n,{state:e.viewState,set:s=>{e.query.sort=s},value:e.query?.sort,form:null,options:{}}]])]),o("div",Sm,[t[21]||(t[21]=o("label",null,"Group",-1)),N((l(),d("select",Nm,[...t[20]||(t[20]=[o("option",{value:""},"Off",-1),o("option",{value:"code"},"By code",-1),o("option",{value:"module"},"By module",-1)])])),[[n,{state:e.viewState,set:s=>{e.query.group=s},value:e.query?.group,form:null,options:{}}]])]),o("label",Dm,[N(o("input",Rm,null,512),[[n,{state:e.viewState,set:s=>{e.query.autoRefresh=s},value:e.query?.autoRefresh,form:null,options:{}}]]),t[22]||(t[22]=g(" Auto-refresh ",-1))]),o("button",{class:"btn btn-sm btn-icon",type:"button",title:"Refresh now",onClick:t[6]||(t[6]=s=>e.refreshNow()),"aria-label":"Refresh"},[...t[23]||(t[23]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-refresh"})],-1)])])])),[[r,e.viewState]]),e.visible?.length?p("v-if",!0):(l(),d("div",Tm,"No errors captured.")),e.canLoadMore()&&e.visible?.length?(l(),d("div",Am,[o("span",null,"Showing "+c(e.entries?.length)+" of "+c(e.total)+" captured",1),o("button",{class:"btn btn-sm",type:"button",onClick:t[7]||(t[7]=s=>e.loadMore())},"Load older")])):p("v-if",!0),e.visible?.length?(l(),d("div",Om,[t[31]||(t[31]=le('
WhenSeverityModuleMessageCountStatus
',1)),(l(!0),d(Q,null,se(e.visible,(s,i)=>(l(),d("div",{class:A(["errors-row",{open:e.expanded[s?._key]}]),key:s?._key},[o("div",{class:"errors-row-main",onClick:a=>e.toggle(s)},[o("div",Pm,[o("div",Vm,c(e.relTime(s?.ts)),1),o("div",qm,c(e.absTimeShort(s?.ts)),1)]),o("div",Mm,[o("span",{class:A(["sev-dot","sev-"+s?._bucket])},null,2),o("span",$m,c(e.fmt?.uppercase(s?._bucket)),1)]),o("div",Lm,[o("span",Um,c(s?.module),1)]),o("div",Fm,[o("strong",zm,c(s?.displayMessage),1),s?.displayContext&&s?.displayContext!==s?.displayMessage?(l(),d("span",Hm,c(s?.displayContext),1)):p("v-if",!0),s?._detail?(l(),d("span",Bm,c(s?._detail),1)):p("v-if",!0),s?._url?(l(),d("div",jm,c(s?._url),1)):p("v-if",!0)]),o("div",Gm,[s?.count>1?(l(),d("span",Wm,"\xD7"+c(s?.count),1)):p("v-if",!0),s?.count===1?(l(),d("span",Km,"\xD71")):p("v-if",!0)]),o("div",Ym,[s?._status?(l(),d("span",{key:0,class:A(["status-pill","status-"+s?._bucket])},c(s?._status),3)):p("v-if",!0)])],8,Im),e.expanded[s?._key]?(l(),d("div",Jm,[o("div",Qm,[o("button",{type:"button",class:A({active:e.detailTab[s?._key]==="raw"||!e.detailTab[s?._key]}),onClick:a=>e.detailTab[s._key]="raw"},"Raw",10,Xm),s?._stack?(l(),d("button",{key:0,type:"button",class:A({active:e.detailTab[s?._key]==="stack"}),onClick:a=>e.detailTab[s._key]="stack"},"Stack",10,Zm)):p("v-if",!0),s?.count>1?(l(),d("button",{key:1,type:"button",class:A({active:e.detailTab[s?._key]==="related"}),onClick:a=>e.detailTab[s._key]="related"},"Related ("+c(s?.count)+")",11,xm)):p("v-if",!0)]),o("div",eh,[o("div",th,[(e.detailTab[s?._key]||"raw")==="raw"?(l(),d("pre",oh,c(s?._detailJson),1)):p("v-if",!0),e.detailTab[s?._key]==="stack"?(l(),d("pre",sh,c(s?._stack),1)):p("v-if",!0),e.detailTab[s?._key]==="related"?(l(),d("div",nh,[(l(!0),d(Q,null,se(s?._related,(a,u)=>(l(),d("div",{class:"related-row",key:u},[o("span",rh,c(e.absTimeShort(a?.ts)),1),o("span",ih,c(a?._url),1),a?._status?(l(),d("span",{key:0,class:A(["status-pill","status-"+a?._bucket])},c(a?._status),3)):p("v-if",!0)]))),128))])):p("v-if",!0),o("div",ah,[o("button",{class:"btn btn-sm",type:"button",title:"Copy a curl that reproduces the request",onClick:a=>e.copyCurl(s)},[...t[24]||(t[24]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-code"})],-1),g(" Copy curl",-1)])],8,lh),o("button",{class:"btn btn-sm",type:"button",onClick:a=>e.copyJson(s)},[...t[25]||(t[25]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-clipboard"})],-1),g(" Copy JSON",-1)])],8,dh),e.copyHint?(l(),d("span",uh,c(e.copyHint),1)):p("v-if",!0)])]),o("aside",ch,[o("div",ph,[t[26]||(t[26]=o("div",{class:"aside-label"},"First seen",-1)),o("div",{class:"aside-value",title:e.absTime(s?._firstSeen)},c(e.relTime(s?._firstSeen)),9,fh)]),o("div",mh,[t[27]||(t[27]=o("div",{class:"aside-label"},"Last seen",-1)),o("div",{class:"aside-value",title:e.absTime(s?.ts)},c(e.relTime(s?.ts)),9,hh)]),o("div",vh,[t[28]||(t[28]=o("div",{class:"aside-label"},"Occurrences",-1)),o("div",gh,[g(c(s?.count),1),s?._lastHourCount?(l(),d("span",yh," \xB7 "+c(s?._lastHourCount)+" this hour",1)):p("v-if",!0)])]),s?._repoId?(l(),d("div",bh,[t[29]||(t[29]=o("div",{class:"aside-label"},"Repository",-1)),o("a",{class:"aside-value",href:e.safeUrl("/r/"+s?._repoId)},c(s?._repoId),9,wh)])):p("v-if",!0),s?._url?(l(),d("div",kh,[t[30]||(t[30]=o("div",{class:"aside-label"},"URL",-1)),o("div",Eh,c(s?._url),1)])):p("v-if",!0)])])])):p("v-if",!0)],2))),128))])):p("v-if",!0)])}var Ch={class:"container paper-page admin-page overview-page"},_h={key:0,class:"admin-empty"},Sh={key:1,class:"alert alert-danger",style:{margin:"12px 0"}},Nh={key:2},Dh={class:"ov-kpi-row"},Rh={class:"ov-kpi-card"},Th={class:"ov-kpi-value"},Ah={class:"ov-kpi-sub"},Oh={class:"ov-kpi-card"},Ih={class:"ov-kpi-sub"},Ph={class:"ov-kpi-card"},Vh={class:"ov-kpi-sub"},qh={class:"ov-kpi-card"},Mh={class:"ov-kpi-sub"},$h={class:"ov-kpi-card"},Lh={class:"ov-kpi-value"},Uh={class:"ov-kpi-sub"},Fh={class:"ov-daily-row"},zh={class:"ov-daily-card"},Hh={class:"ov-daily-value"},Bh={class:"ov-daily-card"},jh={class:"ov-daily-value"},Gh={class:"ov-daily-sub"},Wh={class:"ov-daily-card"},Kh={class:"ov-daily-value"},Yh={class:"ov-chart-row"},Jh={class:"ov-chart-card"},Qh={key:0,class:"ov-spark-bars"},Xh=["data-tip","aria-label"],Zh={key:1,class:"ov-spark-x"},xh={class:"ov-chart-card"},ev={key:0,class:"ov-spark-bars"},tv=["data-tip","aria-label"],ov={key:1,class:"ov-spark-x"},sv={class:"ov-chart-card"},nv={key:0,class:"ov-spark-bars"},rv=["data-tip","aria-label"],iv={key:1,class:"ov-spark-x"},av={class:"ov-chart-card"},lv={key:0,class:"ov-spark-bars"},dv=["data-tip","aria-label"],uv={key:1,class:"ov-spark-x"},cv={class:"ov-triple-row"},pv={class:"ov-panel-card"},fv={class:"ov-panel-head"},mv={class:"ov-panel-meta"},hv={class:"ov-stacked-bar"},vv={class:"ov-bar-legend"},gv={href:"/admin/repositories",class:"ov-legend-item"},yv={class:"ov-legend-n"},bv={href:"/admin/repositories",class:"ov-legend-item"},wv={class:"ov-legend-n"},kv={href:"/admin/repositories",class:"ov-legend-item"},Ev={class:"ov-legend-n"},Cv={href:"/admin/repositories",class:"ov-legend-item"},_v={class:"ov-legend-n"},Sv={href:"/admin/repositories",class:"ov-legend-item"},Nv={class:"ov-legend-n"},Dv={class:"ov-panel-card"},Rv={class:"ov-panel-head"},Tv={class:"ov-panel-meta"},Av={class:"ov-error-bars"},Ov={class:"ov-ebar-row"},Iv={class:"ov-ebar-track"},Pv={class:"ov-ebar-n"},Vv={class:"ov-ebar-row"},qv={class:"ov-ebar-track"},Mv={class:"ov-ebar-n"},$v={class:"ov-ebar-row"},Lv={class:"ov-ebar-track"},Uv={class:"ov-ebar-n"},Fv={key:0,class:"ov-panel-foot"},zv={href:"/admin/errors"},Hv={class:"ov-panel-card"},Bv={class:"ov-routes-table"},jv={class:"ov-route-row",href:"/admin/queues"},Gv={class:"ov-route-n"},Wv={class:"ov-route-n"},Kv={class:"ov-route-row",href:"/admin/queues"},Yv={class:"ov-route-n"},Jv={class:"ov-route-n"},Qv={class:"ov-route-row",href:"/admin/queues"},Xv={class:"ov-route-n"},Zv={class:"ov-route-n"},xv={class:"ov-services-card"},eg={class:"ov-services-head"},tg={class:"ov-panel-meta"},og={class:"ov-services-grid"},sg={class:"ov-svc"},ng={class:"ov-svc-info"},rg={class:"ov-svc-meta"},ig={class:"ov-svc-detail"},ag={class:"ov-svc"},lg={class:"ov-svc-info"},dg={key:0,class:"ov-svc-meta"},ug={key:1,class:"ov-svc-meta"},cg={class:"ov-svc"},pg={class:"ov-svc-info"},fg={key:0,class:"ov-svc-meta"},mg={key:1,class:"ov-svc-meta"},hg={class:"ov-svc"},vg={class:"ov-svc-info"},gg={key:0,class:"ov-svc-meta"},yg={key:1,class:"ov-svc-meta"},bg={class:"ov-svc"},wg={class:"ov-svc-info"},kg={class:"ov-svc-meta"};function al(e,t){return l(),d("div",Ch,[t[42]||(t[42]=le('
Admin \xB7 System Health

Overview

',3)),e.loading?(l(),d("div",_h,"Loading overview\u2026")):p("v-if",!0),e.error?(l(),d("div",Sh,[t[0]||(t[0]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-warning"})],-1)),g(" "+c(e.error),1)])):p("v-if",!0),e.data?(l(),d("div",Nh,[p(" \u2500\u2500 Top KPI row \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),o("section",Dh,[o("div",Rh,[t[1]||(t[1]=o("div",{class:"ov-kpi-label"},[g("Repositories "),o("span",{class:"ov-dot ov-dot-ok"})],-1)),o("div",Th,c(e.humanNum(e.data?.repos?.total)),1),o("div",Ah,"+"+c(e.data?.repos?.newRepos24h)+" \xB7 last 24h",1)]),o("div",Oh,[t[2]||(t[2]=o("div",{class:"ov-kpi-label"},"CPU",-1)),o("div",{class:A(["ov-kpi-value",{"ov-val-warn":e.data?.system?.cpuPercent>80}])},c(e.data?.system?.cpuPercent)+"%",3),o("div",Ih,c(e.data?.system?.cpuCount)+" cores \xB7 load "+c(e.data?.system?.loadAvg?.[0]?.toFixed(1)),1)]),o("div",Ph,[t[3]||(t[3]=o("div",{class:"ov-kpi-label"},"Memory",-1)),o("div",{class:A(["ov-kpi-value",{"ov-val-warn":e.data?.system?.memPercent>85}])},c(e.data?.system?.memPercent)+"%",3),o("div",Vh,c(e.humanBytes(e.data?.system?.memUsed))+" / "+c(e.humanBytes(e.data?.system?.memTotal)),1)]),o("div",qh,[t[4]||(t[4]=o("div",{class:"ov-kpi-label"},"Disk",-1)),o("div",{class:A(["ov-kpi-value",{"ov-val-warn":e.data?.system?.diskPercent>85}])},c(e.data?.system?.diskPercent)+"%",3),o("div",Mh,c(e.humanBytes(e.data?.system?.diskUsed))+" / "+c(e.humanBytes(e.data?.system?.diskTotal))+" \xB7 "+c(e.data?.system?.diskMount),1)]),o("div",$h,[t[5]||(t[5]=o("div",{class:"ov-kpi-label"},"Uptime",-1)),o("div",Lh,c(e.humanDuration(e.data?.system?.uptime)),1),o("div",Uh,c(e.data?.system?.nodeVersion)+" \xB7 "+c(e.data?.system?.platform),1)])]),p(" \u2500\u2500 Daily activity highlights \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),o("section",Fh,[o("div",zh,[t[6]||(t[6]=o("div",{class:"ov-daily-label"},"New repos today",-1)),o("div",Hh,"+"+c(e.fmt?.number(e.data?.daily?.today?.repositories)),1),t[7]||(t[7]=o("div",{class:"ov-daily-sub"},"since yesterday",-1))]),o("div",Bh,[t[8]||(t[8]=o("div",{class:"ov-daily-label"},"New users today",-1)),o("div",jh,"+"+c(e.fmt?.number(e.data?.daily?.today?.users)),1),o("div",Gh,c(e.fmt?.number(e.data?.users?.total))+" total users",1)]),o("div",Wh,[t[9]||(t[9]=o("div",{class:"ov-daily-label"},"Page views today",-1)),o("div",Kh,"+"+c(e.fmt?.number(e.data?.daily?.today?.pageViews)),1),t[10]||(t[10]=o("div",{class:"ov-daily-sub"},"since yesterday",-1))])]),p(" \u2500\u2500 Daily charts \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),o("section",Yh,[o("div",Jh,[t[11]||(t[11]=o("div",{class:"ov-chart-head"},[o("span",{class:"ov-chart-title"},"Daily page views \xB7 30d"),o("span",{class:"ov-chart-legend"},[o("span",{class:"ov-dot-legend ov-dot-accent"}),g("views/day")])],-1)),e.data?.history?.length?(l(),d("div",Qh,[(l(!0),d(Q,null,se(e.data?.history,(n,r)=>(l(),d("div",{class:"ov-spark-col has-tip",key:r,"data-tip":e.historyLabel(n)+": +"+e.fmt?.number(n?.dailyPageViews)+" views","aria-label":e.historyLabel(n)+": +"+e.fmt?.number(n?.dailyPageViews)+" views"},[o("span",{class:"ov-spark-fill",style:Me({height:e.historyBarH(n,"dailyPageViews")+"px"})},null,4)],8,Xh))),128))])):p("v-if",!0),e.data?.history?.length?(l(),d("div",Zh,[o("span",null,c(e.historyLabel(e.data?.history[0])),1),o("span",null,c(e.historyLabel(e.data?.history[Math?.floor(e.data?.history?.length/2)])),1),o("span",null,c(e.historyLabel(e.data?.history[e.data?.history?.length-1])),1)])):p("v-if",!0)]),o("div",xh,[t[12]||(t[12]=o("div",{class:"ov-chart-head"},[o("span",{class:"ov-chart-title"},"New repos \xB7 30d"),o("span",{class:"ov-chart-legend"},[o("span",{class:"ov-dot-legend ov-dot-ok-fill"}),g("repos/day")])],-1)),e.data?.history?.length?(l(),d("div",ev,[(l(!0),d(Q,null,se(e.data?.history,(n,r)=>(l(),d("div",{class:"ov-spark-col has-tip",key:r,"data-tip":e.historyLabel(n)+": +"+e.fmt?.number(n?.dailyRepositories)+" repos","aria-label":e.historyLabel(n)+": +"+e.fmt?.number(n?.dailyRepositories)+" repos"},[o("span",{class:"ov-spark-fill ov-spark-fill-alt",style:Me({height:e.historyBarH(n,"dailyRepositories")+"px"})},null,4)],8,tv))),128))])):p("v-if",!0),e.data?.history?.length?(l(),d("div",ov,[o("span",null,c(e.historyLabel(e.data?.history[0])),1),o("span",null,c(e.historyLabel(e.data?.history[Math?.floor(e.data?.history?.length/2)])),1),o("span",null,c(e.historyLabel(e.data?.history[e.data?.history?.length-1])),1)])):p("v-if",!0)]),o("div",sv,[t[13]||(t[13]=o("div",{class:"ov-chart-head"},[o("span",{class:"ov-chart-title"},"Users \xB7 30d"),o("span",{class:"ov-chart-legend"},[o("span",{class:"ov-dot-legend ov-dot-user-fill"}),g("total users")])],-1)),e.data?.history?.length?(l(),d("div",nv,[(l(!0),d(Q,null,se(e.data?.history,(n,r)=>(l(),d("div",{class:"ov-spark-col has-tip",key:r,"data-tip":e.historyLabel(n)+": "+e.fmt?.number(n?.nbUsers)+" users","aria-label":e.historyLabel(n)+": "+e.fmt?.number(n?.nbUsers)+" users"},[o("span",{class:"ov-spark-fill ov-spark-fill-user",style:Me({height:e.historyBarH(n,"nbUsers")+"px"})},null,4)],8,rv))),128))])):p("v-if",!0),e.data?.history?.length?(l(),d("div",iv,[o("span",null,c(e.historyLabel(e.data?.history[0])),1),o("span",null,c(e.historyLabel(e.data?.history[Math?.floor(e.data?.history?.length/2)])),1),o("span",null,c(e.historyLabel(e.data?.history[e.data?.history?.length-1])),1)])):p("v-if",!0)]),o("div",av,[t[14]||(t[14]=o("div",{class:"ov-chart-head"},[o("span",{class:"ov-chart-title"},"New users \xB7 30d"),o("span",{class:"ov-chart-legend"},[o("span",{class:"ov-dot-legend ov-dot-new-user-fill"}),g("users/day")])],-1)),e.data?.history?.length?(l(),d("div",lv,[(l(!0),d(Q,null,se(e.data?.history,(n,r)=>(l(),d("div",{class:"ov-spark-col has-tip",key:r,"data-tip":e.historyLabel(n)+": +"+e.fmt?.number(n?.dailyUsers)+" users","aria-label":e.historyLabel(n)+": +"+e.fmt?.number(n?.dailyUsers)+" users"},[o("span",{class:"ov-spark-fill ov-spark-fill-new-user",style:Me({height:e.historyBarH(n,"dailyUsers")+"px"})},null,4)],8,dv))),128))])):p("v-if",!0),e.data?.history?.length?(l(),d("div",uv,[o("span",null,c(e.historyLabel(e.data?.history[0])),1),o("span",null,c(e.historyLabel(e.data?.history[Math?.floor(e.data?.history?.length/2)])),1),o("span",null,c(e.historyLabel(e.data?.history[e.data?.history?.length-1])),1)])):p("v-if",!0)])]),p(" \u2500\u2500 Three-panel row: Status / Errors / Queues \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),o("section",cv,[p(" Repo status breakdown "),o("div",pv,[o("div",fv,[t[15]||(t[15]=o("span",{class:"ov-panel-title"},"Repo status",-1)),o("span",mv,c(e.fmt?.number(e.data?.repos?.total))+" total",1)]),o("div",hv,[o("span",{class:"ov-bar-seg ov-bar-ready",title:"Ready",style:Me({width:e.barPct("ready")+"%"})},null,4),o("span",{class:"ov-bar-seg ov-bar-preparing",title:"Preparing",style:Me({width:e.barPct("preparing")+"%"})},null,4),o("span",{class:"ov-bar-seg ov-bar-error",title:"Error",style:Me({width:e.barPct("error")+"%"})},null,4),o("span",{class:"ov-bar-seg ov-bar-expired",title:"Expired",style:Me({width:e.barPct("expired")+"%"})},null,4),o("span",{class:"ov-bar-seg ov-bar-removed",title:"Removed",style:Me({width:e.barPct("removed")+"%"})},null,4)]),o("div",vv,[o("a",gv,[t[16]||(t[16]=o("span",{class:"ov-swatch ov-bar-ready"},null,-1)),t[17]||(t[17]=g(" ready ",-1)),o("span",yv,c(e.fmt?.number(e.statusCount("ready"))),1)]),o("a",bv,[t[18]||(t[18]=o("span",{class:"ov-swatch ov-bar-preparing"},null,-1)),t[19]||(t[19]=g(" preparing ",-1)),o("span",wv,c(e.fmt?.number(e.statusCount("preparing")+e.statusCount("download"))),1)]),o("a",kv,[t[20]||(t[20]=o("span",{class:"ov-swatch ov-bar-error"},null,-1)),t[21]||(t[21]=g(" error ",-1)),o("span",Ev,c(e.fmt?.number(e.statusCount("error"))),1)]),o("a",Cv,[t[22]||(t[22]=o("span",{class:"ov-swatch ov-bar-expired"},null,-1)),t[23]||(t[23]=g(" expired ",-1)),o("span",_v,c(e.fmt?.number(e.statusCount("expired")+e.statusCount("expiring"))),1)]),o("a",Sv,[t[24]||(t[24]=o("span",{class:"ov-swatch ov-bar-removed"},null,-1)),t[25]||(t[25]=g(" removed ",-1)),o("span",Nv,c(e.fmt?.number(e.statusCount("removed")+e.statusCount("removing"))),1)])])]),p(" Error breakdown "),o("div",Dv,[o("div",Rv,[t[26]||(t[26]=o("span",{class:"ov-panel-title"},"Errors \xB7 24h",-1)),o("span",Tv,c(e.data?.errors?.last24h)+" total",1)]),o("div",Av,[o("div",Ov,[t[27]||(t[27]=o("span",{class:"ov-ebar-label"},"5xx",-1)),o("span",Iv,[o("span",{class:"ov-ebar-fill ov-ebar-error",style:Me({width:e.errPct("error")+"%"})},null,4)]),o("span",Pv,c(e.data?.errors?.severity?.error),1)]),o("div",Vv,[t[28]||(t[28]=o("span",{class:"ov-ebar-label"},"4xx",-1)),o("span",qv,[o("span",{class:"ov-ebar-fill ov-ebar-warn",style:Me({width:e.errPct("warn")+"%"})},null,4)]),o("span",Mv,c(e.data?.errors?.severity?.warn),1)]),o("div",$v,[t[29]||(t[29]=o("span",{class:"ov-ebar-label"},"Info",-1)),o("span",Lv,[o("span",{class:"ov-ebar-fill ov-ebar-info",style:Me({width:e.errPct("info")+"%"})},null,4)]),o("span",Uv,c(e.data?.errors?.severity?.info),1)])]),e.data?.repos?.recentErrors24h?(l(),d("div",Fv,[o("a",zv,c(e.data?.repos?.recentErrors24h)+" repos in error state \u2192",1)])):p("v-if",!0)]),p(" Top routes / queues "),o("div",Hv,[t[34]||(t[34]=o("div",{class:"ov-panel-head"},[o("span",{class:"ov-panel-title"},"Queues"),o("span",{class:"ov-panel-meta"},"by state")],-1)),o("div",Bv,[t[33]||(t[33]=le('
QueueActiveWaitFailed
',1)),o("a",jv,[t[30]||(t[30]=o("span",{class:"ov-route-name"},"download",-1)),o("span",Gv,c(e.data?.queues?.download?.active),1),o("span",Wv,c(e.data?.queues?.download?.waiting),1),o("span",{class:A(["ov-route-n ov-route-lat",{"ov-n-bad":e.data?.queues?.download?.failed>0}])},c(e.data?.queues?.download?.failed),3)]),o("a",Kv,[t[31]||(t[31]=o("span",{class:"ov-route-name"},"remove",-1)),o("span",Yv,c(e.data?.queues?.remove?.active),1),o("span",Jv,c(e.data?.queues?.remove?.waiting),1),o("span",{class:A(["ov-route-n ov-route-lat",{"ov-n-bad":e.data?.queues?.remove?.failed>0}])},c(e.data?.queues?.remove?.failed),3)]),o("a",Qv,[t[32]||(t[32]=o("span",{class:"ov-route-name"},"cache",-1)),o("span",Xv,c(e.data?.queues?.cache?.active),1),o("span",Zv,c(e.data?.queues?.cache?.waiting),1),o("span",{class:A(["ov-route-n ov-route-lat",{"ov-n-bad":e.data?.queues?.cache?.failed>0}])},c(e.data?.queues?.cache?.failed),3)])])])]),p(" \u2500\u2500 Services bar \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),o("section",xv,[o("div",eg,[t[35]||(t[35]=o("span",{class:"ov-panel-title"},"Services",-1)),o("span",tg,c(e.fmt?.number(e.data?.users?.total))+" users \xB7 "+c(e.data?.conferences?.total)+" conferences",1)]),o("div",og,[o("div",sg,[t[37]||(t[37]=o("span",{class:"ov-svc-dot ov-dot-ok"},null,-1)),o("div",ng,[t[36]||(t[36]=o("span",{class:"ov-svc-name"},"web",-1)),o("span",rg,c(e.data?.system?.nodeVersion),1)]),o("span",ig,"uptime "+c(e.humanDuration(e.data?.system?.uptime)),1)]),o("div",ag,[o("span",{class:A(["ov-svc-dot",e.queueTotal(e.data?.queues?.download)>0?"ov-dot-ok":"ov-dot-idle"])},null,2),o("div",lg,[t[38]||(t[38]=o("span",{class:"ov-svc-name"},"download",-1)),e.queueTotal(e.data?.queues?.download)?(l(),d("span",dg,c(e.queueTotal(e.data?.queues?.download))+" jobs",1)):p("v-if",!0),e.queueTotal(e.data?.queues?.download)?p("v-if",!0):(l(),d("span",ug,"idle"))])]),o("div",cg,[o("span",{class:A(["ov-svc-dot",e.queueTotal(e.data?.queues?.cache)>0?"ov-dot-ok":"ov-dot-idle"])},null,2),o("div",pg,[t[39]||(t[39]=o("span",{class:"ov-svc-name"},"cache",-1)),e.queueTotal(e.data?.queues?.cache)?(l(),d("span",fg,c(e.queueTotal(e.data?.queues?.cache))+" jobs",1)):p("v-if",!0),e.queueTotal(e.data?.queues?.cache)?p("v-if",!0):(l(),d("span",mg,"idle"))])]),o("div",hg,[o("span",{class:A(["ov-svc-dot",e.queueTotal(e.data?.queues?.remove)>0?"ov-dot-ok":"ov-dot-idle"])},null,2),o("div",vg,[t[40]||(t[40]=o("span",{class:"ov-svc-name"},"remove",-1)),e.queueTotal(e.data?.queues?.remove)?(l(),d("span",gg,c(e.queueTotal(e.data?.queues?.remove))+" jobs",1)):p("v-if",!0),e.queueTotal(e.data?.queues?.remove)?p("v-if",!0):(l(),d("span",yg,"idle"))])]),o("div",bg,[o("span",{class:A(["ov-svc-dot",e.data?.repos?.recentErrors24h>10?"ov-dot-warn":"ov-dot-ok"])},null,2),o("div",wg,[t[41]||(t[41]=o("span",{class:"ov-svc-name"},"errors",-1)),o("span",kg,c(e.data?.errors?.last24h)+" / 24h",1)])])])])])):p("v-if",!0)])}var Eg={class:"container paper-page admin-page"},Cg={class:"q-header"},_g={class:"q-header-actions"},Sg={class:"q-range-btns"},Ng={class:"q-cards"},Dg=["aria-pressed","onKeydown","onClick"],Rg={class:"q-card-head"},Tg=["textContent"],Ag=["textContent"],Og={class:"q-card-sub"},Ig={key:0,class:"q-card-bar"},Pg={key:0,class:"q-detail"},Vg={class:"q-throughput"},qg={class:"q-section-label"},Mg={class:"q-section-right"},$g={class:"q-stats-panel"},Lg={class:"q-section-label"},Ug={class:"q-stats-grid"},Fg={class:"q-stat"},zg=["textContent"],Hg={class:"q-stat"},Bg=["textContent"],jg={class:"q-stat"},Gg=["textContent"],Wg={class:"q-stat"},Kg=["textContent"],Yg={class:"q-stat"},Jg=["textContent"],Qg={class:"q-stat"},Xg=["textContent"],Zg={class:"q-stats-actions"},xg=["disabled"],ey={class:"q-jobs"},ty={class:"q-jobs-header"},oy={class:"q-section-label"},sy={class:"q-state-filters"},ny={class:"q-state-toggle"},ry={type:"checkbox"},iy={class:"q-search-row"},ay={type:"search",class:"form-control",placeholder:"Search by job/repo id\u2026",autocomplete:"off"},ly={class:"q-auto-refresh"},dy={type:"checkbox"},uy={key:0,class:"q-table"},cy=["onClick"],py={class:"q-cell-state"},fy=["textContent"],my=["textContent"],hy={class:"q-cell-id"},vy=["textContent","href"],gy={class:"q-cell-payload"},yy=["textContent"],by={key:0,class:"q-payload-detail"},wy=["textContent"],ky=["textContent"],Ey={class:"q-cell-progress"},Cy={key:0,class:"q-progress-wrap"},_y=["textContent"],Sy={class:"q-cell-actions"},Ny=["onClick"],Dy=["onClick"],Ry={key:0,class:"q-detail-row"},Ty={colspan:"7"},Ay={class:"q-job-detail"},Oy={class:"q-job-detail-grid"},Iy={class:"q-job-detail-item"},Py={class:"q-job-detail-value"},Vy=["textContent","href"],qy={class:"q-job-detail-item"},My={class:"q-job-detail-value"},$y=["textContent"],Ly={key:0,class:"q-job-detail-item"},Uy=["textContent"],Fy={key:1,class:"q-job-detail-item"},zy=["textContent"],Hy={key:2,class:"q-job-detail-item"},By={class:"q-job-detail-value"},jy={key:3,class:"q-job-detail-item"},Gy=["textContent"],Wy={key:4,class:"q-job-detail-item"},Ky=["textContent"],Yy={key:5,class:"q-job-detail-item"},Jy=["textContent"],Qy={key:6,class:"q-job-detail-item"},Xy=["textContent"],Zy={key:7,class:"q-job-detail-item"},xy=["textContent"],eb={key:0,class:"q-job-detail-error"},tb=["textContent"],ob={key:1},sb=["textContent"],rb={class:"q-job-detail-actions"},ib=["onClick"],ab=["onClick"],lb=["href"],db={key:1,class:"paper-table-empty",style:{border:"1px solid var(--border-color)","border-radius":"10px",background:"var(--paper-card)"}},ub={key:0},cb={key:1};function ll(e,t){let n=ye("field");return l(),d("div",Eg,[t[48]||(t[48]=o("div",{class:"paper-crumbs"},[g("Admin \xA0/\xA0 "),o("span",{class:"here"},"Queues")],-1)),o("div",Cg,[t[12]||(t[12]=o("h1",{class:"paper-page-title"},"Queues",-1)),o("div",_g,[o("div",Sg,[o("button",{class:A(["btn btn-sm",{active:e.range=="1h"}]),onClick:t[0]||(t[0]=r=>e.setRange("1h"))},"1h",2),o("button",{class:A(["btn btn-sm",{active:e.range=="6h"}]),onClick:t[1]||(t[1]=r=>e.setRange("6h"))},"6h",2),o("button",{class:A(["btn btn-sm",{active:e.range=="24h"}]),onClick:t[2]||(t[2]=r=>e.setRange("24h"))},"24h",2),o("button",{class:A(["btn btn-sm",{active:e.range=="7d"}]),onClick:t[3]||(t[3]=r=>e.setRange("7d"))},"7d",2)]),o("button",{class:"btn btn-sm",onClick:t[4]||(t[4]=r=>e.pauseAll())},"Pause all"),o("button",{class:"btn btn-sm btn-dark",onClick:t[5]||(t[5]=r=>e.drainSelected())},"Drain "+c(e.selectedQueue),1)])]),t[49]||(t[49]=le('',1)),p(" Queue overview cards "),o("div",Ng,[(l(!0),d(Q,null,se(e.queueList,(r,s)=>(l(),d("div",{class:A(["q-card",{selected:e.selectedQueue==r?.key,paused:r?.paused}]),role:"button",tabindex:"0","aria-pressed":e.selectedQueue===r.key,onKeydown:[No(ce(i=>e.selectQueue(r.key),["prevent"]),["enter"]),No(ce(i=>e.selectQueue(r.key),["prevent"]),["space"])],onClick:i=>e.selectQueue(r.key)},[o("div",Rg,[o("span",{class:A(["q-dot",{"q-dot-red":r?.paused||r?.counts?.failed>0}])},null,2),o("span",{class:"q-card-name",textContent:c(r?.label)},null,8,Tg)]),o("div",{class:"q-card-count",textContent:c((r?.counts?.waiting||0)+(r?.counts?.active||0)+(r?.counts?.delayed||0))},null,8,Ag),o("div",Og,[o("span",null,"waiting \xB7 "+c(r?.counts?.active||0)+" active",1),r?.counts?.active?(l(),d("div",Ig,[o("div",{class:"q-card-bar-fill",style:Me({width:r?.counts?.active/((r?.counts?.waiting||0)+(r?.counts?.active||0)+(r?.counts?.delayed||0)||1)*100+"%"})},null,4)])):p("v-if",!0)])],42,Dg))),256))]),p(" Detail: throughput chart + stats panel "),e.selectedStats?(l(),d("div",Pg,[o("div",Vg,[o("div",qg,[g(c(e.selectedQueue)+"\xB7throughput ",1),o("span",Mg,[t[13]||(t[13]=o("span",{class:"q-legend-completed"},"\u25CF",-1)),t[14]||(t[14]=g(" completed ",-1)),t[15]||(t[15]=o("span",{class:"q-legend-failed"},"\u25CF",-1)),t[16]||(t[16]=g(" failed ",-1)),t[17]||(t[17]=o("span",{class:"q-legend-exec"},"- -",-1)),g(" avg time \xB7 "+c(e.fmt?.uppercase(e.range)),1)])]),t[18]||(t[18]=o("div",{class:"q-chart-wrap"},[o("canvas",{id:"q-throughput-chart",height:"180"}),o("div",{id:"q-chart-tooltip",class:"q-chart-tooltip",style:{display:"none"}}),o("div",{id:"q-chart-crosshair",class:"q-chart-crosshair",style:{display:"none"}})],-1))]),o("div",$g,[o("div",Lg,c(e.selectedQueue)+"\xB7stats",1),o("div",Ug,[o("div",Fg,[t[19]||(t[19]=o("div",{class:"q-stat-label"},"WAITING",-1)),o("div",{class:"q-stat-value",textContent:c(e.selectedStats?.counts?.waiting||0)},null,8,zg)]),o("div",Hg,[t[20]||(t[20]=o("div",{class:"q-stat-label"},"ACTIVE",-1)),o("div",{class:"q-stat-value",textContent:c(e.selectedStats?.counts?.active||0)},null,8,Bg)]),o("div",jg,[t[21]||(t[21]=o("div",{class:"q-stat-label"},"COMPLETED (24H)",-1)),o("div",{class:"q-stat-value",textContent:c(e.fmt?.number(e.selectedStats?.completed24h))},null,8,Gg)]),o("div",Wg,[t[22]||(t[22]=o("div",{class:"q-stat-label"},"FAILED (24H)",-1)),o("div",{class:"q-stat-value",textContent:c(e.selectedStats?.failed24h||0)},null,8,Kg)]),o("div",Yg,[t[23]||(t[23]=o("div",{class:"q-stat-label"},"DELAYED",-1)),o("div",{class:"q-stat-value",textContent:c(e.selectedStats?.counts?.delayed||0)},null,8,Jg)]),o("div",Qg,[t[24]||(t[24]=o("div",{class:"q-stat-label"},"WORKERS",-1)),o("div",{class:"q-stat-value",textContent:c(e.selectedStats?.workers||0)},null,8,Xg)])]),o("div",Zg,[o("button",{class:"btn btn-sm",onClick:t[6]||(t[6]=r=>e.togglePause())},c(e.selectedStats?.paused?"Resume":"Pause"),1),o("button",{class:"btn btn-sm",onClick:t[7]||(t[7]=r=>e.retryFailed()),disabled:!e.selectedStats?.counts?.failed},"Retry failed",8,xg),o("button",{class:"btn btn-sm",onClick:t[8]||(t[8]=r=>e.emptyQueue())},"Empty")])])])):p("v-if",!0),e.actionError?(l(),d("div",{key:1,class:"q-toast-error",onClick:t[9]||(t[9]=r=>e.actionError=null)},[t[25]||(t[25]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-info"})],-1)),g(" "+c(e.actionError),1)])):p("v-if",!0),p(" Jobs table "),o("div",ey,[o("div",ty,[o("div",oy,"ALL JOBS \xB7 "+c(e.fmt?.uppercase(e.selectedQueue)),1),o("div",sy,[(l(!0),d(Q,null,se(e.allStates,(r,s)=>(l(),d("label",ny,[N(o("input",ry,null,512),[[n,{state:e.viewState,set:i=>{e.stateFilter[r]=i},value:e.stateFilter[r],form:null,options:{}}]]),o("span",{class:A("q-state-chip q-state-"+r)},c(r),3)]))),256))])]),o("div",iy,[N(o("input",ay,null,512),[[n,{state:e.viewState,set:r=>{e.query.search=r},value:e.query?.search,form:null,options:{}}]]),o("label",ly,[N(o("input",dy,null,512),[[n,{state:e.viewState,set:r=>{e.query.autoRefresh=r},value:e.query?.autoRefresh,form:null,options:{}}]]),t[26]||(t[26]=g(" Auto-refresh ",-1))]),o("button",{class:"btn btn-sm btn-icon",type:"button",title:"Refresh now",onClick:t[10]||(t[10]=r=>e.refreshNow()),"aria-label":"Refresh"},[...t[27]||(t[27]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-refresh"})],-1)])])]),e.filteredJobs().length>0?(l(),d("table",uy,[t[46]||(t[46]=o("thead",null,[o("tr",null,[o("th",null,"STATE"),o("th",null,"JOB ID"),o("th",null,"PAYLOAD"),o("th",null,"ATTEMPTS"),o("th",null,"DURATION"),o("th",null,"PROGRESS"),o("th")])],-1)),(l(!0),d(Q,null,se(e.filteredJobs(),(r,s)=>(l(),d("tbody",null,[o("tr",{style:{cursor:"pointer"},class:A({"q-row-failed":r?._state=="failed","q-row-expanded":e.expanded[r?.id]}),onClick:i=>e.toggleJob(r)},[o("td",py,[o("span",{textContent:c(r?._state),class:A("q-state-badge q-state-"+r?._state)},null,10,fy),r?._state=="delayed"&&r?.delayUntil?(l(),d("span",{key:0,class:"q-delay-hint",textContent:c(e.delayCountdown(r?.delayUntil))},null,8,my)):p("v-if",!0)]),o("td",hy,[(l(),d("svg",{class:A(["ui-icon q-chevron",{"q-chevron-open":e.expanded[r?.id]}]),"aria-hidden":"true"},[...t[28]||(t[28]=[o("use",{href:"#ui-icon-chevron-right"},null,-1)])],2)),o("a",{target:"_blank",textContent:c("job:"+e.fmt.limitTo(r?.id,6)),onClick:t[11]||(t[11]=i=>i.stopPropagation()),href:e.safeUrl("/r/"+r?.id)},null,8,vy)]),o("td",gy,[o("span",{textContent:c(r?.name||"anonymize")},null,8,yy),r?.data?.repoId&&r?.data?.repoId!==r?.name?(l(),d("span",by," \xB7 "+c(r?.data?.repoId),1)):p("v-if",!0)]),o("td",{class:"q-cell-num",textContent:c(r?.attemptsMade||1)},null,8,wy),o("td",{class:"q-cell-num",textContent:c(e.jobDuration(r))},null,8,ky),o("td",Ey,[e.jobProgressPct(r)!==null?(l(),d("div",Cy,[o("div",{class:"q-progress-bar",style:Me({"--pct":e.jobProgressPct(r)+"%"})},null,4),o("span",{class:"q-progress-label",textContent:c(e.jobProgressPct(r)+"%")},null,8,_y)])):p("v-if",!0)]),o("td",Sy,[r?._state=="failed"?(l(),d("button",{key:0,class:"btn btn-sm btn-icon",title:"Retry",onClick:i=>{e.retryJob(r),i.stopPropagation()},"aria-label":"Retry job"},[...t[29]||(t[29]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-refresh"})],-1)])],8,Ny)):p("v-if",!0),o("button",{class:"btn btn-sm btn-icon",title:"Remove","aria-label":"Remove job",onClick:i=>{e.removeJob(r),i.stopPropagation()}},[...t[30]||(t[30]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-trash"})],-1)])],8,Dy)])],10,cy),e.expanded[r?.id]?(l(),d("tr",Ry,[o("td",Ty,[o("div",Ay,[o("div",Oy,[o("div",Iy,[t[31]||(t[31]=o("span",{class:"q-job-detail-label"},"JOB ID",-1)),o("span",Py,[o("a",{target:"_blank",textContent:c(r?.id),href:e.safeUrl("/r/"+r?.id)},null,8,Vy)])]),o("div",qy,[t[32]||(t[32]=o("span",{class:"q-job-detail-label"},"STATE",-1)),o("span",My,[o("span",{textContent:c(r?._state),class:A("q-state-badge q-state-"+r?._state)},null,10,$y)])]),r?.data?.repoId?(l(),d("div",Ly,[t[33]||(t[33]=o("span",{class:"q-job-detail-label"},"REPO ID",-1)),o("span",{class:"q-job-detail-value",textContent:c(r?.data?.repoId)},null,8,Uy)])):p("v-if",!0),r?.timestamp?(l(),d("div",Fy,[t[34]||(t[34]=o("span",{class:"q-job-detail-label"},"CREATED",-1)),o("span",{class:"q-job-detail-value",textContent:c(e.humanTime(r?.timestamp))},null,8,zy)])):p("v-if",!0),r?._state=="delayed"&&r?.delayUntil?(l(),d("div",Hy,[t[35]||(t[35]=o("span",{class:"q-job-detail-label"},"RETRY AT",-1)),o("span",By,c(e.humanTime(r?.delayUntil))+" ("+c(e.delayCountdown(r?.delayUntil))+")",1)])):p("v-if",!0),r?.processedOn?(l(),d("div",jy,[t[36]||(t[36]=o("span",{class:"q-job-detail-label"},"PROCESSED",-1)),o("span",{class:"q-job-detail-value",textContent:c(e.humanTime(r?.processedOn))},null,8,Gy)])):p("v-if",!0),r?.finishedOn?(l(),d("div",Wy,[t[37]||(t[37]=o("span",{class:"q-job-detail-label"},"FINISHED",-1)),o("span",{class:"q-job-detail-value",textContent:c(e.humanTime(r?.finishedOn))},null,8,Ky)])):p("v-if",!0),r?.attemptsMade?(l(),d("div",Yy,[t[38]||(t[38]=o("span",{class:"q-job-detail-label"},"ATTEMPTS",-1)),o("span",{class:"q-job-detail-value",textContent:c(r?.attemptsMade)},null,8,Jy)])):p("v-if",!0),r?.progress&&r?.progress?.status?(l(),d("div",Qy,[t[39]||(t[39]=o("span",{class:"q-job-detail-label"},"STATUS",-1)),o("span",{class:"q-job-detail-value",textContent:c(r?.progress?.status)},null,8,Xy)])):p("v-if",!0),e.jobProgressPct(r)!==null?(l(),d("div",Zy,[t[40]||(t[40]=o("span",{class:"q-job-detail-label"},"PROGRESS",-1)),o("span",{class:"q-job-detail-value",textContent:c(e.jobProgressPct(r)+"%")},null,8,xy)])):p("v-if",!0)]),r?.failedReason?(l(),d("div",eb,[t[41]||(t[41]=o("span",{class:"q-job-detail-label"},"ERROR",-1)),o("div",{class:"q-error-reason",textContent:c(r?.failedReason)},null,8,tb)])):p("v-if",!0),r?.stacktrace?.length?(l(),d("div",ob,[t[42]||(t[42]=o("span",{class:"q-job-detail-label"},"STACKTRACE",-1)),(l(!0),d(Q,null,se(r?.stacktrace,(i,a)=>(l(),d("pre",{class:"q-error-stack",key:a},[o("code",{textContent:c(i)},null,8,sb)]))),128))])):p("v-if",!0),o("div",rb,[r?._state=="failed"?(l(),d("button",{key:0,class:"btn btn-sm",onClick:i=>e.retryJob(r)},[...t[43]||(t[43]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-refresh"})],-1),g(" Retry",-1)])],8,ib)):p("v-if",!0),o("button",{class:"btn btn-sm",onClick:i=>e.removeJob(r)},[...t[44]||(t[44]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-trash"})],-1),g(" Remove",-1)])],8,ab),o("a",{class:"btn btn-sm",target:"_blank",href:e.safeUrl("/r/"+r?.id)},[...t[45]||(t[45]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-external-link"})],-1),g(" View repo",-1)])],8,lb)])])])])):p("v-if",!0)]))),256))])):p("v-if",!0),e.filteredJobs().length==0?(l(),d("div",db,[t[47]||(t[47]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-check-circle"})],-1)),e.query?.search?p("v-if",!0):(l(),d("span",ub,"No jobs in the "+c(e.selectedQueue)+" queue.",1)),e.query?.search?(l(),d("span",cb,"No jobs match the current filters.")):p("v-if",!0)])):p("v-if",!0)])])}var pb={class:"container paper-page admin-page"},fb={class:"admin-summary"},mb={class:"summary-total"},hb={class:"summary-meta"},vb=["aria-pressed"],gb={class:"count"},yb=["aria-pressed"],bb={class:"count"},wb=["aria-pressed"],kb={class:"count"},Eb=["aria-pressed"],Cb={class:"count"},_b=["aria-pressed"],Sb={class:"count"},Nb={key:0,class:"alert alert-danger",style:{margin:"8px 0"}},Db={class:"w-100 admin-filter-toolbar","aria-label":"Repositories","accept-charset":"UTF-8"},Rb={class:"admin-filter-row"},Tb={class:"search-wrap"},Ab={type:"search",class:"form-control","aria-label":"Search repositories",placeholder:"Search repoId, source repo, error message\u2026",autocomplete:"off"},Ob={key:0,class:"admin-search-hint"},Ib={class:"admin-filter-inline"},Pb={type:"text",class:"form-control form-control-sm",placeholder:"username"},Vb={class:"admin-filter-inline"},qb={type:"text",class:"form-control form-control-sm",placeholder:"ID"},Mb={class:"admin-filter-inline","aria-label":"Pagination"},$b=["disabled"],Lb={style:{"font-family":"var(--font-mono)","font-size":"12px",color:"var(--ink-muted)"}},Ub=["disabled"],Fb={key:0,class:"admin-filter-row"},zb={class:"admin-active-chips"},Hb={class:"key"},Bb=["onClick"],jb={key:1,class:"bulk-bar"},Gb={class:"paper-table paper-table-repos has-bulk w-100",role:"table","aria-label":"Repositories"},Wb={class:"paper-table-head",role:"row"},Kb={role:"columnheader",style:{width:"28px"}},Yb=["checked"],Jb={role:"columnheader"},Qb={role:"columnheader"},Xb={role:"columnheader",class:"num"},Zb={role:"columnheader"},xb={role:"cell",style:{width:"28px"}},e1={type:"checkbox","aria-label":"Select repository"},t1={class:"cell-anon",role:"cell"},o1={class:"anon-text"},s1=["textContent","href"],n1={class:"anon-sub"},r1=["textContent","href"],i1={key:0},a1=["textContent","href"],l1={key:1},d1=["textContent","href"],u1={key:2},c1={class:"cell-status",role:"cell"},p1={class:"status-line"},f1=["textContent"],m1=["textContent","title"],h1={class:"cell-views num",role:"cell"},v1=["textContent"],g1={class:"cell-expires",role:"cell"},y1=["textContent"],b1={class:"cell-actions",role:"cell"},w1={class:"dropdown"},k1={class:"dropdown-menu dropdown-menu-right"},E1=["href"],C1=["href"],_1=["href"],S1=["onClick"],N1=["onClick"],D1=["onClick"],R1=["onClick"],T1=["onClick"],A1=["onClick"],O1={key:0,class:"paper-table-empty"},I1={class:"admin-toolbar",style:{"justify-content":"space-between","border-bottom":"none"}},P1={style:{"font-size":"12px",color:"var(--ink-muted)"}},V1={key:0,class:"pagination-compact"},q1=["disabled"],M1=["max"],$1=["disabled"],L1={class:"admin-filter-inline"},U1={class:"form-control form-control-sm"};function dl(e,t){let n=ye("field"),r=ye("form");return l(),d("div",pb,[t[69]||(t[69]=le('
Admin \xA0/\xA0 Repositories

Repositories

',3)),o("div",fb,[o("span",mb,c(e.total>=0?e.fmt.number(e.total):"\u2026"),1),o("span",hb,c(e.fmt?.humanFileSize(e.totalSize))+" on disk",1),o("button",{type:"button",class:A(["summary-pill ok",{active:e.query?.ready}]),title:"Toggle ready filter",onClick:t[0]||(t[0]=s=>{e.query.ready=!e.query.ready,e.query.page=1}),"aria-pressed":!!e.query?.ready},[t[18]||(t[18]=g("Ready ",-1)),o("span",gb,c(e.fmt?.number(e.statusCountFor("ready"))),1)],10,vb),o("button",{type:"button",class:A(["summary-pill warn",{active:e.query?.preparing}]),title:"Toggle preparing filter",onClick:t[1]||(t[1]=s=>{e.query.preparing=!e.query.preparing,e.query.page=1}),"aria-pressed":!!e.query?.preparing},[t[19]||(t[19]=g("Preparing ",-1)),o("span",bb,c(e.fmt?.number(e.statusCountFor("preparing")+e.statusCountFor("download"))),1)],10,yb),o("button",{type:"button",class:A(["summary-pill error",{active:e.query?.error}]),title:"Toggle errored filter",onClick:t[2]||(t[2]=s=>{e.query.error=!e.query.error,e.query.page=1}),"aria-pressed":!!e.query?.error},[t[20]||(t[20]=g("Errored ",-1)),o("span",kb,c(e.fmt?.number(e.statusCountFor("error"))),1)],10,wb),o("button",{type:"button",class:A(["summary-pill",{active:e.query?.expired}]),title:"Toggle expired filter",onClick:t[3]||(t[3]=s=>{e.query.expired=!e.query.expired,e.query.page=1}),"aria-pressed":!!e.query?.expired},[t[21]||(t[21]=g("Expired ",-1)),o("span",Cb,c(e.fmt?.number(e.statusCountFor("expired")+e.statusCountFor("expiring"))),1)],10,Eb),o("button",{type:"button",class:A(["summary-pill",{active:e.query?.removed}]),title:"Toggle removed filter",onClick:t[4]||(t[4]=s=>{e.query.removed=!e.query.removed,e.query.page=1}),"aria-pressed":!!e.query?.removed},[t[22]||(t[22]=g("Removed ",-1)),o("span",Sb,c(e.fmt?.number(e.statusCountFor("removed")+e.statusCountFor("removing"))),1)],10,_b)]),e.fetchError?(l(),d("div",Nb,[t[23]||(t[23]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-warning"})],-1)),g(" "+c(e.fetchError),1)])):p("v-if",!0),N((l(),d("form",Db,[p(" Row 1: search + scoped inputs + headline actions "),o("div",Rb,[o("div",Tb,[N(o("input",Ab,null,512),[[n,{state:e.viewState,set:s=>{e.query.search=s},value:e.query?.search,form:null,options:{}}]]),e.query?.search?p("v-if",!0):(l(),d("span",Ob,"/"))]),o("span",Ib,[t[24]||(t[24]=o("label",null,"Owner",-1)),N(o("input",Pb,null,512),[[n,{state:e.viewState,set:s=>{e.query.owner=s},value:e.query?.owner,form:null,options:{}}]])]),o("span",Vb,[t[25]||(t[25]=o("label",null,"Conference",-1)),N(o("input",qb,null,512),[[n,{state:e.viewState,set:s=>{e.query.conference=s},value:e.query?.conference,form:null,options:{}}]])]),t[29]||(t[29]=o("span",{class:"admin-filter-spacer"},null,-1)),o("button",{class:"btn btn-sm",type:"button",title:"Export current view to CSV",onClick:t[5]||(t[5]=s=>e.exportCsv())},[...t[26]||(t[26]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-export"})],-1),g(" Export",-1)])]),o("span",Mb,[o("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[6]||(t[6]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1,"aria-label":"Previous page"},[...t[27]||(t[27]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-chevron-left"})],-1)])],8,$b),o("span",Lb,c(e.query?.page)+"/"+c(e.totalPage||1),1),o("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[7]||(t[7]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage,"aria-label":"Next page"},[...t[28]||(t[28]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-chevron-right"})],-1)])],8,Ub)])]),p(" Row 2: appears only when there are active filter chips "),e.chips?.length?(l(),d("div",Fb,[o("div",zb,[(l(!0),d(Q,null,se(e.chips,(s,i)=>(l(),d("span",{class:"admin-active-chip",key:s?.key},[o("span",Hb,c(s?.label),1),o("span",null,c(s?.value),1),o("button",{type:"button","aria-label":"Remove filter",onClick:a=>e.clearFilter(s.key)},[...t[30]||(t[30]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-close"})],-1)])],8,Bb)]))),128))])])):p("v-if",!0)])),[[r,e.viewState]]),e.selectedCount()>0?(l(),d("div",jb,[o("span",null,[o("strong",null,c(e.selectedCount()),1),t[31]||(t[31]=g(" selected",-1))]),o("button",{class:"btn btn-sm",type:"button",onClick:t[8]||(t[8]=s=>e.bulkRefresh())},[...t[32]||(t[32]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-refresh"})],-1),g(" Force refresh",-1)])]),o("button",{class:"btn btn-sm text-danger",type:"button",onClick:t[9]||(t[9]=s=>e.bulkRemoveCache())},[...t[33]||(t[33]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-broom"})],-1),g(" Remove cache",-1)])]),o("button",{class:"btn btn-sm",type:"button",onClick:t[10]||(t[10]=s=>e.clearSelection())},"Clear")])):p("v-if",!0),o("div",Gb,[o("div",Wb,[o("div",Kb,[o("input",{type:"checkbox","aria-label":"Select all on page",onClick:t[11]||(t[11]=s=>e.selectAllOnPage()),checked:e.allSelected},null,8,Yb)]),o("div",Jb,[o("button",{type:"button",class:A(["sortable",{active:e.query?.sort=="source.repositoryName"}]),onClick:t[12]||(t[12]=s=>e.sortBy("source.repositoryName"))},[t[35]||(t[35]=g("Repository ",-1)),e.sortIcon("source.repositoryName")?(l(),d("svg",{key:0,class:A(["ui-icon sort-direction",{ascending:e.sortIcon("source.repositoryName")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[34]||(t[34]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),o("div",Qb,[o("button",{type:"button",class:A(["sortable",{active:e.query?.sort=="status"}]),onClick:t[13]||(t[13]=s=>e.sortBy("status"))},[t[37]||(t[37]=g("Status ",-1)),e.sortIcon("status")?(l(),d("svg",{key:0,class:A(["ui-icon sort-direction",{ascending:e.sortIcon("status")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[36]||(t[36]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),o("div",Xb,[o("button",{type:"button",class:A(["sortable",{active:e.query?.sort=="pageView"}]),onClick:t[14]||(t[14]=s=>e.sortBy("pageView"))},[t[39]||(t[39]=g("Views ",-1)),e.sortIcon("pageView")?(l(),d("svg",{key:0,class:A(["ui-icon sort-direction",{ascending:e.sortIcon("pageView")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[38]||(t[38]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),o("div",Zb,[o("button",{type:"button",class:A(["sortable",{active:e.query?.sort=="anonymizeDate"}]),onClick:t[15]||(t[15]=s=>e.sortBy("anonymizeDate"))},[t[41]||(t[41]=g("Anonymized ",-1)),e.sortIcon("anonymizeDate")?(l(),d("svg",{key:0,class:A(["ui-icon sort-direction",{ascending:e.sortIcon("anonymizeDate")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[40]||(t[40]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),t[42]||(t[42]=o("div",{role:"columnheader","aria-label":"Actions"},null,-1))]),(l(!0),d(Q,null,se(e.filteredRepositories,(s,i)=>(l(),d("div",{class:A(["paper-table-row",{"repo-inactive":s?.status=="expired"||s?.status=="removed","repo-error":s?.status=="error","row-selected":e.selected[s?.repoId]}]),role:"row"},[o("div",xb,[N(o("input",e1,null,512),[[n,{state:e.viewState,set:a=>{e.selected[s.repoId]=a},value:e.selected[s?.repoId],form:null,options:{}}]])]),o("div",t1,[t[47]||(t[47]=o("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Repository"},[o("use",{href:"#project-type-repo"})],-1)),o("div",o1,[o("a",{class:"repo-name",target:"_blank",textContent:c(s?.repoId),href:e.safeUrl("/r/"+s?.repoId)},null,8,s1),o("div",n1,[o("a",{textContent:c(s?.source?.repositoryName),href:e.safeUrl("https://github.com/"+s?.source?.repositoryName+"/")},null,8,r1),s?.options?.update?(l(),d("span",i1,[t[43]||(t[43]=g("\xA0\xB7\xA0",-1)),o("a",{textContent:c(s?.source?.branch),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.branch)},null,8,a1)])):p("v-if",!0),s?.options?.update?p("v-if",!0):(l(),d("span",l1,[t[44]||(t[44]=g("\xA0\xB7\xA0@",-1)),o("a",{textContent:c(s?.source?.commit?.substring(0,8)),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.commit)},null,8,d1)])),s?.conference?(l(),d("span",u1,[t[45]||(t[45]=g("\xA0\xB7\xA0",-1)),t[46]||(t[46]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-conference"})],-1)),g(" "+c(s?.conference),1)])):p("v-if",!0),o("span",null,"\xA0\xB7\xA0"+c(e.fmt?.humanFileSize(s?.size?.storage)),1),o("span",null,"\xA0\xB7\xA0"+c(e.fmt?.number(s?.options?.terms?.length))+" terms",1)])])]),o("div",c1,[o("span",p1,[o("span",{class:A(["status-dot",{"status-removed":s?.status=="removed"||s?.status=="expired","status-ready":s?.status=="ready","status-error":s?.status=="error","status-preparing":s?.status=="preparing"}])},null,2),o("span",{textContent:c(e.fmt?.title(s?.status))},null,8,f1)]),s?.statusMessage?(l(),d("span",{key:0,class:"status-sub",textContent:c(e.fmt?.statusMsg(s?.statusMessage)),title:s?.statusMessage},null,8,m1)):p("v-if",!0)]),o("div",h1,[t[48]||(t[48]=o("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-eye"})],-1)),t[49]||(t[49]=g()),o("span",{textContent:c(e.fmt?.number(s?.pageView||0))},null,8,v1)]),o("div",g1,[t[50]||(t[50]=o("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-clock"})],-1)),t[51]||(t[51]=g()),o("span",{textContent:c(e.fmt?.humanTime(s?.anonymizeDate))},null,8,y1)]),o("div",b1,[o("div",w1,[t[63]||(t[63]=o("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions"},[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-more"})])],-1)),o("div",k1,[o("a",{class:"dropdown-item",href:e.safeUrl("/anonymize/"+s?.repoId)},[...t[52]||(t[52]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-edit"})],-1),g(" Edit",-1)])],8,E1),o("a",{class:"dropdown-item",href:e.safeUrl("/r/"+s?.repoId+"/")},[...t[53]||(t[53]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-eye"})],-1),g(" View repo",-1)])],8,C1),s?.options?.page&&s?.status=="ready"?(l(),d("a",{key:0,class:"dropdown-item",target:"_self",href:e.safeUrl("/w/"+s?.repoId+"/")},[...t[54]||(t[54]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-globe"})],-1),g(" View page",-1)])],8,_1)):p("v-if",!0),o("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.fetchGithubInfo(s),["prevent"])},[...t[55]||(t[55]=[o("i",{class:"fab fa-github"},null,-1),g(" Live GitHub info",-1)])],8,S1),t[61]||(t[61]=o("div",{class:"dropdown-divider"},null,-1)),N(o("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.updateRepository(s),["prevent"])},[...t[56]||(t[56]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-refresh"})],-1),g(" Force update",-1)])],8,N1),[[W,s?.status=="ready"||s?.status=="error"]]),N(o("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.updateRepository(s),["prevent"])},[...t[57]||(t[57]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-check-circle"})],-1),g(" Enable",-1)])],8,D1),[[W,s?.status=="removed"]]),N(o("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.showStatusMessage(s),["prevent"])},[...t[58]||(t[58]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-warning"})],-1),g(" View status message",-1)])],8,R1),[[W,s?.statusMessage]]),t[62]||(t[62]=o("div",{class:"dropdown-divider"},null,-1)),o("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.removeCache(s),["prevent"])},[...t[59]||(t[59]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-broom"})],-1),g(" Remove cache",-1)])],8,T1),N(o("a",{class:"dropdown-item text-danger",href:"#",onClick:ce(a=>e.removeRepository(s),["prevent"])},[...t[60]||(t[60]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-trash"})],-1),g(" Remove",-1)])],8,A1),[[W,s?.status=="ready"]])])])])],2))),256)),e.filteredRepositories?.length==0?(l(),d("div",O1,[...t[64]||(t[64]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-inbox"})],-1),o("span",null,"No repositories match the current filters.",-1)])])):p("v-if",!0)]),o("div",I1,[o("span",P1,c(e.fmt?.number(e.total))+" results",1),e.totalPage>1?(l(),d("div",V1,[o("button",{class:"btn btn-sm",onClick:t[16]||(t[16]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1},[...t[65]||(t[65]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-chevron-left"})],-1),g(" Previous ",-1)])],8,q1),N(o("input",{type:"number",class:"form-control form-control-sm",min:"1",style:{width:"56px"},"aria-label":"Page",max:e.totalPage},null,8,M1),[[n,{state:e.viewState,set:s=>{e.query.page=s},value:e.query?.page,form:null,options:{}}]]),o("span",null,"of "+c(e.totalPage),1),o("button",{class:"btn btn-sm",onClick:t[17]||(t[17]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage},[...t[66]||(t[66]=[g(" Next ",-1),o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-chevron-right"})],-1)])],8,$1)])):p("v-if",!0),o("span",L1,[t[68]||(t[68]=o("label",null,"Per page",-1)),N((l(),d("select",U1,[...t[67]||(t[67]=[le('',5)])])),[[n,{state:e.viewState,set:s=>{e.query.limit=s},value:e.query?.limit,form:null,options:{}}]])])])])}var F1={class:"container paper-page admin-page"},z1={class:"paper-crumbs"},H1={class:"here"},B1={class:"paper-page-title"},j1={key:0,class:"user-detail-card"},G1={class:"user-header"},W1=["src"],K1={class:"status-dot-wrap"},Y1=["textContent"],J1={key:0,class:"type-badge type-repo"},Q1={class:"user-actions",style:{"margin-top":"4px"}},X1={class:"user-detail-grid"},Z1={class:"detail-value"},x1={class:"detail-value"},ew={class:"detail-value",style:{"font-family":"var(--font-mono)","font-size":"0.85rem"}},tw={class:"detail-value"},ow=["href"],sw={class:"detail-value"},nw={class:"detail-value"},rw={key:0},iw={key:1,class:"text-muted"},aw={class:"detail-value"},lw={key:0,style:{"margin-top":"20px"}},dw={class:"paper-table w-100",style:{"margin-top":"10px"}},uw={class:"paper-table-row",style:{"grid-template-columns":"1fr 160px"}},cw={class:"cell-anon",role:"cell"},pw={class:"anon-text"},fw=["textContent"],mw={class:"cell-expires",role:"cell"},hw={key:1,class:"admin-section-header"},vw={class:"section-count"},gw={key:2,class:"user-detail-card"},yw={type:"text",class:"form-control",placeholder:"Token name (e.g. dev-laptop)",required:""},bw={key:0,class:"alert alert-warning",role:"alert"},ww={style:{"white-space":"pre-wrap","word-break":"break-all",margin:"8px 0 0","font-family":"var(--font-mono)","font-size":"0.85rem"}},kw={key:1,class:"paper-table w-100"},Ew={class:"paper-table-row",role:"row",style:{"grid-template-columns":"1fr 200px 200px 80px"}},Cw=["textContent"],_w=["textContent"],Sw={role:"cell"},Nw={key:0},Dw={key:1,class:"text-muted"},Rw={role:"cell"},Tw=["onClick"],Aw={key:2,class:"paper-table-empty"},Ow={class:"admin-section-header"},Iw={class:"section-count"},Pw={class:"admin-summary"},Vw={class:"summary-total"},qw=["aria-pressed"],Mw={class:"count"},$w=["aria-pressed"],Lw={class:"count"},Uw=["aria-pressed"],Fw={class:"count"},zw=["aria-pressed"],Hw={class:"count"},Bw=["aria-pressed"],jw={class:"count"},Gw={class:"w-100 admin-filter-toolbar","aria-label":"Repositories","accept-charset":"UTF-8"},Ww={class:"admin-filter-row"},Kw={class:"search-wrap"},Yw={type:"search",class:"form-control","aria-label":"Search repositories",placeholder:"Search repoId, source repo, error message\u2026",autocomplete:"off"},Jw={key:3,class:"bulk-bar"},Qw={class:"paper-table paper-table-repos has-bulk w-100",role:"table","aria-label":"Repositories"},Xw={class:"paper-table-head",role:"row"},Zw={role:"columnheader",style:{width:"28px"}},xw=["checked"],ek={role:"columnheader"},tk={role:"columnheader"},ok={role:"columnheader",class:"num"},sk={role:"columnheader"},nk={role:"cell",style:{width:"28px"}},rk={type:"checkbox","aria-label":"Select repository"},ik={class:"cell-anon",role:"cell"},ak={class:"anon-text"},lk=["textContent","href"],dk={class:"anon-sub"},uk=["textContent","href"],ck={key:0},pk=["textContent","href"],fk={key:1},mk=["textContent","href"],hk={key:2},vk={class:"cell-status",role:"cell"},gk={class:"status-line"},yk=["textContent"],bk=["textContent","title"],wk=["textContent"],kk=["textContent"],Ek={class:"cell-actions",role:"cell"},Ck={class:"dropdown"},_k={class:"dropdown-menu dropdown-menu-right"},Sk=["href"],Nk=["href"],Dk=["href"],Rk=["onClick"],Tk=["onClick"],Ak=["onClick"],Ok=["onClick"],Ik=["onClick"],Pk=["onClick"],Vk={key:0,class:"paper-table-empty"};function ul(e,t){let n=ye("field"),r=ye("form");return l(),d("div",F1,[o("div",z1,[t[22]||(t[22]=o("a",{href:"/admin/users"},"Users",-1)),t[23]||(t[23]=g(" \xA0/\xA0 ",-1)),o("span",H1,c(e.userInfo?.username||"Profile"),1)]),o("h1",B1,c(e.userInfo?.username||"User"),1),t[85]||(t[85]=le('',1)),e.userInfo?(l(),d("div",j1,[o("div",G1,[e.userInfo?.photo?(l(),d("img",{key:0,width:"56",height:"56",src:e.safeUrl(e.userInfo?.photo)},null,8,W1)):p("v-if",!0),o("div",null,[o("h2",null,[g(c(e.userInfo?.username)+" ",1),o("span",K1,[o("span",{class:A(["status-dot",{"status-ready":e.userInfo?.status=="active","status-removed":e.userInfo?.status!="active"}])},null,2),o("span",{textContent:c(e.fmt?.title(e.userInfo?.status))},null,8,Y1)]),e.userInfo?.isAdmin?(l(),d("span",J1,"Admin")):p("v-if",!0)]),o("div",Q1,[e.userInfo?.status!=="banned"?(l(),d("button",{key:0,class:"btn btn-sm text-danger",onClick:t[0]||(t[0]=s=>e.banUser())},[...t[24]||(t[24]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-ban"})],-1),g(" Ban",-1)])])):p("v-if",!0),e.userInfo?.status==="banned"||e.userInfo?.status==="removed"?(l(),d("button",{key:1,class:"btn btn-sm",onClick:t[1]||(t[1]=s=>e.activateUser())},[...t[25]||(t[25]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-check-circle"})],-1),g(" Activate",-1)])])):p("v-if",!0),e.userInfo?.isAdmin?p("v-if",!0):(l(),d("button",{key:2,class:"btn btn-sm",onClick:t[2]||(t[2]=s=>e.promoteUser())},[...t[26]||(t[26]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-user-shield"})],-1),g(" Promote to admin",-1)])])),e.userInfo?.isAdmin?(l(),d("button",{key:3,class:"btn btn-sm text-danger",onClick:t[3]||(t[3]=s=>e.demoteUser())},[...t[27]||(t[27]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-user-minus"})],-1),g(" Remove admin",-1)])])):p("v-if",!0)])])]),o("div",X1,[t[30]||(t[30]=o("div",{class:"detail-label"},"ID",-1)),o("div",Z1,c(e.userInfo?._id),1),t[31]||(t[31]=o("div",{class:"detail-label"},"Email",-1)),o("div",x1,c(e.userInfo?.emails?.[0]?.email),1),t[32]||(t[32]=o("div",{class:"detail-label"},"Access token",-1)),o("div",ew,c(e.userInfo?.accessTokens?.github),1),t[33]||(t[33]=o("div",{class:"detail-label"},"GitHub",-1)),o("div",tw,[o("a",{target:"_blank",href:e.safeUrl("https://github.com/"+e.userInfo?.username)},[t[28]||(t[28]=o("i",{class:"fab fa-github"},null,-1)),g(" "+c(e.userInfo?.username),1)],8,ow)]),t[34]||(t[34]=o("div",{class:"detail-label"},"Created",-1)),o("div",sw,c(e.fmt?.humanTime(e.userInfo?.dateOfEntry)),1),t[35]||(t[35]=o("div",{class:"detail-label"},"Last connection",-1)),o("div",nw,[e.userInfo?.accessTokenDates?.github?(l(),d("span",rw,c(e.fmt?.humanTime(e.userInfo?.accessTokenDates?.github)),1)):p("v-if",!0),e.userInfo?.accessTokenDates?.github?p("v-if",!0):(l(),d("span",iw,"never"))]),t[36]||(t[36]=o("div",{class:"detail-label"},"GitHub repos",-1)),o("div",aw,[g(c(e.userInfo?.repositories?.length)+" repositories ",1),o("button",{class:"btn btn-sm ml-2",onClick:t[4]||(t[4]=s=>e.showRepos=!e.showRepos)},c(e.showRepos?"Hide":"Show"),1),o("button",{class:"btn btn-sm ml-1",onClick:t[5]||(t[5]=s=>e.getGitHubRepositories())},[...t[29]||(t[29]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-refresh"})],-1),g(" Refresh ",-1)])])])]),e.showRepos?(l(),d("div",lw,[t[39]||(t[39]=o("div",{class:"paper-section-eyebrow"},"GitHub repositories",-1)),o("div",dw,[(l(!0),d(Q,null,se(e.userInfo?.repositories,(s,i)=>(l(),d("div",uw,[o("div",cw,[t[37]||(t[37]=o("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Repository"},[o("use",{href:"#project-type-repo"})],-1)),o("div",pw,[o("span",{class:"repo-name",textContent:c(s?.name)},null,8,fw)])]),o("div",mw,[t[38]||(t[38]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-database"})],-1)),g(" "+c(e.fmt?.humanFileSize(s?.size)),1)])]))),256))])])):p("v-if",!0)])):p("v-if",!0),e.userInfo&&e.userInfo?.isAdmin&&e.user&&e.user?.username==e.userInfo?.username?(l(),d("div",hw,[t[40]||(t[40]=o("h2",null,[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-key"})]),g(" API tokens")],-1)),o("span",vw,c(e.tokens?.length),1)])):p("v-if",!0),e.userInfo&&e.userInfo?.isAdmin&&e.user&&e.user?.username==e.userInfo?.username?(l(),d("div",gw,[t[46]||(t[46]=o("p",{class:"paper-page-lede"},[g("Personal API tokens for this admin account. Send as "),o("code",null,"Authorization: Bearer "),g(" to authenticate without GitHub OAuth (useful for development).")],-1)),N((l(),d("form",{class:"d-flex",style:{gap:"8px","margin-bottom":"12px"},onSubmit:t[6]||(t[6]=ce(s=>e.submitForm(s,()=>{e.createToken()}),["prevent"]))},[N(o("input",yw,null,512),[[n,{state:e.viewState,set:s=>{e.tokenForm.name=s},value:e.tokenForm?.name,form:null,options:{}}]]),t[41]||(t[41]=o("button",{type:"submit",class:"btn btn-primary"},[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-plus"})]),g(" Generate")],-1))],32)),[[r,e.viewState]]),e.tokenForm?.plaintext?(l(),d("div",bw,[t[42]||(t[42]=o("strong",null,"Copy this token now \u2014 it will not be shown again:",-1)),o("pre",ww,c(e.tokenForm?.plaintext),1),o("button",{class:"btn btn-sm",onClick:t[7]||(t[7]=s=>e.tokenForm.plaintext=null)},"Dismiss")])):p("v-if",!0),e.tokens?.length?(l(),d("div",kw,[t[44]||(t[44]=o("div",{class:"paper-table-head",role:"row",style:{"grid-template-columns":"1fr 200px 200px 80px"}},[o("div",{role:"columnheader"},"Name"),o("div",{role:"columnheader"},"Created"),o("div",{role:"columnheader"},"Last used"),o("div",{role:"columnheader","aria-label":"Actions"})],-1)),(l(!0),d(Q,null,se(e.tokens,(s,i)=>(l(),d("div",Ew,[o("div",{role:"cell",textContent:c(s?.name)},null,8,Cw),o("div",{role:"cell",textContent:c(e.fmt?.humanTime(s?.createdAt))},null,8,_w),o("div",Sw,[s?.lastUsedAt?(l(),d("span",Nw,c(e.fmt?.humanTime(s?.lastUsedAt)),1)):p("v-if",!0),s?.lastUsedAt?p("v-if",!0):(l(),d("span",Dw,"never"))]),o("div",Rw,[o("button",{class:"btn btn-sm text-danger btn-icon",title:"Revoke","aria-label":"Revoke token",onClick:a=>e.revokeToken(s)},[...t[43]||(t[43]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-trash"})],-1)])],8,Tw)])]))),256))])):p("v-if",!0),e.tokens?.length?p("v-if",!0):(l(),d("div",Aw,[...t[45]||(t[45]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-inbox"})],-1),o("span",null,"No tokens yet.",-1)])]))])):p("v-if",!0),o("div",Ow,[t[47]||(t[47]=o("h2",null,[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-type-repo"})]),g(" Anonymized repositories")],-1)),o("span",Iw,c(e.repositories?.length),1)]),o("div",Pw,[o("span",Vw,c(e.fmt?.number(e.repositories?.length)),1),o("button",{type:"button",class:A(["summary-pill ok",{active:e.filters?.status?.ready===!1}]),title:"Toggle ready filter",onClick:t[8]||(t[8]=s=>e.filters.status.ready=!e.filters.status.ready),"aria-pressed":e.filters?.status?.ready===!1},[t[48]||(t[48]=g("Ready ",-1)),o("span",Mw,c(e.fmt?.number(e.statusCountFor("ready"))),1)],10,qw),o("button",{type:"button",class:A(["summary-pill warn",{active:e.filters?.status?.preparing===!1}]),title:"Toggle preparing filter",onClick:t[9]||(t[9]=s=>e.filters.status.preparing=!e.filters.status.preparing),"aria-pressed":e.filters?.status?.preparing===!1},[t[49]||(t[49]=g("Preparing ",-1)),o("span",Lw,c(e.fmt?.number(e.statusCountFor("preparing"))),1)],10,$w),o("button",{type:"button",class:A(["summary-pill error",{active:e.filters?.status?.error===!1}]),title:"Toggle errored filter",onClick:t[10]||(t[10]=s=>e.filters.status.error=!e.filters.status.error),"aria-pressed":e.filters?.status?.error===!1},[t[50]||(t[50]=g("Errored ",-1)),o("span",Fw,c(e.fmt?.number(e.statusCountFor("error"))),1)],10,Uw),o("button",{type:"button",class:A(["summary-pill",{active:e.filters?.status?.expired===!1}]),title:"Toggle expired filter",onClick:t[11]||(t[11]=s=>e.filters.status.expired=!e.filters.status.expired),"aria-pressed":e.filters?.status?.expired===!1},[t[51]||(t[51]=g("Expired ",-1)),o("span",Hw,c(e.fmt?.number(e.statusCountFor("expired"))),1)],10,zw),o("button",{type:"button",class:A(["summary-pill",{active:e.filters?.status?.removed===!1}]),title:"Toggle removed filter",onClick:t[12]||(t[12]=s=>e.filters.status.removed=!e.filters.status.removed),"aria-pressed":e.filters?.status?.removed===!1},[t[52]||(t[52]=g("Removed ",-1)),o("span",jw,c(e.fmt?.number(e.statusCountFor("removed"))),1)],10,Bw)]),N((l(),d("form",Gw,[o("div",Ww,[o("div",Kw,[N(o("input",Yw,null,512),[[n,{state:e.viewState,set:s=>{e.search=s},value:e.search,form:null,options:{}}]])]),t[54]||(t[54]=o("span",{class:"admin-filter-spacer"},null,-1)),o("button",{class:"btn btn-sm",type:"button",title:"Export current view to CSV",onClick:t[13]||(t[13]=s=>e.exportCsv())},[...t[53]||(t[53]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-export"})],-1),g(" Export",-1)])])])])),[[r,e.viewState]]),e.selectedCount()>0?(l(),d("div",Jw,[o("span",null,[o("strong",null,c(e.selectedCount()),1),t[55]||(t[55]=g(" selected",-1))]),o("button",{class:"btn btn-sm",type:"button",onClick:t[14]||(t[14]=s=>e.bulkRefresh())},[...t[56]||(t[56]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-refresh"})],-1),g(" Force refresh",-1)])]),o("button",{class:"btn btn-sm text-danger",type:"button",onClick:t[15]||(t[15]=s=>e.bulkRemoveCache())},[...t[57]||(t[57]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-broom"})],-1),g(" Remove cache",-1)])]),o("button",{class:"btn btn-sm",type:"button",onClick:t[16]||(t[16]=s=>e.clearSelection())},"Clear")])):p("v-if",!0),o("div",Qw,[o("div",Xw,[o("div",Zw,[o("input",{type:"checkbox","aria-label":"Select all on page",onClick:t[17]||(t[17]=s=>e.selectAllOnPage()),checked:e.allSelected},null,8,xw)]),o("div",ek,[o("button",{type:"button",class:A(["sortable",{active:e.query?.sort=="source.repositoryName"}]),onClick:t[18]||(t[18]=s=>e.sortBy("source.repositoryName"))},[t[59]||(t[59]=g("Repository ",-1)),e.sortIcon("source.repositoryName")?(l(),d("svg",{key:0,class:A(["ui-icon sort-direction",{ascending:e.sortIcon("source.repositoryName")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[58]||(t[58]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),o("div",tk,[o("button",{type:"button",class:A(["sortable",{active:e.query?.sort=="status"}]),onClick:t[19]||(t[19]=s=>e.sortBy("status"))},[t[61]||(t[61]=g("Status ",-1)),e.sortIcon("status")?(l(),d("svg",{key:0,class:A(["ui-icon sort-direction",{ascending:e.sortIcon("status")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[60]||(t[60]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),o("div",ok,[o("button",{type:"button",class:A(["sortable",{active:e.query?.sort=="pageView"}]),onClick:t[20]||(t[20]=s=>e.sortBy("pageView"))},[t[63]||(t[63]=g("Views ",-1)),e.sortIcon("pageView")?(l(),d("svg",{key:0,class:A(["ui-icon sort-direction",{ascending:e.sortIcon("pageView")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[62]||(t[62]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),o("div",sk,[o("button",{type:"button",class:A(["sortable",{active:e.query?.sort=="anonymizeDate"}]),onClick:t[21]||(t[21]=s=>e.sortBy("anonymizeDate"))},[t[65]||(t[65]=g("Anonymized ",-1)),e.sortIcon("anonymizeDate")?(l(),d("svg",{key:0,class:A(["ui-icon sort-direction",{ascending:e.sortIcon("anonymizeDate")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[64]||(t[64]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),t[66]||(t[66]=o("div",{role:"columnheader","aria-label":"Actions"},null,-1))]),(l(!0),d(Q,null,se(e.filteredRepositories,(s,i)=>(l(),d("div",{class:A(["paper-table-row",{"repo-inactive":s?.status=="expired"||s?.status=="removed","repo-error":s?.status=="error","row-selected":e.selected[s?.repoId]}]),role:"row"},[o("div",nk,[N(o("input",rk,null,512),[[n,{state:e.viewState,set:a=>{e.selected[s.repoId]=a},value:e.selected[s?.repoId],form:null,options:{}}]])]),o("div",ik,[t[71]||(t[71]=o("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Repository"},[o("use",{href:"#project-type-repo"})],-1)),o("div",ak,[o("a",{class:"repo-name",target:"_blank",textContent:c(s?.repoId),href:e.safeUrl("/r/"+s?.repoId)},null,8,lk),o("div",dk,[o("a",{textContent:c(s?.source?.fullName),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/")},null,8,uk),s?.options?.update?(l(),d("span",ck,[t[67]||(t[67]=g("\xA0\xB7\xA0",-1)),o("a",{textContent:c(s?.source?.branch),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.branch)},null,8,pk)])):p("v-if",!0),s?.options?.update?p("v-if",!0):(l(),d("span",fk,[t[68]||(t[68]=g("\xA0\xB7\xA0@",-1)),o("a",{textContent:c(s?.source?.commit?.substring(0,8)),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.commit)},null,8,mk)])),s?.conference?(l(),d("span",hk,[t[69]||(t[69]=g("\xA0\xB7\xA0",-1)),t[70]||(t[70]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-conference"})],-1)),g(" "+c(s?.conference),1)])):p("v-if",!0),o("span",null,"\xA0\xB7\xA0"+c(e.fmt?.humanFileSize(s?.size?.storage)),1),o("span",null,"\xA0\xB7\xA0"+c(e.fmt?.number(s?.options?.terms?.length))+" terms",1)])])]),o("div",vk,[o("span",gk,[o("span",{class:A(["status-dot",{"status-removed":s?.status=="removed"||s?.status=="expired","status-ready":s?.status=="ready","status-error":s?.status=="error","status-preparing":s?.status=="preparing"}])},null,2),o("span",{textContent:c(e.fmt?.title(s?.status))},null,8,yk)]),s?.statusMessage?(l(),d("span",{key:0,class:"status-sub",textContent:c(e.fmt?.statusMsg(s?.statusMessage)),title:s?.statusMessage},null,8,bk)):p("v-if",!0)]),o("div",{class:"cell-views num",role:"cell",textContent:c(e.fmt?.number(s?.pageView||0))},null,8,wk),o("div",{class:"cell-expires",role:"cell",textContent:c(e.fmt?.humanTime(s?.anonymizeDate))},null,8,kk),o("div",Ek,[o("div",Ck,[t[83]||(t[83]=o("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions"},[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-more"})])],-1)),o("div",_k,[o("a",{class:"dropdown-item",href:e.safeUrl("/anonymize/"+s?.repoId)},[...t[72]||(t[72]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-edit"})],-1),g(" Edit",-1)])],8,Sk),o("a",{class:"dropdown-item",href:e.safeUrl("/r/"+s?.repoId+"/")},[...t[73]||(t[73]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-eye"})],-1),g(" View repo",-1)])],8,Nk),s?.options?.page&&s?.status=="ready"?(l(),d("a",{key:0,class:"dropdown-item",target:"_self",href:e.safeUrl("/w/"+s?.repoId+"/")},[...t[74]||(t[74]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-globe"})],-1),g(" View page",-1)])],8,Dk)):p("v-if",!0),o("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.fetchGithubInfo(s),["prevent"])},[...t[75]||(t[75]=[o("i",{class:"fab fa-github"},null,-1),g(" Live GitHub info",-1)])],8,Rk),t[81]||(t[81]=o("div",{class:"dropdown-divider"},null,-1)),N(o("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.updateRepository(s),["prevent"])},[...t[76]||(t[76]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-refresh"})],-1),g(" Force update",-1)])],8,Tk),[[W,s?.status=="ready"||s?.status=="error"]]),N(o("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.updateRepository(s),["prevent"])},[...t[77]||(t[77]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-check-circle"})],-1),g(" Enable",-1)])],8,Ak),[[W,s?.status=="removed"]]),N(o("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.showStatusMessage(s),["prevent"])},[...t[78]||(t[78]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-warning"})],-1),g(" View status message",-1)])],8,Ok),[[W,s?.statusMessage]]),t[82]||(t[82]=o("div",{class:"dropdown-divider"},null,-1)),o("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.removeCache(s),["prevent"])},[...t[79]||(t[79]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-broom"})],-1),g(" Remove cache",-1)])],8,Ik),N(o("a",{class:"dropdown-item text-danger",href:"#",onClick:ce(a=>e.removeRepository(s),["prevent"])},[...t[80]||(t[80]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-trash"})],-1),g(" Remove",-1)])],8,Pk),[[W,s?.status=="ready"]])])])])],2))),256)),e.filteredRepositories?.length==0?(l(),d("div",Vk,[...t[84]||(t[84]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-inbox"})],-1),o("span",null,"No repositories match the current filters.",-1)])])):p("v-if",!0)])])}var qk={class:"container paper-page admin-page"},Mk={class:"admin-summary"},$k={class:"summary-total"},Lk=["aria-pressed"],Uk={class:"count"},Fk=["aria-pressed"],zk={class:"count"},Hk=["aria-pressed"],Bk={class:"count"},jk={key:0,class:"alert alert-danger",style:{margin:"8px 0"}},Gk={class:"w-100 admin-filter-toolbar","aria-label":"Users","accept-charset":"UTF-8"},Wk={class:"admin-filter-row"},Kk={class:"search-wrap"},Yk={type:"search",class:"form-control","aria-label":"Search users",placeholder:"Search username or email\u2026",autocomplete:"off"},Jk={key:0,class:"admin-search-hint"},Qk={class:"admin-filter-inline"},Xk={class:"form-control form-control-sm"},Zk={class:"admin-filter-inline","aria-label":"Pagination"},xk=["disabled"],e0={style:{"font-family":"var(--font-mono)","font-size":"12px",color:"var(--ink-muted)"}},t0=["disabled"],o0={key:0,class:"admin-filter-row"},s0={class:"admin-active-chips"},n0={class:"key"},r0=["onClick"],i0={key:1,class:"bulk-bar"},a0={class:"paper-table w-100",role:"table","aria-label":"Users",style:{"--cols":"28px minmax(280px, 2.4fr) 100px 140px 140px 52px"}},l0={class:"paper-table-head admin-users-row",role:"row"},d0={role:"columnheader",style:{width:"28px"}},u0=["checked"],c0={role:"columnheader"},p0={role:"columnheader"},f0={role:"cell",style:{width:"28px"}},m0={type:"checkbox","aria-label":"Select user"},h0={class:"cell-anon",role:"cell"},v0=["src"],g0={class:"anon-text"},y0=["textContent","href"],b0={class:"anon-sub"},w0={key:0},k0={key:1},E0=["href"],C0={key:2},_0={class:"cell-views num",role:"cell"},S0=["textContent","href"],N0={class:"cell-status",role:"cell"},D0=["textContent"],R0={class:"cell-status",role:"cell"},T0={key:0,class:"type-badge type-repo"},A0={key:1,class:"empty-dash"},O0={class:"cell-actions",role:"cell"},I0={class:"dropdown"},P0={class:"dropdown-menu dropdown-menu-right"},V0=["href"],q0=["href"],M0=["onClick"],$0=["onClick"],L0={key:0,class:"paper-table-empty"},U0={class:"admin-toolbar",style:{"justify-content":"space-between","border-bottom":"none"}},F0={style:{"font-size":"12px",color:"var(--ink-muted)"}},z0={key:0,class:"pagination-compact"},H0=["disabled"],B0=["max"],j0=["disabled"],G0={class:"admin-filter-inline"},W0={class:"form-control form-control-sm"};function cl(e,t){let n=ye("field"),r=ye("form");return l(),d("div",qk,[t[46]||(t[46]=le('
Admin \xA0/\xA0 Users

Users

',3)),o("div",Mk,[o("span",$k,c(e.total>=0?e.fmt.number(e.total):"\u2026"),1),o("button",{type:"button",class:A(["summary-pill ok",{active:e.query?.status=="active"}]),onClick:t[0]||(t[0]=s=>{e.query.status=e.query.status=="active"?"":"active",e.query.page=1}),"aria-pressed":e.query?.status=="active"},[t[13]||(t[13]=g("Active ",-1)),o("span",Uk,c(e.fmt?.number(e.statusCountFor("active"))),1)],10,Lk),o("button",{type:"button",class:A(["summary-pill error",{active:e.query?.status=="banned"}]),onClick:t[1]||(t[1]=s=>{e.query.status=e.query.status=="banned"?"":"banned",e.query.page=1}),"aria-pressed":e.query?.status=="banned"},[t[14]||(t[14]=g("Banned ",-1)),o("span",zk,c(e.fmt?.number(e.statusCountFor("banned"))),1)],10,Fk),o("button",{type:"button",class:A(["summary-pill",{active:e.query?.status=="removed"}]),onClick:t[2]||(t[2]=s=>{e.query.status=e.query.status=="removed"?"":"removed",e.query.page=1}),"aria-pressed":e.query?.status=="removed"},[t[15]||(t[15]=g("Removed ",-1)),o("span",Bk,c(e.fmt?.number(e.statusCountFor("removed"))),1)],10,Hk)]),e.fetchError?(l(),d("div",jk,[t[16]||(t[16]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-warning"})],-1)),g(" "+c(e.fetchError),1)])):p("v-if",!0),N((l(),d("form",Gk,[o("div",Wk,[o("div",Kk,[N(o("input",Yk,null,512),[[n,{state:e.viewState,set:s=>{e.query.search=s},value:e.query?.search,form:null,options:{}}]]),e.query?.search?p("v-if",!0):(l(),d("span",Jk,"/"))]),o("span",Qk,[t[18]||(t[18]=o("label",null,"Role",-1)),N((l(),d("select",Xk,[...t[17]||(t[17]=[o("option",{value:""},"Any",-1),o("option",{value:"admin"},"Admin",-1)])])),[[n,{state:e.viewState,set:s=>{e.query.role=s},value:e.query?.role,form:null,options:{}}]])]),t[22]||(t[22]=o("span",{class:"admin-filter-spacer"},null,-1)),o("button",{class:"btn btn-sm",type:"button",onClick:t[3]||(t[3]=s=>e.exportCsv())},[...t[19]||(t[19]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-export"})],-1),g(" Export",-1)])]),o("span",Zk,[o("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[4]||(t[4]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1,"aria-label":"Previous page"},[...t[20]||(t[20]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-chevron-left"})],-1)])],8,xk),o("span",e0,c(e.query?.page)+"/"+c(e.totalPage||1),1),o("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[5]||(t[5]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage,"aria-label":"Next page"},[...t[21]||(t[21]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-chevron-right"})],-1)])],8,t0)])]),e.chips?.length?(l(),d("div",o0,[o("div",s0,[(l(!0),d(Q,null,se(e.chips,(s,i)=>(l(),d("span",{class:"admin-active-chip",key:s?.key},[o("span",n0,c(s?.label),1),o("span",null,c(s?.value),1),o("button",{type:"button",onClick:a=>e.clearFilter(s.key),"aria-label":"Clear filter"},[...t[23]||(t[23]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-close"})],-1)])],8,r0)]))),128))])])):p("v-if",!0)])),[[r,e.viewState]]),e.selectedCount()>0?(l(),d("div",i0,[o("span",null,[o("strong",null,c(e.selectedCount()),1),t[24]||(t[24]=g(" selected",-1))]),o("button",{class:"btn btn-sm text-danger",type:"button",onClick:t[6]||(t[6]=s=>e.bulkBan())},[...t[25]||(t[25]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-ban"})],-1),g(" Ban",-1)])]),o("button",{class:"btn btn-sm",type:"button",onClick:t[7]||(t[7]=s=>{e.selected={},e.allSelected=!1})},"Clear")])):p("v-if",!0),o("div",a0,[o("div",l0,[o("div",d0,[o("input",{type:"checkbox","aria-label":"Select all on page",onClick:t[8]||(t[8]=s=>e.selectAllOnPage()),checked:e.allSelected},null,8,u0)]),o("div",c0,[o("button",{type:"button",class:A(["sortable",{active:e.query?.sort=="username"}]),onClick:t[9]||(t[9]=s=>e.sortBy("username"))},[t[27]||(t[27]=g("User ",-1)),e.sortIcon("username")?(l(),d("svg",{key:0,class:A(["ui-icon sort-direction",{ascending:e.sortIcon("username")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[26]||(t[26]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),t[30]||(t[30]=o("div",{role:"columnheader",class:"num"},"Repos",-1)),o("div",p0,[o("button",{type:"button",class:A(["sortable",{active:e.query?.sort=="status"}]),onClick:t[10]||(t[10]=s=>e.sortBy("status"))},[t[29]||(t[29]=g("Status ",-1)),e.sortIcon("status")?(l(),d("svg",{key:0,class:A(["ui-icon sort-direction",{ascending:e.sortIcon("status")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[28]||(t[28]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),t[31]||(t[31]=o("div",{role:"columnheader"},"Role",-1)),t[32]||(t[32]=o("div",{role:"columnheader","aria-label":"Actions"},null,-1))]),(l(!0),d(Q,null,se(e.filteredUsers,(s,i)=>(l(),d("div",{class:A(["paper-table-row admin-users-row",{"row-selected":e.selected[s?.username]}]),role:"row"},[o("div",f0,[N(o("input",m0,null,512),[[n,{state:e.viewState,set:a=>{e.selected[s.username]=a},value:e.selected[s?.username],form:null,options:{}}]])]),o("div",h0,[s?.photo?(l(),d("img",{key:0,width:"28",height:"28",class:"rounded-circle",style:{"flex-shrink":"0"},src:e.safeUrl(s?.photo)},null,8,v0)):p("v-if",!0),o("div",g0,[o("a",{class:"repo-name",textContent:c(s?.username),href:e.safeUrl("/admin/users/"+s?.username)},null,8,y0),o("div",b0,[s?.emails[0].email?(l(),d("span",w0,c(s?.emails[0].email),1)):p("v-if",!0),s?.emails[0].email?(l(),d("span",k0,"\xA0\xB7\xA0")):p("v-if",!0),o("a",{target:"_blank",href:e.safeUrl("https://github.com/"+s?.username)},[t[33]||(t[33]=o("i",{class:"fab fa-github"},null,-1)),g(" "+c(s?.username),1)],8,E0),s?.dateOfEntry?(l(),d("span",C0,"\xA0\xB7\xA0Joined "+c(e.fmt?.humanTime(s?.dateOfEntry)),1)):p("v-if",!0)])])]),o("div",_0,[t[34]||(t[34]=o("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[o("use",{href:"#project-type-repo"})],-1)),o("a",{title:"Show this user's repositories",textContent:c(e.fmt?.number(s?.repoCount||0)),href:e.safeUrl("/admin/?owner="+s?.username)},null,8,S0)]),o("div",N0,[o("span",{class:A(["status-dot",{"status-ready":s?.status=="active","status-removed":s?.status=="removed"||s?.status=="banned"}])},null,2),o("span",{textContent:c(e.fmt?.title(s?.status))},null,8,D0)]),o("div",R0,[s?.isAdmin?(l(),d("span",T0,"Admin")):p("v-if",!0),s?.isAdmin?p("v-if",!0):(l(),d("span",A0,"\u2014"))]),o("div",O0,[o("div",I0,[t[40]||(t[40]=o("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions"},[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-more"})])],-1)),o("div",P0,[o("a",{class:"dropdown-item",href:e.safeUrl("/admin/users/"+s?.username)},[...t[35]||(t[35]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-eye"})],-1),g(" View details",-1)])],8,V0),o("a",{class:"dropdown-item",href:e.safeUrl("/admin/?owner="+s?.username)},[...t[36]||(t[36]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-type-repo"})],-1),g(" View repositories",-1)])],8,q0),t[39]||(t[39]=o("div",{class:"dropdown-divider"},null,-1)),N(o("a",{class:"dropdown-item text-danger",href:"#",onClick:ce(a=>e.banUser(s),["prevent"])},[...t[37]||(t[37]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-ban"})],-1),g(" Ban",-1)])],8,M0),[[W,s?.status=="active"]]),N(o("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.activateUser(s),["prevent"])},[...t[38]||(t[38]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-check-circle"})],-1),g(" Activate",-1)])],8,$0),[[W,s?.status=="removed"||s?.status=="banned"]])])])])],2))),256)),e.filteredUsers?.length==0?(l(),d("div",L0,[...t[41]||(t[41]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-inbox"})],-1),o("span",null,"No users match the current filters.",-1)])])):p("v-if",!0)]),o("div",U0,[o("span",F0,c(e.fmt?.number(e.total))+" results",1),e.totalPage>1?(l(),d("div",z0,[o("button",{class:"btn btn-sm",onClick:t[11]||(t[11]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1},[...t[42]||(t[42]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-chevron-left"})],-1),g(" Previous",-1)])],8,H0),N(o("input",{type:"number",class:"form-control form-control-sm",min:"1",style:{width:"56px"},max:e.totalPage},null,8,B0),[[n,{state:e.viewState,set:s=>{e.query.page=s},value:e.query?.page,form:null,options:{}}]]),o("span",null,"of "+c(e.totalPage),1),o("button",{class:"btn btn-sm",onClick:t[12]||(t[12]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage},[...t[43]||(t[43]=[g("Next ",-1),o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-chevron-right"})],-1)])],8,j0)])):p("v-if",!0),o("span",G0,[t[45]||(t[45]=o("label",null,"Per page",-1)),N((l(),d("select",W0,[...t[44]||(t[44]=[o("option",{value:"10"},"10",-1),o("option",{value:"25"},"25",-1),o("option",{value:"50"},"50",-1),o("option",{value:"100"},"100",-1)])])),[[n,{state:e.viewState,set:s=>{e.query.limit=s},value:e.query?.limit,form:null,options:{}}]])])])])}var K0={class:"anonymize-landing"},Y0={class:"anonymize-landing-inner"},J0={class:"form-group mt-4 mb-2"},Q0={class:"source-url-label-row"},X0={key:0,class:"repo-access","aria-label":"GitHub access"},Z0={key:0,class:"repo-access-switch",role:"group","aria-label":"Repository connection"},x0=["aria-pressed","disabled"],eE=["aria-pressed","disabled"],tE={key:1,class:"connection-badge"},oE={id:"sourceUrl-landing",type:"text",class:"form-control form-control-lg",placeholder:"https://github.com/owner/repository"},sE={key:0,class:"draft-status",role:"status"},nE={key:1,class:"text-danger",role:"alert"},rE={key:2,class:"alert alert-info",role:"status"},iE={key:1},aE={key:3,class:"repo-access-details","aria-label":"GitHub access"},lE={class:"repo-access-main"},dE={class:"repo-access-controls"},uE={key:1,class:"connection-link",href:"/connections"},cE={class:"repo-access-note"},pE={key:0},fE={class:"anonymize-workspace"},mE={class:"anonymize-topbar"},hE={class:"anonymize-topbar-inner"},vE={class:"paper-crumbs"},gE={class:"here"},yE={class:"anonymize-topbar-head"},bE={class:"paper-page-title anonymize-topbar-title"},wE={key:0},kE={key:1},EE={class:"anonymize-mobile-tabs",role:"tablist","aria-label":"Anonymization workspace"},CE=["aria-selected","tabindex"],_E=["aria-selected","tabindex"],SE={key:0,class:"anonymize-preview-empty",id:"workspace-preview",role:"status"},NE={class:"anonymize-split"},DE=["role","aria-labelledby"],RE={class:"form needs-validation paper-settings-main",name:"anonymize",novalidate:""},TE={class:"paper-settings-section"},AE={class:"form-group"},OE={class:"source-url-label-row"},IE={key:0,class:"repo-access","aria-label":"GitHub access"},PE={key:0,class:"repo-access-switch",role:"group","aria-label":"Repository connection"},VE=["aria-pressed","disabled"],qE=["aria-pressed","disabled"],ME={key:1,class:"connection-badge"},$E=["disabled"],LE={class:"invalid-feedback"},UE={class:"invalid-feedback"},FE={class:"invalid-feedback"},zE={class:"invalid-feedback"},HE={key:0,class:"repo-access-details","aria-label":"GitHub access"},BE={class:"repo-access-main"},jE={class:"repo-access-controls"},GE={key:1,class:"connection-link",href:"/connections"},WE={class:"repo-access-note"},KE={key:0},YE={key:1,class:"repo-access-details"},JE={key:0,role:"status"},QE={key:2,class:"form-grid-2"},XE={class:"form-group"},ZE={class:"input-group"},xE={class:"form-control",id:"branch",name:"branch"},eC=["textContent","value"],tC={class:"input-group-append"},oC={class:"form-group"},sC=["disabled"],nC={class:"invalid-feedback"},rC={class:"invalid-feedback"},iC={class:"form-check"},aC={class:"form-check-input",type:"checkbox",id:"update",name:"update"},lC={class:"paper-settings-section"},dC={class:"form-group"},uC=["disabled"],cC={class:"form-text text-muted"},pC={class:"invalid-feedback"},fC={class:"form-group"},mC=["disabled"],hC={class:"form-text text-muted"},vC={class:"invalid-feedback"},gC={class:"form-group"},yC=["disabled"],bC={class:"form-text text-muted"},wC={class:"invalid-feedback"},kC={class:"form-group"},EC={class:"form-text text-muted"},CC=["href"],_C={class:"invalid-feedback"},SC={class:"form-text text-muted"},NC={class:"paper-settings-section"},DC={class:"form-group"},RC={class:"form-text text-muted"},TC={class:"warning-feedback"},AC={class:"invalid-feedback"},OC={class:"paper-settings-section"},IC={class:"form-check"},PC={class:"form-check-input",type:"checkbox",id:"link",name:"link"},VC={class:"form-check"},qC={class:"form-check-input",type:"checkbox",id:"image",name:"image"},MC={class:"form-check"},$C={class:"form-check-input",type:"checkbox",id:"pdf",name:"pdf"},LC={class:"form-check"},UC={class:"form-check-input",type:"checkbox",id:"notebook",name:"notebook"},FC={class:"form-check"},zC=["disabled"],HC={key:0,class:"form-text text-muted"},BC={key:1,class:"form-text text-muted"},jC={class:"form-check"},GC={class:"form-check-input",type:"checkbox",id:"title-gist",name:"title-gist"},WC={class:"form-check"},KC={class:"form-check-input",type:"checkbox",id:"content-gist",name:"content-gist"},YC={class:"form-check"},JC={class:"form-check-input",type:"checkbox",id:"comments-gist",name:"comments-gist"},QC={class:"form-check"},XC={class:"form-check-input",type:"checkbox",id:"username-gist",name:"username-gist"},ZC={class:"form-check"},xC={class:"form-check-input",type:"checkbox",id:"date-gist",name:"date-gist"},e_={class:"form-check"},t_={class:"form-check-input",type:"checkbox",id:"origin-gist",name:"origin-gist"},o_={class:"form-check"},s_={class:"form-check-input",type:"checkbox",id:"title",name:"title"},n_={class:"form-check"},r_={class:"form-check-input",type:"checkbox",id:"body",name:"body"},i_={class:"form-check"},a_={class:"form-check-input",type:"checkbox",id:"diff",name:"diff"},l_={class:"form-check"},d_={class:"form-check-input",type:"checkbox",id:"comments",name:"comments"},u_={class:"form-check"},c_={class:"form-check-input",type:"checkbox",id:"username",name:"username"},p_={class:"form-check"},f_={class:"form-check-input",type:"checkbox",id:"date",name:"date"},m_={class:"form-check"},h_={class:"form-check-input",type:"checkbox",id:"origin",name:"origin"},v_={class:"paper-settings-section"},g_={class:"form-grid-2"},y_={class:"form-group"},b_={class:"form-control",id:"expiration",name:"expiration"},w_={class:"form-group"},k_=["min","max"],E_={class:"invalid-feedback"},C_={class:"invalid-feedback"},__={class:"paper-settings-section"},S_={class:"form-group"},N_={style:{position:"relative"}},D_={type:"text",id:"coauthorSearch",class:"form-control",placeholder:"Search GitHub username\u2026",autocomplete:"off"},R_={class:"dropdown-menu show",style:{display:"block","max-height":"220px","overflow-y":"auto",width:"100%"}},T_=["onClick"],A_=["src"],O_=["textContent"],I_=["textContent"],P_={class:"coauthor-list"},V_={class:"coauthor-row d-flex align-items-center",style:{padding:"6px 0",gap:"8px"}},q_=["src"],M_=["textContent","href"],$_=["onClick"],L_={class:"form-text text-muted"},U_=["textContent"],F_={key:1,class:"draft-status",role:"status"},z_={key:2,class:"draft-status"},H_={key:3,class:"anonymize-review-note"},B_={class:"anonymize-submit-bar"},j_=["disabled"],G_=["disabled"],W_=["disabled"],K_=["disabled"],Y_=["disabled"],J_=["disabled"],Q_=["role","aria-labelledby"],X_={class:"anonymize-preview-head"},Z_={class:"anonymize-preview-sub"},x_={key:0,class:"anonymize-preview-status",role:"status"},e2={key:1,class:"anonymize-preview-status",role:"status"},t2={key:2,class:"anonymize-preview-status",role:"alert"},o2={key:3,class:"anonymize-preview-status"},s2=["innerHTML"],n2=["role","aria-labelledby"],r2={class:"anonymize-preview-head"},i2={class:"anonymize-preview-sub"},a2={key:0,class:"anonymize-preview-status",role:"status"},l2={key:1,class:"anonymize-preview-status",role:"status"},d2={key:2,class:"anonymize-preview-status",role:"alert"},u2={key:3,class:"anonymize-preview-body"},c2={class:"d-flex w-100 justify-content-between align-items-center flex-wrap"},p2={class:"pr-title mb-1"},f2={key:0},m2=["textContent"],h2={key:0},v2={key:1},g2={key:2},y2={class:"pr-comments mt-3"},b2={class:"pr-comment"},w2={class:"pr-comment-head"},k2=["textContent"],E2={key:0,class:"pr-comment-date"},C2={key:3},_2={class:"pr-comments"},S2={class:"pr-comment"},N2={class:"pr-comment-head"},D2={key:0,class:"pr-comment-author"},R2=["textContent"],T2=["textContent"],A2={key:0,class:"pr-comment-body"},O2=["role","aria-labelledby"],I2={class:"anonymize-preview-head"},P2={class:"anonymize-preview-sub"},V2={key:0,class:"anonymize-preview-status",role:"status"},q2={key:1,class:"anonymize-preview-status",role:"status"},M2={key:2,class:"anonymize-preview-status",role:"alert"},$2={key:3,class:"anonymize-preview-body"},L2={class:"d-flex w-100 justify-content-between align-items-center flex-wrap"},U2={class:"pr-title mb-1"},F2={key:0},z2=["textContent"],H2={key:0},B2={key:1,class:"pr-body shadow-sm p-3 mb-4 rounded",style:{background:"var(--paper-bg-alt)"}},j2={key:2,class:"paper-tabs",role:"tablist"},G2=["aria-selected","tabindex"],W2=["aria-selected","tabindex"],K2=["textContent"],Y2={key:3,class:"anonymize-preview-status"},J2={class:"paper-tab-content"},Q2={key:0,role:"tabpanel",id:"preview-pr-diff-panel","aria-labelledby":"preview-pr-diff-tab"},X2=["innerHTML"],Z2={key:1,role:"tabpanel",id:"preview-pr-comments-panel","aria-labelledby":"preview-pr-comments-tab"},x2={class:"pr-comments"},eS={class:"pr-comment"},tS={class:"pr-comment-head"},oS={key:0,class:"pr-comment-author"},sS=["textContent"],nS=["textContent"],rS={key:0,class:"pr-comment-body"};function pl(e,t){let n=We("gist-file"),r=We("markdown"),s=ye("field"),i=ye("form");return l(),d("div",{class:A(["anonymize-page h-100",{"mobile-preview-active":e.mobilePane==="preview"}])},[p(" ===== STATE 1: No URL \u2014 centered input ===== "),N(o("div",K0,[o("div",Y0,[t[37]||(t[37]=o("div",{class:"paper-crumbs"},[g("My work \xA0/\xA0 "),o("span",{class:"here"},"New anonymization")],-1)),t[38]||(t[38]=o("h1",{class:"paper-page-title"},[g("New "),o("em",null,"anonymization")],-1)),t[39]||(t[39]=o("p",{class:"paper-page-lede"}," Paste a GitHub repository, pull-request, or gist URL. We\u2019ll fetch it, redact the terms you choose in text files, and give you a share link. Images and PDFs are served unchanged when enabled. Review them before sharing. ",-1)),o("div",J0,[o("div",Q0,[t[31]||(t[31]=o("label",{class:"paper-field-label",for:"sourceUrl-landing"},"Source URL",-1)),!e.sourceUrl&&e.githubConnections?.appEnabled&&e.githubConnections.appConnected&&e.githubConnections.oauthConnected?(l(),d("aside",X0,[!e.isUpdate&&e.detectedType!=="gist"?(l(),d("div",Z0,[o("button",{type:"button","aria-pressed":e.githubConnection==="github-app",disabled:e.githubConnection==="github-app",onClick:t[0]||(t[0]=a=>e.chooseGitHubConnection("github-app"))},[...t[30]||(t[30]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-shield"})],-1),g(),o("span",{class:"sr-only"},"Read-only ",-1),g("GitHub App",-1)])],8,x0),o("button",{type:"button","aria-pressed":e.githubConnection==="oauth",disabled:e.githubConnection==="oauth",onClick:t[1]||(t[1]=a=>e.chooseGitHubConnection("oauth"))},"Legacy OAuth",8,eE)])):p("v-if",!0),e.isUpdate||e.detectedType==="gist"?(l(),d("span",tE,c(e.detectedType!=="gist"&&e.githubConnection==="github-app"?"Read-only GitHub App":"Legacy OAuth"),1)):p("v-if",!0)])):p("v-if",!0)]),N(o("input",oE,null,512),[[s,{state:e.viewState,set:a=>{e.sourceUrl=a},value:e.sourceUrl,form:null,options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"},change:()=>{e.urlSelected()}}]])]),e.draftRestored?(l(),d("div",sE,[t[32]||(t[32]=g("Your unsaved draft was restored. ",-1)),o("button",{type:"button",class:"draft-discard",onClick:t[2]||(t[2]=a=>e.discardDraft())},"Discard draft")])):p("v-if",!0),e.sourceUrlError?(l(),d("p",nE,c(e.sourceUrlError),1)):p("v-if",!0),t[40]||(t[40]=o("small",{class:"form-text",style:{color:"var(--ink-muted)"}}," Repository, pull request (\u2026/pull/42) and gist (gist.github.com/\u2026) URLs are all accepted. ",-1)),e.detectedType==="gist"&&e.gistOAuthRequired?(l(),d("aside",rE,[t[33]||(t[33]=o("p",null,"Connect GitHub OAuth to access gists. Your account and existing anonymizations stay the same, and your draft will be restored when you return.",-1)),t[34]||(t[34]=o("p",null,"GitHub's legacy OAuth connection includes write access to private repositories.",-1)),e.githubConnections?.oauthEnabled?(l(),d("button",{key:0,type:"button",class:"btn btn-ink",onClick:t[3]||(t[3]=a=>e.connectGistOAuth())},"Connect GitHub OAuth to access gists")):(l(),d("p",iE,"GitHub OAuth is currently unavailable. Please try again later."))])):p("v-if",!0),!e.sourceUrl&&e.githubConnections?.appEnabled&&e.githubConnections.appConnected&&e.githubConnections.oauthConnected?(l(),d("aside",aE,[o("div",lE,[o("div",dE,[e.detectedType!=="gist"&&e.githubConnection!=="oauth"?(l(),d("button",{key:0,type:"button",class:"btn btn-outline-ink",onClick:t[4]||(t[4]=a=>e.grantGitHubAccess())},[...t[35]||(t[35]=[g("Manage access ",-1),o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-external-link"})],-1)])])):p("v-if",!0),e.isUpdate||e.detectedType==="gist"||e.githubConnection==="oauth"?(l(),d("a",uE,c(e.isUpdate?"Change connection":"Manage connections")+" \u2192",1)):p("v-if",!0)])]),o("div",cE,[e.detectedType!=="gist"&&e.githubConnection!=="oauth"?(l(),d("span",pE,"Select repositories on GitHub, then return here.")):p("v-if",!0),t[36]||(t[36]=o("span",null,[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-info"})]),g(" Selected content will be published, including content from private repositories.")],-1))])])):p("v-if",!0)])],512),[[W,!e.workspaceOpen&&!e.isUpdate]]),p(" ===== STATE 2: URL provided \u2014 form (left) + preview (right) ===== "),N(o("div",fE,[o("header",mE,[o("div",hE,[o("div",vE,[t[41]||(t[41]=o("a",{href:"/dashboard"},"My work",-1)),t[42]||(t[42]=g(" \xA0/\xA0 ",-1)),o("span",gE,c(e.isUpdate?"Edit anonymization":"New anonymization"),1)]),o("div",yE,[o("h1",bE,[e.isUpdate?p("v-if",!0):(l(),d("span",wE,[...t[43]||(t[43]=[g("New ",-1),o("em",null,"anonymization",-1)])])),e.isUpdate?(l(),d("span",kE,[...t[44]||(t[44]=[g("Edit ",-1),o("em",null,"anonymization",-1)])])):p("v-if",!0)]),N(o("span",{class:A(["type-badge",{"type-repo":e.detectedType==="repo","type-pr":e.detectedType==="pr","type-gist":e.detectedType==="gist"}])},c(e.detectedType==="repo"?"Repo":e.detectedType==="pr"?"PR":"Gist"),3),[[W,e.detectedType]])])])]),o("nav",EE,[o("button",{id:"workspace-settings-tab",role:"tab",type:"button","aria-selected":e.mobilePane==="settings","aria-controls":"workspace-settings",tabindex:e.mobilePane==="settings"?0:-1,onKeydown:t[5]||(t[5]=a=>e.previewTabKeydown(a)),onClick:t[6]||(t[6]=a=>e.selectMobilePane("settings"))},"Settings",40,CE),o("button",{id:"workspace-preview-tab",role:"tab",type:"button","aria-selected":e.mobilePane==="preview","aria-controls":"workspace-preview",tabindex:e.mobilePane==="preview"?0:-1,onKeydown:t[7]||(t[7]=a=>e.previewTabKeydown(a)),onClick:t[8]||(t[8]=a=>e.selectMobilePane("preview"))},"Reviewer preview",40,_E)]),e.detectedType!=="repo"&&!e.details?(l(),d("div",SE,c(e.sourceLoading?"Loading source\u2026":"Choose an accessible source to see its preview."),1)):p("v-if",!0),o("div",NE,[p(" Form column (left) "),o("div",{id:"workspace-settings",role:e.mobileWorkspace?"tabpanel":null,"aria-labelledby":e.mobileWorkspace?"workspace-settings-tab":null,class:"anonymize-form-col overflow-auto"},[N((l(),d("form",RE,[o("section",TE,[t[55]||(t[55]=o("div",{class:"paper-section-eyebrow"},"Source",-1)),o("div",AE,[o("div",OE,[t[46]||(t[46]=o("label",{class:"paper-field-label",for:"sourceUrl"},"GitHub URL",-1)),e.sourceUrl&&e.githubConnections?.appEnabled&&e.githubConnections.appConnected&&e.githubConnections.oauthConnected?(l(),d("aside",IE,[!e.isUpdate&&e.detectedType!=="gist"?(l(),d("div",PE,[o("button",{type:"button","aria-pressed":e.githubConnection==="github-app",disabled:e.githubConnection==="github-app",onClick:t[9]||(t[9]=a=>e.chooseGitHubConnection("github-app"))},[...t[45]||(t[45]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-shield"})],-1),g(),o("span",{class:"sr-only"},"Read-only ",-1),g("GitHub App",-1)])],8,VE),o("button",{type:"button","aria-pressed":e.githubConnection==="oauth",disabled:e.githubConnection==="oauth",onClick:t[10]||(t[10]=a=>e.chooseGitHubConnection("oauth"))},"Legacy OAuth",8,qE)])):p("v-if",!0),e.isUpdate||e.detectedType==="gist"?(l(),d("span",ME,c(e.detectedType!=="gist"&&e.githubConnection==="github-app"?"Read-only GitHub App":"Legacy OAuth"),1)):p("v-if",!0)])):p("v-if",!0)]),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.anonymize?.sourceUrl?.invalid}]),name:"sourceUrl",id:"sourceUrl",disabled:e.isUpdate&&e.detectedType!=="repo",placeholder:"Paste a GitHub repo or pull request URL"},null,10,$E),[[s,{state:e.viewState,set:a=>{e.sourceUrl=a},value:e.sourceUrl,form:"anonymize",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"},change:()=>{e.urlSelected()}}]]),N(o("div",LE," Please provide a valid GitHub URL. ",512),[[W,e.anonymize?.sourceUrl?.errors?.github]]),N(o("div",UE," Not accessible. The organization may restrict access. ",512),[[W,e.anonymize?.sourceUrl?.errors?.access]]),N(o("div",FE," Does not exist or is not accessible. ",512),[[W,e.anonymize?.sourceUrl?.errors?.missing]]),N(o("div",zE," Already anonymized. ",512),[[W,e.anonymize?.sourceUrl?.errors?.used]])]),e.sourceUrl&&e.githubConnections?.appEnabled&&e.githubConnections.appConnected&&e.githubConnections.oauthConnected?(l(),d("aside",HE,[o("div",BE,[o("div",jE,[e.detectedType!=="gist"&&e.githubConnection!=="oauth"?(l(),d("button",{key:0,type:"button",class:"btn btn-outline-ink",onClick:t[11]||(t[11]=a=>e.grantGitHubAccess())},[...t[47]||(t[47]=[g("Manage access ",-1),o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-external-link"})],-1)])])):p("v-if",!0),e.isUpdate||e.detectedType==="gist"||e.githubConnection==="oauth"?(l(),d("a",GE,c(e.isUpdate?"Change connection":"Manage connections")+" \u2192",1)):p("v-if",!0)])]),o("div",WE,[e.detectedType!=="gist"&&e.githubConnection!=="oauth"?(l(),d("span",KE,"Select repositories on GitHub, then return here.")):p("v-if",!0),t[48]||(t[48]=o("span",null,[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-info"})]),g(" Selected content will be published, including content from private repositories.")],-1))])])):p("v-if",!0),e.isUpdate&&e.detectedType==="repo"&&e.role==="owner"&&e.sourceUrl==="https://github.com/"+e._originalFullName?(l(),d("aside",YE,[t[49]||(t[49]=o("p",null,"If you deleted and recreated this repository, reconnect it before choosing a branch.",-1)),o("button",{type:"button",class:"btn btn-outline-ink",onClick:t[12]||(t[12]=a=>e.reconnectSource())},"Reconnect source repository"),e.reconnectRepositoryId?(l(),d("p",JE,"Source reloaded. Review the branch, commit, and anonymization preview, then save to replace the published snapshot.")):p("v-if",!0)])):p("v-if",!0),e.detectedType==="repo"?(l(),d("div",QE,[o("div",XE,[t[51]||(t[51]=o("label",{class:"paper-field-label",for:"branch"},"Branch",-1)),o("div",ZE,[N((l(),d("select",xE,[(l(!0),d(Q,null,se(e.branches,(a,u)=>(l(),d("option",{textContent:c(a?.name),value:a?.name},null,8,eC))),256))])),[[s,{state:e.viewState,set:a=>{e.source.branch=a},value:e.source?.branch,form:"anonymize",options:{}}]]),o("div",tC,[o("button",{class:"btn btn-icon",type:"button",title:"Refresh","data-toggle":"tooltip","data-placement":"bottom",onClick:t[13]||(t[13]=a=>e.getBranches(!0)),"aria-label":"Refresh"},[...t[50]||(t[50]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-refresh"})],-1)])])])])]),o("div",oC,[t[52]||(t[52]=o("label",{class:"paper-field-label",for:"commit"},"Commit",-1)),N(o("input",{class:A(["form-control",{"is-invalid":e.anonymize?.commit?.invalid}]),id:"commit",disabled:e.options.update,name:"commit",pattern:"[a-fA-Z0-9]{6,}",required:""},null,10,sC),[[s,{state:e.viewState,set:a=>{e.source.commit=a},value:e.source?.commit,form:"anonymize",options:{}}]]),N(o("div",nC," The commit SHA is not valid. ",512),[[W,e.anonymize?.commit?.errors?.pattern||e.anonymize?.commit?.errors?.required]]),N(o("div",rC," This commit no longer exists in the repository. Click refresh to get the latest. ",512),[[W,e.anonymize?.commit?.errors?.exists]])])])):p("v-if",!0),N(o("div",iC,[N(o("input",aC,null,512),[[s,{state:e.viewState,set:a=>{e.options.update=a},value:e.options?.update,form:"anonymize",options:{}}]]),t[53]||(t[53]=o("label",{class:"form-check-label",for:"update"},"Auto-update from GitHub",-1)),t[54]||(t[54]=o("small",{class:"form-text text-muted"},"Follow the branch and pull the latest commit automatically, at most once an hour.",-1))],512),[[W,e.detectedType]])]),N(o("section",lC,[t[66]||(t[66]=o("div",{class:"paper-section-eyebrow"},"Identity",-1)),N(o("div",dC,[t[58]||(t[58]=o("label",{class:"paper-field-label",for:"repoId"},"Anonymized repository ID",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.anonymize?.repoId?.invalid}]),name:"repoId",id:"repoId",disabled:e.isUpdate},null,10,uC),[[s,{state:e.viewState,set:a=>{e.repoId=a},value:e.repoId,form:"anonymize",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"}}]]),o("small",cC,[t[56]||(t[56]=g("Your share link will be ",-1)),o("code",null,"anonymous.4open.science/r/"+c(e.repoId),1),t[57]||(t[57]=g(".",-1))]),N(o("div",pC,"ID can only contain letters and numbers.",512),[[W,e.anonymize?.repoId?.errors?.format]]),N(o("div",{class:"invalid-feedback"},c(e.repoId)+" is already used.",513),[[W,e.anonymize?.repoId?.errors?.used]])],512),[[W,e.detectedType==="repo"]]),N(o("div",fC,[t[61]||(t[61]=o("label",{class:"paper-field-label",for:"pullRequestId"},"Anonymized pull request ID",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.anonymize?.pullRequestId?.invalid}]),name:"pullRequestId",id:"pullRequestId",disabled:e.isUpdate},null,10,mC),[[s,{state:e.viewState,set:a=>{e.pullRequestId=a},value:e.pullRequestId,form:"anonymize",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"}}]]),o("small",hC,[t[59]||(t[59]=g("Your share link will be ",-1)),o("code",null,"anonymous.4open.science/pr/"+c(e.pullRequestId),1),t[60]||(t[60]=g(".",-1))]),N(o("div",vC,"ID can only contain letters and numbers.",512),[[W,e.anonymize?.pullRequestId?.errors?.format]]),N(o("div",{class:"invalid-feedback"},c(e.pullRequestId)+" is already used.",513),[[W,e.anonymize?.pullRequestId?.errors?.used]])],512),[[W,e.detectedType==="pr"]]),N(o("div",gC,[t[64]||(t[64]=o("label",{class:"paper-field-label",for:"gistId"},"Anonymized gist ID",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.anonymize?.gistId?.invalid}]),name:"gistId",id:"gistId",disabled:e.isUpdate},null,10,yC),[[s,{state:e.viewState,set:a=>{e.gistId=a},value:e.gistId,form:"anonymize",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"}}]]),o("small",bC,[t[62]||(t[62]=g("Your share link will be ",-1)),o("code",null,"anonymous.4open.science/gist/"+c(e.gistId),1),t[63]||(t[63]=g(".",-1))]),N(o("div",wC,"ID can only contain letters and numbers.",512),[[W,e.anonymize?.gistId?.errors?.format]]),N(o("div",{class:"invalid-feedback"},c(e.gistId)+" is already used.",513),[[W,e.anonymize?.gistId?.errors?.used]])],512),[[W,e.detectedType==="gist"]]),o("div",kC,[t[65]||(t[65]=o("label",{class:"paper-field-label",for:"conference"},[g("Conference "),o("span",{class:"paper-optional"},"(optional)")],-1)),N(o("input",{class:A(["form-control",{"is-invalid":e.anonymize?.conference?.invalid}]),id:"conference",name:"conference"},null,2),[[s,{state:e.viewState,set:a=>{e.conference=a},value:e.conference,form:"anonymize",options:{debounce:{default:800,blur:0},updateOn:"default blur"}}]]),N(o("small",EC,[o("a",{target:"_blank",href:e.safeUrl(e.conference_data?.url)},c(e.conference_data?.name),9,CC),g(" expires "+c(e.fmt?.date(e.conference_data?.endDate))+". ",1)],512),[[W,e.conference_data]]),N(o("div",_C,"The conference is not activated.",512),[[W,e.anonymize?.conference?.errors?.activated]]),N(o("small",SC,"Link to a conference to apply its shared defaults.",512),[[W,!e.conference_data]])])],512),[[W,e.detectedType]]),N(o("section",NC,[t[74]||(t[74]=o("div",{class:"paper-section-eyebrow"},"Anonymization",-1)),o("div",DC,[t[73]||(t[73]=o("label",{class:"paper-field-label",for:"terms"},"Terms to redact",-1)),N(o("textarea",{class:A(["form-control",{"is-invalid":e.anonymize?.terms?.invalid}]),id:"terms",name:"terms",rows:"4"},null,2),[[s,{state:e.viewState,set:a=>{e.terms=a},value:e.terms,form:"anonymize",options:{debounce:250}}]]),o("small",RC,[t[67]||(t[67]=g("One term per line (regex allowed). Replaced by ",-1)),o("code",null,c(e.site_options?.ANONYMIZATION_MASK)+"-[N]",1),t[68]||(t[68]=g(", or use ",-1)),t[69]||(t[69]=o("code",null,"term=>replacement",-1)),t[70]||(t[70]=g(" to pick your own (e.g. ",-1)),t[71]||(t[71]=o("code",null,"Anonymous=>ABC",-1)),t[72]||(t[72]=g(").",-1))]),N(o("div",TC,"Regex characters detected. Escape them if unintentional.",512),[[W,e.termsRegexWarning]]),N(o("div",AC,"Terms are in an invalid format.",512),[[W,e.anonymize?.terms?.errors?.format]])])],512),[[W,e.detectedType]]),N(o("section",OC,[t[95]||(t[95]=o("div",{class:"paper-section-eyebrow"},"Display",-1)),N(o("div",null,[o("div",IC,[N(o("input",PC,null,512),[[s,{state:e.viewState,set:a=>{e.options.link=a},value:e.options?.link,form:"anonymize",options:{}}]]),t[75]||(t[75]=o("label",{class:"form-check-label",for:"link"},"Keep links",-1))]),o("div",VC,[N(o("input",qC,null,512),[[s,{state:e.viewState,set:a=>{e.options.image=a},value:e.options?.image,form:"anonymize",options:{}}]]),t[76]||(t[76]=o("label",{class:"form-check-label",for:"image"},"Display images",-1)),t[77]||(t[77]=o("small",{class:"form-text text-muted"},"Images are served unchanged and may contain names or affiliations.",-1))]),o("div",MC,[N(o("input",$C,null,512),[[s,{state:e.viewState,set:a=>{e.options.pdf=a},value:e.options?.pdf,form:"anonymize",options:{}}]]),t[78]||(t[78]=o("label",{class:"form-check-label",for:"pdf"},"Display PDFs",-1)),t[79]||(t[79]=o("small",{class:"form-text text-muted"},[g("PDF contents and metadata are served unchanged. "),o("a",{href:"/faq#formats"},"About supported formats")],-1))]),o("div",LC,[N(o("input",UC,null,512),[[s,{state:e.viewState,set:a=>{e.options.notebook=a},value:e.options?.notebook,form:"anonymize",options:{}}]]),t[80]||(t[80]=o("label",{class:"form-check-label",for:"notebook"},"Display Notebooks",-1))]),o("div",FC,[N(o("input",{class:"form-check-input",type:"checkbox",id:"page",name:"page",disabled:!e.details?.hasPage||e.details?.pageSource&&e.details?.pageSource?.branch!==e.source?.branch},null,8,zC),[[s,{state:e.viewState,set:a=>{e.options.page=a},value:e.options?.page,form:"anonymize",options:{}}]]),t[81]||(t[81]=o("label",{class:"form-check-label",for:"page"},"GitHub Pages",-1)),e.details?.hasPage?p("v-if",!0):(l(),d("small",HC,c(e.fmt?.translate("WARNINGS.page_not_enabled_on_repo")),1)),e.details?.hasPage&&e.details?.pageSource?.branch&&e.source?.branch&&e.details.pageSource.branch!==e.source.branch?(l(),d("small",BC,c(e.fmt?.translate("WARNINGS.page_branch_mismatch",{pageBranch:e.details?.pageSource?.branch,selectedBranch:e.source?.branch})),1)):p("v-if",!0)])],512),[[W,e.detectedType==="repo"]]),N(o("div",null,[o("div",jC,[N(o("input",GC,null,512),[[s,{state:e.viewState,set:a=>{e.options.title=a},value:e.options?.title,form:"anonymize",options:{}}]]),t[82]||(t[82]=o("label",{class:"form-check-label",for:"title-gist"},"Gist description",-1))]),o("div",WC,[N(o("input",KC,null,512),[[s,{state:e.viewState,set:a=>{e.options.content=a},value:e.options?.content,form:"anonymize",options:{}}]]),t[83]||(t[83]=o("label",{class:"form-check-label",for:"content-gist"},"File contents",-1))]),o("div",YC,[N(o("input",JC,null,512),[[s,{state:e.viewState,set:a=>{e.options.comments=a},value:e.options?.comments,form:"anonymize",options:{}}]]),t[84]||(t[84]=o("label",{class:"form-check-label",for:"comments-gist"},"Comments",-1))]),o("div",QC,[N(o("input",XC,null,512),[[s,{state:e.viewState,set:a=>{e.options.username=a},value:e.options?.username,form:"anonymize",options:{}}]]),t[85]||(t[85]=o("label",{class:"form-check-label",for:"username-gist"},"Usernames",-1))]),o("div",ZC,[N(o("input",xC,null,512),[[s,{state:e.viewState,set:a=>{e.options.date=a},value:e.options?.date,form:"anonymize",options:{}}]]),t[86]||(t[86]=o("label",{class:"form-check-label",for:"date-gist"},"Dates",-1))]),o("div",e_,[N(o("input",t_,null,512),[[s,{state:e.viewState,set:a=>{e.options.origin=a},value:e.options?.origin,form:"anonymize",options:{}}]]),t[87]||(t[87]=o("label",{class:"form-check-label",for:"origin-gist"},"Source gist ID",-1))])],512),[[W,e.detectedType==="gist"]]),N(o("div",null,[o("div",o_,[N(o("input",s_,null,512),[[s,{state:e.viewState,set:a=>{e.options.title=a},value:e.options?.title,form:"anonymize",options:{}}]]),t[88]||(t[88]=o("label",{class:"form-check-label",for:"title"},"PR title",-1))]),o("div",n_,[N(o("input",r_,null,512),[[s,{state:e.viewState,set:a=>{e.options.body=a},value:e.options?.body,form:"anonymize",options:{}}]]),t[89]||(t[89]=o("label",{class:"form-check-label",for:"body"},"PR body",-1))]),o("div",i_,[N(o("input",a_,null,512),[[s,{state:e.viewState,set:a=>{e.options.diff=a},value:e.options?.diff,form:"anonymize",options:{}}]]),t[90]||(t[90]=o("label",{class:"form-check-label",for:"diff"},"Diff",-1))]),o("div",l_,[N(o("input",d_,null,512),[[s,{state:e.viewState,set:a=>{e.options.comments=a},value:e.options?.comments,form:"anonymize",options:{}}]]),t[91]||(t[91]=o("label",{class:"form-check-label",for:"comments"},"Comments",-1))]),o("div",u_,[N(o("input",c_,null,512),[[s,{state:e.viewState,set:a=>{e.options.username=a},value:e.options?.username,form:"anonymize",options:{}}]]),t[92]||(t[92]=o("label",{class:"form-check-label",for:"username"},"Usernames",-1))]),o("div",p_,[N(o("input",f_,null,512),[[s,{state:e.viewState,set:a=>{e.options.date=a},value:e.options?.date,form:"anonymize",options:{}}]]),t[93]||(t[93]=o("label",{class:"form-check-label",for:"date"},"Dates",-1))]),o("div",m_,[N(o("input",h_,null,512),[[s,{state:e.viewState,set:a=>{e.options.origin=a},value:e.options?.origin,form:"anonymize",options:{}}]]),t[94]||(t[94]=o("label",{class:"form-check-label",for:"origin"},"Project name",-1))])],512),[[W,e.detectedType==="pr"]])],512),[[W,e.detectedType]]),N(o("section",v_,[t[99]||(t[99]=o("div",{class:"paper-section-eyebrow"},"Expiration",-1)),o("div",g_,[o("div",y_,[t[97]||(t[97]=o("label",{class:"paper-field-label",for:"expiration"},"Strategy",-1)),N((l(),d("select",b_,[...t[96]||(t[96]=[o("option",{value:"redirect"},"Redirect to GitHub when expired",-1),o("option",{value:"remove",selected:""},"Remove when expired",-1)])])),[[s,{state:e.viewState,set:a=>{e.options.expirationMode=a},value:e.options?.expirationMode,form:"anonymize",options:{}}]])]),o("div",w_,[t[98]||(t[98]=o("label",{class:"paper-field-label",for:"expirationDate"},"Expiration date",-1)),N(o("input",{class:A(["form-control",{"is-invalid":e.anonymize?.expirationDate?.invalid}]),type:"date",name:"expirationDate",id:"expirationDate",required:"",min:e.minExpirationDate,max:e.maxExpirationDate},null,10,k_),[[s,{state:e.viewState,set:a=>{e.options.expirationDate=a},value:e.options?.expirationDate,form:"anonymize",options:{}}]]),N(o("div",E_,"Pick a date in the future.",512),[[W,e.anonymize?.expirationDate?.errors?.min]]),N(o("div",{class:"invalid-feedback"},"Pick a date on or before "+c(e.fmt?.date(e.maxExpirationDate))+".",513),[[W,e.anonymize?.expirationDate?.errors?.max]]),N(o("div",C_,"Enter a valid expiration date.",512),[[W,e.anonymize?.expirationDate?.errors?.required||e.anonymize?.expirationDate?.errors?.date]])])]),N(o("small",{class:"form-text text-muted"},"After "+c(e.fmt?.date(e.options?.expirationDate))+", the content will be removed.",513),[[W,e.options?.expirationMode=="remove"&&e.options?.expirationDate]]),N(o("small",{class:"form-text text-muted"},"After "+c(e.fmt?.date(e.options?.expirationDate))+", visitors will be redirected to GitHub.",513),[[W,e.options?.expirationMode=="redirect"&&e.options?.expirationDate]])],512),[[W,e.detectedType]]),N(o("section",__,[t[103]||(t[103]=o("div",{class:"paper-section-eyebrow"},"Co-authors",-1)),t[104]||(t[104]=o("p",{class:"form-text text-muted",style:{"margin-bottom":"8px"}}," Co-authors can view and edit these settings. They cannot delete the anonymization or manage co-authors. ",-1)),N(o("div",S_,[t[100]||(t[100]=o("label",{class:"paper-field-label",for:"coauthorSearch"},"Add a GitHub user",-1)),o("div",N_,[N(o("input",D_,null,512),[[s,{state:e.viewState,set:a=>{e.coauthorSearch=a},value:e.coauthorSearch,form:"anonymize",options:{debounce:300},change:()=>{e.searchCoauthors()}}]]),N(o("div",R_,[(l(!0),d(Q,null,se(e.coauthorResults,(a,u)=>(l(),d("a",{href:"#",class:"dropdown-item d-flex align-items-center",onClick:ce(m=>e.addCoauthor(a,m),["prevent"])},[o("img",{alt:"",style:{width:"22px",height:"22px","border-radius":"50%","margin-right":"8px"},src:e.safeUrl(a?.photo)},null,8,A_),o("span",{textContent:c(a?.username)},null,8,O_)],8,T_))),256))],512),[[W,e.coauthorResults?.length>0]])]),N(o("small",{class:"form-text text-muted",textContent:c(e.coauthorError)},null,8,I_),[[W,e.coauthorError]])],512),[[W,e.role==="owner"||e.role==="admin"]]),o("div",P_,[(l(!0),d(Q,null,se(e.coauthors,(a,u)=>(l(),d("div",V_,[a?.photo?(l(),d("img",{key:0,alt:"",style:{width:"24px",height:"24px","border-radius":"50%"},src:e.safeUrl(a?.photo)},null,8,q_)):p("v-if",!0),o("a",{target:"_blank",textContent:c(a?.username),href:e.safeUrl("https://github.com/"+a?.username)},null,8,M_),t[102]||(t[102]=o("span",{class:"type-badge type-coauthor"},"Co-author",-1)),N(o("button",{type:"button",class:"btn btn-sm btn-icon",style:{"margin-left":"auto"},title:"Remove co-author",onClick:m=>e.removeCoauthor(a),"aria-label":"Remove co-author"},[...t[101]||(t[101]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-close"})],-1)])],8,$_),[[W,e.role==="owner"||e.role==="admin"]])]))),256)),N(o("div",L_," No co-authors yet. ",512),[[W,!e.coauthors||e.coauthors?.length===0]])])],512),[[W,e.isUpdate&&e.detectedType==="repo"]]),e.error?(l(),d("div",{key:0,class:"alert alert-danger",role:"alert",textContent:c(e.error)},null,8,U_)):p("v-if",!0),e.draftRestored?(l(),d("div",F_,[t[105]||(t[105]=g("Your unsaved draft was restored. ",-1)),o("button",{type:"button",class:"draft-discard",onClick:t[14]||(t[14]=a=>e.discardDraft())},"Discard draft")])):e.unsavedChanges?(l(),d("div",z_,[g(c(e.draftSaved?"Draft saved in this tab for 30 minutes.":"Unsaved changes. Keep this tab open until you save.")+" ",1),o("button",{type:"button",class:"draft-discard",onClick:t[15]||(t[15]=a=>e.discardDraft())},c(e.isUpdate?"Restore saved settings":"Discard changes"),1)])):p("v-if",!0),e.detectedType==="repo"&&(e.options.image||e.options.pdf)?(l(),d("p",H_,"Review enabled images and PDFs before sharing. Their contents are not anonymized.")):p("v-if",!0),o("button",{type:"button",class:"btn btn-outline-ink mobile-preview-jump",onClick:t[16]||(t[16]=a=>e.selectMobilePane("preview"))},[...t[106]||(t[106]=[g("Review preview ",-1),o("span",{"aria-hidden":"true"},"\u2192",-1)])]),N(o("div",B_,[e.detectedType==="repo"&&!e.isUpdate?(l(),d("button",{key:0,type:"submit",disabled:e.sourceLoading,class:"btn btn-ink",onClick:t[17]||(t[17]=ce(a=>e.submitForm(a,()=>{e.anonymizeRepo(a)}),["prevent"]))},[...t[107]||(t[107]=[o("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-shield"})],-1),g(" Anonymize Repository ",-1)])],8,j_)):p("v-if",!0),e.detectedType==="repo"&&e.isUpdate?(l(),d("button",{key:1,type:"submit",disabled:e.sourceLoading,class:"btn btn-ink",onClick:t[18]||(t[18]=ce(a=>e.submitForm(a,()=>{e.anonymizeRepo(a)}),["prevent"]))},[...t[108]||(t[108]=[o("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-save"})],-1),g(" Update Repository ",-1)])],8,G_)):p("v-if",!0),e.detectedType==="pr"&&!e.isUpdate?(l(),d("button",{key:2,type:"submit",disabled:e.sourceLoading,class:"btn btn-ink",onClick:t[19]||(t[19]=ce(a=>e.submitForm(a,()=>{e.anonymizePullRequest(a)}),["prevent"]))},[...t[109]||(t[109]=[o("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-shield"})],-1),g(" Anonymize Pull Request ",-1)])],8,W_)):p("v-if",!0),e.detectedType==="pr"&&e.isUpdate?(l(),d("button",{key:3,type:"submit",disabled:e.sourceLoading,class:"btn btn-ink",onClick:t[20]||(t[20]=ce(a=>e.submitForm(a,()=>{e.anonymizePullRequest(a)}),["prevent"]))},[...t[110]||(t[110]=[o("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-save"})],-1),g(" Update Pull Request ",-1)])],8,K_)):p("v-if",!0),e.detectedType==="gist"&&!e.isUpdate?(l(),d("button",{key:4,type:"submit",disabled:e.sourceLoading,class:"btn btn-ink",onClick:t[21]||(t[21]=ce(a=>e.submitForm(a,()=>{e.anonymizeGist(a)}),["prevent"]))},[...t[111]||(t[111]=[o("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-shield"})],-1),g(" Anonymize Gist ",-1)])],8,Y_)):p("v-if",!0),e.detectedType==="gist"&&e.isUpdate?(l(),d("button",{key:5,type:"submit",disabled:e.sourceLoading,class:"btn btn-ink",onClick:t[22]||(t[22]=ce(a=>e.submitForm(a,()=>{e.anonymizeGist(a)}),["prevent"]))},[...t[112]||(t[112]=[o("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-save"})],-1),g(" Update Gist ",-1)])],8,J_)):p("v-if",!0)],512),[[W,e.detectedType]])])),[[i,e.viewState]])],8,DE),p(" Preview column (right) "),e.detectedType==="repo"?(l(),d("div",{key:0,id:"workspace-preview",role:e.mobileWorkspace?"tabpanel":null,"aria-labelledby":e.mobileWorkspace?"workspace-preview-tab":null,class:"anonymize-preview-col"},[o("div",X_,[t[113]||(t[113]=o("span",{class:"paper-eyebrow"},"Live preview",-1)),o("span",Z_,c(e.previewStatus==="ready"?"README with redactions applied":"README preview"),1)]),e.sourceLoading&&e.previewStatus==="idle"?(l(),d("div",x_,"Loading source\u2026")):p("v-if",!0),e.previewStatus==="loading"?(l(),d("div",e2,"Updating the anonymized preview\u2026")):p("v-if",!0),e.previewStatus==="error"?(l(),d("div",t2,[t[114]||(t[114]=o("p",null,"Unable to generate the anonymized preview. The latest redactions have not been verified.",-1)),o("button",{class:"btn btn-outline-ink",type:"button",onClick:t[23]||(t[23]=a=>e.retryPreview())},"Retry preview")])):p("v-if",!0),!e.sourceLoading&&!e.readme&&e.previewStatus==="idle"?(l(),d("div",o2,"No README is available to preview. Review the published files before sharing.")):p("v-if",!0),e.previewStatus==="ready"?(l(),d("div",{key:4,class:"anonymize-preview-body markdown-body body",innerHTML:e.sanitize(e.html_readme)},null,8,s2)):p("v-if",!0)],8,Q_)):p("v-if",!0),e.detectedType==="gist"&&e.details?(l(),d("div",{key:1,id:"workspace-preview",role:e.mobileWorkspace?"tabpanel":null,"aria-labelledby":e.mobileWorkspace?"workspace-preview-tab":null,class:"anonymize-preview-col"},[o("div",r2,[t[115]||(t[115]=o("span",{class:"paper-eyebrow"},"Live preview",-1)),o("span",i2,c(e.previewStatus==="ready"?"Gist with redactions applied":"Gist preview"),1)]),e.sourceLoading&&e.previewStatus==="idle"?(l(),d("div",a2,"Loading source\u2026")):p("v-if",!0),e.previewStatus==="loading"?(l(),d("div",l2,"Updating the anonymized preview\u2026")):p("v-if",!0),e.previewStatus==="error"?(l(),d("div",d2,[t[116]||(t[116]=o("p",null,"Unable to generate the anonymized preview. The latest redactions have not been verified.",-1)),o("button",{class:"btn btn-outline-ink",type:"button",onClick:t[24]||(t[24]=a=>e.retryPreview())},"Retry preview")])):p("v-if",!0),e.previewStatus==="ready"?(l(),d("div",u2,[o("div",c2,[o("h2",p2,[e.options?.title?(l(),d("span",f2,c(e.anonymizeGistContent(e.details?.gist?.description)||"Untitled gist"),1)):p("v-if",!0),o("span",{class:A(["badge",{"badge-success":e.details?.gist?.isPublic,"badge-secondary":!e.details?.gist?.isPublic}])},c(e.details?.gist?.isPublic?"public":"secret"),3)]),e.options?.date?(l(),d("small",{key:0,textContent:c(e.fmt?.date(e.details?.gist?.updatedDate))},null,8,m2)):p("v-if",!0)]),e.options?.origin?(l(),d("small",h2,"Gist ID: "+c(e.details?.source?.gistId),1)):p("v-if",!0),e.options?.username&&e.details?.gist?.ownerLogin?(l(),d("small",v2,"By @"+c(e.anonymizeGistContent(e.details?.gist?.ownerLogin)),1)):p("v-if",!0),e.options?.content&&e.previewGistFiles?.length?(l(),d("div",g2,[o("ul",y2,[(l(!0),d(Q,null,se(e.previewGistFiles,(a,u)=>(l(),d("li",b2,[o("div",w2,[o("strong",{textContent:c(a?.filename)},null,8,k2),a?.language?(l(),d("span",E2,c(a?.language),1)):p("v-if",!0)]),_e(n,{file:a,terms:e.terms,options:e.options},null,8,["file","terms","options"])]))),256))])])):p("v-if",!0),e.options?.comments&&e.details?.gist?.comments&&e.details?.gist?.comments?.length?(l(),d("div",C2,[t[119]||(t[119]=o("h3",{class:"paper-section-eyebrow mt-3"},"Comments",-1)),o("ul",_2,[(l(!0),d(Q,null,se(e.details?.gist?.comments,(a,u)=>(l(),d("li",S2,[o("div",N2,[e.options?.username?(l(),d("span",D2,[t[117]||(t[117]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-user"})],-1)),t[118]||(t[118]=g(" @",-1)),o("span",{textContent:c(e.anonymizeGistContent(a?.author))},null,8,R2)])):p("v-if",!0),e.options?.date?(l(),d("span",{key:1,class:"pr-comment-date",textContent:c(e.fmt?.date(a?.updatedDate))},null,8,T2)):p("v-if",!0)]),e.options?.body?(l(),d("div",A2,[_e(r,{content:e.anonymizeGistContent(a?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])])):p("v-if",!0)]))),256))])])):p("v-if",!0)])):p("v-if",!0)],8,n2)):p("v-if",!0),e.detectedType==="pr"&&e.details?(l(),d("div",{key:2,id:"workspace-preview",role:e.mobileWorkspace?"tabpanel":null,"aria-labelledby":e.mobileWorkspace?"workspace-preview-tab":null,class:"anonymize-preview-col"},[o("div",I2,[t[120]||(t[120]=o("span",{class:"paper-eyebrow"},"Live preview",-1)),o("span",P2,c(e.previewStatus==="ready"?"Pull request with redactions applied":"Pull request preview"),1)]),e.sourceLoading&&e.previewStatus==="idle"?(l(),d("div",V2,"Loading source\u2026")):p("v-if",!0),e.previewStatus==="loading"?(l(),d("div",q2,"Updating the anonymized preview\u2026")):p("v-if",!0),e.previewStatus==="error"?(l(),d("div",M2,[t[121]||(t[121]=o("p",null,"Unable to generate the anonymized preview. The latest redactions have not been verified.",-1)),o("button",{class:"btn btn-outline-ink",type:"button",onClick:t[25]||(t[25]=a=>e.retryPreview())},"Retry preview")])):p("v-if",!0),e.previewStatus==="ready"?(l(),d("div",$2,[o("div",L2,[o("h2",U2,[e.options?.title?(l(),d("span",F2,c(e.anonymizePrContent(e.details?.pullRequest?.title)),1)):p("v-if",!0),o("span",{class:A(["badge",{"badge-success":e.details?.pullRequest?.merged,"badge-warning":e.details?.pullRequest?.state=="open","badge-danger":e.details?.pullRequest?.state=="closed"&&!e.details?.pullRequest?.merged}])},c(e.fmt?.title(e.details?.pullRequest?.merged?"merged":e.details?.pullRequest?.state)),3)]),e.options?.date?(l(),d("small",{key:0,textContent:c(e.fmt?.date(e.details?.pullRequest?.updatedDate))},null,8,z2)):p("v-if",!0)]),e.options?.origin?(l(),d("small",H2,"Pull Request on "+c(e.details?.pullRequest?.baseRepositoryFullName),1)):p("v-if",!0),e.options?.body?(l(),d("div",B2,[_e(r,{content:e.anonymizePrContent(e.details?.pullRequest?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])])):p("v-if",!0),e.options?.diff||e.options?.comments?(l(),d("nav",j2,[e.options?.diff?(l(),d("button",{key:0,class:A(["paper-tab",{active:e.prTabState?.active=="diff"}]),type:"button",role:"tab",id:"preview-pr-diff-tab","aria-selected":e.prTabState?.active==="diff","aria-controls":"preview-pr-diff-panel",tabindex:e.prTabState?.active==="diff"?0:-1,onKeydown:t[26]||(t[26]=a=>e.previewTabKeydown(a)),onClick:t[27]||(t[27]=a=>e.prTabState.active="diff")},[...t[122]||(t[122]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-code"})],-1),g(" Diff ",-1)])],42,G2)):p("v-if",!0),e.options?.comments?(l(),d("button",{key:1,class:A(["paper-tab",{active:e.prTabState?.active=="comments"}]),type:"button",role:"tab",id:"preview-pr-comments-tab","aria-selected":e.prTabState?.active==="comments","aria-controls":"preview-pr-comments-panel",tabindex:e.prTabState?.active==="comments"?0:-1,onKeydown:t[28]||(t[28]=a=>e.previewTabKeydown(a)),onClick:t[29]||(t[29]=a=>e.prTabState.active="comments")},[t[123]||(t[123]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-comment"})],-1)),o("span",{textContent:c(e.fmt.plural(e.details?.pullRequest?.comments?.length,{0:"No comments",one:"1 comment",other:"{} comments"}))},null,8,K2)],42,W2)):p("v-if",!0)])):p("v-if",!0),!e.options?.diff&&!e.options?.comments?(l(),d("div",Y2,"Diff and comments are hidden by your display settings.")):p("v-if",!0),o("div",J2,[e.options?.diff&&e.prTabState?.active=="diff"?(l(),d("div",Q2,[o("div",{class:"pr-diff",innerHTML:e.sanitize(e.fmt?.diff(e.anonymizePrContent(e.details?.pullRequest?.diff)))},null,8,X2)])):p("v-if",!0),e.options?.comments&&e.prTabState?.active=="comments"?(l(),d("div",Z2,[o("ul",x2,[(l(!0),d(Q,null,se(e.details?.pullRequest?.comments,(a,u)=>(l(),d("li",eS,[o("div",tS,[e.options?.username?(l(),d("span",oS,[t[124]||(t[124]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-user"})],-1)),t[125]||(t[125]=g(" @",-1)),o("span",{textContent:c(e.anonymizePrContent(a?.author))},null,8,sS)])):p("v-if",!0),e.options?.date?(l(),d("span",{key:1,class:"pr-comment-date",textContent:c(e.fmt?.date(a?.updatedDate))},null,8,nS)):p("v-if",!0)]),e.options?.body?(l(),d("div",rS,[_e(r,{content:e.anonymizePrContent(a?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])])):p("v-if",!0)]))),256))])])):p("v-if",!0)])])):p("v-if",!0)],8,O2)):p("v-if",!0)])],512),[[W,e.workspaceOpen||e.isUpdate]])],2)}var iS={class:"container-fluid h-100 anonymize-page"},aS={class:"row h-100 flex-column flex-md-row"},lS={class:"col-md sidePanel shadow overflow-auto anonymize-form-col"},dS={class:"form-group"},uS={class:"form-group"},cS={class:"form-check"},pS={class:"form-check-input",type:"checkbox",id:"update",name:"update"},fS={class:"form-group"},mS={class:"form-text text-muted"},hS=["href"],vS={class:"invalid-feedback"},gS={class:"form-text text-muted"},yS={class:"form-group"},bS={id:"idHelp",class:"form-text text-muted"},wS={class:"invalid-feedback"},kS={class:"form-group"},ES={class:"invalid-feedback"},CS={class:"form-group"},_S={class:"form-control",id:"expiration",name:"expiration"},SS={class:"form-group",id:"expiration-date-form"},NS={class:"form-control",type:"date",name:"expirationDate",id:"expirationDate"},DS={class:"accordion mb-3",id:"options"},RS={class:"card"},TS={id:"collapseOne",class:"collapse show","aria-labelledby":"headingOne","data-parent":"#options"},AS={class:"card-body"},OS={class:"form-group mb-0"},IS={class:"form-check"},PS={class:"form-check-input",type:"checkbox",id:"link",name:"link"},VS={class:"form-check"},qS={class:"form-check-input",type:"checkbox",id:"image",name:"image"},MS={class:"form-check"},$S={class:"form-check-input",type:"checkbox",id:"date",name:"date"},LS={class:"form-check"},US={class:"form-check-input",type:"checkbox",id:"username",name:"username"},FS={class:"form-check"},zS={class:"form-check-input",type:"checkbox",id:"comments",name:"comments"},HS={class:"form-check"},BS={class:"form-check-input",type:"checkbox",id:"diff",name:"diff"},jS={class:"form-check"},GS={class:"form-check-input",type:"checkbox",id:"origin",name:"origin"},WS={class:"form-check"},KS={class:"form-check-input",type:"checkbox",id:"title",name:"title"},YS={class:"form-check"},JS={class:"form-check-input",type:"checkbox",id:"body",name:"body"},QS=["textContent"],XS={class:"anonymize-submit-bar"},ZS={key:0,class:"col-md-8 p-2 overflow-auto anonymize-preview-col"},xS={class:"d-flex w-100 justify-content-between align-items-center flex-wrap"},eN={class:"pr-title mb-1"},tN={key:0},oN=["textContent"],sN={key:0},nN={key:1,class:"pr-body shadow-sm p-3 mb-4 rounded",style:{background:"var(--sidebar-bg-color)"}},rN={class:"nav nav-tabs",id:"myTab",role:"tablist"},iN={key:0,class:"nav-item",role:"presentation"},aN={key:1,class:"nav-item",role:"presentation"},lN=["textContent"],dN={class:"tab-content",id:"pills-tabContent"},uN={class:"tab-pane show active",id:"pills-diff",role:"tabpanel","aria-labelledby":"pills-diff-tab"},cN={key:0,class:"pr-diff shadow-sm p-3 mb-4 rounded",style:{background:"var(--sidebar-bg-color)"}},pN={style:{"overflow-x":"auto"}},fN=["innerHTML"],mN={key:0,class:"pr-comments list-group"},hN={class:"pr-comment list-group-item"},vN={class:"d-flex w-100 justify-content-between flex-wrap"},gN={key:0,class:"mb-1"},yN=["textContent"],bN={class:"mb-1"};function fl(e,t){let n=We("markdown"),r=ye("field"),s=ye("form");return l(),d("div",iS,[o("div",aS,[o("div",lS,[o("div",{class:A(["p-0 py-2 m-auto",{card:!e.pullRequestUrl,container:e.pullRequestUrl}])},[N((l(),d("form",{class:A(["form needs-validation",{"card-body":!e.pullRequestUrl}]),name:"anonymizeForm",novalidate:""},[t[30]||(t[30]=le('
Anonymize \xA0/\xA0 Pull request

Anonymize a pull request

Fill in the details \u2014 it only takes a minute.

Source
',4)),p(" pullRequestUrl "),o("div",dS,[t[2]||(t[2]=o("label",{for:"pullRequestUrl"},"URL of your pull request",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.anonymize?.pullRequestUrl?.invalid}]),name:"pullRequestUrl",id:"pullRequestUrl",placeholder:"https://github.com/owner/repo/pull/123"},null,2),[[r,{state:e.viewState,set:i=>{e.pullRequestUrl=i},value:e.pullRequestUrl,form:"anonymizeForm",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"},change:()=>{e.pullRequestSelected()}}]]),N(o("div",{class:"invalid-feedback"},c(e.pullRequestUrl)+" is not accessible. Some organizations are restricting the access to the repositories. ",513),[[W,e.anonymize?.pullRequestUrl?.errors?.access]]),N(o("div",{class:"invalid-feedback"},c(e.pullRequestUrl)+" does not exist or is not accessible ",513),[[W,e.anonymize?.pullRequestUrl?.errors?.missing]]),N(o("div",{class:"invalid-feedback"},c(e.pullRequestUrl)+" is already anonymized ",513),[[W,e.anonymize?.pullRequestUrl?.errors?.used]])]),N(o("div",null,[o("div",uS,[o("div",cS,[N(o("input",pS,null,512),[[r,{state:e.viewState,set:i=>{e.options.update=i},value:e.options?.update,form:"anonymizeForm",options:{}}]]),t[3]||(t[3]=o("label",{class:"form-check-label",for:"update"},"Auto update",-1)),t[4]||(t[4]=o("small",{id:"updateHelp",class:"form-text text-muted"},"Automatically update the anonymized pull request with the latest updates. The pull request is updated once per day maximum.",-1))])]),t[26]||(t[26]=o("div",{class:"paper-section-eyebrow anonymize-section-title"},[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-conference"})]),g(" Conference ID ")],-1)),p(" Conference "),o("div",fS,[t[5]||(t[5]=o("label",{for:"conference"},[g("Conference ID "),o("span",{class:"text-muted"},"(Optional)")],-1)),N(o("input",{class:A(["form-control",{"is-invalid":e.anonymize?.conference?.invalid}]),id:"conference",name:"conference"},null,2),[[r,{state:e.viewState,set:i=>{e.conference=i},value:e.conference,form:"anonymizeForm",options:{debounce:{default:800,blur:0},updateOn:"default blur"}}]]),N(o("small",mS,[o("a",{target:"_target",href:e.safeUrl(e.conference_data?.url)},c(e.conference_data?.name),9,hS),g(" will expire on "+c(e.fmt?.date(e.conference_data?.endDate))+".",1)],512),[[W,e.conference_data]]),N(o("div",vS," The conference is not activated. ",512),[[W,e.anonymize?.conference?.errors?.activated]]),N(o("small",gS," Use the Conference ID that your conference provided you. This will update automatically the anonymization options based on the conference preferences. ",512),[[W,!e.conference_data]])]),t[27]||(t[27]=o("div",{class:"paper-section-eyebrow anonymize-section-title"},[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-shield"})]),g(" Anonymization Options ")],-1)),p(" Pull Request ID "),o("div",yS,[t[6]||(t[6]=o("label",{for:"pullRequestId"},"Anonymized pull request id",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.anonymize?.pullRequestId?.invalid}]),name:"pullRequestId",id:"pullRequestId"},null,2),[[r,{state:e.viewState,set:i=>{e.pullRequestId=i},value:e.pullRequestId,form:"anonymizeForm",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"}}]]),o("small",bS,"Id used in the url: https://anonymous.4open.science/r/"+c(e.pullRequestId),1),N(o("div",wS," Repository id can only contain letters and numbers ",512),[[W,e.anonymize?.pullRequestId?.errors?.format]]),N(o("div",{class:"invalid-feedback"},c(e.pullRequestId)+" is already used ",513),[[W,e.anonymize?.pullRequestId?.errors?.used]])]),p(" Terms "),o("div",kS,[t[7]||(t[7]=o("label",{for:"terms"},"Terms to anonymize",-1)),N(o("textarea",{class:A(["form-control",{"is-invalid":e.anonymize?.terms?.invalid}]),id:"terms",name:"terms",rows:"3"},null,2),[[r,{state:e.viewState,set:i=>{e.terms=i},value:e.terms,form:"anonymizeForm",options:{debounce:250}}]]),t[8]||(t[8]=o("small",{id:"termsHelp",class:"form-text text-muted"},"One term per line. Each term will be replaced by XXX.",-1)),N(o("div",ES," Terms are in an invalid format ",512),[[W,e.anonymize?.terms?.errors?.format]])]),o("div",CS,[t[10]||(t[10]=o("label",{for:"expiration"},"Expiration strategy",-1)),N((l(),d("select",_S,[...t[9]||(t[9]=[o("option",{value:"never",selected:""},"Never expire",-1),o("option",{value:"redirect"}," Redirect to GitHub when expired ",-1),o("option",{value:"remove"},"Remove when expired",-1)])])),[[r,{state:e.viewState,set:i=>{e.options.expirationMode=i},value:e.options?.expirationMode,form:"anonymizeForm",options:{}}]]),t[11]||(t[11]=o("small",{class:"form-text text-muted"},"Define the expiration strategy for the anonymized repository.",-1))]),N(o("div",SS,[t[12]||(t[12]=o("label",{for:"expirationDate"},"Expiration date of the anonymized repository",-1)),N(o("input",NS,null,512),[[r,{state:e.viewState,set:i=>{e.options.expirationDate=i},value:e.options?.expirationDate,form:"anonymizeForm",options:{}}]]),N(o("small",{class:"form-text text-muted"},"After "+c(e.fmt?.date(e.options?.expirationDate))+", the repository will be removed and the visitor will not be able to see the content of the repository.",513),[[W,e.options?.expirationMode=="remove"]]),N(o("small",{class:"form-text text-muted"},"After "+c(e.fmt?.date(e.options?.expirationDate))+", the visitors of the anonymized repository will be redirected to "+c(e.pullRequestUrl)+".",513),[[W,e.options?.expirationMode=="redirect"]])],512),[[W,e.options?.expirationMode!="never"]]),o("div",DS,[o("div",RS,[t[25]||(t[25]=le('

',1)),o("div",TS,[o("div",AS,[o("div",OS,[o("div",IS,[N(o("input",PS,null,512),[[r,{state:e.viewState,set:i=>{e.options.link=i},value:e.options?.link,form:"anonymizeForm",options:{}}]]),t[13]||(t[13]=o("label",{class:"form-check-label",for:"link"},"Keep links",-1)),t[14]||(t[14]=o("small",{class:"form-text text-muted"},"Keep or remove all the links.",-1))]),o("div",VS,[N(o("input",qS,null,512),[[r,{state:e.viewState,set:i=>{e.options.image=i},value:e.options?.image,form:"anonymizeForm",options:{}}]]),t[15]||(t[15]=o("label",{class:"form-check-label",for:"image"},"Display images",-1)),t[16]||(t[16]=o("small",{class:"form-text text-muted"},"Images are not anonymized",-1))]),o("div",MS,[N(o("input",$S,null,512),[[r,{state:e.viewState,set:i=>{e.options.date=i},value:e.options?.date,form:"anonymizeForm",options:{}}]]),t[17]||(t[17]=o("label",{class:"form-check-label",for:"date"},"Display dates",-1)),t[18]||(t[18]=o("small",{class:"form-text text-muted"},"Display the date of the Pull Request and the date of the comments.",-1))]),o("div",LS,[N(o("input",US,null,512),[[r,{state:e.viewState,set:i=>{e.options.username=i},value:e.options?.username,form:"anonymizeForm",options:{}}]]),t[19]||(t[19]=o("label",{class:"form-check-label",for:"username"},"Display username",-1))]),o("div",FS,[N(o("input",zS,null,512),[[r,{state:e.viewState,set:i=>{e.options.comments=i},value:e.options?.comments,form:"anonymizeForm",options:{}}]]),t[20]||(t[20]=o("label",{class:"form-check-label",for:"comments"},"Display comments",-1))]),o("div",HS,[N(o("input",BS,null,512),[[r,{state:e.viewState,set:i=>{e.options.diff=i},value:e.options?.diff,form:"anonymizeForm",options:{}}]]),t[21]||(t[21]=o("label",{class:"form-check-label",for:"diff"},"Display diff",-1))]),o("div",jS,[N(o("input",GS,null,512),[[r,{state:e.viewState,set:i=>{e.options.origin=i},value:e.options?.origin,form:"anonymizeForm",options:{}}]]),t[22]||(t[22]=o("label",{class:"form-check-label",for:"origin"},"Display the project name",-1))]),o("div",WS,[N(o("input",KS,null,512),[[r,{state:e.viewState,set:i=>{e.options.title=i},value:e.options?.title,form:"anonymizeForm",options:{}}]]),t[23]||(t[23]=o("label",{class:"form-check-label",for:"title"},"Display the PR title",-1))]),o("div",YS,[N(o("input",JS,null,512),[[r,{state:e.viewState,set:i=>{e.options.body=i},value:e.options?.body,form:"anonymizeForm",options:{}}]]),t[24]||(t[24]=o("label",{class:"form-check-label",for:"body"},"Display the PR body and comment bodies",-1))])])])])])])],512),[[W,e.pullRequestUrl]]),e.error?(l(),d("div",{key:0,class:"alert alert-danger",role:"alert",textContent:c(e.error)},null,8,QS)):p("v-if",!0),N(o("div",XS,[e.isUpdate?p("v-if",!0):(l(),d("button",{key:0,id:"submit",type:"submit",class:"btn btn-ink btn-block",onClick:t[0]||(t[0]=ce(i=>e.submitForm(i,()=>{e.anonymizePullRequest(i)}),["prevent"]))},[...t[28]||(t[28]=[o("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-shield"})],-1),g(" Anonymize ",-1)])])),e.isUpdate?(l(),d("button",{key:1,id:"submit",type:"submit",class:"btn btn-ink btn-block",onClick:t[1]||(t[1]=ce(i=>e.submitForm(i,()=>{e.updatePullRequest(i)}),["prevent"]))},[...t[29]||(t[29]=[o("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-save"})],-1),g(" Update ",-1)])])):p("v-if",!0)],512),[[W,e.pullRequestUrl]])],2)),[[s,e.viewState]])],2)]),e.details?(l(),d("div",ZS,[o("div",xS,[o("h2",eN,[e.options?.title?(l(),d("span",tN,c(e.anonymize(e.details?.pullRequest?.title)),1)):p("v-if",!0),o("span",{class:A(["badge",{"badge-success":e.details?.pullRequest?.merged,"badge-warning":e.details?.pullRequest?.state=="open","badge-danger":e.details?.pullRequest?.state=="closed"&&!e.details?.pullRequest?.merged}])},c(e.fmt?.title(e.details?.pullRequest?.merged?"merged":e.details?.pullRequest?.state)),3)]),e.options?.date?(l(),d("small",{key:0,textContent:c(e.fmt?.date(e.details?.pullRequest?.updatedDate))},null,8,oN)):p("v-if",!0)]),e.options?.origin?(l(),d("small",sN,"Pull Request on "+c(e.details?.pullRequest?.baseRepositoryFullName),1)):p("v-if",!0),e.options?.body?(l(),d("div",nN,[_e(n,{content:e.anonymize(e.details?.pullRequest?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])])):p("v-if",!0),o("ul",rN,[e.options?.diff?(l(),d("li",iN,[...t[31]||(t[31]=[o("button",{class:"nav-link active",id:"pills-diff-tab","data-toggle":"pill","data-target":"#pills-diff",type:"button",role:"tab","aria-controls":"pills-diff","aria-selected":"true"}," Diff ",-1)])])):p("v-if",!0),e.options?.comments?(l(),d("li",aN,[o("button",{class:A(["nav-link",{active:!e.options?.diff}]),id:"pills-comments-tab","data-toggle":"pill","data-target":"#pills-comments",type:"button",role:"tab","aria-controls":"pills-comments","aria-selected":"false"},[o("span",{textContent:c(e.fmt.plural(e.details?.pullRequest?.comments?.length,{0:"No comment",one:"One Comment",other:"{} Comments"}))},null,8,lN)],2)])):p("v-if",!0)]),o("div",dN,[o("div",uN,[e.options?.diff?(l(),d("div",cN,[o("pre",pN,[o("code",{innerHTML:e.sanitize(e.fmt?.diff(e.anonymize(e.details?.pullRequest?.diff)))},null,8,fN)])])):p("v-if",!0)]),o("div",{class:A(["tab-pane",{"show active":!e.options?.diff}]),id:"pills-comments",role:"tabpanel","aria-labelledby":"pills-comments-tab"},[e.options?.comments?(l(),d("ul",mN,[(l(!0),d(Q,null,se(e.details?.pullRequest?.comments,(i,a)=>(l(),d("li",hN,[o("div",vN,[e.options?.username?(l(),d("h5",gN," @"+c(e.anonymize(i?.author)),1)):p("v-if",!0),e.options?.date?(l(),d("small",{key:1,textContent:c(e.fmt?.date(i?.updatedDate))},null,8,yN)):p("v-if",!0)]),o("p",bN,[e.options?.body?(l(),qt(n,{key:0,class:"pr-comment-body",content:e.anonymize(i?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])):p("v-if",!0)])]))),256))])):p("v-if",!0)],2)])])):p("v-if",!0)])])}var wN={class:"container paper-page claim-page"},kN={class:"paper-settings-main claim-form"},EN={class:"form-group"},CN={class:"invalid-feedback"},_N={class:"form-group"};function ml(e,t){let n=ye("field"),r=ye("form");return l(),d("div",wN,[t[6]||(t[6]=le('
My work \xA0/\xA0 Claim

Claim an anonymization

Take ownership of an existing anonymized repository so it appears on your dashboard.

',3)),o("div",kN,[t[5]||(t[5]=o("p",{class:"paper-section-copy"},"Use this when an anonymization was created by a co-author or from another account. You must have access to the GitHub repository it was made from.",-1)),N((l(),d("form",{class:"form needs-validation",name:"claimForm",novalidate:"",onSubmit:t[0]||(t[0]=ce(s=>e.submitForm(s,()=>{e.claim()}),["prevent"]))},[o("div",EN,[t[1]||(t[1]=o("label",{class:"paper-field-label",for:"repoUrl"},"GitHub repository URL",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.claimForm?.repoUrl?.invalid&&(e.claimForm?.repoUrl?.touched||e.claimForm?.submitted)}]),name:"repoUrl",id:"repoUrl",required:""},null,2),[[n,{state:e.viewState,set:s=>{e.repoUrl=s},value:e.repoUrl,form:"claimForm",options:{}}]]),N(o("div",CN," No anonymization matches this repository and ID. Check both values and that you can access the repository on GitHub. ",512),[[W,e.claimForm?.repoUrl?.errors?.not_found]])]),o("div",_N,[t[2]||(t[2]=o("label",{class:"paper-field-label",for:"repoId"},"Anonymized repository ID",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.claimForm?.repoId?.invalid&&(e.claimForm?.repoId?.touched||e.claimForm?.submitted)}]),name:"repoId",id:"repoId",required:""},null,2),[[n,{state:e.viewState,set:s=>{e.repoId=s},value:e.repoId,form:"claimForm",options:{}}]]),t[3]||(t[3]=o("small",{id:"idHelp",class:"form-text text-muted"},[g("The ID is the last part of the anonymized URL: "),o("code",null,"anonymous.4open.science/r/"),g(".")],-1))]),t[4]||(t[4]=o("button",{id:"submit",type:"submit",class:"btn btn-ink"}," Claim anonymization ",-1))],32)),[[r,e.viewState]])])])}var SN={class:"container page paper-page conference-page"},NN={class:"paper-crumbs"},DN={class:"here"},RN={class:"d-flex align-items-end flex-wrap",style:{gap:"12px","justify-content":"space-between"}},TN=["textContent"],AN={key:0,class:"paper-page-lede"},ON=["textContent","href"],IN={class:"d-flex align-items-center flex-wrap",style:{gap:"10px"}},PN=["textContent"],VN=["href"],qN={class:"paper-meta-rule"},MN=["textContent"],$N=["textContent"],LN={key:0},UN={class:"search-wrap"},FN={type:"search",id:"search",class:"form-control","aria-label":"Search repositories",placeholder:"Search by ID or source repository\u2026",autocomplete:"off"},zN={class:"dashboard-filter-controls"},HN={class:"dropdown"},BN={class:"btn dropdown-toggle",type:"button",id:"dropdownSort","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},jN={class:"filter-btn-value"},GN={class:"dropdown-menu","aria-labelledby":"dropdownSort"},WN={class:"form-check dropdown-item"},KN={class:"form-check-input",type:"radio",name:"sort",id:"anonymizeDate",value:"-anonymizeDate"},YN={class:"form-check dropdown-item"},JN={class:"form-check-input",type:"radio",name:"sort",id:"sortID",value:"repoId"},QN={class:"form-check dropdown-item"},XN={class:"form-check-input",type:"radio",name:"sort",id:"sortStatus",value:"-status"},ZN={class:"form-check dropdown-item"},xN={class:"form-check-input",type:"radio",name:"sort",id:"sortViews",value:"-pageView"},eD={class:"dropdown"},tD={class:"btn dropdown-toggle",type:"button",id:"dropdownStatus","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},oD={key:0,class:"filter-btn-value"},sD={key:1,class:"filter-btn-value"},nD={class:"dropdown-menu","aria-labelledby":"dropdownStatus"},rD={class:"form-check dropdown-item"},iD=["id"],aD=["for"],lD={class:"dashboard-meta"},dD={class:"dashboard-count"},uD={key:0},cD={key:0},pD={key:1},fD={key:1},mD={key:0,class:"filter-chip"},hD=["onClick","aria-label"],vD={class:"paper-table paper-table-repos w-100",role:"table","aria-label":"Repositories"},gD={class:"cell-anon",role:"cell"},yD={class:"anon-text"},bD=["textContent","href"],wD={class:"anon-sub"},kD={class:"anon-source"},ED=["textContent","href"],CD={key:0},_D=["textContent","href"],SD={key:1},ND=["href"],DD={class:"cell-status",role:"cell"},RD={class:"status-line"},TD=["textContent"],AD={key:0,class:"status-sub"},OD={class:"cell-views num",role:"cell"},ID=["textContent"],PD={class:"cell-expires",role:"cell"},VD={key:0,class:"expires-never"},qD=["textContent"],MD={key:2,class:"expires-past"},$D={key:0},LD={key:3,class:"empty-dash","aria-label":"Not applicable"},UD={class:"cell-actions",role:"cell"},FD={class:"dropdown"},zD=["aria-label"],HD={class:"dropdown-menu dropdown-menu-right"},BD=["href"],jD=["href"],GD={key:0,class:"paper-table-empty"},WD={key:0},KD={key:1},YD={key:2,class:"paper-table-empty-actions"};function hl(e,t){let n=ye("field"),r=ye("form");return l(),d("div",SN,[o("div",null,[o("div",NN,[t[2]||(t[2]=o("a",{href:"/dashboard"},"My work",-1)),t[3]||(t[3]=g(" \xA0/\xA0 ",-1)),t[4]||(t[4]=o("a",{href:"/conferences"},"Conferences",-1)),t[5]||(t[5]=g(" \xA0/\xA0 ",-1)),o("span",DN,c(e.conference?.conferenceID),1)]),o("div",RN,[o("div",null,[o("h1",{class:"paper-page-title",textContent:c(e.conference?.name)},null,8,TN),e.conference?.url?(l(),d("p",AN,[o("a",{target:"_blank",rel:"noopener",textContent:c(e.conference?.url),href:e.safeUrl(e.conference?.url)},null,8,ON)])):p("v-if",!0)]),o("div",IN,[o("span",{class:A(["status-pill",{"status-pill-ready":e.conference?.status=="ready","status-pill-removed":e.conference?.status=="removed"||e.conference?.status=="expired"}])},[o("span",{class:A(["status-dot","status-"+e.conference?.status]),"aria-hidden":"true"},null,2),o("span",{textContent:c(e.fmt?.statusLabel(e.conference?.status))},null,8,PN)],2),o("a",{class:"btn btn-outline-ink",href:e.safeUrl("/conference/"+e.conference?.conferenceID+"/edit")},[...t[6]||(t[6]=[o("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-edit"})],-1),g(" Edit conference",-1)])],8,VN)])]),o("div",qN,[o("span",null,[t[7]||(t[7]=g("ID ",-1)),o("b",{class:"commit-hash",textContent:c(e.conference?.conferenceID)},null,8,MN)]),o("span",null,[t[8]||(t[8]=g("Review window ",-1)),o("b",null,c(e.fmt?.date(e.conference?.startDate,"mediumDate"))+" \u2013 "+c(e.fmt?.date(e.conference?.endDate,"mediumDate")),1)]),o("span",null,[t[9]||(t[9]=g("Repositories ",-1)),o("b",null,c(e.fmt?.number(e.conference?.repositories?.length)),1)]),o("span",null,[t[10]||(t[10]=g("Plan ",-1)),o("b",{textContent:c(e.conference?.plan?.name||e.conference?.plan?.planID||"Free")},null,8,$N)]),e.conference?.price?(l(),d("span",LN,[t[11]||(t[11]=g("Cost so far ",-1)),o("b",null,c(e.fmt?.number(e.conference?.price,2))+" \u20AC",1)])):p("v-if",!0)]),t[32]||(t[32]=o("div",{class:"paper-section-eyebrow"},"Repositories",-1)),N((l(),d("form",{class:"w-100 dashboard-filter-row","aria-label":"Filter repositories","accept-charset":"UTF-8",onSubmit:t[0]||(t[0]=ce(s=>e.submitForm(s,()=>{s.preventDefault()}),["prevent"]))},[o("div",UN,[N(o("input",FN,null,512),[[n,{state:e.viewState,set:s=>{e.search=s},value:e.search,form:null,options:{}}]])]),o("div",zN,[o("div",HN,[o("button",BN,[t[12]||(t[12]=o("span",{class:"filter-btn-label"},"Sort",-1)),o("span",jN,c({"-anonymizeDate":"Anonymize date",repoId:"ID","-status":"Status","-pageView":"Views"}[e.orderBy]||"Custom"),1)]),o("div",GN,[t[17]||(t[17]=o("h6",{class:"dropdown-header"},"Order by",-1)),o("div",WN,[N(o("input",KN,null,512),[[n,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[13]||(t[13]=o("label",{class:"form-check-label",for:"anonymizeDate"},"Anonymize date",-1))]),o("div",YN,[N(o("input",JN,null,512),[[n,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[14]||(t[14]=o("label",{class:"form-check-label",for:"sortID"},"ID",-1))]),o("div",QN,[N(o("input",XN,null,512),[[n,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[15]||(t[15]=o("label",{class:"form-check-label",for:"sortStatus"},"Status",-1))]),o("div",ZN,[N(o("input",xN,null,512),[[n,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[16]||(t[16]=o("label",{class:"form-check-label",for:"sortViews"},"Views",-1))])])]),o("div",eD,[o("button",tD,[t[18]||(t[18]=o("span",{class:"filter-btn-label"},"Status",-1)),e.filters?.status?.ready&&e.filters?.status?.expired&&e.filters?.status?.removed?(l(),d("span",oD,"All")):p("v-if",!0),e.filters?.status?.ready&&e.filters?.status?.expired&&e.filters?.status?.removed?p("v-if",!0):(l(),d("span",sD,c((e.filters?.status?.ready?0:1)+(e.filters?.status?.expired?0:1)+(e.filters?.status?.removed?0:1))+" hidden ",1))]),o("div",nD,[t[19]||(t[19]=o("h6",{class:"dropdown-header"},"Show statuses",-1)),(l(!0),d(Q,null,se(e.statusLabels,(s,i,a)=>(l(),d("div",rD,[N(o("input",{class:"form-check-input",type:"checkbox",id:"status-"+i},null,8,iD),[[n,{state:e.viewState,set:u=>{e.filters.status[i]=u},value:e.filters?.status[i],form:null,options:{}}]]),o("label",{class:"form-check-label",for:"status-"+i},c(s),9,aD)]))),256))])])])],32)),[[r,e.viewState]]),o("div",lD,[o("span",dD,[e.filteredRepositories?.length===e.conference?.repositories?.length?(l(),d("span",uD,[g(c(e.fmt?.number(e.conference?.repositories?.length))+" repositor",1),e.conference?.repositories?.length===1?(l(),d("span",cD,"y")):p("v-if",!0),e.conference?.repositories?.length!==1?(l(),d("span",pD,"ies")):p("v-if",!0)])):p("v-if",!0),e.filteredRepositories?.length!==e.conference?.repositories?.length?(l(),d("span",fD,c(e.fmt?.number(e.filteredRepositories?.length))+" of "+c(e.fmt?.number(e.conference?.repositories?.length))+" shown",1)):p("v-if",!0)]),(l(!0),d(Q,null,se(e.filters?.status,(s,i,a)=>(l(),d(Q,null,[s===!1?(l(),d("span",mD,[g(" Hiding "+c(e.statusLabels[i])+" ",1),o("button",{type:"button",class:"filter-chip-close",onClick:u=>{e.filters.status[i]=!0},"aria-label":"Show "+e.statusLabels[i]+" again"},"\xD7",8,hD)])):p("v-if",!0)],64))),256))]),o("div",vD,[t[31]||(t[31]=o("div",{class:"paper-table-head",role:"row"},[o("div",{role:"columnheader"},"Repository"),o("div",{role:"columnheader"},"Status"),o("div",{role:"columnheader",class:"num"},"Views"),o("div",{role:"columnheader"},"Expires"),o("div",{role:"columnheader"},[o("span",{class:"sr-only"},"Actions")])],-1)),(l(!0),d(Q,null,se(e.filteredRepositories,(s,i)=>(l(),d("div",{class:A(["paper-table-row",{"repo-inactive":s?.status=="expired"||s?.status=="removed","repo-error":s?.status=="error"}]),role:"row",key:s?.repoId},[o("div",gD,[t[22]||(t[22]=o("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Repository"},[o("use",{href:"#project-type-repo"})],-1)),o("div",yD,[o("a",{class:"repo-name",textContent:c(s?.repoId),href:e.safeUrl("/r/"+s?.repoId+"/")},null,8,bD),o("div",wD,[o("span",kD,[o("a",{target:"_blank",rel:"noopener",textContent:c(s?.source?.fullName),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/")},null,8,ED),s?.options?.update&&s?.source?.branch?(l(),d("span",CD,[t[20]||(t[20]=g(" \xB7 ",-1)),o("a",{target:"_blank",rel:"noopener",textContent:c(s?.source?.branch),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.branch)},null,8,_D)])):p("v-if",!0),s?.source?.commit?(l(),d("span",SD,[t[21]||(t[21]=g(" \xB7 ",-1)),o("a",{class:"commit-hash",target:"_blank",rel:"noopener",href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.commit)},"@"+c(s?.source?.commit?.substring(0,8)),9,ND)])):p("v-if",!0)])])])]),o("div",DD,[o("div",RD,[o("span",{class:A(["status-dot","status-"+(s?.status=="error"?"error":s?.status=="ready"?"ready":s?.status=="expired"||s?.status=="removed"?s?.status:"progress")]),"aria-hidden":"true"},null,2),o("span",{class:"status-word",textContent:c(e.fmt?.statusLabel(s?.status))},null,8,TD)]),s?.anonymizeDate?(l(),d("div",AD,"anonymized "+c(e.fmt?.humanTime(s?.anonymizeDate)),1)):p("v-if",!0)]),o("div",OD,[t[23]||(t[23]=o("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-eye"})],-1)),t[24]||(t[24]=g()),o("span",{textContent:c(e.fmt?.number(s?.pageView))},null,8,ID)]),o("div",PD,[t[26]||(t[26]=o("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-clock"})],-1)),s?.status=="ready"&&(s?.options?.expirationMode==="never"||!s?.options?.expirationDate)?(l(),d("span",VD,"Never")):p("v-if",!0),s?.status=="ready"&&s?.options?.expirationMode!=="never"&&s?.options?.expirationDate?(l(),d("span",{key:1,textContent:c(e.fmt?.humanTime(s?.options?.expirationDate))},null,8,qD)):p("v-if",!0),s?.status=="expired"?(l(),d("span",MD,[t[25]||(t[25]=g("Expired",-1)),s?.options?.expirationDate?(l(),d("span",$D,c(e.fmt?.humanTime(s?.options?.expirationDate)),1)):p("v-if",!0)])):p("v-if",!0),s?.status!="ready"&&s?.status!="expired"?(l(),d("span",LD,"\u2014")):p("v-if",!0)]),o("div",UD,[o("div",FD,[o("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions for "+s?.repoId},[...t[27]||(t[27]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-more"})],-1)])],8,zD),o("div",HD,[o("a",{class:"dropdown-item",href:e.safeUrl("/r/"+s?.repoId+"/")},[...t[28]||(t[28]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-eye"})],-1),g(" View ",-1)])],8,BD),o("a",{class:"dropdown-item",href:e.safeUrl("/anonymize/"+s?.repoId)},[...t[29]||(t[29]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-edit"})],-1),g(" Edit ",-1)])],8,jD)])])])],2))),128)),e.filteredRepositories?.length==0?(l(),d("div",GD,[t[30]||(t[30]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-inbox"})],-1)),e.conference?.repositories?.length?p("v-if",!0):(l(),d("span",WD,"No repository has been submitted to this conference yet.")),e.conference?.repositories?.length?(l(),d("span",KD,"Nothing matches the current filters.")):p("v-if",!0),e.conference?.repositories?.length?(l(),d("div",YD,[o("button",{type:"button",class:"btn btn-outline-ink",onClick:t[1]||(t[1]=s=>{e.search="",e.filters.status.ready=!0,e.filters.status.expired=!0,e.filters.status.removed=!0})},"Clear filters")])):p("v-if",!0)])):p("v-if",!0)])])])}var JD={class:"container page paper-page conferences-page"},QD={class:"row"},XD={class:"w-100"},ZD={class:"search-wrap"},xD={type:"search",id:"search",class:"form-control","aria-label":"Search conferences",placeholder:"Search by name or ID\u2026",autocomplete:"off"},eR={class:"dashboard-filter-controls"},tR={class:"dropdown"},oR={class:"btn dropdown-toggle",type:"button",id:"dropdownSort","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},sR={class:"filter-btn-value"},nR={class:"dropdown-menu","aria-labelledby":"dropdownSort"},rR={class:"form-check dropdown-item"},iR={class:"form-check-input",type:"radio",name:"sort",id:"sortName",value:"name"},aR={class:"form-check dropdown-item"},lR={class:"form-check-input",type:"radio",name:"sort",id:"sortID",value:"conferenceID"},dR={class:"form-check dropdown-item"},uR={class:"form-check-input",type:"radio",name:"sort",id:"sortStatus",value:"-status"},cR={class:"dropdown"},pR={class:"btn dropdown-toggle",type:"button",id:"dropdownStatus","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},fR={key:0,class:"filter-btn-value"},mR={key:1,class:"filter-btn-value"},hR={class:"dropdown-menu","aria-labelledby":"dropdownStatus"},vR={class:"form-check dropdown-item"},gR=["id"],yR=["for"],bR={class:"dashboard-meta"},wR={class:"dashboard-count"},kR={key:0},ER={key:0},CR={key:1},_R={key:0,class:"filter-chip"},SR=["onClick","aria-label"],NR={key:0,class:"conference-feedback",role:"alert"},DR={key:1,class:"conference-feedback",role:"status"},RR={class:"paper-table paper-table-conferences w-100",role:"table","aria-label":"Conferences"},TR={class:"cell-anon",role:"cell"},AR={class:"anon-text"},OR=["textContent","href"],IR={class:"anon-sub"},PR={class:"anon-source"},VR=["textContent"],qR={key:0},MR=["textContent","href"],$R={class:"cell-status",role:"cell"},LR={class:"status-line"},UR=["textContent"],FR={class:"cell-views num",role:"cell"},zR=["textContent"],HR={class:"cell-expires",role:"cell"},BR={key:0},jR={key:1,class:"empty-dash","aria-label":"No review window"},GR={class:"cell-actions",role:"cell"},WR={class:"dropdown"},KR=["disabled","aria-label"],YR={class:"dropdown-menu dropdown-menu-right"},JR=["href"],QR=["href"],XR={key:0},ZR=["onClick"],xR={key:0,class:"paper-table-empty"},eT={key:0},tT={key:1},oT={class:"paper-table-empty-actions"},sT={key:1,href:"/conference/new",class:"btn btn-ink"};function vl(e,t){let n=ye("field"),r=ye("form");return l(),d("div",JD,[o("div",QD,[o("div",XD,[t[10]||(t[10]=le('
My work \xA0/\xA0 Conferences

Your conferences

Group anonymizations by venue, give chairs a shared dashboard, and set one expiry for every submission.

New conference
',2)),N((l(),d("form",{class:"w-100 dashboard-filter-row","aria-label":"Filter conferences","accept-charset":"UTF-8",onSubmit:t[0]||(t[0]=ce(s=>e.submitForm(s,()=>{s.preventDefault()}),["prevent"]))},[o("div",ZD,[N(o("input",xD,null,512),[[n,{state:e.viewState,set:s=>{e.search=s},value:e.search,form:null,options:{}}]])]),o("div",eR,[o("div",tR,[o("button",oR,[t[3]||(t[3]=o("span",{class:"filter-btn-label"},"Sort",-1)),o("span",sR,c({name:"Name",conferenceID:"ID","-status":"Status"}[e.orderBy]||"Custom"),1)]),o("div",nR,[t[7]||(t[7]=o("h6",{class:"dropdown-header"},"Order by",-1)),o("div",rR,[N(o("input",iR,null,512),[[n,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[4]||(t[4]=o("label",{class:"form-check-label",for:"sortName"},"Name",-1))]),o("div",aR,[N(o("input",lR,null,512),[[n,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[5]||(t[5]=o("label",{class:"form-check-label",for:"sortID"},"ID",-1))]),o("div",dR,[N(o("input",uR,null,512),[[n,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[6]||(t[6]=o("label",{class:"form-check-label",for:"sortStatus"},"Status",-1))])])]),o("div",cR,[o("button",pR,[t[8]||(t[8]=o("span",{class:"filter-btn-label"},"Status",-1)),e.filters?.status?.ready&&e.filters?.status?.expired&&e.filters?.status?.removed?(l(),d("span",fR,"All")):p("v-if",!0),e.filters?.status?.ready&&e.filters?.status?.expired&&e.filters?.status?.removed?p("v-if",!0):(l(),d("span",mR,c((e.filters?.status?.ready?0:1)+(e.filters?.status?.expired?0:1)+(e.filters?.status?.removed?0:1))+" hidden ",1))]),o("div",hR,[t[9]||(t[9]=o("h6",{class:"dropdown-header"},"Show statuses",-1)),(l(!0),d(Q,null,se(e.statusLabels,(s,i,a)=>(l(),d("div",vR,[N(o("input",{class:"form-check-input",type:"checkbox",id:"status-"+i},null,8,gR),[[n,{state:e.viewState,set:u=>{e.filters.status[i]=u},value:e.filters?.status[i],form:null,options:{}}]]),o("label",{class:"form-check-label",for:"status-"+i},c(s),9,yR)]))),256))])])])],32)),[[r,e.viewState]]),o("div",bR,[o("span",wR,[e.filteredConferences?.length===e.conferences?.length?(l(),d("span",kR,[g(c(e.fmt?.number(e.conferences?.length))+" conference",1),e.conferences?.length!==1?(l(),d("span",ER,"s")):p("v-if",!0)])):p("v-if",!0),e.filteredConferences?.length!==e.conferences?.length?(l(),d("span",CR,c(e.fmt?.number(e.filteredConferences?.length))+" of "+c(e.fmt?.number(e.conferences?.length))+" shown",1)):p("v-if",!0)]),(l(!0),d(Q,null,se(e.filters?.status,(s,i,a)=>(l(),d(Q,null,[s===!1?(l(),d("span",_R,[g(" Hiding "+c(e.statusLabels[i])+" ",1),o("button",{type:"button",class:"filter-chip-close",onClick:u=>{e.filters.status[i]=!0},"aria-label":"Show "+e.statusLabels[i]+" again"},"\xD7",8,SR)])):p("v-if",!0)],64))),256))])]),e.error?(l(),d("div",NR,[o("span",null,c(e.error),1),o("button",{type:"button",class:"btn btn-outline-ink",onClick:t[1]||(t[1]=s=>e.loadConferences())},"Retry")])):p("v-if",!0),e.loading?(l(),d("div",DR,"Loading conferences\u2026")):p("v-if",!0),o("div",RR,[t[24]||(t[24]=o("div",{class:"paper-table-head",role:"row"},[o("div",{role:"columnheader"},"Conference"),o("div",{role:"columnheader"},"Status"),o("div",{role:"columnheader",class:"num"},"Repos"),o("div",{role:"columnheader"},"Review window"),o("div",{role:"columnheader"},[o("span",{class:"sr-only"},"Actions")])],-1)),(l(!0),d(Q,null,se(e.filteredConferences,(s,i)=>(l(),d("div",{class:A(["paper-table-row row-clickable",{"repo-inactive":s?.status=="expired"||s?.status=="removed"}]),role:"row",key:s?.conferenceID},[o("div",TR,[t[13]||(t[13]=o("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Conference"},[o("use",{href:"#project-icon-conference"})],-1)),o("div",AR,[o("a",{class:"repo-name",textContent:c(s?.name),href:e.safeUrl("/conference/"+s?.conferenceID)},null,8,OR),o("div",IR,[o("span",PR,[t[12]||(t[12]=g("ID ",-1)),o("span",{class:"commit-hash",textContent:c(s?.conferenceID)},null,8,VR),s?.url?(l(),d("span",qR,[t[11]||(t[11]=g(" \xB7 ",-1)),o("a",{target:"_blank",rel:"noopener",textContent:c(e.fmt?.limitTo(s?.url,60)),href:e.safeUrl(s?.url)},null,8,MR)])):p("v-if",!0)])])])]),o("div",$R,[o("div",LR,[o("span",{class:A(["status-dot","status-"+s?.status]),"aria-hidden":"true"},null,2),o("span",{class:"status-word",textContent:c(e.fmt?.statusLabel(s?.status))},null,8,UR)])]),o("div",FR,[t[14]||(t[14]=o("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[o("use",{href:"#project-type-repo"})],-1)),t[15]||(t[15]=g()),o("span",{textContent:c(e.fmt?.number(s?.nbRepositories||0))},null,8,zR)]),o("div",HR,[t[16]||(t[16]=o("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-clock"})],-1)),s?.startDate?(l(),d("span",BR,c(e.fmt?.date(s?.startDate,"mediumDate"))+" \u2013 "+c(e.fmt?.date(s?.endDate,"mediumDate")),1)):p("v-if",!0),s?.startDate?p("v-if",!0):(l(),d("span",jR,"\u2014"))]),o("div",GR,[o("div",WR,[o("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",disabled:s?.removing,"aria-label":"Actions for "+s?.name},[...t[17]||(t[17]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-more"})],-1)])],8,KR),o("div",YR,[o("a",{class:"dropdown-item",href:e.safeUrl("/conference/"+s?.conferenceID+"/")},[...t[18]||(t[18]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-eye"})],-1),g(" View ",-1)])],8,JR),o("a",{class:"dropdown-item",href:e.safeUrl("/conference/"+s?.conferenceID+"/edit")},[...t[19]||(t[19]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-edit"})],-1),g(" Edit ",-1)])],8,QR),s?.status!="removed"?(l(),d("div",XR,[t[21]||(t[21]=o("div",{class:"dropdown-divider"},null,-1)),o("button",{type:"button",class:"dropdown-item dropdown-item-danger",onClick:a=>e.removeConference(s)},[...t[20]||(t[20]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-trash"})],-1),g(" Remove ",-1)])],8,ZR)])):p("v-if",!0)])])])],2))),128)),!e.loading&&!e.error&&e.filteredConferences?.length==0?(l(),d("div",xR,[t[23]||(t[23]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-inbox"})],-1)),e.conferences?.length==0?(l(),d("span",eT,"You have not created a conference yet.")):p("v-if",!0),e.conferences?.length>0?(l(),d("span",tT,"Nothing matches the current filters.")):p("v-if",!0),o("div",oT,[e.conferences?.length>0?(l(),d("button",{key:0,type:"button",class:"btn btn-outline-ink",onClick:t[2]||(t[2]=s=>{e.search="",e.filters.status.ready=!0,e.filters.status.expired=!0,e.filters.status.removed=!0})},"Clear filters")):p("v-if",!0),e.conferences?.length==0?(l(),d("a",sT,[...t[22]||(t[22]=[o("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[o("use",{href:"#project-icon-plus"})],-1),g(" New conference",-1)])])):p("v-if",!0)])])):p("v-if",!0)])])])}var nT={class:"container page dashboard-page paper-page"},rT={class:"row"},iT={class:"w-100"},aT={class:"dashboard-heading"},lT=["open"],dT=["aria-expanded"],uT=["stroke-dasharray"],cT={key:1,d:"M7 12c0-4 4-4 5 0s5 4 5 0-4-4-5 0-5 4-5 0",class:"quota-ring-unlimited"},pT={key:0,class:"quota-summary-value"},fT={key:0},mT={class:"quota-panel",id:"dashboard-usage"},hT={class:"quota-panel-heading"},vT={key:1,class:"quota-loading",role:"status"},gT={class:"search-wrap"},yT={type:"search",id:"search",class:"form-control","aria-label":"Search anonymizations",placeholder:"Search projects, IDs, or conferences\u2026",autocomplete:"off"},bT=["aria-expanded"],wT={class:"btn-group",role:"group","aria-label":"Type"},kT=["aria-pressed"],ET=["aria-pressed"],CT=["aria-pressed"],_T=["aria-pressed"],ST={class:"dropdown"},NT={class:"btn dropdown-toggle",type:"button",id:"dropdownSort","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},DT={class:"filter-btn-value"},RT={class:"sr-only"},TT={class:"dropdown-menu","aria-labelledby":"dropdownSort"},AT={class:"form-check dropdown-item"},OT=["onClick","checked","id"],IT=["for"],PT={class:"dropdown"},VT={class:"btn dropdown-toggle",type:"button",id:"dropdownStatus","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},qT={key:0,class:"filter-btn-value"},MT={key:1,class:"filter-btn-value"},$T={class:"dropdown-menu","aria-labelledby":"dropdownStatus"},LT={class:"form-check dropdown-item"},UT=["id"],FT=["for"],zT={key:0,class:"dashboard-meta"},HT={class:"dashboard-view-tabs",role:"group","aria-label":"Project view"},BT=["aria-pressed"],jT=["aria-pressed","aria-label"],GT={class:"dashboard-count"},WT={key:0},KT={key:0},YT={key:1},JT={class:"dashboard-active-filters"},QT=["onClick","aria-label","title"],XT=["aria-busy"],ZT={class:"paper-table-head",role:"row"},xT=["aria-sort"],eA=["aria-sort"],tA=["aria-sort"],oA=["aria-sort"],sA={key:0,class:"paper-table-row paper-table-skeleton",role:"row","aria-hidden":"true"},nA=["onClick"],rA={class:"cell-anon",role:"cell"},iA=["aria-label","title"],aA={class:"project-type-svg","aria-hidden":"true"},lA=["href"],dA={class:"anon-text"},uA={class:"anon-title"},cA=["title","textContent","href"],pA=["textContent"],fA={key:2,class:"type-badge type-coauthor",title:"You are a co-author on this anonymization"},mA={class:"anon-sub"},hA=["title"],vA=["title"],gA=["title"],yA=["textContent"],bA={class:"dashboard-row-meta",role:"presentation"},wA={class:"cell-status",role:"cell"},kA={class:"status-line"},EA=["textContent"],CA=["textContent","title"],_A=["title"],SA=["href"],NA=["onClick"],DA={key:4,class:"status-sub status-sub-date"},RA=["aria-label"],TA={class:"cell-expires",role:"cell"},AA={key:0,class:"expires-never"},OA=["textContent"],IA={key:2,class:"expires-past"},PA={key:3,class:"expires-past"},VA={key:4,class:"empty-dash","aria-label":"Not applicable"},qA={class:"cell-actions",role:"cell"},MA=["onClick","disabled","title","aria-label"],$A=["onClick","data-project-actions","aria-controls","aria-expanded"],LA={key:2,class:"dropdown"},UA=["data-project-actions","aria-label"],FA={class:"dropdown-menu dropdown-menu-right"},zA=["onClick","aria-controls","aria-expanded"],HA=["href"],BA=["href"],jA=["onClick","disabled"],GA=["href"],WA=["onClick"],KA=["onClick"],YA=["onClick"],JA={key:5},QA=["onClick"],XA={key:1,class:"project-details-row",role:"row"},ZA=["id","onKeydown"],xA={class:"project-details-heading"},eO=["onClick"],tO={class:"project-details-list"},oO={key:0},sO={key:1},nO={key:0},rO={key:2},iO={key:0,class:"project-progress-help"},aO=["href"],lO=["onSubmit"],dO=["for"],uO=["id"],cO={class:"project-name-controls"},pO=["id","aria-describedby","disabled"],fO=["disabled"],mO={key:0,class:"project-name-error",role:"alert"},hO={key:1,role:"status"},vO={key:0,class:"paper-table-empty"},gO={key:0},yO={key:1},bO={class:"paper-table-empty-actions"},wO={key:1,href:"/anonymize",class:"btn btn-ink"};function gl(e,t){let n=We("quota-usage"),r=ye("field"),s=ye("form");return l(),d("div",nT,[o("div",rT,[o("div",iT,[o("div",aT,[o("div",null,[t[26]||(t[26]=o("h1",{class:"paper-page-title"},"Projects",-1)),t[27]||(t[27]=o("p",{class:"paper-page-lede"},"Manage your anonymous links.",-1)),o("details",{class:"dashboard-quota",open:e.quotaExpanded,onToggle:t[1]||(t[1]=i=>e.quotaExpanded=i.target.open),onKeydown:t[2]||(t[2]=No(ce(i=>e.closeQuota(),["prevent","stop"]),["esc"]))},[o("summary",{"aria-controls":"dashboard-usage","aria-expanded":e.quotaExpanded},[(l(),d("svg",{class:A(["quota-summary-ring",e.quota?"quota-"+e.quota.repository.level:""]),viewBox:"0 0 24 24","aria-hidden":"true"},[t[20]||(t[20]=o("circle",{class:"quota-ring-track",cx:"12",cy:"12",r:"9"},null,-1)),e.quota&&!e.quota.repository.unlimited?(l(),d("circle",{key:0,class:"quota-ring-fill",cx:"12",cy:"12",r:"9",pathLength:"100","stroke-dasharray":e.quota.repository.percent+" 100"},null,8,uT)):p("v-if",!0),e.quota?.repository.unlimited?(l(),d("path",cT)):p("v-if",!0)],2)),t[22]||(t[22]=o("span",{class:"quota-summary-label"},"Usage",-1)),e.quota?(l(),d("span",pT,[g(c(e.fmt.number(e.quota.repository.used)),1),e.quota.repository.unlimited?p("v-if",!0):(l(),d("span",fT," / "+c(e.fmt.number(e.quota.repository.total)),1)),t[21]||(t[21]=g(" repos",-1))])):p("v-if",!0),t[23]||(t[23]=o("svg",{class:"project-type-svg quota-summary-chevron","aria-hidden":"true"},[o("use",{href:"#project-icon-chevron"})],-1))],8,dT),o("div",mT,[o("div",hT,[t[25]||(t[25]=o("h2",null,"Account usage",-1)),o("button",{type:"button",class:"project-close","aria-label":"Close usage",onClick:t[0]||(t[0]=i=>e.closeQuota())},[...t[24]||(t[24]=[o("svg",{class:"project-type-svg","aria-hidden":"true"},[o("use",{href:"#project-icon-close"})],-1)])])]),e.quota?(l(),qt(n,{key:0,quota:e.quota,fmt:e.fmt},null,8,["quota","fmt"])):(l(),d("p",vT,"Loading usage\u2026"))])],40,lT)]),t[28]||(t[28]=le('',1))]),p(" Search + filters "),N((l(),d("form",{class:"w-100 dashboard-filter-row","aria-label":"Filter anonymizations","accept-charset":"UTF-8",onSubmit:t[9]||(t[9]=ce(i=>e.submitForm(i,()=>{i.preventDefault()}),["prevent"]))},[o("div",gT,[N(o("input",yT,null,512),[[r,{state:e.viewState,set:i=>{e.search=i},value:e.search,form:null,options:{}}]])]),o("button",{class:"btn dashboard-filters-toggle",type:"button","aria-expanded":e.filtersExpanded,"aria-controls":"dashboard-filter-controls",onClick:t[3]||(t[3]=i=>e.filtersExpanded=!e.filtersExpanded)},[...t[29]||(t[29]=[g("Filters",-1),o("svg",{class:"project-type-svg","aria-hidden":"true"},[o("use",{href:"#project-icon-filter"})],-1)])],8,bT),o("div",{id:"dashboard-filter-controls",class:A(["dashboard-filter-controls",{expanded:e.filtersExpanded}])},[o("div",wT,[o("button",{type:"button",class:A(["btn",{"btn-primary":e.typeFilter==="all"}]),onClick:t[4]||(t[4]=i=>e.typeFilter="all"),"aria-pressed":e.typeFilter==="all"},"All",10,kT),o("button",{type:"button",class:A(["btn dashboard-type-filter",{"btn-primary":e.typeFilter==="repo"}]),title:"Repositories",onClick:t[5]||(t[5]=i=>e.typeFilter="repo"),"aria-pressed":e.typeFilter==="repo"},[...t[30]||(t[30]=[o("svg",{class:"project-type-svg","aria-hidden":"true"},[o("use",{href:"#project-type-repo"})],-1),o("span",{class:"type-filter-label"},"Repos",-1)])],10,ET),o("button",{type:"button",class:A(["btn dashboard-type-filter",{"btn-primary":e.typeFilter==="pr"}]),title:"Pull requests",onClick:t[6]||(t[6]=i=>e.typeFilter="pr"),"aria-pressed":e.typeFilter==="pr"},[...t[31]||(t[31]=[o("svg",{class:"project-type-svg","aria-hidden":"true"},[o("use",{href:"#project-type-pr"})],-1),o("span",{class:"type-filter-label"},"PRs",-1)])],10,CT),o("button",{type:"button",class:A(["btn dashboard-type-filter",{"btn-primary":e.typeFilter==="gist"}]),title:"Gists",onClick:t[7]||(t[7]=i=>e.typeFilter="gist"),"aria-pressed":e.typeFilter==="gist"},[...t[32]||(t[32]=[o("svg",{class:"project-type-svg","aria-hidden":"true"},[o("use",{href:"#project-type-gist"})],-1),o("span",{class:"type-filter-label"},"Gists",-1)])],10,_T)]),o("div",{id:"dashboard-extra-filters",class:A(["dashboard-extra-filters",{expanded:e.filtersExpanded}])},[o("div",ST,[o("button",NT,[t[34]||(t[34]=o("span",{class:"filter-btn-label"},"Sort",-1)),o("span",DT,c(e.sortLabel()),1),(l(),d("svg",{class:A(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[33]||(t[33]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)),o("span",RT,c(e.sortDesc()?"descending":"ascending"),1)]),o("div",TT,[t[35]||(t[35]=o("h6",{class:"dropdown-header"},"Order by",-1)),(l(!0),d(Q,null,se(e.sortFields,(i,a,u)=>(l(),d("div",AT,[o("input",{class:"form-check-input",type:"radio",name:"sort",onClick:m=>e.setSort(a,i.defaultDesc),checked:e.isSortedBy(a),id:"sort-"+u},null,8,OT),o("label",{class:"form-check-label",for:"sort-"+u},c(i?.label),9,IT)]))),256)),t[36]||(t[36]=o("div",{class:"dropdown-divider"},null,-1)),o("button",{type:"button",class:"dropdown-item",onClick:t[8]||(t[8]=i=>e.toggleSortDirection())},c(e.sortDesc()?"Switch to ascending":"Switch to descending"),1)])]),o("div",PT,[o("button",VT,[t[37]||(t[37]=o("span",{class:"filter-btn-label"},"Status",-1)),e.hasHiddenStatus()?p("v-if",!0):(l(),d("span",qT,"All")),e.hasHiddenStatus()?(l(),d("span",MT,c(e.hiddenStatusCount())+" hidden",1)):p("v-if",!0)]),o("div",$T,[t[38]||(t[38]=o("h6",{class:"dropdown-header"},"Show statuses",-1)),(l(!0),d(Q,null,se(e.statusKeyLabels,(i,a,u)=>(l(),d("div",LT,[N(o("input",{class:"form-check-input",type:"checkbox",id:"status-"+a},null,8,UT),[[r,{state:e.viewState,set:m=>{e.filters.status[a]=m},value:e.filters?.status[a],form:null,options:{}}]]),o("label",{class:"form-check-label",for:"status-"+a},c(i),9,FT)]))),256))])])],2)],2)],32)),[[s,e.viewState]]),p(" Result count + active filter chips "),e.loading?p("v-if",!0):(l(),d("div",zT,[o("div",HT,[o("button",{type:"button","aria-pressed":e.projectView==="all",onClick:t[10]||(t[10]=i=>e.setProjectView("all")),"aria-label":"All projects"},[...t[39]||(t[39]=[o("span",{class:"dashboard-view-long"},"All projects",-1),o("span",{class:"dashboard-view-short","aria-hidden":"true"},"All",-1)])],8,BT),o("button",{type:"button","aria-pressed":e.projectView==="attention",onClick:t[11]||(t[11]=i=>e.setProjectView("attention")),"aria-label":"Needs attention "+e.attentionCount()},[t[40]||(t[40]=o("span",{class:"dashboard-attention-prefix"},"Needs ",-1)),t[41]||(t[41]=o("span",null,"attention",-1)),t[42]||(t[42]=g()),o("span",{class:A(["attention-count",{"has-attention":e.attentionCount()>0}])},c(e.attentionCount()),3)],8,jT)]),o("span",GT,[e.filteredItems?.length===e.items?.length?(l(),d("span",WT,[g(c(e.fmt?.number(e.items?.length))+" project",1),e.items?.length!==1?(l(),d("span",KT,"s")):p("v-if",!0)])):p("v-if",!0),e.filteredItems?.length!==e.items?.length?(l(),d("span",YT,c(e.fmt?.number(e.filteredItems?.length))+" of "+c(e.fmt?.number(e.items?.length))+" shown",1)):p("v-if",!0)]),o("div",JT,[(l(!0),d(Q,null,se(e.filters?.status,(i,a,u)=>(l(),d(Q,null,[i===!1?(l(),d("button",{key:0,type:"button",class:"filter-chip",onClick:m=>e.filters.status[a]=!0,"aria-label":"Show "+e.statusKeyLabels[a]+" again",title:"Show "+e.statusKeyLabels[a]+" again"},[g(c(e.statusKeyLabels[a])+" hidden",1),t[43]||(t[43]=o("svg",{class:"project-type-svg","aria-hidden":"true"},[o("use",{href:"#project-icon-close"})],-1))],8,QT)):p("v-if",!0)],64))),256)),e.typeFilter!=="all"?(l(),d("button",{key:0,type:"button",class:"filter-chip",onClick:t[12]||(t[12]=i=>e.typeFilter="all"),"aria-label":"Show all project types"},[g(c(e.typeFilter==="repo"?"Repositories":e.typeFilter==="pr"?"Pull requests":"Gists"),1),t[44]||(t[44]=o("svg",{class:"project-type-svg","aria-hidden":"true"},[o("use",{href:"#project-icon-close"})],-1))])):p("v-if",!0),e.showClearFilters()?(l(),d("button",{key:1,type:"button",class:"btn-link-inline",onClick:t[13]||(t[13]=i=>e.clearFilters())},"Clear filters")):p("v-if",!0)])]))]),p(" Table "),o("div",{class:"paper-table paper-table-dashboard",role:"table","aria-label":"Anonymizations","aria-busy":e.loading},[o("div",ZT,[o("div",{role:"columnheader","aria-sort":e.isSortedBy("_label")?e.sortDesc()?"descending":"ascending":"none"},[o("button",{type:"button",class:A(["sortable",{active:e.isSortedBy("_label")}]),onClick:t[14]||(t[14]=i=>e.setSort("_label"))},[t[46]||(t[46]=g(" Project ",-1)),e.isSortedBy("_label")?(l(),d("svg",{key:0,class:A(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[45]||(t[45]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)],8,xT),o("div",{role:"columnheader","aria-sort":e.isSortedBy("status")?e.sortDesc()?"descending":"ascending":"none"},[o("button",{type:"button",class:A(["sortable",{active:e.isSortedBy("status")}]),onClick:t[15]||(t[15]=i=>e.setSort("status"))},[t[48]||(t[48]=g(" Status ",-1)),e.isSortedBy("status")?(l(),d("svg",{key:0,class:A(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[47]||(t[47]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)],8,eA),o("div",{role:"columnheader",class:"num","aria-sort":e.isSortedBy("pageView")?e.sortDesc()?"descending":"ascending":"none"},[o("button",{type:"button",class:A(["sortable",{active:e.isSortedBy("pageView")}]),onClick:t[16]||(t[16]=i=>e.setSort("pageView"))},[t[50]||(t[50]=g(" Views ",-1)),e.isSortedBy("pageView")?(l(),d("svg",{key:0,class:A(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[49]||(t[49]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)],8,tA),o("div",{role:"columnheader","aria-sort":e.isSortedBy("options.expirationDate")?e.sortDesc()?"descending":"ascending":"none"},[o("button",{type:"button",class:A(["sortable",{active:e.isSortedBy("options.expirationDate")}]),onClick:t[17]||(t[17]=i=>e.setSort("options.expirationDate"))},[t[52]||(t[52]=g(" Expires ",-1)),e.isSortedBy("options.expirationDate")?(l(),d("svg",{key:0,class:A(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[51]||(t[51]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)],8,oA),t[53]||(t[53]=o("div",{role:"columnheader"},[o("span",{class:"sr-only"},"Actions")],-1))]),p(" Loading skeleton: keeps the layout stable while the three lists load "),(l(),d(Q,null,se([1,2,3,4],(i,a)=>(l(),d(Q,null,[e.loading?(l(),d("div",sA,[...t[54]||(t[54]=[o("div",{class:"cell-anon",role:"cell"},[o("span",{class:"skeleton skeleton-badge"}),o("div",{class:"anon-text"},[o("span",{class:"skeleton skeleton-line",style:{width:"38%"}}),o("span",{class:"skeleton skeleton-line skeleton-line-sm",style:{width:"56%"}})])],-1),o("div",{class:"cell-status",role:"cell"},[o("span",{class:"skeleton skeleton-line",style:{width:"60%"}})],-1),o("div",{class:"cell-views num",role:"cell"},[o("span",{class:"skeleton skeleton-line",style:{width:"40%"}})],-1),o("div",{class:"cell-expires",role:"cell"},[o("span",{class:"skeleton skeleton-line",style:{width:"55%"}})],-1),o("div",{class:"cell-actions",role:"cell"},null,-1)])])):p("v-if",!0)],64))),64)),(l(!0),d(Q,null,se(e.filteredItems,(i,a)=>(l(),d(Q,{key:i?._type+":"+(i?._id||a)},[e.loading?p("v-if",!0):(l(),d("div",{key:0,class:A(["paper-table-row",{"repo-inactive":i?._statusKey=="expired"||i?._statusKey=="removed","repo-error":i?.status=="error","row-clickable":!!i?._viewUrl}]),role:"row",onClick:u=>e.openItem(i,u)},[o("div",rA,[o("span",{class:"project-type-icon",role:"img","aria-label":i?._type==="repo"?"Repository":i?._type==="pr"?"Pull request":"Gist",title:i?._type==="repo"?"Repository":i?._type==="pr"?"Pull request":"Gist"},[(l(),d("svg",aA,[o("use",{href:"#project-type-"+i._type},null,8,lA)]))],8,iA),o("div",dA,[o("div",uA,[i?._viewUrl?(l(),d("a",{key:0,class:"repo-name",title:i._label,textContent:c(i?._label),href:e.safeUrl(i?._viewUrl)},null,8,cA)):p("v-if",!0),i?._viewUrl?p("v-if",!0):(l(),d("span",{key:1,class:"repo-name repo-name-static",textContent:c(i?._label)},null,8,pA)),i?.role==="coauthor"?(l(),d("span",fA,"Co-author")):p("v-if",!0)]),o("div",mA,[i?._id?(l(),d("code",{key:0,class:"anonymous-id",title:i._id},c(i._id),9,hA)):p("v-if",!0),i?._type==="repo"&&i?.source?.commit?(l(),d("span",{key:1,class:"commit-hash",title:i.source.commit},c(i.source.commit.substring(0,8)),9,vA)):p("v-if",!0),i?.conference?(l(),d("span",{key:2,class:"cell-conf conf-tag",title:i?.conference},[t[55]||(t[55]=o("svg",{class:"project-type-svg","aria-hidden":"true"},[o("use",{href:"#project-icon-conference"})],-1)),t[56]||(t[56]=g()),o("span",{textContent:c(i?.conference)},null,8,yA)],8,gA)):p("v-if",!0)])])]),o("div",bA,[o("div",wA,[o("div",kA,[o("span",{class:A(["status-dot","status-"+i?._statusKey]),"aria-hidden":"true"},null,2),o("span",{class:"status-word",textContent:c(e.fmt?.statusLabel(i?.status))},null,8,EA)]),i?.status=="error"&&i?.statusMessage?(l(),d("div",{key:0,class:"status-sub status-sub-error",textContent:c(e.fmt?.statusMsg(i?.statusMessage)),title:i?.statusMessage},null,8,CA)):p("v-if",!0),i?._stale?(l(),d("div",{key:1,class:"status-sub status-sub-warn",title:"Last activity "+e.fmt?.humanTime(i?.anonymizeDate||i?.lastView)}," Last activity "+c(e.fmt?.humanTime(i?.anonymizeDate||i?.lastView))+" \xB7 may be stuck ",9,_A)):p("v-if",!0),i.status==="error"&&i._editUrl?(l(),d("a",{key:2,class:"project-attention-action",href:e.safeUrl(i._editUrl)},"Fix source",8,SA)):p("v-if",!0),i._stale||i._broken?(l(),d("button",{key:3,type:"button",class:"project-attention-action",onClick:ce(u=>e.showProjectDetails(i),["stop"])},c(i._broken?"Review details":"Check progress"),9,NA)):p("v-if",!0),i?.status!="error"&&!i?._stale&&i?.anonymizeDate?(l(),d("div",DA," anonymized "+c(e.fmt?.humanTime(i?.anonymizeDate)),1)):p("v-if",!0)]),o("div",{class:"cell-views num",role:"cell","aria-label":e.fmt.number(i.pageView)+" views"},[t[57]||(t[57]=o("svg",{class:"project-type-svg mobile-meta-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-eye"})],-1)),o("span",null,c(e.fmt.number(i.pageView)),1)],8,RA),o("div",TA,[t[58]||(t[58]=o("svg",{class:"project-type-svg mobile-meta-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-clock"})],-1)),i?._expiry?.kind==="never"?(l(),d("span",AA,"Never")):p("v-if",!0),i?._expiry?.kind==="date"?(l(),d("span",{key:1,textContent:c(e.fmt?.humanTime(i?._expiry?.date))},null,8,OA)):p("v-if",!0),i?._expiry?.kind==="expired"&&i?._expiry?.date?(l(),d("span",IA,"Expired "+c(e.fmt?.humanTime(i?._expiry?.date)),1)):p("v-if",!0),i?._expiry?.kind==="expired"&&!i?._expiry?.date?(l(),d("span",PA,"Expired")):p("v-if",!0),i?._expiry?.kind==="none"?(l(),d("span",VA,"\u2014")):p("v-if",!0)])]),o("div",qA,[i._viewUrl?(l(),d("button",{key:0,type:"button",class:"copy-link-inline",onClick:ce(u=>e.copyLink(i),["stop"]),disabled:!!e.copyingId,title:"Copy anonymous link for "+i._label,"aria-label":"Copy anonymous link for "+i._label},[...t[59]||(t[59]=[o("svg",{class:"project-type-svg","aria-hidden":"true"},[o("use",{href:"#project-icon-copy"})],-1)])],8,MA)):p("v-if",!0),i._broken?(l(),d("button",{key:1,type:"button",class:"project-details-button",onClick:ce(u=>e.showProjectDetails(i),["stop"]),"data-project-actions":encodeURIComponent(i._type+":"+i._id),"aria-controls":e.projectDetailsId(i),"aria-expanded":e.selectedProject===i},"Details",8,$A)):p("v-if",!0),i?._broken?p("v-if",!0):(l(),d("div",LA,[o("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","data-project-actions":encodeURIComponent(i._type+":"+i._id),"aria-label":"Actions for "+i?._name},[...t[60]||(t[60]=[o("svg",{class:"project-type-svg","aria-hidden":"true"},[o("use",{href:"#project-icon-more"})],-1)])],8,UA),o("div",FA,[o("button",{type:"button",class:"dropdown-item",onClick:u=>e.showProjectDetails(i),"aria-controls":e.projectDetailsId(i),"aria-expanded":e.selectedProject===i},"Project details & name",8,zA),o("a",{class:"dropdown-item",href:e.safeUrl(i?._viewUrl)}," View ",8,HA),i?._type==="repo"&&i?.options?.page&&i?.status=="ready"?(l(),d("a",{key:0,class:"dropdown-item",target:"_self",href:e.safeUrl("/w/"+i?.repoId+"/")}," View page ",8,BA)):p("v-if",!0),i?._viewUrl?(l(),d("button",{key:1,type:"button",class:"dropdown-item",onClick:u=>e.copyLink(i),disabled:!!e.copyingId}," Copy anonymous link ",8,jA)):p("v-if",!0),o("a",{class:"dropdown-item",href:e.safeUrl(i?._editUrl)}," Edit ",8,GA),i?.status=="ready"||i?.status=="error"?(l(),d("button",{key:2,type:"button",class:"dropdown-item",onClick:u=>e.refreshItem(i)}," Force update ",8,WA)):p("v-if",!0),i?.status=="removed"?(l(),d("button",{key:3,type:"button",class:"dropdown-item",onClick:u=>e.refreshItem(i)}," Enable ",8,KA)):p("v-if",!0),i?.status=="expired"?(l(),d("button",{key:4,type:"button",class:"dropdown-item",onClick:u=>e.extendItem(i)}," Extend 6 months ",8,YA)):p("v-if",!0),(i?.status=="ready"||i?.status=="expired"||i?.status=="error")&&i?.role!=="coauthor"?(l(),d("div",JA,[t[61]||(t[61]=o("div",{class:"dropdown-divider"},null,-1)),o("button",{type:"button",class:"dropdown-item dropdown-item-danger",onClick:u=>e.removeItem(i)}," Remove ",8,QA)])):p("v-if",!0)])]))])],10,nA)),!e.loading&&e.selectedProject===i?(l(),d("div",XA,[o("div",{class:"project-details",role:"cell","aria-colspan":"5",id:e.projectDetailsId(i),tabindex:"-1",onKeydown:No(ce(u=>e.closeProjectDetails(i),["stop"]),["esc"])},[o("div",xA,[t[63]||(t[63]=o("h2",null,"Project details",-1)),o("button",{type:"button",class:"project-close",onClick:u=>e.closeProjectDetails(i),"aria-label":"Close project details"},[...t[62]||(t[62]=[o("svg",{class:"project-type-svg","aria-hidden":"true"},[o("use",{href:"#project-icon-close"})],-1)])],8,eO)]),o("dl",tO,[o("div",null,[t[64]||(t[64]=o("dt",null,"Source",-1)),o("dd",null,c(i._source||"Not available"),1)]),o("div",null,[t[65]||(t[65]=o("dt",null,"Anonymous ID",-1)),o("dd",null,[o("code",null,c(i._id||"Missing identifier"),1)])]),i.source?.commit?(l(),d("div",oO,[t[66]||(t[66]=o("dt",null,"Commit",-1)),o("dd",null,[o("code",null,c(i.source.commit),1)])])):p("v-if",!0),i.conference?(l(),d("div",sO,[t[67]||(t[67]=o("dt",null,"Conference",-1)),o("dd",null,c(i.conference),1)])):p("v-if",!0),o("div",null,[t[68]||(t[68]=o("dt",null,"Status",-1)),o("dd",null,[g(c(e.fmt.statusLabel(i.status)),1),i.statusMessage?(l(),d("span",nO," \xB7 "+c(e.fmt.statusMsg(i.statusMessage)),1)):p("v-if",!0)])]),i.anonymizeDate?(l(),d("div",rO,[t[69]||(t[69]=o("dt",null,"Last anonymized",-1)),o("dd",null,c(e.fmt.humanTime(i.anonymizeDate)),1)])):p("v-if",!0)]),i._stale?(l(),d("p",iO,"This download has not progressed recently. Check the source access and selected branch before retrying.")):p("v-if",!0),i._editUrl?(l(),d("a",{key:1,class:"project-attention-action",href:e.safeUrl(i._editUrl)},c(e.needsAttention(i)?"Check source settings":"Edit anonymization settings"),9,aO)):p("v-if",!0),i._id?(l(),d("form",{key:2,class:"project-name-form",onSubmit:ce(u=>e.saveProjectName(i),["prevent"])},[o("label",{for:"project-name-"+i._type+"-"+i._id},"Project name",8,dO),o("p",{id:"project-name-help-"+i._type+"-"+i._id},"Only you see this name. Leave it blank to use the default.",8,uO),o("div",cO,[N(o("input",{class:"form-control",type:"text",id:"project-name-"+i._type+"-"+i._id,"aria-describedby":"project-name-help-"+i._type+"-"+i._id,maxlength:"100","onUpdate:modelValue":t[18]||(t[18]=u=>e.projectName=u),disabled:e.nameSaving},null,8,pO),[[Ji,e.projectName]]),o("button",{class:"btn btn-ink",type:"submit",disabled:e.nameSaving},c(e.nameSaving?"Saving\u2026":"Save name"),9,fO)]),e.nameError?(l(),d("p",mO,c(e.nameError),1)):p("v-if",!0),e.nameMessage?(l(),d("p",hO,c(e.nameMessage),1)):p("v-if",!0)],40,lO)):p("v-if",!0)],40,ZA)])):p("v-if",!0)],64))),128)),!e.loading&&e.filteredItems?.length==0?(l(),d("div",vO,[t[71]||(t[71]=o("svg",{class:"project-type-svg project-empty-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-inbox"})],-1)),e.items?.length==0?(l(),d("span",gO,"You have no anonymizations yet.")):p("v-if",!0),e.items?.length>0?(l(),d("span",yO,"Nothing matches the current filters.")):p("v-if",!0),o("div",bO,[e.hasActiveFilters()?(l(),d("button",{key:0,type:"button",class:"btn btn-outline-ink",onClick:t[19]||(t[19]=i=>e.clearFilters())},"Clear filters")):p("v-if",!0),e.items?.length==0?(l(),d("a",wO,[...t[70]||(t[70]=[o("svg",{class:"project-type-svg","aria-hidden":"true"},[o("use",{href:"#project-icon-plus"})],-1),g(" New anonymization",-1)])])):p("v-if",!0)])])):p("v-if",!0)],8,XT)])])}var kO={class:"explorer-page"},EO=["aria-label"],CO={class:"ui-icon","aria-hidden":"true"},_O=["href"],SO=["textContent"],NO={class:"leftCol-head"},DO={class:"leftCol-search"},RO={class:"tree-search-box"},TO=["href"],AO={type:"text",class:"tree-search-input",placeholder:"Search files","aria-label":"Search files"},OO={class:"leftCol-project-header"},IO=["textContent"],PO={class:"project-file-count"},VO={class:"leftCol-body"},qO={key:0,class:"paper-inline-warning",role:"alert"},MO={key:1,class:"paper-inline-warning",role:"alert"},$O={class:"leftCol-foot"},LO=["title"],UO=["title"],FO=["title"],zO={key:2,class:"last-update",title:"Older repositories have no recorded publication date. The source commit date does not establish when files became available here."},HO={class:"explorer-main"},BO={class:"status-bar"},jO={class:"breadcrumb paths","aria-label":"Path"},GO=["textContent"],WO={class:"status-bar-actions"},KO=["href"],YO={class:"d-none d-md-inline"},JO={class:"ui-icon","aria-hidden":"true"},QO=["href"],XO={class:"d-none d-md-inline"},ZO=["href"],xO=["href"],eI=["href"],tI=["href"],oI={class:"explorer-content"};function yl(e,t){let n=We("tree"),r=We("partial-view"),s=ye("field");return l(),d("div",kO,[N(o("button",{class:"sidebar-toggle",onClick:t[0]||(t[0]=i=>e.sidebarCollapsed=!e.sidebarCollapsed),"aria-label":e.sidebarCollapsed?"Show files":"Hide files"},[(l(),d("svg",CO,[o("use",{href:e.sidebarCollapsed?"#ui-icon-folder":"#project-icon-close"},null,8,_O)])),o("span",{textContent:c(e.sidebarCollapsed?"Files":"Close")},null,8,SO)],8,EO),[[W,e.files?.length]]),N(o("div",{class:A(["leftCol",{collapsed:e.sidebarCollapsed}])},[o("div",NO,[t[7]||(t[7]=o("span",{class:"leftCol-eyebrow"},"Files",-1)),o("button",{class:"leftCol-close","aria-label":"Close files",onClick:t[1]||(t[1]=i=>e.sidebarCollapsed=!0)},[...t[6]||(t[6]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-close"})],-1)])])]),o("div",DO,[o("div",RO,[(l(),d("svg",{class:A(["ui-icon tree-search-icon",{"fa-spin":e.fileSearchLoading}]),"aria-hidden":"true"},[o("use",{href:e.fileSearchLoading?"#ui-icon-spinner":"#ui-icon-search"},null,8,TO)],2)),N(o("input",AO,null,512),[[s,{state:e.viewState,set:i=>{e.fileSearchQuery=i},value:e.fileSearchQuery,form:null,options:{debounce:300},change:()=>{e.onFileSearchChange()}}]]),N(o("kbd",{class:"tree-search-kbd"},c(e.isMac?"\u2318":"Ctrl+")+"K",513),[[W,!e.fileSearchQuery]]),N(o("button",{class:"tree-search-clear","aria-label":"Clear search",onClick:t[2]||(t[2]=i=>{e.fileSearchQuery="",e.onFileSearchChange()})},"\xD7",512),[[W,e.fileSearchQuery]])])]),o("div",OO,[o("span",{class:"project-name",textContent:c(e.repoId)},null,8,IO),o("span",PO,c(e.fileCounts?.[""]||e.files?.length)+" files",1)]),o("div",VO,[e.options?.truncatedFolders?.length>0?(l(),d("div",qO,[t[8]||(t[8]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-warning"})],-1)),g(" "+c(e.fmt?.translate("WARNINGS.repo_truncated")),1)])):p("v-if",!0),e.options?.hasSubmodules?(l(),d("div",MO,[t[9]||(t[9]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-warning"})],-1)),g(" "+c(e.fmt?.translate("WARNINGS.submodules_not_included")),1)])):p("v-if",!0),_e(n,{class:"files",file:e.files,"search-query":e.fileSearchQuery,"search-results":e.fileSearchResults,page:e.viewState},null,8,["file","search-query","search-results","page"])]),o("div",$O,[o("span",{class:"last-update",title:e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.lastUpdateDate},c(e.options?.sourceCommitDate?"Source commit":e.options?.anonymizedAt?"Anonymized":"Updated")+" "+c(e.fmt?.date(e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.lastUpdateDate)),9,LO),e.options?.settingsSavedAt?(l(),d("span",{key:0,class:"last-update",title:e.options.settingsSavedAt}," Settings saved "+c(e.fmt?.date(e.options.settingsSavedAt)),9,UO)):p("v-if",!0),e.options?.publishedAt?(l(),d("span",{key:1,class:"last-update",title:e.options.publishedAt}," Snapshot ready "+c(e.fmt?.date(e.options.publishedAt)),9,FO)):p("v-if",!0),e.options?.anonymizedAt&&!e.options?.publishedAt?(l(),d("span",zO," Snapshot ready date not recorded ")):p("v-if",!0)])],2),[[W,e.files?.length]]),N(o("div",{class:"leftCol-backdrop",onClick:t[3]||(t[3]=i=>e.sidebarCollapsed=!0)},null,512),[[W,e.files?.length&&!e.sidebarCollapsed]]),o("div",HO,[o("div",BO,[o("ol",jO,[(l(!0),d(Q,null,se(e.paths,(i,a)=>(l(),d("li",{class:"breadcrumb-item",textContent:c(i)},null,8,GO))),256))]),o("div",WO,[e.options?.isAdmin||e.options?.isOwner?(l(),d("a",{key:0,class:"btn btn-sm","aria-label":"Edit",href:e.safeUrl("/anonymize/"+e.repoId)},[...t[10]||(t[10]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-edit"})],-1),o("span",{class:"d-none d-md-inline"}," Edit",-1)])],8,KO)):p("v-if",!0),e.type=="html-doc"&&!e.showSource?(l(),d("button",{key:1,class:A(["btn btn-sm",{"btn-active":e.allowScripts}]),"aria-label":"Allow this document to run JavaScript",title:"Scripts in this file are blocked by default. Enable them only if you trust the repository \u2014 the document stays isolated from your session either way.",onClick:t[4]||(t[4]=i=>e.toggleAllowScripts())},[t[11]||(t[11]=o("i",{class:"fab fa-js"},null,-1)),o("span",YO,c(e.allowScripts?"JS on":"JS off"),1)],2)):p("v-if",!0),e.type=="html-doc"?(l(),d("button",{key:2,class:"btn btn-sm","aria-label":"Toggle between the rendered document and its source",title:"Toggle between the rendered document and its source",onClick:t[5]||(t[5]=i=>e.toggleSource())},[(l(),d("svg",JO,[o("use",{href:e.showSource?"#project-icon-eye":"#ui-icon-code"},null,8,QO)])),o("span",XO,c(e.showSource?"Rendered":"Source"),1)])):p("v-if",!0),N(o("a",{target:"_self",class:"btn btn-sm","aria-label":"View raw current file",title:"View the raw content of the current file",href:e.safeUrl(e.url)},[...t[12]||(t[12]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-file"})],-1),o("span",{class:"d-none d-md-inline"}," Raw",-1)])],8,ZO),[[W,e.content!=null]]),N(o("a",{target:"_self",class:"btn btn-sm","aria-label":"Download current file",title:"Download the current file",href:e.safeUrl(e.url+"&download=true")},[...t[13]||(t[13]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-download"})],-1),o("span",{class:"d-none d-md-inline"}," Download",-1)])],8,xO),[[W,e.content!=null]]),e.options?.download?(l(),d("a",{key:3,target:"_self",class:"btn btn-sm","aria-label":"Download full repository as ZIP",title:"Download the full repository as a ZIP archive",href:e.safeUrl("/api/repo/"+e.repoId+"/zip")},[...t[14]||(t[14]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-archive"})],-1),o("span",{class:"d-none d-md-inline"}," Full repo ZIP",-1)])],8,eI)):p("v-if",!0),e.options?.hasWebsite?(l(),d("a",{key:4,target:"_self",class:"btn btn-sm","aria-label":"Website",href:e.safeUrl("/w/"+e.repoId+"/")},[...t[15]||(t[15]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-globe"})],-1),o("span",{class:"d-none d-md-inline"}," Website",-1)])],8,tI)):p("v-if",!0)])]),o("div",oI,[_e(r,{name:"partials/pageView.htm",state:e.viewState},null,8,["state"])])])])}var sI={class:"paper-faq"};function bl(e,t){return l(),d("div",sI,[...t[0]||(t[0]=[le('
Help

Answers to the questions that come up most.

If something's missing, write to us \u2014 report a bug on GitHub.

',1),o("div",{class:"paper-faq-body"},[o("aside",{class:"paper-faq-toc"},[o("div",{class:"paper-faq-toc-head"},"Contents"),o("nav",null,[o("a",{href:"#faq-general"},"General"),o("a",{href:"#faq-features"},"Features"),o("a",{href:"#faq-limitations"},"Limitations"),o("a",{href:"#faq-privacy"},"Privacy & Security"),o("a",{href:"#faq-hosting"},"Self-Hosting")])]),o("section",{class:"faq-section","aria-label":"FAQs"},[o("div",null,[p(" General "),o("h4",{class:"faq-cat"},[o("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[o("use",{href:"#ui-icon-info"})]),g("General ")]),o("div",{class:"panel-group",id:"faq-general",role:"tablist","aria-multiselectable":"true"},[o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingWhatIs"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-general",href:"#whatIs","aria-expanded":"false","aria-controls":"whatIs"}," What is Anonymous GitHub? ")])]),o("div",{id:"whatIs",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingWhatIs"},[o("div",{class:"panel-body p-3"},[o("p",null," Anonymous GitHub is a free, open-source tool that anonymizes GitHub repositories and pull requests for double-anonymous (double-blind) peer review. It replaces identifying information \u2014 such as the repository owner, organization name, and custom terms \u2014 so that reviewers cannot determine the identity of the authors through the code repository. ")])])]),o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingHowWork"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-general",href:"#howWork","aria-expanded":"false","aria-controls":"howWork"}," How does Anonymous GitHub work? ")])]),o("div",{id:"howWork",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingHowWork"},[o("div",{class:"panel-body p-3"},[o("p",null," Anonymous GitHub either downloads the complete repository and anonymizes the content, or proxies requests to GitHub on the fly. In both cases, the original and anonymized versions of files are cached on the server. The system automatically detects and replaces the repository owner, organization name, and repository name. You can also specify additional custom terms to anonymize using one-per-line regex patterns. ")])])]),o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingScope"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-general",href:"#scope","aria-expanded":"false","aria-controls":"scope"}," What is the scope of anonymization? ")])]),o("div",{id:"scope",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingScope"},[o("div",{class:"panel-body p-3"},[o("p",null," In double-anonymous peer review, the boundary of anonymization is the paper plus its online appendix \u2014 not the entire internet. Searching for any part of the paper or the online appendix can be considered a deliberate attempt to break anonymity. Anonymous GitHub anonymizes the repository owner, organization, repository name, file and directory names, and file contents across all text-based file types. ")])])]),o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingCost"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-general",href:"#cost","aria-expanded":"false","aria-controls":"cost"}," How much does it cost? ")])]),o("div",{id:"cost",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingCost"},[o("div",{class:"panel-body p-3"},[o("p",null,[g(" Anonymous GitHub is completely free to use. However, the server costs hundreds of dollars per year to maintain. If you find the service useful, a small donation would be greatly appreciated. You can support the project by "),o("a",{href:"https://github.com/sponsors/tdurieux/",target:"_blank"},"sponsoring on GitHub"),g(", donating through "),o("a",{href:"https://ko-fi.com/tdurieux",target:"_blank"},"Ko-fi"),g(', or by clicking the "Support me" button on the site. ')])])])])]),p(" Features "),o("h4",{class:"faq-cat"},[o("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[o("use",{href:"#project-icon-filter"})]),g("Features ")]),o("div",{class:"panel-group",id:"faq-features",role:"tablist","aria-multiselectable":"true"},[o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingFormats"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#formats","aria-expanded":"false","aria-controls":"formats"}," Which file formats are supported? ")])]),o("div",{id:"formats",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingFormats"},[o("div",{class:"panel-body p-3"},[o("p",null," Anonymous GitHub can display and render a wide variety of file types: "),o("ul",null,[o("li",null,[o("strong",null,"Text and source code"),g(" \u2014 displayed with syntax highlighting")]),o("li",null,[o("strong",null,"Markdown"),g(" \u2014 rendered as formatted HTML")]),o("li",null,[o("strong",null,"Images"),g(" (PNG, JPG, SVG, etc.) \u2014 displayed inline")]),o("li",null,[o("strong",null,"PDFs"),g(" \u2014 rendered directly in the browser")]),o("li",null,[o("strong",null,"Jupyter Notebooks"),g(" \u2014 rendered with code cells and outputs")])]),o("p",null," Only text-based files are anonymized. Anonymous GitHub analyzes the content of each file to determine whether it is textual or binary. ")])])]),o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingPR"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#pullRequests","aria-expanded":"false","aria-controls":"pullRequests"}," Can I anonymize pull requests? ")])]),o("div",{id:"pullRequests",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingPR"},[o("div",{class:"panel-body p-3"},[o("p",null," Yes. In addition to full repositories, Anonymous GitHub supports anonymizing individual pull requests. Simply paste the URL of a GitHub pull request when creating a new anonymized repository, and the system will automatically detect that it is a pull request and anonymize it accordingly. ")])])]),o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingConference"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#conference","aria-expanded":"false","aria-controls":"conference"}," What is the Conference ID feature? ")])]),o("div",{id:"conference",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingConference"},[o("div",{class:"panel-body p-3"},[o("p",null," When creating an anonymized repository, you can associate it with a Conference ID. This allows conferences to define default anonymization settings (such as expiration dates) that are automatically applied to repositories submitted under that conference. If your conference provides a Conference ID, enter it during the anonymization setup. ")])])]),o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingExpiration"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#expiration","aria-expanded":"false","aria-controls":"expiration"}," What happens when an anonymized repository expires? ")])]),o("div",{id:"expiration",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingExpiration"},[o("div",{class:"panel-body p-3"},[o("p",null," You can configure one of three expiration strategies when creating your anonymized repository: "),o("ul",null,[o("li",null,[o("strong",null,"Never expire"),g(" \u2014 the anonymized repository remains accessible indefinitely.")]),o("li",null,[o("strong",null,"Redirect to GitHub"),g(" \u2014 after expiration, visitors are redirected to the original GitHub repository.")]),o("li",null,[o("strong",null,"Remove content"),g(" \u2014 after expiration, the anonymized content is deleted from the server.")])])])])]),o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingDownload"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#download","aria-expanded":"false","aria-controls":"download"}," Can I download an anonymized repository? ")])]),o("div",{id:"download",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingDownload"},[o("div",{class:"panel-body p-3"},[o("p",null," Yes. Anonymized repositories can be downloaded as a ZIP file. This is useful if reviewers want to build or test the code locally. The downloaded archive contains the fully anonymized version of the repository. ")])])]),o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingUpdates"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#updates","aria-expanded":"false","aria-controls":"updates"}," Are updates to the original repository reflected in the anonymized version? ")])]),o("div",{id:"updates",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingUpdates"},[o("div",{class:"panel-body p-3"},[o("p",null," Yes. The anonymized repository tracks the source on GitHub: when you push new commits to the original repository, the anonymized view picks up those changes (cached files are refreshed against GitHub). This means you can keep iterating on the code while reviewers have the link, and you do not need to recreate the anonymized repository every time you update the source. "),o("p",null," A few practical implications worth keeping in mind: "),o("ul",null,[o("li",null," You can safely create the anonymized repository early in the writing process \u2014 later commits will be visible to reviewers without any additional action. "),o("li",null," If you rename files, add new identifiers, or introduce new contributor names after creation, revisit the anonymization options (custom terms, file filters) to make sure the new content is still properly anonymized. "),o("li",null," If the original repository is made private or deleted, the anonymized repository will no longer be able to fetch updated content. ")])])])]),o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingCLI"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#cli","aria-expanded":"false","aria-controls":"cli"}," Is there a command-line tool? ")])]),o("div",{id:"cli",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingCLI"},[o("div",{class:"panel-body p-3"},[o("p",null," Yes. Anonymous GitHub provides a CLI tool that lets you anonymize repositories locally, generating an anonymized ZIP file on your machine. Install it via npm: "),o("pre",{style:{"background-color":"var(--hover-bg-color)",padding:"12px","border-radius":"4px","margin-top":"8px",color:"var(--color)"}},[o("code",null,`npm install -g @tdurieux/anonymous_github -anonymous_github`)])])])])]),p(" Limitations "),o("h4",{class:"faq-cat"},[o("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[o("use",{href:"#ui-icon-warning"})]),g("Limitations ")]),o("div",{class:"panel-group",id:"faq-limitations",role:"tablist","aria-multiselectable":"true"},[o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingLimitation"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-limitations",href:"#limitation","aria-expanded":"false","aria-controls":"limitation"}," What are the limitations of Anonymous GitHub? ")])]),o("div",{id:"limitation",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingLimitation"},[o("div",{class:"panel-body p-3"},[o("ul",null,[o("li",null," Anonymous GitHub only anonymizes text-based files. Binary files (compiled executables, archives, etc.) are served as-is without anonymization. "),o("li",null," Files larger than 8 MB are not supported. "),o("li",null," Static site generators (such as Jekyll) used with GitHub Pages are not fully supported, although Markdown files are converted to HTML. "),o("li",null," The anonymization of terms within source code may change the behavior of the program (e.g., if a replaced term appears in a string literal or identifier). ")])])])])]),p(" Privacy & Security "),o("h4",{class:"faq-cat"},[o("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[o("use",{href:"#ui-icon-shield"})]),g("Privacy & Security ")]),o("div",{class:"panel-group",id:"faq-privacy",role:"tablist","aria-multiselectable":"true"},[o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingData"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-privacy",href:"#data","aria-expanded":"false","aria-controls":"data"}," How is my data handled? ")])]),o("div",{id:"data",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingData"},[o("div",{class:"panel-body p-3"},[o("p",null," Data stored on Anonymous GitHub is never shared or used for any purpose beyond providing the anonymization service. When a repository is removed or expires, only its configuration is retained \u2014 this makes it easy to restore the repository if needed and ensures that no future repository reuses the same ID. ")])])]),o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingPermissions"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-privacy",href:"#permissions","aria-expanded":"false","aria-controls":"permissions"}," Why does GitHub say Anonymous GitHub asks for write access? ")])]),o("div",{id:"permissions",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingPermissions"},[o("div",{class:"panel-body p-3"},[o("p",null,[g("The GitHub App has read-only access to the repositories you choose. You can change repository access on your "),o("a",{href:"/connections"},"GitHub connections"),g(" page.")]),o("p",null,"Legacy GitHub OAuth includes write access to private repositories because GitHub's OAuth scopes do not offer a read-only option for them. Existing OAuth anonymizations and gists can still use this connection."),o("p",null,"Anonymous GitHub reads repository content. It never pushes, modifies, or deletes files on GitHub.")])])]),o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingViewer"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-privacy",href:"#viewer","aria-expanded":"false","aria-controls":"viewer"}," Can repository owners see who viewed their anonymized repository? ")])]),o("div",{id:"viewer",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingViewer"},[o("div",{class:"panel-body p-3"},[o("p",null," No. Only the total number of views is tracked as an incremental counter. It is not possible for the repository owner or for Anonymous GitHub to identify individual viewers. Reviewer anonymity is fully preserved. ")])])])]),p(" Self-Hosting "),o("h4",{class:"faq-cat"},[o("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[o("use",{href:"#project-icon-storage"})]),g("Self-Hosting ")]),o("div",{class:"panel-group",id:"faq-hosting",role:"tablist","aria-multiselectable":"true"},[o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingDeploy"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-hosting",href:"#deploy","aria-expanded":"false","aria-controls":"deploy"}," Can I deploy my own instance? ")])]),o("div",{id:"deploy",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingDeploy"},[o("div",{class:"panel-body p-3"},[o("p",null,[g(" Yes. Anonymous GitHub is fully open source (GPL-3.0) and supports Docker-based deployment. You will need to configure a GitHub OAuth app and provide a GitHub token. Detailed setup instructions are available on the "),o("a",{href:"https://github.com/tdurieux/anonymous_github/",target:"_blank"},"GitHub repository"),g(". ")]),o("p",null," The basic steps are: "),o("ol",null,[o("li",null,"Clone the repository and install dependencies"),o("li",null,[g("Create a "),o("code",null,".env"),g(" file with your GitHub token, OAuth client ID, and client secret")]),o("li",null,[g("Run "),o("code",null,"docker-compose up -d")])])])])])]),o("div",{class:"text-center mt-5 mb-5 p-4",style:{"background-color":"var(--hover-bg-color)","border-radius":"8px"}},[o("p",{class:"mb-2",style:{"font-size":"1.1rem"}}," Still have questions? "),o("p",{class:"text-muted mb-0"},[g(" Open an issue on the "),o("a",{href:"https://github.com/tdurieux/anonymous_github/issues",target:"_blank"},"GitHub repository"),g(" and we'll be happy to help. ")])])])])],-1)])])}var nI={class:"pr-page"},rI={class:"container paper-page pr-page-inner"},iI={class:"pr-header"},aI={class:"pr-title-row"},lI={class:"paper-page-title pr-title"},dI=["textContent"],uI={key:1,class:"text-muted"},cI=["href"],pI={class:"pr-header-meta"},fI={key:0,class:"pr-meta-item"},mI=["textContent"],hI={key:1,class:"pr-meta-item"},vI=["textContent"],gI={key:2,class:"pr-meta-item"},yI=["textContent"],bI={key:0,class:"paper-tabs",role:"tablist"},wI=["aria-selected","tabindex"],kI=["textContent"],EI=["aria-selected","tabindex"],CI=["textContent"],_I={class:"paper-tab-content"},SI={key:0,role:"tabpanel",id:"gist-files-panel","aria-labelledby":"gist-files-tab"},NI={class:"pr-comments"},DI={class:"pr-comment"},RI={class:"pr-comment-head"},TI=["textContent"],AI={key:0,class:"pr-comment-date"},OI={key:0,class:"paper-table-empty"},II={key:1,role:"tabpanel",id:"gist-comments-panel","aria-labelledby":"gist-comments-tab"},PI={class:"pr-comments"},VI={class:"pr-comment"},qI={class:"pr-comment-head"},MI={key:0,class:"pr-comment-author"},$I=["textContent"],LI=["textContent"],UI={key:0,class:"pr-comment-body"},FI={key:0,class:"paper-table-empty"};function wl(e,t){let n=We("gist-file"),r=We("markdown");return l(),d("div",nI,[o("div",rI,[t[17]||(t[17]=o("div",{class:"paper-crumbs"},[o("a",{href:"/dashboard"},"Reviewer"),g(" \xA0/\xA0 "),o("span",{class:"here"},"Gist")],-1)),o("header",iI,[o("div",aI,[o("h1",lI,[e.details?.description?(l(),d("span",{key:0,textContent:c(e.details?.description)},null,8,dI)):p("v-if",!0),e.details?.description?p("v-if",!0):(l(),d("span",uI,"Untitled gist"))]),e.options?.isAdmin||e.options?.isOwner?(l(),d("a",{key:0,class:"btn btn-sm","aria-label":"Edit",href:e.safeUrl("/gist-anonymize/"+e.gistId)},[...t[4]||(t[4]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-edit"})],-1),o("span",{class:"d-none d-md-inline"}," Edit",-1)])],8,cI)):p("v-if",!0)]),o("div",pI,[o("span",{class:A(["paper-pill",{good:e.details?.isPublic,warn:!e.details?.isPublic}])},c(e.details?.isPublic?"Public":"Secret"),3),e.details?.ownerLogin?(l(),d("span",fI,[t[5]||(t[5]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-user"})],-1)),t[6]||(t[6]=g(" @",-1)),o("span",{textContent:c(e.details?.ownerLogin)},null,8,mI)])):p("v-if",!0),e.details?.updatedDate?(l(),d("span",hI,[t[7]||(t[7]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-clock"})],-1)),t[8]||(t[8]=g()),o("span",{textContent:c(e.fmt?.date(e.details?.updatedDate))},null,8,vI)])):p("v-if",!0),e.details?.anonymizeDate?(l(),d("span",gI,[t[9]||(t[9]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-shield"})],-1)),t[10]||(t[10]=g(" Anonymized ",-1)),o("span",{textContent:c(e.fmt?.date(e.details?.anonymizeDate))},null,8,yI)])):p("v-if",!0)])]),e.details?.files&&e.details?.files?.length||e.details?.comments&&e.details?.comments?.length?(l(),d("nav",bI,[e.details?.files?(l(),d("button",{key:0,class:A(["paper-tab",{active:e.tabState?.active=="files"}]),type:"button",role:"tab",id:"gist-files-tab","aria-selected":e.tabState?.active==="files","aria-controls":"gist-files-panel",tabindex:e.tabState?.active==="files"?0:-1,onKeydown:t[0]||(t[0]=s=>e.previewTabKeydown(s)),onClick:t[1]||(t[1]=s=>e.tabState.active="files")},[t[11]||(t[11]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-type-gist"})],-1)),o("span",{textContent:c(e.fmt.plural(e.details?.files?.length,{0:"No files",one:"1 file",other:"{} files"}))},null,8,kI)],42,wI)):p("v-if",!0),e.details?.comments?(l(),d("button",{key:1,class:A(["paper-tab",{active:e.tabState?.active=="comments"}]),type:"button",role:"tab",id:"gist-comments-tab","aria-selected":e.tabState?.active==="comments","aria-controls":"gist-comments-panel",tabindex:e.tabState?.active==="comments"?0:-1,onKeydown:t[2]||(t[2]=s=>e.previewTabKeydown(s)),onClick:t[3]||(t[3]=s=>e.tabState.active="comments")},[t[12]||(t[12]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-comment"})],-1)),o("span",{textContent:c(e.fmt.plural(e.details?.comments?.length,{0:"No comments",one:"1 comment",other:"{} comments"}))},null,8,CI)],42,EI)):p("v-if",!0)])):p("v-if",!0),o("div",_I,[e.details?.files&&e.tabState?.active=="files"?(l(),d("div",SI,[o("ul",NI,[(l(!0),d(Q,null,se(e.details?.files,(s,i)=>(l(),d("li",DI,[o("div",RI,[o("strong",{textContent:c(s?.filename)},null,8,TI),s?.language?(l(),d("span",AI,c(s?.language),1)):p("v-if",!0)]),_e(n,{file:s},null,8,["file"])]))),256)),e.details?.files?.length?p("v-if",!0):(l(),d("li",OI,[...t[13]||(t[13]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-file"})],-1),o("span",null,"No files in this gist.",-1)])]))])])):p("v-if",!0),e.details?.comments&&e.tabState?.active=="comments"?(l(),d("div",II,[o("ul",PI,[(l(!0),d(Q,null,se(e.details?.comments,(s,i)=>(l(),d("li",VI,[o("div",qI,[s?.author?(l(),d("span",MI,[t[14]||(t[14]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-user"})],-1)),t[15]||(t[15]=g(" @",-1)),o("span",{textContent:c(s?.author)},null,8,$I)])):p("v-if",!0),s?.updatedDate?(l(),d("span",{key:1,class:"pr-comment-date",textContent:c(e.fmt?.date(s?.updatedDate))},null,8,LI)):p("v-if",!0)]),s?.body?(l(),d("div",UI,[_e(r,{content:s?.body},null,8,["content"])])):p("v-if",!0)]))),256)),e.details?.comments?.length?p("v-if",!0):(l(),d("li",FI,[...t[16]||(t[16]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-comment"})],-1),o("span",null,"No comments on this gist.",-1)])]))])])):p("v-if",!0)])])])}var zI={class:"collapse navbar-collapse",id:"navbarSupportedContent"},HI={class:"navbar-nav mr-auto smooth-scroll"},BI={key:0,class:"nav-item"},jI={key:1,class:"nav-item"},GI={key:2,class:"nav-item"},WI={key:3,class:"nav-item"},KI={class:"nav-item"},YI={key:4,class:"nav-item"},JI={class:"navbar-nav"},QI={key:0,class:"nav-item"},XI={key:1,class:"nav-item"},ZI={key:2,class:"nav-item"},xI={key:3,class:"nav-item dropdown user-chip-wrap"},e4={class:"nav-link user-chip dropdown-toggle",href:"#",id:"navbarDropdownMenuLink",role:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},t4=["src"],o4={class:"user-chip-name"},s4={class:"dropdown-menu dropdown-menu-right user-menu","aria-labelledby":"navbarDropdownMenuLink"},n4={class:"dropdown-header"},r4=["innerHTML"];function kl(e,t){return l(),d(Q,null,[o("nav",{class:A(["navbar navbar-expand-lg",{"navbar-dark":e.isDarkMode}])},[t[13]||(t[13]=le('Anonymous GitHubSupport',3)),o("div",zI,[o("ul",HI,[e.user?p("v-if",!0):(l(),d("li",BI,[o("a",{class:A(["nav-link",{active:e.path=="/"}]),href:"/"}," Home ",2)])),e.user?(l(),d("li",jI,[o("a",{class:A(["nav-link",{active:e.path=="/dashboard"}]),href:"/dashboard"},[...t[2]||(t[2]=[o("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-grid"})],-1),g(" My work ",-1)])],2)])):p("v-if",!0),e.user?(l(),d("li",GI,[o("a",{class:A(["nav-link",{active:e.path=="/anonymize"||e.path=="/pull-request-anonymize"}]),href:"/anonymize"},[...t[3]||(t[3]=[o("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-shield"})],-1),g(" Anonymize ",-1)])],2)])):p("v-if",!0),e.user?(l(),d("li",WI,[o("a",{class:A(["nav-link",{active:e.path=="/conferences"}]),href:"/conferences"},[...t[4]||(t[4]=[o("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[o("use",{href:"#project-icon-conference"})],-1),g(" Conferences ",-1)])],2)])):p("v-if",!0),o("li",KI,[o("a",{class:A(["nav-link",{active:e.path=="/faq"}]),href:"/faq"},[...t[5]||(t[5]=[o("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-help"})],-1),g("FAQ",-1)])],2)]),e.user&&e.user?.isAdmin?(l(),d("li",YI,[o("a",{class:A(["nav-link",{active:e.path?.indexOf("/admin")===0}]),href:"/admin/"},[...t[6]||(t[6]=[o("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[o("use",{href:"#project-icon-filter"})],-1),g(" Admin ",-1)])],2)])):p("v-if",!0)]),o("ul",JI,[t[11]||(t[11]=o("li",{class:"nav-item"},[o("a",{class:"nav-link nav-icon",target:"_blank",href:"https://github.com/tdurieux/anonymous_github/",title:"Anonymous GitHub source code","aria-label":"Anonymous GitHub source code on GitHub",rel:"noopener","data-offset":"30"},[o("i",{class:"fab fa-github","aria-hidden":"true"})])],-1)),p(` "Report a bug" is about this service. Reviewers who land on an +`)],{type:"text/csv"}),D=document.createElement("a");D.href=URL.createObjectURL(R),D.download=r.username+"-repositories.csv",D.click()},e.showStatusMessage=h=>{let b=h.statusMessage||"(no message)";window.prompt(`Status message for ${h.repoId} (${h.status}):`,b)},e.fetchGithubInfo=h=>{let b=window.open("","_blank");b&&b.document.write("
Loading GitHub info for "+h.repoId+"...
"),t.get("/api/admin/repos/"+h.repoId+"/github").then(E=>{b&&(b.document.open(),b.document.write('
'+JSON.stringify(E.data,null,2).replace(/[<>]/g,k=>k==="<"?"<":">")+"
"),b.document.close())},E=>{let k=E&&E.data?JSON.stringify(E.data,null,2):String(E);b&&(b.document.body.innerHTML='
'+k+"
")})};function f(h){t.get("/api/admin/users/"+h+"/repos",{}).then(b=>{e.repositories=b.data},b=>{console.error(b)})}function m(h){t.get("/api/admin/users/"+h,{}).then(b=>{e.userInfo=b.data},b=>{console.error(b)})}m(r.username),f(r.username),e.banUser=()=>{confirm(`Ban user ${r.username}?`)&&t.post(`/api/admin/users/${r.username}/ban`).then(()=>m(r.username),h=>console.error(h))},e.activateUser=()=>{t.post(`/api/admin/users/${r.username}/activate`).then(()=>m(r.username),h=>console.error(h))},e.promoteUser=()=>{confirm(`Promote ${r.username} to admin?`)&&t.post(`/api/admin/users/${r.username}/promote`).then(()=>m(r.username),h=>console.error(h))},e.demoteUser=()=>{confirm(`Remove admin privileges from ${r.username}?`)&&t.post(`/api/admin/users/${r.username}/demote`).then(()=>m(r.username),h=>console.error(h))},e.tokens=[],e.tokenForm={name:"",plaintext:null};function g(){t.get("/api/admin/tokens").then(h=>{e.tokens=h.data||[]},h=>{h.status!==401&&h.status!==403&&console.error(h)})}g(),e.createToken=()=>{e.tokenForm.name&&t.post("/api/admin/tokens",{name:e.tokenForm.name}).then(h=>{e.tokenForm.plaintext=h.data.token,e.tokenForm.name="",g()},h=>console.error(h))},e.revokeToken=h=>{confirm(`Revoke token "${h.name}"?`)&&t.delete("/api/admin/tokens/"+h.id).then(()=>g(),b=>console.error(b))},e.removeCache=h=>{confirm("Remove cached files for "+h.repoId+"?")&&t.delete("/api/admin/repos/"+h.repoId).then(()=>f(r.username),b=>console.error(b))},e.removeRepository=h=>{confirm("Remove repository "+h.repoId+"?")&&t.delete("/api/repo/"+h.repoId+"/").then(()=>f(r.username),b=>console.error(b))},e.updateRepository=h=>{let b=He({title:`Refreshing ${h.repoId}...`,date:new Date,body:`The repository ${h.repoId} is going to be refreshed.`});e.toasts.push(b),t.post(`/api/repo/${h.repoId}/refresh`).then(E=>{E.data.status=="ready"?b.title=`${h.repoId} is refreshed.`:b.title=`Refreshing of ${h.repoId}.`},E=>{b.title=`Error during the refresh of ${h.repoId}.`,b.body=E.body})},e.getGitHubRepositories=h=>{t.get(`/api/user/${e.userInfo.username}/all_repositories`,{params:{force:"1"}}).then(b=>{e.userInfo.repositories=b.data})};let w=null;e.watch("query",()=>{s.timeout.cancel(w),w=s.timeout(()=>{f(r.username)},500)},!0)},Xa=function(e,t,n){let r=ct(),s=Kt();e.Math=Math,e.watch("user.status",()=>{e.user==null&&n.url("/")}),e.user==null&&n.url("/"),e.conferences=[],e.total=-1,e.totalPage=0,e.statusCounts=[];let i=E=>{if(E.key==="/"&&!["INPUT","TEXTAREA","SELECT"].includes(document.activeElement?.tagName)){E.preventDefault();let k=document.querySelector('.admin-filter-toolbar input[type="search"]');k&&k.focus()}};s(document,"keydown",i),e.on("dispose",()=>document.removeEventListener("keydown",i)),e.clearFilter=E=>{E==="dateRange"?(e.query.dateFrom="",e.query.dateTo=""):e.query[E]="",e.query.page=1},e.chips=[];let a=()=>{let E=[];(e.query.dateFrom||e.query.dateTo)&&E.push({key:"dateRange",label:"Date",value:(e.query.dateFrom||"\u2026")+" \u2013 "+(e.query.dateTo||"\u2026")}),e.chips=E};e.statusCountFor=E=>{let k=(e.statusCounts||[]).find(R=>R._id===E);return k?k.count:0},e.toggleSortDirection=()=>{e.query.direction=e.query.direction==="asc"?"desc":"asc"},e.sortBy=E=>{e.query.sort===E?e.query.direction=e.query.direction==="asc"?"desc":"asc":(e.query.sort=E,e.query.direction="desc"),e.query.page=1},e.sortIcon=E=>e.query.sort===E?e.query.direction==="asc"?"fa-arrow-up":"fa-arrow-down":"";let u="admin.conferences.filterPrefs",f={page:1,limit:25,sort:"name",direction:"asc",search:"",dateFrom:"",dateTo:"",ready:!1,expired:!1,removed:!1,error:!0,preparing:!0},m=loadFilterPrefs(u)||{};e.query=Object.assign({},f,m,{page:1,search:""});let g=n.search();g.search&&(e.query.search=g.search);let w="admin.conferences.presets";e.presets=JSON.parse(localStorage.getItem(w)||"[]"),e.savePreset=()=>{let E=window.prompt("Preset name:");if(!E)return;let k=Object.assign({},e.query);delete k.page,e.presets=(e.presets||[]).filter(R=>R.name!==E),e.presets.push({name:E,query:k}),localStorage.setItem(w,JSON.stringify(e.presets))},e.applyPreset=E=>{Object.assign(e.query,E.query,{page:1})},e.deletePreset=E=>{e.presets=(e.presets||[]).filter(k=>k.name!==E.name),localStorage.setItem(w,JSON.stringify(e.presets))},e.removeConference=E=>{confirm("Remove conference "+E.conferenceID+"?")&&t.delete("/api/admin/conferences/"+E.conferenceID).then(()=>h(),k=>console.error(k))},e.exportCsv=()=>{let E=new URLSearchParams(Object.entries(e.query).filter(([,k])=>k!==""&&k!==!1&&k!=null));E.set("format","csv"),E.set("limit","10000"),window.open("/api/admin/conferences?"+E.toString(),"_blank")},e.fetchError=null;function h(){e.fetchError=null,t.get("/api/admin/conferences",{params:e.query}).then(E=>{e.total=E.data.total,e.totalPage=Math.ceil(E.data.total/e.query.limit),e.conferences=E.data.results,e.statusCounts=E.data.statusCounts||[]},E=>{e.fetchError=E&&E.data&&E.data.error||"Failed to load conferences",console.error(E)})}h();let b=null;e.watch("query",()=>{r.timeout.cancel(b),b=r.timeout(h,500);let{page:E,search:k,...R}=e.query;saveFilterPrefs(u,R),a()},!0),a()},Za=function(e,t,n,r,s){let i=ct();e.watch("user.status",()=>{e.user==null&&n.url("/")}),e.user==null&&n.url("/"),e.queueList=[],e.jobs=[],e.selectedQueue="download",e.selectedStats=null,e.range="1h",e.allStates=["active","waiting","delayed","failed","completed"],e.stateFilter={active:!0,waiting:!0,delayed:!0,failed:!0,completed:!0},e.query={search:"",autoRefresh:!0},e.filteredJobs=()=>(e.jobs||[]).filter(k=>e.stateFilter[k._state]),e.jobProgressPct=k=>k&&k.progress&&typeof k.progress=="object"&&typeof k.progress.percent=="number"?Math.max(0,Math.min(100,Math.round(k.progress.percent))):typeof k.progress=="number"?Math.max(0,Math.min(100,Math.round(k.progress))):null,e.jobDuration=k=>{if(!k.processedOn)return"-";let D=(k.finishedOn||Date.now())-k.processedOn;return D<1e3?D+"ms":(D/1e3).toFixed(1)+"s"},e.metricsPoints=[],e.selectQueue=k=>{e.selectedQueue=k,a(),u()},e.setRange=k=>{e.range=k,u()};function a(){let k={queue:e.selectedQueue,search:e.query.search};t.get("/api/admin/queues",{params:k}).then(R=>{e.queueList=R.data.queues||[],e.jobs=R.data.jobs||[],e.selectedStats=e.queueList.find(D=>D.key===e.selectedQueue)||e.queueList[0]||null},R=>console.error(R))}function u(){t.get("/api/admin/queues/metrics",{params:{queue:e.selectedQueue,range:e.range}}).then(k=>{e.metricsPoints=k.data.points||[],s(h,0)},k=>console.error(k))}a(),u();let f=r(()=>{e.query.autoRefresh&&(a(),u())},15e3);e.on("dispose",()=>r.cancel(f)),e.refreshNow=function(){a(),u()};function m(k){let R=k&&k.data&&(k.data.message||k.data.error)||"Request failed";e.actionError=R,s(()=>{e.actionError=null},5e3),console.error(k)}e.actionError=null,e.removeJob=k=>{t.delete(`/api/admin/queue/${e.selectedQueue}/${k.id}`).then(a,m)},e.retryJob=k=>{t.post(`/api/admin/queue/${e.selectedQueue}/${k.id}`).then(a,m)},e.retryFailed=()=>{confirm(`Retry all failed jobs in ${e.selectedQueue}?`)&&t.post(`/api/admin/queue/${e.selectedQueue}/retry-failed`).then(a,k=>console.error(k))},e.drainSelected=()=>{confirm(`Drain the ${e.selectedQueue} queue?`)&&t.post(`/api/admin/queue/${e.selectedQueue}/drain`).then(a,k=>console.error(k))},e.togglePause=()=>{let k=e.selectedStats&&e.selectedStats.paused?"resume":"pause";t.post(`/api/admin/queue/${e.selectedQueue}/${k}`).then(a,R=>console.error(R))},e.emptyQueue=()=>{confirm(`Empty the ${e.selectedQueue} queue? This removes ALL jobs.`)&&t.post(`/api/admin/queue/${e.selectedQueue}/empty`).then(a,k=>console.error(k))},e.pauseAll=()=>{confirm("Pause all queues?")&&t.post("/api/admin/queues/pause-all").then(a,k=>console.error(k))};let g=null;e.watch("query.search",()=>{i.timeout.cancel(g),g=i.timeout(a,350)}),e.expanded={},e.toggleJob=k=>{e.expanded[k.id]=!e.expanded[k.id]},e.humanTime=k=>{if(!k)return"";let R=new Date(k);return R.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})+" "+R.toLocaleDateString([],{month:"short",day:"numeric"})},e.delayCountdown=k=>{if(!k)return"";var R=Math.max(0,Math.ceil((k-Date.now())/1e3));if(R<=0)return"resuming soon";var D=Math.floor(R/60),T=R%60;return"in "+(D>0?D+"m "+T+"s":T+"s")};function w(k){if(k<=0)return{ticks:[0],niceMax:1};let R=Math.pow(10,Math.floor(Math.log10(k))),D=R;k/D<2?D=R/2:k/D>5&&(D=R*2);let T=Math.ceil(k/D)*D,P=[];for(let H=0;H<=T;H+=D)P.push(H);return{ticks:P,niceMax:T}}function h(){var k=document.getElementById("q-throughput-chart");if(!k)return;var R=k.getContext("2d"),D=window.devicePixelRatio||1,T=k.parentElement.getBoundingClientRect(),P=44,H=50,q=20,U=T.width-40,ie=180,re=U-P-H,C=ie-q;k.width=U*D,k.height=ie*D,k.style.width=U+"px",k.style.height=ie+"px",R.setTransform(D,0,0,D,0,0);var O=document.body.classList.contains("dark-mode"),G="#8A857C",J=O?"rgba(255,255,255,0.06)":"rgba(0,0,0,0.06)",ee=O?"#A7B2FF":"#3B4AD6",Q=O?"rgba(167,178,255,0.12)":"rgba(59,74,214,0.08)",oe=O?"#F08A82":"#B42318",ue=O?"rgba(240,138,130,0.08)":"rgba(180,35,24,0.06)",pe=O?"#F5C842":"#B8860B",le=e.metricsPoints||[];if(le.length===0){R.fillStyle=G,R.font="12px monospace",R.textAlign="center",R.fillText("No metrics data yet",U/2,ie/2),b=null;return}var Ie=le.map(function(L){return L.completed}),_e=le.map(function(L){return L.failed}),Ae=le.map(function(L){return L.avgMs}),Ee=le.length,Ve=re/(Ee-1||1),Se=Math.max(1,Math.max.apply(null,Ie),Math.max.apply(null,_e)),Le=w(Se),Ue=Math.max.apply(null,Ae),z=Ue>0?w(Ue):{ticks:[0],niceMax:1},ne=function(L){return C-L/Le.niceMax*(C-10)},te=function(L){return C-L/z.niceMax*(C-10)},_=function(L){return P+L*Ve};R.textAlign="right",R.textBaseline="middle",R.font="10px monospace",Le.ticks.forEach(function(L){var W=ne(L);R.strokeStyle=J,R.lineWidth=1,R.beginPath(),R.moveTo(P,W),R.lineTo(U-H,W),R.stroke(),R.fillStyle=G,R.fillText(L>=1e3?(L/1e3).toFixed(1)+"k":String(L),P-6,W)}),Ue>0&&(R.textAlign="left",z.ticks.forEach(function(L){var W=te(L);R.fillStyle=pe,R.fillText(L>=1e3?(L/1e3).toFixed(1)+"s":L+"ms",U-H+6,W)}));var I=Date.now(),j=Math.min(6,Ee);R.textAlign="center",R.textBaseline="top";for(var M=0;M0&&(R.beginPath(),Ae.forEach(function(L,W){var x=_(W),Z=te(L);if(W===0)R.moveTo(x,Z);else{var K=(_(W-1)+x)/2;R.bezierCurveTo(K,te(Ae[W-1]),K,Z,x,Z)}}),R.strokeStyle=pe,R.lineWidth=1,R.setLineDash([4,3]),R.stroke(),R.setLineDash([])),b={pts:le,maxLen:Ee,marginLeft:P,step:Ve,totalW:U,toX:_}}var b=null;function E(){var k=document.getElementById("q-throughput-chart");if(!(!k||k._tipBound)){k._tipBound=!0;var R=document.getElementById("q-chart-tooltip"),D=document.getElementById("q-chart-crosshair");k.addEventListener("mousemove",function(T){if(!(!b||!R||!D)){var P=b,H=k.getBoundingClientRect(),q=T.clientX-H.left,U=Math.round((q-P.marginLeft)/P.step);if(U<0||U>=P.maxLen){R.style.display="none",D.style.display="none";return}var ie=P.pts[U],re=Date.now(),C=Math.round((re-ie.ts)/6e4),O;if(C<=0)O="now";else if(C<60)O=C+"m ago";else if(C<1440){var G=Math.floor(C/60),J=C%60;O=G+"h"+(J?" "+J+"m":"")+" ago"}else O=Math.round(C/1440)+"d ago";var ee='
'+O+'
● completed: '+ie.completed+'/min
● failed: '+ie.failed+"/min
";if(ie.avgMs>0){var Q=ie.avgMs>=1e3?(ie.avgMs/1e3).toFixed(1)+"s":ie.avgMs+"ms";ee+='
● avg time: '+Q+"
"}R.innerHTML=ee;var oe=P.toX(U),ue=R.offsetWidth,pe=oe+10;pe+ue>P.totalW&&(pe=oe-ue-10),R.style.display="block",R.style.left=pe+"px",R.style.top="8px",D.style.display="block",D.style.left=oe+"px"}}),k.addEventListener("mouseleave",function(){R&&(R.style.display="none"),D&&(D.style.display="none")})}}e.watch("metricsPoints",function(){s(E,50)})},xa=function(e,t,n,r){let s=ct();e.watch("user.status",()=>{e.user==null&&n.url("/")}),e.user==null&&n.url("/"),e.entries=[],e.visible=[],e.available=!0,e.cap=1e3,e.total=0,e.pageSize=250,e.expanded={},e.detailTab={},e.copyHint="",e.parsedFilterCount=0,e.stats={last24h:0,prev24h:0,delta:0,severity:{error:0,warn:0,info:0},unique:{error:0,warn:0,info:0},buckets:[],dropped:0},e.query={search:"",bucket:"",sort:"recent",group:"code",autoRefresh:!0},e.relTime=D=>{if(!D)return"";let T=new Date(D).getTime();if(isNaN(T))return D;let P=Math.max(0,Date.now()-T),H=Math.floor(P/1e3);if(H<5)return"just now";if(H<60)return`${H}s ago`;let q=Math.floor(H/60);if(q<60)return`${q}m ago`;let U=Math.floor(q/60);if(U<24)return`${U}h ago`;let ie=Math.floor(U/24);return ie<7?`${ie}d ago`:new Date(D).toLocaleDateString()},e.absTime=D=>{if(!D)return"";let T=new Date(D);return isNaN(T.getTime())?D:T.toLocaleString()},e.absTimeShort=D=>{if(!D)return"";let T=new Date(D);return isNaN(T.getTime())?D:T.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})};let i=/^[a-zA-Z][a-zA-Z0-9]*(?:_[a-zA-Z0-9]+)+$/;function a(D,T){let P=D&&(D.httpStatus||D.status)||null;if(typeof P=="number"){if(P>=500)return"error";if(P===401||P===403||P===404)return"info";if(P>=400)return"warn"}return T==="error"?"error":T==="warn"?"warn":"info"}function u(D){let T=(D.raw||[]).find(U=>U&&typeof U=="object"&&!Array.isArray(U));if(T){T.message&&i.test(T.message)?(D.displayMessage=T.message,D.displayContext=D.message):T.code&&i.test(String(T.code))?(D.displayMessage=String(T.code),D.displayContext=D.message):T.name&&T.name!=="AnonymousError"&&T.name!=="Error"?(D.displayMessage=T.name,D.displayContext=T.message||D.message):D.displayMessage=D.message,D._status=T.httpStatus||T.status||null,D._url=T.url||null,D._method=T.method||null,D._repoId=T.repoId||T.detail||null,D._detail=T.detail&&T.detail!==D._repoId?T.detail:null;let U=typeof T.stack=="string"?T.stack:null;for(var P=[T.cause,T.err].filter(Boolean),H=0;!U&&H{C==null||C===""||P.push([re,C])};H("name",T&&T.name),H("code",D.displayMessage||T&&T.message),D._bucket&&H("kind",D._bucket),H("httpStatus",T&&T.httpStatus),T&&T.status&&!T.httpStatus&&H("status",T.status),H("module",D.module);let q=T&&T.detail;if(typeof q=="string"){let re=q.trim();if(re[0]==="{"||re[0]==="[")try{q=JSON.parse(q)}catch{}}if(H("detail",q),H("repoId",T&&T.repoId),H("filePath",T&&T.filePath),H("upstreamStatus",T&&T.upstreamStatus),H("upstreamBody",T&&T.upstreamBody),H("url",D._url),H("err",T&&T.err),H("cause",T&&!T.err&&T.cause),H("ts",D.ts),!P.length)return JSON.stringify(D,null,2);let U=P.reduce((re,C)=>Math.max(re,C[0].length),0),ie=["{"];return P.forEach(([re,C],O)=>{let J=` ${`"${re}":`.padEnd(U+3," ")} `,ee=Ope===0?ue:oe+ue).join(` +`)}else typeof C=="number"||typeof C=="boolean"?Q=String(C):Q=JSON.stringify(C);ie.push(`${J}${Q}${ee}`)}),ie.push("}"),ie.join(` +`)}function m(D){let T=[],P="",H=/(\w+):(>=|<=|!=|>|<|=)?([^\s]+)/g,q=0,U;for(;U=H.exec(D);)P+=D.slice(q,U.index),q=H.lastIndex,T.push({key:U[1],op:U[2]||"=",val:U[3]});return P+=D.slice(q),{filters:T,free:P.trim().toLowerCase()}}function g(D,T){for(let P of T.filters){let H=(U,ie,re)=>{let C=parseFloat(U),O=parseFloat(ie);return re==="="?String(U)===String(ie):re==="!="?String(U)!==String(ie):re===">="?C>=O:re==="<="?C<=O:re===">"?C>O:re==="<"?CT&&q._bucket!==T?!1:g(q,D)),H=e.query.group;if(H){let q=re=>H==="module"?re.module:re.displayMessage||re.message||"_",U=new Map;for(let re of P){let C=q(re);if(U.has(C)){let O=U.get(C);O.count++,O._related.push(re),new Date(re.ts)>new Date(O.ts)&&(O.ts=re.ts,O._url=re._url,O._status=re._status),new Date(re.ts)new Date(C.ts).getTime()>=ie).length;P=Array.from(U.values())}else P=P.map((q,U)=>(q._key="row:"+U+":"+q.ts,q._related=[q],q._firstSeen=q.ts,q._lastHourCount=0,q.count=1,q));e.query.sort==="count"?P.sort((q,U)=>U.count-q.count||new Date(U.ts)-new Date(q.ts)):P.sort((q,U)=>new Date(U.ts)-new Date(q.ts)),e.visible=P}function h(D){let T=D?e.entries.length:0,P=D?e.pageSize:Math.max(e.pageSize,e.entries.length||e.pageSize);t.get("/api/admin/errors",{params:{offset:T,limit:P}}).then(H=>{let q=(H.data.entries||[]).map(u);e.entries=D?e.entries.concat(q):q,e.available=!!H.data.available,e.cap=H.data.max||e.cap,e.total=H.data.total||e.entries.length,w()},H=>console.error(H))}e.loadMore=()=>h(!0),e.canLoadMore=()=>e.entries.length{let T=D.data||{},P=T.prev24h?Math.round((T.last24h-T.prev24h)/T.prev24h*100):0;e.stats={last24h:T.last24h||0,prev24h:T.prev24h||0,delta:P,severity:T.severity||{error:0,warn:0,info:0},unique:T.unique||{error:0,warn:0,info:0},buckets:T.buckets||[],dropped:T.dropped||0}},D=>console.error(D))}function E(){h(),b()}e.barPx=(D,T)=>{let P=e.stats.buckets||[],H=0;for(let re of P)H=Math.max(H,(re.error||0)+(re.warn||0)+(re.info||0));if(!H)return 0;let q=(D.error||0)+(D.warn||0)+(D.info||0);if(!q)return 0;let U=Math.round(q/H*60),ie=D[T]||0;return Math.round(ie/q*U)},e.bucketTitle=D=>`${new Date(D.hour).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})} \xB7 ${D.error||0} err \xB7 ${D.warn||0} warn \xB7 ${D.info||0} info`,e.toggle=D=>{e.expanded[D._key]=!e.expanded[D._key]},e.setBucket=D=>{e.query.bucket=D},e.refreshNow=E,e.clearAll=()=>{confirm("Clear all captured errors?")&&t.delete("/api/admin/errors").then(E,D=>console.error(D))},e.exportCsv=()=>{let D=["ts","level","module","displayMessage","_status","_url","_repoId"],T=[D.join(",")];for(let U of e.visible)T.push(D.map(ie=>{let re=U[ie]==null?"":String(U[ie]);return/[",\n]/.test(re)?`"${re.replace(/"/g,'""')}"`:re}).join(","));let P=new Blob([T.join(` +`)],{type:"text/csv;charset=utf-8"}),H=URL.createObjectURL(P),q=document.createElement("a");q.href=H,q.download=`errors-${new Date().toISOString().slice(0,19)}.csv`,document.body.appendChild(q),q.click(),document.body.removeChild(q),URL.revokeObjectURL(H)};function k(D){e.copyHint=`${D} copied`,s.timeout(()=>{e.copyHint=""},1500)}e.copyJson=D=>{navigator.clipboard.writeText(D._detailJson).then(()=>k("JSON"))},e.copyCurl=D=>{if(!D._url)return;let P=`curl -X ${D._method||"GET"} '${window.location.origin}${D._url}'`;navigator.clipboard.writeText(P).then(()=>k("curl"))},E();let R=r(()=>{e.query.autoRefresh&&E()},15e3);e.on("dispose",()=>r.cancel(R)),e.watch("query.search",w),e.watch("query.bucket",w),e.watch("query.sort",w),e.watch("query.group",w)},el=function(e,t,n,r){if(e.Math=Math,e.watch("user.status",()=>{e.user==null&&n.url("/")}),e.user==null){n.url("/");return}e.data=null,e.loading=!0,e.error=null;function s(h){if(h==null)return"\u2014";for(var b=["B","KB","MB","GB","TB"],E=0,k=h;k>=1024&&E0?1:0)+" "+b[E]}e.humanBytes=s;function i(h){if(!h)return"\u2014";var b=Math.floor(h/86400),E=Math.floor(h%86400/3600),k=Math.floor(h%3600/60);return b>0?b+"d "+(E<10?"0":"")+E+"h":E>0?E+"h "+(k<10?"0":"")+k+"m":k+"m"}e.humanDuration=i;function a(h){return h==null?"\u2014":h>=1e6?(h/1e6).toFixed(1)+"M":h>=1e3?(h/1e3).toFixed(1)+"K":String(h)}e.humanNum=a,e.queueTotal=function(h){return h?(h.waiting||0)+(h.active||0)+(h.delayed||0)+(h.failed||0):0},e.statusCount=function(h){if(!e.data||!e.data.repos)return 0;for(var b=e.data.repos.statusBreakdown||[],E=0;Em[E])&&(m[E]=b[E])})})},function(h){e.loading=!1,e.error=h.data&&h.data.error||"Failed to load overview"})}g();var w=r(g,3e4);e.on("dispose",function(){r.cancel(w)})};var tl=[{path:"/connections",template:"partials/connections.htm",title:"GitHub connections \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Wa(e,t.http)},{path:"/signin",template:"partials/signin.htm",title:"Sign in \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Ka(e,t.http)},{path:"/",template:"partials/home.htm",title:"Anonymous GitHub \u2013 Share the code, not the author",preserveExplorer:!1,setup:(e,t)=>Ua(e,t.http,t.location,t.window,t.timeout)},{path:"/dashboard",template:"partials/dashboard.htm",title:"Your anonymizations \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Fa(e,t.http,t.location,t.promises,t.window,t.quotaService)},{path:"/pr-dashboard",redirect:"/dashboard"},{path:"/anonymize/:repoId?",template:"partials/anonymize.htm",title:"New anonymization \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>en(e,t.http,t.html,t.params,t.location,t.translate,t.timeout)},{path:"/pull-request-anonymize/:pullRequestId?",template:"partials/anonymize.htm",title:"Anonymize a pull request \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>en(e,t.http,t.html,t.params,t.location,t.translate,t.timeout)},{path:"/gist-anonymize/:gistId?",template:"partials/anonymize.htm",title:"Anonymize a gist \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>en(e,t.http,t.html,t.params,t.location,t.translate,t.timeout)},{path:"/status/:repoId",template:"partials/status.htm",title:"Repository status \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>za(e,t.http,t.params)},{path:"/conferences",template:"partials/conferences.htm",title:"Your conferences \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Ba(e,t.http,t.location)},{path:"/conference/new",template:"partials/newConference.htm",title:"New conference \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>or(e,t.http,t.location,t.params)},{path:"/conference/:conferenceId/edit",template:"partials/newConference.htm",title:"Edit conference \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>or(e,t.http,t.location,t.params)},{path:"/conference/:conferenceId",template:"partials/conference.htm",title:"Conference \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Ga(e,t.http,t.location,t.params)},{path:"/faq",template:"partials/faq.htm",title:"FAQ \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Ma(e,t.http)},{path:"/profile",template:"partials/profile.htm",title:"Your settings \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>$a(e,t.http,t.translate,t.timeout,t.quotaService)},{path:"/claim",template:"partials/claim.htm",title:"Claim an anonymization \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>La(e,t.http,t.location)},{path:"/pr/:pullRequestId/:path(.*)*",template:"partials/pullRequest.htm",title:"Anonymous pull request \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Ha(e,t.http,t.location,t.params,t.html)},{path:"/gist/:gistId/:path(.*)*",template:"partials/gist.htm",title:"Anonymous gist \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>ja(e,t.http,t.location,t.params,t.html)},{path:"/r/:repoId/:path(.*)*",template:"partials/explorer.htm",title:"Anonymous repository \u2013 Anonymous GitHub",preserveExplorer:!0,setup:(e,t)=>tr(e,t.http,t.location,t.params,t.html,t.promises)},{path:"/repository/:repoId/:path(.*)*",template:"partials/explorer.htm",title:"Anonymous repository \u2013 Anonymous GitHub",preserveExplorer:!0,setup:(e,t)=>tr(e,t.http,t.location,t.params,t.html,t.promises)},{path:"/admin/",template:"partials/admin/overview.htm",title:"Admin \xB7 Overview \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>el(e,t.http,t.location,t.interval)},{path:"/admin/repositories",template:"partials/admin/repositories.htm",title:"Admin \xB7 Repositories \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Ya(e,t.http,t.location)},{path:"/admin/users",template:"partials/admin/users.htm",title:"Admin \xB7 Users \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Ja(e,t.http,t.location)},{path:"/admin/users/:username",template:"partials/admin/user.htm",title:"Admin \xB7 User details \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Qa(e,t.http,t.location,t.params)},{path:"/admin/conferences",template:"partials/admin/conferences.htm",title:"Admin \xB7 Conferences \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Xa(e,t.http,t.location)},{path:"/admin/queues",template:"partials/admin/queues.htm",title:"Admin \xB7 Queues \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Za(e,t.http,t.location,t.interval,t.timeout)},{path:"/admin/errors",template:"partials/admin/errors.htm",title:"Admin \xB7 Errors \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>xa(e,t.http,t.location,t.interval)},{path:"/404",template:"partials/404.htm",title:"Page not found \u2013 Anonymous GitHub",preserveExplorer:!1,setup:()=>{}},{path:"/:pathMatch(.*)*",template:"partials/404.htm",title:"Page not found \u2013 Anonymous GitHub",setup:()=>{}}];var sp={class:"container paper-page connections-page"},np={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},rp={key:1,role:"status"},ip=["disabled"],ap={key:3},lp={class:"connections-grid"},dp={key:0},up={class:"connection-title"},cp={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},pp={class:"connection-actions"},fp={key:0,class:"btn btn-ink",target:"_self",href:"/github/app/install"},hp={key:1,class:"connection-installations"},mp={key:0},vp=["href"],gp={class:"sr-only"},yp=["disabled"],bp={class:"connection-title"},wp={key:0,target:"_self",href:"/github/login",class:"btn btn-outline-ink"},kp={key:1,class:"connection-revoke"},Ep={key:0},Cp=["disabled"],_p={class:"connection-resources"},Sp={class:"connection-title"},Np={class:"connection-count"},Dp={key:0,class:"connection-empty"},Rp={class:"connection-resource-name"},Tp={key:0,class:"connection-resource-actions"},Ap=["disabled","onClick"],Op=["disabled","onClick"],Ip={key:1,class:"connection-help",role:"status"},Pp=["disabled","onClick"];function ol(e,t){return l(),d("div",sp,[t[20]||(t[20]=ce('
My work / GitHub connections

GitHub connections

Manage how GitHub shares your code. Your anonymizations and URLs stay the same.

',2)),e.connectionError?(l(),d("p",np,c(e.connectionError),1)):p("v-if",!0),!e.connections&&!e.connectionError?(l(),d("p",rp,"Loading your connections\u2026")):p("v-if",!0),!e.connections&&e.connectionError?(l(),d("button",{key:2,class:"btn btn-outline-ink",disabled:e.busy,onClick:t[0]||(t[0]=n=>e.loadConnections())},"Try again",8,ip)):p("v-if",!0),e.connections?(l(),d("div",ap,[o("div",lp,[e.connections.appEnabled?(l(),d("section",dp,[t[8]||(t[8]=o("div",{class:"connection-top"},[o("i",{class:"fab fa-github","aria-hidden":"true"}),o("span",{class:"connection-badge"},"Recommended")],-1)),o("div",up,[t[3]||(t[3]=o("h2",null,"GitHub App",-1)),o("span",{class:A(["connection-status",{"is-connected":e.connections.appConnected&&!e.connections.appError}])},c(e.connections.appError?"Needs attention":e.connections.appConnected?"Connected":"Not connected"),3)]),t[9]||(t[9]=o("p",null,"Read-only access to the repositories you choose.",-1)),e.connections.appError?(l(),d("p",cp,c(e.connections.appError)+". Reconnect to restore access.",1)):p("v-if",!0),o("div",pp,[e.connections.appConnected&&!e.connections.appError?(l(),d("a",fp,[...t[4]||(t[4]=[y("Manage repository access ",-1),o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-external-link"})],-1)])])):p("v-if",!0),o("a",{class:A(e.connections.appConnected&&!e.connections.appError?"connection-link":"btn btn-ink"),target:"_self",href:"/github/app/login"},c(e.connections.appConnected?"Reconnect account":"Connect GitHub account"),3)]),t[10]||(t[10]=o("p",{class:"connection-help"},"Choose repositories on GitHub. Organization access may need an administrator's approval.",-1)),e.connections.installations?.length?(l(),d("ul",hp,[(l(!0),d(X,null,ae(e.connections.installations,n=>(l(),d("li",{key:n.id},[o("div",null,[o("strong",null,c(n.account),1),n.suspended?(l(),d("span",mp," \xB7 Suspended")):p("v-if",!0)]),o("a",{target:"_self",href:"/github/app/install?installationId="+n.id},[t[5]||(t[5]=y("Manage access ",-1)),o("span",gp,"for "+c(n.account),1),t[6]||(t[6]=y(" \u2192",-1))],8,vp)]))),128))])):p("v-if",!0),o("button",{class:"connection-link",disabled:e.busy,onClick:t[1]||(t[1]=n=>e.loadConnections())},[...t[7]||(t[7]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-refresh"})],-1),y(" Refresh access",-1)])],8,yp)])):p("v-if",!0),o("section",null,[t[13]||(t[13]=o("div",{class:"connection-top"},[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-key"})]),o("span",{class:"connection-badge connection-badge-muted"},"Legacy")],-1)),o("div",bp,[t[11]||(t[11]=o("h2",null,"GitHub OAuth",-1)),o("span",{class:A(["connection-status",{"is-connected":e.connections.oauthConnected}])},c(e.connections.oauthConnected?"Connected":"Not connected"),3)]),t[14]||(t[14]=o("p",null,"For existing OAuth anonymizations and gists.",-1)),t[15]||(t[15]=o("p",{class:"connection-help"},"This connection uses GitHub's broader repository permissions. Existing work keeps using it until you switch below.",-1)),e.connections.oauthEnabled?(l(),d("a",wp,c(e.connections.oauthConnected?"Reconnect OAuth":"Connect legacy OAuth"),1)):p("v-if",!0),e.connections.oauthConnected?(l(),d("div",kp,[e.connections.gistCount?(l(),d("p",Ep,c(e.connections.gistCount)+" gist(s) still require OAuth.",1)):p("v-if",!0),t[12]||(t[12]=o("p",null,"Switch all dependent repositories before revoking access. Gists still require OAuth.",-1)),e.connections.appConnected?(l(),d("button",{key:1,class:"connection-link connection-danger",disabled:e.busy||e.connections.gistCount||e.connections.resources.some(n=>n.connection==="oauth"),onClick:t[2]||(t[2]=n=>e.disconnectOAuth())},"Revoke OAuth access",8,Cp)):p("v-if",!0)])):p("v-if",!0)])]),o("section",_p,[o("div",Sp,[t[16]||(t[16]=o("h2",null,"Repository connections",-1)),o("span",Np,c(e.connections.resources?.length||0)+" resources",1)]),t[18]||(t[18]=o("p",null,"Check access, then switch each resource to the GitHub App. After reinstalling the App, reconnect existing resources here to keep their anonymous URLs and published snapshots.",-1)),e.connections.resources?.length?p("v-if",!0):(l(),d("div",Dp,[...t[17]||(t[17]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-type-repo"})],-1),o("div",null,[o("h3",null,"No repository connections yet"),o("p",null,"Your repositories and pull requests will appear here once you anonymize them.")],-1),o("a",{class:"connection-link",href:"/anonymize"},"New anonymization \u2192",-1)])])),(l(!0),d(X,null,ae(e.connections.resources,n=>(l(),d("div",{class:"connection-resource",key:n.type+n.id},[o("div",Rp,[o("strong",null,c(n.name||n.id),1),o("small",null,c(n.type)+" \xB7 "+c(n.id),1)]),o("span",{class:A(["connection-badge",{"connection-badge-muted":n.connection==="oauth"}])},c(n.connection==="github-app"?"Read-only App":"Legacy OAuth"),3),!["archived","removed","preparing","queue","removing","expiring"].includes(n.status)&&(n.status!=="download"||n.type==="pull-request"&&(!n.statusDate||new Date(n.statusDate).getTime()<=Date.now()-3e5))&&e.connections.appEnabled&&e.connections.appConnected?(l(),d("div",Tp,[o("button",{class:"btn btn-outline-ink",disabled:e.busy,onClick:r=>e.changeConnection(n,"github-app",!0)},"Check read-only access",8,Ap),n.eligible?(l(),d("button",{key:0,class:"btn btn-ink",disabled:e.busy,onClick:r=>e.changeConnection(n,"github-app",!1)},c(n.connection==="github-app"?"Reconnect read-only access":"Switch to read-only access"),9,Op)):p("v-if",!0),n.eligible===!1?(l(),d("span",Ip,"Access unavailable. Allow this repository on GitHub, then check again.")):p("v-if",!0)])):p("v-if",!0),!["archived","removed","preparing","queue","removing","expiring"].includes(n.status)&&(n.status!=="download"||n.type==="pull-request"&&(!n.statusDate||new Date(n.statusDate).getTime()<=Date.now()-3e5))&&n.connection==="github-app"&&e.connections.oauthConnected?(l(),d("button",{key:1,class:"connection-link",disabled:e.busy,onClick:r=>e.changeConnection(n,"oauth",!1)},"Use OAuth",8,Pp)):p("v-if",!0)]))),128)),t[19]||(t[19]=o("p",{class:"connection-footnote"},[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-info"})]),y(" Removing access stops new fetches from GitHub. Published content keeps its current expiration and removal settings.")],-1))])])):p("v-if",!0)])}var Vp={class:"container paper-page auth-page"},qp={class:"auth-layout"},Mp={class:"auth-options"},$p={key:0},Lp={key:0,class:"btn btn-ink auth-continue",target:"_self",href:"/github/login?recover=1"},Up={key:1},Fp={key:1},zp={key:2,class:"auth-legacy"},Hp={key:3,role:"status"};function sl(e,t){return l(),d("div",Vp,[t[5]||(t[5]=o("a",{class:"auth-back",href:"/"},[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-arrow-left"})]),y(" Anonymous GitHub")],-1)),o("div",qp,[t[4]||(t[4]=ce('
Your research, ready for review

Your code.
Your identity,
protected.
Sign in to GitHub

Sign in to create and manage your anonymizations.

',1)),o("div",Mp,[e.accountRecovery?(l(),d("section",$p,[t[0]||(t[0]=o("h2",null,"Verify your existing account",-1)),t[1]||(t[1]=o("p",null,"We found an existing account. Verify it with your previous GitHub connection to keep your anonymizations. Future sign-ins will use the GitHub App.",-1)),e.site_options?.GITHUB_OAUTH_ENABLED?(l(),d("a",Lp,"Verify with previous GitHub connection")):(l(),d("p",Up,"Account verification is currently unavailable. Please try again later."))])):p("v-if",!0),e.site_options?.GITHUB_APP_ENABLED&&!e.accountRecovery?(l(),d("section",Fp,[...t[2]||(t[2]=[ce('
Read-only access

Continue with GitHub

Connect through the GitHub App with read-only repository access.

  • You choose which repositories to share
  • No permission to write to your code
Sign in with GitHub Your existing anonymizations and connections stay with your account.',6)])])):p("v-if",!0),!e.site_options?.GITHUB_APP_ENABLED&&e.site_options?.GITHUB_OAUTH_ENABLED&&!e.accountRecovery?(l(),d("section",zp,[...t[3]||(t[3]=[o("div",{class:"connection-title"},[o("h2",null,"Continue with GitHub")],-1),o("p",null,"Sign in to access your account. GitHub OAuth includes write access to private repositories.",-1),o("a",{class:"connection-link",target:"_self",href:"/github/login"},[y("Sign in with GitHub "),o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-arrow-right"})])],-1)])])):p("v-if",!0),e.site_options&&!e.site_options.GITHUB_APP_ENABLED&&!e.site_options.GITHUB_OAUTH_ENABLED?(l(),d("p",Hp,"GitHub sign-in is currently unavailable. Please try again later.")):p("v-if",!0)])])])}var jp={class:"paper-empty"};function nl(e,t){return l(),d("div",jp,[...t[0]||(t[0]=[ce('
Error \xB7 404

This link
isn\u2019t here.

The anonymous mirror you\u2019re looking for has expired, been removed by its owner, or never existed. If you received this URL from an author, ask them to re-issue it.

',1)])])}var Bp={class:"container paper-page admin-page"},Gp={class:"admin-summary"},Wp={class:"summary-total"},Kp=["aria-pressed"],Yp={class:"count"},Jp=["aria-pressed"],Qp={class:"count"},Xp=["aria-pressed"],Zp={class:"count"},xp=["aria-pressed"],ef={class:"count"},tf=["aria-pressed"],of={class:"count"},sf={key:0,class:"alert alert-danger",style:{margin:"8px 0"}},nf={class:"w-100 admin-filter-toolbar","aria-label":"Conferences","accept-charset":"UTF-8"},rf={class:"admin-filter-row"},af={class:"search-wrap"},lf={type:"search",class:"form-control",placeholder:"Search conferences\u2026",autocomplete:"off"},df={key:0,class:"admin-search-hint"},uf={class:"admin-filter-inline","aria-label":"Pagination"},cf=["disabled"],pf={style:{"font-family":"var(--font-mono)","font-size":"12px",color:"var(--ink-muted)"}},ff=["disabled"],hf={key:0,class:"admin-filter-row"},mf={class:"admin-active-chips"},vf={class:"key"},gf=["onClick"],yf={class:"paper-table paper-table-conferences w-100",role:"table","aria-label":"Conferences"},bf={class:"paper-table-head",role:"row"},wf={role:"columnheader"},kf={role:"columnheader"},Ef={role:"columnheader"},Cf={class:"paper-table-row",role:"row"},_f={class:"cell-anon",role:"cell"},Sf={class:"anon-text"},Nf=["textContent","href"],Df={class:"anon-sub"},Rf={class:"cell-status",role:"cell"},Tf=["textContent"],Af={class:"cell-views num",role:"cell"},Of=["textContent","href"],If={class:"cell-expires",role:"cell"},Pf={class:"cell-actions",role:"cell"},Vf={class:"dropdown"},qf={class:"dropdown-menu dropdown-menu-right"},Mf=["href"],$f=["href"],Lf=["href"],Uf=["onClick"],Ff={key:0,class:"paper-table-empty"},zf={class:"admin-toolbar",style:{"justify-content":"space-between","border-bottom":"none"}},Hf={style:{"font-size":"12px",color:"var(--ink-muted)"}},jf={key:0,class:"pagination-compact"},Bf=["disabled"],Gf=["max"],Wf=["disabled"],Kf={class:"admin-filter-inline"},Yf={class:"form-control form-control-sm"};function rl(e,t){let n=ye("field"),r=ye("form");return l(),d("div",Bp,[t[47]||(t[47]=ce('
Admin \xA0/\xA0 Conferences

Conferences

',3)),o("div",Gp,[o("span",Wp,c(e.total>=0?e.fmt.number(e.total):"\u2026"),1),o("button",{type:"button",class:A(["summary-pill ok",{active:e.query?.ready}]),title:"Toggle ready filter",onClick:t[0]||(t[0]=s=>{e.query.ready=!e.query.ready,e.query.page=1}),"aria-pressed":!!e.query?.ready},[t[13]||(t[13]=y("Ready ",-1)),o("span",Yp,c(e.fmt?.number(e.statusCountFor("ready"))),1)],10,Kp),o("button",{type:"button",class:A(["summary-pill warn",{active:e.query?.preparing}]),title:"Toggle preparing filter",onClick:t[1]||(t[1]=s=>{e.query.preparing=!e.query.preparing,e.query.page=1}),"aria-pressed":!!e.query?.preparing},[t[14]||(t[14]=y("Preparing ",-1)),o("span",Qp,c(e.fmt?.number(e.statusCountFor("preparing"))),1)],10,Jp),o("button",{type:"button",class:A(["summary-pill error",{active:e.query?.error}]),title:"Toggle errored filter",onClick:t[2]||(t[2]=s=>{e.query.error=!e.query.error,e.query.page=1}),"aria-pressed":!!e.query?.error},[t[15]||(t[15]=y("Errored ",-1)),o("span",Zp,c(e.fmt?.number(e.statusCountFor("error"))),1)],10,Xp),o("button",{type:"button",class:A(["summary-pill",{active:e.query?.expired}]),title:"Toggle expired filter",onClick:t[3]||(t[3]=s=>{e.query.expired=!e.query.expired,e.query.page=1}),"aria-pressed":!!e.query?.expired},[t[16]||(t[16]=y("Expired ",-1)),o("span",ef,c(e.fmt?.number(e.statusCountFor("expired"))),1)],10,xp),o("button",{type:"button",class:A(["summary-pill",{active:e.query?.removed}]),title:"Toggle removed filter",onClick:t[4]||(t[4]=s=>{e.query.removed=!e.query.removed,e.query.page=1}),"aria-pressed":!!e.query?.removed},[t[17]||(t[17]=y("Removed ",-1)),o("span",of,c(e.fmt?.number(e.statusCountFor("removed"))),1)],10,tf)]),e.fetchError?(l(),d("div",sf,[t[18]||(t[18]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-warning"})],-1)),y(" "+c(e.fetchError),1)])):p("v-if",!0),N((l(),d("form",nf,[o("div",rf,[o("div",af,[N(o("input",lf,null,512),[[n,{state:e.viewState,set:s=>{e.query.search=s},value:e.query?.search,form:null,options:{}}]]),e.query?.search?p("v-if",!0):(l(),d("span",df,"/"))]),t[22]||(t[22]=o("span",{class:"admin-filter-spacer"},null,-1)),o("button",{class:"btn btn-sm",type:"button",onClick:t[5]||(t[5]=s=>e.exportCsv())},[...t[19]||(t[19]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-export"})],-1),y(" Export",-1)])]),o("span",uf,[o("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[6]||(t[6]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1,"aria-label":"Previous page"},[...t[20]||(t[20]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-chevron-left"})],-1)])],8,cf),o("span",pf,c(e.query?.page)+"/"+c(e.totalPage||1),1),o("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[7]||(t[7]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage,"aria-label":"Next page"},[...t[21]||(t[21]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-chevron-right"})],-1)])],8,ff)])]),e.chips?.length?(l(),d("div",hf,[o("div",mf,[(l(!0),d(X,null,ae(e.chips,(s,i)=>(l(),d("span",{class:"admin-active-chip",key:s?.key},[o("span",vf,c(s?.label),1),o("span",null,c(s?.value),1),o("button",{type:"button",onClick:a=>e.clearFilter(s.key),"aria-label":"Clear filter"},[...t[23]||(t[23]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-close"})],-1)])],8,gf)]))),128))])])):p("v-if",!0)])),[[r,e.viewState]]),o("div",yf,[o("div",bf,[o("div",wf,[o("button",{type:"button",class:A(["sortable",{active:e.query?.sort=="name"}]),onClick:t[8]||(t[8]=s=>e.sortBy("name"))},[t[25]||(t[25]=y("Conference ",-1)),e.sortIcon("name")?(l(),d("svg",{key:0,class:A(["ui-icon sort-direction",{ascending:e.sortIcon("name")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[24]||(t[24]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),o("div",kf,[o("button",{type:"button",class:A(["sortable",{active:e.query?.sort=="status"}]),onClick:t[9]||(t[9]=s=>e.sortBy("status"))},[t[27]||(t[27]=y("Status ",-1)),e.sortIcon("status")?(l(),d("svg",{key:0,class:A(["ui-icon sort-direction",{ascending:e.sortIcon("status")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[26]||(t[26]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),t[30]||(t[30]=o("div",{role:"columnheader",class:"num"},"Repos",-1)),o("div",Ef,[o("button",{type:"button",class:A(["sortable",{active:e.query?.sort=="startDate"}]),onClick:t[10]||(t[10]=s=>e.sortBy("startDate"))},[t[29]||(t[29]=y("Window ",-1)),e.sortIcon("startDate")?(l(),d("svg",{key:0,class:A(["ui-icon sort-direction",{ascending:e.sortIcon("startDate")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[28]||(t[28]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),t[31]||(t[31]=o("div",{role:"columnheader","aria-label":"Actions"},null,-1))]),(l(!0),d(X,null,ae(e.filteredConferences,(s,i)=>(l(),d("div",Cf,[o("div",_f,[t[33]||(t[33]=o("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Conference"},[o("use",{href:"#project-icon-conference"})],-1)),o("div",Sf,[o("a",{class:"repo-name",textContent:c(s?.name),href:e.safeUrl("/conference/"+s?.conferenceID)},null,8,Nf),o("div",Df,[o("span",null,c(s?.conferenceID),1),t[32]||(t[32]=y("\xA0\xB7\xA0",-1)),o("span",null,c(e.fmt?.number(s?.price||0))+" \u20AC",1)])])]),o("div",Rf,[o("span",{class:A(["status-dot",{"status-removed":s?.status=="removed"||s?.status=="expired","status-ready":s?.status=="ready","status-error":s?.status=="error","status-preparing":s?.status=="preparing"}])},null,2),o("span",{textContent:c(e.fmt?.title(s?.status))},null,8,Tf)]),o("div",Af,[t[34]||(t[34]=o("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[o("use",{href:"#project-type-repo"})],-1)),o("a",{title:"Show repositories in this conference",textContent:c(e.fmt?.number(s?.repositories?.length||0)),href:e.safeUrl("/admin/?conference="+s?.conferenceID)},null,8,Of)]),o("div",If,[t[35]||(t[35]=o("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-clock"})],-1)),y(" "+c(e.fmt?.date(s?.startDate))+" \u2013 "+c(e.fmt?.date(s?.endDate)),1)]),o("div",Pf,[o("div",Vf,[t[41]||(t[41]=o("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions"},[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-more"})])],-1)),o("div",qf,[o("a",{class:"dropdown-item",href:e.safeUrl("/conference/"+s?.conferenceID+"/edit")},[...t[36]||(t[36]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-edit"})],-1),y(" Edit",-1)])],8,Mf),o("a",{class:"dropdown-item",href:e.safeUrl("/conference/"+s?.conferenceID+"/")},[...t[37]||(t[37]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-eye"})],-1),y(" View",-1)])],8,$f),o("a",{class:"dropdown-item",href:e.safeUrl("/admin/?conference="+s?.conferenceID)},[...t[38]||(t[38]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-type-repo"})],-1),y(" View repositories",-1)])],8,Lf),t[40]||(t[40]=o("div",{class:"dropdown-divider"},null,-1)),N(o("a",{class:"dropdown-item text-danger",href:"#",onClick:he(a=>e.removeConference(s),["prevent"])},[...t[39]||(t[39]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-trash"})],-1),y(" Remove",-1)])],8,Uf),[[Y,s?.status!="removed"]])])])])]))),256)),e.filteredConferences?.length==0?(l(),d("div",Ff,[...t[42]||(t[42]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-inbox"})],-1),o("span",null,"No conferences match the current filters.",-1)])])):p("v-if",!0)]),o("div",zf,[o("span",Hf,c(e.fmt?.number(e.total))+" results",1),e.totalPage>1?(l(),d("div",jf,[o("button",{class:"btn btn-sm",onClick:t[11]||(t[11]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1},[...t[43]||(t[43]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-chevron-left"})],-1),y(" Previous",-1)])],8,Bf),N(o("input",{type:"number",class:"form-control form-control-sm",min:"1",style:{width:"56px"},max:e.totalPage},null,8,Gf),[[n,{state:e.viewState,set:s=>{e.query.page=s},value:e.query?.page,form:null,options:{}}]]),o("span",null,"of "+c(e.totalPage),1),o("button",{class:"btn btn-sm",onClick:t[12]||(t[12]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage},[...t[44]||(t[44]=[y("Next ",-1),o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-chevron-right"})],-1)])],8,Wf)])):p("v-if",!0),o("span",Kf,[t[46]||(t[46]=o("label",null,"Per page",-1)),N((l(),d("select",Yf,[...t[45]||(t[45]=[ce('',5)])])),[[n,{state:e.viewState,set:s=>{e.query.limit=s},value:e.query?.limit,form:null,options:{}}]])])])])}var Jf={class:"container paper-page admin-page errors-page"},Qf={class:"errors-header"},Xf={class:"errors-actions"},Zf={class:"kpi-grid"},xf={class:"kpi-card"},eh={class:"kpi-value"},th={key:0},oh={key:1},sh={class:"kpi-card kpi-error"},nh={class:"kpi-value"},rh={class:"kpi-sub"},ih={class:"kpi-card kpi-warn"},ah={class:"kpi-value"},lh={class:"kpi-sub"},dh={class:"kpi-card kpi-info"},uh={class:"kpi-value"},ch={class:"kpi-sub"},ph={class:"kpi-value"},fh={class:"kpi-sub"},hh={key:0,class:"dropped-warn"},mh={class:"volume-chart"},vh={class:"volume-bars"},gh=["title"],yh={class:"errors-toolbar","aria-label":"Error filters"},bh={class:"seg-tabs"},wh={class:"search-wrap"},kh={type:"search",class:"form-control",placeholder:"code:repo_not_found module:route status:>=400",autocomplete:"off"},Eh={key:0,class:"filter-count"},Ch={class:"select-wrap"},_h={class:"form-control form-control-sm"},Sh={class:"select-wrap"},Nh={class:"form-control form-control-sm"},Dh={class:"autoref"},Rh={type:"checkbox"},Th={key:0,class:"admin-empty"},Ah={key:1,class:"errors-pager"},Oh={key:2,class:"errors-list"},Ih=["onClick"],Ph={class:"col-when"},Vh={class:"when-rel"},qh={class:"when-abs"},Mh={class:"col-sev"},$h={class:"sev-label"},Lh={class:"col-mod"},Uh={class:"pill pill-module"},Fh={class:"col-msg"},zh={class:"msg-code"},Hh={key:0,class:"msg-context"},jh={key:1,class:"msg-detail"},Bh={key:2,class:"msg-url"},Gh={class:"col-count"},Wh={key:0,class:"count-pill"},Kh={key:1,class:"count-pill count-pill-muted"},Yh={class:"col-status"},Jh={key:0,class:"errors-row-detail"},Qh={class:"detail-tabs"},Xh=["onClick"],Zh=["onClick"],xh=["onClick"],em={class:"detail-body"},tm={class:"detail-main"},om={key:0},sm={key:1,class:"stack-pre"},nm={key:2,class:"related-list"},rm={class:"when-abs"},im={class:"msg-url"},am={class:"detail-actions"},lm=["onClick"],dm=["onClick"],um={key:0,class:"copy-hint"},cm={class:"detail-aside"},pm={class:"aside-block"},fm=["title"],hm={class:"aside-block"},mm=["title"],vm={class:"aside-block"},gm={class:"aside-value"},ym={key:0,class:"aside-sub"},bm={key:0,class:"aside-block"},wm=["href"],km={key:1,class:"aside-block"},Em={class:"aside-value mono"};function il(e,t){let n=ye("field"),r=ye("form");return l(),d("div",Jf,[t[32]||(t[32]=o("div",{class:"paper-crumbs"},[y("Admin \xA0/\xA0 "),o("span",{class:"here"},"Errors")],-1)),o("header",Qf,[t[10]||(t[10]=o("h1",{class:"paper-page-title"},"Errors",-1)),o("div",Xf,[o("button",{class:"btn btn-sm",type:"button",onClick:t[0]||(t[0]=s=>e.exportCsv())},[...t[8]||(t[8]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-export"})],-1),y(" Export CSV",-1)])]),o("button",{class:"btn btn-sm btn-danger",type:"button",onClick:t[1]||(t[1]=s=>e.clearAll())},[...t[9]||(t[9]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-trash"})],-1),y(" Clear all",-1)])])])]),t[33]||(t[33]=ce('',1)),o("section",Zf,[o("div",xf,[t[11]||(t[11]=o("div",{class:"kpi-label"},"Last 24h",-1)),o("div",eh,c(e.stats?.last24h),1),o("div",{class:A(["kpi-sub",{up:e.stats?.delta>0,down:e.stats?.delta<0}])},[e.stats?.prev24h?(l(),d("span",th,c(e.stats?.delta>0?"+":"")+c(e.stats?.delta)+"% vs yesterday",1)):p("v-if",!0),e.stats?.prev24h?p("v-if",!0):(l(),d("span",oh,"no prior baseline"))],2)]),o("div",sh,[t[12]||(t[12]=o("div",{class:"kpi-label"},"Errors (5xx)",-1)),o("div",nh,c(e.stats?.severity?.error),1),o("div",rh,c(e.stats?.unique?.error)+" unique",1)]),o("div",ih,[t[13]||(t[13]=o("div",{class:"kpi-label"},"Warnings (4xx)",-1)),o("div",ah,c(e.stats?.severity?.warn),1),o("div",lh,c(e.stats?.unique?.warn)+" unique",1)]),o("div",dh,[t[14]||(t[14]=o("div",{class:"kpi-label"},"Info (auth, 404)",-1)),o("div",uh,c(e.stats?.severity?.info),1),o("div",ch,c(e.stats?.unique?.info)+" unique",1)]),o("div",{class:A(["kpi-card",{"kpi-error":e.stats?.dropped>0}])},[t[15]||(t[15]=o("div",{class:"kpi-label"},"Captured",-1)),o("div",ph,c(e.total),1),o("div",fh,[y(" cap "+c(e.cap)+" \xB7 "+c(e.available?"live":"redis off")+" ",1),e.stats?.dropped>0?(l(),d("span",hh," \xB7 "+c(e.stats?.dropped)+" dropped",1)):p("v-if",!0)])],2)]),o("section",mh,[t[16]||(t[16]=ce('
Volume \xB7 24h \xB7 1h bucketserror warn info
',1)),o("div",vh,[(l(!0),d(X,null,ae(e.stats?.buckets,(s,i)=>(l(),d("div",{class:"volume-bar",key:i,title:e.bucketTitle(s)},[o("span",{class:"seg seg-error",style:Me({height:e.barPx(s,"error")+"px"})},null,4),o("span",{class:"seg seg-warn",style:Me({height:e.barPx(s,"warn")+"px"})},null,4),o("span",{class:"seg seg-info",style:Me({height:e.barPx(s,"info")+"px"})},null,4)],8,gh))),128))])]),N((l(),d("form",yh,[o("div",bh,[o("button",{type:"button",class:A({active:e.query?.bucket===""}),onClick:t[2]||(t[2]=s=>e.setBucket(""))},"All",2),o("button",{type:"button",class:A({active:e.query?.bucket==="error"}),onClick:t[3]||(t[3]=s=>e.setBucket("error"))},"5xx",2),o("button",{type:"button",class:A({active:e.query?.bucket==="warn"}),onClick:t[4]||(t[4]=s=>e.setBucket("warn"))},"4xx",2),o("button",{type:"button",class:A({active:e.query?.bucket==="info"}),onClick:t[5]||(t[5]=s=>e.setBucket("info"))},"Info",2)]),o("div",wh,[t[17]||(t[17]=o("svg",{class:"ui-icon search-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-search"})],-1)),N(o("input",kh,null,512),[[n,{state:e.viewState,set:s=>{e.query.search=s},value:e.query?.search,form:null,options:{}}]]),e.parsedFilterCount?(l(),d("span",Eh,c(e.parsedFilterCount)+" filter"+c(e.parsedFilterCount>1?"s":""),1)):p("v-if",!0)]),o("div",Ch,[t[19]||(t[19]=o("label",null,"Sort",-1)),N((l(),d("select",_h,[...t[18]||(t[18]=[o("option",{value:"recent"},"Most recent",-1),o("option",{value:"count"},"Most frequent",-1)])])),[[n,{state:e.viewState,set:s=>{e.query.sort=s},value:e.query?.sort,form:null,options:{}}]])]),o("div",Sh,[t[21]||(t[21]=o("label",null,"Group",-1)),N((l(),d("select",Nh,[...t[20]||(t[20]=[o("option",{value:""},"Off",-1),o("option",{value:"code"},"By code",-1),o("option",{value:"module"},"By module",-1)])])),[[n,{state:e.viewState,set:s=>{e.query.group=s},value:e.query?.group,form:null,options:{}}]])]),o("label",Dh,[N(o("input",Rh,null,512),[[n,{state:e.viewState,set:s=>{e.query.autoRefresh=s},value:e.query?.autoRefresh,form:null,options:{}}]]),t[22]||(t[22]=y(" Auto-refresh ",-1))]),o("button",{class:"btn btn-sm btn-icon",type:"button",title:"Refresh now",onClick:t[6]||(t[6]=s=>e.refreshNow()),"aria-label":"Refresh"},[...t[23]||(t[23]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-refresh"})],-1)])])])),[[r,e.viewState]]),e.visible?.length?p("v-if",!0):(l(),d("div",Th,"No errors captured.")),e.canLoadMore()&&e.visible?.length?(l(),d("div",Ah,[o("span",null,"Showing "+c(e.entries?.length)+" of "+c(e.total)+" captured",1),o("button",{class:"btn btn-sm",type:"button",onClick:t[7]||(t[7]=s=>e.loadMore())},"Load older")])):p("v-if",!0),e.visible?.length?(l(),d("div",Oh,[t[31]||(t[31]=ce('
WhenSeverityModuleMessageCountStatus
',1)),(l(!0),d(X,null,ae(e.visible,(s,i)=>(l(),d("div",{class:A(["errors-row",{open:e.expanded[s?._key]}]),key:s?._key},[o("div",{class:"errors-row-main",onClick:a=>e.toggle(s)},[o("div",Ph,[o("div",Vh,c(e.relTime(s?.ts)),1),o("div",qh,c(e.absTimeShort(s?.ts)),1)]),o("div",Mh,[o("span",{class:A(["sev-dot","sev-"+s?._bucket])},null,2),o("span",$h,c(e.fmt?.uppercase(s?._bucket)),1)]),o("div",Lh,[o("span",Uh,c(s?.module),1)]),o("div",Fh,[o("strong",zh,c(s?.displayMessage),1),s?.displayContext&&s?.displayContext!==s?.displayMessage?(l(),d("span",Hh,c(s?.displayContext),1)):p("v-if",!0),s?._detail?(l(),d("span",jh,c(s?._detail),1)):p("v-if",!0),s?._url?(l(),d("div",Bh,c(s?._url),1)):p("v-if",!0)]),o("div",Gh,[s?.count>1?(l(),d("span",Wh,"\xD7"+c(s?.count),1)):p("v-if",!0),s?.count===1?(l(),d("span",Kh,"\xD71")):p("v-if",!0)]),o("div",Yh,[s?._status?(l(),d("span",{key:0,class:A(["status-pill","status-"+s?._bucket])},c(s?._status),3)):p("v-if",!0)])],8,Ih),e.expanded[s?._key]?(l(),d("div",Jh,[o("div",Qh,[o("button",{type:"button",class:A({active:e.detailTab[s?._key]==="raw"||!e.detailTab[s?._key]}),onClick:a=>e.detailTab[s._key]="raw"},"Raw",10,Xh),s?._stack?(l(),d("button",{key:0,type:"button",class:A({active:e.detailTab[s?._key]==="stack"}),onClick:a=>e.detailTab[s._key]="stack"},"Stack",10,Zh)):p("v-if",!0),s?.count>1?(l(),d("button",{key:1,type:"button",class:A({active:e.detailTab[s?._key]==="related"}),onClick:a=>e.detailTab[s._key]="related"},"Related ("+c(s?.count)+")",11,xh)):p("v-if",!0)]),o("div",em,[o("div",tm,[(e.detailTab[s?._key]||"raw")==="raw"?(l(),d("pre",om,c(s?._detailJson),1)):p("v-if",!0),e.detailTab[s?._key]==="stack"?(l(),d("pre",sm,c(s?._stack),1)):p("v-if",!0),e.detailTab[s?._key]==="related"?(l(),d("div",nm,[(l(!0),d(X,null,ae(s?._related,(a,u)=>(l(),d("div",{class:"related-row",key:u},[o("span",rm,c(e.absTimeShort(a?.ts)),1),o("span",im,c(a?._url),1),a?._status?(l(),d("span",{key:0,class:A(["status-pill","status-"+a?._bucket])},c(a?._status),3)):p("v-if",!0)]))),128))])):p("v-if",!0),o("div",am,[o("button",{class:"btn btn-sm",type:"button",title:"Copy a curl that reproduces the request",onClick:a=>e.copyCurl(s)},[...t[24]||(t[24]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-code"})],-1),y(" Copy curl",-1)])],8,lm),o("button",{class:"btn btn-sm",type:"button",onClick:a=>e.copyJson(s)},[...t[25]||(t[25]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-clipboard"})],-1),y(" Copy JSON",-1)])],8,dm),e.copyHint?(l(),d("span",um,c(e.copyHint),1)):p("v-if",!0)])]),o("aside",cm,[o("div",pm,[t[26]||(t[26]=o("div",{class:"aside-label"},"First seen",-1)),o("div",{class:"aside-value",title:e.absTime(s?._firstSeen)},c(e.relTime(s?._firstSeen)),9,fm)]),o("div",hm,[t[27]||(t[27]=o("div",{class:"aside-label"},"Last seen",-1)),o("div",{class:"aside-value",title:e.absTime(s?.ts)},c(e.relTime(s?.ts)),9,mm)]),o("div",vm,[t[28]||(t[28]=o("div",{class:"aside-label"},"Occurrences",-1)),o("div",gm,[y(c(s?.count),1),s?._lastHourCount?(l(),d("span",ym," \xB7 "+c(s?._lastHourCount)+" this hour",1)):p("v-if",!0)])]),s?._repoId?(l(),d("div",bm,[t[29]||(t[29]=o("div",{class:"aside-label"},"Repository",-1)),o("a",{class:"aside-value",href:e.safeUrl("/r/"+s?._repoId)},c(s?._repoId),9,wm)])):p("v-if",!0),s?._url?(l(),d("div",km,[t[30]||(t[30]=o("div",{class:"aside-label"},"URL",-1)),o("div",Em,c(s?._url),1)])):p("v-if",!0)])])])):p("v-if",!0)],2))),128))])):p("v-if",!0)])}var Cm={class:"container paper-page admin-page overview-page"},_m={key:0,class:"admin-empty"},Sm={key:1,class:"alert alert-danger",style:{margin:"12px 0"}},Nm={key:2},Dm={class:"ov-kpi-row"},Rm={class:"ov-kpi-card"},Tm={class:"ov-kpi-value"},Am={class:"ov-kpi-sub"},Om={class:"ov-kpi-card"},Im={class:"ov-kpi-sub"},Pm={class:"ov-kpi-card"},Vm={class:"ov-kpi-sub"},qm={class:"ov-kpi-card"},Mm={class:"ov-kpi-sub"},$m={class:"ov-kpi-card"},Lm={class:"ov-kpi-value"},Um={class:"ov-kpi-sub"},Fm={class:"ov-daily-row"},zm={class:"ov-daily-card"},Hm={class:"ov-daily-value"},jm={class:"ov-daily-card"},Bm={class:"ov-daily-value"},Gm={class:"ov-daily-sub"},Wm={class:"ov-daily-card"},Km={class:"ov-daily-value"},Ym={class:"ov-chart-row"},Jm={class:"ov-chart-card"},Qm={key:0,class:"ov-spark-bars"},Xm=["data-tip","aria-label"],Zm={key:1,class:"ov-spark-x"},xm={class:"ov-chart-card"},ev={key:0,class:"ov-spark-bars"},tv=["data-tip","aria-label"],ov={key:1,class:"ov-spark-x"},sv={class:"ov-chart-card"},nv={key:0,class:"ov-spark-bars"},rv=["data-tip","aria-label"],iv={key:1,class:"ov-spark-x"},av={class:"ov-chart-card"},lv={key:0,class:"ov-spark-bars"},dv=["data-tip","aria-label"],uv={key:1,class:"ov-spark-x"},cv={class:"ov-triple-row"},pv={class:"ov-panel-card"},fv={class:"ov-panel-head"},hv={class:"ov-panel-meta"},mv={class:"ov-stacked-bar"},vv={class:"ov-bar-legend"},gv={href:"/admin/repositories",class:"ov-legend-item"},yv={class:"ov-legend-n"},bv={href:"/admin/repositories",class:"ov-legend-item"},wv={class:"ov-legend-n"},kv={href:"/admin/repositories",class:"ov-legend-item"},Ev={class:"ov-legend-n"},Cv={href:"/admin/repositories",class:"ov-legend-item"},_v={class:"ov-legend-n"},Sv={href:"/admin/repositories",class:"ov-legend-item"},Nv={class:"ov-legend-n"},Dv={class:"ov-panel-card"},Rv={class:"ov-panel-head"},Tv={class:"ov-panel-meta"},Av={class:"ov-error-bars"},Ov={class:"ov-ebar-row"},Iv={class:"ov-ebar-track"},Pv={class:"ov-ebar-n"},Vv={class:"ov-ebar-row"},qv={class:"ov-ebar-track"},Mv={class:"ov-ebar-n"},$v={class:"ov-ebar-row"},Lv={class:"ov-ebar-track"},Uv={class:"ov-ebar-n"},Fv={key:0,class:"ov-panel-foot"},zv={href:"/admin/errors"},Hv={class:"ov-panel-card"},jv={class:"ov-routes-table"},Bv={class:"ov-route-row",href:"/admin/queues"},Gv={class:"ov-route-n"},Wv={class:"ov-route-n"},Kv={class:"ov-route-row",href:"/admin/queues"},Yv={class:"ov-route-n"},Jv={class:"ov-route-n"},Qv={class:"ov-route-row",href:"/admin/queues"},Xv={class:"ov-route-n"},Zv={class:"ov-route-n"},xv={class:"ov-services-card"},eg={class:"ov-services-head"},tg={class:"ov-panel-meta"},og={class:"ov-services-grid"},sg={class:"ov-svc"},ng={class:"ov-svc-info"},rg={class:"ov-svc-meta"},ig={class:"ov-svc-detail"},ag={class:"ov-svc"},lg={class:"ov-svc-info"},dg={key:0,class:"ov-svc-meta"},ug={key:1,class:"ov-svc-meta"},cg={class:"ov-svc"},pg={class:"ov-svc-info"},fg={key:0,class:"ov-svc-meta"},hg={key:1,class:"ov-svc-meta"},mg={class:"ov-svc"},vg={class:"ov-svc-info"},gg={key:0,class:"ov-svc-meta"},yg={key:1,class:"ov-svc-meta"},bg={class:"ov-svc"},wg={class:"ov-svc-info"},kg={class:"ov-svc-meta"};function al(e,t){return l(),d("div",Cm,[t[42]||(t[42]=ce('
Admin \xB7 System Health

Overview

',3)),e.loading?(l(),d("div",_m,"Loading overview\u2026")):p("v-if",!0),e.error?(l(),d("div",Sm,[t[0]||(t[0]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-warning"})],-1)),y(" "+c(e.error),1)])):p("v-if",!0),e.data?(l(),d("div",Nm,[p(" \u2500\u2500 Top KPI row \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),o("section",Dm,[o("div",Rm,[t[1]||(t[1]=o("div",{class:"ov-kpi-label"},[y("Repositories "),o("span",{class:"ov-dot ov-dot-ok"})],-1)),o("div",Tm,c(e.humanNum(e.data?.repos?.total)),1),o("div",Am,"+"+c(e.data?.repos?.newRepos24h)+" \xB7 last 24h",1)]),o("div",Om,[t[2]||(t[2]=o("div",{class:"ov-kpi-label"},"CPU",-1)),o("div",{class:A(["ov-kpi-value",{"ov-val-warn":e.data?.system?.cpuPercent>80}])},c(e.data?.system?.cpuPercent)+"%",3),o("div",Im,c(e.data?.system?.cpuCount)+" cores \xB7 load "+c(e.data?.system?.loadAvg?.[0]?.toFixed(1)),1)]),o("div",Pm,[t[3]||(t[3]=o("div",{class:"ov-kpi-label"},"Memory",-1)),o("div",{class:A(["ov-kpi-value",{"ov-val-warn":e.data?.system?.memPercent>85}])},c(e.data?.system?.memPercent)+"%",3),o("div",Vm,c(e.humanBytes(e.data?.system?.memUsed))+" / "+c(e.humanBytes(e.data?.system?.memTotal)),1)]),o("div",qm,[t[4]||(t[4]=o("div",{class:"ov-kpi-label"},"Disk",-1)),o("div",{class:A(["ov-kpi-value",{"ov-val-warn":e.data?.system?.diskPercent>85}])},c(e.data?.system?.diskPercent)+"%",3),o("div",Mm,c(e.humanBytes(e.data?.system?.diskUsed))+" / "+c(e.humanBytes(e.data?.system?.diskTotal))+" \xB7 "+c(e.data?.system?.diskMount),1)]),o("div",$m,[t[5]||(t[5]=o("div",{class:"ov-kpi-label"},"Uptime",-1)),o("div",Lm,c(e.humanDuration(e.data?.system?.uptime)),1),o("div",Um,c(e.data?.system?.nodeVersion)+" \xB7 "+c(e.data?.system?.platform),1)])]),p(" \u2500\u2500 Daily activity highlights \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),o("section",Fm,[o("div",zm,[t[6]||(t[6]=o("div",{class:"ov-daily-label"},"New repos today",-1)),o("div",Hm,"+"+c(e.fmt?.number(e.data?.daily?.today?.repositories)),1),t[7]||(t[7]=o("div",{class:"ov-daily-sub"},"since yesterday",-1))]),o("div",jm,[t[8]||(t[8]=o("div",{class:"ov-daily-label"},"New users today",-1)),o("div",Bm,"+"+c(e.fmt?.number(e.data?.daily?.today?.users)),1),o("div",Gm,c(e.fmt?.number(e.data?.users?.total))+" total users",1)]),o("div",Wm,[t[9]||(t[9]=o("div",{class:"ov-daily-label"},"Page views today",-1)),o("div",Km,"+"+c(e.fmt?.number(e.data?.daily?.today?.pageViews)),1),t[10]||(t[10]=o("div",{class:"ov-daily-sub"},"since yesterday",-1))])]),p(" \u2500\u2500 Daily charts \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),o("section",Ym,[o("div",Jm,[t[11]||(t[11]=o("div",{class:"ov-chart-head"},[o("span",{class:"ov-chart-title"},"Daily page views \xB7 30d"),o("span",{class:"ov-chart-legend"},[o("span",{class:"ov-dot-legend ov-dot-accent"}),y("views/day")])],-1)),e.data?.history?.length?(l(),d("div",Qm,[(l(!0),d(X,null,ae(e.data?.history,(n,r)=>(l(),d("div",{class:"ov-spark-col has-tip",key:r,"data-tip":e.historyLabel(n)+": +"+e.fmt?.number(n?.dailyPageViews)+" views","aria-label":e.historyLabel(n)+": +"+e.fmt?.number(n?.dailyPageViews)+" views"},[o("span",{class:"ov-spark-fill",style:Me({height:e.historyBarH(n,"dailyPageViews")+"px"})},null,4)],8,Xm))),128))])):p("v-if",!0),e.data?.history?.length?(l(),d("div",Zm,[o("span",null,c(e.historyLabel(e.data?.history[0])),1),o("span",null,c(e.historyLabel(e.data?.history[Math?.floor(e.data?.history?.length/2)])),1),o("span",null,c(e.historyLabel(e.data?.history[e.data?.history?.length-1])),1)])):p("v-if",!0)]),o("div",xm,[t[12]||(t[12]=o("div",{class:"ov-chart-head"},[o("span",{class:"ov-chart-title"},"New repos \xB7 30d"),o("span",{class:"ov-chart-legend"},[o("span",{class:"ov-dot-legend ov-dot-ok-fill"}),y("repos/day")])],-1)),e.data?.history?.length?(l(),d("div",ev,[(l(!0),d(X,null,ae(e.data?.history,(n,r)=>(l(),d("div",{class:"ov-spark-col has-tip",key:r,"data-tip":e.historyLabel(n)+": +"+e.fmt?.number(n?.dailyRepositories)+" repos","aria-label":e.historyLabel(n)+": +"+e.fmt?.number(n?.dailyRepositories)+" repos"},[o("span",{class:"ov-spark-fill ov-spark-fill-alt",style:Me({height:e.historyBarH(n,"dailyRepositories")+"px"})},null,4)],8,tv))),128))])):p("v-if",!0),e.data?.history?.length?(l(),d("div",ov,[o("span",null,c(e.historyLabel(e.data?.history[0])),1),o("span",null,c(e.historyLabel(e.data?.history[Math?.floor(e.data?.history?.length/2)])),1),o("span",null,c(e.historyLabel(e.data?.history[e.data?.history?.length-1])),1)])):p("v-if",!0)]),o("div",sv,[t[13]||(t[13]=o("div",{class:"ov-chart-head"},[o("span",{class:"ov-chart-title"},"Users \xB7 30d"),o("span",{class:"ov-chart-legend"},[o("span",{class:"ov-dot-legend ov-dot-user-fill"}),y("total users")])],-1)),e.data?.history?.length?(l(),d("div",nv,[(l(!0),d(X,null,ae(e.data?.history,(n,r)=>(l(),d("div",{class:"ov-spark-col has-tip",key:r,"data-tip":e.historyLabel(n)+": "+e.fmt?.number(n?.nbUsers)+" users","aria-label":e.historyLabel(n)+": "+e.fmt?.number(n?.nbUsers)+" users"},[o("span",{class:"ov-spark-fill ov-spark-fill-user",style:Me({height:e.historyBarH(n,"nbUsers")+"px"})},null,4)],8,rv))),128))])):p("v-if",!0),e.data?.history?.length?(l(),d("div",iv,[o("span",null,c(e.historyLabel(e.data?.history[0])),1),o("span",null,c(e.historyLabel(e.data?.history[Math?.floor(e.data?.history?.length/2)])),1),o("span",null,c(e.historyLabel(e.data?.history[e.data?.history?.length-1])),1)])):p("v-if",!0)]),o("div",av,[t[14]||(t[14]=o("div",{class:"ov-chart-head"},[o("span",{class:"ov-chart-title"},"New users \xB7 30d"),o("span",{class:"ov-chart-legend"},[o("span",{class:"ov-dot-legend ov-dot-new-user-fill"}),y("users/day")])],-1)),e.data?.history?.length?(l(),d("div",lv,[(l(!0),d(X,null,ae(e.data?.history,(n,r)=>(l(),d("div",{class:"ov-spark-col has-tip",key:r,"data-tip":e.historyLabel(n)+": +"+e.fmt?.number(n?.dailyUsers)+" users","aria-label":e.historyLabel(n)+": +"+e.fmt?.number(n?.dailyUsers)+" users"},[o("span",{class:"ov-spark-fill ov-spark-fill-new-user",style:Me({height:e.historyBarH(n,"dailyUsers")+"px"})},null,4)],8,dv))),128))])):p("v-if",!0),e.data?.history?.length?(l(),d("div",uv,[o("span",null,c(e.historyLabel(e.data?.history[0])),1),o("span",null,c(e.historyLabel(e.data?.history[Math?.floor(e.data?.history?.length/2)])),1),o("span",null,c(e.historyLabel(e.data?.history[e.data?.history?.length-1])),1)])):p("v-if",!0)])]),p(" \u2500\u2500 Three-panel row: Status / Errors / Queues \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),o("section",cv,[p(" Repo status breakdown "),o("div",pv,[o("div",fv,[t[15]||(t[15]=o("span",{class:"ov-panel-title"},"Repo status",-1)),o("span",hv,c(e.fmt?.number(e.data?.repos?.total))+" total",1)]),o("div",mv,[o("span",{class:"ov-bar-seg ov-bar-ready",title:"Ready",style:Me({width:e.barPct("ready")+"%"})},null,4),o("span",{class:"ov-bar-seg ov-bar-preparing",title:"Preparing",style:Me({width:e.barPct("preparing")+"%"})},null,4),o("span",{class:"ov-bar-seg ov-bar-error",title:"Error",style:Me({width:e.barPct("error")+"%"})},null,4),o("span",{class:"ov-bar-seg ov-bar-expired",title:"Expired",style:Me({width:e.barPct("expired")+"%"})},null,4),o("span",{class:"ov-bar-seg ov-bar-removed",title:"Removed",style:Me({width:e.barPct("removed")+"%"})},null,4)]),o("div",vv,[o("a",gv,[t[16]||(t[16]=o("span",{class:"ov-swatch ov-bar-ready"},null,-1)),t[17]||(t[17]=y(" ready ",-1)),o("span",yv,c(e.fmt?.number(e.statusCount("ready"))),1)]),o("a",bv,[t[18]||(t[18]=o("span",{class:"ov-swatch ov-bar-preparing"},null,-1)),t[19]||(t[19]=y(" preparing ",-1)),o("span",wv,c(e.fmt?.number(e.statusCount("preparing")+e.statusCount("download"))),1)]),o("a",kv,[t[20]||(t[20]=o("span",{class:"ov-swatch ov-bar-error"},null,-1)),t[21]||(t[21]=y(" error ",-1)),o("span",Ev,c(e.fmt?.number(e.statusCount("error"))),1)]),o("a",Cv,[t[22]||(t[22]=o("span",{class:"ov-swatch ov-bar-expired"},null,-1)),t[23]||(t[23]=y(" expired ",-1)),o("span",_v,c(e.fmt?.number(e.statusCount("expired")+e.statusCount("expiring"))),1)]),o("a",Sv,[t[24]||(t[24]=o("span",{class:"ov-swatch ov-bar-removed"},null,-1)),t[25]||(t[25]=y(" removed ",-1)),o("span",Nv,c(e.fmt?.number(e.statusCount("removed")+e.statusCount("removing"))),1)])])]),p(" Error breakdown "),o("div",Dv,[o("div",Rv,[t[26]||(t[26]=o("span",{class:"ov-panel-title"},"Errors \xB7 24h",-1)),o("span",Tv,c(e.data?.errors?.last24h)+" total",1)]),o("div",Av,[o("div",Ov,[t[27]||(t[27]=o("span",{class:"ov-ebar-label"},"5xx",-1)),o("span",Iv,[o("span",{class:"ov-ebar-fill ov-ebar-error",style:Me({width:e.errPct("error")+"%"})},null,4)]),o("span",Pv,c(e.data?.errors?.severity?.error),1)]),o("div",Vv,[t[28]||(t[28]=o("span",{class:"ov-ebar-label"},"4xx",-1)),o("span",qv,[o("span",{class:"ov-ebar-fill ov-ebar-warn",style:Me({width:e.errPct("warn")+"%"})},null,4)]),o("span",Mv,c(e.data?.errors?.severity?.warn),1)]),o("div",$v,[t[29]||(t[29]=o("span",{class:"ov-ebar-label"},"Info",-1)),o("span",Lv,[o("span",{class:"ov-ebar-fill ov-ebar-info",style:Me({width:e.errPct("info")+"%"})},null,4)]),o("span",Uv,c(e.data?.errors?.severity?.info),1)])]),e.data?.repos?.recentErrors24h?(l(),d("div",Fv,[o("a",zv,c(e.data?.repos?.recentErrors24h)+" repos in error state \u2192",1)])):p("v-if",!0)]),p(" Top routes / queues "),o("div",Hv,[t[34]||(t[34]=o("div",{class:"ov-panel-head"},[o("span",{class:"ov-panel-title"},"Queues"),o("span",{class:"ov-panel-meta"},"by state")],-1)),o("div",jv,[t[33]||(t[33]=ce('
QueueActiveWaitFailed
',1)),o("a",Bv,[t[30]||(t[30]=o("span",{class:"ov-route-name"},"download",-1)),o("span",Gv,c(e.data?.queues?.download?.active),1),o("span",Wv,c(e.data?.queues?.download?.waiting),1),o("span",{class:A(["ov-route-n ov-route-lat",{"ov-n-bad":e.data?.queues?.download?.failed>0}])},c(e.data?.queues?.download?.failed),3)]),o("a",Kv,[t[31]||(t[31]=o("span",{class:"ov-route-name"},"remove",-1)),o("span",Yv,c(e.data?.queues?.remove?.active),1),o("span",Jv,c(e.data?.queues?.remove?.waiting),1),o("span",{class:A(["ov-route-n ov-route-lat",{"ov-n-bad":e.data?.queues?.remove?.failed>0}])},c(e.data?.queues?.remove?.failed),3)]),o("a",Qv,[t[32]||(t[32]=o("span",{class:"ov-route-name"},"cache",-1)),o("span",Xv,c(e.data?.queues?.cache?.active),1),o("span",Zv,c(e.data?.queues?.cache?.waiting),1),o("span",{class:A(["ov-route-n ov-route-lat",{"ov-n-bad":e.data?.queues?.cache?.failed>0}])},c(e.data?.queues?.cache?.failed),3)])])])]),p(" \u2500\u2500 Services bar \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),o("section",xv,[o("div",eg,[t[35]||(t[35]=o("span",{class:"ov-panel-title"},"Services",-1)),o("span",tg,c(e.fmt?.number(e.data?.users?.total))+" users \xB7 "+c(e.data?.conferences?.total)+" conferences",1)]),o("div",og,[o("div",sg,[t[37]||(t[37]=o("span",{class:"ov-svc-dot ov-dot-ok"},null,-1)),o("div",ng,[t[36]||(t[36]=o("span",{class:"ov-svc-name"},"web",-1)),o("span",rg,c(e.data?.system?.nodeVersion),1)]),o("span",ig,"uptime "+c(e.humanDuration(e.data?.system?.uptime)),1)]),o("div",ag,[o("span",{class:A(["ov-svc-dot",e.queueTotal(e.data?.queues?.download)>0?"ov-dot-ok":"ov-dot-idle"])},null,2),o("div",lg,[t[38]||(t[38]=o("span",{class:"ov-svc-name"},"download",-1)),e.queueTotal(e.data?.queues?.download)?(l(),d("span",dg,c(e.queueTotal(e.data?.queues?.download))+" jobs",1)):p("v-if",!0),e.queueTotal(e.data?.queues?.download)?p("v-if",!0):(l(),d("span",ug,"idle"))])]),o("div",cg,[o("span",{class:A(["ov-svc-dot",e.queueTotal(e.data?.queues?.cache)>0?"ov-dot-ok":"ov-dot-idle"])},null,2),o("div",pg,[t[39]||(t[39]=o("span",{class:"ov-svc-name"},"cache",-1)),e.queueTotal(e.data?.queues?.cache)?(l(),d("span",fg,c(e.queueTotal(e.data?.queues?.cache))+" jobs",1)):p("v-if",!0),e.queueTotal(e.data?.queues?.cache)?p("v-if",!0):(l(),d("span",hg,"idle"))])]),o("div",mg,[o("span",{class:A(["ov-svc-dot",e.queueTotal(e.data?.queues?.remove)>0?"ov-dot-ok":"ov-dot-idle"])},null,2),o("div",vg,[t[40]||(t[40]=o("span",{class:"ov-svc-name"},"remove",-1)),e.queueTotal(e.data?.queues?.remove)?(l(),d("span",gg,c(e.queueTotal(e.data?.queues?.remove))+" jobs",1)):p("v-if",!0),e.queueTotal(e.data?.queues?.remove)?p("v-if",!0):(l(),d("span",yg,"idle"))])]),o("div",bg,[o("span",{class:A(["ov-svc-dot",e.data?.repos?.recentErrors24h>10?"ov-dot-warn":"ov-dot-ok"])},null,2),o("div",wg,[t[41]||(t[41]=o("span",{class:"ov-svc-name"},"errors",-1)),o("span",kg,c(e.data?.errors?.last24h)+" / 24h",1)])])])])])):p("v-if",!0)])}var Eg={class:"container paper-page admin-page"},Cg={class:"q-header"},_g={class:"q-header-actions"},Sg={class:"q-range-btns"},Ng={class:"q-cards"},Dg=["aria-pressed","onKeydown","onClick"],Rg={class:"q-card-head"},Tg=["textContent"],Ag=["textContent"],Og={class:"q-card-sub"},Ig={key:0,class:"q-card-bar"},Pg={key:0,class:"q-detail"},Vg={class:"q-throughput"},qg={class:"q-section-label"},Mg={class:"q-section-right"},$g={class:"q-stats-panel"},Lg={class:"q-section-label"},Ug={class:"q-stats-grid"},Fg={class:"q-stat"},zg=["textContent"],Hg={class:"q-stat"},jg=["textContent"],Bg={class:"q-stat"},Gg=["textContent"],Wg={class:"q-stat"},Kg=["textContent"],Yg={class:"q-stat"},Jg=["textContent"],Qg={class:"q-stat"},Xg=["textContent"],Zg={class:"q-stats-actions"},xg=["disabled"],ey={class:"q-jobs"},ty={class:"q-jobs-header"},oy={class:"q-section-label"},sy={class:"q-state-filters"},ny={class:"q-state-toggle"},ry={type:"checkbox"},iy={class:"q-search-row"},ay={type:"search",class:"form-control",placeholder:"Search by job/repo id\u2026",autocomplete:"off"},ly={class:"q-auto-refresh"},dy={type:"checkbox"},uy={key:0,class:"q-table"},cy=["onClick"],py={class:"q-cell-state"},fy=["textContent"],hy=["textContent"],my={class:"q-cell-id"},vy=["textContent","href"],gy={class:"q-cell-payload"},yy=["textContent"],by={key:0,class:"q-payload-detail"},wy=["textContent"],ky=["textContent"],Ey={class:"q-cell-progress"},Cy={key:0,class:"q-progress-wrap"},_y=["textContent"],Sy={class:"q-cell-actions"},Ny=["onClick"],Dy=["onClick"],Ry={key:0,class:"q-detail-row"},Ty={colspan:"7"},Ay={class:"q-job-detail"},Oy={class:"q-job-detail-grid"},Iy={class:"q-job-detail-item"},Py={class:"q-job-detail-value"},Vy=["textContent","href"],qy={class:"q-job-detail-item"},My={class:"q-job-detail-value"},$y=["textContent"],Ly={key:0,class:"q-job-detail-item"},Uy=["textContent"],Fy={key:1,class:"q-job-detail-item"},zy=["textContent"],Hy={key:2,class:"q-job-detail-item"},jy={class:"q-job-detail-value"},By={key:3,class:"q-job-detail-item"},Gy=["textContent"],Wy={key:4,class:"q-job-detail-item"},Ky=["textContent"],Yy={key:5,class:"q-job-detail-item"},Jy=["textContent"],Qy={key:6,class:"q-job-detail-item"},Xy=["textContent"],Zy={key:7,class:"q-job-detail-item"},xy=["textContent"],eb={key:0,class:"q-job-detail-error"},tb=["textContent"],ob={key:1},sb=["textContent"],rb={class:"q-job-detail-actions"},ib=["onClick"],ab=["onClick"],lb=["href"],db={key:1,class:"paper-table-empty",style:{border:"1px solid var(--border-color)","border-radius":"10px",background:"var(--paper-card)"}},ub={key:0},cb={key:1};function ll(e,t){let n=ye("field");return l(),d("div",Eg,[t[48]||(t[48]=o("div",{class:"paper-crumbs"},[y("Admin \xA0/\xA0 "),o("span",{class:"here"},"Queues")],-1)),o("div",Cg,[t[12]||(t[12]=o("h1",{class:"paper-page-title"},"Queues",-1)),o("div",_g,[o("div",Sg,[o("button",{class:A(["btn btn-sm",{active:e.range=="1h"}]),onClick:t[0]||(t[0]=r=>e.setRange("1h"))},"1h",2),o("button",{class:A(["btn btn-sm",{active:e.range=="6h"}]),onClick:t[1]||(t[1]=r=>e.setRange("6h"))},"6h",2),o("button",{class:A(["btn btn-sm",{active:e.range=="24h"}]),onClick:t[2]||(t[2]=r=>e.setRange("24h"))},"24h",2),o("button",{class:A(["btn btn-sm",{active:e.range=="7d"}]),onClick:t[3]||(t[3]=r=>e.setRange("7d"))},"7d",2)]),o("button",{class:"btn btn-sm",onClick:t[4]||(t[4]=r=>e.pauseAll())},"Pause all"),o("button",{class:"btn btn-sm btn-dark",onClick:t[5]||(t[5]=r=>e.drainSelected())},"Drain "+c(e.selectedQueue),1)])]),t[49]||(t[49]=ce('',1)),p(" Queue overview cards "),o("div",Ng,[(l(!0),d(X,null,ae(e.queueList,(r,s)=>(l(),d("div",{class:A(["q-card",{selected:e.selectedQueue==r?.key,paused:r?.paused}]),role:"button",tabindex:"0","aria-pressed":e.selectedQueue===r.key,onKeydown:[No(he(i=>e.selectQueue(r.key),["prevent"]),["enter"]),No(he(i=>e.selectQueue(r.key),["prevent"]),["space"])],onClick:i=>e.selectQueue(r.key)},[o("div",Rg,[o("span",{class:A(["q-dot",{"q-dot-red":r?.paused||r?.counts?.failed>0}])},null,2),o("span",{class:"q-card-name",textContent:c(r?.label)},null,8,Tg)]),o("div",{class:"q-card-count",textContent:c((r?.counts?.waiting||0)+(r?.counts?.active||0)+(r?.counts?.delayed||0))},null,8,Ag),o("div",Og,[o("span",null,"waiting \xB7 "+c(r?.counts?.active||0)+" active",1),r?.counts?.active?(l(),d("div",Ig,[o("div",{class:"q-card-bar-fill",style:Me({width:r?.counts?.active/((r?.counts?.waiting||0)+(r?.counts?.active||0)+(r?.counts?.delayed||0)||1)*100+"%"})},null,4)])):p("v-if",!0)])],42,Dg))),256))]),p(" Detail: throughput chart + stats panel "),e.selectedStats?(l(),d("div",Pg,[o("div",Vg,[o("div",qg,[y(c(e.selectedQueue)+"\xB7throughput ",1),o("span",Mg,[t[13]||(t[13]=o("span",{class:"q-legend-completed"},"\u25CF",-1)),t[14]||(t[14]=y(" completed ",-1)),t[15]||(t[15]=o("span",{class:"q-legend-failed"},"\u25CF",-1)),t[16]||(t[16]=y(" failed ",-1)),t[17]||(t[17]=o("span",{class:"q-legend-exec"},"- -",-1)),y(" avg time \xB7 "+c(e.fmt?.uppercase(e.range)),1)])]),t[18]||(t[18]=o("div",{class:"q-chart-wrap"},[o("canvas",{id:"q-throughput-chart",height:"180"}),o("div",{id:"q-chart-tooltip",class:"q-chart-tooltip",style:{display:"none"}}),o("div",{id:"q-chart-crosshair",class:"q-chart-crosshair",style:{display:"none"}})],-1))]),o("div",$g,[o("div",Lg,c(e.selectedQueue)+"\xB7stats",1),o("div",Ug,[o("div",Fg,[t[19]||(t[19]=o("div",{class:"q-stat-label"},"WAITING",-1)),o("div",{class:"q-stat-value",textContent:c(e.selectedStats?.counts?.waiting||0)},null,8,zg)]),o("div",Hg,[t[20]||(t[20]=o("div",{class:"q-stat-label"},"ACTIVE",-1)),o("div",{class:"q-stat-value",textContent:c(e.selectedStats?.counts?.active||0)},null,8,jg)]),o("div",Bg,[t[21]||(t[21]=o("div",{class:"q-stat-label"},"COMPLETED (24H)",-1)),o("div",{class:"q-stat-value",textContent:c(e.fmt?.number(e.selectedStats?.completed24h))},null,8,Gg)]),o("div",Wg,[t[22]||(t[22]=o("div",{class:"q-stat-label"},"FAILED (24H)",-1)),o("div",{class:"q-stat-value",textContent:c(e.selectedStats?.failed24h||0)},null,8,Kg)]),o("div",Yg,[t[23]||(t[23]=o("div",{class:"q-stat-label"},"DELAYED",-1)),o("div",{class:"q-stat-value",textContent:c(e.selectedStats?.counts?.delayed||0)},null,8,Jg)]),o("div",Qg,[t[24]||(t[24]=o("div",{class:"q-stat-label"},"WORKERS",-1)),o("div",{class:"q-stat-value",textContent:c(e.selectedStats?.workers||0)},null,8,Xg)])]),o("div",Zg,[o("button",{class:"btn btn-sm",onClick:t[6]||(t[6]=r=>e.togglePause())},c(e.selectedStats?.paused?"Resume":"Pause"),1),o("button",{class:"btn btn-sm",onClick:t[7]||(t[7]=r=>e.retryFailed()),disabled:!e.selectedStats?.counts?.failed},"Retry failed",8,xg),o("button",{class:"btn btn-sm",onClick:t[8]||(t[8]=r=>e.emptyQueue())},"Empty")])])])):p("v-if",!0),e.actionError?(l(),d("div",{key:1,class:"q-toast-error",onClick:t[9]||(t[9]=r=>e.actionError=null)},[t[25]||(t[25]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-info"})],-1)),y(" "+c(e.actionError),1)])):p("v-if",!0),p(" Jobs table "),o("div",ey,[o("div",ty,[o("div",oy,"ALL JOBS \xB7 "+c(e.fmt?.uppercase(e.selectedQueue)),1),o("div",sy,[(l(!0),d(X,null,ae(e.allStates,(r,s)=>(l(),d("label",ny,[N(o("input",ry,null,512),[[n,{state:e.viewState,set:i=>{e.stateFilter[r]=i},value:e.stateFilter[r],form:null,options:{}}]]),o("span",{class:A("q-state-chip q-state-"+r)},c(r),3)]))),256))])]),o("div",iy,[N(o("input",ay,null,512),[[n,{state:e.viewState,set:r=>{e.query.search=r},value:e.query?.search,form:null,options:{}}]]),o("label",ly,[N(o("input",dy,null,512),[[n,{state:e.viewState,set:r=>{e.query.autoRefresh=r},value:e.query?.autoRefresh,form:null,options:{}}]]),t[26]||(t[26]=y(" Auto-refresh ",-1))]),o("button",{class:"btn btn-sm btn-icon",type:"button",title:"Refresh now",onClick:t[10]||(t[10]=r=>e.refreshNow()),"aria-label":"Refresh"},[...t[27]||(t[27]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-refresh"})],-1)])])]),e.filteredJobs().length>0?(l(),d("table",uy,[t[46]||(t[46]=o("thead",null,[o("tr",null,[o("th",null,"STATE"),o("th",null,"JOB ID"),o("th",null,"PAYLOAD"),o("th",null,"ATTEMPTS"),o("th",null,"DURATION"),o("th",null,"PROGRESS"),o("th")])],-1)),(l(!0),d(X,null,ae(e.filteredJobs(),(r,s)=>(l(),d("tbody",null,[o("tr",{style:{cursor:"pointer"},class:A({"q-row-failed":r?._state=="failed","q-row-expanded":e.expanded[r?.id]}),onClick:i=>e.toggleJob(r)},[o("td",py,[o("span",{textContent:c(r?._state),class:A("q-state-badge q-state-"+r?._state)},null,10,fy),r?._state=="delayed"&&r?.delayUntil?(l(),d("span",{key:0,class:"q-delay-hint",textContent:c(e.delayCountdown(r?.delayUntil))},null,8,hy)):p("v-if",!0)]),o("td",my,[(l(),d("svg",{class:A(["ui-icon q-chevron",{"q-chevron-open":e.expanded[r?.id]}]),"aria-hidden":"true"},[...t[28]||(t[28]=[o("use",{href:"#ui-icon-chevron-right"},null,-1)])],2)),o("a",{target:"_blank",textContent:c("job:"+e.fmt.limitTo(r?.id,6)),onClick:t[11]||(t[11]=i=>i.stopPropagation()),href:e.safeUrl("/r/"+r?.id)},null,8,vy)]),o("td",gy,[o("span",{textContent:c(r?.name||"anonymize")},null,8,yy),r?.data?.repoId&&r?.data?.repoId!==r?.name?(l(),d("span",by," \xB7 "+c(r?.data?.repoId),1)):p("v-if",!0)]),o("td",{class:"q-cell-num",textContent:c(r?.attemptsMade||1)},null,8,wy),o("td",{class:"q-cell-num",textContent:c(e.jobDuration(r))},null,8,ky),o("td",Ey,[e.jobProgressPct(r)!==null?(l(),d("div",Cy,[o("div",{class:"q-progress-bar",style:Me({"--pct":e.jobProgressPct(r)+"%"})},null,4),o("span",{class:"q-progress-label",textContent:c(e.jobProgressPct(r)+"%")},null,8,_y)])):p("v-if",!0)]),o("td",Sy,[r?._state=="failed"?(l(),d("button",{key:0,class:"btn btn-sm btn-icon",title:"Retry",onClick:i=>{e.retryJob(r),i.stopPropagation()},"aria-label":"Retry job"},[...t[29]||(t[29]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-refresh"})],-1)])],8,Ny)):p("v-if",!0),o("button",{class:"btn btn-sm btn-icon",title:"Remove","aria-label":"Remove job",onClick:i=>{e.removeJob(r),i.stopPropagation()}},[...t[30]||(t[30]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-trash"})],-1)])],8,Dy)])],10,cy),e.expanded[r?.id]?(l(),d("tr",Ry,[o("td",Ty,[o("div",Ay,[o("div",Oy,[o("div",Iy,[t[31]||(t[31]=o("span",{class:"q-job-detail-label"},"JOB ID",-1)),o("span",Py,[o("a",{target:"_blank",textContent:c(r?.id),href:e.safeUrl("/r/"+r?.id)},null,8,Vy)])]),o("div",qy,[t[32]||(t[32]=o("span",{class:"q-job-detail-label"},"STATE",-1)),o("span",My,[o("span",{textContent:c(r?._state),class:A("q-state-badge q-state-"+r?._state)},null,10,$y)])]),r?.data?.repoId?(l(),d("div",Ly,[t[33]||(t[33]=o("span",{class:"q-job-detail-label"},"REPO ID",-1)),o("span",{class:"q-job-detail-value",textContent:c(r?.data?.repoId)},null,8,Uy)])):p("v-if",!0),r?.timestamp?(l(),d("div",Fy,[t[34]||(t[34]=o("span",{class:"q-job-detail-label"},"CREATED",-1)),o("span",{class:"q-job-detail-value",textContent:c(e.humanTime(r?.timestamp))},null,8,zy)])):p("v-if",!0),r?._state=="delayed"&&r?.delayUntil?(l(),d("div",Hy,[t[35]||(t[35]=o("span",{class:"q-job-detail-label"},"RETRY AT",-1)),o("span",jy,c(e.humanTime(r?.delayUntil))+" ("+c(e.delayCountdown(r?.delayUntil))+")",1)])):p("v-if",!0),r?.processedOn?(l(),d("div",By,[t[36]||(t[36]=o("span",{class:"q-job-detail-label"},"PROCESSED",-1)),o("span",{class:"q-job-detail-value",textContent:c(e.humanTime(r?.processedOn))},null,8,Gy)])):p("v-if",!0),r?.finishedOn?(l(),d("div",Wy,[t[37]||(t[37]=o("span",{class:"q-job-detail-label"},"FINISHED",-1)),o("span",{class:"q-job-detail-value",textContent:c(e.humanTime(r?.finishedOn))},null,8,Ky)])):p("v-if",!0),r?.attemptsMade?(l(),d("div",Yy,[t[38]||(t[38]=o("span",{class:"q-job-detail-label"},"ATTEMPTS",-1)),o("span",{class:"q-job-detail-value",textContent:c(r?.attemptsMade)},null,8,Jy)])):p("v-if",!0),r?.progress&&r?.progress?.status?(l(),d("div",Qy,[t[39]||(t[39]=o("span",{class:"q-job-detail-label"},"STATUS",-1)),o("span",{class:"q-job-detail-value",textContent:c(r?.progress?.status)},null,8,Xy)])):p("v-if",!0),e.jobProgressPct(r)!==null?(l(),d("div",Zy,[t[40]||(t[40]=o("span",{class:"q-job-detail-label"},"PROGRESS",-1)),o("span",{class:"q-job-detail-value",textContent:c(e.jobProgressPct(r)+"%")},null,8,xy)])):p("v-if",!0)]),r?.failedReason?(l(),d("div",eb,[t[41]||(t[41]=o("span",{class:"q-job-detail-label"},"ERROR",-1)),o("div",{class:"q-error-reason",textContent:c(r?.failedReason)},null,8,tb)])):p("v-if",!0),r?.stacktrace?.length?(l(),d("div",ob,[t[42]||(t[42]=o("span",{class:"q-job-detail-label"},"STACKTRACE",-1)),(l(!0),d(X,null,ae(r?.stacktrace,(i,a)=>(l(),d("pre",{class:"q-error-stack",key:a},[o("code",{textContent:c(i)},null,8,sb)]))),128))])):p("v-if",!0),o("div",rb,[r?._state=="failed"?(l(),d("button",{key:0,class:"btn btn-sm",onClick:i=>e.retryJob(r)},[...t[43]||(t[43]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-refresh"})],-1),y(" Retry",-1)])],8,ib)):p("v-if",!0),o("button",{class:"btn btn-sm",onClick:i=>e.removeJob(r)},[...t[44]||(t[44]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-trash"})],-1),y(" Remove",-1)])],8,ab),o("a",{class:"btn btn-sm",target:"_blank",href:e.safeUrl("/r/"+r?.id)},[...t[45]||(t[45]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-external-link"})],-1),y(" View repo",-1)])],8,lb)])])])])):p("v-if",!0)]))),256))])):p("v-if",!0),e.filteredJobs().length==0?(l(),d("div",db,[t[47]||(t[47]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-check-circle"})],-1)),e.query?.search?p("v-if",!0):(l(),d("span",ub,"No jobs in the "+c(e.selectedQueue)+" queue.",1)),e.query?.search?(l(),d("span",cb,"No jobs match the current filters.")):p("v-if",!0)])):p("v-if",!0)])])}var pb={class:"container paper-page admin-page"},fb={class:"admin-summary"},hb={class:"summary-total"},mb={class:"summary-meta"},vb=["aria-pressed"],gb={class:"count"},yb=["aria-pressed"],bb={class:"count"},wb=["aria-pressed"],kb={class:"count"},Eb=["aria-pressed"],Cb={class:"count"},_b=["aria-pressed"],Sb={class:"count"},Nb={key:0,class:"alert alert-danger",style:{margin:"8px 0"}},Db={class:"w-100 admin-filter-toolbar","aria-label":"Repositories","accept-charset":"UTF-8"},Rb={class:"admin-filter-row"},Tb={class:"search-wrap"},Ab={type:"search",class:"form-control","aria-label":"Search repositories",placeholder:"Search repoId, source repo, error message\u2026",autocomplete:"off"},Ob={key:0,class:"admin-search-hint"},Ib={class:"admin-filter-inline"},Pb={type:"text",class:"form-control form-control-sm",placeholder:"username"},Vb={class:"admin-filter-inline"},qb={type:"text",class:"form-control form-control-sm",placeholder:"ID"},Mb={class:"admin-filter-inline","aria-label":"Pagination"},$b=["disabled"],Lb={style:{"font-family":"var(--font-mono)","font-size":"12px",color:"var(--ink-muted)"}},Ub=["disabled"],Fb={key:0,class:"admin-filter-row"},zb={class:"admin-active-chips"},Hb={class:"key"},jb=["onClick"],Bb={key:1,class:"bulk-bar"},Gb={class:"paper-table paper-table-repos has-bulk w-100",role:"table","aria-label":"Repositories"},Wb={class:"paper-table-head",role:"row"},Kb={role:"columnheader",style:{width:"28px"}},Yb=["checked"],Jb={role:"columnheader"},Qb={role:"columnheader"},Xb={role:"columnheader",class:"num"},Zb={role:"columnheader"},xb={role:"cell",style:{width:"28px"}},e1={type:"checkbox","aria-label":"Select repository"},t1={class:"cell-anon",role:"cell"},o1={class:"anon-text"},s1=["textContent","href"],n1={class:"anon-sub"},r1=["textContent","href"],i1={key:0},a1=["textContent","href"],l1={key:1},d1=["textContent","href"],u1={key:2},c1={class:"cell-status",role:"cell"},p1={class:"status-line"},f1=["textContent"],h1=["textContent","title"],m1={class:"cell-views num",role:"cell"},v1=["textContent"],g1={class:"cell-expires",role:"cell"},y1=["textContent"],b1={class:"cell-actions",role:"cell"},w1={class:"dropdown"},k1={class:"dropdown-menu dropdown-menu-right"},E1=["href"],C1=["href"],_1=["href"],S1=["onClick"],N1=["onClick"],D1=["onClick"],R1=["onClick"],T1=["onClick"],A1=["onClick"],O1={key:0,class:"paper-table-empty"},I1={class:"admin-toolbar",style:{"justify-content":"space-between","border-bottom":"none"}},P1={style:{"font-size":"12px",color:"var(--ink-muted)"}},V1={key:0,class:"pagination-compact"},q1=["disabled"],M1=["max"],$1=["disabled"],L1={class:"admin-filter-inline"},U1={class:"form-control form-control-sm"};function dl(e,t){let n=ye("field"),r=ye("form");return l(),d("div",pb,[t[69]||(t[69]=ce('
Admin \xA0/\xA0 Repositories

Repositories

',3)),o("div",fb,[o("span",hb,c(e.total>=0?e.fmt.number(e.total):"\u2026"),1),o("span",mb,c(e.fmt?.humanFileSize(e.totalSize))+" on disk",1),o("button",{type:"button",class:A(["summary-pill ok",{active:e.query?.ready}]),title:"Toggle ready filter",onClick:t[0]||(t[0]=s=>{e.query.ready=!e.query.ready,e.query.page=1}),"aria-pressed":!!e.query?.ready},[t[18]||(t[18]=y("Ready ",-1)),o("span",gb,c(e.fmt?.number(e.statusCountFor("ready"))),1)],10,vb),o("button",{type:"button",class:A(["summary-pill warn",{active:e.query?.preparing}]),title:"Toggle preparing filter",onClick:t[1]||(t[1]=s=>{e.query.preparing=!e.query.preparing,e.query.page=1}),"aria-pressed":!!e.query?.preparing},[t[19]||(t[19]=y("Preparing ",-1)),o("span",bb,c(e.fmt?.number(e.statusCountFor("preparing")+e.statusCountFor("download"))),1)],10,yb),o("button",{type:"button",class:A(["summary-pill error",{active:e.query?.error}]),title:"Toggle errored filter",onClick:t[2]||(t[2]=s=>{e.query.error=!e.query.error,e.query.page=1}),"aria-pressed":!!e.query?.error},[t[20]||(t[20]=y("Errored ",-1)),o("span",kb,c(e.fmt?.number(e.statusCountFor("error"))),1)],10,wb),o("button",{type:"button",class:A(["summary-pill",{active:e.query?.expired}]),title:"Toggle expired filter",onClick:t[3]||(t[3]=s=>{e.query.expired=!e.query.expired,e.query.page=1}),"aria-pressed":!!e.query?.expired},[t[21]||(t[21]=y("Expired ",-1)),o("span",Cb,c(e.fmt?.number(e.statusCountFor("expired")+e.statusCountFor("expiring"))),1)],10,Eb),o("button",{type:"button",class:A(["summary-pill",{active:e.query?.removed}]),title:"Toggle removed filter",onClick:t[4]||(t[4]=s=>{e.query.removed=!e.query.removed,e.query.page=1}),"aria-pressed":!!e.query?.removed},[t[22]||(t[22]=y("Removed ",-1)),o("span",Sb,c(e.fmt?.number(e.statusCountFor("removed")+e.statusCountFor("removing"))),1)],10,_b)]),e.fetchError?(l(),d("div",Nb,[t[23]||(t[23]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-warning"})],-1)),y(" "+c(e.fetchError),1)])):p("v-if",!0),N((l(),d("form",Db,[p(" Row 1: search + scoped inputs + headline actions "),o("div",Rb,[o("div",Tb,[N(o("input",Ab,null,512),[[n,{state:e.viewState,set:s=>{e.query.search=s},value:e.query?.search,form:null,options:{}}]]),e.query?.search?p("v-if",!0):(l(),d("span",Ob,"/"))]),o("span",Ib,[t[24]||(t[24]=o("label",null,"Owner",-1)),N(o("input",Pb,null,512),[[n,{state:e.viewState,set:s=>{e.query.owner=s},value:e.query?.owner,form:null,options:{}}]])]),o("span",Vb,[t[25]||(t[25]=o("label",null,"Conference",-1)),N(o("input",qb,null,512),[[n,{state:e.viewState,set:s=>{e.query.conference=s},value:e.query?.conference,form:null,options:{}}]])]),t[29]||(t[29]=o("span",{class:"admin-filter-spacer"},null,-1)),o("button",{class:"btn btn-sm",type:"button",title:"Export current view to CSV",onClick:t[5]||(t[5]=s=>e.exportCsv())},[...t[26]||(t[26]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-export"})],-1),y(" Export",-1)])]),o("span",Mb,[o("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[6]||(t[6]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1,"aria-label":"Previous page"},[...t[27]||(t[27]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-chevron-left"})],-1)])],8,$b),o("span",Lb,c(e.query?.page)+"/"+c(e.totalPage||1),1),o("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[7]||(t[7]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage,"aria-label":"Next page"},[...t[28]||(t[28]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-chevron-right"})],-1)])],8,Ub)])]),p(" Row 2: appears only when there are active filter chips "),e.chips?.length?(l(),d("div",Fb,[o("div",zb,[(l(!0),d(X,null,ae(e.chips,(s,i)=>(l(),d("span",{class:"admin-active-chip",key:s?.key},[o("span",Hb,c(s?.label),1),o("span",null,c(s?.value),1),o("button",{type:"button","aria-label":"Remove filter",onClick:a=>e.clearFilter(s.key)},[...t[30]||(t[30]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-close"})],-1)])],8,jb)]))),128))])])):p("v-if",!0)])),[[r,e.viewState]]),e.selectedCount()>0?(l(),d("div",Bb,[o("span",null,[o("strong",null,c(e.selectedCount()),1),t[31]||(t[31]=y(" selected",-1))]),o("button",{class:"btn btn-sm",type:"button",onClick:t[8]||(t[8]=s=>e.bulkRefresh())},[...t[32]||(t[32]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-refresh"})],-1),y(" Force refresh",-1)])]),o("button",{class:"btn btn-sm text-danger",type:"button",onClick:t[9]||(t[9]=s=>e.bulkRemoveCache())},[...t[33]||(t[33]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-broom"})],-1),y(" Remove cache",-1)])]),o("button",{class:"btn btn-sm",type:"button",onClick:t[10]||(t[10]=s=>e.clearSelection())},"Clear")])):p("v-if",!0),o("div",Gb,[o("div",Wb,[o("div",Kb,[o("input",{type:"checkbox","aria-label":"Select all on page",onClick:t[11]||(t[11]=s=>e.selectAllOnPage()),checked:e.allSelected},null,8,Yb)]),o("div",Jb,[o("button",{type:"button",class:A(["sortable",{active:e.query?.sort=="source.repositoryName"}]),onClick:t[12]||(t[12]=s=>e.sortBy("source.repositoryName"))},[t[35]||(t[35]=y("Repository ",-1)),e.sortIcon("source.repositoryName")?(l(),d("svg",{key:0,class:A(["ui-icon sort-direction",{ascending:e.sortIcon("source.repositoryName")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[34]||(t[34]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),o("div",Qb,[o("button",{type:"button",class:A(["sortable",{active:e.query?.sort=="status"}]),onClick:t[13]||(t[13]=s=>e.sortBy("status"))},[t[37]||(t[37]=y("Status ",-1)),e.sortIcon("status")?(l(),d("svg",{key:0,class:A(["ui-icon sort-direction",{ascending:e.sortIcon("status")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[36]||(t[36]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),o("div",Xb,[o("button",{type:"button",class:A(["sortable",{active:e.query?.sort=="pageView"}]),onClick:t[14]||(t[14]=s=>e.sortBy("pageView"))},[t[39]||(t[39]=y("Views ",-1)),e.sortIcon("pageView")?(l(),d("svg",{key:0,class:A(["ui-icon sort-direction",{ascending:e.sortIcon("pageView")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[38]||(t[38]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),o("div",Zb,[o("button",{type:"button",class:A(["sortable",{active:e.query?.sort=="anonymizeDate"}]),onClick:t[15]||(t[15]=s=>e.sortBy("anonymizeDate"))},[t[41]||(t[41]=y("Anonymized ",-1)),e.sortIcon("anonymizeDate")?(l(),d("svg",{key:0,class:A(["ui-icon sort-direction",{ascending:e.sortIcon("anonymizeDate")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[40]||(t[40]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),t[42]||(t[42]=o("div",{role:"columnheader","aria-label":"Actions"},null,-1))]),(l(!0),d(X,null,ae(e.filteredRepositories,(s,i)=>(l(),d("div",{class:A(["paper-table-row",{"repo-inactive":s?.status=="expired"||s?.status=="removed","repo-error":s?.status=="error","row-selected":e.selected[s?.repoId]}]),role:"row"},[o("div",xb,[N(o("input",e1,null,512),[[n,{state:e.viewState,set:a=>{e.selected[s.repoId]=a},value:e.selected[s?.repoId],form:null,options:{}}]])]),o("div",t1,[t[47]||(t[47]=o("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Repository"},[o("use",{href:"#project-type-repo"})],-1)),o("div",o1,[o("a",{class:"repo-name",target:"_blank",textContent:c(s?.repoId),href:e.safeUrl("/r/"+s?.repoId)},null,8,s1),o("div",n1,[o("a",{textContent:c(s?.source?.repositoryName),href:e.safeUrl("https://github.com/"+s?.source?.repositoryName+"/")},null,8,r1),s?.options?.update?(l(),d("span",i1,[t[43]||(t[43]=y("\xA0\xB7\xA0",-1)),o("a",{textContent:c(s?.source?.branch),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.branch)},null,8,a1)])):p("v-if",!0),s?.options?.update?p("v-if",!0):(l(),d("span",l1,[t[44]||(t[44]=y("\xA0\xB7\xA0@",-1)),o("a",{textContent:c(s?.source?.commit?.substring(0,8)),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.commit)},null,8,d1)])),s?.conference?(l(),d("span",u1,[t[45]||(t[45]=y("\xA0\xB7\xA0",-1)),t[46]||(t[46]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-conference"})],-1)),y(" "+c(s?.conference),1)])):p("v-if",!0),o("span",null,"\xA0\xB7\xA0"+c(e.fmt?.humanFileSize(s?.size?.storage)),1),o("span",null,"\xA0\xB7\xA0"+c(e.fmt?.number(s?.options?.terms?.length))+" terms",1)])])]),o("div",c1,[o("span",p1,[o("span",{class:A(["status-dot",{"status-removed":s?.status=="removed"||s?.status=="expired","status-ready":s?.status=="ready","status-error":s?.status=="error","status-preparing":s?.status=="preparing"}])},null,2),o("span",{textContent:c(e.fmt?.title(s?.status))},null,8,f1)]),s?.statusMessage?(l(),d("span",{key:0,class:"status-sub",textContent:c(e.fmt?.statusMsg(s?.statusMessage)),title:s?.statusMessage},null,8,h1)):p("v-if",!0)]),o("div",m1,[t[48]||(t[48]=o("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-eye"})],-1)),t[49]||(t[49]=y()),o("span",{textContent:c(e.fmt?.number(s?.pageView||0))},null,8,v1)]),o("div",g1,[t[50]||(t[50]=o("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-clock"})],-1)),t[51]||(t[51]=y()),o("span",{textContent:c(e.fmt?.humanTime(s?.anonymizeDate))},null,8,y1)]),o("div",b1,[o("div",w1,[t[63]||(t[63]=o("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions"},[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-more"})])],-1)),o("div",k1,[o("a",{class:"dropdown-item",href:e.safeUrl("/anonymize/"+s?.repoId)},[...t[52]||(t[52]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-edit"})],-1),y(" Edit",-1)])],8,E1),o("a",{class:"dropdown-item",href:e.safeUrl("/r/"+s?.repoId+"/")},[...t[53]||(t[53]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-eye"})],-1),y(" View repo",-1)])],8,C1),s?.options?.page&&s?.status=="ready"?(l(),d("a",{key:0,class:"dropdown-item",target:"_self",href:e.safeUrl("/w/"+s?.repoId+"/")},[...t[54]||(t[54]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-globe"})],-1),y(" View page",-1)])],8,_1)):p("v-if",!0),o("a",{class:"dropdown-item",href:"#",onClick:he(a=>e.fetchGithubInfo(s),["prevent"])},[...t[55]||(t[55]=[o("i",{class:"fab fa-github"},null,-1),y(" Live GitHub info",-1)])],8,S1),t[61]||(t[61]=o("div",{class:"dropdown-divider"},null,-1)),N(o("a",{class:"dropdown-item",href:"#",onClick:he(a=>e.updateRepository(s),["prevent"])},[...t[56]||(t[56]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-refresh"})],-1),y(" Force update",-1)])],8,N1),[[Y,s?.status=="ready"||s?.status=="error"]]),N(o("a",{class:"dropdown-item",href:"#",onClick:he(a=>e.updateRepository(s),["prevent"])},[...t[57]||(t[57]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-check-circle"})],-1),y(" Enable",-1)])],8,D1),[[Y,s?.status=="removed"]]),N(o("a",{class:"dropdown-item",href:"#",onClick:he(a=>e.showStatusMessage(s),["prevent"])},[...t[58]||(t[58]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-warning"})],-1),y(" View status message",-1)])],8,R1),[[Y,s?.statusMessage]]),t[62]||(t[62]=o("div",{class:"dropdown-divider"},null,-1)),o("a",{class:"dropdown-item",href:"#",onClick:he(a=>e.removeCache(s),["prevent"])},[...t[59]||(t[59]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-broom"})],-1),y(" Remove cache",-1)])],8,T1),N(o("a",{class:"dropdown-item text-danger",href:"#",onClick:he(a=>e.removeRepository(s),["prevent"])},[...t[60]||(t[60]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-trash"})],-1),y(" Remove",-1)])],8,A1),[[Y,s?.status=="ready"]])])])])],2))),256)),e.filteredRepositories?.length==0?(l(),d("div",O1,[...t[64]||(t[64]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-inbox"})],-1),o("span",null,"No repositories match the current filters.",-1)])])):p("v-if",!0)]),o("div",I1,[o("span",P1,c(e.fmt?.number(e.total))+" results",1),e.totalPage>1?(l(),d("div",V1,[o("button",{class:"btn btn-sm",onClick:t[16]||(t[16]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1},[...t[65]||(t[65]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-chevron-left"})],-1),y(" Previous ",-1)])],8,q1),N(o("input",{type:"number",class:"form-control form-control-sm",min:"1",style:{width:"56px"},"aria-label":"Page",max:e.totalPage},null,8,M1),[[n,{state:e.viewState,set:s=>{e.query.page=s},value:e.query?.page,form:null,options:{}}]]),o("span",null,"of "+c(e.totalPage),1),o("button",{class:"btn btn-sm",onClick:t[17]||(t[17]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage},[...t[66]||(t[66]=[y(" Next ",-1),o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-chevron-right"})],-1)])],8,$1)])):p("v-if",!0),o("span",L1,[t[68]||(t[68]=o("label",null,"Per page",-1)),N((l(),d("select",U1,[...t[67]||(t[67]=[ce('',5)])])),[[n,{state:e.viewState,set:s=>{e.query.limit=s},value:e.query?.limit,form:null,options:{}}]])])])])}var F1={class:"container paper-page admin-page"},z1={class:"paper-crumbs"},H1={class:"here"},j1={class:"paper-page-title"},B1={key:0,class:"user-detail-card"},G1={class:"user-header"},W1=["src"],K1={class:"status-dot-wrap"},Y1=["textContent"],J1={key:0,class:"type-badge type-repo"},Q1={class:"user-actions",style:{"margin-top":"4px"}},X1={class:"user-detail-grid"},Z1={class:"detail-value"},x1={class:"detail-value"},ew={class:"detail-value",style:{"font-family":"var(--font-mono)","font-size":"0.85rem"}},tw={class:"detail-value"},ow=["href"],sw={class:"detail-value"},nw={class:"detail-value"},rw={key:0},iw={key:1,class:"text-muted"},aw={class:"detail-value"},lw={key:0,style:{"margin-top":"20px"}},dw={class:"paper-table w-100",style:{"margin-top":"10px"}},uw={class:"paper-table-row",style:{"grid-template-columns":"1fr 160px"}},cw={class:"cell-anon",role:"cell"},pw={class:"anon-text"},fw=["textContent"],hw={class:"cell-expires",role:"cell"},mw={key:1,class:"admin-section-header"},vw={class:"section-count"},gw={key:2,class:"user-detail-card"},yw={type:"text",class:"form-control",placeholder:"Token name (e.g. dev-laptop)",required:""},bw={key:0,class:"alert alert-warning",role:"alert"},ww={style:{"white-space":"pre-wrap","word-break":"break-all",margin:"8px 0 0","font-family":"var(--font-mono)","font-size":"0.85rem"}},kw={key:1,class:"paper-table w-100"},Ew={class:"paper-table-row",role:"row",style:{"grid-template-columns":"1fr 200px 200px 80px"}},Cw=["textContent"],_w=["textContent"],Sw={role:"cell"},Nw={key:0},Dw={key:1,class:"text-muted"},Rw={role:"cell"},Tw=["onClick"],Aw={key:2,class:"paper-table-empty"},Ow={class:"admin-section-header"},Iw={class:"section-count"},Pw={class:"admin-summary"},Vw={class:"summary-total"},qw=["aria-pressed"],Mw={class:"count"},$w=["aria-pressed"],Lw={class:"count"},Uw=["aria-pressed"],Fw={class:"count"},zw=["aria-pressed"],Hw={class:"count"},jw=["aria-pressed"],Bw={class:"count"},Gw={class:"w-100 admin-filter-toolbar","aria-label":"Repositories","accept-charset":"UTF-8"},Ww={class:"admin-filter-row"},Kw={class:"search-wrap"},Yw={type:"search",class:"form-control","aria-label":"Search repositories",placeholder:"Search repoId, source repo, error message\u2026",autocomplete:"off"},Jw={key:3,class:"bulk-bar"},Qw={class:"paper-table paper-table-repos has-bulk w-100",role:"table","aria-label":"Repositories"},Xw={class:"paper-table-head",role:"row"},Zw={role:"columnheader",style:{width:"28px"}},xw=["checked"],ek={role:"columnheader"},tk={role:"columnheader"},ok={role:"columnheader",class:"num"},sk={role:"columnheader"},nk={role:"cell",style:{width:"28px"}},rk={type:"checkbox","aria-label":"Select repository"},ik={class:"cell-anon",role:"cell"},ak={class:"anon-text"},lk=["textContent","href"],dk={class:"anon-sub"},uk=["textContent","href"],ck={key:0},pk=["textContent","href"],fk={key:1},hk=["textContent","href"],mk={key:2},vk={class:"cell-status",role:"cell"},gk={class:"status-line"},yk=["textContent"],bk=["textContent","title"],wk=["textContent"],kk=["textContent"],Ek={class:"cell-actions",role:"cell"},Ck={class:"dropdown"},_k={class:"dropdown-menu dropdown-menu-right"},Sk=["href"],Nk=["href"],Dk=["href"],Rk=["onClick"],Tk=["onClick"],Ak=["onClick"],Ok=["onClick"],Ik=["onClick"],Pk=["onClick"],Vk={key:0,class:"paper-table-empty"};function ul(e,t){let n=ye("field"),r=ye("form");return l(),d("div",F1,[o("div",z1,[t[22]||(t[22]=o("a",{href:"/admin/users"},"Users",-1)),t[23]||(t[23]=y(" \xA0/\xA0 ",-1)),o("span",H1,c(e.userInfo?.username||"Profile"),1)]),o("h1",j1,c(e.userInfo?.username||"User"),1),t[85]||(t[85]=ce('',1)),e.userInfo?(l(),d("div",B1,[o("div",G1,[e.userInfo?.photo?(l(),d("img",{key:0,width:"56",height:"56",src:e.safeUrl(e.userInfo?.photo)},null,8,W1)):p("v-if",!0),o("div",null,[o("h2",null,[y(c(e.userInfo?.username)+" ",1),o("span",K1,[o("span",{class:A(["status-dot",{"status-ready":e.userInfo?.status=="active","status-removed":e.userInfo?.status!="active"}])},null,2),o("span",{textContent:c(e.fmt?.title(e.userInfo?.status))},null,8,Y1)]),e.userInfo?.isAdmin?(l(),d("span",J1,"Admin")):p("v-if",!0)]),o("div",Q1,[e.userInfo?.status!=="banned"?(l(),d("button",{key:0,class:"btn btn-sm text-danger",onClick:t[0]||(t[0]=s=>e.banUser())},[...t[24]||(t[24]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-ban"})],-1),y(" Ban",-1)])])):p("v-if",!0),e.userInfo?.status==="banned"||e.userInfo?.status==="removed"?(l(),d("button",{key:1,class:"btn btn-sm",onClick:t[1]||(t[1]=s=>e.activateUser())},[...t[25]||(t[25]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-check-circle"})],-1),y(" Activate",-1)])])):p("v-if",!0),e.userInfo?.isAdmin?p("v-if",!0):(l(),d("button",{key:2,class:"btn btn-sm",onClick:t[2]||(t[2]=s=>e.promoteUser())},[...t[26]||(t[26]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-user-shield"})],-1),y(" Promote to admin",-1)])])),e.userInfo?.isAdmin?(l(),d("button",{key:3,class:"btn btn-sm text-danger",onClick:t[3]||(t[3]=s=>e.demoteUser())},[...t[27]||(t[27]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-user-minus"})],-1),y(" Remove admin",-1)])])):p("v-if",!0)])])]),o("div",X1,[t[30]||(t[30]=o("div",{class:"detail-label"},"ID",-1)),o("div",Z1,c(e.userInfo?._id),1),t[31]||(t[31]=o("div",{class:"detail-label"},"Email",-1)),o("div",x1,c(e.userInfo?.emails?.[0]?.email),1),t[32]||(t[32]=o("div",{class:"detail-label"},"Access token",-1)),o("div",ew,c(e.userInfo?.accessTokens?.github),1),t[33]||(t[33]=o("div",{class:"detail-label"},"GitHub",-1)),o("div",tw,[o("a",{target:"_blank",href:e.safeUrl("https://github.com/"+e.userInfo?.username)},[t[28]||(t[28]=o("i",{class:"fab fa-github"},null,-1)),y(" "+c(e.userInfo?.username),1)],8,ow)]),t[34]||(t[34]=o("div",{class:"detail-label"},"Created",-1)),o("div",sw,c(e.fmt?.humanTime(e.userInfo?.dateOfEntry)),1),t[35]||(t[35]=o("div",{class:"detail-label"},"Last connection",-1)),o("div",nw,[e.userInfo?.accessTokenDates?.github?(l(),d("span",rw,c(e.fmt?.humanTime(e.userInfo?.accessTokenDates?.github)),1)):p("v-if",!0),e.userInfo?.accessTokenDates?.github?p("v-if",!0):(l(),d("span",iw,"never"))]),t[36]||(t[36]=o("div",{class:"detail-label"},"GitHub repos",-1)),o("div",aw,[y(c(e.userInfo?.repositories?.length)+" repositories ",1),o("button",{class:"btn btn-sm ml-2",onClick:t[4]||(t[4]=s=>e.showRepos=!e.showRepos)},c(e.showRepos?"Hide":"Show"),1),o("button",{class:"btn btn-sm ml-1",onClick:t[5]||(t[5]=s=>e.getGitHubRepositories())},[...t[29]||(t[29]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-refresh"})],-1),y(" Refresh ",-1)])])])]),e.showRepos?(l(),d("div",lw,[t[39]||(t[39]=o("div",{class:"paper-section-eyebrow"},"GitHub repositories",-1)),o("div",dw,[(l(!0),d(X,null,ae(e.userInfo?.repositories,(s,i)=>(l(),d("div",uw,[o("div",cw,[t[37]||(t[37]=o("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Repository"},[o("use",{href:"#project-type-repo"})],-1)),o("div",pw,[o("span",{class:"repo-name",textContent:c(s?.name)},null,8,fw)])]),o("div",hw,[t[38]||(t[38]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-database"})],-1)),y(" "+c(e.fmt?.humanFileSize(s?.size)),1)])]))),256))])])):p("v-if",!0)])):p("v-if",!0),e.userInfo&&e.userInfo?.isAdmin&&e.user&&e.user?.username==e.userInfo?.username?(l(),d("div",mw,[t[40]||(t[40]=o("h2",null,[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-key"})]),y(" API tokens")],-1)),o("span",vw,c(e.tokens?.length),1)])):p("v-if",!0),e.userInfo&&e.userInfo?.isAdmin&&e.user&&e.user?.username==e.userInfo?.username?(l(),d("div",gw,[t[46]||(t[46]=o("p",{class:"paper-page-lede"},[y("Personal API tokens for this admin account. Send as "),o("code",null,"Authorization: Bearer "),y(" to authenticate without GitHub OAuth (useful for development).")],-1)),N((l(),d("form",{class:"d-flex",style:{gap:"8px","margin-bottom":"12px"},onSubmit:t[6]||(t[6]=he(s=>e.submitForm(s,()=>{e.createToken()}),["prevent"]))},[N(o("input",yw,null,512),[[n,{state:e.viewState,set:s=>{e.tokenForm.name=s},value:e.tokenForm?.name,form:null,options:{}}]]),t[41]||(t[41]=o("button",{type:"submit",class:"btn btn-primary"},[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-plus"})]),y(" Generate")],-1))],32)),[[r,e.viewState]]),e.tokenForm?.plaintext?(l(),d("div",bw,[t[42]||(t[42]=o("strong",null,"Copy this token now \u2014 it will not be shown again:",-1)),o("pre",ww,c(e.tokenForm?.plaintext),1),o("button",{class:"btn btn-sm",onClick:t[7]||(t[7]=s=>e.tokenForm.plaintext=null)},"Dismiss")])):p("v-if",!0),e.tokens?.length?(l(),d("div",kw,[t[44]||(t[44]=o("div",{class:"paper-table-head",role:"row",style:{"grid-template-columns":"1fr 200px 200px 80px"}},[o("div",{role:"columnheader"},"Name"),o("div",{role:"columnheader"},"Created"),o("div",{role:"columnheader"},"Last used"),o("div",{role:"columnheader","aria-label":"Actions"})],-1)),(l(!0),d(X,null,ae(e.tokens,(s,i)=>(l(),d("div",Ew,[o("div",{role:"cell",textContent:c(s?.name)},null,8,Cw),o("div",{role:"cell",textContent:c(e.fmt?.humanTime(s?.createdAt))},null,8,_w),o("div",Sw,[s?.lastUsedAt?(l(),d("span",Nw,c(e.fmt?.humanTime(s?.lastUsedAt)),1)):p("v-if",!0),s?.lastUsedAt?p("v-if",!0):(l(),d("span",Dw,"never"))]),o("div",Rw,[o("button",{class:"btn btn-sm text-danger btn-icon",title:"Revoke","aria-label":"Revoke token",onClick:a=>e.revokeToken(s)},[...t[43]||(t[43]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-trash"})],-1)])],8,Tw)])]))),256))])):p("v-if",!0),e.tokens?.length?p("v-if",!0):(l(),d("div",Aw,[...t[45]||(t[45]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-inbox"})],-1),o("span",null,"No tokens yet.",-1)])]))])):p("v-if",!0),o("div",Ow,[t[47]||(t[47]=o("h2",null,[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-type-repo"})]),y(" Anonymized repositories")],-1)),o("span",Iw,c(e.repositories?.length),1)]),o("div",Pw,[o("span",Vw,c(e.fmt?.number(e.repositories?.length)),1),o("button",{type:"button",class:A(["summary-pill ok",{active:e.filters?.status?.ready===!1}]),title:"Toggle ready filter",onClick:t[8]||(t[8]=s=>e.filters.status.ready=!e.filters.status.ready),"aria-pressed":e.filters?.status?.ready===!1},[t[48]||(t[48]=y("Ready ",-1)),o("span",Mw,c(e.fmt?.number(e.statusCountFor("ready"))),1)],10,qw),o("button",{type:"button",class:A(["summary-pill warn",{active:e.filters?.status?.preparing===!1}]),title:"Toggle preparing filter",onClick:t[9]||(t[9]=s=>e.filters.status.preparing=!e.filters.status.preparing),"aria-pressed":e.filters?.status?.preparing===!1},[t[49]||(t[49]=y("Preparing ",-1)),o("span",Lw,c(e.fmt?.number(e.statusCountFor("preparing"))),1)],10,$w),o("button",{type:"button",class:A(["summary-pill error",{active:e.filters?.status?.error===!1}]),title:"Toggle errored filter",onClick:t[10]||(t[10]=s=>e.filters.status.error=!e.filters.status.error),"aria-pressed":e.filters?.status?.error===!1},[t[50]||(t[50]=y("Errored ",-1)),o("span",Fw,c(e.fmt?.number(e.statusCountFor("error"))),1)],10,Uw),o("button",{type:"button",class:A(["summary-pill",{active:e.filters?.status?.expired===!1}]),title:"Toggle expired filter",onClick:t[11]||(t[11]=s=>e.filters.status.expired=!e.filters.status.expired),"aria-pressed":e.filters?.status?.expired===!1},[t[51]||(t[51]=y("Expired ",-1)),o("span",Hw,c(e.fmt?.number(e.statusCountFor("expired"))),1)],10,zw),o("button",{type:"button",class:A(["summary-pill",{active:e.filters?.status?.removed===!1}]),title:"Toggle removed filter",onClick:t[12]||(t[12]=s=>e.filters.status.removed=!e.filters.status.removed),"aria-pressed":e.filters?.status?.removed===!1},[t[52]||(t[52]=y("Removed ",-1)),o("span",Bw,c(e.fmt?.number(e.statusCountFor("removed"))),1)],10,jw)]),N((l(),d("form",Gw,[o("div",Ww,[o("div",Kw,[N(o("input",Yw,null,512),[[n,{state:e.viewState,set:s=>{e.search=s},value:e.search,form:null,options:{}}]])]),t[54]||(t[54]=o("span",{class:"admin-filter-spacer"},null,-1)),o("button",{class:"btn btn-sm",type:"button",title:"Export current view to CSV",onClick:t[13]||(t[13]=s=>e.exportCsv())},[...t[53]||(t[53]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-export"})],-1),y(" Export",-1)])])])])),[[r,e.viewState]]),e.selectedCount()>0?(l(),d("div",Jw,[o("span",null,[o("strong",null,c(e.selectedCount()),1),t[55]||(t[55]=y(" selected",-1))]),o("button",{class:"btn btn-sm",type:"button",onClick:t[14]||(t[14]=s=>e.bulkRefresh())},[...t[56]||(t[56]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-refresh"})],-1),y(" Force refresh",-1)])]),o("button",{class:"btn btn-sm text-danger",type:"button",onClick:t[15]||(t[15]=s=>e.bulkRemoveCache())},[...t[57]||(t[57]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-broom"})],-1),y(" Remove cache",-1)])]),o("button",{class:"btn btn-sm",type:"button",onClick:t[16]||(t[16]=s=>e.clearSelection())},"Clear")])):p("v-if",!0),o("div",Qw,[o("div",Xw,[o("div",Zw,[o("input",{type:"checkbox","aria-label":"Select all on page",onClick:t[17]||(t[17]=s=>e.selectAllOnPage()),checked:e.allSelected},null,8,xw)]),o("div",ek,[o("button",{type:"button",class:A(["sortable",{active:e.query?.sort=="source.repositoryName"}]),onClick:t[18]||(t[18]=s=>e.sortBy("source.repositoryName"))},[t[59]||(t[59]=y("Repository ",-1)),e.sortIcon("source.repositoryName")?(l(),d("svg",{key:0,class:A(["ui-icon sort-direction",{ascending:e.sortIcon("source.repositoryName")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[58]||(t[58]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),o("div",tk,[o("button",{type:"button",class:A(["sortable",{active:e.query?.sort=="status"}]),onClick:t[19]||(t[19]=s=>e.sortBy("status"))},[t[61]||(t[61]=y("Status ",-1)),e.sortIcon("status")?(l(),d("svg",{key:0,class:A(["ui-icon sort-direction",{ascending:e.sortIcon("status")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[60]||(t[60]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),o("div",ok,[o("button",{type:"button",class:A(["sortable",{active:e.query?.sort=="pageView"}]),onClick:t[20]||(t[20]=s=>e.sortBy("pageView"))},[t[63]||(t[63]=y("Views ",-1)),e.sortIcon("pageView")?(l(),d("svg",{key:0,class:A(["ui-icon sort-direction",{ascending:e.sortIcon("pageView")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[62]||(t[62]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),o("div",sk,[o("button",{type:"button",class:A(["sortable",{active:e.query?.sort=="anonymizeDate"}]),onClick:t[21]||(t[21]=s=>e.sortBy("anonymizeDate"))},[t[65]||(t[65]=y("Anonymized ",-1)),e.sortIcon("anonymizeDate")?(l(),d("svg",{key:0,class:A(["ui-icon sort-direction",{ascending:e.sortIcon("anonymizeDate")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[64]||(t[64]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),t[66]||(t[66]=o("div",{role:"columnheader","aria-label":"Actions"},null,-1))]),(l(!0),d(X,null,ae(e.filteredRepositories,(s,i)=>(l(),d("div",{class:A(["paper-table-row",{"repo-inactive":s?.status=="expired"||s?.status=="removed","repo-error":s?.status=="error","row-selected":e.selected[s?.repoId]}]),role:"row"},[o("div",nk,[N(o("input",rk,null,512),[[n,{state:e.viewState,set:a=>{e.selected[s.repoId]=a},value:e.selected[s?.repoId],form:null,options:{}}]])]),o("div",ik,[t[71]||(t[71]=o("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Repository"},[o("use",{href:"#project-type-repo"})],-1)),o("div",ak,[o("a",{class:"repo-name",target:"_blank",textContent:c(s?.repoId),href:e.safeUrl("/r/"+s?.repoId)},null,8,lk),o("div",dk,[o("a",{textContent:c(s?.source?.fullName),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/")},null,8,uk),s?.options?.update?(l(),d("span",ck,[t[67]||(t[67]=y("\xA0\xB7\xA0",-1)),o("a",{textContent:c(s?.source?.branch),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.branch)},null,8,pk)])):p("v-if",!0),s?.options?.update?p("v-if",!0):(l(),d("span",fk,[t[68]||(t[68]=y("\xA0\xB7\xA0@",-1)),o("a",{textContent:c(s?.source?.commit?.substring(0,8)),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.commit)},null,8,hk)])),s?.conference?(l(),d("span",mk,[t[69]||(t[69]=y("\xA0\xB7\xA0",-1)),t[70]||(t[70]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-conference"})],-1)),y(" "+c(s?.conference),1)])):p("v-if",!0),o("span",null,"\xA0\xB7\xA0"+c(e.fmt?.humanFileSize(s?.size?.storage)),1),o("span",null,"\xA0\xB7\xA0"+c(e.fmt?.number(s?.options?.terms?.length))+" terms",1)])])]),o("div",vk,[o("span",gk,[o("span",{class:A(["status-dot",{"status-removed":s?.status=="removed"||s?.status=="expired","status-ready":s?.status=="ready","status-error":s?.status=="error","status-preparing":s?.status=="preparing"}])},null,2),o("span",{textContent:c(e.fmt?.title(s?.status))},null,8,yk)]),s?.statusMessage?(l(),d("span",{key:0,class:"status-sub",textContent:c(e.fmt?.statusMsg(s?.statusMessage)),title:s?.statusMessage},null,8,bk)):p("v-if",!0)]),o("div",{class:"cell-views num",role:"cell",textContent:c(e.fmt?.number(s?.pageView||0))},null,8,wk),o("div",{class:"cell-expires",role:"cell",textContent:c(e.fmt?.humanTime(s?.anonymizeDate))},null,8,kk),o("div",Ek,[o("div",Ck,[t[83]||(t[83]=o("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions"},[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-more"})])],-1)),o("div",_k,[o("a",{class:"dropdown-item",href:e.safeUrl("/anonymize/"+s?.repoId)},[...t[72]||(t[72]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-edit"})],-1),y(" Edit",-1)])],8,Sk),o("a",{class:"dropdown-item",href:e.safeUrl("/r/"+s?.repoId+"/")},[...t[73]||(t[73]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-eye"})],-1),y(" View repo",-1)])],8,Nk),s?.options?.page&&s?.status=="ready"?(l(),d("a",{key:0,class:"dropdown-item",target:"_self",href:e.safeUrl("/w/"+s?.repoId+"/")},[...t[74]||(t[74]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-globe"})],-1),y(" View page",-1)])],8,Dk)):p("v-if",!0),o("a",{class:"dropdown-item",href:"#",onClick:he(a=>e.fetchGithubInfo(s),["prevent"])},[...t[75]||(t[75]=[o("i",{class:"fab fa-github"},null,-1),y(" Live GitHub info",-1)])],8,Rk),t[81]||(t[81]=o("div",{class:"dropdown-divider"},null,-1)),N(o("a",{class:"dropdown-item",href:"#",onClick:he(a=>e.updateRepository(s),["prevent"])},[...t[76]||(t[76]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-refresh"})],-1),y(" Force update",-1)])],8,Tk),[[Y,s?.status=="ready"||s?.status=="error"]]),N(o("a",{class:"dropdown-item",href:"#",onClick:he(a=>e.updateRepository(s),["prevent"])},[...t[77]||(t[77]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-check-circle"})],-1),y(" Enable",-1)])],8,Ak),[[Y,s?.status=="removed"]]),N(o("a",{class:"dropdown-item",href:"#",onClick:he(a=>e.showStatusMessage(s),["prevent"])},[...t[78]||(t[78]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-warning"})],-1),y(" View status message",-1)])],8,Ok),[[Y,s?.statusMessage]]),t[82]||(t[82]=o("div",{class:"dropdown-divider"},null,-1)),o("a",{class:"dropdown-item",href:"#",onClick:he(a=>e.removeCache(s),["prevent"])},[...t[79]||(t[79]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-broom"})],-1),y(" Remove cache",-1)])],8,Ik),N(o("a",{class:"dropdown-item text-danger",href:"#",onClick:he(a=>e.removeRepository(s),["prevent"])},[...t[80]||(t[80]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-trash"})],-1),y(" Remove",-1)])],8,Pk),[[Y,s?.status=="ready"]])])])])],2))),256)),e.filteredRepositories?.length==0?(l(),d("div",Vk,[...t[84]||(t[84]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-inbox"})],-1),o("span",null,"No repositories match the current filters.",-1)])])):p("v-if",!0)])])}var qk={class:"container paper-page admin-page"},Mk={class:"admin-summary"},$k={class:"summary-total"},Lk=["aria-pressed"],Uk={class:"count"},Fk=["aria-pressed"],zk={class:"count"},Hk=["aria-pressed"],jk={class:"count"},Bk={key:0,class:"alert alert-danger",style:{margin:"8px 0"}},Gk={class:"w-100 admin-filter-toolbar","aria-label":"Users","accept-charset":"UTF-8"},Wk={class:"admin-filter-row"},Kk={class:"search-wrap"},Yk={type:"search",class:"form-control","aria-label":"Search users",placeholder:"Search username or email\u2026",autocomplete:"off"},Jk={key:0,class:"admin-search-hint"},Qk={class:"admin-filter-inline"},Xk={class:"form-control form-control-sm"},Zk={class:"admin-filter-inline","aria-label":"Pagination"},xk=["disabled"],e0={style:{"font-family":"var(--font-mono)","font-size":"12px",color:"var(--ink-muted)"}},t0=["disabled"],o0={key:0,class:"admin-filter-row"},s0={class:"admin-active-chips"},n0={class:"key"},r0=["onClick"],i0={key:1,class:"bulk-bar"},a0={class:"paper-table w-100",role:"table","aria-label":"Users",style:{"--cols":"28px minmax(280px, 2.4fr) 100px 140px 140px 52px"}},l0={class:"paper-table-head admin-users-row",role:"row"},d0={role:"columnheader",style:{width:"28px"}},u0=["checked"],c0={role:"columnheader"},p0={role:"columnheader"},f0={role:"cell",style:{width:"28px"}},h0={type:"checkbox","aria-label":"Select user"},m0={class:"cell-anon",role:"cell"},v0=["src"],g0={class:"anon-text"},y0=["textContent","href"],b0={class:"anon-sub"},w0={key:0},k0={key:1},E0=["href"],C0={key:2},_0={class:"cell-views num",role:"cell"},S0=["textContent","href"],N0={class:"cell-status",role:"cell"},D0=["textContent"],R0={class:"cell-status",role:"cell"},T0={key:0,class:"type-badge type-repo"},A0={key:1,class:"empty-dash"},O0={class:"cell-actions",role:"cell"},I0={class:"dropdown"},P0={class:"dropdown-menu dropdown-menu-right"},V0=["href"],q0=["href"],M0=["onClick"],$0=["onClick"],L0={key:0,class:"paper-table-empty"},U0={class:"admin-toolbar",style:{"justify-content":"space-between","border-bottom":"none"}},F0={style:{"font-size":"12px",color:"var(--ink-muted)"}},z0={key:0,class:"pagination-compact"},H0=["disabled"],j0=["max"],B0=["disabled"],G0={class:"admin-filter-inline"},W0={class:"form-control form-control-sm"};function cl(e,t){let n=ye("field"),r=ye("form");return l(),d("div",qk,[t[46]||(t[46]=ce('
Admin \xA0/\xA0 Users

Users

',3)),o("div",Mk,[o("span",$k,c(e.total>=0?e.fmt.number(e.total):"\u2026"),1),o("button",{type:"button",class:A(["summary-pill ok",{active:e.query?.status=="active"}]),onClick:t[0]||(t[0]=s=>{e.query.status=e.query.status=="active"?"":"active",e.query.page=1}),"aria-pressed":e.query?.status=="active"},[t[13]||(t[13]=y("Active ",-1)),o("span",Uk,c(e.fmt?.number(e.statusCountFor("active"))),1)],10,Lk),o("button",{type:"button",class:A(["summary-pill error",{active:e.query?.status=="banned"}]),onClick:t[1]||(t[1]=s=>{e.query.status=e.query.status=="banned"?"":"banned",e.query.page=1}),"aria-pressed":e.query?.status=="banned"},[t[14]||(t[14]=y("Banned ",-1)),o("span",zk,c(e.fmt?.number(e.statusCountFor("banned"))),1)],10,Fk),o("button",{type:"button",class:A(["summary-pill",{active:e.query?.status=="removed"}]),onClick:t[2]||(t[2]=s=>{e.query.status=e.query.status=="removed"?"":"removed",e.query.page=1}),"aria-pressed":e.query?.status=="removed"},[t[15]||(t[15]=y("Removed ",-1)),o("span",jk,c(e.fmt?.number(e.statusCountFor("removed"))),1)],10,Hk)]),e.fetchError?(l(),d("div",Bk,[t[16]||(t[16]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-warning"})],-1)),y(" "+c(e.fetchError),1)])):p("v-if",!0),N((l(),d("form",Gk,[o("div",Wk,[o("div",Kk,[N(o("input",Yk,null,512),[[n,{state:e.viewState,set:s=>{e.query.search=s},value:e.query?.search,form:null,options:{}}]]),e.query?.search?p("v-if",!0):(l(),d("span",Jk,"/"))]),o("span",Qk,[t[18]||(t[18]=o("label",null,"Role",-1)),N((l(),d("select",Xk,[...t[17]||(t[17]=[o("option",{value:""},"Any",-1),o("option",{value:"admin"},"Admin",-1)])])),[[n,{state:e.viewState,set:s=>{e.query.role=s},value:e.query?.role,form:null,options:{}}]])]),t[22]||(t[22]=o("span",{class:"admin-filter-spacer"},null,-1)),o("button",{class:"btn btn-sm",type:"button",onClick:t[3]||(t[3]=s=>e.exportCsv())},[...t[19]||(t[19]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-export"})],-1),y(" Export",-1)])]),o("span",Zk,[o("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[4]||(t[4]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1,"aria-label":"Previous page"},[...t[20]||(t[20]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-chevron-left"})],-1)])],8,xk),o("span",e0,c(e.query?.page)+"/"+c(e.totalPage||1),1),o("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[5]||(t[5]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage,"aria-label":"Next page"},[...t[21]||(t[21]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-chevron-right"})],-1)])],8,t0)])]),e.chips?.length?(l(),d("div",o0,[o("div",s0,[(l(!0),d(X,null,ae(e.chips,(s,i)=>(l(),d("span",{class:"admin-active-chip",key:s?.key},[o("span",n0,c(s?.label),1),o("span",null,c(s?.value),1),o("button",{type:"button",onClick:a=>e.clearFilter(s.key),"aria-label":"Clear filter"},[...t[23]||(t[23]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-close"})],-1)])],8,r0)]))),128))])])):p("v-if",!0)])),[[r,e.viewState]]),e.selectedCount()>0?(l(),d("div",i0,[o("span",null,[o("strong",null,c(e.selectedCount()),1),t[24]||(t[24]=y(" selected",-1))]),o("button",{class:"btn btn-sm text-danger",type:"button",onClick:t[6]||(t[6]=s=>e.bulkBan())},[...t[25]||(t[25]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-ban"})],-1),y(" Ban",-1)])]),o("button",{class:"btn btn-sm",type:"button",onClick:t[7]||(t[7]=s=>{e.selected={},e.allSelected=!1})},"Clear")])):p("v-if",!0),o("div",a0,[o("div",l0,[o("div",d0,[o("input",{type:"checkbox","aria-label":"Select all on page",onClick:t[8]||(t[8]=s=>e.selectAllOnPage()),checked:e.allSelected},null,8,u0)]),o("div",c0,[o("button",{type:"button",class:A(["sortable",{active:e.query?.sort=="username"}]),onClick:t[9]||(t[9]=s=>e.sortBy("username"))},[t[27]||(t[27]=y("User ",-1)),e.sortIcon("username")?(l(),d("svg",{key:0,class:A(["ui-icon sort-direction",{ascending:e.sortIcon("username")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[26]||(t[26]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),t[30]||(t[30]=o("div",{role:"columnheader",class:"num"},"Repos",-1)),o("div",p0,[o("button",{type:"button",class:A(["sortable",{active:e.query?.sort=="status"}]),onClick:t[10]||(t[10]=s=>e.sortBy("status"))},[t[29]||(t[29]=y("Status ",-1)),e.sortIcon("status")?(l(),d("svg",{key:0,class:A(["ui-icon sort-direction",{ascending:e.sortIcon("status")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[28]||(t[28]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),t[31]||(t[31]=o("div",{role:"columnheader"},"Role",-1)),t[32]||(t[32]=o("div",{role:"columnheader","aria-label":"Actions"},null,-1))]),(l(!0),d(X,null,ae(e.filteredUsers,(s,i)=>(l(),d("div",{class:A(["paper-table-row admin-users-row",{"row-selected":e.selected[s?.username]}]),role:"row"},[o("div",f0,[N(o("input",h0,null,512),[[n,{state:e.viewState,set:a=>{e.selected[s.username]=a},value:e.selected[s?.username],form:null,options:{}}]])]),o("div",m0,[s?.photo?(l(),d("img",{key:0,width:"28",height:"28",class:"rounded-circle",style:{"flex-shrink":"0"},src:e.safeUrl(s?.photo)},null,8,v0)):p("v-if",!0),o("div",g0,[o("a",{class:"repo-name",textContent:c(s?.username),href:e.safeUrl("/admin/users/"+s?.username)},null,8,y0),o("div",b0,[s?.emails[0].email?(l(),d("span",w0,c(s?.emails[0].email),1)):p("v-if",!0),s?.emails[0].email?(l(),d("span",k0,"\xA0\xB7\xA0")):p("v-if",!0),o("a",{target:"_blank",href:e.safeUrl("https://github.com/"+s?.username)},[t[33]||(t[33]=o("i",{class:"fab fa-github"},null,-1)),y(" "+c(s?.username),1)],8,E0),s?.dateOfEntry?(l(),d("span",C0,"\xA0\xB7\xA0Joined "+c(e.fmt?.humanTime(s?.dateOfEntry)),1)):p("v-if",!0)])])]),o("div",_0,[t[34]||(t[34]=o("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[o("use",{href:"#project-type-repo"})],-1)),o("a",{title:"Show this user's repositories",textContent:c(e.fmt?.number(s?.repoCount||0)),href:e.safeUrl("/admin/?owner="+s?.username)},null,8,S0)]),o("div",N0,[o("span",{class:A(["status-dot",{"status-ready":s?.status=="active","status-removed":s?.status=="removed"||s?.status=="banned"}])},null,2),o("span",{textContent:c(e.fmt?.title(s?.status))},null,8,D0)]),o("div",R0,[s?.isAdmin?(l(),d("span",T0,"Admin")):p("v-if",!0),s?.isAdmin?p("v-if",!0):(l(),d("span",A0,"\u2014"))]),o("div",O0,[o("div",I0,[t[40]||(t[40]=o("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions"},[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-more"})])],-1)),o("div",P0,[o("a",{class:"dropdown-item",href:e.safeUrl("/admin/users/"+s?.username)},[...t[35]||(t[35]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-eye"})],-1),y(" View details",-1)])],8,V0),o("a",{class:"dropdown-item",href:e.safeUrl("/admin/?owner="+s?.username)},[...t[36]||(t[36]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-type-repo"})],-1),y(" View repositories",-1)])],8,q0),t[39]||(t[39]=o("div",{class:"dropdown-divider"},null,-1)),N(o("a",{class:"dropdown-item text-danger",href:"#",onClick:he(a=>e.banUser(s),["prevent"])},[...t[37]||(t[37]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-ban"})],-1),y(" Ban",-1)])],8,M0),[[Y,s?.status=="active"]]),N(o("a",{class:"dropdown-item",href:"#",onClick:he(a=>e.activateUser(s),["prevent"])},[...t[38]||(t[38]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-check-circle"})],-1),y(" Activate",-1)])],8,$0),[[Y,s?.status=="removed"||s?.status=="banned"]])])])])],2))),256)),e.filteredUsers?.length==0?(l(),d("div",L0,[...t[41]||(t[41]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-inbox"})],-1),o("span",null,"No users match the current filters.",-1)])])):p("v-if",!0)]),o("div",U0,[o("span",F0,c(e.fmt?.number(e.total))+" results",1),e.totalPage>1?(l(),d("div",z0,[o("button",{class:"btn btn-sm",onClick:t[11]||(t[11]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1},[...t[42]||(t[42]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-chevron-left"})],-1),y(" Previous",-1)])],8,H0),N(o("input",{type:"number",class:"form-control form-control-sm",min:"1",style:{width:"56px"},max:e.totalPage},null,8,j0),[[n,{state:e.viewState,set:s=>{e.query.page=s},value:e.query?.page,form:null,options:{}}]]),o("span",null,"of "+c(e.totalPage),1),o("button",{class:"btn btn-sm",onClick:t[12]||(t[12]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage},[...t[43]||(t[43]=[y("Next ",-1),o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-chevron-right"})],-1)])],8,B0)])):p("v-if",!0),o("span",G0,[t[45]||(t[45]=o("label",null,"Per page",-1)),N((l(),d("select",W0,[...t[44]||(t[44]=[o("option",{value:"10"},"10",-1),o("option",{value:"25"},"25",-1),o("option",{value:"50"},"50",-1),o("option",{value:"100"},"100",-1)])])),[[n,{state:e.viewState,set:s=>{e.query.limit=s},value:e.query?.limit,form:null,options:{}}]])])])])}var K0={class:"anonymize-landing"},Y0={class:"anonymize-landing-inner"},J0={class:"form-group mt-4 mb-2"},Q0={class:"source-url-label-row"},X0={key:0,class:"repo-access","aria-label":"GitHub access"},Z0={key:0,class:"repo-access-switch",role:"group","aria-label":"Repository connection"},x0=["aria-pressed","disabled"],eE=["aria-pressed","disabled"],tE={key:1,class:"connection-badge"},oE={id:"sourceUrl-landing",type:"text",class:"form-control form-control-lg",placeholder:"https://github.com/owner/repository"},sE={key:0,class:"draft-status",role:"status"},nE={key:1,class:"text-danger",role:"alert"},rE={key:2,class:"alert alert-info",role:"status"},iE={key:1},aE={key:3,class:"repo-access-details","aria-label":"GitHub access"},lE={class:"repo-access-main"},dE={class:"repo-access-controls"},uE={key:1,class:"connection-link",href:"/connections"},cE={class:"repo-access-note"},pE={key:0},fE={class:"anonymize-workspace"},hE={class:"anonymize-topbar"},mE={class:"anonymize-topbar-inner"},vE={class:"paper-crumbs"},gE={class:"here"},yE={class:"anonymize-topbar-head"},bE={class:"paper-page-title anonymize-topbar-title"},wE={key:0},kE={key:1},EE={class:"anonymize-mobile-tabs",role:"tablist","aria-label":"Anonymization workspace"},CE=["aria-selected","tabindex"],_E=["aria-selected","tabindex"],SE={key:0,class:"anonymize-preview-empty",id:"workspace-preview",role:"status"},NE={class:"anonymize-split"},DE=["role","aria-labelledby"],RE={class:"form needs-validation paper-settings-main",name:"anonymize",novalidate:""},TE={class:"paper-settings-section"},AE={class:"form-group"},OE={class:"source-url-label-row"},IE={key:0,class:"repo-access","aria-label":"GitHub access"},PE={key:0,class:"repo-access-switch",role:"group","aria-label":"Repository connection"},VE=["aria-pressed","disabled"],qE=["aria-pressed","disabled"],ME={key:1,class:"connection-badge"},$E=["disabled"],LE={class:"invalid-feedback"},UE={class:"invalid-feedback"},FE={class:"invalid-feedback"},zE={class:"invalid-feedback"},HE={key:0,class:"repo-access-details","aria-label":"GitHub access"},jE={class:"repo-access-main"},BE={class:"repo-access-controls"},GE={key:1,class:"connection-link",href:"/connections"},WE={class:"repo-access-note"},KE={key:0},YE={key:1,class:"repo-access-details"},JE={key:0,role:"status"},QE={key:2,class:"form-grid-2"},XE={class:"form-group"},ZE={class:"input-group"},xE={class:"form-control",id:"branch",name:"branch"},eC=["textContent","value"],tC={class:"input-group-append"},oC={class:"form-group"},sC=["disabled"],nC={class:"invalid-feedback"},rC={class:"invalid-feedback"},iC={class:"form-check"},aC={class:"form-check-input",type:"checkbox",id:"update",name:"update"},lC={class:"paper-settings-section"},dC={class:"form-group"},uC=["disabled"],cC={class:"form-text text-muted"},pC={class:"invalid-feedback"},fC={class:"form-group"},hC=["disabled"],mC={class:"form-text text-muted"},vC={class:"invalid-feedback"},gC={class:"form-group"},yC=["disabled"],bC={class:"form-text text-muted"},wC={class:"invalid-feedback"},kC={class:"form-group"},EC={class:"form-text text-muted"},CC=["href"],_C={class:"invalid-feedback"},SC={class:"form-text text-muted"},NC={class:"paper-settings-section"},DC={class:"form-group"},RC={class:"form-text text-muted"},TC={class:"warning-feedback"},AC={class:"invalid-feedback"},OC={class:"paper-settings-section"},IC={class:"form-check"},PC={class:"form-check-input",type:"checkbox",id:"link",name:"link"},VC={class:"form-check"},qC={class:"form-check-input",type:"checkbox",id:"image",name:"image"},MC={class:"form-check"},$C={class:"form-check-input",type:"checkbox",id:"pdf",name:"pdf"},LC={class:"form-check"},UC={class:"form-check-input",type:"checkbox",id:"notebook",name:"notebook"},FC={class:"form-check"},zC=["disabled"],HC={key:0,class:"form-text text-muted"},jC={key:1,class:"form-text text-muted"},BC={class:"form-check"},GC={class:"form-check-input",type:"checkbox",id:"title-gist",name:"title-gist"},WC={class:"form-check"},KC={class:"form-check-input",type:"checkbox",id:"content-gist",name:"content-gist"},YC={class:"form-check"},JC={class:"form-check-input",type:"checkbox",id:"comments-gist",name:"comments-gist"},QC={class:"form-check"},XC={class:"form-check-input",type:"checkbox",id:"username-gist",name:"username-gist"},ZC={class:"form-check"},xC={class:"form-check-input",type:"checkbox",id:"date-gist",name:"date-gist"},e_={class:"form-check"},t_={class:"form-check-input",type:"checkbox",id:"origin-gist",name:"origin-gist"},o_={class:"form-check"},s_={class:"form-check-input",type:"checkbox",id:"title",name:"title"},n_={class:"form-check"},r_={class:"form-check-input",type:"checkbox",id:"body",name:"body"},i_={class:"form-check"},a_={class:"form-check-input",type:"checkbox",id:"diff",name:"diff"},l_={class:"form-check"},d_={class:"form-check-input",type:"checkbox",id:"comments",name:"comments"},u_={class:"form-check"},c_={class:"form-check-input",type:"checkbox",id:"username",name:"username"},p_={class:"form-check"},f_={class:"form-check-input",type:"checkbox",id:"date",name:"date"},h_={class:"form-check"},m_={class:"form-check-input",type:"checkbox",id:"origin",name:"origin"},v_={class:"paper-settings-section"},g_={class:"form-grid-2"},y_={class:"form-group"},b_={class:"form-control",id:"expiration",name:"expiration"},w_={class:"form-group"},k_=["min","max"],E_={class:"invalid-feedback"},C_={class:"invalid-feedback"},__={class:"paper-settings-section"},S_={class:"form-group"},N_={style:{position:"relative"}},D_={type:"text",id:"coauthorSearch",class:"form-control",placeholder:"Search GitHub username\u2026",autocomplete:"off"},R_={class:"dropdown-menu show",style:{display:"block","max-height":"220px","overflow-y":"auto",width:"100%"}},T_=["onClick"],A_=["src"],O_=["textContent"],I_=["textContent"],P_={class:"coauthor-list"},V_={class:"coauthor-row d-flex align-items-center",style:{padding:"6px 0",gap:"8px"}},q_=["src"],M_=["textContent","href"],$_=["onClick"],L_={class:"form-text text-muted"},U_=["textContent"],F_={key:1,class:"draft-status",role:"status"},z_={key:2,class:"draft-status"},H_={key:3,class:"anonymize-review-note"},j_={class:"anonymize-submit-bar"},B_=["disabled"],G_=["disabled"],W_=["disabled"],K_=["disabled"],Y_=["disabled"],J_=["disabled"],Q_=["role","aria-labelledby"],X_={class:"anonymize-preview-head"},Z_={class:"anonymize-preview-sub"},x_={key:0,class:"anonymize-preview-status",role:"status"},e2={key:1,class:"anonymize-preview-status",role:"status"},t2={key:2,class:"anonymize-preview-status",role:"alert"},o2={key:3,class:"anonymize-preview-status"},s2=["innerHTML"],n2=["role","aria-labelledby"],r2={class:"anonymize-preview-head"},i2={class:"anonymize-preview-sub"},a2={key:0,class:"anonymize-preview-status",role:"status"},l2={key:1,class:"anonymize-preview-status",role:"status"},d2={key:2,class:"anonymize-preview-status",role:"alert"},u2={key:3,class:"anonymize-preview-body"},c2={class:"d-flex w-100 justify-content-between align-items-center flex-wrap"},p2={class:"pr-title mb-1"},f2={key:0},h2=["textContent"],m2={key:0},v2={key:1},g2={key:2},y2={class:"pr-comments mt-3"},b2={class:"pr-comment"},w2={class:"pr-comment-head"},k2=["textContent"],E2={key:0,class:"pr-comment-date"},C2={key:3},_2={class:"pr-comments"},S2={class:"pr-comment"},N2={class:"pr-comment-head"},D2={key:0,class:"pr-comment-author"},R2=["textContent"],T2=["textContent"],A2={key:0,class:"pr-comment-body"},O2=["role","aria-labelledby"],I2={class:"anonymize-preview-head"},P2={class:"anonymize-preview-sub"},V2={key:0,class:"anonymize-preview-status",role:"status"},q2={key:1,class:"anonymize-preview-status",role:"status"},M2={key:2,class:"anonymize-preview-status",role:"alert"},$2={key:3,class:"anonymize-preview-body"},L2={class:"d-flex w-100 justify-content-between align-items-center flex-wrap"},U2={class:"pr-title mb-1"},F2={key:0},z2=["textContent"],H2={key:0},j2={key:1,class:"pr-body shadow-sm p-3 mb-4 rounded",style:{background:"var(--paper-bg-alt)"}},B2={key:2,class:"paper-tabs",role:"tablist"},G2=["aria-selected","tabindex"],W2=["aria-selected","tabindex"],K2=["textContent"],Y2={key:3,class:"anonymize-preview-status"},J2={class:"paper-tab-content"},Q2={key:0,role:"tabpanel",id:"preview-pr-diff-panel","aria-labelledby":"preview-pr-diff-tab"},X2=["innerHTML"],Z2={key:1,role:"tabpanel",id:"preview-pr-comments-panel","aria-labelledby":"preview-pr-comments-tab"},x2={class:"pr-comments"},eS={class:"pr-comment"},tS={class:"pr-comment-head"},oS={key:0,class:"pr-comment-author"},sS=["textContent"],nS=["textContent"],rS={key:0,class:"pr-comment-body"};function pl(e,t){let n=We("gist-file"),r=We("markdown"),s=ye("field"),i=ye("form");return l(),d("div",{class:A(["anonymize-page h-100",{"mobile-preview-active":e.mobilePane==="preview"}])},[p(" ===== STATE 1: No URL \u2014 centered input ===== "),N(o("div",K0,[o("div",Y0,[t[37]||(t[37]=o("div",{class:"paper-crumbs"},[y("My work \xA0/\xA0 "),o("span",{class:"here"},"New anonymization")],-1)),t[38]||(t[38]=o("h1",{class:"paper-page-title"},[y("New "),o("em",null,"anonymization")],-1)),t[39]||(t[39]=o("p",{class:"paper-page-lede"}," Paste a GitHub repository, pull-request, or gist URL. We\u2019ll fetch it, redact the terms you choose in text files, and give you a share link. Images and PDFs are served unchanged when enabled. Review them before sharing. ",-1)),o("div",J0,[o("div",Q0,[t[31]||(t[31]=o("label",{class:"paper-field-label",for:"sourceUrl-landing"},"Source URL",-1)),!e.sourceUrl&&e.githubConnections?.appEnabled&&e.githubConnections.appConnected&&e.githubConnections.oauthConnected?(l(),d("aside",X0,[!e.isUpdate&&e.detectedType!=="gist"?(l(),d("div",Z0,[o("button",{type:"button","aria-pressed":e.githubConnection==="github-app",disabled:e.githubConnection==="github-app",onClick:t[0]||(t[0]=a=>e.chooseGitHubConnection("github-app"))},[...t[30]||(t[30]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-shield"})],-1),y(),o("span",{class:"sr-only"},"Read-only ",-1),y("GitHub App",-1)])],8,x0),o("button",{type:"button","aria-pressed":e.githubConnection==="oauth",disabled:e.githubConnection==="oauth",onClick:t[1]||(t[1]=a=>e.chooseGitHubConnection("oauth"))},"Legacy OAuth",8,eE)])):p("v-if",!0),e.isUpdate||e.detectedType==="gist"?(l(),d("span",tE,c(e.detectedType!=="gist"&&e.githubConnection==="github-app"?"Read-only GitHub App":"Legacy OAuth"),1)):p("v-if",!0)])):p("v-if",!0)]),N(o("input",oE,null,512),[[s,{state:e.viewState,set:a=>{e.sourceUrl=a},value:e.sourceUrl,form:null,options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"},change:()=>{e.urlSelected()}}]])]),e.draftRestored?(l(),d("div",sE,[t[32]||(t[32]=y("Your unsaved draft was restored. ",-1)),o("button",{type:"button",class:"draft-discard",onClick:t[2]||(t[2]=a=>e.discardDraft())},"Discard draft")])):p("v-if",!0),e.sourceUrlError?(l(),d("p",nE,c(e.sourceUrlError),1)):p("v-if",!0),t[40]||(t[40]=o("small",{class:"form-text",style:{color:"var(--ink-muted)"}}," Repository, pull request (\u2026/pull/42) and gist (gist.github.com/\u2026) URLs are all accepted. ",-1)),e.detectedType==="gist"&&e.gistOAuthRequired?(l(),d("aside",rE,[t[33]||(t[33]=o("p",null,"Connect GitHub OAuth to access gists. Your account and existing anonymizations stay the same, and your draft will be restored when you return.",-1)),t[34]||(t[34]=o("p",null,"GitHub's legacy OAuth connection includes write access to private repositories.",-1)),e.githubConnections?.oauthEnabled?(l(),d("button",{key:0,type:"button",class:"btn btn-ink",onClick:t[3]||(t[3]=a=>e.connectGistOAuth())},"Connect GitHub OAuth to access gists")):(l(),d("p",iE,"GitHub OAuth is currently unavailable. Please try again later."))])):p("v-if",!0),!e.sourceUrl&&e.githubConnections?.appEnabled&&e.githubConnections.appConnected&&e.githubConnections.oauthConnected?(l(),d("aside",aE,[o("div",lE,[o("div",dE,[e.detectedType!=="gist"&&e.githubConnection!=="oauth"?(l(),d("button",{key:0,type:"button",class:"btn btn-outline-ink",onClick:t[4]||(t[4]=a=>e.grantGitHubAccess())},[...t[35]||(t[35]=[y("Manage access ",-1),o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-external-link"})],-1)])])):p("v-if",!0),e.isUpdate||e.detectedType==="gist"||e.githubConnection==="oauth"?(l(),d("a",uE,c(e.isUpdate?"Change connection":"Manage connections")+" \u2192",1)):p("v-if",!0)])]),o("div",cE,[e.detectedType!=="gist"&&e.githubConnection!=="oauth"?(l(),d("span",pE,"Select repositories on GitHub, then return here.")):p("v-if",!0),t[36]||(t[36]=o("span",null,[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-info"})]),y(" Selected content will be published, including content from private repositories.")],-1))])])):p("v-if",!0)])],512),[[Y,!e.workspaceOpen&&!e.isUpdate]]),p(" ===== STATE 2: URL provided \u2014 form (left) + preview (right) ===== "),N(o("div",fE,[o("header",hE,[o("div",mE,[o("div",vE,[t[41]||(t[41]=o("a",{href:"/dashboard"},"My work",-1)),t[42]||(t[42]=y(" \xA0/\xA0 ",-1)),o("span",gE,c(e.isUpdate?"Edit anonymization":"New anonymization"),1)]),o("div",yE,[o("h1",bE,[e.isUpdate?p("v-if",!0):(l(),d("span",wE,[...t[43]||(t[43]=[y("New ",-1),o("em",null,"anonymization",-1)])])),e.isUpdate?(l(),d("span",kE,[...t[44]||(t[44]=[y("Edit ",-1),o("em",null,"anonymization",-1)])])):p("v-if",!0)]),N(o("span",{class:A(["type-badge",{"type-repo":e.detectedType==="repo","type-pr":e.detectedType==="pr","type-gist":e.detectedType==="gist"}])},c(e.detectedType==="repo"?"Repo":e.detectedType==="pr"?"PR":"Gist"),3),[[Y,e.detectedType]])])])]),o("nav",EE,[o("button",{id:"workspace-settings-tab",role:"tab",type:"button","aria-selected":e.mobilePane==="settings","aria-controls":"workspace-settings",tabindex:e.mobilePane==="settings"?0:-1,onKeydown:t[5]||(t[5]=a=>e.previewTabKeydown(a)),onClick:t[6]||(t[6]=a=>e.selectMobilePane("settings"))},"Settings",40,CE),o("button",{id:"workspace-preview-tab",role:"tab",type:"button","aria-selected":e.mobilePane==="preview","aria-controls":"workspace-preview",tabindex:e.mobilePane==="preview"?0:-1,onKeydown:t[7]||(t[7]=a=>e.previewTabKeydown(a)),onClick:t[8]||(t[8]=a=>e.selectMobilePane("preview"))},"Reviewer preview",40,_E)]),e.detectedType!=="repo"&&!e.details?(l(),d("div",SE,c(e.sourceLoading?"Loading source\u2026":"Choose an accessible source to see its preview."),1)):p("v-if",!0),o("div",NE,[p(" Form column (left) "),o("div",{id:"workspace-settings",role:e.mobileWorkspace?"tabpanel":null,"aria-labelledby":e.mobileWorkspace?"workspace-settings-tab":null,class:"anonymize-form-col overflow-auto"},[N((l(),d("form",RE,[o("section",TE,[t[55]||(t[55]=o("div",{class:"paper-section-eyebrow"},"Source",-1)),o("div",AE,[o("div",OE,[t[46]||(t[46]=o("label",{class:"paper-field-label",for:"sourceUrl"},"GitHub URL",-1)),e.sourceUrl&&e.githubConnections?.appEnabled&&e.githubConnections.appConnected&&e.githubConnections.oauthConnected?(l(),d("aside",IE,[!e.isUpdate&&e.detectedType!=="gist"?(l(),d("div",PE,[o("button",{type:"button","aria-pressed":e.githubConnection==="github-app",disabled:e.githubConnection==="github-app",onClick:t[9]||(t[9]=a=>e.chooseGitHubConnection("github-app"))},[...t[45]||(t[45]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-shield"})],-1),y(),o("span",{class:"sr-only"},"Read-only ",-1),y("GitHub App",-1)])],8,VE),o("button",{type:"button","aria-pressed":e.githubConnection==="oauth",disabled:e.githubConnection==="oauth",onClick:t[10]||(t[10]=a=>e.chooseGitHubConnection("oauth"))},"Legacy OAuth",8,qE)])):p("v-if",!0),e.isUpdate||e.detectedType==="gist"?(l(),d("span",ME,c(e.detectedType!=="gist"&&e.githubConnection==="github-app"?"Read-only GitHub App":"Legacy OAuth"),1)):p("v-if",!0)])):p("v-if",!0)]),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.anonymize?.sourceUrl?.invalid}]),name:"sourceUrl",id:"sourceUrl",disabled:e.isUpdate&&e.detectedType!=="repo",placeholder:"Paste a GitHub repo or pull request URL"},null,10,$E),[[s,{state:e.viewState,set:a=>{e.sourceUrl=a},value:e.sourceUrl,form:"anonymize",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"},change:()=>{e.urlSelected()}}]]),N(o("div",LE," Please provide a valid GitHub URL. ",512),[[Y,e.anonymize?.sourceUrl?.errors?.github]]),N(o("div",UE," Not accessible. The organization may restrict access. ",512),[[Y,e.anonymize?.sourceUrl?.errors?.access]]),N(o("div",FE," Does not exist or is not accessible. ",512),[[Y,e.anonymize?.sourceUrl?.errors?.missing]]),N(o("div",zE," Already anonymized. ",512),[[Y,e.anonymize?.sourceUrl?.errors?.used]])]),e.sourceUrl&&e.githubConnections?.appEnabled&&e.githubConnections.appConnected&&e.githubConnections.oauthConnected?(l(),d("aside",HE,[o("div",jE,[o("div",BE,[e.detectedType!=="gist"&&e.githubConnection!=="oauth"?(l(),d("button",{key:0,type:"button",class:"btn btn-outline-ink",onClick:t[11]||(t[11]=a=>e.grantGitHubAccess())},[...t[47]||(t[47]=[y("Manage access ",-1),o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-external-link"})],-1)])])):p("v-if",!0),e.isUpdate||e.detectedType==="gist"||e.githubConnection==="oauth"?(l(),d("a",GE,c(e.isUpdate?"Change connection":"Manage connections")+" \u2192",1)):p("v-if",!0)])]),o("div",WE,[e.detectedType!=="gist"&&e.githubConnection!=="oauth"?(l(),d("span",KE,"Select repositories on GitHub, then return here.")):p("v-if",!0),t[48]||(t[48]=o("span",null,[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-info"})]),y(" Selected content will be published, including content from private repositories.")],-1))])])):p("v-if",!0),e.isUpdate&&e.detectedType==="repo"&&e.role==="owner"&&e.sourceUrl==="https://github.com/"+e._originalFullName?(l(),d("aside",YE,[t[49]||(t[49]=o("p",null,"If you deleted and recreated this repository, reconnect it before choosing a branch.",-1)),o("button",{type:"button",class:"btn btn-outline-ink",onClick:t[12]||(t[12]=a=>e.reconnectSource())},"Reconnect source repository"),e.reconnectRepositoryId?(l(),d("p",JE,"Source reloaded. Review the branch, commit, and anonymization preview, then save to replace the published snapshot.")):p("v-if",!0)])):p("v-if",!0),e.detectedType==="repo"?(l(),d("div",QE,[o("div",XE,[t[51]||(t[51]=o("label",{class:"paper-field-label",for:"branch"},"Branch",-1)),o("div",ZE,[N((l(),d("select",xE,[(l(!0),d(X,null,ae(e.branches,(a,u)=>(l(),d("option",{textContent:c(a?.name),value:a?.name},null,8,eC))),256))])),[[s,{state:e.viewState,set:a=>{e.source.branch=a},value:e.source?.branch,form:"anonymize",options:{}}]]),o("div",tC,[o("button",{class:"btn btn-icon",type:"button",title:"Refresh","data-toggle":"tooltip","data-placement":"bottom",onClick:t[13]||(t[13]=a=>e.getBranches(!0)),"aria-label":"Refresh"},[...t[50]||(t[50]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-refresh"})],-1)])])])])]),o("div",oC,[t[52]||(t[52]=o("label",{class:"paper-field-label",for:"commit"},"Commit",-1)),N(o("input",{class:A(["form-control",{"is-invalid":e.anonymize?.commit?.invalid}]),id:"commit",disabled:e.options.update,name:"commit",pattern:"[a-fA-Z0-9]{6,}",required:""},null,10,sC),[[s,{state:e.viewState,set:a=>{e.source.commit=a},value:e.source?.commit,form:"anonymize",options:{}}]]),N(o("div",nC," The commit SHA is not valid. ",512),[[Y,e.anonymize?.commit?.errors?.pattern||e.anonymize?.commit?.errors?.required]]),N(o("div",rC," This commit no longer exists in the repository. Click refresh to get the latest. ",512),[[Y,e.anonymize?.commit?.errors?.exists]])])])):p("v-if",!0),N(o("div",iC,[N(o("input",aC,null,512),[[s,{state:e.viewState,set:a=>{e.options.update=a},value:e.options?.update,form:"anonymize",options:{}}]]),t[53]||(t[53]=o("label",{class:"form-check-label",for:"update"},"Auto-update from GitHub",-1)),t[54]||(t[54]=o("small",{class:"form-text text-muted"},"Follow the branch and pull the latest commit automatically, at most once an hour.",-1))],512),[[Y,e.detectedType]])]),N(o("section",lC,[t[66]||(t[66]=o("div",{class:"paper-section-eyebrow"},"Identity",-1)),N(o("div",dC,[t[58]||(t[58]=o("label",{class:"paper-field-label",for:"repoId"},"Anonymized repository ID",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.anonymize?.repoId?.invalid}]),name:"repoId",id:"repoId",disabled:e.isUpdate},null,10,uC),[[s,{state:e.viewState,set:a=>{e.repoId=a},value:e.repoId,form:"anonymize",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"}}]]),o("small",cC,[t[56]||(t[56]=y("Your share link will be ",-1)),o("code",null,"anonymous.4open.science/r/"+c(e.repoId),1),t[57]||(t[57]=y(".",-1))]),N(o("div",pC,"ID can only contain letters and numbers.",512),[[Y,e.anonymize?.repoId?.errors?.format]]),N(o("div",{class:"invalid-feedback"},c(e.repoId)+" is already used.",513),[[Y,e.anonymize?.repoId?.errors?.used]])],512),[[Y,e.detectedType==="repo"]]),N(o("div",fC,[t[61]||(t[61]=o("label",{class:"paper-field-label",for:"pullRequestId"},"Anonymized pull request ID",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.anonymize?.pullRequestId?.invalid}]),name:"pullRequestId",id:"pullRequestId",disabled:e.isUpdate},null,10,hC),[[s,{state:e.viewState,set:a=>{e.pullRequestId=a},value:e.pullRequestId,form:"anonymize",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"}}]]),o("small",mC,[t[59]||(t[59]=y("Your share link will be ",-1)),o("code",null,"anonymous.4open.science/pr/"+c(e.pullRequestId),1),t[60]||(t[60]=y(".",-1))]),N(o("div",vC,"ID can only contain letters and numbers.",512),[[Y,e.anonymize?.pullRequestId?.errors?.format]]),N(o("div",{class:"invalid-feedback"},c(e.pullRequestId)+" is already used.",513),[[Y,e.anonymize?.pullRequestId?.errors?.used]])],512),[[Y,e.detectedType==="pr"]]),N(o("div",gC,[t[64]||(t[64]=o("label",{class:"paper-field-label",for:"gistId"},"Anonymized gist ID",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.anonymize?.gistId?.invalid}]),name:"gistId",id:"gistId",disabled:e.isUpdate},null,10,yC),[[s,{state:e.viewState,set:a=>{e.gistId=a},value:e.gistId,form:"anonymize",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"}}]]),o("small",bC,[t[62]||(t[62]=y("Your share link will be ",-1)),o("code",null,"anonymous.4open.science/gist/"+c(e.gistId),1),t[63]||(t[63]=y(".",-1))]),N(o("div",wC,"ID can only contain letters and numbers.",512),[[Y,e.anonymize?.gistId?.errors?.format]]),N(o("div",{class:"invalid-feedback"},c(e.gistId)+" is already used.",513),[[Y,e.anonymize?.gistId?.errors?.used]])],512),[[Y,e.detectedType==="gist"]]),o("div",kC,[t[65]||(t[65]=o("label",{class:"paper-field-label",for:"conference"},[y("Conference "),o("span",{class:"paper-optional"},"(optional)")],-1)),N(o("input",{class:A(["form-control",{"is-invalid":e.anonymize?.conference?.invalid}]),id:"conference",name:"conference"},null,2),[[s,{state:e.viewState,set:a=>{e.conference=a},value:e.conference,form:"anonymize",options:{debounce:{default:800,blur:0},updateOn:"default blur"}}]]),N(o("small",EC,[o("a",{target:"_blank",href:e.safeUrl(e.conference_data?.url)},c(e.conference_data?.name),9,CC),y(" expires "+c(e.fmt?.date(e.conference_data?.endDate))+". ",1)],512),[[Y,e.conference_data]]),N(o("div",_C,"The conference is not activated.",512),[[Y,e.anonymize?.conference?.errors?.activated]]),N(o("small",SC,"Link to a conference to apply its shared defaults.",512),[[Y,!e.conference_data]])])],512),[[Y,e.detectedType]]),N(o("section",NC,[t[74]||(t[74]=o("div",{class:"paper-section-eyebrow"},"Anonymization",-1)),o("div",DC,[t[73]||(t[73]=o("label",{class:"paper-field-label",for:"terms"},"Terms to redact",-1)),N(o("textarea",{class:A(["form-control",{"is-invalid":e.anonymize?.terms?.invalid}]),id:"terms",name:"terms",rows:"4"},null,2),[[s,{state:e.viewState,set:a=>{e.terms=a},value:e.terms,form:"anonymize",options:{debounce:250}}]]),o("small",RC,[t[67]||(t[67]=y("One term per line (regex allowed). Replaced by ",-1)),o("code",null,c(e.site_options?.ANONYMIZATION_MASK)+"-[N]",1),t[68]||(t[68]=y(", or use ",-1)),t[69]||(t[69]=o("code",null,"term=>replacement",-1)),t[70]||(t[70]=y(" to pick your own (e.g. ",-1)),t[71]||(t[71]=o("code",null,"Anonymous=>ABC",-1)),t[72]||(t[72]=y(").",-1))]),N(o("div",TC,"Regex characters detected. Escape them if unintentional.",512),[[Y,e.termsRegexWarning]]),N(o("div",AC,"Terms are in an invalid format.",512),[[Y,e.anonymize?.terms?.errors?.format]])])],512),[[Y,e.detectedType]]),N(o("section",OC,[t[95]||(t[95]=o("div",{class:"paper-section-eyebrow"},"Display",-1)),N(o("div",null,[o("div",IC,[N(o("input",PC,null,512),[[s,{state:e.viewState,set:a=>{e.options.link=a},value:e.options?.link,form:"anonymize",options:{}}]]),t[75]||(t[75]=o("label",{class:"form-check-label",for:"link"},"Keep links",-1))]),o("div",VC,[N(o("input",qC,null,512),[[s,{state:e.viewState,set:a=>{e.options.image=a},value:e.options?.image,form:"anonymize",options:{}}]]),t[76]||(t[76]=o("label",{class:"form-check-label",for:"image"},"Display images",-1)),t[77]||(t[77]=o("small",{class:"form-text text-muted"},"Images are served unchanged and may contain names or affiliations.",-1))]),o("div",MC,[N(o("input",$C,null,512),[[s,{state:e.viewState,set:a=>{e.options.pdf=a},value:e.options?.pdf,form:"anonymize",options:{}}]]),t[78]||(t[78]=o("label",{class:"form-check-label",for:"pdf"},"Display PDFs",-1)),t[79]||(t[79]=o("small",{class:"form-text text-muted"},[y("PDF contents and metadata are served unchanged. "),o("a",{href:"/faq#formats"},"About supported formats")],-1))]),o("div",LC,[N(o("input",UC,null,512),[[s,{state:e.viewState,set:a=>{e.options.notebook=a},value:e.options?.notebook,form:"anonymize",options:{}}]]),t[80]||(t[80]=o("label",{class:"form-check-label",for:"notebook"},"Display Notebooks",-1))]),o("div",FC,[N(o("input",{class:"form-check-input",type:"checkbox",id:"page",name:"page",disabled:!e.details?.hasPage||e.details?.pageSource&&e.details?.pageSource?.branch!==e.source?.branch},null,8,zC),[[s,{state:e.viewState,set:a=>{e.options.page=a},value:e.options?.page,form:"anonymize",options:{}}]]),t[81]||(t[81]=o("label",{class:"form-check-label",for:"page"},"GitHub Pages",-1)),e.details?.hasPage?p("v-if",!0):(l(),d("small",HC,c(e.fmt?.translate("WARNINGS.page_not_enabled_on_repo")),1)),e.details?.hasPage&&e.details?.pageSource?.branch&&e.source?.branch&&e.details.pageSource.branch!==e.source.branch?(l(),d("small",jC,c(e.fmt?.translate("WARNINGS.page_branch_mismatch",{pageBranch:e.details?.pageSource?.branch,selectedBranch:e.source?.branch})),1)):p("v-if",!0)])],512),[[Y,e.detectedType==="repo"]]),N(o("div",null,[o("div",BC,[N(o("input",GC,null,512),[[s,{state:e.viewState,set:a=>{e.options.title=a},value:e.options?.title,form:"anonymize",options:{}}]]),t[82]||(t[82]=o("label",{class:"form-check-label",for:"title-gist"},"Gist description",-1))]),o("div",WC,[N(o("input",KC,null,512),[[s,{state:e.viewState,set:a=>{e.options.content=a},value:e.options?.content,form:"anonymize",options:{}}]]),t[83]||(t[83]=o("label",{class:"form-check-label",for:"content-gist"},"File contents",-1))]),o("div",YC,[N(o("input",JC,null,512),[[s,{state:e.viewState,set:a=>{e.options.comments=a},value:e.options?.comments,form:"anonymize",options:{}}]]),t[84]||(t[84]=o("label",{class:"form-check-label",for:"comments-gist"},"Comments",-1))]),o("div",QC,[N(o("input",XC,null,512),[[s,{state:e.viewState,set:a=>{e.options.username=a},value:e.options?.username,form:"anonymize",options:{}}]]),t[85]||(t[85]=o("label",{class:"form-check-label",for:"username-gist"},"Usernames",-1))]),o("div",ZC,[N(o("input",xC,null,512),[[s,{state:e.viewState,set:a=>{e.options.date=a},value:e.options?.date,form:"anonymize",options:{}}]]),t[86]||(t[86]=o("label",{class:"form-check-label",for:"date-gist"},"Dates",-1))]),o("div",e_,[N(o("input",t_,null,512),[[s,{state:e.viewState,set:a=>{e.options.origin=a},value:e.options?.origin,form:"anonymize",options:{}}]]),t[87]||(t[87]=o("label",{class:"form-check-label",for:"origin-gist"},"Source gist ID",-1))])],512),[[Y,e.detectedType==="gist"]]),N(o("div",null,[o("div",o_,[N(o("input",s_,null,512),[[s,{state:e.viewState,set:a=>{e.options.title=a},value:e.options?.title,form:"anonymize",options:{}}]]),t[88]||(t[88]=o("label",{class:"form-check-label",for:"title"},"PR title",-1))]),o("div",n_,[N(o("input",r_,null,512),[[s,{state:e.viewState,set:a=>{e.options.body=a},value:e.options?.body,form:"anonymize",options:{}}]]),t[89]||(t[89]=o("label",{class:"form-check-label",for:"body"},"PR body",-1))]),o("div",i_,[N(o("input",a_,null,512),[[s,{state:e.viewState,set:a=>{e.options.diff=a},value:e.options?.diff,form:"anonymize",options:{}}]]),t[90]||(t[90]=o("label",{class:"form-check-label",for:"diff"},"Diff",-1))]),o("div",l_,[N(o("input",d_,null,512),[[s,{state:e.viewState,set:a=>{e.options.comments=a},value:e.options?.comments,form:"anonymize",options:{}}]]),t[91]||(t[91]=o("label",{class:"form-check-label",for:"comments"},"Comments",-1))]),o("div",u_,[N(o("input",c_,null,512),[[s,{state:e.viewState,set:a=>{e.options.username=a},value:e.options?.username,form:"anonymize",options:{}}]]),t[92]||(t[92]=o("label",{class:"form-check-label",for:"username"},"Usernames",-1))]),o("div",p_,[N(o("input",f_,null,512),[[s,{state:e.viewState,set:a=>{e.options.date=a},value:e.options?.date,form:"anonymize",options:{}}]]),t[93]||(t[93]=o("label",{class:"form-check-label",for:"date"},"Dates",-1))]),o("div",h_,[N(o("input",m_,null,512),[[s,{state:e.viewState,set:a=>{e.options.origin=a},value:e.options?.origin,form:"anonymize",options:{}}]]),t[94]||(t[94]=o("label",{class:"form-check-label",for:"origin"},"Project name",-1))])],512),[[Y,e.detectedType==="pr"]])],512),[[Y,e.detectedType]]),N(o("section",v_,[t[99]||(t[99]=o("div",{class:"paper-section-eyebrow"},"Expiration",-1)),o("div",g_,[o("div",y_,[t[97]||(t[97]=o("label",{class:"paper-field-label",for:"expiration"},"Strategy",-1)),N((l(),d("select",b_,[...t[96]||(t[96]=[o("option",{value:"redirect"},"Redirect to GitHub when expired",-1),o("option",{value:"remove",selected:""},"Remove when expired",-1)])])),[[s,{state:e.viewState,set:a=>{e.options.expirationMode=a},value:e.options?.expirationMode,form:"anonymize",options:{}}]])]),o("div",w_,[t[98]||(t[98]=o("label",{class:"paper-field-label",for:"expirationDate"},"Expiration date",-1)),N(o("input",{class:A(["form-control",{"is-invalid":e.anonymize?.expirationDate?.invalid}]),type:"date",name:"expirationDate",id:"expirationDate",required:"",min:e.minExpirationDate,max:e.maxExpirationDate},null,10,k_),[[s,{state:e.viewState,set:a=>{e.options.expirationDate=a},value:e.options?.expirationDate,form:"anonymize",options:{}}]]),N(o("div",E_,"Pick a date in the future.",512),[[Y,e.anonymize?.expirationDate?.errors?.min]]),N(o("div",{class:"invalid-feedback"},"Pick a date on or before "+c(e.fmt?.date(e.maxExpirationDate))+".",513),[[Y,e.anonymize?.expirationDate?.errors?.max]]),N(o("div",C_,"Enter a valid expiration date.",512),[[Y,e.anonymize?.expirationDate?.errors?.required||e.anonymize?.expirationDate?.errors?.date]])])]),N(o("small",{class:"form-text text-muted"},"After "+c(e.fmt?.date(e.options?.expirationDate))+", the content will be removed.",513),[[Y,e.options?.expirationMode=="remove"&&e.options?.expirationDate]]),N(o("small",{class:"form-text text-muted"},"After "+c(e.fmt?.date(e.options?.expirationDate))+", visitors will be redirected to GitHub.",513),[[Y,e.options?.expirationMode=="redirect"&&e.options?.expirationDate]])],512),[[Y,e.detectedType]]),N(o("section",__,[t[103]||(t[103]=o("div",{class:"paper-section-eyebrow"},"Co-authors",-1)),t[104]||(t[104]=o("p",{class:"form-text text-muted",style:{"margin-bottom":"8px"}}," Co-authors can view and edit these settings. They cannot delete the anonymization or manage co-authors. ",-1)),N(o("div",S_,[t[100]||(t[100]=o("label",{class:"paper-field-label",for:"coauthorSearch"},"Add a GitHub user",-1)),o("div",N_,[N(o("input",D_,null,512),[[s,{state:e.viewState,set:a=>{e.coauthorSearch=a},value:e.coauthorSearch,form:"anonymize",options:{debounce:300},change:()=>{e.searchCoauthors()}}]]),N(o("div",R_,[(l(!0),d(X,null,ae(e.coauthorResults,(a,u)=>(l(),d("a",{href:"#",class:"dropdown-item d-flex align-items-center",onClick:he(f=>e.addCoauthor(a,f),["prevent"])},[o("img",{alt:"",style:{width:"22px",height:"22px","border-radius":"50%","margin-right":"8px"},src:e.safeUrl(a?.photo)},null,8,A_),o("span",{textContent:c(a?.username)},null,8,O_)],8,T_))),256))],512),[[Y,e.coauthorResults?.length>0]])]),N(o("small",{class:"form-text text-muted",textContent:c(e.coauthorError)},null,8,I_),[[Y,e.coauthorError]])],512),[[Y,e.role==="owner"||e.role==="admin"]]),o("div",P_,[(l(!0),d(X,null,ae(e.coauthors,(a,u)=>(l(),d("div",V_,[a?.photo?(l(),d("img",{key:0,alt:"",style:{width:"24px",height:"24px","border-radius":"50%"},src:e.safeUrl(a?.photo)},null,8,q_)):p("v-if",!0),o("a",{target:"_blank",textContent:c(a?.username),href:e.safeUrl("https://github.com/"+a?.username)},null,8,M_),t[102]||(t[102]=o("span",{class:"type-badge type-coauthor"},"Co-author",-1)),N(o("button",{type:"button",class:"btn btn-sm btn-icon",style:{"margin-left":"auto"},title:"Remove co-author",onClick:f=>e.removeCoauthor(a),"aria-label":"Remove co-author"},[...t[101]||(t[101]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-close"})],-1)])],8,$_),[[Y,e.role==="owner"||e.role==="admin"]])]))),256)),N(o("div",L_," No co-authors yet. ",512),[[Y,!e.coauthors||e.coauthors?.length===0]])])],512),[[Y,e.isUpdate&&e.detectedType==="repo"]]),e.error?(l(),d("div",{key:0,class:"alert alert-danger",role:"alert",textContent:c(e.error)},null,8,U_)):p("v-if",!0),e.draftRestored?(l(),d("div",F_,[t[105]||(t[105]=y("Your unsaved draft was restored. ",-1)),o("button",{type:"button",class:"draft-discard",onClick:t[14]||(t[14]=a=>e.discardDraft())},"Discard draft")])):e.unsavedChanges?(l(),d("div",z_,[y(c(e.draftSaved?"Draft saved in this tab for 30 minutes.":"Unsaved changes. Keep this tab open until you save.")+" ",1),o("button",{type:"button",class:"draft-discard",onClick:t[15]||(t[15]=a=>e.discardDraft())},c(e.isUpdate?"Restore saved settings":"Discard changes"),1)])):p("v-if",!0),e.detectedType==="repo"&&(e.options.image||e.options.pdf)?(l(),d("p",H_,"Review enabled images and PDFs before sharing. Their contents are not anonymized.")):p("v-if",!0),o("button",{type:"button",class:"btn btn-outline-ink mobile-preview-jump",onClick:t[16]||(t[16]=a=>e.selectMobilePane("preview"))},[...t[106]||(t[106]=[y("Review preview ",-1),o("span",{"aria-hidden":"true"},"\u2192",-1)])]),N(o("div",j_,[e.detectedType==="repo"&&!e.isUpdate?(l(),d("button",{key:0,type:"submit",disabled:e.sourceLoading,class:"btn btn-ink",onClick:t[17]||(t[17]=he(a=>e.submitForm(a,()=>{e.anonymizeRepo(a)}),["prevent"]))},[...t[107]||(t[107]=[o("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-shield"})],-1),y(" Anonymize Repository ",-1)])],8,B_)):p("v-if",!0),e.detectedType==="repo"&&e.isUpdate?(l(),d("button",{key:1,type:"submit",disabled:e.sourceLoading,class:"btn btn-ink",onClick:t[18]||(t[18]=he(a=>e.submitForm(a,()=>{e.anonymizeRepo(a)}),["prevent"]))},[...t[108]||(t[108]=[o("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-save"})],-1),y(" Update Repository ",-1)])],8,G_)):p("v-if",!0),e.detectedType==="pr"&&!e.isUpdate?(l(),d("button",{key:2,type:"submit",disabled:e.sourceLoading,class:"btn btn-ink",onClick:t[19]||(t[19]=he(a=>e.submitForm(a,()=>{e.anonymizePullRequest(a)}),["prevent"]))},[...t[109]||(t[109]=[o("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-shield"})],-1),y(" Anonymize Pull Request ",-1)])],8,W_)):p("v-if",!0),e.detectedType==="pr"&&e.isUpdate?(l(),d("button",{key:3,type:"submit",disabled:e.sourceLoading,class:"btn btn-ink",onClick:t[20]||(t[20]=he(a=>e.submitForm(a,()=>{e.anonymizePullRequest(a)}),["prevent"]))},[...t[110]||(t[110]=[o("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-save"})],-1),y(" Update Pull Request ",-1)])],8,K_)):p("v-if",!0),e.detectedType==="gist"&&!e.isUpdate?(l(),d("button",{key:4,type:"submit",disabled:e.sourceLoading,class:"btn btn-ink",onClick:t[21]||(t[21]=he(a=>e.submitForm(a,()=>{e.anonymizeGist(a)}),["prevent"]))},[...t[111]||(t[111]=[o("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-shield"})],-1),y(" Anonymize Gist ",-1)])],8,Y_)):p("v-if",!0),e.detectedType==="gist"&&e.isUpdate?(l(),d("button",{key:5,type:"submit",disabled:e.sourceLoading,class:"btn btn-ink",onClick:t[22]||(t[22]=he(a=>e.submitForm(a,()=>{e.anonymizeGist(a)}),["prevent"]))},[...t[112]||(t[112]=[o("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-save"})],-1),y(" Update Gist ",-1)])],8,J_)):p("v-if",!0)],512),[[Y,e.detectedType]])])),[[i,e.viewState]])],8,DE),p(" Preview column (right) "),e.detectedType==="repo"?(l(),d("div",{key:0,id:"workspace-preview",role:e.mobileWorkspace?"tabpanel":null,"aria-labelledby":e.mobileWorkspace?"workspace-preview-tab":null,class:"anonymize-preview-col"},[o("div",X_,[t[113]||(t[113]=o("span",{class:"paper-eyebrow"},"Live preview",-1)),o("span",Z_,c(e.previewStatus==="ready"?"README with redactions applied":"README preview"),1)]),e.sourceLoading&&e.previewStatus==="idle"?(l(),d("div",x_,"Loading source\u2026")):p("v-if",!0),e.previewStatus==="loading"?(l(),d("div",e2,"Updating the anonymized preview\u2026")):p("v-if",!0),e.previewStatus==="error"?(l(),d("div",t2,[t[114]||(t[114]=o("p",null,"Unable to generate the anonymized preview. The latest redactions have not been verified.",-1)),o("button",{class:"btn btn-outline-ink",type:"button",onClick:t[23]||(t[23]=a=>e.retryPreview())},"Retry preview")])):p("v-if",!0),!e.sourceLoading&&!e.readme&&e.previewStatus==="idle"?(l(),d("div",o2,"No README is available to preview. Review the published files before sharing.")):p("v-if",!0),e.previewStatus==="ready"?(l(),d("div",{key:4,class:"anonymize-preview-body markdown-body body",innerHTML:e.sanitize(e.html_readme)},null,8,s2)):p("v-if",!0)],8,Q_)):p("v-if",!0),e.detectedType==="gist"&&e.details?(l(),d("div",{key:1,id:"workspace-preview",role:e.mobileWorkspace?"tabpanel":null,"aria-labelledby":e.mobileWorkspace?"workspace-preview-tab":null,class:"anonymize-preview-col"},[o("div",r2,[t[115]||(t[115]=o("span",{class:"paper-eyebrow"},"Live preview",-1)),o("span",i2,c(e.previewStatus==="ready"?"Gist with redactions applied":"Gist preview"),1)]),e.sourceLoading&&e.previewStatus==="idle"?(l(),d("div",a2,"Loading source\u2026")):p("v-if",!0),e.previewStatus==="loading"?(l(),d("div",l2,"Updating the anonymized preview\u2026")):p("v-if",!0),e.previewStatus==="error"?(l(),d("div",d2,[t[116]||(t[116]=o("p",null,"Unable to generate the anonymized preview. The latest redactions have not been verified.",-1)),o("button",{class:"btn btn-outline-ink",type:"button",onClick:t[24]||(t[24]=a=>e.retryPreview())},"Retry preview")])):p("v-if",!0),e.previewStatus==="ready"?(l(),d("div",u2,[o("div",c2,[o("h2",p2,[e.options?.title?(l(),d("span",f2,c(e.anonymizeGistContent(e.details?.gist?.description)||"Untitled gist"),1)):p("v-if",!0),o("span",{class:A(["badge",{"badge-success":e.details?.gist?.isPublic,"badge-secondary":!e.details?.gist?.isPublic}])},c(e.details?.gist?.isPublic?"public":"secret"),3)]),e.options?.date?(l(),d("small",{key:0,textContent:c(e.fmt?.date(e.details?.gist?.updatedDate))},null,8,h2)):p("v-if",!0)]),e.options?.origin?(l(),d("small",m2,"Gist ID: "+c(e.details?.source?.gistId),1)):p("v-if",!0),e.options?.username&&e.details?.gist?.ownerLogin?(l(),d("small",v2,"By @"+c(e.anonymizeGistContent(e.details?.gist?.ownerLogin)),1)):p("v-if",!0),e.options?.content&&e.previewGistFiles?.length?(l(),d("div",g2,[o("ul",y2,[(l(!0),d(X,null,ae(e.previewGistFiles,(a,u)=>(l(),d("li",b2,[o("div",w2,[o("strong",{textContent:c(a?.filename)},null,8,k2),a?.language?(l(),d("span",E2,c(a?.language),1)):p("v-if",!0)]),Ce(n,{file:a,terms:e.terms,options:e.options},null,8,["file","terms","options"])]))),256))])])):p("v-if",!0),e.options?.comments&&e.details?.gist?.comments&&e.details?.gist?.comments?.length?(l(),d("div",C2,[t[119]||(t[119]=o("h3",{class:"paper-section-eyebrow mt-3"},"Comments",-1)),o("ul",_2,[(l(!0),d(X,null,ae(e.details?.gist?.comments,(a,u)=>(l(),d("li",S2,[o("div",N2,[e.options?.username?(l(),d("span",D2,[t[117]||(t[117]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-user"})],-1)),t[118]||(t[118]=y(" @",-1)),o("span",{textContent:c(e.anonymizeGistContent(a?.author))},null,8,R2)])):p("v-if",!0),e.options?.date?(l(),d("span",{key:1,class:"pr-comment-date",textContent:c(e.fmt?.date(a?.updatedDate))},null,8,T2)):p("v-if",!0)]),e.options?.body?(l(),d("div",A2,[Ce(r,{content:e.anonymizeGistContent(a?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])])):p("v-if",!0)]))),256))])])):p("v-if",!0)])):p("v-if",!0)],8,n2)):p("v-if",!0),e.detectedType==="pr"&&e.details?(l(),d("div",{key:2,id:"workspace-preview",role:e.mobileWorkspace?"tabpanel":null,"aria-labelledby":e.mobileWorkspace?"workspace-preview-tab":null,class:"anonymize-preview-col"},[o("div",I2,[t[120]||(t[120]=o("span",{class:"paper-eyebrow"},"Live preview",-1)),o("span",P2,c(e.previewStatus==="ready"?"Pull request with redactions applied":"Pull request preview"),1)]),e.sourceLoading&&e.previewStatus==="idle"?(l(),d("div",V2,"Loading source\u2026")):p("v-if",!0),e.previewStatus==="loading"?(l(),d("div",q2,"Updating the anonymized preview\u2026")):p("v-if",!0),e.previewStatus==="error"?(l(),d("div",M2,[t[121]||(t[121]=o("p",null,"Unable to generate the anonymized preview. The latest redactions have not been verified.",-1)),o("button",{class:"btn btn-outline-ink",type:"button",onClick:t[25]||(t[25]=a=>e.retryPreview())},"Retry preview")])):p("v-if",!0),e.previewStatus==="ready"?(l(),d("div",$2,[o("div",L2,[o("h2",U2,[e.options?.title?(l(),d("span",F2,c(e.anonymizePrContent(e.details?.pullRequest?.title)),1)):p("v-if",!0),o("span",{class:A(["badge",{"badge-success":e.details?.pullRequest?.merged,"badge-warning":e.details?.pullRequest?.state=="open","badge-danger":e.details?.pullRequest?.state=="closed"&&!e.details?.pullRequest?.merged}])},c(e.fmt?.title(e.details?.pullRequest?.merged?"merged":e.details?.pullRequest?.state)),3)]),e.options?.date?(l(),d("small",{key:0,textContent:c(e.fmt?.date(e.details?.pullRequest?.updatedDate))},null,8,z2)):p("v-if",!0)]),e.options?.origin?(l(),d("small",H2,"Pull Request on "+c(e.details?.pullRequest?.baseRepositoryFullName),1)):p("v-if",!0),e.options?.body?(l(),d("div",j2,[Ce(r,{content:e.anonymizePrContent(e.details?.pullRequest?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])])):p("v-if",!0),e.options?.diff||e.options?.comments?(l(),d("nav",B2,[e.options?.diff?(l(),d("button",{key:0,class:A(["paper-tab",{active:e.prTabState?.active=="diff"}]),type:"button",role:"tab",id:"preview-pr-diff-tab","aria-selected":e.prTabState?.active==="diff","aria-controls":"preview-pr-diff-panel",tabindex:e.prTabState?.active==="diff"?0:-1,onKeydown:t[26]||(t[26]=a=>e.previewTabKeydown(a)),onClick:t[27]||(t[27]=a=>e.prTabState.active="diff")},[...t[122]||(t[122]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-code"})],-1),y(" Diff ",-1)])],42,G2)):p("v-if",!0),e.options?.comments?(l(),d("button",{key:1,class:A(["paper-tab",{active:e.prTabState?.active=="comments"}]),type:"button",role:"tab",id:"preview-pr-comments-tab","aria-selected":e.prTabState?.active==="comments","aria-controls":"preview-pr-comments-panel",tabindex:e.prTabState?.active==="comments"?0:-1,onKeydown:t[28]||(t[28]=a=>e.previewTabKeydown(a)),onClick:t[29]||(t[29]=a=>e.prTabState.active="comments")},[t[123]||(t[123]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-comment"})],-1)),o("span",{textContent:c(e.fmt.plural(e.details?.pullRequest?.comments?.length,{0:"No comments",one:"1 comment",other:"{} comments"}))},null,8,K2)],42,W2)):p("v-if",!0)])):p("v-if",!0),!e.options?.diff&&!e.options?.comments?(l(),d("div",Y2,"Diff and comments are hidden by your display settings.")):p("v-if",!0),o("div",J2,[e.options?.diff&&e.prTabState?.active=="diff"?(l(),d("div",Q2,[o("div",{class:"pr-diff",innerHTML:e.sanitize(e.fmt?.diff(e.anonymizePrContent(e.details?.pullRequest?.diff)))},null,8,X2)])):p("v-if",!0),e.options?.comments&&e.prTabState?.active=="comments"?(l(),d("div",Z2,[o("ul",x2,[(l(!0),d(X,null,ae(e.details?.pullRequest?.comments,(a,u)=>(l(),d("li",eS,[o("div",tS,[e.options?.username?(l(),d("span",oS,[t[124]||(t[124]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-user"})],-1)),t[125]||(t[125]=y(" @",-1)),o("span",{textContent:c(e.anonymizePrContent(a?.author))},null,8,sS)])):p("v-if",!0),e.options?.date?(l(),d("span",{key:1,class:"pr-comment-date",textContent:c(e.fmt?.date(a?.updatedDate))},null,8,nS)):p("v-if",!0)]),e.options?.body?(l(),d("div",rS,[Ce(r,{content:e.anonymizePrContent(a?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])])):p("v-if",!0)]))),256))])])):p("v-if",!0)])])):p("v-if",!0)],8,O2)):p("v-if",!0)])],512),[[Y,e.workspaceOpen||e.isUpdate]])],2)}var iS={class:"container-fluid h-100 anonymize-page"},aS={class:"row h-100 flex-column flex-md-row"},lS={class:"col-md sidePanel shadow overflow-auto anonymize-form-col"},dS={class:"form-group"},uS={class:"form-group"},cS={class:"form-check"},pS={class:"form-check-input",type:"checkbox",id:"update",name:"update"},fS={class:"form-group"},hS={class:"form-text text-muted"},mS=["href"],vS={class:"invalid-feedback"},gS={class:"form-text text-muted"},yS={class:"form-group"},bS={id:"idHelp",class:"form-text text-muted"},wS={class:"invalid-feedback"},kS={class:"form-group"},ES={class:"invalid-feedback"},CS={class:"form-group"},_S={class:"form-control",id:"expiration",name:"expiration"},SS={class:"form-group",id:"expiration-date-form"},NS={class:"form-control",type:"date",name:"expirationDate",id:"expirationDate"},DS={class:"accordion mb-3",id:"options"},RS={class:"card"},TS={id:"collapseOne",class:"collapse show","aria-labelledby":"headingOne","data-parent":"#options"},AS={class:"card-body"},OS={class:"form-group mb-0"},IS={class:"form-check"},PS={class:"form-check-input",type:"checkbox",id:"link",name:"link"},VS={class:"form-check"},qS={class:"form-check-input",type:"checkbox",id:"image",name:"image"},MS={class:"form-check"},$S={class:"form-check-input",type:"checkbox",id:"date",name:"date"},LS={class:"form-check"},US={class:"form-check-input",type:"checkbox",id:"username",name:"username"},FS={class:"form-check"},zS={class:"form-check-input",type:"checkbox",id:"comments",name:"comments"},HS={class:"form-check"},jS={class:"form-check-input",type:"checkbox",id:"diff",name:"diff"},BS={class:"form-check"},GS={class:"form-check-input",type:"checkbox",id:"origin",name:"origin"},WS={class:"form-check"},KS={class:"form-check-input",type:"checkbox",id:"title",name:"title"},YS={class:"form-check"},JS={class:"form-check-input",type:"checkbox",id:"body",name:"body"},QS=["textContent"],XS={class:"anonymize-submit-bar"},ZS={key:0,class:"col-md-8 p-2 overflow-auto anonymize-preview-col"},xS={class:"d-flex w-100 justify-content-between align-items-center flex-wrap"},eN={class:"pr-title mb-1"},tN={key:0},oN=["textContent"],sN={key:0},nN={key:1,class:"pr-body shadow-sm p-3 mb-4 rounded",style:{background:"var(--sidebar-bg-color)"}},rN={class:"nav nav-tabs",id:"myTab",role:"tablist"},iN={key:0,class:"nav-item",role:"presentation"},aN={key:1,class:"nav-item",role:"presentation"},lN=["textContent"],dN={class:"tab-content",id:"pills-tabContent"},uN={class:"tab-pane show active",id:"pills-diff",role:"tabpanel","aria-labelledby":"pills-diff-tab"},cN={key:0,class:"pr-diff shadow-sm p-3 mb-4 rounded",style:{background:"var(--sidebar-bg-color)"}},pN={style:{"overflow-x":"auto"}},fN=["innerHTML"],hN={key:0,class:"pr-comments list-group"},mN={class:"pr-comment list-group-item"},vN={class:"d-flex w-100 justify-content-between flex-wrap"},gN={key:0,class:"mb-1"},yN=["textContent"],bN={class:"mb-1"};function fl(e,t){let n=We("markdown"),r=ye("field"),s=ye("form");return l(),d("div",iS,[o("div",aS,[o("div",lS,[o("div",{class:A(["p-0 py-2 m-auto",{card:!e.pullRequestUrl,container:e.pullRequestUrl}])},[N((l(),d("form",{class:A(["form needs-validation",{"card-body":!e.pullRequestUrl}]),name:"anonymizeForm",novalidate:""},[t[30]||(t[30]=ce('
Anonymize \xA0/\xA0 Pull request

Anonymize a pull request

Fill in the details \u2014 it only takes a minute.

Source
',4)),p(" pullRequestUrl "),o("div",dS,[t[2]||(t[2]=o("label",{for:"pullRequestUrl"},"URL of your pull request",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.anonymize?.pullRequestUrl?.invalid}]),name:"pullRequestUrl",id:"pullRequestUrl",placeholder:"https://github.com/owner/repo/pull/123"},null,2),[[r,{state:e.viewState,set:i=>{e.pullRequestUrl=i},value:e.pullRequestUrl,form:"anonymizeForm",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"},change:()=>{e.pullRequestSelected()}}]]),N(o("div",{class:"invalid-feedback"},c(e.pullRequestUrl)+" is not accessible. Some organizations are restricting the access to the repositories. ",513),[[Y,e.anonymize?.pullRequestUrl?.errors?.access]]),N(o("div",{class:"invalid-feedback"},c(e.pullRequestUrl)+" does not exist or is not accessible ",513),[[Y,e.anonymize?.pullRequestUrl?.errors?.missing]]),N(o("div",{class:"invalid-feedback"},c(e.pullRequestUrl)+" is already anonymized ",513),[[Y,e.anonymize?.pullRequestUrl?.errors?.used]])]),N(o("div",null,[o("div",uS,[o("div",cS,[N(o("input",pS,null,512),[[r,{state:e.viewState,set:i=>{e.options.update=i},value:e.options?.update,form:"anonymizeForm",options:{}}]]),t[3]||(t[3]=o("label",{class:"form-check-label",for:"update"},"Auto update",-1)),t[4]||(t[4]=o("small",{id:"updateHelp",class:"form-text text-muted"},"Automatically update the anonymized pull request with the latest updates. The pull request is updated once per day maximum.",-1))])]),t[26]||(t[26]=o("div",{class:"paper-section-eyebrow anonymize-section-title"},[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-conference"})]),y(" Conference ID ")],-1)),p(" Conference "),o("div",fS,[t[5]||(t[5]=o("label",{for:"conference"},[y("Conference ID "),o("span",{class:"text-muted"},"(Optional)")],-1)),N(o("input",{class:A(["form-control",{"is-invalid":e.anonymize?.conference?.invalid}]),id:"conference",name:"conference"},null,2),[[r,{state:e.viewState,set:i=>{e.conference=i},value:e.conference,form:"anonymizeForm",options:{debounce:{default:800,blur:0},updateOn:"default blur"}}]]),N(o("small",hS,[o("a",{target:"_target",href:e.safeUrl(e.conference_data?.url)},c(e.conference_data?.name),9,mS),y(" will expire on "+c(e.fmt?.date(e.conference_data?.endDate))+".",1)],512),[[Y,e.conference_data]]),N(o("div",vS," The conference is not activated. ",512),[[Y,e.anonymize?.conference?.errors?.activated]]),N(o("small",gS," Use the Conference ID that your conference provided you. This will update automatically the anonymization options based on the conference preferences. ",512),[[Y,!e.conference_data]])]),t[27]||(t[27]=o("div",{class:"paper-section-eyebrow anonymize-section-title"},[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-shield"})]),y(" Anonymization Options ")],-1)),p(" Pull Request ID "),o("div",yS,[t[6]||(t[6]=o("label",{for:"pullRequestId"},"Anonymized pull request id",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.anonymize?.pullRequestId?.invalid}]),name:"pullRequestId",id:"pullRequestId"},null,2),[[r,{state:e.viewState,set:i=>{e.pullRequestId=i},value:e.pullRequestId,form:"anonymizeForm",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"}}]]),o("small",bS,"Id used in the url: https://anonymous.4open.science/r/"+c(e.pullRequestId),1),N(o("div",wS," Repository id can only contain letters and numbers ",512),[[Y,e.anonymize?.pullRequestId?.errors?.format]]),N(o("div",{class:"invalid-feedback"},c(e.pullRequestId)+" is already used ",513),[[Y,e.anonymize?.pullRequestId?.errors?.used]])]),p(" Terms "),o("div",kS,[t[7]||(t[7]=o("label",{for:"terms"},"Terms to anonymize",-1)),N(o("textarea",{class:A(["form-control",{"is-invalid":e.anonymize?.terms?.invalid}]),id:"terms",name:"terms",rows:"3"},null,2),[[r,{state:e.viewState,set:i=>{e.terms=i},value:e.terms,form:"anonymizeForm",options:{debounce:250}}]]),t[8]||(t[8]=o("small",{id:"termsHelp",class:"form-text text-muted"},"One term per line. Each term will be replaced by XXX.",-1)),N(o("div",ES," Terms are in an invalid format ",512),[[Y,e.anonymize?.terms?.errors?.format]])]),o("div",CS,[t[10]||(t[10]=o("label",{for:"expiration"},"Expiration strategy",-1)),N((l(),d("select",_S,[...t[9]||(t[9]=[o("option",{value:"never",selected:""},"Never expire",-1),o("option",{value:"redirect"}," Redirect to GitHub when expired ",-1),o("option",{value:"remove"},"Remove when expired",-1)])])),[[r,{state:e.viewState,set:i=>{e.options.expirationMode=i},value:e.options?.expirationMode,form:"anonymizeForm",options:{}}]]),t[11]||(t[11]=o("small",{class:"form-text text-muted"},"Define the expiration strategy for the anonymized repository.",-1))]),N(o("div",SS,[t[12]||(t[12]=o("label",{for:"expirationDate"},"Expiration date of the anonymized repository",-1)),N(o("input",NS,null,512),[[r,{state:e.viewState,set:i=>{e.options.expirationDate=i},value:e.options?.expirationDate,form:"anonymizeForm",options:{}}]]),N(o("small",{class:"form-text text-muted"},"After "+c(e.fmt?.date(e.options?.expirationDate))+", the repository will be removed and the visitor will not be able to see the content of the repository.",513),[[Y,e.options?.expirationMode=="remove"]]),N(o("small",{class:"form-text text-muted"},"After "+c(e.fmt?.date(e.options?.expirationDate))+", the visitors of the anonymized repository will be redirected to "+c(e.pullRequestUrl)+".",513),[[Y,e.options?.expirationMode=="redirect"]])],512),[[Y,e.options?.expirationMode!="never"]]),o("div",DS,[o("div",RS,[t[25]||(t[25]=ce('

',1)),o("div",TS,[o("div",AS,[o("div",OS,[o("div",IS,[N(o("input",PS,null,512),[[r,{state:e.viewState,set:i=>{e.options.link=i},value:e.options?.link,form:"anonymizeForm",options:{}}]]),t[13]||(t[13]=o("label",{class:"form-check-label",for:"link"},"Keep links",-1)),t[14]||(t[14]=o("small",{class:"form-text text-muted"},"Keep or remove all the links.",-1))]),o("div",VS,[N(o("input",qS,null,512),[[r,{state:e.viewState,set:i=>{e.options.image=i},value:e.options?.image,form:"anonymizeForm",options:{}}]]),t[15]||(t[15]=o("label",{class:"form-check-label",for:"image"},"Display images",-1)),t[16]||(t[16]=o("small",{class:"form-text text-muted"},"Images are not anonymized",-1))]),o("div",MS,[N(o("input",$S,null,512),[[r,{state:e.viewState,set:i=>{e.options.date=i},value:e.options?.date,form:"anonymizeForm",options:{}}]]),t[17]||(t[17]=o("label",{class:"form-check-label",for:"date"},"Display dates",-1)),t[18]||(t[18]=o("small",{class:"form-text text-muted"},"Display the date of the Pull Request and the date of the comments.",-1))]),o("div",LS,[N(o("input",US,null,512),[[r,{state:e.viewState,set:i=>{e.options.username=i},value:e.options?.username,form:"anonymizeForm",options:{}}]]),t[19]||(t[19]=o("label",{class:"form-check-label",for:"username"},"Display username",-1))]),o("div",FS,[N(o("input",zS,null,512),[[r,{state:e.viewState,set:i=>{e.options.comments=i},value:e.options?.comments,form:"anonymizeForm",options:{}}]]),t[20]||(t[20]=o("label",{class:"form-check-label",for:"comments"},"Display comments",-1))]),o("div",HS,[N(o("input",jS,null,512),[[r,{state:e.viewState,set:i=>{e.options.diff=i},value:e.options?.diff,form:"anonymizeForm",options:{}}]]),t[21]||(t[21]=o("label",{class:"form-check-label",for:"diff"},"Display diff",-1))]),o("div",BS,[N(o("input",GS,null,512),[[r,{state:e.viewState,set:i=>{e.options.origin=i},value:e.options?.origin,form:"anonymizeForm",options:{}}]]),t[22]||(t[22]=o("label",{class:"form-check-label",for:"origin"},"Display the project name",-1))]),o("div",WS,[N(o("input",KS,null,512),[[r,{state:e.viewState,set:i=>{e.options.title=i},value:e.options?.title,form:"anonymizeForm",options:{}}]]),t[23]||(t[23]=o("label",{class:"form-check-label",for:"title"},"Display the PR title",-1))]),o("div",YS,[N(o("input",JS,null,512),[[r,{state:e.viewState,set:i=>{e.options.body=i},value:e.options?.body,form:"anonymizeForm",options:{}}]]),t[24]||(t[24]=o("label",{class:"form-check-label",for:"body"},"Display the PR body and comment bodies",-1))])])])])])])],512),[[Y,e.pullRequestUrl]]),e.error?(l(),d("div",{key:0,class:"alert alert-danger",role:"alert",textContent:c(e.error)},null,8,QS)):p("v-if",!0),N(o("div",XS,[e.isUpdate?p("v-if",!0):(l(),d("button",{key:0,id:"submit",type:"submit",class:"btn btn-ink btn-block",onClick:t[0]||(t[0]=he(i=>e.submitForm(i,()=>{e.anonymizePullRequest(i)}),["prevent"]))},[...t[28]||(t[28]=[o("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-shield"})],-1),y(" Anonymize ",-1)])])),e.isUpdate?(l(),d("button",{key:1,id:"submit",type:"submit",class:"btn btn-ink btn-block",onClick:t[1]||(t[1]=he(i=>e.submitForm(i,()=>{e.updatePullRequest(i)}),["prevent"]))},[...t[29]||(t[29]=[o("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-save"})],-1),y(" Update ",-1)])])):p("v-if",!0)],512),[[Y,e.pullRequestUrl]])],2)),[[s,e.viewState]])],2)]),e.details?(l(),d("div",ZS,[o("div",xS,[o("h2",eN,[e.options?.title?(l(),d("span",tN,c(e.anonymize(e.details?.pullRequest?.title)),1)):p("v-if",!0),o("span",{class:A(["badge",{"badge-success":e.details?.pullRequest?.merged,"badge-warning":e.details?.pullRequest?.state=="open","badge-danger":e.details?.pullRequest?.state=="closed"&&!e.details?.pullRequest?.merged}])},c(e.fmt?.title(e.details?.pullRequest?.merged?"merged":e.details?.pullRequest?.state)),3)]),e.options?.date?(l(),d("small",{key:0,textContent:c(e.fmt?.date(e.details?.pullRequest?.updatedDate))},null,8,oN)):p("v-if",!0)]),e.options?.origin?(l(),d("small",sN,"Pull Request on "+c(e.details?.pullRequest?.baseRepositoryFullName),1)):p("v-if",!0),e.options?.body?(l(),d("div",nN,[Ce(n,{content:e.anonymize(e.details?.pullRequest?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])])):p("v-if",!0),o("ul",rN,[e.options?.diff?(l(),d("li",iN,[...t[31]||(t[31]=[o("button",{class:"nav-link active",id:"pills-diff-tab","data-toggle":"pill","data-target":"#pills-diff",type:"button",role:"tab","aria-controls":"pills-diff","aria-selected":"true"}," Diff ",-1)])])):p("v-if",!0),e.options?.comments?(l(),d("li",aN,[o("button",{class:A(["nav-link",{active:!e.options?.diff}]),id:"pills-comments-tab","data-toggle":"pill","data-target":"#pills-comments",type:"button",role:"tab","aria-controls":"pills-comments","aria-selected":"false"},[o("span",{textContent:c(e.fmt.plural(e.details?.pullRequest?.comments?.length,{0:"No comment",one:"One Comment",other:"{} Comments"}))},null,8,lN)],2)])):p("v-if",!0)]),o("div",dN,[o("div",uN,[e.options?.diff?(l(),d("div",cN,[o("pre",pN,[o("code",{innerHTML:e.sanitize(e.fmt?.diff(e.anonymize(e.details?.pullRequest?.diff)))},null,8,fN)])])):p("v-if",!0)]),o("div",{class:A(["tab-pane",{"show active":!e.options?.diff}]),id:"pills-comments",role:"tabpanel","aria-labelledby":"pills-comments-tab"},[e.options?.comments?(l(),d("ul",hN,[(l(!0),d(X,null,ae(e.details?.pullRequest?.comments,(i,a)=>(l(),d("li",mN,[o("div",vN,[e.options?.username?(l(),d("h5",gN," @"+c(e.anonymize(i?.author)),1)):p("v-if",!0),e.options?.date?(l(),d("small",{key:1,textContent:c(e.fmt?.date(i?.updatedDate))},null,8,yN)):p("v-if",!0)]),o("p",bN,[e.options?.body?(l(),qt(n,{key:0,class:"pr-comment-body",content:e.anonymize(i?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])):p("v-if",!0)])]))),256))])):p("v-if",!0)],2)])])):p("v-if",!0)])])}var wN={class:"container paper-page claim-page"},kN={class:"paper-settings-main claim-form"},EN={class:"form-group"},CN={class:"invalid-feedback"},_N={class:"form-group"};function hl(e,t){let n=ye("field"),r=ye("form");return l(),d("div",wN,[t[6]||(t[6]=ce('
My work \xA0/\xA0 Claim

Claim an anonymization

Take ownership of an existing anonymized repository so it appears on your dashboard.

',3)),o("div",kN,[t[5]||(t[5]=o("p",{class:"paper-section-copy"},"Use this when an anonymization was created by a co-author or from another account. You must have access to the GitHub repository it was made from.",-1)),N((l(),d("form",{class:"form needs-validation",name:"claimForm",novalidate:"",onSubmit:t[0]||(t[0]=he(s=>e.submitForm(s,()=>{e.claim()}),["prevent"]))},[o("div",EN,[t[1]||(t[1]=o("label",{class:"paper-field-label",for:"repoUrl"},"GitHub repository URL",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.claimForm?.repoUrl?.invalid&&(e.claimForm?.repoUrl?.touched||e.claimForm?.submitted)}]),name:"repoUrl",id:"repoUrl",required:""},null,2),[[n,{state:e.viewState,set:s=>{e.repoUrl=s},value:e.repoUrl,form:"claimForm",options:{}}]]),N(o("div",CN," No anonymization matches this repository and ID. Check both values and that you can access the repository on GitHub. ",512),[[Y,e.claimForm?.repoUrl?.errors?.not_found]])]),o("div",_N,[t[2]||(t[2]=o("label",{class:"paper-field-label",for:"repoId"},"Anonymized repository ID",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.claimForm?.repoId?.invalid&&(e.claimForm?.repoId?.touched||e.claimForm?.submitted)}]),name:"repoId",id:"repoId",required:""},null,2),[[n,{state:e.viewState,set:s=>{e.repoId=s},value:e.repoId,form:"claimForm",options:{}}]]),t[3]||(t[3]=o("small",{id:"idHelp",class:"form-text text-muted"},[y("The ID is the last part of the anonymized URL: "),o("code",null,"anonymous.4open.science/r/"),y(".")],-1))]),t[4]||(t[4]=o("button",{id:"submit",type:"submit",class:"btn btn-ink"}," Claim anonymization ",-1))],32)),[[r,e.viewState]])])])}var SN={class:"container page paper-page conference-page"},NN={class:"paper-crumbs"},DN={class:"here"},RN={class:"d-flex align-items-end flex-wrap",style:{gap:"12px","justify-content":"space-between"}},TN=["textContent"],AN={key:0,class:"paper-page-lede"},ON=["textContent","href"],IN={class:"d-flex align-items-center flex-wrap",style:{gap:"10px"}},PN=["textContent"],VN=["href"],qN={class:"paper-meta-rule"},MN=["textContent"],$N=["textContent"],LN={key:0},UN={class:"search-wrap"},FN={type:"search",id:"search",class:"form-control","aria-label":"Search repositories",placeholder:"Search by ID or source repository\u2026",autocomplete:"off"},zN={class:"dashboard-filter-controls"},HN={class:"dropdown"},jN={class:"btn dropdown-toggle",type:"button",id:"dropdownSort","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},BN={class:"filter-btn-value"},GN={class:"dropdown-menu","aria-labelledby":"dropdownSort"},WN={class:"form-check dropdown-item"},KN={class:"form-check-input",type:"radio",name:"sort",id:"anonymizeDate",value:"-anonymizeDate"},YN={class:"form-check dropdown-item"},JN={class:"form-check-input",type:"radio",name:"sort",id:"sortID",value:"repoId"},QN={class:"form-check dropdown-item"},XN={class:"form-check-input",type:"radio",name:"sort",id:"sortStatus",value:"-status"},ZN={class:"form-check dropdown-item"},xN={class:"form-check-input",type:"radio",name:"sort",id:"sortViews",value:"-pageView"},eD={class:"dropdown"},tD={class:"btn dropdown-toggle",type:"button",id:"dropdownStatus","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},oD={key:0,class:"filter-btn-value"},sD={key:1,class:"filter-btn-value"},nD={class:"dropdown-menu","aria-labelledby":"dropdownStatus"},rD={class:"form-check dropdown-item"},iD=["id"],aD=["for"],lD={class:"dashboard-meta"},dD={class:"dashboard-count"},uD={key:0},cD={key:0},pD={key:1},fD={key:1},hD={key:0,class:"filter-chip"},mD=["onClick","aria-label"],vD={class:"paper-table paper-table-repos w-100",role:"table","aria-label":"Repositories"},gD={class:"cell-anon",role:"cell"},yD={class:"anon-text"},bD=["textContent","href"],wD={class:"anon-sub"},kD={class:"anon-source"},ED=["textContent","href"],CD={key:0},_D=["textContent","href"],SD={key:1},ND=["href"],DD={class:"cell-status",role:"cell"},RD={class:"status-line"},TD=["textContent"],AD={key:0,class:"status-sub"},OD={class:"cell-views num",role:"cell"},ID=["textContent"],PD={class:"cell-expires",role:"cell"},VD={key:0,class:"expires-never"},qD=["textContent"],MD={key:2,class:"expires-past"},$D={key:0},LD={key:3,class:"empty-dash","aria-label":"Not applicable"},UD={class:"cell-actions",role:"cell"},FD={class:"dropdown"},zD=["aria-label"],HD={class:"dropdown-menu dropdown-menu-right"},jD=["href"],BD=["href"],GD={key:0,class:"paper-table-empty"},WD={key:0},KD={key:1},YD={key:2,class:"paper-table-empty-actions"};function ml(e,t){let n=ye("field"),r=ye("form");return l(),d("div",SN,[o("div",null,[o("div",NN,[t[2]||(t[2]=o("a",{href:"/dashboard"},"My work",-1)),t[3]||(t[3]=y(" \xA0/\xA0 ",-1)),t[4]||(t[4]=o("a",{href:"/conferences"},"Conferences",-1)),t[5]||(t[5]=y(" \xA0/\xA0 ",-1)),o("span",DN,c(e.conference?.conferenceID),1)]),o("div",RN,[o("div",null,[o("h1",{class:"paper-page-title",textContent:c(e.conference?.name)},null,8,TN),e.conference?.url?(l(),d("p",AN,[o("a",{target:"_blank",rel:"noopener",textContent:c(e.conference?.url),href:e.safeUrl(e.conference?.url)},null,8,ON)])):p("v-if",!0)]),o("div",IN,[o("span",{class:A(["status-pill",{"status-pill-ready":e.conference?.status=="ready","status-pill-removed":e.conference?.status=="removed"||e.conference?.status=="expired"}])},[o("span",{class:A(["status-dot","status-"+e.conference?.status]),"aria-hidden":"true"},null,2),o("span",{textContent:c(e.fmt?.statusLabel(e.conference?.status))},null,8,PN)],2),o("a",{class:"btn btn-outline-ink",href:e.safeUrl("/conference/"+e.conference?.conferenceID+"/edit")},[...t[6]||(t[6]=[o("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-edit"})],-1),y(" Edit conference",-1)])],8,VN)])]),o("div",qN,[o("span",null,[t[7]||(t[7]=y("ID ",-1)),o("b",{class:"commit-hash",textContent:c(e.conference?.conferenceID)},null,8,MN)]),o("span",null,[t[8]||(t[8]=y("Review window ",-1)),o("b",null,c(e.fmt?.date(e.conference?.startDate,"mediumDate"))+" \u2013 "+c(e.fmt?.date(e.conference?.endDate,"mediumDate")),1)]),o("span",null,[t[9]||(t[9]=y("Repositories ",-1)),o("b",null,c(e.fmt?.number(e.conference?.repositories?.length)),1)]),o("span",null,[t[10]||(t[10]=y("Plan ",-1)),o("b",{textContent:c(e.conference?.plan?.name||e.conference?.plan?.planID||"Free")},null,8,$N)]),e.conference?.price?(l(),d("span",LN,[t[11]||(t[11]=y("Cost so far ",-1)),o("b",null,c(e.fmt?.number(e.conference?.price,2))+" \u20AC",1)])):p("v-if",!0)]),t[32]||(t[32]=o("div",{class:"paper-section-eyebrow"},"Repositories",-1)),N((l(),d("form",{class:"w-100 dashboard-filter-row","aria-label":"Filter repositories","accept-charset":"UTF-8",onSubmit:t[0]||(t[0]=he(s=>e.submitForm(s,()=>{s.preventDefault()}),["prevent"]))},[o("div",UN,[N(o("input",FN,null,512),[[n,{state:e.viewState,set:s=>{e.search=s},value:e.search,form:null,options:{}}]])]),o("div",zN,[o("div",HN,[o("button",jN,[t[12]||(t[12]=o("span",{class:"filter-btn-label"},"Sort",-1)),o("span",BN,c({"-anonymizeDate":"Anonymize date",repoId:"ID","-status":"Status","-pageView":"Views"}[e.orderBy]||"Custom"),1)]),o("div",GN,[t[17]||(t[17]=o("h6",{class:"dropdown-header"},"Order by",-1)),o("div",WN,[N(o("input",KN,null,512),[[n,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[13]||(t[13]=o("label",{class:"form-check-label",for:"anonymizeDate"},"Anonymize date",-1))]),o("div",YN,[N(o("input",JN,null,512),[[n,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[14]||(t[14]=o("label",{class:"form-check-label",for:"sortID"},"ID",-1))]),o("div",QN,[N(o("input",XN,null,512),[[n,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[15]||(t[15]=o("label",{class:"form-check-label",for:"sortStatus"},"Status",-1))]),o("div",ZN,[N(o("input",xN,null,512),[[n,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[16]||(t[16]=o("label",{class:"form-check-label",for:"sortViews"},"Views",-1))])])]),o("div",eD,[o("button",tD,[t[18]||(t[18]=o("span",{class:"filter-btn-label"},"Status",-1)),e.filters?.status?.ready&&e.filters?.status?.expired&&e.filters?.status?.removed?(l(),d("span",oD,"All")):p("v-if",!0),e.filters?.status?.ready&&e.filters?.status?.expired&&e.filters?.status?.removed?p("v-if",!0):(l(),d("span",sD,c((e.filters?.status?.ready?0:1)+(e.filters?.status?.expired?0:1)+(e.filters?.status?.removed?0:1))+" hidden ",1))]),o("div",nD,[t[19]||(t[19]=o("h6",{class:"dropdown-header"},"Show statuses",-1)),(l(!0),d(X,null,ae(e.statusLabels,(s,i,a)=>(l(),d("div",rD,[N(o("input",{class:"form-check-input",type:"checkbox",id:"status-"+i},null,8,iD),[[n,{state:e.viewState,set:u=>{e.filters.status[i]=u},value:e.filters?.status[i],form:null,options:{}}]]),o("label",{class:"form-check-label",for:"status-"+i},c(s),9,aD)]))),256))])])])],32)),[[r,e.viewState]]),o("div",lD,[o("span",dD,[e.filteredRepositories?.length===e.conference?.repositories?.length?(l(),d("span",uD,[y(c(e.fmt?.number(e.conference?.repositories?.length))+" repositor",1),e.conference?.repositories?.length===1?(l(),d("span",cD,"y")):p("v-if",!0),e.conference?.repositories?.length!==1?(l(),d("span",pD,"ies")):p("v-if",!0)])):p("v-if",!0),e.filteredRepositories?.length!==e.conference?.repositories?.length?(l(),d("span",fD,c(e.fmt?.number(e.filteredRepositories?.length))+" of "+c(e.fmt?.number(e.conference?.repositories?.length))+" shown",1)):p("v-if",!0)]),(l(!0),d(X,null,ae(e.filters?.status,(s,i,a)=>(l(),d(X,null,[s===!1?(l(),d("span",hD,[y(" Hiding "+c(e.statusLabels[i])+" ",1),o("button",{type:"button",class:"filter-chip-close",onClick:u=>{e.filters.status[i]=!0},"aria-label":"Show "+e.statusLabels[i]+" again"},"\xD7",8,mD)])):p("v-if",!0)],64))),256))]),o("div",vD,[t[31]||(t[31]=o("div",{class:"paper-table-head",role:"row"},[o("div",{role:"columnheader"},"Repository"),o("div",{role:"columnheader"},"Status"),o("div",{role:"columnheader",class:"num"},"Views"),o("div",{role:"columnheader"},"Expires"),o("div",{role:"columnheader"},[o("span",{class:"sr-only"},"Actions")])],-1)),(l(!0),d(X,null,ae(e.filteredRepositories,(s,i)=>(l(),d("div",{class:A(["paper-table-row",{"repo-inactive":s?.status=="expired"||s?.status=="removed","repo-error":s?.status=="error"}]),role:"row",key:s?.repoId},[o("div",gD,[t[22]||(t[22]=o("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Repository"},[o("use",{href:"#project-type-repo"})],-1)),o("div",yD,[o("a",{class:"repo-name",textContent:c(s?.repoId),href:e.safeUrl("/r/"+s?.repoId+"/")},null,8,bD),o("div",wD,[o("span",kD,[o("a",{target:"_blank",rel:"noopener",textContent:c(s?.source?.fullName),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/")},null,8,ED),s?.options?.update&&s?.source?.branch?(l(),d("span",CD,[t[20]||(t[20]=y(" \xB7 ",-1)),o("a",{target:"_blank",rel:"noopener",textContent:c(s?.source?.branch),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.branch)},null,8,_D)])):p("v-if",!0),s?.source?.commit?(l(),d("span",SD,[t[21]||(t[21]=y(" \xB7 ",-1)),o("a",{class:"commit-hash",target:"_blank",rel:"noopener",href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.commit)},"@"+c(s?.source?.commit?.substring(0,8)),9,ND)])):p("v-if",!0)])])])]),o("div",DD,[o("div",RD,[o("span",{class:A(["status-dot","status-"+(s?.status=="error"?"error":s?.status=="ready"?"ready":s?.status=="expired"||s?.status=="removed"?s?.status:"progress")]),"aria-hidden":"true"},null,2),o("span",{class:"status-word",textContent:c(e.fmt?.statusLabel(s?.status))},null,8,TD)]),s?.anonymizeDate?(l(),d("div",AD,"anonymized "+c(e.fmt?.humanTime(s?.anonymizeDate)),1)):p("v-if",!0)]),o("div",OD,[t[23]||(t[23]=o("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-eye"})],-1)),t[24]||(t[24]=y()),o("span",{textContent:c(e.fmt?.number(s?.pageView))},null,8,ID)]),o("div",PD,[t[26]||(t[26]=o("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-clock"})],-1)),s?.status=="ready"&&(s?.options?.expirationMode==="never"||!s?.options?.expirationDate)?(l(),d("span",VD,"Never")):p("v-if",!0),s?.status=="ready"&&s?.options?.expirationMode!=="never"&&s?.options?.expirationDate?(l(),d("span",{key:1,textContent:c(e.fmt?.humanTime(s?.options?.expirationDate))},null,8,qD)):p("v-if",!0),s?.status=="expired"?(l(),d("span",MD,[t[25]||(t[25]=y("Expired",-1)),s?.options?.expirationDate?(l(),d("span",$D,c(e.fmt?.humanTime(s?.options?.expirationDate)),1)):p("v-if",!0)])):p("v-if",!0),s?.status!="ready"&&s?.status!="expired"?(l(),d("span",LD,"\u2014")):p("v-if",!0)]),o("div",UD,[o("div",FD,[o("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions for "+s?.repoId},[...t[27]||(t[27]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-more"})],-1)])],8,zD),o("div",HD,[o("a",{class:"dropdown-item",href:e.safeUrl("/r/"+s?.repoId+"/")},[...t[28]||(t[28]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-eye"})],-1),y(" View ",-1)])],8,jD),o("a",{class:"dropdown-item",href:e.safeUrl("/anonymize/"+s?.repoId)},[...t[29]||(t[29]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-edit"})],-1),y(" Edit ",-1)])],8,BD)])])])],2))),128)),e.filteredRepositories?.length==0?(l(),d("div",GD,[t[30]||(t[30]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-inbox"})],-1)),e.conference?.repositories?.length?p("v-if",!0):(l(),d("span",WD,"No repository has been submitted to this conference yet.")),e.conference?.repositories?.length?(l(),d("span",KD,"Nothing matches the current filters.")):p("v-if",!0),e.conference?.repositories?.length?(l(),d("div",YD,[o("button",{type:"button",class:"btn btn-outline-ink",onClick:t[1]||(t[1]=s=>{e.search="",e.filters.status.ready=!0,e.filters.status.expired=!0,e.filters.status.removed=!0})},"Clear filters")])):p("v-if",!0)])):p("v-if",!0)])])])}var JD={class:"container page paper-page conferences-page"},QD={class:"row"},XD={class:"w-100"},ZD={class:"search-wrap"},xD={type:"search",id:"search",class:"form-control","aria-label":"Search conferences",placeholder:"Search by name or ID\u2026",autocomplete:"off"},eR={class:"dashboard-filter-controls"},tR={class:"dropdown"},oR={class:"btn dropdown-toggle",type:"button",id:"dropdownSort","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},sR={class:"filter-btn-value"},nR={class:"dropdown-menu","aria-labelledby":"dropdownSort"},rR={class:"form-check dropdown-item"},iR={class:"form-check-input",type:"radio",name:"sort",id:"sortName",value:"name"},aR={class:"form-check dropdown-item"},lR={class:"form-check-input",type:"radio",name:"sort",id:"sortID",value:"conferenceID"},dR={class:"form-check dropdown-item"},uR={class:"form-check-input",type:"radio",name:"sort",id:"sortStatus",value:"-status"},cR={class:"dropdown"},pR={class:"btn dropdown-toggle",type:"button",id:"dropdownStatus","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},fR={key:0,class:"filter-btn-value"},hR={key:1,class:"filter-btn-value"},mR={class:"dropdown-menu","aria-labelledby":"dropdownStatus"},vR={class:"form-check dropdown-item"},gR=["id"],yR=["for"],bR={class:"dashboard-meta"},wR={class:"dashboard-count"},kR={key:0},ER={key:0},CR={key:1},_R={key:0,class:"filter-chip"},SR=["onClick","aria-label"],NR={key:0,class:"conference-feedback",role:"alert"},DR={key:1,class:"conference-feedback",role:"status"},RR={class:"paper-table paper-table-conferences w-100",role:"table","aria-label":"Conferences"},TR={class:"cell-anon",role:"cell"},AR={class:"anon-text"},OR=["textContent","href"],IR={class:"anon-sub"},PR={class:"anon-source"},VR=["textContent"],qR={key:0},MR=["textContent","href"],$R={class:"cell-status",role:"cell"},LR={class:"status-line"},UR=["textContent"],FR={class:"cell-views num",role:"cell"},zR=["textContent"],HR={class:"cell-expires",role:"cell"},jR={key:0},BR={key:1,class:"empty-dash","aria-label":"No review window"},GR={class:"cell-actions",role:"cell"},WR={class:"dropdown"},KR=["disabled","aria-label"],YR={class:"dropdown-menu dropdown-menu-right"},JR=["href"],QR=["href"],XR={key:0},ZR=["onClick"],xR={key:0,class:"paper-table-empty"},eT={key:0},tT={key:1},oT={class:"paper-table-empty-actions"},sT={key:1,href:"/conference/new",class:"btn btn-ink"};function vl(e,t){let n=ye("field"),r=ye("form");return l(),d("div",JD,[o("div",QD,[o("div",XD,[t[10]||(t[10]=ce('
My work \xA0/\xA0 Conferences

Your conferences

Group anonymizations by venue, give chairs a shared dashboard, and set one expiry for every submission.

New conference
',2)),N((l(),d("form",{class:"w-100 dashboard-filter-row","aria-label":"Filter conferences","accept-charset":"UTF-8",onSubmit:t[0]||(t[0]=he(s=>e.submitForm(s,()=>{s.preventDefault()}),["prevent"]))},[o("div",ZD,[N(o("input",xD,null,512),[[n,{state:e.viewState,set:s=>{e.search=s},value:e.search,form:null,options:{}}]])]),o("div",eR,[o("div",tR,[o("button",oR,[t[3]||(t[3]=o("span",{class:"filter-btn-label"},"Sort",-1)),o("span",sR,c({name:"Name",conferenceID:"ID","-status":"Status"}[e.orderBy]||"Custom"),1)]),o("div",nR,[t[7]||(t[7]=o("h6",{class:"dropdown-header"},"Order by",-1)),o("div",rR,[N(o("input",iR,null,512),[[n,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[4]||(t[4]=o("label",{class:"form-check-label",for:"sortName"},"Name",-1))]),o("div",aR,[N(o("input",lR,null,512),[[n,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[5]||(t[5]=o("label",{class:"form-check-label",for:"sortID"},"ID",-1))]),o("div",dR,[N(o("input",uR,null,512),[[n,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[6]||(t[6]=o("label",{class:"form-check-label",for:"sortStatus"},"Status",-1))])])]),o("div",cR,[o("button",pR,[t[8]||(t[8]=o("span",{class:"filter-btn-label"},"Status",-1)),e.filters?.status?.ready&&e.filters?.status?.expired&&e.filters?.status?.removed?(l(),d("span",fR,"All")):p("v-if",!0),e.filters?.status?.ready&&e.filters?.status?.expired&&e.filters?.status?.removed?p("v-if",!0):(l(),d("span",hR,c((e.filters?.status?.ready?0:1)+(e.filters?.status?.expired?0:1)+(e.filters?.status?.removed?0:1))+" hidden ",1))]),o("div",mR,[t[9]||(t[9]=o("h6",{class:"dropdown-header"},"Show statuses",-1)),(l(!0),d(X,null,ae(e.statusLabels,(s,i,a)=>(l(),d("div",vR,[N(o("input",{class:"form-check-input",type:"checkbox",id:"status-"+i},null,8,gR),[[n,{state:e.viewState,set:u=>{e.filters.status[i]=u},value:e.filters?.status[i],form:null,options:{}}]]),o("label",{class:"form-check-label",for:"status-"+i},c(s),9,yR)]))),256))])])])],32)),[[r,e.viewState]]),o("div",bR,[o("span",wR,[e.filteredConferences?.length===e.conferences?.length?(l(),d("span",kR,[y(c(e.fmt?.number(e.conferences?.length))+" conference",1),e.conferences?.length!==1?(l(),d("span",ER,"s")):p("v-if",!0)])):p("v-if",!0),e.filteredConferences?.length!==e.conferences?.length?(l(),d("span",CR,c(e.fmt?.number(e.filteredConferences?.length))+" of "+c(e.fmt?.number(e.conferences?.length))+" shown",1)):p("v-if",!0)]),(l(!0),d(X,null,ae(e.filters?.status,(s,i,a)=>(l(),d(X,null,[s===!1?(l(),d("span",_R,[y(" Hiding "+c(e.statusLabels[i])+" ",1),o("button",{type:"button",class:"filter-chip-close",onClick:u=>{e.filters.status[i]=!0},"aria-label":"Show "+e.statusLabels[i]+" again"},"\xD7",8,SR)])):p("v-if",!0)],64))),256))])]),e.error?(l(),d("div",NR,[o("span",null,c(e.error),1),o("button",{type:"button",class:"btn btn-outline-ink",onClick:t[1]||(t[1]=s=>e.loadConferences())},"Retry")])):p("v-if",!0),e.loading?(l(),d("div",DR,"Loading conferences\u2026")):p("v-if",!0),o("div",RR,[t[24]||(t[24]=o("div",{class:"paper-table-head",role:"row"},[o("div",{role:"columnheader"},"Conference"),o("div",{role:"columnheader"},"Status"),o("div",{role:"columnheader",class:"num"},"Repos"),o("div",{role:"columnheader"},"Review window"),o("div",{role:"columnheader"},[o("span",{class:"sr-only"},"Actions")])],-1)),(l(!0),d(X,null,ae(e.filteredConferences,(s,i)=>(l(),d("div",{class:A(["paper-table-row row-clickable",{"repo-inactive":s?.status=="expired"||s?.status=="removed"}]),role:"row",key:s?.conferenceID},[o("div",TR,[t[13]||(t[13]=o("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Conference"},[o("use",{href:"#project-icon-conference"})],-1)),o("div",AR,[o("a",{class:"repo-name",textContent:c(s?.name),href:e.safeUrl("/conference/"+s?.conferenceID)},null,8,OR),o("div",IR,[o("span",PR,[t[12]||(t[12]=y("ID ",-1)),o("span",{class:"commit-hash",textContent:c(s?.conferenceID)},null,8,VR),s?.url?(l(),d("span",qR,[t[11]||(t[11]=y(" \xB7 ",-1)),o("a",{target:"_blank",rel:"noopener",textContent:c(e.fmt?.limitTo(s?.url,60)),href:e.safeUrl(s?.url)},null,8,MR)])):p("v-if",!0)])])])]),o("div",$R,[o("div",LR,[o("span",{class:A(["status-dot","status-"+s?.status]),"aria-hidden":"true"},null,2),o("span",{class:"status-word",textContent:c(e.fmt?.statusLabel(s?.status))},null,8,UR)])]),o("div",FR,[t[14]||(t[14]=o("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[o("use",{href:"#project-type-repo"})],-1)),t[15]||(t[15]=y()),o("span",{textContent:c(e.fmt?.number(s?.nbRepositories||0))},null,8,zR)]),o("div",HR,[t[16]||(t[16]=o("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-clock"})],-1)),s?.startDate?(l(),d("span",jR,c(e.fmt?.date(s?.startDate,"mediumDate"))+" \u2013 "+c(e.fmt?.date(s?.endDate,"mediumDate")),1)):p("v-if",!0),s?.startDate?p("v-if",!0):(l(),d("span",BR,"\u2014"))]),o("div",GR,[o("div",WR,[o("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",disabled:s?.removing,"aria-label":"Actions for "+s?.name},[...t[17]||(t[17]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-more"})],-1)])],8,KR),o("div",YR,[o("a",{class:"dropdown-item",href:e.safeUrl("/conference/"+s?.conferenceID+"/")},[...t[18]||(t[18]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-eye"})],-1),y(" View ",-1)])],8,JR),o("a",{class:"dropdown-item",href:e.safeUrl("/conference/"+s?.conferenceID+"/edit")},[...t[19]||(t[19]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-edit"})],-1),y(" Edit ",-1)])],8,QR),s?.status!="removed"?(l(),d("div",XR,[t[21]||(t[21]=o("div",{class:"dropdown-divider"},null,-1)),o("button",{type:"button",class:"dropdown-item dropdown-item-danger",onClick:a=>e.removeConference(s)},[...t[20]||(t[20]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-trash"})],-1),y(" Remove ",-1)])],8,ZR)])):p("v-if",!0)])])])],2))),128)),!e.loading&&!e.error&&e.filteredConferences?.length==0?(l(),d("div",xR,[t[23]||(t[23]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-inbox"})],-1)),e.conferences?.length==0?(l(),d("span",eT,"You have not created a conference yet.")):p("v-if",!0),e.conferences?.length>0?(l(),d("span",tT,"Nothing matches the current filters.")):p("v-if",!0),o("div",oT,[e.conferences?.length>0?(l(),d("button",{key:0,type:"button",class:"btn btn-outline-ink",onClick:t[2]||(t[2]=s=>{e.search="",e.filters.status.ready=!0,e.filters.status.expired=!0,e.filters.status.removed=!0})},"Clear filters")):p("v-if",!0),e.conferences?.length==0?(l(),d("a",sT,[...t[22]||(t[22]=[o("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[o("use",{href:"#project-icon-plus"})],-1),y(" New conference",-1)])])):p("v-if",!0)])])):p("v-if",!0)])])])}var nT={class:"container page dashboard-page paper-page"},rT={class:"row"},iT={class:"w-100"},aT={class:"dashboard-heading"},lT=["open"],dT=["aria-expanded"],uT=["stroke-dasharray"],cT={key:1,d:"M7 12c0-4 4-4 5 0s5 4 5 0-4-4-5 0-5 4-5 0",class:"quota-ring-unlimited"},pT={key:0,class:"quota-summary-value"},fT={key:0},hT={class:"quota-panel",id:"dashboard-usage"},mT={class:"quota-panel-heading"},vT={key:1,class:"quota-loading",role:"status"},gT={class:"search-wrap"},yT={type:"search",id:"search",class:"form-control","aria-label":"Search anonymizations",placeholder:"Search projects, IDs, or conferences\u2026",autocomplete:"off"},bT=["aria-expanded"],wT={class:"btn-group",role:"group","aria-label":"Type"},kT=["aria-pressed"],ET=["aria-pressed"],CT=["aria-pressed"],_T=["aria-pressed"],ST={class:"dropdown"},NT={class:"btn dropdown-toggle",type:"button",id:"dropdownSort","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},DT={class:"filter-btn-value"},RT={class:"sr-only"},TT={class:"dropdown-menu","aria-labelledby":"dropdownSort"},AT={class:"form-check dropdown-item"},OT=["onClick","checked","id"],IT=["for"],PT={class:"dropdown"},VT={class:"btn dropdown-toggle",type:"button",id:"dropdownStatus","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},qT={key:0,class:"filter-btn-value"},MT={key:1,class:"filter-btn-value"},$T={class:"dropdown-menu","aria-labelledby":"dropdownStatus"},LT={class:"form-check dropdown-item"},UT=["id"],FT=["for"],zT={key:0,class:"dashboard-meta"},HT={class:"dashboard-view-tabs",role:"group","aria-label":"Project view"},jT=["aria-pressed"],BT=["aria-pressed","aria-label"],GT={class:"dashboard-count"},WT={key:0},KT={key:0},YT={key:1},JT={class:"dashboard-active-filters"},QT=["onClick","aria-label","title"],XT=["aria-busy"],ZT={class:"paper-table-head",role:"row"},xT=["aria-sort"],eA=["aria-sort"],tA=["aria-sort"],oA=["aria-sort"],sA={key:0,class:"paper-table-row paper-table-skeleton",role:"row","aria-hidden":"true"},nA=["onClick"],rA={class:"cell-anon",role:"cell"},iA=["aria-label","title"],aA={class:"project-type-svg","aria-hidden":"true"},lA=["href"],dA={class:"anon-text"},uA={class:"anon-title"},cA=["title","textContent","href"],pA=["textContent"],fA={key:2,class:"type-badge type-coauthor",title:"You are a co-author on this anonymization"},hA={class:"anon-sub"},mA=["title"],vA=["title"],gA=["title"],yA=["textContent"],bA={class:"dashboard-row-meta",role:"presentation"},wA={class:"cell-status",role:"cell"},kA={class:"status-line"},EA=["textContent"],CA=["textContent","title"],_A=["title"],SA=["href"],NA=["onClick"],DA={key:4,class:"status-sub status-sub-date"},RA=["aria-label"],TA={class:"cell-expires",role:"cell"},AA={key:0,class:"expires-never"},OA=["textContent"],IA={key:2,class:"expires-past"},PA={key:3,class:"expires-past"},VA={key:4,class:"empty-dash","aria-label":"Not applicable"},qA={class:"cell-actions",role:"cell"},MA=["onClick","disabled","title","aria-label"],$A=["onClick","data-project-actions","aria-controls","aria-expanded"],LA={key:2,class:"dropdown"},UA=["data-project-actions","aria-label"],FA={class:"dropdown-menu dropdown-menu-right"},zA=["onClick","aria-controls","aria-expanded"],HA=["href"],jA=["href"],BA=["onClick","disabled"],GA=["href"],WA=["onClick"],KA=["onClick"],YA=["onClick"],JA={key:5},QA=["onClick"],XA={key:1,class:"project-details-row",role:"row"},ZA=["id","onKeydown"],xA={class:"project-details-heading"},eO=["onClick"],tO={class:"project-details-list"},oO={key:0},sO={key:1},nO={key:0},rO={key:2},iO={key:0,class:"project-progress-help"},aO=["href"],lO=["onSubmit"],dO=["for"],uO=["id"],cO={class:"project-name-controls"},pO=["id","aria-describedby","disabled"],fO=["disabled"],hO={key:0,class:"project-name-error",role:"alert"},mO={key:1,role:"status"},vO={key:0,class:"paper-table-empty"},gO={key:0},yO={key:1},bO={class:"paper-table-empty-actions"},wO={key:1,href:"/anonymize",class:"btn btn-ink"},kO={key:0,class:"dashboard-pagination"},EO={key:0,role:"alert"},CO=["disabled"];function gl(e,t){let n=We("quota-usage"),r=ye("field"),s=ye("form");return l(),d("div",nT,[o("div",rT,[o("div",iT,[o("div",aT,[o("div",null,[t[27]||(t[27]=o("h1",{class:"paper-page-title"},"Projects",-1)),t[28]||(t[28]=o("p",{class:"paper-page-lede"},"Manage your anonymous links.",-1)),o("details",{class:"dashboard-quota",open:e.quotaExpanded,onToggle:t[1]||(t[1]=i=>e.quotaExpanded=i.target.open),onKeydown:t[2]||(t[2]=No(he(i=>e.closeQuota(),["prevent","stop"]),["esc"]))},[o("summary",{"aria-controls":"dashboard-usage","aria-expanded":e.quotaExpanded},[(l(),d("svg",{class:A(["quota-summary-ring",e.quota?"quota-"+e.quota.repository.level:""]),viewBox:"0 0 24 24","aria-hidden":"true"},[t[21]||(t[21]=o("circle",{class:"quota-ring-track",cx:"12",cy:"12",r:"9"},null,-1)),e.quota&&!e.quota.repository.unlimited?(l(),d("circle",{key:0,class:"quota-ring-fill",cx:"12",cy:"12",r:"9",pathLength:"100","stroke-dasharray":e.quota.repository.percent+" 100"},null,8,uT)):p("v-if",!0),e.quota?.repository.unlimited?(l(),d("path",cT)):p("v-if",!0)],2)),t[23]||(t[23]=o("span",{class:"quota-summary-label"},"Usage",-1)),e.quota?(l(),d("span",pT,[y(c(e.fmt.number(e.quota.repository.used)),1),e.quota.repository.unlimited?p("v-if",!0):(l(),d("span",fT," / "+c(e.fmt.number(e.quota.repository.total)),1)),t[22]||(t[22]=y(" repos",-1))])):p("v-if",!0),t[24]||(t[24]=o("svg",{class:"project-type-svg quota-summary-chevron","aria-hidden":"true"},[o("use",{href:"#project-icon-chevron"})],-1))],8,dT),o("div",hT,[o("div",mT,[t[26]||(t[26]=o("h2",null,"Account usage",-1)),o("button",{type:"button",class:"project-close","aria-label":"Close usage",onClick:t[0]||(t[0]=i=>e.closeQuota())},[...t[25]||(t[25]=[o("svg",{class:"project-type-svg","aria-hidden":"true"},[o("use",{href:"#project-icon-close"})],-1)])])]),e.quota?(l(),qt(n,{key:0,quota:e.quota,fmt:e.fmt},null,8,["quota","fmt"])):(l(),d("p",vT,"Loading usage\u2026"))])],40,lT)]),t[29]||(t[29]=ce('',1))]),p(" Search + filters "),N((l(),d("form",{class:"w-100 dashboard-filter-row","aria-label":"Filter anonymizations","accept-charset":"UTF-8",onSubmit:t[9]||(t[9]=he(i=>e.submitForm(i,()=>{i.preventDefault()}),["prevent"]))},[o("div",gT,[N(o("input",yT,null,512),[[r,{state:e.viewState,set:i=>{e.search=i},value:e.search,form:null,options:{}}]])]),o("button",{class:"btn dashboard-filters-toggle",type:"button","aria-expanded":e.filtersExpanded,"aria-controls":"dashboard-filter-controls",onClick:t[3]||(t[3]=i=>e.filtersExpanded=!e.filtersExpanded)},[...t[30]||(t[30]=[y("Filters",-1),o("svg",{class:"project-type-svg","aria-hidden":"true"},[o("use",{href:"#project-icon-filter"})],-1)])],8,bT),o("div",{id:"dashboard-filter-controls",class:A(["dashboard-filter-controls",{expanded:e.filtersExpanded}])},[o("div",wT,[o("button",{type:"button",class:A(["btn",{"btn-primary":e.typeFilter==="all"}]),onClick:t[4]||(t[4]=i=>e.typeFilter="all"),"aria-pressed":e.typeFilter==="all"},"All",10,kT),o("button",{type:"button",class:A(["btn dashboard-type-filter",{"btn-primary":e.typeFilter==="repo"}]),title:"Repositories",onClick:t[5]||(t[5]=i=>e.typeFilter="repo"),"aria-pressed":e.typeFilter==="repo"},[...t[31]||(t[31]=[o("svg",{class:"project-type-svg","aria-hidden":"true"},[o("use",{href:"#project-type-repo"})],-1),o("span",{class:"type-filter-label"},"Repos",-1)])],10,ET),o("button",{type:"button",class:A(["btn dashboard-type-filter",{"btn-primary":e.typeFilter==="pr"}]),title:"Pull requests",onClick:t[6]||(t[6]=i=>e.typeFilter="pr"),"aria-pressed":e.typeFilter==="pr"},[...t[32]||(t[32]=[o("svg",{class:"project-type-svg","aria-hidden":"true"},[o("use",{href:"#project-type-pr"})],-1),o("span",{class:"type-filter-label"},"PRs",-1)])],10,CT),o("button",{type:"button",class:A(["btn dashboard-type-filter",{"btn-primary":e.typeFilter==="gist"}]),title:"Gists",onClick:t[7]||(t[7]=i=>e.typeFilter="gist"),"aria-pressed":e.typeFilter==="gist"},[...t[33]||(t[33]=[o("svg",{class:"project-type-svg","aria-hidden":"true"},[o("use",{href:"#project-type-gist"})],-1),o("span",{class:"type-filter-label"},"Gists",-1)])],10,_T)]),o("div",{id:"dashboard-extra-filters",class:A(["dashboard-extra-filters",{expanded:e.filtersExpanded}])},[o("div",ST,[o("button",NT,[t[35]||(t[35]=o("span",{class:"filter-btn-label"},"Sort",-1)),o("span",DT,c(e.sortLabel()),1),(l(),d("svg",{class:A(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[34]||(t[34]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)),o("span",RT,c(e.sortDesc()?"descending":"ascending"),1)]),o("div",TT,[t[36]||(t[36]=o("h6",{class:"dropdown-header"},"Order by",-1)),(l(!0),d(X,null,ae(e.sortFields,(i,a,u)=>(l(),d("div",AT,[o("input",{class:"form-check-input",type:"radio",name:"sort",onClick:f=>e.setSort(a,i.defaultDesc),checked:e.isSortedBy(a),id:"sort-"+u},null,8,OT),o("label",{class:"form-check-label",for:"sort-"+u},c(i?.label),9,IT)]))),256)),t[37]||(t[37]=o("div",{class:"dropdown-divider"},null,-1)),o("button",{type:"button",class:"dropdown-item",onClick:t[8]||(t[8]=i=>e.toggleSortDirection())},c(e.sortDesc()?"Switch to ascending":"Switch to descending"),1)])]),o("div",PT,[o("button",VT,[t[38]||(t[38]=o("span",{class:"filter-btn-label"},"Status",-1)),e.hasHiddenStatus()?p("v-if",!0):(l(),d("span",qT,"All")),e.hasHiddenStatus()?(l(),d("span",MT,c(e.hiddenStatusCount())+" hidden",1)):p("v-if",!0)]),o("div",$T,[t[39]||(t[39]=o("h6",{class:"dropdown-header"},"Show statuses",-1)),(l(!0),d(X,null,ae(e.statusKeyLabels,(i,a,u)=>(l(),d("div",LT,[N(o("input",{class:"form-check-input",type:"checkbox",id:"status-"+a},null,8,UT),[[r,{state:e.viewState,set:f=>{e.filters.status[a]=f},value:e.filters?.status[a],form:null,options:{}}]]),o("label",{class:"form-check-label",for:"status-"+a},c(i),9,FT)]))),256))])])],2)],2)],32)),[[s,e.viewState]]),p(" Result count + active filter chips "),e.loading?p("v-if",!0):(l(),d("div",zT,[o("div",HT,[o("button",{type:"button","aria-pressed":e.projectView==="all",onClick:t[10]||(t[10]=i=>e.setProjectView("all")),"aria-label":"All projects"},[...t[40]||(t[40]=[o("span",{class:"dashboard-view-long"},"All projects",-1),o("span",{class:"dashboard-view-short","aria-hidden":"true"},"All",-1)])],8,jT),o("button",{type:"button","aria-pressed":e.projectView==="attention",onClick:t[11]||(t[11]=i=>e.setProjectView("attention")),"aria-label":"Needs attention "+e.attentionCount()},[t[41]||(t[41]=o("span",{class:"dashboard-attention-prefix"},"Needs ",-1)),t[42]||(t[42]=o("span",null,"attention",-1)),t[43]||(t[43]=y()),o("span",{class:A(["attention-count",{"has-attention":e.attentionCount()>0}])},c(e.attentionCount()),3)],8,BT)]),o("span",GT,[(e.dashboardTotals?.filtered??e.filteredItems?.length)===(e.dashboardTotals?.total??e.items?.length)?(l(),d("span",WT,[y(c(e.fmt?.number(e.dashboardTotals?.total??e.items?.length))+" project",1),(e.dashboardTotals?.total??e.items?.length)!==1?(l(),d("span",KT,"s")):p("v-if",!0)])):(l(),d("span",YT,c(e.fmt?.number(e.dashboardTotals?.filtered??e.filteredItems?.length))+" of "+c(e.fmt?.number(e.dashboardTotals?.total??e.items?.length))+" shown",1))]),o("div",JT,[(l(!0),d(X,null,ae(e.filters?.status,(i,a,u)=>(l(),d(X,null,[i===!1?(l(),d("button",{key:0,type:"button",class:"filter-chip",onClick:f=>e.filters.status[a]=!0,"aria-label":"Show "+e.statusKeyLabels[a]+" again",title:"Show "+e.statusKeyLabels[a]+" again"},[y(c(e.statusKeyLabels[a])+" hidden",1),t[44]||(t[44]=o("svg",{class:"project-type-svg","aria-hidden":"true"},[o("use",{href:"#project-icon-close"})],-1))],8,QT)):p("v-if",!0)],64))),256)),e.typeFilter!=="all"?(l(),d("button",{key:0,type:"button",class:"filter-chip",onClick:t[12]||(t[12]=i=>e.typeFilter="all"),"aria-label":"Show all project types"},[y(c(e.typeFilter==="repo"?"Repositories":e.typeFilter==="pr"?"Pull requests":"Gists"),1),t[45]||(t[45]=o("svg",{class:"project-type-svg","aria-hidden":"true"},[o("use",{href:"#project-icon-close"})],-1))])):p("v-if",!0),e.showClearFilters()?(l(),d("button",{key:1,type:"button",class:"btn-link-inline",onClick:t[13]||(t[13]=i=>e.clearFilters())},"Clear filters")):p("v-if",!0)])]))]),p(" Table "),o("div",{class:"paper-table paper-table-dashboard",role:"table","aria-label":"Anonymizations","aria-busy":e.loading},[o("div",ZT,[o("div",{role:"columnheader","aria-sort":e.isSortedBy("_label")?e.sortDesc()?"descending":"ascending":"none"},[o("button",{type:"button",class:A(["sortable",{active:e.isSortedBy("_label")}]),onClick:t[14]||(t[14]=i=>e.setSort("_label"))},[t[47]||(t[47]=y(" Project ",-1)),e.isSortedBy("_label")?(l(),d("svg",{key:0,class:A(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[46]||(t[46]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)],8,xT),o("div",{role:"columnheader","aria-sort":e.isSortedBy("status")?e.sortDesc()?"descending":"ascending":"none"},[o("button",{type:"button",class:A(["sortable",{active:e.isSortedBy("status")}]),onClick:t[15]||(t[15]=i=>e.setSort("status"))},[t[49]||(t[49]=y(" Status ",-1)),e.isSortedBy("status")?(l(),d("svg",{key:0,class:A(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[48]||(t[48]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)],8,eA),o("div",{role:"columnheader",class:"num","aria-sort":e.isSortedBy("pageView")?e.sortDesc()?"descending":"ascending":"none"},[o("button",{type:"button",class:A(["sortable",{active:e.isSortedBy("pageView")}]),onClick:t[16]||(t[16]=i=>e.setSort("pageView"))},[t[51]||(t[51]=y(" Views ",-1)),e.isSortedBy("pageView")?(l(),d("svg",{key:0,class:A(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[50]||(t[50]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)],8,tA),o("div",{role:"columnheader","aria-sort":e.isSortedBy("options.expirationDate")?e.sortDesc()?"descending":"ascending":"none"},[o("button",{type:"button",class:A(["sortable",{active:e.isSortedBy("options.expirationDate")}]),onClick:t[17]||(t[17]=i=>e.setSort("options.expirationDate"))},[t[53]||(t[53]=y(" Expires ",-1)),e.isSortedBy("options.expirationDate")?(l(),d("svg",{key:0,class:A(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[52]||(t[52]=[o("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)],8,oA),t[54]||(t[54]=o("div",{role:"columnheader"},[o("span",{class:"sr-only"},"Actions")],-1))]),p(" Loading skeleton: keeps the layout stable while the three lists load "),(l(),d(X,null,ae([1,2,3,4],(i,a)=>(l(),d(X,null,[e.loading?(l(),d("div",sA,[...t[55]||(t[55]=[o("div",{class:"cell-anon",role:"cell"},[o("span",{class:"skeleton skeleton-badge"}),o("div",{class:"anon-text"},[o("span",{class:"skeleton skeleton-line",style:{width:"38%"}}),o("span",{class:"skeleton skeleton-line skeleton-line-sm",style:{width:"56%"}})])],-1),o("div",{class:"cell-status",role:"cell"},[o("span",{class:"skeleton skeleton-line",style:{width:"60%"}})],-1),o("div",{class:"cell-views num",role:"cell"},[o("span",{class:"skeleton skeleton-line",style:{width:"40%"}})],-1),o("div",{class:"cell-expires",role:"cell"},[o("span",{class:"skeleton skeleton-line",style:{width:"55%"}})],-1),o("div",{class:"cell-actions",role:"cell"},null,-1)])])):p("v-if",!0)],64))),64)),(l(!0),d(X,null,ae(e.filteredItems,(i,a)=>(l(),d(X,{key:i?._type+":"+(i?._id||a)},[e.loading?p("v-if",!0):(l(),d("div",{key:0,class:A(["paper-table-row",{"repo-inactive":i?._statusKey=="expired"||i?._statusKey=="removed","repo-error":i?.status=="error","row-clickable":!!i?._viewUrl}]),role:"row",onClick:u=>e.openItem(i,u)},[o("div",rA,[o("span",{class:"project-type-icon",role:"img","aria-label":i?._type==="repo"?"Repository":i?._type==="pr"?"Pull request":"Gist",title:i?._type==="repo"?"Repository":i?._type==="pr"?"Pull request":"Gist"},[(l(),d("svg",aA,[o("use",{href:"#project-type-"+i._type},null,8,lA)]))],8,iA),o("div",dA,[o("div",uA,[i?._viewUrl?(l(),d("a",{key:0,class:"repo-name",title:i._label,textContent:c(i?._label),href:e.safeUrl(i?._viewUrl)},null,8,cA)):p("v-if",!0),i?._viewUrl?p("v-if",!0):(l(),d("span",{key:1,class:"repo-name repo-name-static",textContent:c(i?._label)},null,8,pA)),i?.role==="coauthor"?(l(),d("span",fA,"Co-author")):p("v-if",!0)]),o("div",hA,[i?._id?(l(),d("code",{key:0,class:"anonymous-id",title:i._id},c(i._id),9,mA)):p("v-if",!0),i?._type==="repo"&&i?.source?.commit?(l(),d("span",{key:1,class:"commit-hash",title:i.source.commit},c(i.source.commit.substring(0,8)),9,vA)):p("v-if",!0),i?.conference?(l(),d("span",{key:2,class:"cell-conf conf-tag",title:i?.conference},[t[56]||(t[56]=o("svg",{class:"project-type-svg","aria-hidden":"true"},[o("use",{href:"#project-icon-conference"})],-1)),t[57]||(t[57]=y()),o("span",{textContent:c(i?.conference)},null,8,yA)],8,gA)):p("v-if",!0)])])]),o("div",bA,[o("div",wA,[o("div",kA,[o("span",{class:A(["status-dot","status-"+i?._statusKey]),"aria-hidden":"true"},null,2),o("span",{class:"status-word",textContent:c(e.fmt?.statusLabel(i?.status))},null,8,EA)]),i?.status=="error"&&i?.statusMessage?(l(),d("div",{key:0,class:"status-sub status-sub-error",textContent:c(e.fmt?.statusMsg(i?.statusMessage)),title:i?.statusMessage},null,8,CA)):p("v-if",!0),i?._stale?(l(),d("div",{key:1,class:"status-sub status-sub-warn",title:"Last activity "+e.fmt?.humanTime(i?.anonymizeDate||i?.lastView)}," Last activity "+c(e.fmt?.humanTime(i?.anonymizeDate||i?.lastView))+" \xB7 may be stuck ",9,_A)):p("v-if",!0),i.status==="error"&&i._editUrl?(l(),d("a",{key:2,class:"project-attention-action",href:e.safeUrl(i._editUrl)},"Fix source",8,SA)):p("v-if",!0),i._stale||i._broken?(l(),d("button",{key:3,type:"button",class:"project-attention-action",onClick:he(u=>e.showProjectDetails(i),["stop"])},c(i._broken?"Review details":"Check progress"),9,NA)):p("v-if",!0),i?.status!="error"&&!i?._stale&&i?.anonymizeDate?(l(),d("div",DA," anonymized "+c(e.fmt?.humanTime(i?.anonymizeDate)),1)):p("v-if",!0)]),o("div",{class:"cell-views num",role:"cell","aria-label":e.fmt.number(i.pageView)+" views"},[t[58]||(t[58]=o("svg",{class:"project-type-svg mobile-meta-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-eye"})],-1)),o("span",null,c(e.fmt.number(i.pageView)),1)],8,RA),o("div",TA,[t[59]||(t[59]=o("svg",{class:"project-type-svg mobile-meta-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-clock"})],-1)),i?._expiry?.kind==="never"?(l(),d("span",AA,"Never")):p("v-if",!0),i?._expiry?.kind==="date"?(l(),d("span",{key:1,textContent:c(e.fmt?.humanTime(i?._expiry?.date))},null,8,OA)):p("v-if",!0),i?._expiry?.kind==="expired"&&i?._expiry?.date?(l(),d("span",IA,"Expired "+c(e.fmt?.humanTime(i?._expiry?.date)),1)):p("v-if",!0),i?._expiry?.kind==="expired"&&!i?._expiry?.date?(l(),d("span",PA,"Expired")):p("v-if",!0),i?._expiry?.kind==="none"?(l(),d("span",VA,"\u2014")):p("v-if",!0)])]),o("div",qA,[i._viewUrl?(l(),d("button",{key:0,type:"button",class:"copy-link-inline",onClick:he(u=>e.copyLink(i),["stop"]),disabled:!!e.copyingId,title:"Copy anonymous link for "+i._label,"aria-label":"Copy anonymous link for "+i._label},[...t[60]||(t[60]=[o("svg",{class:"project-type-svg","aria-hidden":"true"},[o("use",{href:"#project-icon-copy"})],-1)])],8,MA)):p("v-if",!0),i._broken?(l(),d("button",{key:1,type:"button",class:"project-details-button",onClick:he(u=>e.showProjectDetails(i),["stop"]),"data-project-actions":encodeURIComponent(i._type+":"+i._id),"aria-controls":e.projectDetailsId(i),"aria-expanded":e.selectedProject===i},"Details",8,$A)):p("v-if",!0),i?._broken?p("v-if",!0):(l(),d("div",LA,[o("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","data-project-actions":encodeURIComponent(i._type+":"+i._id),"aria-label":"Actions for "+i?._name},[...t[61]||(t[61]=[o("svg",{class:"project-type-svg","aria-hidden":"true"},[o("use",{href:"#project-icon-more"})],-1)])],8,UA),o("div",FA,[o("button",{type:"button",class:"dropdown-item",onClick:u=>e.showProjectDetails(i),"aria-controls":e.projectDetailsId(i),"aria-expanded":e.selectedProject===i},"Project details & name",8,zA),o("a",{class:"dropdown-item",href:e.safeUrl(i?._viewUrl)}," View ",8,HA),i?._type==="repo"&&i?.options?.page&&i?.status=="ready"?(l(),d("a",{key:0,class:"dropdown-item",target:"_self",href:e.safeUrl("/w/"+i?.repoId+"/")}," View page ",8,jA)):p("v-if",!0),i?._viewUrl?(l(),d("button",{key:1,type:"button",class:"dropdown-item",onClick:u=>e.copyLink(i),disabled:!!e.copyingId}," Copy anonymous link ",8,BA)):p("v-if",!0),o("a",{class:"dropdown-item",href:e.safeUrl(i?._editUrl)}," Edit ",8,GA),i?.status=="ready"||i?.status=="error"?(l(),d("button",{key:2,type:"button",class:"dropdown-item",onClick:u=>e.refreshItem(i)}," Force update ",8,WA)):p("v-if",!0),i?.status=="removed"?(l(),d("button",{key:3,type:"button",class:"dropdown-item",onClick:u=>e.refreshItem(i)}," Enable ",8,KA)):p("v-if",!0),i?.status=="expired"?(l(),d("button",{key:4,type:"button",class:"dropdown-item",onClick:u=>e.extendItem(i)}," Extend 6 months ",8,YA)):p("v-if",!0),(i?.status=="ready"||i?.status=="expired"||i?.status=="error")&&i?.role!=="coauthor"?(l(),d("div",JA,[t[62]||(t[62]=o("div",{class:"dropdown-divider"},null,-1)),o("button",{type:"button",class:"dropdown-item dropdown-item-danger",onClick:u=>e.removeItem(i)}," Remove ",8,QA)])):p("v-if",!0)])]))])],10,nA)),!e.loading&&e.selectedProject===i?(l(),d("div",XA,[o("div",{class:"project-details",role:"cell","aria-colspan":"5",id:e.projectDetailsId(i),tabindex:"-1",onKeydown:No(he(u=>e.closeProjectDetails(i),["stop"]),["esc"])},[o("div",xA,[t[64]||(t[64]=o("h2",null,"Project details",-1)),o("button",{type:"button",class:"project-close",onClick:u=>e.closeProjectDetails(i),"aria-label":"Close project details"},[...t[63]||(t[63]=[o("svg",{class:"project-type-svg","aria-hidden":"true"},[o("use",{href:"#project-icon-close"})],-1)])],8,eO)]),o("dl",tO,[o("div",null,[t[65]||(t[65]=o("dt",null,"Source",-1)),o("dd",null,c(i._source||"Not available"),1)]),o("div",null,[t[66]||(t[66]=o("dt",null,"Anonymous ID",-1)),o("dd",null,[o("code",null,c(i._id||"Missing identifier"),1)])]),i.source?.commit?(l(),d("div",oO,[t[67]||(t[67]=o("dt",null,"Commit",-1)),o("dd",null,[o("code",null,c(i.source.commit),1)])])):p("v-if",!0),i.conference?(l(),d("div",sO,[t[68]||(t[68]=o("dt",null,"Conference",-1)),o("dd",null,c(i.conference),1)])):p("v-if",!0),o("div",null,[t[69]||(t[69]=o("dt",null,"Status",-1)),o("dd",null,[y(c(e.fmt.statusLabel(i.status)),1),i.statusMessage?(l(),d("span",nO," \xB7 "+c(e.fmt.statusMsg(i.statusMessage)),1)):p("v-if",!0)])]),i.anonymizeDate?(l(),d("div",rO,[t[70]||(t[70]=o("dt",null,"Last anonymized",-1)),o("dd",null,c(e.fmt.humanTime(i.anonymizeDate)),1)])):p("v-if",!0)]),i._stale?(l(),d("p",iO,"This download has not progressed recently. Check the source access and selected branch before retrying.")):p("v-if",!0),i._editUrl?(l(),d("a",{key:1,class:"project-attention-action",href:e.safeUrl(i._editUrl)},c(e.needsAttention(i)?"Check source settings":"Edit anonymization settings"),9,aO)):p("v-if",!0),i._id?(l(),d("form",{key:2,class:"project-name-form",onSubmit:he(u=>e.saveProjectName(i),["prevent"])},[o("label",{for:"project-name-"+i._type+"-"+i._id},"Project name",8,dO),o("p",{id:"project-name-help-"+i._type+"-"+i._id},"Only you see this name. Leave it blank to use the default.",8,uO),o("div",cO,[N(o("input",{class:"form-control",type:"text",id:"project-name-"+i._type+"-"+i._id,"aria-describedby":"project-name-help-"+i._type+"-"+i._id,maxlength:"100","onUpdate:modelValue":t[18]||(t[18]=u=>e.projectName=u),disabled:e.nameSaving},null,8,pO),[[Ji,e.projectName]]),o("button",{class:"btn btn-ink",type:"submit",disabled:e.nameSaving},c(e.nameSaving?"Saving\u2026":"Save name"),9,fO)]),e.nameError?(l(),d("p",hO,c(e.nameError),1)):p("v-if",!0),e.nameMessage?(l(),d("p",mO,c(e.nameMessage),1)):p("v-if",!0)],40,lO)):p("v-if",!0)],40,ZA)])):p("v-if",!0)],64))),128)),!e.loading&&e.filteredItems?.length==0?(l(),d("div",vO,[t[72]||(t[72]=o("svg",{class:"project-type-svg project-empty-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-inbox"})],-1)),e.hasProjects()?p("v-if",!0):(l(),d("span",gO,"You have no anonymizations yet.")),e.hasProjects()?(l(),d("span",yO,"Nothing matches the current filters.")):p("v-if",!0),o("div",bO,[e.hasActiveFilters()?(l(),d("button",{key:0,type:"button",class:"btn btn-outline-ink",onClick:t[19]||(t[19]=i=>e.clearFilters())},"Clear filters")):p("v-if",!0),e.hasProjects()?p("v-if",!0):(l(),d("a",wO,[...t[71]||(t[71]=[o("svg",{class:"project-type-svg","aria-hidden":"true"},[o("use",{href:"#project-icon-plus"})],-1),y(" New anonymization",-1)])]))])])):p("v-if",!0)],8,XT)]),e.dashboardCursor||e.dashboardError?(l(),d("div",kO,[e.dashboardError?(l(),d("p",EO,c(e.dashboardError),1)):p("v-if",!0),e.dashboardCursor?(l(),d("button",{key:1,type:"button",class:"btn",onClick:t[20]||(t[20]=i=>e.loadMoreProjects()),disabled:e.loadingMore},c(e.loadingMore?"Loading\u2026":"Load more projects"),9,CO)):p("v-if",!0)])):p("v-if",!0)])}var _O={class:"explorer-page"},SO=["aria-label"],NO={class:"ui-icon","aria-hidden":"true"},DO=["href"],RO=["textContent"],TO={class:"leftCol-head"},AO={class:"leftCol-search"},OO={class:"tree-search-box"},IO=["href"],PO={type:"text",class:"tree-search-input",placeholder:"Search files","aria-label":"Search files"},VO={class:"leftCol-project-header"},qO=["textContent"],MO={class:"project-file-count"},$O={class:"leftCol-body"},LO={key:0,class:"paper-inline-warning",role:"alert"},UO={key:1,class:"paper-inline-warning",role:"alert"},FO={class:"leftCol-foot"},zO=["title"],HO=["title"],jO=["title"],BO={key:2,class:"last-update",title:"Older repositories have no recorded publication date. The source commit date does not establish when files became available here."},GO={class:"explorer-main"},WO={class:"status-bar"},KO={class:"breadcrumb paths","aria-label":"Path"},YO=["textContent"],JO={class:"status-bar-actions"},QO=["href"],XO={class:"d-none d-md-inline"},ZO={class:"ui-icon","aria-hidden":"true"},xO=["href"],eI={class:"d-none d-md-inline"},tI=["href"],oI=["href"],sI=["href"],nI=["href"],rI={class:"explorer-content"};function yl(e,t){let n=We("tree"),r=We("partial-view"),s=ye("field");return l(),d("div",_O,[N(o("button",{class:"sidebar-toggle",onClick:t[0]||(t[0]=i=>e.sidebarCollapsed=!e.sidebarCollapsed),"aria-label":e.sidebarCollapsed?"Show files":"Hide files"},[(l(),d("svg",NO,[o("use",{href:e.sidebarCollapsed?"#ui-icon-folder":"#project-icon-close"},null,8,DO)])),o("span",{textContent:c(e.sidebarCollapsed?"Files":"Close")},null,8,RO)],8,SO),[[Y,e.files?.length]]),N(o("div",{class:A(["leftCol",{collapsed:e.sidebarCollapsed}])},[o("div",TO,[t[7]||(t[7]=o("span",{class:"leftCol-eyebrow"},"Files",-1)),o("button",{class:"leftCol-close","aria-label":"Close files",onClick:t[1]||(t[1]=i=>e.sidebarCollapsed=!0)},[...t[6]||(t[6]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-close"})],-1)])])]),o("div",AO,[o("div",OO,[(l(),d("svg",{class:A(["ui-icon tree-search-icon",{"fa-spin":e.fileSearchLoading}]),"aria-hidden":"true"},[o("use",{href:e.fileSearchLoading?"#ui-icon-spinner":"#ui-icon-search"},null,8,IO)],2)),N(o("input",PO,null,512),[[s,{state:e.viewState,set:i=>{e.fileSearchQuery=i},value:e.fileSearchQuery,form:null,options:{debounce:300},change:()=>{e.onFileSearchChange()}}]]),N(o("kbd",{class:"tree-search-kbd"},c(e.isMac?"\u2318":"Ctrl+")+"K",513),[[Y,!e.fileSearchQuery]]),N(o("button",{class:"tree-search-clear","aria-label":"Clear search",onClick:t[2]||(t[2]=i=>{e.fileSearchQuery="",e.onFileSearchChange()})},"\xD7",512),[[Y,e.fileSearchQuery]])])]),o("div",VO,[o("span",{class:"project-name",textContent:c(e.repoId)},null,8,qO),o("span",MO,c(e.fileCounts?.[""]||e.files?.length)+" files",1)]),o("div",$O,[e.options?.truncatedFolders?.length>0?(l(),d("div",LO,[t[8]||(t[8]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-warning"})],-1)),y(" "+c(e.fmt?.translate("WARNINGS.repo_truncated")),1)])):p("v-if",!0),e.options?.hasSubmodules?(l(),d("div",UO,[t[9]||(t[9]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-warning"})],-1)),y(" "+c(e.fmt?.translate("WARNINGS.submodules_not_included")),1)])):p("v-if",!0),Ce(n,{class:"files",file:e.files,"search-query":e.fileSearchQuery,"search-results":e.fileSearchResults,page:e.viewState},null,8,["file","search-query","search-results","page"])]),o("div",FO,[o("span",{class:"last-update",title:e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.lastUpdateDate},c(e.options?.sourceCommitDate?"Source commit":e.options?.anonymizedAt?"Anonymized":"Updated")+" "+c(e.fmt?.date(e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.lastUpdateDate)),9,zO),e.options?.settingsSavedAt?(l(),d("span",{key:0,class:"last-update",title:e.options.settingsSavedAt}," Settings saved "+c(e.fmt?.date(e.options.settingsSavedAt)),9,HO)):p("v-if",!0),e.options?.publishedAt?(l(),d("span",{key:1,class:"last-update",title:e.options.publishedAt}," Snapshot ready "+c(e.fmt?.date(e.options.publishedAt)),9,jO)):p("v-if",!0),e.options?.anonymizedAt&&!e.options?.publishedAt?(l(),d("span",BO," Snapshot ready date not recorded ")):p("v-if",!0)])],2),[[Y,e.files?.length]]),N(o("div",{class:"leftCol-backdrop",onClick:t[3]||(t[3]=i=>e.sidebarCollapsed=!0)},null,512),[[Y,e.files?.length&&!e.sidebarCollapsed]]),o("div",GO,[o("div",WO,[o("ol",KO,[(l(!0),d(X,null,ae(e.paths,(i,a)=>(l(),d("li",{class:"breadcrumb-item",textContent:c(i)},null,8,YO))),256))]),o("div",JO,[e.options?.isAdmin||e.options?.isOwner?(l(),d("a",{key:0,class:"btn btn-sm","aria-label":"Edit",href:e.safeUrl("/anonymize/"+e.repoId)},[...t[10]||(t[10]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-edit"})],-1),o("span",{class:"d-none d-md-inline"}," Edit",-1)])],8,QO)):p("v-if",!0),e.type=="html-doc"&&!e.showSource?(l(),d("button",{key:1,class:A(["btn btn-sm",{"btn-active":e.allowScripts}]),"aria-label":"Allow this document to run JavaScript",title:"Scripts in this file are blocked by default. Enable them only if you trust the repository \u2014 the document stays isolated from your session either way.",onClick:t[4]||(t[4]=i=>e.toggleAllowScripts())},[t[11]||(t[11]=o("i",{class:"fab fa-js"},null,-1)),o("span",XO,c(e.allowScripts?"JS on":"JS off"),1)],2)):p("v-if",!0),e.type=="html-doc"?(l(),d("button",{key:2,class:"btn btn-sm","aria-label":"Toggle between the rendered document and its source",title:"Toggle between the rendered document and its source",onClick:t[5]||(t[5]=i=>e.toggleSource())},[(l(),d("svg",ZO,[o("use",{href:e.showSource?"#project-icon-eye":"#ui-icon-code"},null,8,xO)])),o("span",eI,c(e.showSource?"Rendered":"Source"),1)])):p("v-if",!0),N(o("a",{target:"_self",class:"btn btn-sm","aria-label":"View raw current file",title:"View the raw content of the current file",href:e.safeUrl(e.url)},[...t[12]||(t[12]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-file"})],-1),o("span",{class:"d-none d-md-inline"}," Raw",-1)])],8,tI),[[Y,e.content!=null]]),N(o("a",{target:"_self",class:"btn btn-sm","aria-label":"Download current file",title:"Download the current file",href:e.safeUrl(e.url+"&download=true")},[...t[13]||(t[13]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-download"})],-1),o("span",{class:"d-none d-md-inline"}," Download",-1)])],8,oI),[[Y,e.content!=null]]),e.options?.download?(l(),d("a",{key:3,target:"_self",class:"btn btn-sm","aria-label":"Download full repository as ZIP",title:"Download the full repository as a ZIP archive",href:e.safeUrl("/api/repo/"+e.repoId+"/zip")},[...t[14]||(t[14]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-archive"})],-1),o("span",{class:"d-none d-md-inline"}," Full repo ZIP",-1)])],8,sI)):p("v-if",!0),e.options?.hasWebsite?(l(),d("a",{key:4,target:"_self",class:"btn btn-sm","aria-label":"Website",href:e.safeUrl("/w/"+e.repoId+"/")},[...t[15]||(t[15]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-globe"})],-1),o("span",{class:"d-none d-md-inline"}," Website",-1)])],8,nI)):p("v-if",!0)])]),o("div",rI,[Ce(r,{name:"partials/pageView.htm",state:e.viewState},null,8,["state"])])])])}var iI={class:"paper-faq"};function bl(e,t){return l(),d("div",iI,[...t[0]||(t[0]=[ce('
Help

Answers to the questions that come up most.

If something's missing, write to us \u2014 report a bug on GitHub.

',1),o("div",{class:"paper-faq-body"},[o("aside",{class:"paper-faq-toc"},[o("div",{class:"paper-faq-toc-head"},"Contents"),o("nav",null,[o("a",{href:"#faq-general"},"General"),o("a",{href:"#faq-features"},"Features"),o("a",{href:"#faq-limitations"},"Limitations"),o("a",{href:"#faq-privacy"},"Privacy & Security"),o("a",{href:"#faq-hosting"},"Self-Hosting")])]),o("section",{class:"faq-section","aria-label":"FAQs"},[o("div",null,[p(" General "),o("h4",{class:"faq-cat"},[o("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[o("use",{href:"#ui-icon-info"})]),y("General ")]),o("div",{class:"panel-group",id:"faq-general",role:"tablist","aria-multiselectable":"true"},[o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingWhatIs"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-general",href:"#whatIs","aria-expanded":"false","aria-controls":"whatIs"}," What is Anonymous GitHub? ")])]),o("div",{id:"whatIs",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingWhatIs"},[o("div",{class:"panel-body p-3"},[o("p",null," Anonymous GitHub is a free, open-source tool that anonymizes GitHub repositories and pull requests for double-anonymous (double-blind) peer review. It replaces identifying information \u2014 such as the repository owner, organization name, and custom terms \u2014 so that reviewers cannot determine the identity of the authors through the code repository. ")])])]),o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingHowWork"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-general",href:"#howWork","aria-expanded":"false","aria-controls":"howWork"}," How does Anonymous GitHub work? ")])]),o("div",{id:"howWork",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingHowWork"},[o("div",{class:"panel-body p-3"},[o("p",null," Anonymous GitHub either downloads the complete repository and anonymizes the content, or proxies requests to GitHub on the fly. In both cases, the original and anonymized versions of files are cached on the server. The system automatically detects and replaces the repository owner, organization name, and repository name. You can also specify additional custom terms to anonymize using one-per-line regex patterns. ")])])]),o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingScope"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-general",href:"#scope","aria-expanded":"false","aria-controls":"scope"}," What is the scope of anonymization? ")])]),o("div",{id:"scope",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingScope"},[o("div",{class:"panel-body p-3"},[o("p",null," In double-anonymous peer review, the boundary of anonymization is the paper plus its online appendix \u2014 not the entire internet. Searching for any part of the paper or the online appendix can be considered a deliberate attempt to break anonymity. Anonymous GitHub anonymizes the repository owner, organization, repository name, file and directory names, and file contents across all text-based file types. ")])])]),o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingCost"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-general",href:"#cost","aria-expanded":"false","aria-controls":"cost"}," How much does it cost? ")])]),o("div",{id:"cost",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingCost"},[o("div",{class:"panel-body p-3"},[o("p",null,[y(" Anonymous GitHub is completely free to use. However, the server costs hundreds of dollars per year to maintain. If you find the service useful, a small donation would be greatly appreciated. You can support the project by "),o("a",{href:"https://github.com/sponsors/tdurieux/",target:"_blank"},"sponsoring on GitHub"),y(", donating through "),o("a",{href:"https://ko-fi.com/tdurieux",target:"_blank"},"Ko-fi"),y(', or by clicking the "Support me" button on the site. ')])])])])]),p(" Features "),o("h4",{class:"faq-cat"},[o("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[o("use",{href:"#project-icon-filter"})]),y("Features ")]),o("div",{class:"panel-group",id:"faq-features",role:"tablist","aria-multiselectable":"true"},[o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingFormats"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#formats","aria-expanded":"false","aria-controls":"formats"}," Which file formats are supported? ")])]),o("div",{id:"formats",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingFormats"},[o("div",{class:"panel-body p-3"},[o("p",null," Anonymous GitHub can display and render a wide variety of file types: "),o("ul",null,[o("li",null,[o("strong",null,"Text and source code"),y(" \u2014 displayed with syntax highlighting")]),o("li",null,[o("strong",null,"Markdown"),y(" \u2014 rendered as formatted HTML")]),o("li",null,[o("strong",null,"Images"),y(" (PNG, JPG, SVG, etc.) \u2014 displayed inline")]),o("li",null,[o("strong",null,"PDFs"),y(" \u2014 rendered directly in the browser")]),o("li",null,[o("strong",null,"Jupyter Notebooks"),y(" \u2014 rendered with code cells and outputs")])]),o("p",null," Only text-based files are anonymized. Anonymous GitHub analyzes the content of each file to determine whether it is textual or binary. ")])])]),o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingPR"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#pullRequests","aria-expanded":"false","aria-controls":"pullRequests"}," Can I anonymize pull requests? ")])]),o("div",{id:"pullRequests",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingPR"},[o("div",{class:"panel-body p-3"},[o("p",null," Yes. In addition to full repositories, Anonymous GitHub supports anonymizing individual pull requests. Simply paste the URL of a GitHub pull request when creating a new anonymized repository, and the system will automatically detect that it is a pull request and anonymize it accordingly. ")])])]),o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingConference"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#conference","aria-expanded":"false","aria-controls":"conference"}," What is the Conference ID feature? ")])]),o("div",{id:"conference",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingConference"},[o("div",{class:"panel-body p-3"},[o("p",null," When creating an anonymized repository, you can associate it with a Conference ID. This allows conferences to define default anonymization settings (such as expiration dates) that are automatically applied to repositories submitted under that conference. If your conference provides a Conference ID, enter it during the anonymization setup. ")])])]),o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingExpiration"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#expiration","aria-expanded":"false","aria-controls":"expiration"}," What happens when an anonymized repository expires? ")])]),o("div",{id:"expiration",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingExpiration"},[o("div",{class:"panel-body p-3"},[o("p",null," You can configure one of three expiration strategies when creating your anonymized repository: "),o("ul",null,[o("li",null,[o("strong",null,"Never expire"),y(" \u2014 the anonymized repository remains accessible indefinitely.")]),o("li",null,[o("strong",null,"Redirect to GitHub"),y(" \u2014 after expiration, visitors are redirected to the original GitHub repository.")]),o("li",null,[o("strong",null,"Remove content"),y(" \u2014 after expiration, the anonymized content is deleted from the server.")])])])])]),o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingDownload"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#download","aria-expanded":"false","aria-controls":"download"}," Can I download an anonymized repository? ")])]),o("div",{id:"download",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingDownload"},[o("div",{class:"panel-body p-3"},[o("p",null," Yes. Anonymized repositories can be downloaded as a ZIP file. This is useful if reviewers want to build or test the code locally. The downloaded archive contains the fully anonymized version of the repository. ")])])]),o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingUpdates"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#updates","aria-expanded":"false","aria-controls":"updates"}," Are updates to the original repository reflected in the anonymized version? ")])]),o("div",{id:"updates",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingUpdates"},[o("div",{class:"panel-body p-3"},[o("p",null," Yes. The anonymized repository tracks the source on GitHub: when you push new commits to the original repository, the anonymized view picks up those changes (cached files are refreshed against GitHub). This means you can keep iterating on the code while reviewers have the link, and you do not need to recreate the anonymized repository every time you update the source. "),o("p",null," A few practical implications worth keeping in mind: "),o("ul",null,[o("li",null," You can safely create the anonymized repository early in the writing process \u2014 later commits will be visible to reviewers without any additional action. "),o("li",null," If you rename files, add new identifiers, or introduce new contributor names after creation, revisit the anonymization options (custom terms, file filters) to make sure the new content is still properly anonymized. "),o("li",null," If the original repository is made private or deleted, the anonymized repository will no longer be able to fetch updated content. ")])])])]),o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingCLI"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#cli","aria-expanded":"false","aria-controls":"cli"}," Is there a command-line tool? ")])]),o("div",{id:"cli",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingCLI"},[o("div",{class:"panel-body p-3"},[o("p",null," Yes. Anonymous GitHub provides a CLI tool that lets you anonymize repositories locally, generating an anonymized ZIP file on your machine. Install it via npm: "),o("pre",{style:{"background-color":"var(--hover-bg-color)",padding:"12px","border-radius":"4px","margin-top":"8px",color:"var(--color)"}},[o("code",null,`npm install -g @tdurieux/anonymous_github +anonymous_github`)])])])])]),p(" Limitations "),o("h4",{class:"faq-cat"},[o("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[o("use",{href:"#ui-icon-warning"})]),y("Limitations ")]),o("div",{class:"panel-group",id:"faq-limitations",role:"tablist","aria-multiselectable":"true"},[o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingLimitation"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-limitations",href:"#limitation","aria-expanded":"false","aria-controls":"limitation"}," What are the limitations of Anonymous GitHub? ")])]),o("div",{id:"limitation",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingLimitation"},[o("div",{class:"panel-body p-3"},[o("ul",null,[o("li",null," Anonymous GitHub only anonymizes text-based files. Binary files (compiled executables, archives, etc.) are served as-is without anonymization. "),o("li",null," Files larger than 8 MB are not supported. "),o("li",null," Static site generators (such as Jekyll) used with GitHub Pages are not fully supported, although Markdown files are converted to HTML. "),o("li",null," The anonymization of terms within source code may change the behavior of the program (e.g., if a replaced term appears in a string literal or identifier). ")])])])])]),p(" Privacy & Security "),o("h4",{class:"faq-cat"},[o("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[o("use",{href:"#ui-icon-shield"})]),y("Privacy & Security ")]),o("div",{class:"panel-group",id:"faq-privacy",role:"tablist","aria-multiselectable":"true"},[o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingData"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-privacy",href:"#data","aria-expanded":"false","aria-controls":"data"}," How is my data handled? ")])]),o("div",{id:"data",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingData"},[o("div",{class:"panel-body p-3"},[o("p",null," Data stored on Anonymous GitHub is never shared or used for any purpose beyond providing the anonymization service. When a repository is removed or expires, only its configuration is retained \u2014 this makes it easy to restore the repository if needed and ensures that no future repository reuses the same ID. ")])])]),o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingPermissions"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-privacy",href:"#permissions","aria-expanded":"false","aria-controls":"permissions"}," Why does GitHub say Anonymous GitHub asks for write access? ")])]),o("div",{id:"permissions",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingPermissions"},[o("div",{class:"panel-body p-3"},[o("p",null,[y("The GitHub App has read-only access to the repositories you choose. You can change repository access on your "),o("a",{href:"/connections"},"GitHub connections"),y(" page.")]),o("p",null,"Legacy GitHub OAuth includes write access to private repositories because GitHub's OAuth scopes do not offer a read-only option for them. Existing OAuth anonymizations and gists can still use this connection."),o("p",null,"Anonymous GitHub reads repository content. It never pushes, modifies, or deletes files on GitHub.")])])]),o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingViewer"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-privacy",href:"#viewer","aria-expanded":"false","aria-controls":"viewer"}," Can repository owners see who viewed their anonymized repository? ")])]),o("div",{id:"viewer",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingViewer"},[o("div",{class:"panel-body p-3"},[o("p",null," No. Only the total number of views is tracked as an incremental counter. It is not possible for the repository owner or for Anonymous GitHub to identify individual viewers. Reviewer anonymity is fully preserved. ")])])])]),p(" Self-Hosting "),o("h4",{class:"faq-cat"},[o("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[o("use",{href:"#project-icon-storage"})]),y("Self-Hosting ")]),o("div",{class:"panel-group",id:"faq-hosting",role:"tablist","aria-multiselectable":"true"},[o("div",{class:"panel panel-default mb-3"},[o("div",{class:"panel-heading p-3",role:"tab",id:"headingDeploy"},[o("h3",{class:"panel-title"},[o("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-hosting",href:"#deploy","aria-expanded":"false","aria-controls":"deploy"}," Can I deploy my own instance? ")])]),o("div",{id:"deploy",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingDeploy"},[o("div",{class:"panel-body p-3"},[o("p",null,[y(" Yes. Anonymous GitHub is fully open source (GPL-3.0) and supports Docker-based deployment. You will need to configure a GitHub OAuth app and provide a GitHub token. Detailed setup instructions are available on the "),o("a",{href:"https://github.com/tdurieux/anonymous_github/",target:"_blank"},"GitHub repository"),y(". ")]),o("p",null," The basic steps are: "),o("ol",null,[o("li",null,"Clone the repository and install dependencies"),o("li",null,[y("Create a "),o("code",null,".env"),y(" file with your GitHub token, OAuth client ID, and client secret")]),o("li",null,[y("Run "),o("code",null,"docker-compose up -d")])])])])])]),o("div",{class:"text-center mt-5 mb-5 p-4",style:{"background-color":"var(--hover-bg-color)","border-radius":"8px"}},[o("p",{class:"mb-2",style:{"font-size":"1.1rem"}}," Still have questions? "),o("p",{class:"text-muted mb-0"},[y(" Open an issue on the "),o("a",{href:"https://github.com/tdurieux/anonymous_github/issues",target:"_blank"},"GitHub repository"),y(" and we'll be happy to help. ")])])])])],-1)])])}var aI={class:"pr-page"},lI={class:"container paper-page pr-page-inner"},dI={class:"pr-header"},uI={class:"pr-title-row"},cI={class:"paper-page-title pr-title"},pI=["textContent"],fI={key:1,class:"text-muted"},hI=["href"],mI={class:"pr-header-meta"},vI={key:0,class:"pr-meta-item"},gI=["textContent"],yI={key:1,class:"pr-meta-item"},bI=["textContent"],wI={key:2,class:"pr-meta-item"},kI=["textContent"],EI={key:0,class:"paper-tabs",role:"tablist"},CI=["aria-selected","tabindex"],_I=["textContent"],SI=["aria-selected","tabindex"],NI=["textContent"],DI={class:"paper-tab-content"},RI={key:0,role:"tabpanel",id:"gist-files-panel","aria-labelledby":"gist-files-tab"},TI={class:"pr-comments"},AI={class:"pr-comment"},OI={class:"pr-comment-head"},II=["textContent"],PI={key:0,class:"pr-comment-date"},VI={key:0,class:"paper-table-empty"},qI={key:1,role:"tabpanel",id:"gist-comments-panel","aria-labelledby":"gist-comments-tab"},MI={class:"pr-comments"},$I={class:"pr-comment"},LI={class:"pr-comment-head"},UI={key:0,class:"pr-comment-author"},FI=["textContent"],zI=["textContent"],HI={key:0,class:"pr-comment-body"},jI={key:0,class:"paper-table-empty"};function wl(e,t){let n=We("gist-file"),r=We("markdown");return l(),d("div",aI,[o("div",lI,[t[17]||(t[17]=o("div",{class:"paper-crumbs"},[o("a",{href:"/dashboard"},"Reviewer"),y(" \xA0/\xA0 "),o("span",{class:"here"},"Gist")],-1)),o("header",dI,[o("div",uI,[o("h1",cI,[e.details?.description?(l(),d("span",{key:0,textContent:c(e.details?.description)},null,8,pI)):p("v-if",!0),e.details?.description?p("v-if",!0):(l(),d("span",fI,"Untitled gist"))]),e.options?.isAdmin||e.options?.isOwner?(l(),d("a",{key:0,class:"btn btn-sm","aria-label":"Edit",href:e.safeUrl("/gist-anonymize/"+e.gistId)},[...t[4]||(t[4]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-edit"})],-1),o("span",{class:"d-none d-md-inline"}," Edit",-1)])],8,hI)):p("v-if",!0)]),o("div",mI,[o("span",{class:A(["paper-pill",{good:e.details?.isPublic,warn:!e.details?.isPublic}])},c(e.details?.isPublic?"Public":"Secret"),3),e.details?.ownerLogin?(l(),d("span",vI,[t[5]||(t[5]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-user"})],-1)),t[6]||(t[6]=y(" @",-1)),o("span",{textContent:c(e.details?.ownerLogin)},null,8,gI)])):p("v-if",!0),e.details?.updatedDate?(l(),d("span",yI,[t[7]||(t[7]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-clock"})],-1)),t[8]||(t[8]=y()),o("span",{textContent:c(e.fmt?.date(e.details?.updatedDate))},null,8,bI)])):p("v-if",!0),e.details?.anonymizeDate?(l(),d("span",wI,[t[9]||(t[9]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-shield"})],-1)),t[10]||(t[10]=y(" Anonymized ",-1)),o("span",{textContent:c(e.fmt?.date(e.details?.anonymizeDate))},null,8,kI)])):p("v-if",!0)])]),e.details?.files&&e.details?.files?.length||e.details?.comments&&e.details?.comments?.length?(l(),d("nav",EI,[e.details?.files?(l(),d("button",{key:0,class:A(["paper-tab",{active:e.tabState?.active=="files"}]),type:"button",role:"tab",id:"gist-files-tab","aria-selected":e.tabState?.active==="files","aria-controls":"gist-files-panel",tabindex:e.tabState?.active==="files"?0:-1,onKeydown:t[0]||(t[0]=s=>e.previewTabKeydown(s)),onClick:t[1]||(t[1]=s=>e.tabState.active="files")},[t[11]||(t[11]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-type-gist"})],-1)),o("span",{textContent:c(e.fmt.plural(e.details?.files?.length,{0:"No files",one:"1 file",other:"{} files"}))},null,8,_I)],42,CI)):p("v-if",!0),e.details?.comments?(l(),d("button",{key:1,class:A(["paper-tab",{active:e.tabState?.active=="comments"}]),type:"button",role:"tab",id:"gist-comments-tab","aria-selected":e.tabState?.active==="comments","aria-controls":"gist-comments-panel",tabindex:e.tabState?.active==="comments"?0:-1,onKeydown:t[2]||(t[2]=s=>e.previewTabKeydown(s)),onClick:t[3]||(t[3]=s=>e.tabState.active="comments")},[t[12]||(t[12]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-comment"})],-1)),o("span",{textContent:c(e.fmt.plural(e.details?.comments?.length,{0:"No comments",one:"1 comment",other:"{} comments"}))},null,8,NI)],42,SI)):p("v-if",!0)])):p("v-if",!0),o("div",DI,[e.details?.files&&e.tabState?.active=="files"?(l(),d("div",RI,[o("ul",TI,[(l(!0),d(X,null,ae(e.details?.files,(s,i)=>(l(),d("li",AI,[o("div",OI,[o("strong",{textContent:c(s?.filename)},null,8,II),s?.language?(l(),d("span",PI,c(s?.language),1)):p("v-if",!0)]),Ce(n,{file:s},null,8,["file"])]))),256)),e.details?.files?.length?p("v-if",!0):(l(),d("li",VI,[...t[13]||(t[13]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-file"})],-1),o("span",null,"No files in this gist.",-1)])]))])])):p("v-if",!0),e.details?.comments&&e.tabState?.active=="comments"?(l(),d("div",qI,[o("ul",MI,[(l(!0),d(X,null,ae(e.details?.comments,(s,i)=>(l(),d("li",$I,[o("div",LI,[s?.author?(l(),d("span",UI,[t[14]||(t[14]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-user"})],-1)),t[15]||(t[15]=y(" @",-1)),o("span",{textContent:c(s?.author)},null,8,FI)])):p("v-if",!0),s?.updatedDate?(l(),d("span",{key:1,class:"pr-comment-date",textContent:c(e.fmt?.date(s?.updatedDate))},null,8,zI)):p("v-if",!0)]),s?.body?(l(),d("div",HI,[Ce(r,{content:s?.body},null,8,["content"])])):p("v-if",!0)]))),256)),e.details?.comments?.length?p("v-if",!0):(l(),d("li",jI,[...t[16]||(t[16]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-comment"})],-1),o("span",null,"No comments on this gist.",-1)])]))])])):p("v-if",!0)])])])}var BI={class:"collapse navbar-collapse",id:"navbarSupportedContent"},GI={class:"navbar-nav mr-auto smooth-scroll"},WI={key:0,class:"nav-item"},KI={key:1,class:"nav-item"},YI={key:2,class:"nav-item"},JI={key:3,class:"nav-item"},QI={class:"nav-item"},XI={key:4,class:"nav-item"},ZI={class:"navbar-nav"},xI={key:0,class:"nav-item"},e4={key:1,class:"nav-item"},t4={key:2,class:"nav-item"},o4={key:3,class:"nav-item dropdown user-chip-wrap"},s4={class:"nav-link user-chip dropdown-toggle",href:"#",id:"navbarDropdownMenuLink",role:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},n4=["src"],r4={class:"user-chip-name"},i4={class:"dropdown-menu dropdown-menu-right user-menu","aria-labelledby":"navbarDropdownMenuLink"},a4={class:"dropdown-header"},l4=["innerHTML"];function kl(e,t){return l(),d(X,null,[o("nav",{class:A(["navbar navbar-expand-lg",{"navbar-dark":e.isDarkMode}])},[t[13]||(t[13]=ce('Anonymous GitHubSupport',3)),o("div",BI,[o("ul",GI,[e.user?p("v-if",!0):(l(),d("li",WI,[o("a",{class:A(["nav-link",{active:e.path=="/"}]),href:"/"}," Home ",2)])),e.user?(l(),d("li",KI,[o("a",{class:A(["nav-link",{active:e.path=="/dashboard"}]),href:"/dashboard"},[...t[2]||(t[2]=[o("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-grid"})],-1),y(" My work ",-1)])],2)])):p("v-if",!0),e.user?(l(),d("li",YI,[o("a",{class:A(["nav-link",{active:e.path=="/anonymize"||e.path=="/pull-request-anonymize"}]),href:"/anonymize"},[...t[3]||(t[3]=[o("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-shield"})],-1),y(" Anonymize ",-1)])],2)])):p("v-if",!0),e.user?(l(),d("li",JI,[o("a",{class:A(["nav-link",{active:e.path=="/conferences"}]),href:"/conferences"},[...t[4]||(t[4]=[o("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[o("use",{href:"#project-icon-conference"})],-1),y(" Conferences ",-1)])],2)])):p("v-if",!0),o("li",QI,[o("a",{class:A(["nav-link",{active:e.path=="/faq"}]),href:"/faq"},[...t[5]||(t[5]=[o("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-help"})],-1),y("FAQ",-1)])],2)]),e.user&&e.user?.isAdmin?(l(),d("li",XI,[o("a",{class:A(["nav-link",{active:e.path?.indexOf("/admin")===0}]),href:"/admin/"},[...t[6]||(t[6]=[o("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[o("use",{href:"#project-icon-filter"})],-1),y(" Admin ",-1)])],2)])):p("v-if",!0)]),o("ul",ZI,[t[11]||(t[11]=o("li",{class:"nav-item"},[o("a",{class:"nav-link nav-icon",target:"_blank",href:"https://github.com/tdurieux/anonymous_github/",title:"Anonymous GitHub source code","aria-label":"Anonymous GitHub source code on GitHub",rel:"noopener","data-offset":"30"},[o("i",{class:"fab fa-github","aria-hidden":"true"})])],-1)),p(` "Report a bug" is about this service. Reviewers who land on an anonymized repository often think it is about the paper, so the - label names the service and the tooltip says who to contact. `),t[12]||(t[12]=o("li",{class:"nav-item d-none d-lg-block"},[o("a",{class:"nav-link",target:"_blank",rel:"noopener",href:"https://github.com/tdurieux/anonymous_github/issues/new?template=issue_report.yml",title:"Report a problem with the Anonymous GitHub service. Questions about an anonymized repository or paper go to its authors.","data-offset":"30"},[o("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-bug"})]),g("Report a bug ")])],-1)),e.isDarkMode?p("v-if",!0):(l(),d("li",QI,[o("a",{class:"nav-link nav-icon",href:"#",title:"Switch to dark mode","aria-label":"Switch to dark mode",role:"button",onClick:t[0]||(t[0]=ce(n=>{e.darkMode(!0)},["prevent"]))},[...t[7]||(t[7]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-moon"})],-1)])])])),e.isDarkMode?(l(),d("li",XI,[o("a",{class:"nav-link nav-icon",href:"#",title:"Switch to light mode","aria-label":"Switch to light mode",role:"button",onClick:t[1]||(t[1]=ce(n=>{e.darkMode(!1)},["prevent"]))},[...t[8]||(t[8]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-sun"})],-1)])])])):p("v-if",!0),e.user?p("v-if",!0):(l(),d("li",ZI,[...t[9]||(t[9]=[o("a",{class:"nav-link btn-signin",target:"_self",href:"/signin","data-offset":"30"},[o("i",{class:"fab fa-github mr-1"}),g(" Sign in ")],-1)])])),e.user?(l(),d("li",xI,[o("a",e4,[e.user?.photo?(l(),d("img",{key:0,width:"22",height:"22",class:"rounded-circle",src:e.safeUrl(e.user?.photo)},null,8,t4)):p("v-if",!0),o("span",o4,c(e.user?.username),1)]),o("div",s4,[o("h6",n4,"Signed in as @"+c(e.user?.username),1),t[10]||(t[10]=le('SettingsDefaults, quotas, accountGitHub connectionsRepository access and OAuthClaim an anonymizationAttach an existing mirror to your accountReport a bugAbout this service, not a paperSource codeSupport the projectSign out',9))])])):p("v-if",!0)])])],2),e.generalMessage?(l(),d("div",{key:0,class:"navbar shadow generalMessage",innerHTML:e.sanitize(e.generalMessage)},null,8,r4)):p("v-if",!0)],64)}var i4={class:"paper-landing"},a4={class:"paper-hero"},l4={class:"paper-hero-copy"},d4={class:"paper-cta-row"},u4={key:0,href:"/signin",target:"_self",class:"btn-hero"},c4={key:1,href:"/anonymize",class:"btn-hero"},p4={class:"paper-stats paper-wrap",id:"metrics","aria-label":"Usage over the last 60 days"},f4={class:"paper-stats-grid"},m4={class:"paper-stat-value"},h4={class:"paper-stat-label"},v4=["viewBox"],g4=["x","y","width","height"],y4={key:1,class:"paper-stat-delta"},b4={class:"paper-features paper-wrap","aria-label":"Product features"},w4={class:"paper-features-list",role:"tablist","aria-label":"Features","aria-orientation":"vertical"},k4=["onClick","onKeydown","id","aria-controls","aria-selected","tabindex"],E4={class:"paper-eyebrow"},C4={class:"paper-feature-title"},_4={class:"paper-feature-more"},S4={class:"paper-feature-title paper-feature-title-m","aria-hidden":"true"},N4=["href","target"],D4={class:"paper-features-stage"},R4=["id","aria-labelledby"],T4={class:"paper-frame"},A4={class:"paper-frame-bar","aria-hidden":"true"},O4={class:"url"},I4=["src","alt"],P4={class:"paper-footer"},V4={class:"paper-footer-inner"},q4={class:"paper-footer-col"},M4={key:0,href:"/dashboard"},$4={key:1,href:"/conferences"},L4={class:"paper-footer-foot"};function El(e,t){return l(),d("div",i4,[p(" Hero: copy on the left, the product on the right "),o("section",a4,[o("div",l4,[t[2]||(t[2]=o("div",{class:"paper-eyebrow"},"For double-blind peer review",-1)),t[3]||(t[3]=o("h1",{class:"hero-title"},[g(" Share the code,"),o("br"),o("span",{class:"accent"},"not the author.")],-1)),t[4]||(t[4]=o("p",{class:"hero-subtitle"}," Anonymous GitHub makes a read-only mirror of your repository, pull request, or gist. It redacts the terms you choose in text files, so reviewers can browse your artifact through an anonymous link. ",-1)),o("div",d4,[e.user?p("v-if",!0):(l(),d("a",u4,[...t[0]||(t[0]=[o("i",{class:"fab fa-github mr-2","aria-hidden":"true"},null,-1),g("Sign in with GitHub ",-1)])])),e.user?(l(),d("a",c4," Anonymize a repository \u2192 ")):p("v-if",!0),t[1]||(t[1]=o("a",{class:"paper-link-arrow",target:"_self",href:"https://anonymous.4open.science/r/840c8c57-3c32-451e-bf12-0e20be300389/"},"See an anonymized repository \u2192",-1))]),t[5]||(t[5]=o("ul",{class:"paper-reassure"},[o("li",null,"Free and open source"),o("li",null,"Read-only: never writes to your repos"),o("li",null,"Expires on the date you set")],-1))]),t[6]||(t[6]=le('
A reviewer preview with the author, affiliation, and email replaced by anonymous terms
',1))]),p(" Proof "),t[16]||(t[16]=le('
Trusted by authors at
ICSEFSEOOPSLA
',1)),p(" Live stats "),o("section",p4,[t[7]||(t[7]=o("div",{class:"paper-stats-meta"},[o("div",{class:"paper-stats-meta-left"},"Live \xB7 last 60 days"),o("div",{class:"paper-stats-meta-right"},[o("span",{class:"paper-stats-dot","aria-hidden":"true"}),g(" updated daily ")])],-1)),o("div",f4,[(l(!0),d(Q,null,se(e.cards,(n,r)=>(l(),d("div",{class:"paper-stat-card",key:n?.key},[o("div",m4,c(e.fmt?.bigNum(n?.total)),1),o("div",h4,c(n?.label),1),e.history[n?.key].bars?.length>1?(l(),d("svg",{key:0,class:"paper-stat-bars",preserveAspectRatio:"none","aria-hidden":"true",viewBox:"0 0 "+e.history[n?.key].viewW+" 36"},[(l(!0),d(Q,null,se(e.history[n?.key].bars,(s,i)=>(l(),d("rect",{key:i,class:A({"is-latest":i===e.history[n.key].bars.length-1}),x:s?.x,y:s?.y,width:s?.w,height:s?.h},null,10,g4))),128))],8,v4)):p("v-if",!0),e.history[n?.key].bars?.length>1?(l(),d("div",y4," +"+c(e.fmt?.number(e.history[n?.key].deltaToday))+" today ",1)):p("v-if",!0)]))),128))])]),p(" Before / after "),t[17]||(t[17]=o("section",{class:"paper-section-head paper-wrap"},[o("div",null,[o("div",{class:"paper-eyebrow"},"Before \xB7 after"),o("h2",null,[g("The same repository, "),o("em",null,"minus you.")])]),o("p",null," Names, affiliations, emails, and any term you list are replaced across the README, source files, notebooks, and PDF links. Reviewers browse the real thing, not a zip. ")],-1)),t[18]||(t[18]=o("div",{class:"paper-preview paper-wrap","aria-label":"Before and after example"},[o("div",{class:"pane"},[o("div",{class:"pane-header"},[o("span",{class:"pane-label"},"Before \xB7 your repo"),o("span",{class:"pane-url"},"github.com/jane-smith/DeepLearnUtils")]),o("div",{class:"pane-body"},[o("div",null,[o("span",{class:"tok"},"#"),g(),o("strong",null,"DeepLearnUtils")]),o("div",null,"Developed by Jane Smith at MIT CSAIL."),o("div",null,"See Smith et\xA0al., \u201CAttention That Works,\u201D 2026."),o("div",null,"Contact: jane.smith@mit.edu")])]),o("div",{class:"pane"},[o("div",{class:"pane-header"},[o("span",{class:"pane-label"},"After \xB7 anonymous mirror"),o("span",{class:"pane-url"},"anonymous.4open.science/r/paper-7f2a")]),o("div",{class:"pane-body"},[o("div",null,[o("span",{class:"tok"},"#"),g(),o("strong",null,"DeepLearnUtils")]),o("div",null,[g("Developed by "),o("span",{class:"redact",role:"img","aria-label":"redacted author name"},"XXXX-1"),g(" at "),o("span",{class:"redact",role:"img","aria-label":"redacted affiliation"},"XXXX-2"),g(".")]),o("div",null,[g("See "),o("span",{class:"redact",role:"img","aria-label":"redacted author name"},"XXXX-1"),g(" et\xA0al., \u201CAttention That Works,\u201D 2026.")]),o("div",null,[g("Contact: "),o("span",{class:"redact",role:"img","aria-label":"redacted email address"},"XXXX-3")])])])],-1)),p(" What you get: one screenshot, three tabs "),t[19]||(t[19]=o("section",{class:"paper-section-head paper-wrap",id:"about"},[o("div",null,[o("div",{class:"paper-eyebrow"},"What you get"),o("h2",null,[g("Anonymize, review, "),o("em",null,"manage.")])]),o("p",null," Terms are redacted in text files. Enabled images and PDFs are served unchanged, so review them for identifying content before sharing. Monitor your mirror, update it, or remove it when the review is over. ")],-1)),o("section",b4,[o("div",w4,[(l(!0),d(Q,null,se(e.features,(n,r)=>(l(),d("div",{class:A(["paper-feature",{"is-on":e.feature===n?.key}]),key:n?.key},[o("button",{type:"button",class:"paper-feature-tab",role:"tab",onClick:s=>e.selectFeature(n.key),onKeydown:s=>e.featureKeydown(s,r),id:"feature-tab-"+n?.key,"aria-controls":"feature-panel-"+n?.key,"aria-selected":e.feature===n?.key,tabindex:e.feature===n?.key?0:-1},[o("span",E4,c(n?.num)+" \xB7 "+c(n?.eyebrow),1),o("span",C4,[g(c(n?.title)+" ",1),o("em",null,c(n?.accent),1)])],40,k4),o("div",_4,[o("span",S4,[g(c(n?.title)+" ",1),o("em",null,c(n?.accent),1)]),o("p",null,c(n?.text),1),o("a",{class:"paper-link-arrow",href:e.safeUrl(e.featureHref(n)),target:e.featureTarget(n)},c(n?.cta)+" \u2192",9,N4)])],2))),128))]),o("div",D4,[(l(!0),d(Q,null,se(e.features,(n,r)=>N((l(),d("div",{class:"paper-feature-panel",role:"tabpanel",key:n?.key,id:"feature-panel-"+n?.key,"aria-labelledby":"feature-tab-"+n?.key},[o("div",T4,[o("div",A4,[t[8]||(t[8]=o("span",{class:"dots"},[o("i"),o("i"),o("i")],-1)),o("span",O4,c(n?.url),1)]),o("div",{class:A("paper-crop paper-crop-"+n?.key)},[o("img",{loading:"lazy",width:"2880",height:"1800",src:e.safeUrl(n?.img),alt:n?.alt},null,8,I4)],2)])],8,R4)),[[W,e.feature===n?.key]])),128))])]),p(" FAQ teaser "),t[20]||(t[20]=le('
Before you sign in

The questions that come up most.

Read the full FAQ \u2192
What access does GitHub sign-in require?

The GitHub App has read-only access to the repositories you choose. Legacy OAuth uses broader permissions and is still needed for gists. Anonymous GitHub never writes to your repositories.

Which file formats are supported?

Source code with syntax highlighting, Markdown, Jupyter notebooks, PDFs, images, and GitHub Pages sites. Text files are anonymized; enabled images and PDFs are served unchanged.

What happens when an anonymized repository expires?

You choose: the mirror is removed, or visitors are redirected to the original GitHub repository once the review is over.

',1)),o("footer",P4,[o("div",V4,[t[12]||(t[12]=o("div",{class:"paper-footer-brand"},[o("div",{class:"paper-footer-mark"},[g("Anonymous "),o("em",null,"GitHub")]),o("p",{class:"paper-footer-tag"}," A read-only, identity-stripped mirror of your repository, built for double-anonymous peer review. ")],-1)),o("div",q4,[t[9]||(t[9]=o("div",{class:"paper-footer-head"},"Product",-1)),t[10]||(t[10]=o("a",{href:"/anonymize"},"Anonymize",-1)),e.user?(l(),d("a",M4,"My work")):p("v-if",!0),e.user?(l(),d("a",$4,"Conferences")):p("v-if",!0),t[11]||(t[11]=o("a",{href:"/faq"},"FAQ",-1))]),t[13]||(t[13]=le('',2))]),t[15]||(t[15]=o("div",{class:"paper-footer-rule"},null,-1)),o("div",L4,[o("span",null,"\xA9 "+c(e.year||2026)+" Anonymous GitHub \xB7 GPL-3.0 licensed",1),t[14]||(t[14]=o("span",{class:"paper-footer-meta"},"Built for reviewers, by researchers.",-1))])])])}var U4={class:"paper-empty"},F4={class:"paper-empty-inner"},z4={key:0,class:"paper-eyebrow"},H4={key:1,class:"paper-eyebrow"},B4={key:2,class:"paper-empty-title"},j4=["textContent"];function Cl(e,t){return l(),d("div",U4,[o("div",F4,[e.error?p("v-if",!0):(l(),d("div",z4,"Working")),e.error?(l(),d("div",H4,"Error")):p("v-if",!0),e.error?p("v-if",!0):(l(),d("h1",B4,[...t[0]||(t[0]=[g(" Loading",-1),o("span",{class:"dot-anim"},"\u2026",-1)])])),e.error?(l(),d("h1",{key:3,class:"paper-empty-title",textContent:c(e.fmt.translate(e.error))},null,8,j4)):p("v-if",!0)])])}var G4={class:"container paper-page paper-settings"},W4={class:"paper-crumbs"},K4={class:"here"},Y4={class:"paper-page-title"},J4={class:"paper-settings-body"},Q4={class:"paper-settings-toc"},X4={href:"#conf-billing"},Z4={class:"form needs-validation paper-settings-main",name:"conference",novalidate:""},x4={id:"conf-basics",class:"paper-settings-section"},e3={class:"form-group"},t3={class:"invalid-feedback"},o3={class:"invalid-feedback"},s3={class:"form-group"},n3={class:"invalid-feedback"},r3={class:"form-group"},i3={class:"invalid-feedback"},a3={class:"invalid-feedback"},l3={id:"conf-window",class:"paper-settings-section"},d3={class:"form-grid-2"},u3={class:"form-group"},c3={class:"invalid-feedback"},p3={class:"invalid-feedback"},f3={class:"form-group"},m3={class:"invalid-feedback"},h3={class:"invalid-feedback"},v3={id:"conf-rendering",class:"paper-settings-section"},g3={class:"form-check"},y3={class:"form-check-input",type:"checkbox",id:"link",name:"link"},b3={class:"form-check"},w3={class:"form-check-input",type:"checkbox",id:"image",name:"image"},k3={class:"form-check"},E3={class:"form-check-input",type:"checkbox",id:"pdf",name:"pdf"},C3={class:"form-check"},_3={class:"form-check-input",type:"checkbox",id:"notebook",name:"notebook"},S3={id:"conf-features",class:"paper-settings-section"},N3={class:"form-check"},D3={class:"form-check-input",type:"checkbox",id:"update",name:"update"},R3={class:"form-check"},T3={class:"form-check-input",type:"checkbox",id:"page",name:"page"},A3={id:"conf-plan",class:"paper-settings-section"},O3={class:"paper-plan-grid"},I3=["value"],P3=["textContent"],V3={class:"paper-plan-price"},q3=["innerHTML"],M3={key:0,id:"conf-billing",class:"paper-settings-section"},$3={class:"form-group"},L3={class:"form-group"},U3={class:"form-group"},F3={class:"form-group"},z3={class:"form-grid-3"},H3={class:"form-group"},B3={class:"form-group"},j3={class:"form-group"},G3={class:"form-group"},W3={class:"paper-settings-footer"},K3=["textContent"],Y3=["textContent"],J3=["disabled"];function _l(e,t){let n=ye("paper-scrollspy"),r=ye("field"),s=ye("form");return l(),d("div",G4,[o("div",W4,[t[1]||(t[1]=o("a",{href:"/dashboard"},"My work",-1)),t[2]||(t[2]=g(" \xA0/\xA0 ",-1)),t[3]||(t[3]=o("a",{href:"/conferences"},"Conferences",-1)),t[4]||(t[4]=g(" \xA0/\xA0 ",-1)),o("span",K4,c(e.editionMode?"Edit":"New"),1)]),o("h1",Y4,[g(c(e.editionMode?"Edit":"Create a")+" ",1),t[5]||(t[5]=o("em",null,"conference",-1))]),t[42]||(t[42]=o("p",{class:"paper-page-lede"}," Give chairs access to every anonymization submitted to a venue, and lift author quotas during the review window. ",-1)),o("div",J4,[N((l(),d("aside",Q4,[t[7]||(t[7]=o("div",{class:"paper-settings-toc-head"},"On this page",-1)),o("nav",null,[t[6]||(t[6]=le('BasicsReview windowRendering defaultsFeaturesPlan',5)),N(o("a",X4,"Billing",512),[[W,e.plan?.pricePerRepo>0]])])])),[[n]]),N((l(),d("form",Z4,[o("section",x4,[t[12]||(t[12]=o("div",{class:"paper-section-eyebrow"},"Basics",-1)),o("div",e3,[t[8]||(t[8]=o("label",{class:"paper-field-label",for:"name"},"Conference name",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.conference?.name?.invalid&&(e.conference?.name?.touched||e.conference?.submitted)}]),name:"name",id:"name",required:"",placeholder:"e.g. International Conference on Software Engineering"},null,2),[[r,{state:e.viewState,set:i=>{e.options.name=i},value:e.options?.name,form:"conference",options:{}}]]),N(o("div",t3," The name of the conference is invalid. ",512),[[W,e.conference?.name?.errors?.invalid]]),N(o("div",o3," The name of the conference is required. ",512),[[W,e.conference?.name?.errors?.required]])]),o("div",s3,[t[9]||(t[9]=o("label",{class:"paper-field-label",for:"url"},"Website",-1)),N(o("input",{type:"url",class:A(["form-control",{"is-invalid":e.conference?.url?.invalid&&(e.conference?.url?.touched||e.conference?.submitted)}]),name:"url",id:"url",placeholder:"https://example.org"},null,2),[[r,{state:e.viewState,set:i=>{e.options.url=i},value:e.options?.url,form:"conference",options:{}}]]),N(o("div",n3," The url of the conference is invalid. ",512),[[W,e.conference?.url?.errors?.url]])]),o("div",r3,[t[10]||(t[10]=o("label",{class:"paper-field-label",for:"conferenceID"},"Conference ID",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.conference?.conferenceID?.invalid&&(e.conference?.conferenceID?.touched||e.conference?.submitted)}]),name:"conferenceID",id:"conferenceID",required:"",pattern:"[a-zA-Z0-9\\-_]{3,10}",placeholder:"ICSE26"},null,2),[[r,{state:e.viewState,set:i=>{e.options.conferenceID=i},value:e.options?.conferenceID,form:"conference",options:{}}]]),t[11]||(t[11]=o("small",{class:"form-text text-muted"},[g("3\u201310 characters, letters, numbers, "),o("code",null,"-"),g(" and "),o("code",null,"_"),g(". Authors reference this when they anonymize.")],-1)),N(o("div",{class:"invalid-feedback"}," The conference ID '"+c(e.options?.conferenceID)+"' is already used. ",513),[[W,e.conference?.conferenceID?.errors?.used]]),N(o("div",i3," The conference ID is required. ",512),[[W,e.conference?.conferenceID?.errors?.required]]),N(o("div",a3," The format of the conference ID is incorrect ([a-zA-Z0-9-_]{3,10}). ",512),[[W,e.conference?.conferenceID?.errors?.pattern]])])]),o("section",l3,[t[17]||(t[17]=o("div",{class:"paper-section-eyebrow"},"Review window",-1)),o("div",d3,[o("div",u3,[t[13]||(t[13]=o("label",{class:"paper-field-label",for:"startDate"},"Start date",-1)),N(o("input",{type:"date",class:A(["form-control",{"is-invalid":e.conference?.startDate?.invalid&&(e.conference?.startDate?.touched||e.conference?.submitted)}]),name:"startDate",id:"startDate",required:""},null,2),[[r,{state:e.viewState,set:i=>{e.options.startDate=i},value:e.options?.startDate,form:"conference",options:{}}]]),t[14]||(t[14]=o("small",{class:"form-text text-muted"},"Beginning of the review process.",-1)),N(o("div",c3," Start date is required. ",512),[[W,e.conference?.startDate?.errors?.required]]),N(o("div",p3," Start date must be before end date. ",512),[[W,e.conference?.startDate?.errors?.invalid]])]),o("div",f3,[t[15]||(t[15]=o("label",{class:"paper-field-label",for:"endDate"},"End date",-1)),N(o("input",{type:"date",class:A(["form-control",{"is-invalid":e.conference?.endDate?.invalid&&(e.conference?.endDate?.touched||e.conference?.submitted)}]),name:"endDate",id:"endDate",required:""},null,2),[[r,{state:e.viewState,set:i=>{e.options.endDate=i},value:e.options?.endDate,form:"conference",options:{}}]]),t[16]||(t[16]=o("small",{class:"form-text text-muted"},"All repositories expire on this date.",-1)),N(o("div",m3," End date is required. ",512),[[W,e.conference?.endDate?.errors?.required]]),N(o("div",h3," End date is invalid. ",512),[[W,e.conference?.endDate?.errors?.invalid]])])])]),o("section",v3,[t[25]||(t[25]=o("div",{class:"paper-section-eyebrow"},"Rendering defaults",-1)),o("div",g3,[N(o("input",y3,null,512),[[r,{state:e.viewState,set:i=>{e.options.options.link=i},value:e.options?.options?.link,form:"conference",options:{}}]]),t[18]||(t[18]=o("label",{class:"form-check-label",for:"link"},"Keep links",-1)),t[19]||(t[19]=o("small",{class:"form-text text-muted"},"Keep or remove all links from text files.",-1))]),o("div",b3,[N(o("input",w3,null,512),[[r,{state:e.viewState,set:i=>{e.options.options.image=i},value:e.options?.options?.image,form:"conference",options:{}}]]),t[20]||(t[20]=o("label",{class:"form-check-label",for:"image"},"Display images",-1)),t[21]||(t[21]=o("small",{class:"form-text text-muted"},"Images are not anonymized.",-1))]),o("div",k3,[N(o("input",E3,null,512),[[r,{state:e.viewState,set:i=>{e.options.options.pdf=i},value:e.options?.options?.pdf,form:"conference",options:{}}]]),t[22]||(t[22]=o("label",{class:"form-check-label",for:"pdf"},"Display PDFs",-1)),t[23]||(t[23]=o("small",{class:"form-text text-muted"},"PDFs are not anonymized.",-1))]),o("div",C3,[N(o("input",_3,null,512),[[r,{state:e.viewState,set:i=>{e.options.options.notebook=i},value:e.options?.options?.notebook,form:"conference",options:{}}]]),t[24]||(t[24]=o("label",{class:"form-check-label",for:"notebook"},"Display Notebooks",-1))])]),o("section",S3,[t[30]||(t[30]=o("div",{class:"paper-section-eyebrow"},"Features",-1)),o("div",N3,[N(o("input",D3,null,512),[[r,{state:e.viewState,set:i=>{e.options.options.update=i},value:e.options?.options?.update,form:"conference",options:{}}]]),t[26]||(t[26]=o("label",{class:"form-check-label",for:"update"},"Auto-update from GitHub",-1)),t[27]||(t[27]=o("small",{class:"form-text text-muted"},"Pull the latest commit automatically (hourly maximum).",-1))]),o("div",R3,[N(o("input",T3,null,512),[[r,{state:e.viewState,set:i=>{e.options.options.page=i},value:e.options?.options?.page,form:"conference",options:{}}]]),t[28]||(t[28]=o("label",{class:"form-check-label",for:"page"},"GitHub Pages",-1)),t[29]||(t[29]=o("small",{class:"form-text text-muted"},"Enable anonymized GitHub pages.",-1))])]),o("section",A3,[t[32]||(t[32]=o("div",{class:"paper-section-eyebrow"},"Plan",-1)),t[33]||(t[33]=o("p",{class:"paper-section-copy"},"Billed per repository per month, prorated by the day for as long as a repository stays in the conference.",-1)),o("div",O3,[(l(!0),d(Q,null,se(e.plans,(i,a)=>(l(),d("label",{class:A(["paper-plan-card",{selected:e.options?.plan?.planID==i?.id}])},[N(o("input",{type:"radio",name:"planPicker",value:i?.id},null,8,I3),[[r,{state:e.viewState,set:u=>{e.options.plan.planID=u},value:e.options?.plan?.planID,form:"conference",options:{}}]]),o("div",{class:"paper-plan-head",textContent:c(i?.name)},null,8,P3),o("div",V3,[g(c(e.fmt?.number(i?.pricePerRepo))+"\u20AC ",1),t[31]||(t[31]=o("span",{class:"paper-plan-per"},"/ repo / month",-1))]),o("div",{class:"paper-plan-desc",innerHTML:e.sanitize(i?.description)},null,8,q3)],2))),256))])]),e.plan?.pricePerRepo>0?(l(),d("section",M3,[t[41]||(t[41]=o("div",{class:"paper-section-eyebrow"},"Billing",-1)),o("div",$3,[t[34]||(t[34]=o("label",{class:"paper-field-label",for:"billing_name"},"Name",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.conference?.billing_name?.invalid&&(e.conference?.billing_name?.touched||e.conference?.submitted)}]),name:"billing_name",id:"billing_name",required:"",placeholder:"First & last name"},null,2),[[r,{state:e.viewState,set:i=>{e.options.billing.name=i},value:e.options?.billing?.name,form:"conference",options:{}}]])]),o("div",L3,[t[35]||(t[35]=o("label",{class:"paper-field-label",for:"email"},"Email",-1)),N(o("input",{type:"email",class:A(["form-control",{"is-invalid":e.conference?.email?.invalid&&(e.conference?.email?.touched||e.conference?.submitted)}]),name:"email",id:"email",required:"",placeholder:"you@example.org"},null,2),[[r,{state:e.viewState,set:i=>{e.options.billing.email=i},value:e.options?.billing?.email,form:"conference",options:{}}]])]),o("div",U3,[t[36]||(t[36]=o("label",{class:"paper-field-label",for:"inputAddress"},"Address",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.conference?.inputAddress?.invalid&&(e.conference?.inputAddress?.touched||e.conference?.submitted)}]),name:"inputAddress",id:"inputAddress",required:"",placeholder:"1234 Main St"},null,2),[[r,{state:e.viewState,set:i=>{e.options.billing.address=i},value:e.options?.billing?.address,form:"conference",options:{}}]])]),o("div",F3,[N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.conference?.inputAddress2?.invalid&&(e.conference?.inputAddress2?.touched||e.conference?.submitted)}]),name:"inputAddress2",id:"inputAddress2",placeholder:"Apartment, studio, or floor"},null,2),[[r,{state:e.viewState,set:i=>{e.options.billing.address2=i},value:e.options?.billing?.address2,form:"conference",options:{}}]])]),o("div",z3,[o("div",H3,[t[37]||(t[37]=o("label",{class:"paper-field-label",for:"city"},"City",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.conference?.city?.invalid&&(e.conference?.city?.touched||e.conference?.submitted)}]),name:"city",id:"city",required:"",placeholder:"City"},null,2),[[r,{state:e.viewState,set:i=>{e.options.billing.city=i},value:e.options?.billing?.city,form:"conference",options:{}}]])]),o("div",B3,[t[38]||(t[38]=o("label",{class:"paper-field-label",for:"country"},"Country",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.conference?.country?.invalid&&(e.conference?.country?.touched||e.conference?.submitted)}]),name:"country",id:"country",required:"",placeholder:"Country"},null,2),[[r,{state:e.viewState,set:i=>{e.options.billing.country=i},value:e.options?.billing?.country,form:"conference",options:{}}]])]),o("div",j3,[t[39]||(t[39]=o("label",{class:"paper-field-label",for:"zip"},"Zip",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.conference?.zip?.invalid&&(e.conference?.zip?.touched||e.conference?.submitted)}]),name:"zip",id:"zip",required:"",placeholder:"Zip"},null,2),[[r,{state:e.viewState,set:i=>{e.options.billing.zip=i},value:e.options?.billing?.zip,form:"conference",options:{}}]])])]),o("div",G3,[t[40]||(t[40]=o("label",{class:"paper-field-label",for:"vat"},"VAT number",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.conference?.vat?.invalid&&(e.conference?.vat?.touched||e.conference?.submitted)}]),name:"vat",id:"vat",placeholder:"VAT Number"},null,2),[[r,{state:e.viewState,set:i=>{e.options.billing.vat=i},value:e.options?.billing?.vat,form:"conference",options:{}}]])])])):p("v-if",!0),o("div",W3,[e.error?(l(),d("div",{key:0,class:"alert alert-danger",role:"alert",textContent:c(e.error)},null,8,K3)):p("v-if",!0),e.message?(l(),d("div",{key:1,class:"alert alert-success",role:"alert",textContent:c(e.message)},null,8,Y3)):p("v-if",!0),o("button",{id:"send",disabled:e.saving,type:"submit",class:"btn btn-ink",onClick:t[0]||(t[0]=ce(i=>e.submitForm(i,()=>{e.submit(i)}),["prevent"]))},c(e.saving?e.editionMode?"Updating\u2026":"Creating\u2026":e.editionMode?"Update conference":"Create conference"),9,J3)])])),[[s,e.viewState]])])])}var Q3={key:0},X3=["innerHTML"],Z3={key:3},x3=["src"],eP=["src"],tP={key:7},oP={controls:"controls"},sP=["src"],nP={key:8},rP={key:9,class:"file-error container d-flex h-100"},iP={class:"paper-ratelimit-card m-auto",style:{"max-width":"520px"}},aP={class:"paper-error-msg"},lP={key:10,class:"file-error container d-flex h-100"},dP=["textContent"],uP={key:11,class:"file-error container d-flex h-100"},cP={key:12,class:"file-error container d-flex h-100"},pP={key:13,class:"file-error container d-flex h-100"},fP={key:14,class:"file-error container d-flex h-100"},mP={class:"paper-empty-title m-auto"},hP=["href"];function Sl(e,t){let n=We("html-doc"),r=We("pdfviewer"),s=We("notebook"),i=ye("code-editor");return l(),d(Q,null,[e.type=="text"?N((l(),d("div",Q3,null,512)),[[i,{content:e.content,options:e.aceOption}]]):p("v-if",!0),e.type=="html"?(l(),d("div",{key:1,class:"file-content markdown-body",innerHTML:e.sanitize(e.content)},null,8,X3)):p("v-if",!0),e.type=="html-doc"&&!e.showSource&&e.content!=null?(l(),qt(n,{key:2,content:e.content,"base-url":e.fileBaseUrl,"allow-scripts":e.allowScripts},null,8,["content","base-url","allow-scripts"])):p("v-if",!0),(e.type=="code"||e.type=="html-doc"&&e.showSource)&&e.content!=null?N((l(),d("div",Z3,null,512)),[[i,{content:e.content,options:e.aceOption}]]):p("v-if",!0),e.type=="image"?(l(),d("img",{key:4,class:"image-content",src:e.safeUrl(e.url)},null,8,x3)):p("v-if",!0),e.type=="media"?(l(),d("iframe",{key:5,class:"h-100 overflow-auto w-100 b-0",src:e.safeUrl(e.url)},null,8,eP)):p("v-if",!0),e.type=="pdf"?(l(),qt(r,{key:6,src:e.safeUrl(e.url)},null,8,["src"])):p("v-if",!0),e.type=="audio"?(l(),d("div",tP,[o("audio",oP,[o("source",{src:e.safeUrl(e.url)},null,8,sP)])])):p("v-if",!0),e.type=="IPython"?(l(),d("div",nP,[_e(s,{file:e.url,content:e.content},null,8,["file","content"])])):p("v-if",!0),e.type=="rate_limited"?(l(),d("div",rP,[o("div",iP,[t[2]||(t[2]=le('
Temporarily paused
GitHub API rate limit reached
',1)),o("p",aP,[t[0]||(t[0]=g("This repository will be available in ",-1)),o("strong",null,c(e.rateLimitCountdown),1),t[1]||(t[1]=g(". The page will reload automatically.",-1))])])])):p("v-if",!0),e.type=="error"?(l(),d("div",lP,[o("h1",{class:"paper-empty-title m-auto",textContent:c(e.fmt.translate("ERRORS."+e.content))},null,8,dP)])):p("v-if",!0),e.type=="loading"&&!e.error?(l(),d("div",uP,[...t[3]||(t[3]=[o("h1",{class:"paper-empty-title m-auto"},"Loading\u2026",-1)])])):p("v-if",!0),e.type=="empty"?(l(),d("div",cP,[...t[4]||(t[4]=[o("h1",{class:"paper-empty-title m-auto"},[g("Empty "),o("em",null,"repository"),g(".")],-1)])])):p("v-if",!0),e.content==null&&e.type!="empty"?(l(),d("div",pP,[...t[5]||(t[5]=[o("h1",{class:"paper-empty-title m-auto"},[g("Empty "),o("em",null,"file"),g(".")],-1)])])):p("v-if",!0),e.type=="binary"?(l(),d("div",fP,[o("h1",mP,[t[6]||(t[6]=g("Unsupported ",-1)),t[7]||(t[7]=o("em",null,"binary file",-1)),t[8]||(t[8]=g(". You can ",-1)),o("a",{target:"_blank",href:e.safeUrl(e.url+"&download=true")},"download it",8,hP),t[9]||(t[9]=g(".",-1))])])):p("v-if",!0)],64)}var vP={class:"container page dashboard-page paper-page"},gP={class:"row"},yP={class:"w-100"},bP={class:"w-100","aria-label":"Pull Requests","accept-charset":"UTF-8"},wP={class:"d-flex flex-column flex-md-row align-items-md-center",style:{gap:"8px"}},kP={class:"flex-grow-1"},EP={type:"search",id:"search",class:"form-control","aria-label":"Find a pull request...",placeholder:"Find a pull request...",autocomplete:"off"},CP={class:"d-flex flex-wrap",style:{gap:"6px"}},_P={class:"dropdown"},SP={class:"dropdown-menu","aria-labelledby":"dropdownSort"},NP={class:"form-check dropdown-item"},DP={class:"form-check-input",type:"radio",name:"sort",id:"sortFullName",value:"fullName"},RP={class:"form-check dropdown-item"},TP={class:"form-check-input",type:"radio",name:"sort",id:"sortAnonymizeDate",value:"-anonymizeDate"},AP={class:"form-check dropdown-item"},OP={class:"form-check-input",type:"radio",name:"sort",id:"sortStatus",value:"-status"},IP={class:"form-check dropdown-item"},PP={class:"form-check-input",type:"radio",name:"sort",id:"sortLastView",value:"-lastView"},VP={class:"form-check dropdown-item"},qP={class:"form-check-input",type:"radio",name:"sort",id:"sortPageView",value:"-pageView"},MP={class:"dropdown"},$P={class:"dropdown-menu","aria-labelledby":"dropdownStatus"},LP={class:"form-check dropdown-item"},UP={class:"form-check-input",type:"checkbox",name:"sort",id:"statusReady",value:"ready"},FP={class:"form-check dropdown-item"},zP={class:"form-check-input",type:"checkbox",name:"sort",id:"statusExpired",value:"expired"},HP={class:"form-check dropdown-item"},BP={class:"form-check-input",type:"checkbox",name:"sort",id:"statusRemoved",value:"removed"},jP={class:"d-flex flex-wrap mt-2",style:{gap:"6px"}},GP={class:"filter-chip"},WP=["onClick"],KP={class:"repo-list w-100"},YP={class:"repo-list-item-content"},JP={class:"repo-list-item-main"},QP={class:"repo-list-item-header"},XP=["textContent","href"],ZP=["textContent"],xP=["textContent"],eV={class:"repo-source"},tV=["href"],oV={class:"repo-date"},sV={class:"repo-meta"},nV={key:0,title:"Conference"},rV=["title"],iV=["title"],aV=["title"],lV={key:1},dV={class:"repo-list-item-actions"},uV={class:"dropdown"},cV={class:"dropdown-menu dropdown-menu-right"},pV=["href"],fV=["onClick"],mV=["onClick"],hV=["onClick"],vV=["href"],gV={key:0,class:"repo-list-empty"};function Nl(e,t){let n=ye("field"),r=ye("form");return l(),d("div",vP,[o("div",gP,[o("div",yP,[t[12]||(t[12]=le('
My work \xA0/\xA0 Pull requests

Anonymized pull requests

Track PR mirrors you\u2019ve created and their reviewer traffic.

',2)),p(" Search + filters row "),N((l(),d("form",bP,[o("div",wP,[o("div",kP,[N(o("input",EP,null,512),[[n,{state:e.viewState,set:s=>{e.search=s},value:e.search,form:null,options:{}}]])]),o("div",CP,[o("div",_P,[t[6]||(t[6]=o("button",{class:"btn btn-sm dropdown-toggle",type:"button",id:"dropdownSort","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}," Sort ",-1)),o("div",SP,[t[5]||(t[5]=o("h6",{class:"dropdown-header"},"Select order",-1)),o("div",NP,[N(o("input",DP,null,512),[[n,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[0]||(t[0]=o("label",{class:"form-check-label",for:"sortFullName"},"Pull Request",-1))]),o("div",RP,[N(o("input",TP,null,512),[[n,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[1]||(t[1]=o("label",{class:"form-check-label",for:"sortAnonymizeDate"},"Anonymize Date",-1))]),o("div",AP,[N(o("input",OP,null,512),[[n,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[2]||(t[2]=o("label",{class:"form-check-label",for:"sortStatus"},"Status",-1))]),o("div",IP,[N(o("input",PP,null,512),[[n,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[3]||(t[3]=o("label",{class:"form-check-label",for:"sortLastView"},"Last View",-1))]),o("div",VP,[N(o("input",qP,null,512),[[n,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[4]||(t[4]=o("label",{class:"form-check-label",for:"sortPageView"},"Page View",-1))])])]),o("div",MP,[t[11]||(t[11]=o("button",{class:"btn btn-sm dropdown-toggle",type:"button",id:"dropdownStatus","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}," Status ",-1)),o("div",$P,[t[10]||(t[10]=o("h6",{class:"dropdown-header"},"Select status",-1)),o("div",LP,[N(o("input",UP,null,512),[[n,{state:e.viewState,set:s=>{e.filters.status.ready=s},value:e.filters?.status?.ready,form:null,options:{}}]]),t[7]||(t[7]=o("label",{class:"form-check-label",for:"statusReady"},"Ready",-1))]),o("div",FP,[N(o("input",zP,null,512),[[n,{state:e.viewState,set:s=>{e.filters.status.expired=s},value:e.filters?.status?.expired,form:null,options:{}}]]),t[8]||(t[8]=o("label",{class:"form-check-label",for:"statusExpired"},"Expired",-1))]),o("div",HP,[N(o("input",BP,null,512),[[n,{state:e.viewState,set:s=>{e.filters.status.removed=s},value:e.filters?.status?.removed,form:null,options:{}}]]),t[9]||(t[9]=o("label",{class:"form-check-label",for:"statusRemoved"},"Removed",-1))])])])])])])),[[r,e.viewState]]),p(" Active filter chips "),N(o("div",jP,[(l(!0),d(Q,null,se(e.filters?.status,(s,i,a)=>N((l(),d("span",GP,[g(c(e.fmt?.title(i))+" ",1),o("button",{type:"button",class:"filter-chip-close","aria-label":"Remove filter",onClick:u=>{e.filters.status[i]=!0}}," \xD7 ",8,WP)],512)),[[W,!s]])),256))],512),[[W,e.filters?.status?.ready===!1||e.filters?.status?.expired===!1||e.filters?.status?.removed===!1]])]),p(" Pull request list "),o("ul",KP,[(l(!0),d(Q,null,se(e.filteredPullRequests,(s,i)=>(l(),d("li",{class:A(["repo-list-item",{"repo-inactive":s?.status=="expired"||s?.status=="removed"||s?.status=="error"}])},[o("div",YP,[o("div",JP,[o("div",QP,[o("a",{class:"repo-name",textContent:c(s?.pullRequestId),href:e.safeUrl("/pr/"+s?.pullRequestId)},null,8,XP),o("span",{class:A(["status-badge",{"status-removed":s?.status=="removed"||s?.status=="expired"||s?.status=="removing"||s?.status=="expiring","status-preparing":s?.status=="preparing"||s?.status=="download","status-ready":s?.status=="ready","status-error":s?.status=="error"}])},[o("span",{textContent:c(e.fmt?.title(s?.status))},null,8,ZP),s?.status=="error"?(l(),d("span",{key:0,textContent:c(": "+s?.statusMessage)},null,8,xP)):p("v-if",!0)],2)]),o("div",eV,[o("span",null,[t[13]||(t[13]=o("i",{class:"fab fa-github","aria-hidden":"true"},null,-1)),o("a",{href:e.safeUrl("https://github.com/"+s?.source?.repositoryFullName+"/pull/"+s?.source?.pullRequestId)},c(s?.source?.repositoryFullName)+"#"+c(s?.source?.pullRequestId),9,tV)]),o("span",{class:A(["status-badge",{"status-ready":s?.merged,"status-removed":s?.state=="open","status-error":s?.state=="closed"&&!s?.merged}]),style:{"font-size":"10px"}},c(e.fmt?.title(s?.merged?"merged":s?.state)),3),o("span",oV,"anonymized "+c(e.fmt?.humanTime(s?.anonymizeDate)),1)])]),o("div",sV,[s?.conference?(l(),d("span",nV,[t[14]||(t[14]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-conference"})],-1)),g(" "+c(s?.conference),1)])):p("v-if",!0),o("span",{"data-toggle":"tooltip","data-placement":"bottom",title:"Terms: "+s?.options?.terms?.join(", ")},[t[15]||(t[15]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-shield"})],-1)),g(" "+c(e.fmt?.number(s?.options?.terms?.length)),1)],8,rV),o("span",{"data-toggle":"tooltip","data-placement":"bottom",title:"Views: "+e.fmt?.number(s?.pageView)},[t[16]||(t[16]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-eye"})],-1)),g(" "+c(e.fmt?.number(s?.pageView)),1)],8,iV),o("span",{"data-toggle":"tooltip","data-placement":"bottom",title:"Last view: "+e.fmt?.date(s?.lastView)},[t[17]||(t[17]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-calendar"})],-1)),g(" "+c(e.fmt?.humanTime(s?.lastView)),1)],8,aV),s?.options?.expirationMode!="never"&&s?.status=="ready"?(l(),d("span",lV,[t[18]||(t[18]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-clock"})],-1)),g(" Expire: "+c(e.fmt?.humanTime(s?.options?.expirationDate)),1)])):p("v-if",!0)])]),o("div",dV,[o("div",uV,[t[24]||(t[24]=o("button",{class:"btn btn-sm dropdown-toggle",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}," Actions ",-1)),o("div",cV,[o("a",{class:"dropdown-item",href:e.safeUrl("/pull-request-anonymize/"+s?.pullRequestId)},[...t[19]||(t[19]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-edit"})],-1),g(" Edit ",-1)])],8,pV),N(o("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.updatePullRequest(s),["prevent"])},[...t[20]||(t[20]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-refresh"})],-1),g(" Force update ",-1)])],8,fV),[[W,s?.status=="ready"||s?.status=="error"]]),N(o("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.updatePullRequest(s),["prevent"])},[...t[21]||(t[21]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-check-circle"})],-1),g(" Enable ",-1)])],8,mV),[[W,s?.status=="removed"]]),N(o("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.removePullRequest(s),["prevent"])},[...t[22]||(t[22]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-trash"})],-1),g(" Remove ",-1)])],8,hV),[[W,s?.status=="ready"]]),o("a",{class:"dropdown-item",href:e.safeUrl("/pr/"+s?.pullRequestId+"/")},[...t[23]||(t[23]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-eye"})],-1),g(" View PR ",-1)])],8,vV)])])])],2))),256)),e.filteredPullRequests?.length==0?(l(),d("li",gV,[...t[25]||(t[25]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-inbox"})],-1),o("span",null,"No pull requests to display.",-1)])])):p("v-if",!0)])])])}var yV={class:"container paper-page paper-settings"},bV={class:"paper-settings-body"},wV={class:"paper-settings-toc"},kV={class:"paper-settings-main"},EV={id:"settings-quota",class:"paper-settings-section"},CV={key:1,class:"quota-row","aria-hidden":"true"},_V={class:"quota-item"},SV={id:"settings-terms",class:"paper-settings-section"},NV={class:"form-group"},DV={class:"form-control",id:"terms",name:"terms",rows:"4",placeholder:`Jane Smith + label names the service and the tooltip says who to contact. `),t[12]||(t[12]=o("li",{class:"nav-item d-none d-lg-block"},[o("a",{class:"nav-link",target:"_blank",rel:"noopener",href:"https://github.com/tdurieux/anonymous_github/issues/new?template=issue_report.yml",title:"Report a problem with the Anonymous GitHub service. Questions about an anonymized repository or paper go to its authors.","data-offset":"30"},[o("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-bug"})]),y("Report a bug ")])],-1)),e.isDarkMode?p("v-if",!0):(l(),d("li",xI,[o("a",{class:"nav-link nav-icon",href:"#",title:"Switch to dark mode","aria-label":"Switch to dark mode",role:"button",onClick:t[0]||(t[0]=he(n=>{e.darkMode(!0)},["prevent"]))},[...t[7]||(t[7]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-moon"})],-1)])])])),e.isDarkMode?(l(),d("li",e4,[o("a",{class:"nav-link nav-icon",href:"#",title:"Switch to light mode","aria-label":"Switch to light mode",role:"button",onClick:t[1]||(t[1]=he(n=>{e.darkMode(!1)},["prevent"]))},[...t[8]||(t[8]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-sun"})],-1)])])])):p("v-if",!0),e.user?p("v-if",!0):(l(),d("li",t4,[...t[9]||(t[9]=[o("a",{class:"nav-link btn-signin",target:"_self",href:"/signin","data-offset":"30"},[o("i",{class:"fab fa-github mr-1"}),y(" Sign in ")],-1)])])),e.user?(l(),d("li",o4,[o("a",s4,[e.user?.photo?(l(),d("img",{key:0,width:"22",height:"22",class:"rounded-circle",src:e.safeUrl(e.user?.photo)},null,8,n4)):p("v-if",!0),o("span",r4,c(e.user?.username),1)]),o("div",i4,[o("h6",a4,"Signed in as @"+c(e.user?.username),1),t[10]||(t[10]=ce('SettingsDefaults, quotas, accountGitHub connectionsRepository access and OAuthClaim an anonymizationAttach an existing mirror to your accountReport a bugAbout this service, not a paperSource codeSupport the projectSign out',9))])])):p("v-if",!0)])])],2),e.generalMessage?(l(),d("div",{key:0,class:"navbar shadow generalMessage",innerHTML:e.sanitize(e.generalMessage)},null,8,l4)):p("v-if",!0)],64)}var d4={class:"paper-landing"},u4={class:"paper-hero"},c4={class:"paper-hero-copy"},p4={class:"paper-cta-row"},f4={key:0,href:"/signin",target:"_self",class:"btn-hero"},h4={key:1,href:"/anonymize",class:"btn-hero"},m4={class:"paper-stats paper-wrap",id:"metrics","aria-label":"Usage over the last 60 days"},v4={class:"paper-stats-grid"},g4={class:"paper-stat-value"},y4={class:"paper-stat-label"},b4=["viewBox"],w4=["x","y","width","height"],k4={key:1,class:"paper-stat-delta"},E4={class:"paper-features paper-wrap","aria-label":"Product features"},C4={class:"paper-features-list",role:"tablist","aria-label":"Features","aria-orientation":"vertical"},_4=["onClick","onKeydown","id","aria-controls","aria-selected","tabindex"],S4={class:"paper-eyebrow"},N4={class:"paper-feature-title"},D4={class:"paper-feature-more"},R4={class:"paper-feature-title paper-feature-title-m","aria-hidden":"true"},T4=["href","target"],A4={class:"paper-features-stage"},O4=["id","aria-labelledby"],I4={class:"paper-frame"},P4={class:"paper-frame-bar","aria-hidden":"true"},V4={class:"url"},q4=["src","alt"],M4={class:"paper-footer"},$4={class:"paper-footer-inner"},L4={class:"paper-footer-col"},U4={key:0,href:"/dashboard"},F4={key:1,href:"/conferences"},z4={class:"paper-footer-foot"};function El(e,t){return l(),d("div",d4,[p(" Hero: copy on the left, the product on the right "),o("section",u4,[o("div",c4,[t[2]||(t[2]=o("div",{class:"paper-eyebrow"},"For double-blind peer review",-1)),t[3]||(t[3]=o("h1",{class:"hero-title"},[y(" Share the code,"),o("br"),o("span",{class:"accent"},"not the author.")],-1)),t[4]||(t[4]=o("p",{class:"hero-subtitle"}," Anonymous GitHub makes a read-only mirror of your repository, pull request, or gist. It redacts the terms you choose in text files, so reviewers can browse your artifact through an anonymous link. ",-1)),o("div",p4,[e.user?p("v-if",!0):(l(),d("a",f4,[...t[0]||(t[0]=[o("i",{class:"fab fa-github mr-2","aria-hidden":"true"},null,-1),y("Sign in with GitHub ",-1)])])),e.user?(l(),d("a",h4," Anonymize a repository \u2192 ")):p("v-if",!0),t[1]||(t[1]=o("a",{class:"paper-link-arrow",target:"_self",href:"https://anonymous.4open.science/r/840c8c57-3c32-451e-bf12-0e20be300389/"},"See an anonymized repository \u2192",-1))]),t[5]||(t[5]=o("ul",{class:"paper-reassure"},[o("li",null,"Free and open source"),o("li",null,"Read-only: never writes to your repos"),o("li",null,"Expires on the date you set")],-1))]),t[6]||(t[6]=ce('
A reviewer preview with the author, affiliation, and email replaced by anonymous terms
',1))]),p(" Proof "),t[16]||(t[16]=ce('
Trusted by authors at
ICSEFSEOOPSLA
',1)),p(" Live stats "),o("section",m4,[t[7]||(t[7]=o("div",{class:"paper-stats-meta"},[o("div",{class:"paper-stats-meta-left"},"Live \xB7 last 60 days"),o("div",{class:"paper-stats-meta-right"},[o("span",{class:"paper-stats-dot","aria-hidden":"true"}),y(" updated daily ")])],-1)),o("div",v4,[(l(!0),d(X,null,ae(e.cards,(n,r)=>(l(),d("div",{class:"paper-stat-card",key:n?.key},[o("div",g4,c(e.fmt?.bigNum(n?.total)),1),o("div",y4,c(n?.label),1),e.history[n?.key].bars?.length>1?(l(),d("svg",{key:0,class:"paper-stat-bars",preserveAspectRatio:"none","aria-hidden":"true",viewBox:"0 0 "+e.history[n?.key].viewW+" 36"},[(l(!0),d(X,null,ae(e.history[n?.key].bars,(s,i)=>(l(),d("rect",{key:i,class:A({"is-latest":i===e.history[n.key].bars.length-1}),x:s?.x,y:s?.y,width:s?.w,height:s?.h},null,10,w4))),128))],8,b4)):p("v-if",!0),e.history[n?.key].bars?.length>1?(l(),d("div",k4," +"+c(e.fmt?.number(e.history[n?.key].deltaToday))+" today ",1)):p("v-if",!0)]))),128))])]),p(" Before / after "),t[17]||(t[17]=o("section",{class:"paper-section-head paper-wrap"},[o("div",null,[o("div",{class:"paper-eyebrow"},"Before \xB7 after"),o("h2",null,[y("The same repository, "),o("em",null,"minus you.")])]),o("p",null," Names, affiliations, emails, and any term you list are replaced across the README, source files, notebooks, and PDF links. Reviewers browse the real thing, not a zip. ")],-1)),t[18]||(t[18]=o("div",{class:"paper-preview paper-wrap","aria-label":"Before and after example"},[o("div",{class:"pane"},[o("div",{class:"pane-header"},[o("span",{class:"pane-label"},"Before \xB7 your repo"),o("span",{class:"pane-url"},"github.com/jane-smith/DeepLearnUtils")]),o("div",{class:"pane-body"},[o("div",null,[o("span",{class:"tok"},"#"),y(),o("strong",null,"DeepLearnUtils")]),o("div",null,"Developed by Jane Smith at MIT CSAIL."),o("div",null,"See Smith et\xA0al., \u201CAttention That Works,\u201D 2026."),o("div",null,"Contact: jane.smith@mit.edu")])]),o("div",{class:"pane"},[o("div",{class:"pane-header"},[o("span",{class:"pane-label"},"After \xB7 anonymous mirror"),o("span",{class:"pane-url"},"anonymous.4open.science/r/paper-7f2a")]),o("div",{class:"pane-body"},[o("div",null,[o("span",{class:"tok"},"#"),y(),o("strong",null,"DeepLearnUtils")]),o("div",null,[y("Developed by "),o("span",{class:"redact",role:"img","aria-label":"redacted author name"},"XXXX-1"),y(" at "),o("span",{class:"redact",role:"img","aria-label":"redacted affiliation"},"XXXX-2"),y(".")]),o("div",null,[y("See "),o("span",{class:"redact",role:"img","aria-label":"redacted author name"},"XXXX-1"),y(" et\xA0al., \u201CAttention That Works,\u201D 2026.")]),o("div",null,[y("Contact: "),o("span",{class:"redact",role:"img","aria-label":"redacted email address"},"XXXX-3")])])])],-1)),p(" What you get: one screenshot, three tabs "),t[19]||(t[19]=o("section",{class:"paper-section-head paper-wrap",id:"about"},[o("div",null,[o("div",{class:"paper-eyebrow"},"What you get"),o("h2",null,[y("Anonymize, review, "),o("em",null,"manage.")])]),o("p",null," Terms are redacted in text files. Enabled images and PDFs are served unchanged, so review them for identifying content before sharing. Monitor your mirror, update it, or remove it when the review is over. ")],-1)),o("section",E4,[o("div",C4,[(l(!0),d(X,null,ae(e.features,(n,r)=>(l(),d("div",{class:A(["paper-feature",{"is-on":e.feature===n?.key}]),key:n?.key},[o("button",{type:"button",class:"paper-feature-tab",role:"tab",onClick:s=>e.selectFeature(n.key),onKeydown:s=>e.featureKeydown(s,r),id:"feature-tab-"+n?.key,"aria-controls":"feature-panel-"+n?.key,"aria-selected":e.feature===n?.key,tabindex:e.feature===n?.key?0:-1},[o("span",S4,c(n?.num)+" \xB7 "+c(n?.eyebrow),1),o("span",N4,[y(c(n?.title)+" ",1),o("em",null,c(n?.accent),1)])],40,_4),o("div",D4,[o("span",R4,[y(c(n?.title)+" ",1),o("em",null,c(n?.accent),1)]),o("p",null,c(n?.text),1),o("a",{class:"paper-link-arrow",href:e.safeUrl(e.featureHref(n)),target:e.featureTarget(n)},c(n?.cta)+" \u2192",9,T4)])],2))),128))]),o("div",A4,[(l(!0),d(X,null,ae(e.features,(n,r)=>N((l(),d("div",{class:"paper-feature-panel",role:"tabpanel",key:n?.key,id:"feature-panel-"+n?.key,"aria-labelledby":"feature-tab-"+n?.key},[o("div",I4,[o("div",P4,[t[8]||(t[8]=o("span",{class:"dots"},[o("i"),o("i"),o("i")],-1)),o("span",V4,c(n?.url),1)]),o("div",{class:A("paper-crop paper-crop-"+n?.key)},[o("img",{loading:"lazy",width:"2880",height:"1800",src:e.safeUrl(n?.img),alt:n?.alt},null,8,q4)],2)])],8,O4)),[[Y,e.feature===n?.key]])),128))])]),p(" FAQ teaser "),t[20]||(t[20]=ce('
Before you sign in

The questions that come up most.

Read the full FAQ \u2192
What access does GitHub sign-in require?

The GitHub App has read-only access to the repositories you choose. Legacy OAuth uses broader permissions and is still needed for gists. Anonymous GitHub never writes to your repositories.

Which file formats are supported?

Source code with syntax highlighting, Markdown, Jupyter notebooks, PDFs, images, and GitHub Pages sites. Text files are anonymized; enabled images and PDFs are served unchanged.

What happens when an anonymized repository expires?

You choose: the mirror is removed, or visitors are redirected to the original GitHub repository once the review is over.

',1)),o("footer",M4,[o("div",$4,[t[12]||(t[12]=o("div",{class:"paper-footer-brand"},[o("div",{class:"paper-footer-mark"},[y("Anonymous "),o("em",null,"GitHub")]),o("p",{class:"paper-footer-tag"}," A read-only, identity-stripped mirror of your repository, built for double-anonymous peer review. ")],-1)),o("div",L4,[t[9]||(t[9]=o("div",{class:"paper-footer-head"},"Product",-1)),t[10]||(t[10]=o("a",{href:"/anonymize"},"Anonymize",-1)),e.user?(l(),d("a",U4,"My work")):p("v-if",!0),e.user?(l(),d("a",F4,"Conferences")):p("v-if",!0),t[11]||(t[11]=o("a",{href:"/faq"},"FAQ",-1))]),t[13]||(t[13]=ce('',2))]),t[15]||(t[15]=o("div",{class:"paper-footer-rule"},null,-1)),o("div",z4,[o("span",null,"\xA9 "+c(e.year||2026)+" Anonymous GitHub \xB7 GPL-3.0 licensed",1),t[14]||(t[14]=o("span",{class:"paper-footer-meta"},"Built for reviewers, by researchers.",-1))])])])}var H4={class:"paper-empty"},j4={class:"paper-empty-inner"},B4={key:0,class:"paper-eyebrow"},G4={key:1,class:"paper-eyebrow"},W4={key:2,class:"paper-empty-title"},K4=["textContent"];function Cl(e,t){return l(),d("div",H4,[o("div",j4,[e.error?p("v-if",!0):(l(),d("div",B4,"Working")),e.error?(l(),d("div",G4,"Error")):p("v-if",!0),e.error?p("v-if",!0):(l(),d("h1",W4,[...t[0]||(t[0]=[y(" Loading",-1),o("span",{class:"dot-anim"},"\u2026",-1)])])),e.error?(l(),d("h1",{key:3,class:"paper-empty-title",textContent:c(e.fmt.translate(e.error))},null,8,K4)):p("v-if",!0)])])}var Y4={class:"container paper-page paper-settings"},J4={class:"paper-crumbs"},Q4={class:"here"},X4={class:"paper-page-title"},Z4={class:"paper-settings-body"},x4={class:"paper-settings-toc"},e3={href:"#conf-billing"},t3={class:"form needs-validation paper-settings-main",name:"conference",novalidate:""},o3={id:"conf-basics",class:"paper-settings-section"},s3={class:"form-group"},n3={class:"invalid-feedback"},r3={class:"invalid-feedback"},i3={class:"form-group"},a3={class:"invalid-feedback"},l3={class:"form-group"},d3={class:"invalid-feedback"},u3={class:"invalid-feedback"},c3={id:"conf-window",class:"paper-settings-section"},p3={class:"form-grid-2"},f3={class:"form-group"},h3={class:"invalid-feedback"},m3={class:"invalid-feedback"},v3={class:"form-group"},g3={class:"invalid-feedback"},y3={class:"invalid-feedback"},b3={id:"conf-rendering",class:"paper-settings-section"},w3={class:"form-check"},k3={class:"form-check-input",type:"checkbox",id:"link",name:"link"},E3={class:"form-check"},C3={class:"form-check-input",type:"checkbox",id:"image",name:"image"},_3={class:"form-check"},S3={class:"form-check-input",type:"checkbox",id:"pdf",name:"pdf"},N3={class:"form-check"},D3={class:"form-check-input",type:"checkbox",id:"notebook",name:"notebook"},R3={id:"conf-features",class:"paper-settings-section"},T3={class:"form-check"},A3={class:"form-check-input",type:"checkbox",id:"update",name:"update"},O3={class:"form-check"},I3={class:"form-check-input",type:"checkbox",id:"page",name:"page"},P3={id:"conf-plan",class:"paper-settings-section"},V3={class:"paper-plan-grid"},q3=["value"],M3=["textContent"],$3={class:"paper-plan-price"},L3=["innerHTML"],U3={key:0,id:"conf-billing",class:"paper-settings-section"},F3={class:"form-group"},z3={class:"form-group"},H3={class:"form-group"},j3={class:"form-group"},B3={class:"form-grid-3"},G3={class:"form-group"},W3={class:"form-group"},K3={class:"form-group"},Y3={class:"form-group"},J3={class:"paper-settings-footer"},Q3=["textContent"],X3=["textContent"],Z3=["disabled"];function _l(e,t){let n=ye("paper-scrollspy"),r=ye("field"),s=ye("form");return l(),d("div",Y4,[o("div",J4,[t[1]||(t[1]=o("a",{href:"/dashboard"},"My work",-1)),t[2]||(t[2]=y(" \xA0/\xA0 ",-1)),t[3]||(t[3]=o("a",{href:"/conferences"},"Conferences",-1)),t[4]||(t[4]=y(" \xA0/\xA0 ",-1)),o("span",Q4,c(e.editionMode?"Edit":"New"),1)]),o("h1",X4,[y(c(e.editionMode?"Edit":"Create a")+" ",1),t[5]||(t[5]=o("em",null,"conference",-1))]),t[42]||(t[42]=o("p",{class:"paper-page-lede"}," Give chairs access to every anonymization submitted to a venue, and lift author quotas during the review window. ",-1)),o("div",Z4,[N((l(),d("aside",x4,[t[7]||(t[7]=o("div",{class:"paper-settings-toc-head"},"On this page",-1)),o("nav",null,[t[6]||(t[6]=ce('BasicsReview windowRendering defaultsFeaturesPlan',5)),N(o("a",e3,"Billing",512),[[Y,e.plan?.pricePerRepo>0]])])])),[[n]]),N((l(),d("form",t3,[o("section",o3,[t[12]||(t[12]=o("div",{class:"paper-section-eyebrow"},"Basics",-1)),o("div",s3,[t[8]||(t[8]=o("label",{class:"paper-field-label",for:"name"},"Conference name",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.conference?.name?.invalid&&(e.conference?.name?.touched||e.conference?.submitted)}]),name:"name",id:"name",required:"",placeholder:"e.g. International Conference on Software Engineering"},null,2),[[r,{state:e.viewState,set:i=>{e.options.name=i},value:e.options?.name,form:"conference",options:{}}]]),N(o("div",n3," The name of the conference is invalid. ",512),[[Y,e.conference?.name?.errors?.invalid]]),N(o("div",r3," The name of the conference is required. ",512),[[Y,e.conference?.name?.errors?.required]])]),o("div",i3,[t[9]||(t[9]=o("label",{class:"paper-field-label",for:"url"},"Website",-1)),N(o("input",{type:"url",class:A(["form-control",{"is-invalid":e.conference?.url?.invalid&&(e.conference?.url?.touched||e.conference?.submitted)}]),name:"url",id:"url",placeholder:"https://example.org"},null,2),[[r,{state:e.viewState,set:i=>{e.options.url=i},value:e.options?.url,form:"conference",options:{}}]]),N(o("div",a3," The url of the conference is invalid. ",512),[[Y,e.conference?.url?.errors?.url]])]),o("div",l3,[t[10]||(t[10]=o("label",{class:"paper-field-label",for:"conferenceID"},"Conference ID",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.conference?.conferenceID?.invalid&&(e.conference?.conferenceID?.touched||e.conference?.submitted)}]),name:"conferenceID",id:"conferenceID",required:"",pattern:"[a-zA-Z0-9\\-_]{3,10}",placeholder:"ICSE26"},null,2),[[r,{state:e.viewState,set:i=>{e.options.conferenceID=i},value:e.options?.conferenceID,form:"conference",options:{}}]]),t[11]||(t[11]=o("small",{class:"form-text text-muted"},[y("3\u201310 characters, letters, numbers, "),o("code",null,"-"),y(" and "),o("code",null,"_"),y(". Authors reference this when they anonymize.")],-1)),N(o("div",{class:"invalid-feedback"}," The conference ID '"+c(e.options?.conferenceID)+"' is already used. ",513),[[Y,e.conference?.conferenceID?.errors?.used]]),N(o("div",d3," The conference ID is required. ",512),[[Y,e.conference?.conferenceID?.errors?.required]]),N(o("div",u3," The format of the conference ID is incorrect ([a-zA-Z0-9-_]{3,10}). ",512),[[Y,e.conference?.conferenceID?.errors?.pattern]])])]),o("section",c3,[t[17]||(t[17]=o("div",{class:"paper-section-eyebrow"},"Review window",-1)),o("div",p3,[o("div",f3,[t[13]||(t[13]=o("label",{class:"paper-field-label",for:"startDate"},"Start date",-1)),N(o("input",{type:"date",class:A(["form-control",{"is-invalid":e.conference?.startDate?.invalid&&(e.conference?.startDate?.touched||e.conference?.submitted)}]),name:"startDate",id:"startDate",required:""},null,2),[[r,{state:e.viewState,set:i=>{e.options.startDate=i},value:e.options?.startDate,form:"conference",options:{}}]]),t[14]||(t[14]=o("small",{class:"form-text text-muted"},"Beginning of the review process.",-1)),N(o("div",h3," Start date is required. ",512),[[Y,e.conference?.startDate?.errors?.required]]),N(o("div",m3," Start date must be before end date. ",512),[[Y,e.conference?.startDate?.errors?.invalid]])]),o("div",v3,[t[15]||(t[15]=o("label",{class:"paper-field-label",for:"endDate"},"End date",-1)),N(o("input",{type:"date",class:A(["form-control",{"is-invalid":e.conference?.endDate?.invalid&&(e.conference?.endDate?.touched||e.conference?.submitted)}]),name:"endDate",id:"endDate",required:""},null,2),[[r,{state:e.viewState,set:i=>{e.options.endDate=i},value:e.options?.endDate,form:"conference",options:{}}]]),t[16]||(t[16]=o("small",{class:"form-text text-muted"},"All repositories expire on this date.",-1)),N(o("div",g3," End date is required. ",512),[[Y,e.conference?.endDate?.errors?.required]]),N(o("div",y3," End date is invalid. ",512),[[Y,e.conference?.endDate?.errors?.invalid]])])])]),o("section",b3,[t[25]||(t[25]=o("div",{class:"paper-section-eyebrow"},"Rendering defaults",-1)),o("div",w3,[N(o("input",k3,null,512),[[r,{state:e.viewState,set:i=>{e.options.options.link=i},value:e.options?.options?.link,form:"conference",options:{}}]]),t[18]||(t[18]=o("label",{class:"form-check-label",for:"link"},"Keep links",-1)),t[19]||(t[19]=o("small",{class:"form-text text-muted"},"Keep or remove all links from text files.",-1))]),o("div",E3,[N(o("input",C3,null,512),[[r,{state:e.viewState,set:i=>{e.options.options.image=i},value:e.options?.options?.image,form:"conference",options:{}}]]),t[20]||(t[20]=o("label",{class:"form-check-label",for:"image"},"Display images",-1)),t[21]||(t[21]=o("small",{class:"form-text text-muted"},"Images are not anonymized.",-1))]),o("div",_3,[N(o("input",S3,null,512),[[r,{state:e.viewState,set:i=>{e.options.options.pdf=i},value:e.options?.options?.pdf,form:"conference",options:{}}]]),t[22]||(t[22]=o("label",{class:"form-check-label",for:"pdf"},"Display PDFs",-1)),t[23]||(t[23]=o("small",{class:"form-text text-muted"},"PDFs are not anonymized.",-1))]),o("div",N3,[N(o("input",D3,null,512),[[r,{state:e.viewState,set:i=>{e.options.options.notebook=i},value:e.options?.options?.notebook,form:"conference",options:{}}]]),t[24]||(t[24]=o("label",{class:"form-check-label",for:"notebook"},"Display Notebooks",-1))])]),o("section",R3,[t[30]||(t[30]=o("div",{class:"paper-section-eyebrow"},"Features",-1)),o("div",T3,[N(o("input",A3,null,512),[[r,{state:e.viewState,set:i=>{e.options.options.update=i},value:e.options?.options?.update,form:"conference",options:{}}]]),t[26]||(t[26]=o("label",{class:"form-check-label",for:"update"},"Auto-update from GitHub",-1)),t[27]||(t[27]=o("small",{class:"form-text text-muted"},"Pull the latest commit automatically (hourly maximum).",-1))]),o("div",O3,[N(o("input",I3,null,512),[[r,{state:e.viewState,set:i=>{e.options.options.page=i},value:e.options?.options?.page,form:"conference",options:{}}]]),t[28]||(t[28]=o("label",{class:"form-check-label",for:"page"},"GitHub Pages",-1)),t[29]||(t[29]=o("small",{class:"form-text text-muted"},"Enable anonymized GitHub pages.",-1))])]),o("section",P3,[t[32]||(t[32]=o("div",{class:"paper-section-eyebrow"},"Plan",-1)),t[33]||(t[33]=o("p",{class:"paper-section-copy"},"Billed per repository per month, prorated by the day for as long as a repository stays in the conference.",-1)),o("div",V3,[(l(!0),d(X,null,ae(e.plans,(i,a)=>(l(),d("label",{class:A(["paper-plan-card",{selected:e.options?.plan?.planID==i?.id}])},[N(o("input",{type:"radio",name:"planPicker",value:i?.id},null,8,q3),[[r,{state:e.viewState,set:u=>{e.options.plan.planID=u},value:e.options?.plan?.planID,form:"conference",options:{}}]]),o("div",{class:"paper-plan-head",textContent:c(i?.name)},null,8,M3),o("div",$3,[y(c(e.fmt?.number(i?.pricePerRepo))+"\u20AC ",1),t[31]||(t[31]=o("span",{class:"paper-plan-per"},"/ repo / month",-1))]),o("div",{class:"paper-plan-desc",innerHTML:e.sanitize(i?.description)},null,8,L3)],2))),256))])]),e.plan?.pricePerRepo>0?(l(),d("section",U3,[t[41]||(t[41]=o("div",{class:"paper-section-eyebrow"},"Billing",-1)),o("div",F3,[t[34]||(t[34]=o("label",{class:"paper-field-label",for:"billing_name"},"Name",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.conference?.billing_name?.invalid&&(e.conference?.billing_name?.touched||e.conference?.submitted)}]),name:"billing_name",id:"billing_name",required:"",placeholder:"First & last name"},null,2),[[r,{state:e.viewState,set:i=>{e.options.billing.name=i},value:e.options?.billing?.name,form:"conference",options:{}}]])]),o("div",z3,[t[35]||(t[35]=o("label",{class:"paper-field-label",for:"email"},"Email",-1)),N(o("input",{type:"email",class:A(["form-control",{"is-invalid":e.conference?.email?.invalid&&(e.conference?.email?.touched||e.conference?.submitted)}]),name:"email",id:"email",required:"",placeholder:"you@example.org"},null,2),[[r,{state:e.viewState,set:i=>{e.options.billing.email=i},value:e.options?.billing?.email,form:"conference",options:{}}]])]),o("div",H3,[t[36]||(t[36]=o("label",{class:"paper-field-label",for:"inputAddress"},"Address",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.conference?.inputAddress?.invalid&&(e.conference?.inputAddress?.touched||e.conference?.submitted)}]),name:"inputAddress",id:"inputAddress",required:"",placeholder:"1234 Main St"},null,2),[[r,{state:e.viewState,set:i=>{e.options.billing.address=i},value:e.options?.billing?.address,form:"conference",options:{}}]])]),o("div",j3,[N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.conference?.inputAddress2?.invalid&&(e.conference?.inputAddress2?.touched||e.conference?.submitted)}]),name:"inputAddress2",id:"inputAddress2",placeholder:"Apartment, studio, or floor"},null,2),[[r,{state:e.viewState,set:i=>{e.options.billing.address2=i},value:e.options?.billing?.address2,form:"conference",options:{}}]])]),o("div",B3,[o("div",G3,[t[37]||(t[37]=o("label",{class:"paper-field-label",for:"city"},"City",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.conference?.city?.invalid&&(e.conference?.city?.touched||e.conference?.submitted)}]),name:"city",id:"city",required:"",placeholder:"City"},null,2),[[r,{state:e.viewState,set:i=>{e.options.billing.city=i},value:e.options?.billing?.city,form:"conference",options:{}}]])]),o("div",W3,[t[38]||(t[38]=o("label",{class:"paper-field-label",for:"country"},"Country",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.conference?.country?.invalid&&(e.conference?.country?.touched||e.conference?.submitted)}]),name:"country",id:"country",required:"",placeholder:"Country"},null,2),[[r,{state:e.viewState,set:i=>{e.options.billing.country=i},value:e.options?.billing?.country,form:"conference",options:{}}]])]),o("div",K3,[t[39]||(t[39]=o("label",{class:"paper-field-label",for:"zip"},"Zip",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.conference?.zip?.invalid&&(e.conference?.zip?.touched||e.conference?.submitted)}]),name:"zip",id:"zip",required:"",placeholder:"Zip"},null,2),[[r,{state:e.viewState,set:i=>{e.options.billing.zip=i},value:e.options?.billing?.zip,form:"conference",options:{}}]])])]),o("div",Y3,[t[40]||(t[40]=o("label",{class:"paper-field-label",for:"vat"},"VAT number",-1)),N(o("input",{type:"text",class:A(["form-control",{"is-invalid":e.conference?.vat?.invalid&&(e.conference?.vat?.touched||e.conference?.submitted)}]),name:"vat",id:"vat",placeholder:"VAT Number"},null,2),[[r,{state:e.viewState,set:i=>{e.options.billing.vat=i},value:e.options?.billing?.vat,form:"conference",options:{}}]])])])):p("v-if",!0),o("div",J3,[e.error?(l(),d("div",{key:0,class:"alert alert-danger",role:"alert",textContent:c(e.error)},null,8,Q3)):p("v-if",!0),e.message?(l(),d("div",{key:1,class:"alert alert-success",role:"alert",textContent:c(e.message)},null,8,X3)):p("v-if",!0),o("button",{id:"send",disabled:e.saving,type:"submit",class:"btn btn-ink",onClick:t[0]||(t[0]=he(i=>e.submitForm(i,()=>{e.submit(i)}),["prevent"]))},c(e.saving?e.editionMode?"Updating\u2026":"Creating\u2026":e.editionMode?"Update conference":"Create conference"),9,Z3)])])),[[s,e.viewState]])])])}var x3={key:0},eP=["innerHTML"],tP={key:3},oP=["src"],sP=["src"],nP={key:7},rP={controls:"controls"},iP=["src"],aP={key:8},lP={key:9,class:"file-error container d-flex h-100"},dP={class:"paper-ratelimit-card m-auto",style:{"max-width":"520px"}},uP={class:"paper-error-msg"},cP={key:10,class:"file-error container d-flex h-100"},pP=["textContent"],fP={key:11,class:"file-error container d-flex h-100"},hP={key:12,class:"file-error container d-flex h-100"},mP={key:13,class:"file-error container d-flex h-100"},vP={key:14,class:"file-error container d-flex h-100"},gP={class:"paper-empty-title m-auto"},yP=["href"];function Sl(e,t){let n=We("html-doc"),r=We("pdfviewer"),s=We("notebook"),i=ye("code-editor");return l(),d(X,null,[e.type=="text"?N((l(),d("div",x3,null,512)),[[i,{content:e.content,options:e.aceOption}]]):p("v-if",!0),e.type=="html"?(l(),d("div",{key:1,class:"file-content markdown-body",innerHTML:e.sanitize(e.content)},null,8,eP)):p("v-if",!0),e.type=="html-doc"&&!e.showSource&&e.content!=null?(l(),qt(n,{key:2,content:e.content,"base-url":e.fileBaseUrl,"allow-scripts":e.allowScripts},null,8,["content","base-url","allow-scripts"])):p("v-if",!0),(e.type=="code"||e.type=="html-doc"&&e.showSource)&&e.content!=null?N((l(),d("div",tP,null,512)),[[i,{content:e.content,options:e.aceOption}]]):p("v-if",!0),e.type=="image"?(l(),d("img",{key:4,class:"image-content",src:e.safeUrl(e.url)},null,8,oP)):p("v-if",!0),e.type=="media"?(l(),d("iframe",{key:5,class:"h-100 overflow-auto w-100 b-0",src:e.safeUrl(e.url)},null,8,sP)):p("v-if",!0),e.type=="pdf"?(l(),qt(r,{key:6,src:e.safeUrl(e.url)},null,8,["src"])):p("v-if",!0),e.type=="audio"?(l(),d("div",nP,[o("audio",rP,[o("source",{src:e.safeUrl(e.url)},null,8,iP)])])):p("v-if",!0),e.type=="IPython"?(l(),d("div",aP,[Ce(s,{file:e.url,content:e.content},null,8,["file","content"])])):p("v-if",!0),e.type=="rate_limited"?(l(),d("div",lP,[o("div",dP,[t[2]||(t[2]=ce('
Temporarily paused
GitHub API rate limit reached
',1)),o("p",uP,[t[0]||(t[0]=y("This repository will be available in ",-1)),o("strong",null,c(e.rateLimitCountdown),1),t[1]||(t[1]=y(". The page will reload automatically.",-1))])])])):p("v-if",!0),e.type=="error"?(l(),d("div",cP,[o("h1",{class:"paper-empty-title m-auto",textContent:c(e.fmt.translate("ERRORS."+e.content))},null,8,pP)])):p("v-if",!0),e.type=="loading"&&!e.error?(l(),d("div",fP,[...t[3]||(t[3]=[o("h1",{class:"paper-empty-title m-auto"},"Loading\u2026",-1)])])):p("v-if",!0),e.type=="empty"?(l(),d("div",hP,[...t[4]||(t[4]=[o("h1",{class:"paper-empty-title m-auto"},[y("Empty "),o("em",null,"repository"),y(".")],-1)])])):p("v-if",!0),e.content==null&&e.type!="empty"?(l(),d("div",mP,[...t[5]||(t[5]=[o("h1",{class:"paper-empty-title m-auto"},[y("Empty "),o("em",null,"file"),y(".")],-1)])])):p("v-if",!0),e.type=="binary"?(l(),d("div",vP,[o("h1",gP,[t[6]||(t[6]=y("Unsupported ",-1)),t[7]||(t[7]=o("em",null,"binary file",-1)),t[8]||(t[8]=y(". You can ",-1)),o("a",{target:"_blank",href:e.safeUrl(e.url+"&download=true")},"download it",8,yP),t[9]||(t[9]=y(".",-1))])])):p("v-if",!0)],64)}var bP={class:"container page dashboard-page paper-page"},wP={class:"row"},kP={class:"w-100"},EP={class:"w-100","aria-label":"Pull Requests","accept-charset":"UTF-8"},CP={class:"d-flex flex-column flex-md-row align-items-md-center",style:{gap:"8px"}},_P={class:"flex-grow-1"},SP={type:"search",id:"search",class:"form-control","aria-label":"Find a pull request...",placeholder:"Find a pull request...",autocomplete:"off"},NP={class:"d-flex flex-wrap",style:{gap:"6px"}},DP={class:"dropdown"},RP={class:"dropdown-menu","aria-labelledby":"dropdownSort"},TP={class:"form-check dropdown-item"},AP={class:"form-check-input",type:"radio",name:"sort",id:"sortFullName",value:"fullName"},OP={class:"form-check dropdown-item"},IP={class:"form-check-input",type:"radio",name:"sort",id:"sortAnonymizeDate",value:"-anonymizeDate"},PP={class:"form-check dropdown-item"},VP={class:"form-check-input",type:"radio",name:"sort",id:"sortStatus",value:"-status"},qP={class:"form-check dropdown-item"},MP={class:"form-check-input",type:"radio",name:"sort",id:"sortLastView",value:"-lastView"},$P={class:"form-check dropdown-item"},LP={class:"form-check-input",type:"radio",name:"sort",id:"sortPageView",value:"-pageView"},UP={class:"dropdown"},FP={class:"dropdown-menu","aria-labelledby":"dropdownStatus"},zP={class:"form-check dropdown-item"},HP={class:"form-check-input",type:"checkbox",name:"sort",id:"statusReady",value:"ready"},jP={class:"form-check dropdown-item"},BP={class:"form-check-input",type:"checkbox",name:"sort",id:"statusExpired",value:"expired"},GP={class:"form-check dropdown-item"},WP={class:"form-check-input",type:"checkbox",name:"sort",id:"statusRemoved",value:"removed"},KP={class:"d-flex flex-wrap mt-2",style:{gap:"6px"}},YP={class:"filter-chip"},JP=["onClick"],QP={class:"repo-list w-100"},XP={class:"repo-list-item-content"},ZP={class:"repo-list-item-main"},xP={class:"repo-list-item-header"},eV=["textContent","href"],tV=["textContent"],oV=["textContent"],sV={class:"repo-source"},nV=["href"],rV={class:"repo-date"},iV={class:"repo-meta"},aV={key:0,title:"Conference"},lV=["title"],dV=["title"],uV=["title"],cV={key:1},pV={class:"repo-list-item-actions"},fV={class:"dropdown"},hV={class:"dropdown-menu dropdown-menu-right"},mV=["href"],vV=["onClick"],gV=["onClick"],yV=["onClick"],bV=["href"],wV={key:0,class:"repo-list-empty"};function Nl(e,t){let n=ye("field"),r=ye("form");return l(),d("div",bP,[o("div",wP,[o("div",kP,[t[12]||(t[12]=ce('
My work \xA0/\xA0 Pull requests

Anonymized pull requests

Track PR mirrors you\u2019ve created and their reviewer traffic.

',2)),p(" Search + filters row "),N((l(),d("form",EP,[o("div",CP,[o("div",_P,[N(o("input",SP,null,512),[[n,{state:e.viewState,set:s=>{e.search=s},value:e.search,form:null,options:{}}]])]),o("div",NP,[o("div",DP,[t[6]||(t[6]=o("button",{class:"btn btn-sm dropdown-toggle",type:"button",id:"dropdownSort","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}," Sort ",-1)),o("div",RP,[t[5]||(t[5]=o("h6",{class:"dropdown-header"},"Select order",-1)),o("div",TP,[N(o("input",AP,null,512),[[n,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[0]||(t[0]=o("label",{class:"form-check-label",for:"sortFullName"},"Pull Request",-1))]),o("div",OP,[N(o("input",IP,null,512),[[n,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[1]||(t[1]=o("label",{class:"form-check-label",for:"sortAnonymizeDate"},"Anonymize Date",-1))]),o("div",PP,[N(o("input",VP,null,512),[[n,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[2]||(t[2]=o("label",{class:"form-check-label",for:"sortStatus"},"Status",-1))]),o("div",qP,[N(o("input",MP,null,512),[[n,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[3]||(t[3]=o("label",{class:"form-check-label",for:"sortLastView"},"Last View",-1))]),o("div",$P,[N(o("input",LP,null,512),[[n,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[4]||(t[4]=o("label",{class:"form-check-label",for:"sortPageView"},"Page View",-1))])])]),o("div",UP,[t[11]||(t[11]=o("button",{class:"btn btn-sm dropdown-toggle",type:"button",id:"dropdownStatus","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}," Status ",-1)),o("div",FP,[t[10]||(t[10]=o("h6",{class:"dropdown-header"},"Select status",-1)),o("div",zP,[N(o("input",HP,null,512),[[n,{state:e.viewState,set:s=>{e.filters.status.ready=s},value:e.filters?.status?.ready,form:null,options:{}}]]),t[7]||(t[7]=o("label",{class:"form-check-label",for:"statusReady"},"Ready",-1))]),o("div",jP,[N(o("input",BP,null,512),[[n,{state:e.viewState,set:s=>{e.filters.status.expired=s},value:e.filters?.status?.expired,form:null,options:{}}]]),t[8]||(t[8]=o("label",{class:"form-check-label",for:"statusExpired"},"Expired",-1))]),o("div",GP,[N(o("input",WP,null,512),[[n,{state:e.viewState,set:s=>{e.filters.status.removed=s},value:e.filters?.status?.removed,form:null,options:{}}]]),t[9]||(t[9]=o("label",{class:"form-check-label",for:"statusRemoved"},"Removed",-1))])])])])])])),[[r,e.viewState]]),p(" Active filter chips "),N(o("div",KP,[(l(!0),d(X,null,ae(e.filters?.status,(s,i,a)=>N((l(),d("span",YP,[y(c(e.fmt?.title(i))+" ",1),o("button",{type:"button",class:"filter-chip-close","aria-label":"Remove filter",onClick:u=>{e.filters.status[i]=!0}}," \xD7 ",8,JP)],512)),[[Y,!s]])),256))],512),[[Y,e.filters?.status?.ready===!1||e.filters?.status?.expired===!1||e.filters?.status?.removed===!1]])]),p(" Pull request list "),o("ul",QP,[(l(!0),d(X,null,ae(e.filteredPullRequests,(s,i)=>(l(),d("li",{class:A(["repo-list-item",{"repo-inactive":s?.status=="expired"||s?.status=="removed"||s?.status=="error"}])},[o("div",XP,[o("div",ZP,[o("div",xP,[o("a",{class:"repo-name",textContent:c(s?.pullRequestId),href:e.safeUrl("/pr/"+s?.pullRequestId)},null,8,eV),o("span",{class:A(["status-badge",{"status-removed":s?.status=="removed"||s?.status=="expired"||s?.status=="removing"||s?.status=="expiring","status-preparing":s?.status=="preparing"||s?.status=="download","status-ready":s?.status=="ready","status-error":s?.status=="error"}])},[o("span",{textContent:c(e.fmt?.title(s?.status))},null,8,tV),s?.status=="error"?(l(),d("span",{key:0,textContent:c(": "+s?.statusMessage)},null,8,oV)):p("v-if",!0)],2)]),o("div",sV,[o("span",null,[t[13]||(t[13]=o("i",{class:"fab fa-github","aria-hidden":"true"},null,-1)),o("a",{href:e.safeUrl("https://github.com/"+s?.source?.repositoryFullName+"/pull/"+s?.source?.pullRequestId)},c(s?.source?.repositoryFullName)+"#"+c(s?.source?.pullRequestId),9,nV)]),o("span",{class:A(["status-badge",{"status-ready":s?.merged,"status-removed":s?.state=="open","status-error":s?.state=="closed"&&!s?.merged}]),style:{"font-size":"10px"}},c(e.fmt?.title(s?.merged?"merged":s?.state)),3),o("span",rV,"anonymized "+c(e.fmt?.humanTime(s?.anonymizeDate)),1)])]),o("div",iV,[s?.conference?(l(),d("span",aV,[t[14]||(t[14]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-conference"})],-1)),y(" "+c(s?.conference),1)])):p("v-if",!0),o("span",{"data-toggle":"tooltip","data-placement":"bottom",title:"Terms: "+s?.options?.terms?.join(", ")},[t[15]||(t[15]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-shield"})],-1)),y(" "+c(e.fmt?.number(s?.options?.terms?.length)),1)],8,lV),o("span",{"data-toggle":"tooltip","data-placement":"bottom",title:"Views: "+e.fmt?.number(s?.pageView)},[t[16]||(t[16]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-eye"})],-1)),y(" "+c(e.fmt?.number(s?.pageView)),1)],8,dV),o("span",{"data-toggle":"tooltip","data-placement":"bottom",title:"Last view: "+e.fmt?.date(s?.lastView)},[t[17]||(t[17]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-calendar"})],-1)),y(" "+c(e.fmt?.humanTime(s?.lastView)),1)],8,uV),s?.options?.expirationMode!="never"&&s?.status=="ready"?(l(),d("span",cV,[t[18]||(t[18]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-clock"})],-1)),y(" Expire: "+c(e.fmt?.humanTime(s?.options?.expirationDate)),1)])):p("v-if",!0)])]),o("div",pV,[o("div",fV,[t[24]||(t[24]=o("button",{class:"btn btn-sm dropdown-toggle",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}," Actions ",-1)),o("div",hV,[o("a",{class:"dropdown-item",href:e.safeUrl("/pull-request-anonymize/"+s?.pullRequestId)},[...t[19]||(t[19]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-edit"})],-1),y(" Edit ",-1)])],8,mV),N(o("a",{class:"dropdown-item",href:"#",onClick:he(a=>e.updatePullRequest(s),["prevent"])},[...t[20]||(t[20]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-refresh"})],-1),y(" Force update ",-1)])],8,vV),[[Y,s?.status=="ready"||s?.status=="error"]]),N(o("a",{class:"dropdown-item",href:"#",onClick:he(a=>e.updatePullRequest(s),["prevent"])},[...t[21]||(t[21]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-check-circle"})],-1),y(" Enable ",-1)])],8,gV),[[Y,s?.status=="removed"]]),N(o("a",{class:"dropdown-item",href:"#",onClick:he(a=>e.removePullRequest(s),["prevent"])},[...t[22]||(t[22]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-trash"})],-1),y(" Remove ",-1)])],8,yV),[[Y,s?.status=="ready"]]),o("a",{class:"dropdown-item",href:e.safeUrl("/pr/"+s?.pullRequestId+"/")},[...t[23]||(t[23]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-eye"})],-1),y(" View PR ",-1)])],8,bV)])])])],2))),256)),e.filteredPullRequests?.length==0?(l(),d("li",wV,[...t[25]||(t[25]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-inbox"})],-1),o("span",null,"No pull requests to display.",-1)])])):p("v-if",!0)])])])}var kV={class:"container paper-page paper-settings"},EV={class:"paper-settings-body"},CV={class:"paper-settings-toc"},_V={class:"paper-settings-main"},SV={id:"settings-quota",class:"paper-settings-section"},NV={key:1,class:"quota-row","aria-hidden":"true"},DV={class:"quota-item"},RV={id:"settings-terms",class:"paper-settings-section"},TV={class:"form-group"},AV={class:"form-control",id:"terms",name:"terms",rows:"4",placeholder:`Jane Smith MIT CSAIL -jane.smith@example.org`},RV={id:"termsHelp",class:"form-text text-muted"},TV={class:"invalid-feedback"},AV={id:"settings-display",class:"paper-settings-section"},OV={class:"form-group paper-check-list"},IV={class:"form-check"},PV={class:"form-check-input",type:"checkbox",id:"link",name:"link"},VV={class:"form-check"},qV={class:"form-check-input",type:"checkbox",id:"image",name:"image"},MV={class:"form-check"},$V={class:"form-check-input",type:"checkbox",id:"pdf",name:"pdf"},LV={class:"form-check"},UV={class:"form-check-input",type:"checkbox",id:"notebook",name:"notebook"},FV={id:"settings-features",class:"paper-settings-section"},zV={class:"form-group paper-check-list"},HV={class:"form-check"},BV={class:"form-check-input",type:"checkbox",id:"page",name:"page"},jV={class:"form-check"},GV={class:"form-check-input",type:"checkbox",id:"loc",name:"loc"},WV={class:"form-check"},KV={class:"form-check-input",type:"checkbox",id:"update",name:"update"},YV={class:"form-group"},JV={class:"form-control",id:"mode",name:"mode"},QV={class:"form-text text-muted"},XV={id:"settings-expiration",class:"paper-settings-section"},ZV={class:"form-group"},xV={class:"form-control",id:"expiration",name:"expiration"},e5={key:0,class:"draft-status",role:"status"},t5={key:1,class:"draft-status"},o5={class:"paper-settings-footer"},s5={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},n5=["textContent"],r5={class:"paper-settings-actions"},i5=["disabled"],a5={key:0,class:"ui-icon mr-1","aria-hidden":"true"},l5={id:"settings-account",class:"paper-settings-section"},d5={class:"paper-account-card"},u5=["src"],c5={class:"paper-account-identity"},p5={class:"paper-account-name"},f5={class:"paper-danger-zone"},m5={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},h5=["textContent"],v5=["disabled"];function Dl(e,t){let n=We("quota-usage"),r=ye("paper-scrollspy"),s=ye("field"),i=ye("form");return l(),d("div",yV,[t[52]||(t[52]=le('
My work \xA0/\xA0 Settings

Your settings

Defaults applied to every new anonymization, your quotas, and your account.

',3)),o("div",bV,[N((l(),d("aside",wV,[...t[4]||(t[4]=[le('
On this page
',2)])])),[[r]]),o("div",kV,[p(" Account usage shares the dashboard component. "),o("section",EV,[t[6]||(t[6]=o("div",{class:"paper-section-eyebrow"},"Quota",-1)),t[7]||(t[7]=o("p",{class:"paper-section-copy"},"What you are using across all your anonymizations. Conferences can lift these limits during a review window.",-1)),e.quota?(l(),qt(n,{key:0,quota:e.quota,fmt:e.fmt},null,8,["quota","fmt"])):p("v-if",!0),e.quota?p("v-if",!0):(l(),d("div",CV,[(l(),d(Q,null,se([1,2,3],(a,u)=>o("div",_V,[...t[5]||(t[5]=[o("div",{class:"quota-header"},[o("span",{class:"skeleton skeleton-line",style:{width:"40%"}}),o("span",{class:"skeleton skeleton-line",style:{width:"25%"}})],-1),o("div",{class:"quota-track"},null,-1)])])),64))]))]),N((l(),d("form",{class:"form needs-validation",name:"defaultsForm",novalidate:"",onSubmit:t[2]||(t[2]=ce(a=>e.submitForm(a,()=>{e.saveDefault(a)}),["prevent"]))},[o("section",SV,[t[13]||(t[13]=o("div",{class:"paper-section-eyebrow"},"Terms to redact",-1)),t[14]||(t[14]=o("p",{class:"paper-section-copy"},"Pre-filled in every new anonymization. You can still edit the list per anonymization.",-1)),o("div",NV,[t[12]||(t[12]=o("label",{class:"paper-field-label",for:"terms"},"Default terms",-1)),N(o("textarea",DV,null,512),[[s,{state:e.viewState,set:a=>{e.terms=a},value:e.terms,form:"defaultsForm",options:{debounce:250}}]]),o("small",RV,[t[8]||(t[8]=g(" One term per line (regex allowed). Each match is replaced by ",-1)),o("code",null,c(e.site_options?.ANONYMIZATION_MASK||"XXX")+"-[N]",1),t[9]||(t[9]=g(", or use ",-1)),t[10]||(t[10]=o("code",null,"term=>replacement",-1)),t[11]||(t[11]=g(" to pick your own. ",-1))]),N(o("div",TV," Terms are in an invalid format ",512),[[W,e.defaultsForm?.terms?.errors?.format]])])]),o("section",AV,[t[23]||(t[23]=o("div",{class:"paper-section-eyebrow"},"Display",-1)),t[24]||(t[24]=o("p",{class:"paper-section-copy"},"What reviewers can see inside an anonymized repository.",-1)),o("div",OV,[o("div",IV,[N(o("input",PV,null,512),[[s,{state:e.viewState,set:a=>{e.options.link=a},value:e.options?.link,form:"defaultsForm",options:{}}]]),t[15]||(t[15]=o("label",{class:"form-check-label",for:"link"},"Keep links",-1)),t[16]||(t[16]=o("small",{class:"form-text text-muted"},"Unchecked, every link in text files is removed.",-1))]),o("div",VV,[N(o("input",qV,null,512),[[s,{state:e.viewState,set:a=>{e.options.image=a},value:e.options?.image,form:"defaultsForm",options:{}}]]),t[17]||(t[17]=o("label",{class:"form-check-label",for:"image"},"Display images",-1)),t[18]||(t[18]=o("small",{class:"form-text text-muted"},"Images are shown as is. They are not anonymized.",-1))]),o("div",MV,[N(o("input",$V,null,512),[[s,{state:e.viewState,set:a=>{e.options.pdf=a},value:e.options?.pdf,form:"defaultsForm",options:{}}]]),t[19]||(t[19]=o("label",{class:"form-check-label",for:"pdf"},"Display PDFs",-1)),t[20]||(t[20]=o("small",{class:"form-text text-muted"},"PDFs are shown as is. They are not anonymized.",-1))]),o("div",LV,[N(o("input",UV,null,512),[[s,{state:e.viewState,set:a=>{e.options.notebook=a},value:e.options?.notebook,form:"defaultsForm",options:{}}]]),t[21]||(t[21]=o("label",{class:"form-check-label",for:"notebook"},"Display notebooks",-1)),t[22]||(t[22]=o("small",{class:"form-text text-muted"},"Render Jupyter notebooks instead of raw JSON.",-1))])])]),o("section",FV,[t[33]||(t[33]=o("div",{class:"paper-section-eyebrow"},"Features",-1)),o("div",zV,[o("div",HV,[N(o("input",BV,null,512),[[s,{state:e.viewState,set:a=>{e.options.page=a},value:e.options?.page,form:"defaultsForm",options:{}}]]),t[25]||(t[25]=o("label",{class:"form-check-label",for:"page"},"GitHub Pages",-1)),t[26]||(t[26]=o("small",{class:"form-text text-muted"},"Serve an anonymized copy of the repository's GitHub Pages site. Only pages built from the anonymized branch are supported.",-1))]),o("div",jV,[N(o("input",GV,null,512),[[s,{state:e.viewState,set:a=>{e.options.loc=a},value:e.options?.loc,form:"defaultsForm",options:{}}]]),t[27]||(t[27]=o("label",{class:"form-check-label",for:"loc"},"Lines of code",-1)),t[28]||(t[28]=o("small",{class:"form-text text-muted"},"Show the line count of the repository in the explorer.",-1))]),o("div",WV,[N(o("input",KV,null,512),[[s,{state:e.viewState,set:a=>{e.options.update=a},value:e.options?.update,form:"defaultsForm",options:{}}]]),t[29]||(t[29]=o("label",{class:"form-check-label",for:"update"},"Auto-update from GitHub",-1)),t[30]||(t[30]=o("small",{class:"form-text text-muted"},"Follow the branch and pull the latest commit automatically, at most once an hour.",-1))])]),o("div",YV,[t[32]||(t[32]=o("label",{class:"paper-field-label",for:"mode"},"Fetch mode",-1)),N((l(),d("select",JV,[...t[31]||(t[31]=[o("option",{value:"GitHubStream",selected:""},"Stream from GitHub on demand",-1),o("option",{value:"GitHubDownload"},"Download to Anonymous GitHub",-1)])])),[[s,{state:e.viewState,set:a=>{e.options.mode=a},value:e.options?.mode,form:"defaultsForm",options:{}}]]),o("small",QV," Download is faster for reviewers and enables every feature. Streaming is the only option above "+c(e.fmt?.humanFileSize(e.site_options?.MAX_REPO_SIZE*1024))+". ",1)])]),o("section",XV,[t[37]||(t[37]=o("div",{class:"paper-section-eyebrow"},"Expiration",-1)),o("div",ZV,[t[35]||(t[35]=o("label",{class:"paper-field-label",for:"expiration"},"When an anonymization expires",-1)),N((l(),d("select",xV,[...t[34]||(t[34]=[o("option",{value:"redirect"},"Redirect visitors to the GitHub repository",-1),o("option",{value:"remove",selected:""},"Remove the anonymized repository",-1)])])),[[s,{state:e.viewState,set:a=>{e.options.expirationMode=a},value:e.options?.expirationMode,form:"defaultsForm",options:{}}]]),t[36]||(t[36]=o("small",{class:"form-text text-muted"}," The expiration date itself is chosen per anonymization. Redirecting reveals the source repository, so pick it only once the review is over. ",-1))])]),e.draftRestored?(l(),d("div",e5,[t[38]||(t[38]=g("Your unsaved draft was restored. ",-1)),o("button",{type:"button",class:"draft-discard",onClick:t[0]||(t[0]=a=>e.discardDraft())},"Discard draft")])):e.unsavedChanges?(l(),d("div",t5,[g(c(e.draftSaved?"Draft saved in this tab for 30 minutes.":"Unsaved changes. Keep this tab open until you save.")+" ",1),o("button",{type:"button",class:"draft-discard",onClick:t[1]||(t[1]=a=>e.discardDraft())},c(e.isUpdate?"Restore saved settings":"Discard changes"),1)])):p("v-if",!0),o("div",o5,[e.error?(l(),d("div",s5,[t[39]||(t[39]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-info"})],-1)),t[40]||(t[40]=g()),o("span",{textContent:c(e.error)},null,8,n5)])):p("v-if",!0),o("div",r5,[o("button",{id:"save",type:"submit",class:"btn btn-ink",disabled:e.saving},[e.message?(l(),d("svg",a5,[...t[41]||(t[41]=[o("use",{href:"#ui-icon-check"},null,-1)])])):p("v-if",!0),g(c(e.saving?"Saving\u2026":e.message?"Saved":"Save defaults"),1)],8,i5),t[42]||(t[42]=o("span",{class:"paper-settings-hint"},"Applies to new anonymizations only. Existing ones keep their settings.",-1))])])],32)),[[i,e.viewState]]),o("section",l5,[t[50]||(t[50]=o("div",{class:"paper-section-eyebrow"},"Account",-1)),o("div",d5,[e.user?.photo?(l(),d("img",{key:0,width:"40",height:"40",class:"rounded-circle",alt:"",src:e.safeUrl(e.user?.photo)},null,8,u5)):p("v-if",!0),o("div",c5,[o("div",p5,"@"+c(e.user?.username),1),t[43]||(t[43]=o("div",{class:"paper-account-meta"},"Signed in with GitHub. Anonymous GitHub only reads your repositories.",-1))]),t[44]||(t[44]=o("a",{class:"btn btn-outline-ink",href:"/api/user/logout",target:"_self"},"Sign out",-1))]),t[51]||(t[51]=o("a",{class:"paper-settings-connection-link",href:"/connections"},[o("i",{class:"fab fa-github","aria-hidden":"true"}),o("span",null,[g("GitHub connections"),o("small",null,"Manage repository access and legacy OAuth.")]),o("span",{"aria-hidden":"true"},"\u2192")],-1)),o("div",f5,[t[48]||(t[48]=o("div",{class:"paper-danger-head"},"Delete account",-1)),t[49]||(t[49]=o("p",{class:"paper-danger-copy"}," Removes all your anonymized repositories, gists, and pull requests, revokes the application's access to your GitHub account, and erases your personal data (username, email, access tokens). This cannot be undone. ",-1)),e.deleteError?(l(),d("div",m5,[t[45]||(t[45]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-info"})],-1)),t[46]||(t[46]=g()),o("span",{textContent:c(e.deleteError)},null,8,h5)])):p("v-if",!0),o("button",{type:"button",class:"btn btn-outline-danger",onClick:t[3]||(t[3]=a=>e.deleteAccount()),disabled:e.deletingAccount},[t[47]||(t[47]=o("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-trash"})],-1)),g(c(e.deletingAccount?"Deleting\u2026":"Delete my account"),1)],8,v5)])])])])])}var g5={class:"pr-page"},y5={class:"container paper-page pr-page-inner"},b5={class:"pr-header"},w5={class:"pr-title-row"},k5={class:"paper-page-title pr-title"},E5=["textContent"],C5={key:1,class:"text-muted"},_5=["href"],S5={class:"pr-header-meta"},N5={key:0,class:"pr-meta-item"},D5=["textContent"],R5={key:1,class:"pr-meta-item"},T5=["textContent"],A5={key:2,class:"pr-meta-item"},O5=["textContent"],I5={key:0,class:"pr-body-card"},P5={key:1,class:"paper-tabs",role:"tablist"},V5=["aria-selected","tabindex"],q5=["aria-selected","tabindex"],M5=["textContent"],$5={class:"paper-tab-content"},L5={key:0,role:"tabpanel",id:"pr-diff-panel","aria-labelledby":"pr-diff-tab"},U5=["innerHTML"],F5={key:1,role:"tabpanel",id:"pr-comments-panel","aria-labelledby":"pr-comments-tab"},z5={class:"pr-comments"},H5={class:"pr-comment"},B5={class:"pr-comment-head"},j5={key:0,class:"pr-comment-author"},G5=["textContent"],W5=["textContent"],K5={key:0,class:"pr-comment-body"},Y5={key:0,class:"paper-table-empty"};function Rl(e,t){let n=We("markdown");return l(),d("div",g5,[o("div",y5,[t[17]||(t[17]=o("div",{class:"paper-crumbs"},[o("a",{href:"/dashboard"},"Reviewer"),g(" \xA0/\xA0 "),o("span",{class:"here"},"Pull request")],-1)),o("header",b5,[o("div",w5,[o("h1",k5,[e.details?.title?(l(),d("span",{key:0,textContent:c(e.details?.title)},null,8,E5)):p("v-if",!0),e.details?.title?p("v-if",!0):(l(),d("span",C5,"Untitled pull request"))]),e.options?.isAdmin||e.options?.isOwner?(l(),d("a",{key:0,class:"btn btn-sm","aria-label":"Edit",href:e.safeUrl("/pull-request-anonymize/"+e.pullRequestId)},[...t[4]||(t[4]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-edit"})],-1),o("span",{class:"d-none d-md-inline"}," Edit",-1)])],8,_5)):p("v-if",!0)]),o("div",S5,[o("span",{class:A(["paper-pill",{good:e.details?.merged,warn:e.details?.state=="open",bad:e.details?.state=="closed"&&!e.details?.merged}])},[o("span",{class:A(["status-dot",{"status-ready":e.details?.merged,"status-error":e.details?.state=="closed"&&!e.details?.merged}])},null,2),g(" "+c(e.details?.merged?"Merged":e.fmt.title(e.details?.state)),1)],2),e.details?.baseRepositoryFullName?(l(),d("span",N5,[t[5]||(t[5]=o("i",{class:"fab fa-github"},null,-1)),t[6]||(t[6]=g()),o("span",{textContent:c(e.details?.baseRepositoryFullName)},null,8,D5)])):p("v-if",!0),e.details?.updatedDate?(l(),d("span",R5,[t[7]||(t[7]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-clock"})],-1)),t[8]||(t[8]=g()),o("span",{textContent:c(e.fmt?.date(e.details?.updatedDate))},null,8,T5)])):p("v-if",!0),e.details?.anonymizeDate?(l(),d("span",A5,[t[9]||(t[9]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-shield"})],-1)),t[10]||(t[10]=g(" Anonymized ",-1)),o("span",{textContent:c(e.fmt?.date(e.details?.anonymizeDate))},null,8,O5)])):p("v-if",!0)])]),e.details?.body?(l(),d("section",I5,[t[11]||(t[11]=o("div",{class:"paper-section-eyebrow"},"Description",-1)),_e(n,{content:e.details?.body},null,8,["content"])])):p("v-if",!0),e.details?.diff||e.details?.comments?(l(),d("nav",P5,[e.details?.diff?(l(),d("button",{key:0,class:A(["paper-tab",{active:e.tabState?.active=="diff"}]),type:"button",role:"tab",id:"pr-diff-tab","aria-selected":e.tabState?.active==="diff","aria-controls":"pr-diff-panel",tabindex:e.tabState?.active==="diff"?0:-1,onKeydown:t[0]||(t[0]=r=>e.previewTabKeydown(r)),onClick:t[1]||(t[1]=r=>e.tabState.active="diff")},[...t[12]||(t[12]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-code"})],-1),g(" Diff ",-1)])],42,V5)):p("v-if",!0),e.details?.comments?(l(),d("button",{key:1,class:A(["paper-tab",{active:e.tabState?.active=="comments"}]),type:"button",role:"tab",id:"pr-comments-tab","aria-selected":e.tabState?.active==="comments","aria-controls":"pr-comments-panel",tabindex:e.tabState?.active==="comments"?0:-1,onKeydown:t[2]||(t[2]=r=>e.previewTabKeydown(r)),onClick:t[3]||(t[3]=r=>e.tabState.active="comments")},[t[13]||(t[13]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-comment"})],-1)),o("span",{textContent:c(e.fmt.plural(e.details?.comments?.length,{0:"No comments",one:"1 comment",other:"{} comments"}))},null,8,M5)],42,q5)):p("v-if",!0)])):p("v-if",!0),o("div",$5,[e.details?.diff&&e.tabState?.active=="diff"?(l(),d("div",L5,[o("div",{class:"pr-diff",innerHTML:e.sanitize(e.fmt?.diff(e.details?.diff))},null,8,U5)])):p("v-if",!0),e.details?.comments&&e.tabState?.active=="comments"?(l(),d("div",F5,[o("ul",z5,[(l(!0),d(Q,null,se(e.details?.comments,(r,s)=>(l(),d("li",H5,[o("div",B5,[r?.author?(l(),d("span",j5,[t[14]||(t[14]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-user"})],-1)),t[15]||(t[15]=g(" @",-1)),o("span",{textContent:c(r?.author)},null,8,G5)])):p("v-if",!0),r?.updatedDate?(l(),d("span",{key:1,class:"pr-comment-date",textContent:c(e.fmt?.date(r?.updatedDate))},null,8,W5)):p("v-if",!0)]),r?.body?(l(),d("div",K5,[_e(n,{content:r?.body},null,8,["content"])])):p("v-if",!0)]))),256)),e.details?.comments?.length?p("v-if",!0):(l(),d("li",Y5,[...t[16]||(t[16]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-comment"})],-1),o("span",null,"No comments on this pull request.",-1)])]))])])):p("v-if",!0)])])])}var J5={class:"container paper-page status-page"},Q5={class:"d-flex align-items-end justify-content-between flex-wrap",style:{gap:"12px"}},X5={class:"paper-page-title"},Z5=["textContent"],x5={key:1},eq={class:"paper-settings-section"},tq={key:0,class:"paper-ratelimit-card",role:"status"},oq={class:"paper-error-msg"},sq=["aria-valuenow"],nq={class:"paper-progress-label"},rq=["textContent"],iq={key:0},aq=["textContent"],lq={class:"paper-progress-pct"},dq={key:2,class:"paper-error-card",role:"alert"},uq={key:0,class:"paper-error-msg"},cq={key:1,class:"paper-error-msg"},pq={class:"paper-error-actions"},fq=["href"],mq={class:"paper-detail-grid"},hq={class:"detail-value"},vq=["href"],gq={key:0,class:"detail-label"},yq={key:1,class:"detail-value"},bq=["href"],wq={key:3,class:"anonymize-submit-bar"},kq=["href"],Eq=["href"];function Tl(e,t){return l(),d("div",J5,[t[15]||(t[15]=o("div",{class:"paper-crumbs"},[g("Anonymization \xA0/\xA0 "),o("span",{class:"here"},"Status")],-1)),o("div",Q5,[o("div",null,[o("h1",X5,[t[0]||(t[0]=g("Status of ",-1)),o("em",null,c(e.repoId),1)]),t[1]||(t[1]=o("p",{class:"paper-page-lede"},"Track progress as your anonymization is prepared.",-1))]),o("span",{class:A(["status-pill",{"status-pill-ready":e.repo?.status=="ready","status-pill-error":e.repo?.status=="error","status-pill-removed":e.repo?.status=="removed"||e.repo?.status=="expired","status-pill-ratelimit":e.rateLimitResetAt}])},[o("span",{class:A(["status-dot",{"status-ready":e.repo?.status=="ready","status-error":e.repo?.status=="error","status-removed":e.repo?.status=="removed"||e.repo?.status=="expired","status-ratelimit":e.rateLimitResetAt}])},null,2),e.rateLimitResetAt?p("v-if",!0):(l(),d("span",{key:0,textContent:c(e.fmt?.title(e.repo?.status))},null,8,Z5)),e.rateLimitResetAt?(l(),d("span",x5,"Rate limited")):p("v-if",!0)],2)]),o("section",eq,[t[13]||(t[13]=o("div",{class:"paper-section-eyebrow"},"Progress",-1)),t[14]||(t[14]=o("p",{class:"paper-section-copy"},[g(" The repository will take a few minutes to get ready, depending on its size. Visit the "),o("a",{href:"/faq"},"FAQ"),g(" for more information. ")],-1)),e.rateLimitResetAt?(l(),d("div",tq,[t[4]||(t[4]=le('
Temporarily paused
GitHub API rate limit reached
',1)),o("p",oq,[t[2]||(t[2]=g("Anonymization will resume automatically in ",-1)),o("strong",null,c(e.rateLimitCountdown),1),t[3]||(t[3]=g(". No action needed \u2014 the job is queued and will continue where it left off.",-1))])])):p("v-if",!0),e.repo?.status!="error"&&!e.rateLimitResetAt?(l(),d("div",{key:1,class:A(["paper-progress",{"paper-progress-ready":e.repo?.status=="ready"}]),role:"progressbar","aria-valuemin":"0","aria-valuemax":"100","aria-valuenow":e.progress},[o("div",{class:"paper-progress-bar",style:Me("width: "+e.progress+"%;")},null,4),o("div",nq,[o("span",{textContent:c(e.fmt?.title(e.repo?.status))},null,8,rq),e.repo?.statusMessage?(l(),d("span",iq,[t[5]||(t[5]=g("\xA0\xB7\xA0",-1)),o("span",{textContent:c(e.repo?.statusMessage)},null,8,aq)])):p("v-if",!0),o("span",lq,c(e.progress||0)+"%",1)])],10,sq)):p("v-if",!0),e.repo?.status=="error"&&!e.rateLimitResetAt?(l(),d("div",dq,[t[8]||(t[8]=le('
Anonymization failed
Something went wrong while preparing this repository.
',1)),e.repo?.statusMessage?(l(),d("p",uq,c(e.fmt?.translate("ERRORS."+e.repo?.statusMessage)),1)):p("v-if",!0),e.repo?.statusMessage?p("v-if",!0):(l(),d("p",cq,"No additional details were reported. The most common causes are private repositories, missing branches, and rate limits.")),t[9]||(t[9]=o("ul",{class:"paper-error-hints"},[o("li",null,"Make sure the source URL points to a repository or pull request you can access."),o("li",null,"Check that the chosen branch and commit still exist on GitHub."),o("li",null,"If you just signed in, the access token may need a moment to propagate \u2014 try again.")],-1)),o("div",pq,[o("a",{class:"btn btn-ink",href:e.safeUrl("/anonymize/"+e.repoId)},[...t[6]||(t[6]=[o("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-edit"})],-1),g(" Edit anonymization",-1)])],8,fq),t[7]||(t[7]=le(' Read the FAQ Report a bug in Anonymous GitHub',2))])])):p("v-if",!0),o("div",mq,[t[10]||(t[10]=o("div",{class:"detail-label"},"Repository",-1)),o("div",hq,[o("a",{target:"_self",href:e.safeUrl("/r/"+e.repoId+"/")},"/r/"+c(e.repoId)+"/",9,vq)]),e.repo?.options?.page?(l(),d("div",gq,"GitHub Page")):p("v-if",!0),e.repo?.options?.page?(l(),d("div",yq,[o("a",{target:"_self",href:e.safeUrl("/w/"+e.repoId+"/")},"/w/"+c(e.repoId)+"/",9,bq)])):p("v-if",!0)]),e.repo?.status=="ready"?(l(),d("div",wq,[o("a",{class:"btn btn-ink",target:"_self",href:e.safeUrl("/r/"+e.repoId+"/")},[...t[11]||(t[11]=[o("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[o("use",{href:"#project-icon-eye"})],-1),g(" Go to anonymized repository ",-1)])],8,kq),e.repo?.options?.page?(l(),d("a",{key:0,class:"btn",target:"_self",href:e.safeUrl("/w/"+e.repoId+"/")},[...t[12]||(t[12]=[o("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-globe"})],-1),g(" Go to anonymized GitHub page ",-1)])],8,Eq)):p("v-if",!0)])):p("v-if",!0)]),t[16]||(t[16]=le('
Support Anonymous GitHub

A small team keeps this running. If it helps you, please consider contributing back \u2014 in code, ideas, or coffee.

',1))])}var tn={"partials/connections.htm":ol,"partials/signin.htm":sl,"partials/404.htm":nl,"partials/admin/conferences.htm":rl,"partials/admin/errors.htm":il,"partials/admin/overview.htm":al,"partials/admin/queues.htm":ll,"partials/admin/repositories.htm":dl,"partials/admin/user.htm":ul,"partials/admin/users.htm":cl,"partials/anonymize.htm":pl,"partials/anonymizePullRequest.htm":fl,"partials/claim.htm":ml,"partials/conference.htm":hl,"partials/conferences.htm":vl,"partials/dashboard.htm":gl,"partials/explorer.htm":yl,"partials/faq.htm":bl,"partials/gist.htm":wl,"partials/header.htm":kl,"partials/home.htm":El,"partials/loading.htm":Cl,"partials/newConference.htm":_l,"partials/pageView.htm":Sl,"partials/pr-dashboard.htm":Nl,"partials/profile.htm":Dl,"partials/pullRequest.htm":Rl,"partials/status.htm":Tl};var Cq={class:"ui-icon-definitions","aria-hidden":"true",focusable:"false"};function Al(e,t){return l(),d("svg",Cq,[...t[0]||(t[0]=[le('',1)])])}function Ol(e,t){e==="partials/explorer.htm"&&(t.sidebarCollapsed=window.matchMedia?.("(max-width: 767px)").matches||!1),e==="partials/anonymize.htm"&&(t.prTabState={active:t.options.diff?"diff":"comments"},t.watchGroup(["options.diff","options.comments"],()=>{t.options[t.prTabState.active]||(t.prTabState.active=t.options.diff?"diff":t.options.comments?"comments":null)})),e==="partials/gist.htm"&&(t.tabState={active:t.details?.files?"files":"comments"}),["partials/conferences.htm","partials/conference.htm"].includes(e)&&(t.statusLabels={ready:"Ready",expired:"Expired",removed:"Removed"});let r={"partials/dashboard.htm":["filteredItems",()=>t.items,"itemFilter"],"partials/conferences.htm":["filteredConferences",()=>t.conferences,"conferenceFilter"],"partials/conference.htm":["filteredRepositories",()=>t.conference?.repositories,"repoFiler"],"partials/admin/repositories.htm":["filteredRepositories",()=>t.repositories,"repoFiler"],"partials/admin/user.htm":["filteredRepositories",()=>t.repositories,"repoFiler"],"partials/admin/users.htm":["filteredUsers",()=>t.users,"userFiler"],"partials/admin/conferences.htm":["filteredConferences",()=>t.conferences]}[e];if(r){let s=ot(()=>t.fmt.orderBy(t.fmt.filter(r[1](),t[r[2]]),t.orderBy));Object.defineProperty(t,r[0],{configurable:!0,get:()=>s.value})}}function Il(e=(...t)=>fetch(...t)){async function t(r,s,i,a={}){let u=new URL(s,window.location.href);for(let[v,w]of Object.entries(a.params||{}))if(w!=null)for(let f of Array.isArray(w)?w:[w])u.searchParams.append(v,typeof f=="object"?JSON.stringify(f):f);let m=new AbortController,h;a.timeout?.then?a.timeout.then(()=>m.abort()):a.timeout&&(h=setTimeout(()=>m.abort(),a.timeout));try{let v={Accept:"application/json, text/plain, */*",...a.headers},w=document.cookie.match(/(?:^|;\s*)XSRF-TOKEN=([^;]*)/);w&&u.origin===window.location.origin&&(v["X-XSRF-TOKEN"]=decodeURIComponent(w[1]));let f;i!==void 0&&(i instanceof FormData?f=i:(v["Content-Type"]||(v["Content-Type"]="application/json;charset=utf-8"),f=JSON.stringify(i)));let b=await e(u.href,{method:r,headers:v,body:f,credentials:"same-origin",signal:m.signal}),C=await b.text(),k=C;if(a.transformResponse)k=a.transformResponse(C);else if(C&&(/json/i.test(b.headers.get("content-type")||"")||/^[\[{]/.test(C.trim())))try{k=JSON.parse(C)}catch{}let R={data:k,status:b.status,headers:D=>b.headers.get(D)};if(!b.ok)throw R;return R}catch(v){throw v.name==="AbortError"?{status:-1,data:null}:v}finally{clearTimeout(h)}}let n={};for(let r of["get","delete","head"])n[r]=(s,i)=>t(r.toUpperCase(),s,void 0,i);for(let r of["post","put","patch"])n[r]=(s,i,a)=>t(r.toUpperCase(),s,i,a);return n}var Pl={resolve:e=>Promise.resolve(e),reject:e=>Promise.reject(e),all:e=>Promise.all(e),defer(){let e,t;return{promise:new Promise((r,s)=>{e=r,t=s}),resolve:e,reject:t}}};var Vl=function(e){function t(n){return n=n||{used:0,total:0},n.unlimited=!n.total,n.percent=n.unlimited?0:Math.min(100,n.used*100/n.total),n.level=n.unlimited?"unlimited":n.percent>=95?"danger":n.percent>=80?"warn":"ok",n}return{decorate:t,load:function(){return e.get("/api/user/quota").then(n=>{let r=n.data||{};return r.storage=t(r.storage),r.file=t(r.file),r.repository=t(r.repository),r})}}};var sr={};ed(sr,{bigNum:()=>Sq,date:()=>Mq,diff:()=>Aq,filter:()=>Vq,humanFileSize:()=>_q,humanTime:()=>Nq,limitTo:()=>Pq,number:()=>Oq,orderBy:()=>qq,plural:()=>$q,statusLabel:()=>Rq,statusMsg:()=>Tq,title:()=>Dq,uppercase:()=>Iq});var _q=e=>window.humanFileSize(e),Sq=(function(){return function(t){let n=Number(t)||0,r=Math.abs(n);return r<1e3?String(n):r<1e4?(n/1e3).toFixed(1).replace(/\.0$/,"")+"k":r<1e6?Math.round(n/1e3)+"k":r<1e7?(n/1e6).toFixed(1).replace(/\.0$/,"")+"M":Math.round(n/1e6)+"M"}})(),Nq=(function(){return function(t){if(!t)return"never";t instanceof Date&&(t=Math.round((Date.now()-t)/1e3)),(typeof t=="string"||typeof t=="number")&&(t=Math.round((Date.now()-new Date(t))/1e3));var n=t<0?"from now":"ago";if(Math.abs(t)>7200*24){let m=new Date;return m.setSeconds(m.getSeconds()-t),"on "+m.toLocaleDateString(void 0,{day:"numeric",month:"short",year:"numeric"})}t=Math.abs(t);for(var r=[t/60/60/24/365,t/60/60/24/30,t/60/60/24/7,t/60/60/24,t/60/60,t/60,t],s=["year","month","week","day","hour","minute","second"],i=0;i1&&(u+="s"),a>=1)return a+" "+u+" "+n}return"0 seconds "+n}})(),Dq=(function(){return function(e){if(!e)return e;e=e.toLowerCase();var t=e.split(" "),n=t.map(function(r){return r.charAt(0).toUpperCase()+r.substring(1,r.length)});return n.join(" ")}})(),Rq=(function(){var e={ready:"Ready",error:"Error",expired:"Expired",expiring:"Expiring",removed:"Removed",removing:"Removing",queue:"Queued",download:"Downloading",downloaded:"Downloaded",preparing:"Preparing",anonymizing:"Anonymizing"};return function(t){if(!t)return"";if(e[t])return e[t];var n=String(t).replace(/[_-]+/g," ").toLowerCase();return n.charAt(0).toUpperCase()+n.slice(1)}})(),Tq=(function(){var e={branch_not_found:"Branch not found on GitHub",repo_not_found:"Repository not found on GitHub",repository_not_found:"Repository not found on GitHub",repo_not_accessible:"Repository is not accessible with your token",pr_not_found:"Pull request not found on GitHub",gist_not_found:"Gist not found on GitHub",commit_not_found:"Commit not found on GitHub",repo_too_big:"Repository exceeds the size limit",quota_exceeded:"Storage quota exceeded",incomplete_record:"Incomplete record: missing identifier"};return function(t){if(!t)return t;var n=t.match(/^rate_limited:(\d+)$/);if(n){var r=Math.max(0,Math.ceil((parseInt(n[1],10)-Date.now())/1e3));if(r<=0)return"Rate limited \u2014 resuming soon";var s=Math.floor(r/60),i=r%60;return"Rate limited \u2014 retrying in "+(s>0?s+"m "+i+"s":i+"s")}if(e[t])return e[t];if(/^[a-z0-9]+(_[a-z0-9]+)+$/.test(t)){var a=t.replace(/_/g," ");return a.charAt(0).toUpperCase()+a.slice(1)}return t}})(),Aq=(function(e){let t=r=>r.replace(/&/g,"&").replace(//g,">");function n(r,s){if(!s)return;let i=s.newPath&&s.newPath!=="/dev/null"?s.newPath:s.oldPath||"",a=s.oldPath==="/dev/null"?"added":s.newPath==="/dev/null"?"deleted":s.oldPath&&s.newPath&&s.oldPath!==s.newPath?"renamed":"modified";if(r.push('
'),r.push('
'+t(i)+''+a+"
"),s.lines.length){r.push('');for(let u of s.lines)r.push('");r.push("
'+(u.oldNo||"")+''+(u.newNo||"")+''+(u.kind==="add"?"+":u.kind==="remove"?"-":u.kind==="hunk"?"@":"")+''+t(u.text)+"
")}r.push("
")}return function(r){if(!r)return r;let s=[],i=null,a=0,u=0,m=()=>(i||(i={oldPath:"",newPath:"",lines:[]}),i),h=()=>{i&&(i.lines.length||i.oldPath||i.newPath)&&(n(s,i),i=null)},v=r.split(` -`);for(let w=0;we});function Oq(e,t){return e==null?"":Number(e).toLocaleString(void 0,t==null?{}:{minimumFractionDigits:t,maximumFractionDigits:t})}function Iq(e){return String(e??"").toUpperCase()}function Pq(e,t,n=0){return(e||[]).slice(n,n+t)}function Vq(e,t){return Array.isArray(e)?typeof t=="function"?e.filter(t):e:[]}function qq(e,t){if(!t)return e||[];let n=Array.isArray(t)?t:[t];return[...e||[]].sort((r,s)=>{for(let i of n){let a=i[0]==="-"?-1:1;i=i.replace(/^[+-]/,"");let u=i.split(".").reduce((h,v)=>h?.[v],r),m=i.split(".").reduce((h,v)=>h?.[v],s);if(typeof u=="string"&&(u=u.toLowerCase()),typeof m=="string"&&(m=m.toLowerCase()),u!==m)return(u==null?-1:m==null?1:ur[s])}function $q(e,t){return(t?.[e]??t?.[e===1?"one":"other"]??"").replace(/\{\}/g,e??0)}var ql={ERRORS:{repository_job_cancelled:"The repository changed or was removed while processing.",storage_delete_failed:"Unable to remove cached files. Please try again later.",unknown_error:"Unknown error, contact the admin.",unreachable:"Anonymous GitHub is unreachable, contact the admin.",request_error:"Unable to download the file, check your connection or contact the admin.",not_found:"The requested resource could not be found.",not_connected:"You must be logged in to perform this action.",not_authorized:"You do not have permission to perform this action.",unable_to_connect_user:"Unable to connect your account. Please try again later.",user_not_found:"The requested user could not be found.",user_banned:"Your account has been banned. Contact the admin for more information.",repo_access_limited:"GitHub blocked access because the repository's organization restricts third-party OAuth apps. Ask an org owner to approve Anonymous GitHub under Settings \u2192 Third-party Access \u2192 OAuth app policy, or anonymize a personal fork instead.",repo_saml_enforcement:"The repository's organization enforces SAML single sign-on. Authorize your token for that organization (GitHub \u2192 Settings \u2192 Applications, or re-run the org's SSO sign-in), then retry. Alternatively, anonymize a personal fork.",repo_not_found:"The repository was not found on GitHub. Check the URL and spelling, make sure you are signed in to the account that can see it, and confirm the repo isn't hidden under an org that restricts third-party app access.",repo_empty:"The selected branch has no commits on GitHub. Push at least one commit, or pick a different branch, then retry.",repo_not_accessible:"Anonymous GitHub cannot access this repository. Verify the repository exists and that Anonymous GitHub has been authorized for the owning organization.",repository_archived:"This repository has been archived and its files are no longer available.",repository_expired:"The repository is expired.",invalid_status:"This action cannot be performed while the resource is in its current state.",repository_not_ready:"Anonymous GitHub is still processing the repository, it can take several minutes.",repository_not_accessible:"This repository is currently not accessible.",repo_is_updating:"Anonymous GitHub is still processing the repository, it can take several minutes.",invalid_repo:"The provided repository is not valid.",invalid_source_repository:"The repository source name is invalid; expected the form 'owner/name'.",repoId_not_defined:"A repository ID must be provided.",repoUrl_not_defined:"The repository URL needs to be defined.",source_not_provided:"A repository source must be provided.",github_rate_limit_exceeded:"GitHub temporarily blocked the request because we hit its API rate limit. Wait a few minutes and try again. If the problem persists and you contact GitHub Support, include the request ID and timestamp shown in GitHub's response (the 'X-GitHub-Request-Id' header).",rate_limited:"GitHub API rate limit reached. The repository will be available shortly \u2014 please wait a moment and refresh.",repoId_already_used:"The repository ID is already used.",invalid_repoId:"The format of the repository ID is invalid.",unsupported_source:"The repository source type is not supported.",branch_not_specified:"The branch is not specified.",branch_not_found:"The branch of the repository cannot be found.",commit_not_specified:"A commit must be specified.",commit_not_found:"The configured commit no longer exists in the source repository. It may have been force-pushed, rebased, or removed.",repo_renamed:"The source repository appears to have been renamed or moved on GitHub. Please refresh and try again \u2014 the cached name has been updated.",invalid_commit_format:"The commit hash format is invalid. It must be a hexadecimal string.",pull_request_not_found:"The requested pull request could not be found.",pull_request_expired:"This pull request has expired and is no longer available.",pull_request_not_ready:"This pull request is still being prepared. Please try again shortly.",pull_request_not_available:"This pull request is currently not available.",invalid_pullRequestId:"The pull request ID is invalid.",pullRequestId_already_used:"This pull request ID is already in use. Please choose a different one.",repository_not_specified:"A repository must be specified for this pull request.",pullRequestId_not_specified:"A pull request ID must be specified.",pullRequestId_is_not_a_number:"The source pull request ID must be a number.",options_not_provided:"Anonymization options are mandatory.",terms_not_specified:"Anonymization terms must be specified.",invalid_terms_format:"Terms are in an invalid format.",missing_content:"No content was provided to the anonymization preview.",unable_to_anonymize:"An error happened during the anonymization process. Please try later or report the issue.",non_supported_mode:"The selected anonymization mode is invalid, only download and stream are supported.",invalid_path:"The provided path is invalid or missing.",path_not_specified:"A file path must be specified.",path_not_defined:"The file path has not been resolved yet.",invalid_file_path:"The requested file path is not valid.",invalid_request:"The request is missing required fields or is malformed.",invalid_project_name:"Use a project name of up to 100 characters without line breaks or control characters.",no_file_selected:"Please select a file.",file_not_found:"The requested file is not found.",file_not_accessible:"The requested file is not accessible.",file_not_supported:"The file type is not supported. Anonymous GitHub cannot handle it.",file_too_big:"The file size exceeds the limit of Anonymous GitHub.",is_folder:"The path points to a folder.",folder_not_supported:"The path points to a folder. Please select a file.",unable_to_write_file:"Unable to write file on disk.",download_not_enabled:"Repository downloads are not enabled on this server.",unable_to_download:"The repository could not be downloaded. Please try again later.",s3_config_not_provided:"Object storage has not been configured on this server.",stats_unsupported:"Statistics are only supported in download mode.",branches_not_found:"The requested branch is not found.",readme_not_available:"No README for the repository is found.",page_not_supported_on_different_branch:"GitHub Pages is served from a different branch than the one selected. Pick the branch that GitHub Pages is configured to use.",page_not_activated:"GitHub Pages is not enabled on this repository. Enable it in the repository settings on GitHub before anonymizing.",is_removed:"This resource has been removed and is no longer available.",conf_name_missing:"A conference name is required.",conf_id_missing:"A conference ID is required.",conf_id_used:"This conference ID is already in use. Please choose a different one.",conf_start_date_missing:"A start date is required for the conference.",conf_end_date_missing:"An end date is required for the conference.",conf_start_date_invalid:"The start date must be before the end date.",conf_end_date_invalid:"The end date must be in the future.",invalid_plan:"The selected plan is not valid.",conference_not_found:"The requested conference could not be found.",conf_not_found:"The requested conference could not be found.",conf_not_activated:"The conference is not activated.",billing_missing:"Billing information is required for this plan.",billing_name_missing:"A billing name is required.",billing_email_missing:"A billing email is required.",billing_address_missing:"A billing address is required.",billing_city_missing:"A billing city is required.",billing_zip_missing:"A billing ZIP/postal code is required.",billing_country_missing:"A billing country is required.",queue_not_found:"The specified queue could not be found.",job_not_found:"The specified job could not be found in the queue.",error_retrying_job:"An error occurred while retrying the job.",gist_expired:"The gist is expired.",gist_not_ready:"Anonymous GitHub is still processing the gist, it can take several minutes.",gist_not_found:"The requested gist could not be found.",gist_not_available:"This gist is currently not available.",invalid_gistId:"The format of the gist ID is invalid.",gistId_not_specified:"A gist ID must be provided.",gistId_already_used:"The gist ID is already used.",missing_token:"An authentication token is required.",invalid_token:"The provided authentication token is invalid.",login_failed:"Login failed. Please try again.",server_error:"An unexpected server error occurred. Please try again later.",username_not_defined:"A username must be provided.",github_user_not_found:"The specified GitHub user could not be found.",cannot_coauthor_self:"You cannot add yourself as a co-author.",storage_write_size_mismatch:"The downloaded file was smaller than expected. The upstream source may have returned an incomplete response \u2014 please try again.",storage_read_error:"An error occurred while reading the file from storage \u2014 please try again.",upstream_error:"A temporary error occurred while fetching from GitHub \u2014 please try again.",token_expired:"Your GitHub access token has expired. Please log out and log in again to refresh it.",job_is_active:"This job is currently running \u2014 wait for it to finish or remove it first.",github_app_access_required:"Allow this repository on GitHub using the read-only access button, then retry. Organization access may require administrator approval.",github_app_reconnect_required:"Reconnect your GitHub App account to restore read-only access.",github_app_disabled:"New GitHub App connections are currently unavailable.",github_oauth_required:"Connect legacy GitHub OAuth to use this feature.",github_identity_mismatch:"Use the same GitHub account that you are signed in with here.",github_app_permissions_invalid:"The GitHub App must be configured with read-only permissions.",github_unavailable:"GitHub is temporarily unavailable. Please retry.",connection_changed:"The repository connection changed. Reload and try again.",repository_busy:"Wait for the repository operation to finish before changing its connection.",invalid_connection:"Select a supported GitHub connection.",github_oauth_disabled:"Legacy OAuth sign-in is currently disabled.",invalid_auth_state:"The authorization session expired. Please start again from Anonymous GitHub.",invalid_webhook_signature:"The webhook signature is invalid.",webhook_processing_failed:"Webhook processing failed. Retry the delivery.",github_app_authorization_cancelled:"GitHub authorization was cancelled.",github_account_link_required:"Verify your existing account with your previous GitHub connection. Future sign-ins will use the GitHub App.",github_app_refresh_busy:"GitHub credentials are being renewed. Please retry shortly.",github_grant_revocation_failed:"Unable to revoke the GitHub grant. Please retry.",another_login_required:"Connect and verify another sign-in method before disconnecting OAuth.",oauth_resources_remaining:"Some resources still require OAuth. Migrate or remove them before disconnecting.",invalid_github_path:"The GitHub repository path is invalid."},WARNINGS:{page_not_enabled_on_repo:"GitHub Pages is not enabled on this repository. Enable it in the repository's Settings \u2192 Pages on GitHub, then refresh.",page_branch_mismatch:"GitHub Pages on this repository is served from the '{{pageBranch}}' branch, but you selected '{{selectedBranch}}'. Switch the branch above to '{{pageBranch}}' to anonymize the Pages site.",folder_truncated:"This folder has more than 10,000 entries; only a partial listing is shown.",repo_truncated:"Some folders in this repository have too many files to be fully listed. Affected folders are marked with a warning icon.",submodules_not_included:"This repository uses git submodules. Submodule contents are not included in the anonymized repository and appear as empty folders."}};var Ml={name:"htmlDoc",props:["content","baseUrl","allowScripts"],setup(e){let t=et(null);return Vt(()=>{let r=[t.value][0];r.classList.add("html-doc");function s(){r.innerHTML="";let i=e.content;if(typeof i!="string")return;let a=document.createElement("iframe");a.className="html-doc-frame",a.setAttribute("title","Rendered HTML document");let u=["allow-popups","allow-popups-to-escape-sandbox"];e.allowScripts&&u.push("allow-scripts","allow-forms","allow-modals"),a.setAttribute("sandbox",u.join(" ")),a.setAttribute("referrerpolicy","no-referrer"),r.appendChild(a);let m="";e.baseUrl&&(m=''),a.srcdoc=m+i}Be(()=>e.content,s,{immediate:!0}),Be(()=>e.baseUrl,s,{immediate:!0}),Be(()=>e.allowScripts,s,{immediate:!0})}),()=>ke("html-doc",{ref:t})}};var $l={name:"pdfviewer",props:["src"],setup(e){let t=et(null);return Vt(()=>{let n=[t.value],r=400,s=[.5,.75,1,1.25,1.5,2,3],i=1e3,a=n[0];a.classList.add("pdf-viewer");let u=null,m=[],h=!1,v=null,w=1,f=1,b=0,C=0,k=612/792,R=0,D=document.createElement("div");D.className="pdf-toolbar";let T=document.createElement("div");T.className="pdf-pages",T.tabIndex=0,T.setAttribute("aria-label","PDF pages"),a.appendChild(D),a.appendChild(T);function V(F,E,P){let M=document.createElement("button");return M.type="button",M.className="pdf-toolbar-btn",M.title=E,M.setAttribute("aria-label",E),M.innerHTML='',M.addEventListener("click",P),M}let _=V("fa-chevron-up","Previous page",function(){ve(f-1)}),O=V("fa-chevron-down","Next page",function(){ve(f+1)}),I=document.createElement("input");I.type="text",I.className="pdf-toolbar-page",I.setAttribute("aria-label","Page number"),I.title="Page number \u2014 type a page and press Enter",I.addEventListener("keydown",function(F){F.key==="Enter"&&(ve(parseInt(I.value,10)),I.blur())}),I.addEventListener("blur",function(){I.value=String(f)});let J=document.createElement("span");J.className="pdf-toolbar-count";let Y=V("fa-search-minus","Zoom out",function(){Fe(s[Math.max(0,ne()-1)])}),K=V("fa-search-plus","Zoom in",function(){Fe(s[Math.min(s.length-1,ne()+1)])}),B=document.createElement("button");B.type="button",B.className="pdf-toolbar-btn pdf-toolbar-zoom",B.title="Reset zoom to fit the width",B.setAttribute("aria-label","Reset zoom to fit the width"),B.addEventListener("click",function(){Fe(1)}),D.appendChild(_),D.appendChild(O);let ae=document.createElement("span");ae.className="pdf-toolbar-group",ae.appendChild(I),ae.appendChild(J),D.appendChild(ae);let oe=document.createElement("span");oe.className="pdf-toolbar-group pdf-toolbar-right",oe.appendChild(Y),oe.appendChild(B),oe.appendChild(K),D.appendChild(oe);function ne(){let F=0;for(let E=0;E=F,B.textContent=Math.round(w*100)+"%",Y.disabled=ne()===0,K.disabled=ne()===s.length-1}function he(F){let E=m[F-1];E&&(T.scrollTop+=E.getBoundingClientRect().top-T.getBoundingClientRect().top)}function ve(F){if(!u||isNaN(F))return;let E=Math.min(Math.max(1,F),u.numPages);m[E-1]&&(he(E),f=E,b=E,C=Date.now()+800,ue(),Ce())}function me(){if(!m.length||Date.now()M||S.bottome.src,te,{immediate:!0}),ro(function(){T.removeEventListener("scroll",Te),$(window).off("resize",U),ie()})}),()=>ke("pdfviewer",{ref:t})}};var Uq={key:0,class:"quota-row quota-usage"},Fq={class:"quota-header"},zq={class:"quota-label"},Hq={class:"project-type-svg","aria-hidden":"true"},Bq=["href"],jq={key:0,class:"quota-percent"},Gq={key:1,class:"quota-unlimited-tag"},Wq={class:"quota-value"},Kq={key:0},Yq=["aria-label","aria-valuenow","aria-valuemax","aria-valuetext"],Jq={key:1,class:"quota-remaining"},Qq={key:2,class:"quota-remaining quota-limit"};function Ll(e,t){return e.quota?(l(),d("div",Uq,[(l(),d(Q,null,se([{key:"repository",label:"Repositories",kind:"count",icon:"project-type-repo"},{key:"storage",label:"Storage",kind:"bytes",icon:"project-icon-storage"},{key:"file",label:"Files",kind:"count",icon:"project-icon-file"}],n=>o("div",{class:A(["quota-item","quota-"+e.quota[n.key].level]),key:n.key},[o("div",Fq,[o("span",zq,[(l(),d("svg",Hq,[o("use",{href:"#"+n.icon},null,8,Bq)])),g(c(n.label),1)]),e.quota[n.key].unlimited?p("v-if",!0):(l(),d("span",jq,c(e.fmt.number(e.quota[n.key].percent,0))+"% used",1)),e.quota[n.key].unlimited?(l(),d("span",Gq,"Unlimited")):p("v-if",!0)]),o("div",Wq,[o("strong",null,c(e.formatAmount(e.quota[n.key].used,n.kind)),1),e.quota[n.key].unlimited?p("v-if",!0):(l(),d("span",Kq," / "+c(e.formatAmount(e.quota[n.key].total,n.kind)),1))]),e.quota[n.key].unlimited?p("v-if",!0):(l(),d("div",{key:0,class:A(["quota-track","quota-"+e.quota[n.key].level]),role:"progressbar","aria-valuemin":"0","aria-label":n.label+" quota","aria-valuenow":Math.min(e.quota[n.key].used,e.quota[n.key].total),"aria-valuemax":e.quota[n.key].total,"aria-valuetext":e.fmt.number(e.quota[n.key].percent,0)+"% used"},[e.quota[n?.key].unlimited?p("v-if",!0):(l(),d("div",{key:0,class:"quota-fill",style:Me({width:e.quota[n.key].percent+"%"})},null,4))],10,Yq)),!e.quota[n.key].unlimited&&e.quota[n.key].used=e.quota[n.key].total?(l(),d("p",Qq,c(e.quota[n.key].used>e.quota[n.key].total?"Limit exceeded":"Limit reached"),1)):p("v-if",!0)],2)),64))])):p("v-if",!0)}var Xq={props:["quota","fmt"],setup(e){return{formatAmount:(t,n)=>n==="bytes"?e.fmt.humanFileSize(t).replace(/([a-zA-Z]+)$/," $1"):e.fmt.number(t)}},render:Ll},Zq=new Set(pe),Fl={props:["content","terms","options"],setup(e){let t=et(null),n=()=>{t.value.innerHTML=renderMD(e.content||"",window.location.pathname+"/../")};return Vt(()=>{n(),Be(()=>[e.content,e.terms,e.options],n,{deep:!0})}),()=>ke("markdown",{ref:t})}},xq={props:["file","terms","options"],setup(e){let t=et(null),n=()=>rt(()=>t.value?.querySelectorAll("pre code").forEach(r=>window.Prism?.highlightElement(r)));return Vt(n),Be(()=>[e.file?.content,e.terms,e.options],n,{deep:!0}),()=>{let r=e.file||{},s=(r.filename||"").split(".").pop().toLowerCase();if(["md","markdown"].includes(s)||r.language==="Markdown")return ke("gist-file",{ref:t},ke(Fl,{content:r.content,terms:e.terms,options:e.options}));let i={js:"javascript",jsx:"javascript",ts:"javascript",typescript:"javascript",py:"python",html:"markup",xml:"markup",svg:"markup",sh:"bash"},a=(r.language||s||"none").toLowerCase();return ke("gist-file",{ref:t},ke("pre",{class:"line-numbers"},ke("code",{class:"language-"+(i[a]||a),key:r.content},r.content||"")))}}},e8={props:["file","content"],setup(e){let t=et(null),n=0,r,s=async()=>{let i=++n;r?.abort(),r=new AbortController;try{let a=e.content?JSON.parse(e.content):await fetch(e.file?.download_url||e.file,{signal:r.signal}).then(u=>{if(!u.ok)throw Error("Notebook request failed");return u.json()});if(await Jt("notebook"),i!==n)return;t.value.innerHTML=DOMPurify.sanitize(nb.parse(a).render()),t.value.querySelectorAll("pre code").forEach(u=>window.Prism?.highlightElement(u))}catch(a){i===n&&a.name!=="AbortError"&&(t.value.textContent="Unable to render the notebook.")}};return Vt(()=>{s(),Be(()=>[e.file,e.content],s)}),ro(()=>{n++,r?.abort()}),()=>ke("notebook",{ref:t})}},t8={props:["stats"],setup(e){return()=>{let t=Object.entries(e.stats||{}).filter(([,r])=>r.code),n=t.reduce((r,[,s])=>r+s.code,0);return ke("loc",t.map(([r,s])=>ke("div",{class:"lang",title:`${r}: ${s.code.toLocaleString()} lines`,style:{width:s.code*100/n+"%",background:langColors[r]}})))}}},zl={Markdown:Fl,GistFile:xq,Notebook:e8,Loc:t8,HtmlDoc:Ml,QuotaUsage:Xq,Pdfviewer:ii(async()=>(await Jt("pdf"),pdfjsLib.GlobalWorkerOptions.workerSrc="/script/external/pdf.worker.js",$l))},Hl={async mounted(e,{value:t}){e._editorValue=t;try{if(await lr(),e._editorDisposed)return;let n=e._editorValue,r=ace.edit(e);e._editor=r,r.setValue(String(n.content??""),-1),Ul(e,n.options),n.options?.onLoad?.(r)}catch(n){e._editorDisposed||(e.textContent=n.message)}},updated(e,{value:t}){e._editorValue=t,e._editor&&(e._editor.getValue()!==String(t.content??"")&&e._editor.setValue(String(t.content??""),-1),Ul(e,t.options))},beforeUnmount(e){e._editorDisposed=!0,e._editor?.destroy()}};function Ul(e,t={}){let n=Zq.has(t.mode)?t.mode:"text";e._editor.session.setMode("ace/mode/"+n),t.theme&&e._editor.setTheme("ace/theme/"+t.theme),e._editor.setReadOnly(t.readOnly!==!1)}var Bl={mounted(e){if(!window.IntersectionObserver)return;let t=[...e.querySelectorAll('a[href^="#"]')],n=new Set,r=new IntersectionObserver(s=>{s.forEach(a=>a.isIntersecting?n.add(a.target.id):n.delete(a.target.id));let i=t.find(a=>n.has(a.hash.slice(1)));t.forEach(a=>a.classList.toggle("active",a===i))},{rootMargin:"-20% 0px -60% 0px",threshold:0});rt(()=>t.forEach(s=>{let i=document.getElementById(s.hash.slice(1));i&&r.observe(i)})),e._observer=r},beforeUnmount(e){e._observer?.disconnect()}};function o8(e){let t={children:[]},n=new Map([["",t]]);function r(s){if(n.has(s))return n.get(s);let i=s.lastIndexOf("/"),a=r(i<0?"":s.slice(0,i)),u={name:s.slice(i+1),children:[]};return n.set(s,u),a.children.push(u),u}for(let s of e||[]){let i=s.path?`${s.path}/${s.name}`:s.name;s.size==null?r(i):r(s.path||"").children.push({...s})}return t.children}var jl={name:"FileTree",props:["file","parent","searchQuery","searchResults","page"],setup(e){let t=Pa(),n=et(null),r=He(Object.create(null)),s=null,i=ot(()=>o8(e.file)),a=()=>"/"+(Array.isArray(t.params.path)?t.params.path.join("/"):t.params.path||"");Be(()=>[t.params.repoId,t.params.path],()=>{let f="";a().split("/").filter(Boolean).forEach(b=>{f+="/"+b,r[f]=!0})},{immediate:!0});let u=ot(()=>{if(!e.searchQuery||!e.searchResults)return null;let f=new Set,b=new Set;return e.searchResults.forEach(C=>{f.add(C.path?`${C.path}/${C.name}`:C.name);let k="";(C.path||"").split("/").filter(Boolean).forEach(R=>{k=k?k+"/"+R:R,b.add(k)})}),{files:f,folders:b}}),m=()=>[...n.value.querySelectorAll("li > a")],h=f=>{n.value.querySelector(".tree-focused")?.classList.remove("tree-focused"),f&&(s=f.dataset.path,f.classList.add("tree-focused"),f.scrollIntoView?.({block:"nearest"}),n.value.focus())};function v(f){let b=m(),C=n.value.querySelector(".tree-focused")||b[0],k=b.indexOf(C);if(!["ArrowDown","ArrowUp","ArrowRight","ArrowLeft","Enter"].includes(f.key)||(f.preventDefault(),f.key==="ArrowDown"&&h(b[(k+1)%b.length]),f.key==="ArrowUp"&&h(b[(k-1+b.length)%b.length]),!C))return;let R=C.closest("li");f.key==="ArrowRight"&&R.classList.contains("folder")&&(R.classList.contains("open")?h(R.querySelector(":scope > ul > li > a")):C.click()),f.key==="ArrowLeft"&&(R.classList.contains("folder")&&R.classList.contains("open")?C.click():h(R.parentElement.closest("li.folder")?.querySelector(":scope > a"))),f.key==="Enter"&&C.click()}function w(f,b=""){let C=[...f].sort((k,R)=>+!!R.children-+!!k.children||k.name.localeCompare(R.name));return ke("ul",C.flatMap(k=>{let R=k,D=R.name,T=(b+"/"+D).slice(1);if(u.value&&!u.value.files.has(T)&&!u.value.folders.has(T))return[];for(;R.children?.length===1;)R=R.children[0],D+="/"+R.name;let V=b+"/"+D,_=!!R.children,O=u.value?r[V]!==!1:!!r[V],I=_&&e.page?.options?.truncatedFolders?.includes(V.slice(1)),J=e.page?.fileCounts?.[V.slice(1)]||0,Y=ke("span",{class:_?"tree-icon-folder":"far fa-file tree-icon-file","aria-hidden":"true"},_?ke("svg",{viewBox:"0 0 14 12",focusable:"false"},ke("path",{d:"M1.5 10.5v-9h4l1.5 2h5.5v7z"})):null),K=ke("span",{class:"tree-name"},D),B=oe=>{h(oe.currentTarget),_&&(oe.preventDefault(),r[V]=!O,r[V]&&!R.children.length&&e.page.getFiles(V.slice(1)),rt(()=>h(m().find(ne=>ne.dataset.path===s))))},ae=ke("a",{"data-path":V,href:_?void 0:`/r/${encodeURIComponent(t.params.repoId)}${encodePathForUrl(V)}`,class:{"tree-focused":s===V},onClick:B},[_?ke("span",{class:"tree-toggle"}):b?ke("span",{class:"tree-spacer"}):null,Y,K,I?ke("span",{class:"truncated-warning",title:e.page.fmt.translate("WARNINGS.folder_truncated")},ke("i",{class:"fas fa-exclamation-triangle"})):null,_&&J?ke("span",{class:"tree-count"},J):null]);return ke("li",{key:V,class:{file:!0,folder:_,open:O,active:a()===V,truncated:I},title:_?"":`Size: ${humanFileSize(R.size||0)}`},[ae,_&&O?w(R.children,V):null])}))}return()=>ke("tree",{ref:n,tabindex:0,onKeydown:v},e.file?.length?u.value?.files.size===0?ke("div",{class:"tree-search-empty"},"No files found"):w(i.value):"Empty repository")}};function Wl(){return He({errors:{},dirty:!1,touched:!1,submitted:!1,get invalid(){return Object.values(this.errors).some(Boolean)},setValidity(e,t){this.errors[e]=!t},setDirty(){this.dirty=!0}})}function Kl(e,t){if(!e[t]){let n=Wl();Object.defineProperty(n,"invalid",{get(){return Object.values(n.errors).some(Boolean)||Object.keys(n).some(r=>r!=="invalid"&&n[r]&&typeof n[r]=="object"&&n[r].invalid)}}),e[t]=n}return e[t]}var Yl={beforeMount(e,{value:t}){e._formState=Kl(t,e.name),e.addEventListener("submit",n=>n.preventDefault())}};function s8(e){return e instanceof Date?isNaN(e)?"":`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`:e||""}function Gl(e){let t=e._field.binding.value;e.type==="checkbox"?e.checked=!!t:e.type==="radio"?e.checked=t==(e._value??e.value):e._field.timer||(e.value=e.type==="date"?s8(t):t??""),nr(e)}function nr(e){let t=e._field.validation;if(!t)return;let n=e.validity;for(let[r,s]of Object.entries({required:n.valueMissing,pattern:n.patternMismatch,min:n.rangeUnderflow,max:n.rangeOverflow,date:n.badInput,email:n.typeMismatch&&e.type==="email",url:n.typeMismatch&&e.type==="url"}))t.setValidity(r,e.disabled||!s)}var Jl={beforeMount(e,{value:t}){var a;let n=t.form&&Kl(t.state,t.form),r=n&&e.name?n[a=e.name]||(n[a]=Wl()):null;e._field={binding:t,validation:r,timer:null};let s=()=>{clearTimeout(e._field.timer),e._field.timer=null;let u=e._field.binding,m=e.type==="checkbox"?e.checked:e._value??e.value;if(!(e.type==="radio"&&!e.checked)){if((e.type==="number"||e.type==="range")&&(m=e.value===""?null:Number(e.value)),e.type==="date"&&(m=e.value?new Date(e.value+"T00:00:00"):null),r){r.setDirty();for(let h of Object.keys(r.errors))r.setValidity(h,!0)}u.set(m),nr(e),u.change?.()}};e._field.commit=s;let i=u=>{let m=e._field.binding.options?.debounce||0,h=typeof m=="number"?m:m[u.type]??m.default??0;clearTimeout(e._field.timer),h?e._field.timer=setTimeout(s,h):s()};e.addEventListener(e.tagName==="SELECT"||["checkbox","radio","date"].includes(e.type)?"change":"input",i),e.addEventListener("blur",()=>{r&&(r.touched=!0),e._field.timer&&s()})},mounted:Gl,updated(e,{value:t}){e._field.binding=t,Gl(e)},beforeUnmount(e){clearTimeout(e._field.timer);let{binding:t,validation:n}=e._field,r=t.form&&t.state[t.form];r&&r[e.name]===n&&delete r[e.name]}};function Ql(e,t){let n=e.target.closest("form");if(n?._formState&&(n._formState.submitted=!0),n?.querySelectorAll("input, select, textarea").forEach(r=>{r._field?.timer&&r._field.commit(),r._field&&nr(r)}),n&&!n.checkValidity()){let r=n.querySelector(":invalid");r?.scrollIntoView?.({block:"center"}),r?.focus(),n.reportValidity();return}return t()}var Xl=Symbol("session"),n8=/^\/(w|api|github)(\/|$)/;function Zl(e,t={}){let n=e?.split(".").reduce((r,s)=>r?.[s],ql);return String(n??e??"").replace(/{{\s*([^}]+?)\s*}}/g,(r,s)=>t[s]??"")}var r8={...sr,translate:Zl};function i8(e){if(e==null||e==="")return e;try{let t=new URL(e,window.location.href);return["http:","https:","mailto:","tel:","blob:"].includes(t.protocol)?e:void 0}catch{return}}function a8(e="#app",t={}){!t.history&&window.location.pathname==="/"&&/^#!\/r\/[^/?#]+/.test(window.location.hash)&&window.history.replaceState(window.history.state,"",window.location.hash.slice(2));let n=new Map,r=Il(t.fetch),s,i;function a(){let h=ct(),v={url(f){return f===void 0?i.currentRoute.value.fullPath:(i.push(f),v)},path(){return i.currentRoute.value.path},search(){return i.currentRoute.value.query}},w=new Proxy({},{get(f,b){let C=i.currentRoute.value.params[b];return Array.isArray(C)?C.join("/"):C}});return{http:r,...h,location:v,params:w,window,promises:Pl,html:{trustAsHtml:f=>f},translate:(f,b)=>Promise.resolve(Zl(f,b)),quotaService:Vl(r)}}function u(h){return{name:h.template,setup(){let v=xn(ut(Xl),n);h.setup(v,a()),Ol(h.template,v);let w=[];return()=>tn[h.template](v,w)}}}i=Ia({history:t.history||Ta(),routes:tl.map(h=>h.redirect?h:{path:h.path,component:u(h),meta:{title:h.title,preserveExplorer:h.preserveExplorer}})});let m=Qi({setup(){s=xn(null,n),s.fmt=r8,s.window=window,s.Math=Math,s.sanitize=f=>DOMPurify.sanitize(f??""),s.submitForm=Ql,s.safeUrl=i8;let h=a();qa(s,h.http,h.location,h.timeout),no(Xl,s),Be(()=>s.title,f=>{document.title=f||"Anonymous GitHub"});let v=[],w=f=>{let b=f.target.closest?.("a[href]");if(f.defaultPrevented||f.button!==0||f.metaKey||f.ctrlKey||f.shiftKey||f.altKey||!b||b.hasAttribute("download")||b.target&&b.target!=="_self"||b.dataset.toggle||b.getAttribute("href").startsWith("#"))return;let k=new URL(b.href,window.location.href);k.origin!==window.location.origin||n8.test(k.pathname)||(f.preventDefault(),i.push(k.pathname+k.search+k.hash),$("#navbarSupportedContent.show").collapse("hide"))};return document.addEventListener("click",w),ro(()=>document.removeEventListener("click",w)),()=>[Al(s,[]),ke("header",{class:"app-header"},tn["partials/header.htm"](s,v)),ke("main",{class:"app-view align-items-stretch w-100"},ke(Zn,null,{default:({Component:f,route:b})=>f?ke(f,{key:b.meta.preserveExplorer?b.matched[0]?.path:b.path}):null})),ke("div",{class:"position-fixed p-3",style:{zIndex:999999999,right:0,bottom:0}},s.toasts.map((f,b)=>ke("div",{class:"toast show",role:"alert","aria-live":"assertive","aria-atomic":"true",key:b},[ke("div",{class:"toast-header"},[ke("strong",{class:"mr-auto"},f.title),ke("button",{type:"button",class:"ml-2 mb-1 close","aria-label":"Close",onClick:()=>s.removeToast(f)},"\xD7")]),ke("div",{class:"toast-body"},f.body)])))]}});for(let[h,v]of Object.entries(zl))m.component(h,v);return m.component("Tree",jl),m.component("PartialView",{props:["name","state"],setup(h){let v=[];return()=>tn[h.name](h.state,v)}}),m.directive("field",Jl),m.directive("form",Yl),m.directive("code-editor",Hl),m.directive("paper-scrollspy",Bl),m.use(i),i.beforeEach(async h=>{s?.emit("routeLeave"),/^\/(r|repository|anonymize|pull-request-anonymize|gist-anonymize|pr|gist)(\/|$)/.test(h.path)&&await Jt("markdown"),/^\/(r|repository)\//.test(h.path)&&await Jt("org")}),i.afterEach(h=>{if(!s)return;s.title=h.meta.title,s.emit("routeChange",{title:h.meta.title}),s.emit("routeUpdate",{title:h.meta.title});let v=document.querySelector(".app-view");!h.meta.preserveExplorer&&v&&(v.scrollTop=0)}),m.mount(e),{app:m,router:i,state:s}}document.querySelector("#app")&&(window.anonymousApp=a8());})(); +jane.smith@example.org`},OV={id:"termsHelp",class:"form-text text-muted"},IV={class:"invalid-feedback"},PV={id:"settings-display",class:"paper-settings-section"},VV={class:"form-group paper-check-list"},qV={class:"form-check"},MV={class:"form-check-input",type:"checkbox",id:"link",name:"link"},$V={class:"form-check"},LV={class:"form-check-input",type:"checkbox",id:"image",name:"image"},UV={class:"form-check"},FV={class:"form-check-input",type:"checkbox",id:"pdf",name:"pdf"},zV={class:"form-check"},HV={class:"form-check-input",type:"checkbox",id:"notebook",name:"notebook"},jV={id:"settings-features",class:"paper-settings-section"},BV={class:"form-group paper-check-list"},GV={class:"form-check"},WV={class:"form-check-input",type:"checkbox",id:"page",name:"page"},KV={class:"form-check"},YV={class:"form-check-input",type:"checkbox",id:"loc",name:"loc"},JV={class:"form-check"},QV={class:"form-check-input",type:"checkbox",id:"update",name:"update"},XV={class:"form-group"},ZV={class:"form-control",id:"mode",name:"mode"},xV={class:"form-text text-muted"},e5={id:"settings-expiration",class:"paper-settings-section"},t5={class:"form-group"},o5={class:"form-control",id:"expiration",name:"expiration"},s5={key:0,class:"draft-status",role:"status"},n5={key:1,class:"draft-status"},r5={class:"paper-settings-footer"},i5={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},a5=["textContent"],l5={class:"paper-settings-actions"},d5=["disabled"],u5={key:0,class:"ui-icon mr-1","aria-hidden":"true"},c5={id:"settings-account",class:"paper-settings-section"},p5={class:"paper-account-card"},f5=["src"],h5={class:"paper-account-identity"},m5={class:"paper-account-name"},v5={class:"paper-danger-zone"},g5={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},y5=["textContent"],b5=["disabled"];function Dl(e,t){let n=We("quota-usage"),r=ye("paper-scrollspy"),s=ye("field"),i=ye("form");return l(),d("div",kV,[t[52]||(t[52]=ce('
My work \xA0/\xA0 Settings

Your settings

Defaults applied to every new anonymization, your quotas, and your account.

',3)),o("div",EV,[N((l(),d("aside",CV,[...t[4]||(t[4]=[ce('
On this page
',2)])])),[[r]]),o("div",_V,[p(" Account usage shares the dashboard component. "),o("section",SV,[t[6]||(t[6]=o("div",{class:"paper-section-eyebrow"},"Quota",-1)),t[7]||(t[7]=o("p",{class:"paper-section-copy"},"What you are using across all your anonymizations. Conferences can lift these limits during a review window.",-1)),e.quota?(l(),qt(n,{key:0,quota:e.quota,fmt:e.fmt},null,8,["quota","fmt"])):p("v-if",!0),e.quota?p("v-if",!0):(l(),d("div",NV,[(l(),d(X,null,ae([1,2,3],(a,u)=>o("div",DV,[...t[5]||(t[5]=[o("div",{class:"quota-header"},[o("span",{class:"skeleton skeleton-line",style:{width:"40%"}}),o("span",{class:"skeleton skeleton-line",style:{width:"25%"}})],-1),o("div",{class:"quota-track"},null,-1)])])),64))]))]),N((l(),d("form",{class:"form needs-validation",name:"defaultsForm",novalidate:"",onSubmit:t[2]||(t[2]=he(a=>e.submitForm(a,()=>{e.saveDefault(a)}),["prevent"]))},[o("section",RV,[t[13]||(t[13]=o("div",{class:"paper-section-eyebrow"},"Terms to redact",-1)),t[14]||(t[14]=o("p",{class:"paper-section-copy"},"Pre-filled in every new anonymization. You can still edit the list per anonymization.",-1)),o("div",TV,[t[12]||(t[12]=o("label",{class:"paper-field-label",for:"terms"},"Default terms",-1)),N(o("textarea",AV,null,512),[[s,{state:e.viewState,set:a=>{e.terms=a},value:e.terms,form:"defaultsForm",options:{debounce:250}}]]),o("small",OV,[t[8]||(t[8]=y(" One term per line (regex allowed). Each match is replaced by ",-1)),o("code",null,c(e.site_options?.ANONYMIZATION_MASK||"XXX")+"-[N]",1),t[9]||(t[9]=y(", or use ",-1)),t[10]||(t[10]=o("code",null,"term=>replacement",-1)),t[11]||(t[11]=y(" to pick your own. ",-1))]),N(o("div",IV," Terms are in an invalid format ",512),[[Y,e.defaultsForm?.terms?.errors?.format]])])]),o("section",PV,[t[23]||(t[23]=o("div",{class:"paper-section-eyebrow"},"Display",-1)),t[24]||(t[24]=o("p",{class:"paper-section-copy"},"What reviewers can see inside an anonymized repository.",-1)),o("div",VV,[o("div",qV,[N(o("input",MV,null,512),[[s,{state:e.viewState,set:a=>{e.options.link=a},value:e.options?.link,form:"defaultsForm",options:{}}]]),t[15]||(t[15]=o("label",{class:"form-check-label",for:"link"},"Keep links",-1)),t[16]||(t[16]=o("small",{class:"form-text text-muted"},"Unchecked, every link in text files is removed.",-1))]),o("div",$V,[N(o("input",LV,null,512),[[s,{state:e.viewState,set:a=>{e.options.image=a},value:e.options?.image,form:"defaultsForm",options:{}}]]),t[17]||(t[17]=o("label",{class:"form-check-label",for:"image"},"Display images",-1)),t[18]||(t[18]=o("small",{class:"form-text text-muted"},"Images are shown as is. They are not anonymized.",-1))]),o("div",UV,[N(o("input",FV,null,512),[[s,{state:e.viewState,set:a=>{e.options.pdf=a},value:e.options?.pdf,form:"defaultsForm",options:{}}]]),t[19]||(t[19]=o("label",{class:"form-check-label",for:"pdf"},"Display PDFs",-1)),t[20]||(t[20]=o("small",{class:"form-text text-muted"},"PDFs are shown as is. They are not anonymized.",-1))]),o("div",zV,[N(o("input",HV,null,512),[[s,{state:e.viewState,set:a=>{e.options.notebook=a},value:e.options?.notebook,form:"defaultsForm",options:{}}]]),t[21]||(t[21]=o("label",{class:"form-check-label",for:"notebook"},"Display notebooks",-1)),t[22]||(t[22]=o("small",{class:"form-text text-muted"},"Render Jupyter notebooks instead of raw JSON.",-1))])])]),o("section",jV,[t[33]||(t[33]=o("div",{class:"paper-section-eyebrow"},"Features",-1)),o("div",BV,[o("div",GV,[N(o("input",WV,null,512),[[s,{state:e.viewState,set:a=>{e.options.page=a},value:e.options?.page,form:"defaultsForm",options:{}}]]),t[25]||(t[25]=o("label",{class:"form-check-label",for:"page"},"GitHub Pages",-1)),t[26]||(t[26]=o("small",{class:"form-text text-muted"},"Serve an anonymized copy of the repository's GitHub Pages site. Only pages built from the anonymized branch are supported.",-1))]),o("div",KV,[N(o("input",YV,null,512),[[s,{state:e.viewState,set:a=>{e.options.loc=a},value:e.options?.loc,form:"defaultsForm",options:{}}]]),t[27]||(t[27]=o("label",{class:"form-check-label",for:"loc"},"Lines of code",-1)),t[28]||(t[28]=o("small",{class:"form-text text-muted"},"Show the line count of the repository in the explorer.",-1))]),o("div",JV,[N(o("input",QV,null,512),[[s,{state:e.viewState,set:a=>{e.options.update=a},value:e.options?.update,form:"defaultsForm",options:{}}]]),t[29]||(t[29]=o("label",{class:"form-check-label",for:"update"},"Auto-update from GitHub",-1)),t[30]||(t[30]=o("small",{class:"form-text text-muted"},"Follow the branch and pull the latest commit automatically, at most once an hour.",-1))])]),o("div",XV,[t[32]||(t[32]=o("label",{class:"paper-field-label",for:"mode"},"Fetch mode",-1)),N((l(),d("select",ZV,[...t[31]||(t[31]=[o("option",{value:"GitHubStream",selected:""},"Stream from GitHub on demand",-1),o("option",{value:"GitHubDownload"},"Download to Anonymous GitHub",-1)])])),[[s,{state:e.viewState,set:a=>{e.options.mode=a},value:e.options?.mode,form:"defaultsForm",options:{}}]]),o("small",xV," Download is faster for reviewers and enables every feature. Streaming is the only option above "+c(e.fmt?.humanFileSize(e.site_options?.MAX_REPO_SIZE*1024))+". ",1)])]),o("section",e5,[t[37]||(t[37]=o("div",{class:"paper-section-eyebrow"},"Expiration",-1)),o("div",t5,[t[35]||(t[35]=o("label",{class:"paper-field-label",for:"expiration"},"When an anonymization expires",-1)),N((l(),d("select",o5,[...t[34]||(t[34]=[o("option",{value:"redirect"},"Redirect visitors to the GitHub repository",-1),o("option",{value:"remove",selected:""},"Remove the anonymized repository",-1)])])),[[s,{state:e.viewState,set:a=>{e.options.expirationMode=a},value:e.options?.expirationMode,form:"defaultsForm",options:{}}]]),t[36]||(t[36]=o("small",{class:"form-text text-muted"}," The expiration date itself is chosen per anonymization. Redirecting reveals the source repository, so pick it only once the review is over. ",-1))])]),e.draftRestored?(l(),d("div",s5,[t[38]||(t[38]=y("Your unsaved draft was restored. ",-1)),o("button",{type:"button",class:"draft-discard",onClick:t[0]||(t[0]=a=>e.discardDraft())},"Discard draft")])):e.unsavedChanges?(l(),d("div",n5,[y(c(e.draftSaved?"Draft saved in this tab for 30 minutes.":"Unsaved changes. Keep this tab open until you save.")+" ",1),o("button",{type:"button",class:"draft-discard",onClick:t[1]||(t[1]=a=>e.discardDraft())},c(e.isUpdate?"Restore saved settings":"Discard changes"),1)])):p("v-if",!0),o("div",r5,[e.error?(l(),d("div",i5,[t[39]||(t[39]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-info"})],-1)),t[40]||(t[40]=y()),o("span",{textContent:c(e.error)},null,8,a5)])):p("v-if",!0),o("div",l5,[o("button",{id:"save",type:"submit",class:"btn btn-ink",disabled:e.saving},[e.message?(l(),d("svg",u5,[...t[41]||(t[41]=[o("use",{href:"#ui-icon-check"},null,-1)])])):p("v-if",!0),y(c(e.saving?"Saving\u2026":e.message?"Saved":"Save defaults"),1)],8,d5),t[42]||(t[42]=o("span",{class:"paper-settings-hint"},"Applies to new anonymizations only. Existing ones keep their settings.",-1))])])],32)),[[i,e.viewState]]),o("section",c5,[t[50]||(t[50]=o("div",{class:"paper-section-eyebrow"},"Account",-1)),o("div",p5,[e.user?.photo?(l(),d("img",{key:0,width:"40",height:"40",class:"rounded-circle",alt:"",src:e.safeUrl(e.user?.photo)},null,8,f5)):p("v-if",!0),o("div",h5,[o("div",m5,"@"+c(e.user?.username),1),t[43]||(t[43]=o("div",{class:"paper-account-meta"},"Signed in with GitHub. Anonymous GitHub only reads your repositories.",-1))]),t[44]||(t[44]=o("a",{class:"btn btn-outline-ink",href:"/api/user/logout",target:"_self"},"Sign out",-1))]),t[51]||(t[51]=o("a",{class:"paper-settings-connection-link",href:"/connections"},[o("i",{class:"fab fa-github","aria-hidden":"true"}),o("span",null,[y("GitHub connections"),o("small",null,"Manage repository access and legacy OAuth.")]),o("span",{"aria-hidden":"true"},"\u2192")],-1)),o("div",v5,[t[48]||(t[48]=o("div",{class:"paper-danger-head"},"Delete account",-1)),t[49]||(t[49]=o("p",{class:"paper-danger-copy"}," Removes all your anonymized repositories, gists, and pull requests, revokes the application's access to your GitHub account, and erases your personal data (username, email, access tokens). This cannot be undone. ",-1)),e.deleteError?(l(),d("div",g5,[t[45]||(t[45]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-info"})],-1)),t[46]||(t[46]=y()),o("span",{textContent:c(e.deleteError)},null,8,y5)])):p("v-if",!0),o("button",{type:"button",class:"btn btn-outline-danger",onClick:t[3]||(t[3]=a=>e.deleteAccount()),disabled:e.deletingAccount},[t[47]||(t[47]=o("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-trash"})],-1)),y(c(e.deletingAccount?"Deleting\u2026":"Delete my account"),1)],8,b5)])])])])])}var w5={class:"pr-page"},k5={class:"container paper-page pr-page-inner"},E5={class:"pr-header"},C5={class:"pr-title-row"},_5={class:"paper-page-title pr-title"},S5=["textContent"],N5={key:1,class:"text-muted"},D5=["href"],R5={class:"pr-header-meta"},T5={key:0,class:"pr-meta-item"},A5=["textContent"],O5={key:1,class:"pr-meta-item"},I5=["textContent"],P5={key:2,class:"pr-meta-item"},V5=["textContent"],q5={key:0,class:"pr-body-card"},M5={key:1,class:"paper-tabs",role:"tablist"},$5=["aria-selected","tabindex"],L5=["aria-selected","tabindex"],U5=["textContent"],F5={class:"paper-tab-content"},z5={key:0,role:"tabpanel",id:"pr-diff-panel","aria-labelledby":"pr-diff-tab"},H5=["innerHTML"],j5={key:1,role:"tabpanel",id:"pr-comments-panel","aria-labelledby":"pr-comments-tab"},B5={class:"pr-comments"},G5={class:"pr-comment"},W5={class:"pr-comment-head"},K5={key:0,class:"pr-comment-author"},Y5=["textContent"],J5=["textContent"],Q5={key:0,class:"pr-comment-body"},X5={key:0,class:"paper-table-empty"};function Rl(e,t){let n=We("markdown");return l(),d("div",w5,[o("div",k5,[t[17]||(t[17]=o("div",{class:"paper-crumbs"},[o("a",{href:"/dashboard"},"Reviewer"),y(" \xA0/\xA0 "),o("span",{class:"here"},"Pull request")],-1)),o("header",E5,[o("div",C5,[o("h1",_5,[e.details?.title?(l(),d("span",{key:0,textContent:c(e.details?.title)},null,8,S5)):p("v-if",!0),e.details?.title?p("v-if",!0):(l(),d("span",N5,"Untitled pull request"))]),e.options?.isAdmin||e.options?.isOwner?(l(),d("a",{key:0,class:"btn btn-sm","aria-label":"Edit",href:e.safeUrl("/pull-request-anonymize/"+e.pullRequestId)},[...t[4]||(t[4]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-edit"})],-1),o("span",{class:"d-none d-md-inline"}," Edit",-1)])],8,D5)):p("v-if",!0)]),o("div",R5,[o("span",{class:A(["paper-pill",{good:e.details?.merged,warn:e.details?.state=="open",bad:e.details?.state=="closed"&&!e.details?.merged}])},[o("span",{class:A(["status-dot",{"status-ready":e.details?.merged,"status-error":e.details?.state=="closed"&&!e.details?.merged}])},null,2),y(" "+c(e.details?.merged?"Merged":e.fmt.title(e.details?.state)),1)],2),e.details?.baseRepositoryFullName?(l(),d("span",T5,[t[5]||(t[5]=o("i",{class:"fab fa-github"},null,-1)),t[6]||(t[6]=y()),o("span",{textContent:c(e.details?.baseRepositoryFullName)},null,8,A5)])):p("v-if",!0),e.details?.updatedDate?(l(),d("span",O5,[t[7]||(t[7]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#project-icon-clock"})],-1)),t[8]||(t[8]=y()),o("span",{textContent:c(e.fmt?.date(e.details?.updatedDate))},null,8,I5)])):p("v-if",!0),e.details?.anonymizeDate?(l(),d("span",P5,[t[9]||(t[9]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-shield"})],-1)),t[10]||(t[10]=y(" Anonymized ",-1)),o("span",{textContent:c(e.fmt?.date(e.details?.anonymizeDate))},null,8,V5)])):p("v-if",!0)])]),e.details?.body?(l(),d("section",q5,[t[11]||(t[11]=o("div",{class:"paper-section-eyebrow"},"Description",-1)),Ce(n,{content:e.details?.body},null,8,["content"])])):p("v-if",!0),e.details?.diff||e.details?.comments?(l(),d("nav",M5,[e.details?.diff?(l(),d("button",{key:0,class:A(["paper-tab",{active:e.tabState?.active=="diff"}]),type:"button",role:"tab",id:"pr-diff-tab","aria-selected":e.tabState?.active==="diff","aria-controls":"pr-diff-panel",tabindex:e.tabState?.active==="diff"?0:-1,onKeydown:t[0]||(t[0]=r=>e.previewTabKeydown(r)),onClick:t[1]||(t[1]=r=>e.tabState.active="diff")},[...t[12]||(t[12]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-code"})],-1),y(" Diff ",-1)])],42,$5)):p("v-if",!0),e.details?.comments?(l(),d("button",{key:1,class:A(["paper-tab",{active:e.tabState?.active=="comments"}]),type:"button",role:"tab",id:"pr-comments-tab","aria-selected":e.tabState?.active==="comments","aria-controls":"pr-comments-panel",tabindex:e.tabState?.active==="comments"?0:-1,onKeydown:t[2]||(t[2]=r=>e.previewTabKeydown(r)),onClick:t[3]||(t[3]=r=>e.tabState.active="comments")},[t[13]||(t[13]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-comment"})],-1)),o("span",{textContent:c(e.fmt.plural(e.details?.comments?.length,{0:"No comments",one:"1 comment",other:"{} comments"}))},null,8,U5)],42,L5)):p("v-if",!0)])):p("v-if",!0),o("div",F5,[e.details?.diff&&e.tabState?.active=="diff"?(l(),d("div",z5,[o("div",{class:"pr-diff",innerHTML:e.sanitize(e.fmt?.diff(e.details?.diff))},null,8,H5)])):p("v-if",!0),e.details?.comments&&e.tabState?.active=="comments"?(l(),d("div",j5,[o("ul",B5,[(l(!0),d(X,null,ae(e.details?.comments,(r,s)=>(l(),d("li",G5,[o("div",W5,[r?.author?(l(),d("span",K5,[t[14]||(t[14]=o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-user"})],-1)),t[15]||(t[15]=y(" @",-1)),o("span",{textContent:c(r?.author)},null,8,Y5)])):p("v-if",!0),r?.updatedDate?(l(),d("span",{key:1,class:"pr-comment-date",textContent:c(e.fmt?.date(r?.updatedDate))},null,8,J5)):p("v-if",!0)]),r?.body?(l(),d("div",Q5,[Ce(n,{content:r?.body},null,8,["content"])])):p("v-if",!0)]))),256)),e.details?.comments?.length?p("v-if",!0):(l(),d("li",X5,[...t[16]||(t[16]=[o("svg",{class:"ui-icon","aria-hidden":"true"},[o("use",{href:"#ui-icon-comment"})],-1),o("span",null,"No comments on this pull request.",-1)])]))])])):p("v-if",!0)])])])}var Z5={class:"container paper-page status-page"},x5={class:"d-flex align-items-end justify-content-between flex-wrap",style:{gap:"12px"}},eq={class:"paper-page-title"},tq=["textContent"],oq={key:1},sq={class:"paper-settings-section"},nq={key:0,class:"paper-ratelimit-card",role:"status"},rq={class:"paper-error-msg"},iq=["aria-valuenow"],aq={class:"paper-progress-label"},lq=["textContent"],dq={key:0},uq=["textContent"],cq={class:"paper-progress-pct"},pq={key:2,class:"paper-error-card",role:"alert"},fq={key:0,class:"paper-error-msg"},hq={key:1,class:"paper-error-msg"},mq={class:"paper-error-actions"},vq=["href"],gq={class:"paper-detail-grid"},yq={class:"detail-value"},bq=["href"],wq={key:0,class:"detail-label"},kq={key:1,class:"detail-value"},Eq=["href"],Cq={key:3,class:"anonymize-submit-bar"},_q=["href"],Sq=["href"];function Tl(e,t){return l(),d("div",Z5,[t[15]||(t[15]=o("div",{class:"paper-crumbs"},[y("Anonymization \xA0/\xA0 "),o("span",{class:"here"},"Status")],-1)),o("div",x5,[o("div",null,[o("h1",eq,[t[0]||(t[0]=y("Status of ",-1)),o("em",null,c(e.repoId),1)]),t[1]||(t[1]=o("p",{class:"paper-page-lede"},"Track progress as your anonymization is prepared.",-1))]),o("span",{class:A(["status-pill",{"status-pill-ready":e.repo?.status=="ready","status-pill-error":e.repo?.status=="error","status-pill-removed":e.repo?.status=="removed"||e.repo?.status=="expired","status-pill-ratelimit":e.rateLimitResetAt}])},[o("span",{class:A(["status-dot",{"status-ready":e.repo?.status=="ready","status-error":e.repo?.status=="error","status-removed":e.repo?.status=="removed"||e.repo?.status=="expired","status-ratelimit":e.rateLimitResetAt}])},null,2),e.rateLimitResetAt?p("v-if",!0):(l(),d("span",{key:0,textContent:c(e.fmt?.title(e.repo?.status))},null,8,tq)),e.rateLimitResetAt?(l(),d("span",oq,"Rate limited")):p("v-if",!0)],2)]),o("section",sq,[t[13]||(t[13]=o("div",{class:"paper-section-eyebrow"},"Progress",-1)),t[14]||(t[14]=o("p",{class:"paper-section-copy"},[y(" The repository will take a few minutes to get ready, depending on its size. Visit the "),o("a",{href:"/faq"},"FAQ"),y(" for more information. ")],-1)),e.rateLimitResetAt?(l(),d("div",nq,[t[4]||(t[4]=ce('
Temporarily paused
GitHub API rate limit reached
',1)),o("p",rq,[t[2]||(t[2]=y("Anonymization will resume automatically in ",-1)),o("strong",null,c(e.rateLimitCountdown),1),t[3]||(t[3]=y(". No action needed \u2014 the job is queued and will continue where it left off.",-1))])])):p("v-if",!0),e.repo?.status!="error"&&!e.rateLimitResetAt?(l(),d("div",{key:1,class:A(["paper-progress",{"paper-progress-ready":e.repo?.status=="ready"}]),role:"progressbar","aria-valuemin":"0","aria-valuemax":"100","aria-valuenow":e.progress},[o("div",{class:"paper-progress-bar",style:Me("width: "+e.progress+"%;")},null,4),o("div",aq,[o("span",{textContent:c(e.fmt?.title(e.repo?.status))},null,8,lq),e.repo?.statusMessage?(l(),d("span",dq,[t[5]||(t[5]=y("\xA0\xB7\xA0",-1)),o("span",{textContent:c(e.repo?.statusMessage)},null,8,uq)])):p("v-if",!0),o("span",cq,c(e.progress||0)+"%",1)])],10,iq)):p("v-if",!0),e.repo?.status=="error"&&!e.rateLimitResetAt?(l(),d("div",pq,[t[8]||(t[8]=ce('
Anonymization failed
Something went wrong while preparing this repository.
',1)),e.repo?.statusMessage?(l(),d("p",fq,c(e.fmt?.translate("ERRORS."+e.repo?.statusMessage)),1)):p("v-if",!0),e.repo?.statusMessage?p("v-if",!0):(l(),d("p",hq,"No additional details were reported. The most common causes are private repositories, missing branches, and rate limits.")),t[9]||(t[9]=o("ul",{class:"paper-error-hints"},[o("li",null,"Make sure the source URL points to a repository or pull request you can access."),o("li",null,"Check that the chosen branch and commit still exist on GitHub."),o("li",null,"If you just signed in, the access token may need a moment to propagate \u2014 try again.")],-1)),o("div",mq,[o("a",{class:"btn btn-ink",href:e.safeUrl("/anonymize/"+e.repoId)},[...t[6]||(t[6]=[o("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-edit"})],-1),y(" Edit anonymization",-1)])],8,vq),t[7]||(t[7]=ce(' Read the FAQ Report a bug in Anonymous GitHub',2))])])):p("v-if",!0),o("div",gq,[t[10]||(t[10]=o("div",{class:"detail-label"},"Repository",-1)),o("div",yq,[o("a",{target:"_self",href:e.safeUrl("/r/"+e.repoId+"/")},"/r/"+c(e.repoId)+"/",9,bq)]),e.repo?.options?.page?(l(),d("div",wq,"GitHub Page")):p("v-if",!0),e.repo?.options?.page?(l(),d("div",kq,[o("a",{target:"_self",href:e.safeUrl("/w/"+e.repoId+"/")},"/w/"+c(e.repoId)+"/",9,Eq)])):p("v-if",!0)]),e.repo?.status=="ready"?(l(),d("div",Cq,[o("a",{class:"btn btn-ink",target:"_self",href:e.safeUrl("/r/"+e.repoId+"/")},[...t[11]||(t[11]=[o("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[o("use",{href:"#project-icon-eye"})],-1),y(" Go to anonymized repository ",-1)])],8,_q),e.repo?.options?.page?(l(),d("a",{key:0,class:"btn",target:"_self",href:e.safeUrl("/w/"+e.repoId+"/")},[...t[12]||(t[12]=[o("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[o("use",{href:"#ui-icon-globe"})],-1),y(" Go to anonymized GitHub page ",-1)])],8,Sq)):p("v-if",!0)])):p("v-if",!0)]),t[16]||(t[16]=ce('
Support Anonymous GitHub

A small team keeps this running. If it helps you, please consider contributing back \u2014 in code, ideas, or coffee.

',1))])}var tn={"partials/connections.htm":ol,"partials/signin.htm":sl,"partials/404.htm":nl,"partials/admin/conferences.htm":rl,"partials/admin/errors.htm":il,"partials/admin/overview.htm":al,"partials/admin/queues.htm":ll,"partials/admin/repositories.htm":dl,"partials/admin/user.htm":ul,"partials/admin/users.htm":cl,"partials/anonymize.htm":pl,"partials/anonymizePullRequest.htm":fl,"partials/claim.htm":hl,"partials/conference.htm":ml,"partials/conferences.htm":vl,"partials/dashboard.htm":gl,"partials/explorer.htm":yl,"partials/faq.htm":bl,"partials/gist.htm":wl,"partials/header.htm":kl,"partials/home.htm":El,"partials/loading.htm":Cl,"partials/newConference.htm":_l,"partials/pageView.htm":Sl,"partials/pr-dashboard.htm":Nl,"partials/profile.htm":Dl,"partials/pullRequest.htm":Rl,"partials/status.htm":Tl};var Nq={class:"ui-icon-definitions","aria-hidden":"true",focusable:"false"};function Al(e,t){return l(),d("svg",Nq,[...t[0]||(t[0]=[ce('',1)])])}function Ol(e,t){e==="partials/explorer.htm"&&(t.sidebarCollapsed=window.matchMedia?.("(max-width: 767px)").matches||!1),e==="partials/anonymize.htm"&&(t.prTabState={active:t.options.diff?"diff":"comments"},t.watchGroup(["options.diff","options.comments"],()=>{t.options[t.prTabState.active]||(t.prTabState.active=t.options.diff?"diff":t.options.comments?"comments":null)})),e==="partials/gist.htm"&&(t.tabState={active:t.details?.files?"files":"comments"}),["partials/conferences.htm","partials/conference.htm"].includes(e)&&(t.statusLabels={ready:"Ready",expired:"Expired",removed:"Removed"});let r={"partials/dashboard.htm":["filteredItems",()=>t.items,"itemFilter"],"partials/conferences.htm":["filteredConferences",()=>t.conferences,"conferenceFilter"],"partials/conference.htm":["filteredRepositories",()=>t.conference?.repositories,"repoFiler"],"partials/admin/repositories.htm":["filteredRepositories",()=>t.repositories,"repoFiler"],"partials/admin/user.htm":["filteredRepositories",()=>t.repositories,"repoFiler"],"partials/admin/users.htm":["filteredUsers",()=>t.users,"userFiler"],"partials/admin/conferences.htm":["filteredConferences",()=>t.conferences]}[e];if(r){let s=ot(()=>t.fmt.orderBy(t.fmt.filter(r[1](),t[r[2]]),t.orderBy));Object.defineProperty(t,r[0],{configurable:!0,get:()=>s.value})}}function Il(e=(...t)=>fetch(...t)){async function t(r,s,i,a={}){let u=new URL(s,window.location.href);for(let[g,w]of Object.entries(a.params||{}))if(w!=null)for(let h of Array.isArray(w)?w:[w])u.searchParams.append(g,typeof h=="object"?JSON.stringify(h):h);let f=new AbortController,m;a.timeout?.then?a.timeout.then(()=>f.abort()):a.timeout&&(m=setTimeout(()=>f.abort(),a.timeout));try{let g={Accept:"application/json, text/plain, */*",...a.headers},w=document.cookie.match(/(?:^|;\s*)XSRF-TOKEN=([^;]*)/);w&&u.origin===window.location.origin&&(g["X-XSRF-TOKEN"]=decodeURIComponent(w[1]));let h;i!==void 0&&(i instanceof FormData?h=i:(g["Content-Type"]||(g["Content-Type"]="application/json;charset=utf-8"),h=JSON.stringify(i)));let b=await e(u.href,{method:r,headers:g,body:h,credentials:"same-origin",signal:f.signal}),E=await b.text(),k=E;if(a.transformResponse)k=a.transformResponse(E);else if(E&&(/json/i.test(b.headers.get("content-type")||"")||/^[\[{]/.test(E.trim())))try{k=JSON.parse(E)}catch{}let R={data:k,status:b.status,headers:D=>b.headers.get(D)};if(!b.ok)throw R;return R}catch(g){throw g.name==="AbortError"?{status:-1,data:null}:g}finally{clearTimeout(m)}}let n={};for(let r of["get","delete","head"])n[r]=(s,i)=>t(r.toUpperCase(),s,void 0,i);for(let r of["post","put","patch"])n[r]=(s,i,a)=>t(r.toUpperCase(),s,i,a);return n}var Pl={resolve:e=>Promise.resolve(e),reject:e=>Promise.reject(e),all:e=>Promise.all(e),defer(){let e,t;return{promise:new Promise((r,s)=>{e=r,t=s}),resolve:e,reject:t}}};var Vl=function(e){function t(n){return n=n||{used:0,total:0},n.unlimited=!n.total,n.percent=n.unlimited?0:Math.min(100,n.used*100/n.total),n.level=n.unlimited?"unlimited":n.percent>=95?"danger":n.percent>=80?"warn":"ok",n}return{decorate:t,load:function(){return e.get("/api/user/quota").then(n=>{let r=n.data||{};return r.storage=t(r.storage),r.file=t(r.file),r.repository=t(r.repository),r})}}};var sr={};ed(sr,{bigNum:()=>Rq,date:()=>Uq,diff:()=>Pq,filter:()=>$q,humanFileSize:()=>Dq,humanTime:()=>Tq,limitTo:()=>Mq,number:()=>Vq,orderBy:()=>Lq,plural:()=>Fq,statusLabel:()=>Oq,statusMsg:()=>Iq,title:()=>Aq,uppercase:()=>qq});var Dq=e=>window.humanFileSize(e),Rq=(function(){return function(t){let n=Number(t)||0,r=Math.abs(n);return r<1e3?String(n):r<1e4?(n/1e3).toFixed(1).replace(/\.0$/,"")+"k":r<1e6?Math.round(n/1e3)+"k":r<1e7?(n/1e6).toFixed(1).replace(/\.0$/,"")+"M":Math.round(n/1e6)+"M"}})(),Tq=(function(){return function(t){if(!t)return"never";t instanceof Date&&(t=Math.round((Date.now()-t)/1e3)),(typeof t=="string"||typeof t=="number")&&(t=Math.round((Date.now()-new Date(t))/1e3));var n=t<0?"from now":"ago";if(Math.abs(t)>7200*24){let f=new Date;return f.setSeconds(f.getSeconds()-t),"on "+f.toLocaleDateString(void 0,{day:"numeric",month:"short",year:"numeric"})}t=Math.abs(t);for(var r=[t/60/60/24/365,t/60/60/24/30,t/60/60/24/7,t/60/60/24,t/60/60,t/60,t],s=["year","month","week","day","hour","minute","second"],i=0;i1&&(u+="s"),a>=1)return a+" "+u+" "+n}return"0 seconds "+n}})(),Aq=(function(){return function(e){if(!e)return e;e=e.toLowerCase();var t=e.split(" "),n=t.map(function(r){return r.charAt(0).toUpperCase()+r.substring(1,r.length)});return n.join(" ")}})(),Oq=(function(){var e={ready:"Ready",error:"Error",expired:"Expired",expiring:"Expiring",removed:"Removed",removing:"Removing",queue:"Queued",download:"Downloading",downloaded:"Downloaded",preparing:"Preparing",anonymizing:"Anonymizing"};return function(t){if(!t)return"";if(e[t])return e[t];var n=String(t).replace(/[_-]+/g," ").toLowerCase();return n.charAt(0).toUpperCase()+n.slice(1)}})(),Iq=(function(){var e={branch_not_found:"Branch not found on GitHub",repo_not_found:"Repository not found on GitHub",repository_not_found:"Repository not found on GitHub",repo_not_accessible:"Repository is not accessible with your token",pr_not_found:"Pull request not found on GitHub",gist_not_found:"Gist not found on GitHub",commit_not_found:"Commit not found on GitHub",repo_too_big:"Repository exceeds the size limit",quota_exceeded:"Storage quota exceeded",incomplete_record:"Incomplete record: missing identifier"};return function(t){if(!t)return t;var n=t.match(/^rate_limited:(\d+)$/);if(n){var r=Math.max(0,Math.ceil((parseInt(n[1],10)-Date.now())/1e3));if(r<=0)return"Rate limited \u2014 resuming soon";var s=Math.floor(r/60),i=r%60;return"Rate limited \u2014 retrying in "+(s>0?s+"m "+i+"s":i+"s")}if(e[t])return e[t];if(/^[a-z0-9]+(_[a-z0-9]+)+$/.test(t)){var a=t.replace(/_/g," ");return a.charAt(0).toUpperCase()+a.slice(1)}return t}})(),Pq=(function(e){let t=r=>r.replace(/&/g,"&").replace(//g,">");function n(r,s){if(!s)return;let i=s.newPath&&s.newPath!=="/dev/null"?s.newPath:s.oldPath||"",a=s.oldPath==="/dev/null"?"added":s.newPath==="/dev/null"?"deleted":s.oldPath&&s.newPath&&s.oldPath!==s.newPath?"renamed":"modified";if(r.push('
'),r.push('
'+t(i)+''+a+"
"),s.lines.length){r.push('');for(let u of s.lines)r.push('");r.push("
'+(u.oldNo||"")+''+(u.newNo||"")+''+(u.kind==="add"?"+":u.kind==="remove"?"-":u.kind==="hunk"?"@":"")+''+t(u.text)+"
")}r.push("
")}return function(r){if(!r)return r;let s=[],i=null,a=0,u=0,f=()=>(i||(i={oldPath:"",newPath:"",lines:[]}),i),m=()=>{i&&(i.lines.length||i.oldPath||i.newPath)&&(n(s,i),i=null)},g=r.split(` +`);for(let w=0;we});function Vq(e,t){return e==null?"":Number(e).toLocaleString(void 0,t==null?{}:{minimumFractionDigits:t,maximumFractionDigits:t})}function qq(e){return String(e??"").toUpperCase()}function Mq(e,t,n=0){return(e||[]).slice(n,n+t)}function $q(e,t){return Array.isArray(e)?typeof t=="function"?e.filter(t):e:[]}function Lq(e,t){if(!t)return e||[];let n=Array.isArray(t)?t:[t];return[...e||[]].sort((r,s)=>{for(let i of n){let a=i[0]==="-"?-1:1;i=i.replace(/^[+-]/,"");let u=i.split(".").reduce((m,g)=>m?.[g],r),f=i.split(".").reduce((m,g)=>m?.[g],s);if(typeof u=="string"&&(u=u.toLowerCase()),typeof f=="string"&&(f=f.toLowerCase()),u!==f)return(u==null?-1:f==null?1:ur[s])}function Fq(e,t){return(t?.[e]??t?.[e===1?"one":"other"]??"").replace(/\{\}/g,e??0)}var ql={ERRORS:{cache_busy:"Downloads are busy. Please try again shortly.",invalid_sort:"The selected sort order is invalid.",invalid_cursor:"This project page is no longer valid. Reload the list.",repository_changed:"The repository changed while processing. Please retry.",repository_job_cancelled:"The repository changed or was removed while processing.",storage_delete_failed:"Unable to remove cached files. Please try again later.",unknown_error:"Unknown error, contact the admin.",unreachable:"Anonymous GitHub is unreachable, contact the admin.",request_error:"Unable to download the file, check your connection or contact the admin.",not_found:"The requested resource could not be found.",not_connected:"You must be logged in to perform this action.",not_authorized:"You do not have permission to perform this action.",unable_to_connect_user:"Unable to connect your account. Please try again later.",user_not_found:"The requested user could not be found.",user_banned:"Your account has been banned. Contact the admin for more information.",repo_access_limited:"GitHub blocked access because the repository's organization restricts third-party OAuth apps. Ask an org owner to approve Anonymous GitHub under Settings \u2192 Third-party Access \u2192 OAuth app policy, or anonymize a personal fork instead.",repo_saml_enforcement:"The repository's organization enforces SAML single sign-on. Authorize your token for that organization (GitHub \u2192 Settings \u2192 Applications, or re-run the org's SSO sign-in), then retry. Alternatively, anonymize a personal fork.",repo_not_found:"The repository was not found on GitHub. Check the URL and spelling, make sure you are signed in to the account that can see it, and confirm the repo isn't hidden under an org that restricts third-party app access.",repo_empty:"The selected branch has no commits on GitHub. Push at least one commit, or pick a different branch, then retry.",repo_not_accessible:"Anonymous GitHub cannot access this repository. Verify the repository exists and that Anonymous GitHub has been authorized for the owning organization.",repository_archived:"This repository has been archived and its files are no longer available.",repository_expired:"The repository is expired.",invalid_status:"This action cannot be performed while the resource is in its current state.",repository_not_ready:"Anonymous GitHub is still processing the repository, it can take several minutes.",repository_not_accessible:"This repository is currently not accessible.",repo_is_updating:"Anonymous GitHub is still processing the repository, it can take several minutes.",invalid_repo:"The provided repository is not valid.",invalid_source_repository:"The repository source name is invalid; expected the form 'owner/name'.",repoId_not_defined:"A repository ID must be provided.",repoUrl_not_defined:"The repository URL needs to be defined.",source_not_provided:"A repository source must be provided.",github_rate_limit_exceeded:"GitHub temporarily blocked the request because we hit its API rate limit. Wait a few minutes and try again. If the problem persists and you contact GitHub Support, include the request ID and timestamp shown in GitHub's response (the 'X-GitHub-Request-Id' header).",rate_limited:"GitHub API rate limit reached. The repository will be available shortly \u2014 please wait a moment and refresh.",repoId_already_used:"The repository ID is already used.",invalid_repoId:"The format of the repository ID is invalid.",unsupported_source:"The repository source type is not supported.",branch_not_specified:"The branch is not specified.",branch_not_found:"The branch of the repository cannot be found.",commit_not_specified:"A commit must be specified.",commit_not_found:"The configured commit no longer exists in the source repository. It may have been force-pushed, rebased, or removed.",repo_renamed:"The source repository appears to have been renamed or moved on GitHub. Please refresh and try again \u2014 the cached name has been updated.",invalid_commit_format:"The commit hash format is invalid. It must be a hexadecimal string.",pull_request_not_found:"The requested pull request could not be found.",pull_request_expired:"This pull request has expired and is no longer available.",pull_request_not_ready:"This pull request is still being prepared. Please try again shortly.",pull_request_not_available:"This pull request is currently not available.",invalid_pullRequestId:"The pull request ID is invalid.",pullRequestId_already_used:"This pull request ID is already in use. Please choose a different one.",repository_not_specified:"A repository must be specified for this pull request.",pullRequestId_not_specified:"A pull request ID must be specified.",pullRequestId_is_not_a_number:"The source pull request ID must be a number.",options_not_provided:"Anonymization options are mandatory.",terms_not_specified:"Anonymization terms must be specified.",invalid_terms_format:"Terms are in an invalid format.",missing_content:"No content was provided to the anonymization preview.",unable_to_anonymize:"An error happened during the anonymization process. Please try later or report the issue.",non_supported_mode:"The selected anonymization mode is invalid, only download and stream are supported.",invalid_path:"The provided path is invalid or missing.",path_not_specified:"A file path must be specified.",path_not_defined:"The file path has not been resolved yet.",invalid_file_path:"The requested file path is not valid.",invalid_request:"The request is missing required fields or is malformed.",invalid_project_name:"Use a project name of up to 100 characters without line breaks or control characters.",no_file_selected:"Please select a file.",file_not_found:"The requested file is not found.",file_not_accessible:"The requested file is not accessible.",file_not_supported:"The file type is not supported. Anonymous GitHub cannot handle it.",file_too_big:"The file size exceeds the limit of Anonymous GitHub.",is_folder:"The path points to a folder.",folder_not_supported:"The path points to a folder. Please select a file.",unable_to_write_file:"Unable to write file on disk.",download_not_enabled:"Repository downloads are not enabled on this server.",unable_to_download:"The repository could not be downloaded. Please try again later.",s3_config_not_provided:"Object storage has not been configured on this server.",stats_unsupported:"Statistics are only supported in download mode.",branches_not_found:"The requested branch is not found.",readme_not_available:"No README for the repository is found.",page_not_supported_on_different_branch:"GitHub Pages is served from a different branch than the one selected. Pick the branch that GitHub Pages is configured to use.",page_not_activated:"GitHub Pages is not enabled on this repository. Enable it in the repository settings on GitHub before anonymizing.",is_removed:"This resource has been removed and is no longer available.",conf_name_missing:"A conference name is required.",conf_id_missing:"A conference ID is required.",conf_id_used:"This conference ID is already in use. Please choose a different one.",conf_start_date_missing:"A start date is required for the conference.",conf_end_date_missing:"An end date is required for the conference.",conf_start_date_invalid:"The start date must be before the end date.",conf_end_date_invalid:"The end date must be in the future.",invalid_plan:"The selected plan is not valid.",conference_not_found:"The requested conference could not be found.",conf_not_found:"The requested conference could not be found.",conf_not_activated:"The conference is not activated.",billing_missing:"Billing information is required for this plan.",billing_name_missing:"A billing name is required.",billing_email_missing:"A billing email is required.",billing_address_missing:"A billing address is required.",billing_city_missing:"A billing city is required.",billing_zip_missing:"A billing ZIP/postal code is required.",billing_country_missing:"A billing country is required.",queue_not_found:"The specified queue could not be found.",job_not_found:"The specified job could not be found in the queue.",error_retrying_job:"An error occurred while retrying the job.",gist_expired:"The gist is expired.",gist_not_ready:"Anonymous GitHub is still processing the gist, it can take several minutes.",gist_not_found:"The requested gist could not be found.",gist_not_available:"This gist is currently not available.",invalid_gistId:"The format of the gist ID is invalid.",gistId_not_specified:"A gist ID must be provided.",gistId_already_used:"The gist ID is already used.",missing_token:"An authentication token is required.",invalid_token:"The provided authentication token is invalid.",login_failed:"Login failed. Please try again.",server_error:"An unexpected server error occurred. Please try again later.",username_not_defined:"A username must be provided.",github_user_not_found:"The specified GitHub user could not be found.",cannot_coauthor_self:"You cannot add yourself as a co-author.",storage_write_size_mismatch:"The downloaded file was smaller than expected. The upstream source may have returned an incomplete response \u2014 please try again.",storage_read_error:"An error occurred while reading the file from storage \u2014 please try again.",upstream_error:"A temporary error occurred while fetching from GitHub \u2014 please try again.",token_expired:"Your GitHub access token has expired. Please log out and log in again to refresh it.",job_is_active:"This job is currently running \u2014 wait for it to finish or remove it first.",github_app_access_required:"Allow this repository on GitHub using the read-only access button, then retry. Organization access may require administrator approval.",github_app_reconnect_required:"Reconnect your GitHub App account to restore read-only access.",github_app_disabled:"New GitHub App connections are currently unavailable.",github_oauth_required:"Connect legacy GitHub OAuth to use this feature.",github_identity_mismatch:"Use the same GitHub account that you are signed in with here.",github_app_permissions_invalid:"The GitHub App must be configured with read-only permissions.",github_unavailable:"GitHub is temporarily unavailable. Please retry.",connection_changed:"The repository connection changed. Reload and try again.",repository_busy:"Wait for the repository operation to finish before changing its connection.",invalid_connection:"Select a supported GitHub connection.",github_oauth_disabled:"Legacy OAuth sign-in is currently disabled.",invalid_auth_state:"The authorization session expired. Please start again from Anonymous GitHub.",invalid_webhook_signature:"The webhook signature is invalid.",webhook_processing_failed:"Webhook processing failed. Retry the delivery.",github_app_authorization_cancelled:"GitHub authorization was cancelled.",github_account_link_required:"Verify your existing account with your previous GitHub connection. Future sign-ins will use the GitHub App.",github_app_refresh_busy:"GitHub credentials are being renewed. Please retry shortly.",github_grant_revocation_failed:"Unable to revoke the GitHub grant. Please retry.",another_login_required:"Connect and verify another sign-in method before disconnecting OAuth.",oauth_resources_remaining:"Some resources still require OAuth. Migrate or remove them before disconnecting.",invalid_github_path:"The GitHub repository path is invalid."},WARNINGS:{page_not_enabled_on_repo:"GitHub Pages is not enabled on this repository. Enable it in the repository's Settings \u2192 Pages on GitHub, then refresh.",page_branch_mismatch:"GitHub Pages on this repository is served from the '{{pageBranch}}' branch, but you selected '{{selectedBranch}}'. Switch the branch above to '{{pageBranch}}' to anonymize the Pages site.",folder_truncated:"This folder has more than 10,000 entries; only a partial listing is shown.",repo_truncated:"Some folders in this repository have too many files to be fully listed. Affected folders are marked with a warning icon.",submodules_not_included:"This repository uses git submodules. Submodule contents are not included in the anonymized repository and appear as empty folders."}};var Ml={name:"htmlDoc",props:["content","baseUrl","allowScripts"],setup(e){let t=et(null);return Vt(()=>{let r=[t.value][0];r.classList.add("html-doc");function s(){r.innerHTML="";let i=e.content;if(typeof i!="string")return;let a=document.createElement("iframe");a.className="html-doc-frame",a.setAttribute("title","Rendered HTML document");let u=["allow-popups","allow-popups-to-escape-sandbox"];e.allowScripts&&u.push("allow-scripts","allow-forms","allow-modals"),a.setAttribute("sandbox",u.join(" ")),a.setAttribute("referrerpolicy","no-referrer"),r.appendChild(a);let f="";e.baseUrl&&(f=''),a.srcdoc=f+i}je(()=>e.content,s,{immediate:!0}),je(()=>e.baseUrl,s,{immediate:!0}),je(()=>e.allowScripts,s,{immediate:!0})}),()=>ke("html-doc",{ref:t})}};var $l={name:"pdfviewer",props:["src"],setup(e){let t=et(null);return Vt(()=>{let n=[t.value],r=400,s=[.5,.75,1,1.25,1.5,2,3],i=1e3,a=n[0];a.classList.add("pdf-viewer");let u=null,f=[],m=!1,g=null,w=1,h=1,b=0,E=0,k=612/792,R=0,D=null,T=new Map,P=0;function H(M){let v=T.get(M);v&&(v.cancelled=!0,v.task?.cancel?.(),T.delete(M));let S=M.querySelector("canvas");S&&(S.width=0,S.height=0),M.innerHTML="",delete M.dataset.state}let q=document.createElement("div");q.className="pdf-toolbar";let U=document.createElement("div");U.className="pdf-pages",U.tabIndex=0,U.setAttribute("aria-label","PDF pages"),a.appendChild(q),a.appendChild(U);function ie(M,v,S){let V=document.createElement("button");return V.type="button",V.className="pdf-toolbar-btn",V.title=v,V.setAttribute("aria-label",v),V.innerHTML='',V.addEventListener("click",S),V}let re=ie("fa-chevron-up","Previous page",function(){_e(h-1)}),C=ie("fa-chevron-down","Next page",function(){_e(h+1)}),O=document.createElement("input");O.type="text",O.className="pdf-toolbar-page",O.setAttribute("aria-label","Page number"),O.title="Page number \u2014 type a page and press Enter",O.addEventListener("keydown",function(M){M.key==="Enter"&&(_e(parseInt(O.value,10)),O.blur())}),O.addEventListener("blur",function(){O.value=String(h)});let G=document.createElement("span");G.className="pdf-toolbar-count";let J=ie("fa-search-minus","Zoom out",function(){_(s[Math.max(0,pe()-1)])}),ee=ie("fa-search-plus","Zoom in",function(){_(s[Math.min(s.length-1,pe()+1)])}),Q=document.createElement("button");Q.type="button",Q.className="pdf-toolbar-btn pdf-toolbar-zoom",Q.title="Reset zoom to fit the width",Q.setAttribute("aria-label","Reset zoom to fit the width"),Q.addEventListener("click",function(){_(1)}),q.appendChild(re),q.appendChild(C);let oe=document.createElement("span");oe.className="pdf-toolbar-group",oe.appendChild(O),oe.appendChild(G),q.appendChild(oe);let ue=document.createElement("span");ue.className="pdf-toolbar-group pdf-toolbar-right",ue.appendChild(J),ue.appendChild(Q),ue.appendChild(ee),q.appendChild(ue);function pe(){let M=0;for(let v=0;v=M,Q.textContent=Math.round(w*100)+"%",J.disabled=pe()===0,ee.disabled=pe()===s.length-1}function Ie(M){let v=f[M-1];v&&(U.scrollTop+=v.getBoundingClientRect().top-U.getBoundingClientRect().top)}function _e(M){if(!u||isNaN(M))return;let v=Math.min(Math.max(1,M),u.numPages);f[v-1]&&(Ie(v),h=v,b=v,E=Date.now()+800,le(),Ue())}function Ae(){if(!f.length||Date.now(){}),D=null),g&&(clearTimeout(g),g=null),u&&(u.destroy(),u=null),f=[],h=1,U.innerHTML="",le()}function Ve(){U.innerHTML="";let M=document.createElement("div");M.className="pdf-viewer-error",M.textContent="This PDF could not be displayed.",U.appendChild(M)}function Se(){let M=Math.max(120,U.clientWidth-24);return Math.round(Math.min(M,i)*w)}function Le(M,v,S){let V=window.devicePixelRatio||1,F=M.getViewport({scale:1}),B=parseFloat(v.style.width);if(!B)return;let L=M.getViewport({scale:B/F.width*V}),W=document.createElement("canvas");return W.width=Math.floor(L.width),W.height=Math.floor(L.height),W.style.width=B+"px",W.style.height=Math.floor(L.height/V)+"px",v.innerHTML="",v.appendChild(W),v.style.height=W.style.height,S.task=M.render({canvasContext:W.getContext("2d"),viewport:L}),S.task.promise}function Ue(){if(!u)return;let M=R,v=U.getBoundingClientRect(),S=v.top-r,V=v.top+U.clientHeight+r,F=f.map((L,W)=>({slot:L,i:W,rect:L.getBoundingClientRect()})).filter(L=>L.rect.top<=V&&L.rect.bottom>=S).sort((L,W)=>Math.abs(L.rect.top-v.top)-Math.abs(W.rect.top-v.top)).slice(0,6),B=new Set(F.map(L=>L.slot));for(let L of T.keys())B.has(L)||H(L);for(let{slot:L,i:W}of F){if(L.dataset.state||P>=2)continue;let x={cancelled:!1,task:null};T.set(L,x),P++,L.dataset.state="rendering";let Z;u.getPage(W+1).then(K=>{if(Z=K,!(x.cancelled||M!==R))return Le(Z,L,x)}).then(()=>{x.cancelled||M!==R||(L.dataset.state="done",b&&Date.now(){!x.cancelled&&M===R&&(L.dataset.state="failed")}).finally(()=>{P--,Z?.cleanup?.(),u&&Ue()})}}function z(){m||(m=!0,window.requestAnimationFrame(function(){m=!1,Ae(),Ue()}))}function ne(){let M=!1;function v(){M||(M=!0,Ue())}window.requestAnimationFrame(v),window.setTimeout(v,50)}function te(){R++,f.forEach(H);let M=Se();f.forEach(function(v){delete v.dataset.state,v.innerHTML="",v.style.width=M+"px",v.style.height=Math.round(M/k)+"px"}),Ue()}function _(M){if(!u||!f.length||M===w)return;let v=h;w=M,le(),te(),_e(v)}function I(){u&&(g&&clearTimeout(g),g=setTimeout(function(){g=null,u&&f.length&&te()},250))}function j(M){if(Ee(),!M)return;let v=R;D=pdfjsLib.getDocument({url:M,isEvalSupported:!1,standardFontDataUrl:"/script/external/pdf-standard-fonts/",cMapUrl:"/script/external/pdf-cmaps/",cMapPacked:!0}),D.promise.then(function(S){if(v!==R){S.destroy();return}return u=S,u.getPage(1).then(function(V){if(v!==R)return;let F=V.getViewport({scale:1});F.width&&F.height&&(k=F.width/F.height);let B=Se();for(let L=1;L<=u.numPages;L++){let W=document.createElement("div");W.className="pdf-viewer-page",W.style.width=B+"px",W.style.height=Math.round(B/k)+"px",U.appendChild(W),f.push(W)}le(),ne()})}).catch(function(){v===R&&Ve()})}U.addEventListener("scroll",z,{passive:!0}),$(window).on("resize",I),le(),je(()=>e.src,j,{immediate:!0}),ro(function(){U.removeEventListener("scroll",z),$(window).off("resize",I),Ee()})}),()=>ke("pdfviewer",{ref:t})}};var Hq={key:0,class:"quota-row quota-usage"},jq={class:"quota-header"},Bq={class:"quota-label"},Gq={class:"project-type-svg","aria-hidden":"true"},Wq=["href"],Kq={key:0,class:"quota-percent"},Yq={key:1,class:"quota-unlimited-tag"},Jq={class:"quota-value"},Qq={key:0},Xq=["aria-label","aria-valuenow","aria-valuemax","aria-valuetext"],Zq={key:1,class:"quota-remaining"},xq={key:2,class:"quota-remaining quota-limit"};function Ll(e,t){return e.quota?(l(),d("div",Hq,[(l(),d(X,null,ae([{key:"repository",label:"Repositories",kind:"count",icon:"project-type-repo"},{key:"storage",label:"Storage",kind:"bytes",icon:"project-icon-storage"},{key:"file",label:"Files",kind:"count",icon:"project-icon-file"}],n=>o("div",{class:A(["quota-item","quota-"+e.quota[n.key].level]),key:n.key},[o("div",jq,[o("span",Bq,[(l(),d("svg",Gq,[o("use",{href:"#"+n.icon},null,8,Wq)])),y(c(n.label),1)]),e.quota[n.key].unlimited?p("v-if",!0):(l(),d("span",Kq,c(e.fmt.number(e.quota[n.key].percent,0))+"% used",1)),e.quota[n.key].unlimited?(l(),d("span",Yq,"Unlimited")):p("v-if",!0)]),o("div",Jq,[o("strong",null,c(e.formatAmount(e.quota[n.key].used,n.kind)),1),e.quota[n.key].unlimited?p("v-if",!0):(l(),d("span",Qq," / "+c(e.formatAmount(e.quota[n.key].total,n.kind)),1))]),e.quota[n.key].unlimited?p("v-if",!0):(l(),d("div",{key:0,class:A(["quota-track","quota-"+e.quota[n.key].level]),role:"progressbar","aria-valuemin":"0","aria-label":n.label+" quota","aria-valuenow":Math.min(e.quota[n.key].used,e.quota[n.key].total),"aria-valuemax":e.quota[n.key].total,"aria-valuetext":e.fmt.number(e.quota[n.key].percent,0)+"% used"},[e.quota[n?.key].unlimited?p("v-if",!0):(l(),d("div",{key:0,class:"quota-fill",style:Me({width:e.quota[n.key].percent+"%"})},null,4))],10,Xq)),!e.quota[n.key].unlimited&&e.quota[n.key].used=e.quota[n.key].total?(l(),d("p",xq,c(e.quota[n.key].used>e.quota[n.key].total?"Limit exceeded":"Limit reached"),1)):p("v-if",!0)],2)),64))])):p("v-if",!0)}var e8={props:["quota","fmt"],setup(e){return{formatAmount:(t,n)=>n==="bytes"?e.fmt.humanFileSize(t).replace(/([a-zA-Z]+)$/," $1"):e.fmt.number(t)}},render:Ll},t8=new Set(me),Fl={props:["content","terms","options"],setup(e){let t=et(null),n=()=>{t.value.innerHTML=renderMD(e.content||"",window.location.pathname+"/../")};return Vt(()=>{n(),je(()=>[e.content,e.terms,e.options],n,{deep:!0})}),()=>ke("markdown",{ref:t})}},o8={props:["file","terms","options"],setup(e){let t=et(null),n=()=>rt(()=>t.value?.querySelectorAll("pre code").forEach(r=>window.Prism?.highlightElement(r)));return Vt(n),je(()=>[e.file?.content,e.terms,e.options],n,{deep:!0}),()=>{let r=e.file||{},s=(r.filename||"").split(".").pop().toLowerCase();if(["md","markdown"].includes(s)||r.language==="Markdown")return ke("gist-file",{ref:t},ke(Fl,{content:r.content,terms:e.terms,options:e.options}));let i={js:"javascript",jsx:"javascript",ts:"javascript",typescript:"javascript",py:"python",html:"markup",xml:"markup",svg:"markup",sh:"bash"},a=(r.language||s||"none").toLowerCase();return ke("gist-file",{ref:t},ke("pre",{class:"line-numbers"},ke("code",{class:"language-"+(i[a]||a),key:r.content},r.content||"")))}}},s8={props:["file","content"],setup(e){let t=et(null),n=0,r,s=async()=>{let i=++n;r?.abort(),r=new AbortController;try{let a=e.content?JSON.parse(e.content):await fetch(e.file?.download_url||e.file,{signal:r.signal}).then(u=>{if(!u.ok)throw Error("Notebook request failed");return u.json()});if(await Jt("notebook"),i!==n)return;t.value.innerHTML=DOMPurify.sanitize(nb.parse(a).render()),t.value.querySelectorAll("pre code").forEach(u=>window.Prism?.highlightElement(u))}catch(a){i===n&&a.name!=="AbortError"&&(t.value.textContent="Unable to render the notebook.")}};return Vt(()=>{s(),je(()=>[e.file,e.content],s)}),ro(()=>{n++,r?.abort()}),()=>ke("notebook",{ref:t})}},n8={props:["stats"],setup(e){return()=>{let t=Object.entries(e.stats||{}).filter(([,r])=>r.code),n=t.reduce((r,[,s])=>r+s.code,0);return ke("loc",t.map(([r,s])=>ke("div",{class:"lang",title:`${r}: ${s.code.toLocaleString()} lines`,style:{width:s.code*100/n+"%",background:langColors[r]}})))}}},zl={Markdown:Fl,GistFile:o8,Notebook:s8,Loc:n8,HtmlDoc:Ml,QuotaUsage:e8,Pdfviewer:ii(async()=>(await Jt("pdf"),pdfjsLib.GlobalWorkerOptions.workerSrc="/script/external/pdf.worker.js",$l))},Hl={async mounted(e,{value:t}){e._editorValue=t;try{if(await lr(),e._editorDisposed)return;let n=e._editorValue,r=ace.edit(e);e._editor=r,r.setValue(String(n.content??""),-1),Ul(e,n.options),e._editorCleanup=n.options?.onLoad?.(r)}catch(n){e._editorDisposed||(e.textContent=n.message)}},updated(e,{value:t}){e._editorValue=t,e._editor&&(e._editor.getValue()!==String(t.content??"")&&e._editor.setValue(String(t.content??""),-1),Ul(e,t.options))},beforeUnmount(e){e._editorDisposed=!0,e._editorCleanup?.(),e._editor?.destroy()}};function Ul(e,t={}){let n=t8.has(t.mode)?t.mode:"text";e._editor.session.setMode("ace/mode/"+n),t.theme&&e._editor.setTheme("ace/theme/"+t.theme),e._editor.setReadOnly(t.readOnly!==!1)}var jl={mounted(e){if(!window.IntersectionObserver)return;let t=[...e.querySelectorAll('a[href^="#"]')],n=new Set,r=new IntersectionObserver(s=>{s.forEach(a=>a.isIntersecting?n.add(a.target.id):n.delete(a.target.id));let i=t.find(a=>n.has(a.hash.slice(1)));t.forEach(a=>a.classList.toggle("active",a===i))},{rootMargin:"-20% 0px -60% 0px",threshold:0});rt(()=>t.forEach(s=>{let i=document.getElementById(s.hash.slice(1));i&&r.observe(i)})),e._observer=r},beforeUnmount(e){e._observer?.disconnect()}};function r8(e){let t={children:[]},n=new Map([["",t]]);function r(s){if(n.has(s))return n.get(s);let i=s.lastIndexOf("/"),a=r(i<0?"":s.slice(0,i)),u={name:s.slice(i+1),children:[]};return n.set(s,u),a.children.push(u),u}for(let s of e||[]){let i=s.path?`${s.path}/${s.name}`:s.name;s.size==null?r(i):r(s.path||"").children.push({...s})}return t.children}var Bl={name:"FileTree",props:["file","parent","searchQuery","searchResults","page"],setup(e){let t=Pa(),n=et(null),r=He(Object.create(null)),s=null,i=ot(()=>r8(e.file)),a=()=>"/"+(Array.isArray(t.params.path)?t.params.path.join("/"):t.params.path||"");je(()=>[t.params.repoId,t.params.path],()=>{let h="";a().split("/").filter(Boolean).forEach(b=>{h+="/"+b,r[h]=!0})},{immediate:!0});let u=ot(()=>{if(!e.searchQuery||!e.searchResults)return null;let h=new Set,b=new Set;return e.searchResults.forEach(E=>{h.add(E.path?`${E.path}/${E.name}`:E.name);let k="";(E.path||"").split("/").filter(Boolean).forEach(R=>{k=k?k+"/"+R:R,b.add(k)})}),{files:h,folders:b}}),f=()=>[...n.value.querySelectorAll("li > a")],m=h=>{n.value.querySelector(".tree-focused")?.classList.remove("tree-focused"),h&&(s=h.dataset.path,h.classList.add("tree-focused"),h.scrollIntoView?.({block:"nearest"}),n.value.focus())};function g(h){let b=f(),E=n.value.querySelector(".tree-focused")||b[0],k=b.indexOf(E);if(!["ArrowDown","ArrowUp","ArrowRight","ArrowLeft","Enter"].includes(h.key)||(h.preventDefault(),h.key==="ArrowDown"&&m(b[(k+1)%b.length]),h.key==="ArrowUp"&&m(b[(k-1+b.length)%b.length]),!E))return;let R=E.closest("li");h.key==="ArrowRight"&&R.classList.contains("folder")&&(R.classList.contains("open")?m(R.querySelector(":scope > ul > li > a")):E.click()),h.key==="ArrowLeft"&&(R.classList.contains("folder")&&R.classList.contains("open")?E.click():m(R.parentElement.closest("li.folder")?.querySelector(":scope > a"))),h.key==="Enter"&&E.click()}function w(h,b=""){let E=[...h].sort((k,R)=>+!!R.children-+!!k.children||k.name.localeCompare(R.name));return ke("ul",E.flatMap(k=>{let R=k,D=R.name,T=(b+"/"+D).slice(1);if(u.value&&!u.value.files.has(T)&&!u.value.folders.has(T))return[];for(;R.children?.length===1;)R=R.children[0],D+="/"+R.name;let P=b+"/"+D,H=!!R.children,q=u.value?r[P]!==!1:!!r[P],U=H&&e.page?.options?.truncatedFolders?.includes(P.slice(1)),ie=e.page?.fileCounts?.[P.slice(1)]||0,re=ke("span",{class:H?"tree-icon-folder":"far fa-file tree-icon-file","aria-hidden":"true"},H?ke("svg",{viewBox:"0 0 14 12",focusable:"false"},ke("path",{d:"M1.5 10.5v-9h4l1.5 2h5.5v7z"})):null),C=ke("span",{class:"tree-name"},D),O=J=>{m(J.currentTarget),H&&(J.preventDefault(),r[P]=!q,r[P]&&!R.children.length&&e.page.getFiles(P.slice(1)),rt(()=>m(f().find(ee=>ee.dataset.path===s))))},G=ke("a",{"data-path":P,href:H?void 0:`/r/${encodeURIComponent(t.params.repoId)}${encodePathForUrl(P)}`,class:{"tree-focused":s===P},onClick:O},[H?ke("span",{class:"tree-toggle"}):b?ke("span",{class:"tree-spacer"}):null,re,C,U?ke("span",{class:"truncated-warning",title:e.page.fmt.translate("WARNINGS.folder_truncated")},ke("i",{class:"fas fa-exclamation-triangle"})):null,H&&ie?ke("span",{class:"tree-count"},ie):null]);return ke("li",{key:P,class:{file:!0,folder:H,open:q,active:a()===P,truncated:U},title:H?"":`Size: ${humanFileSize(R.size||0)}`},[G,H&&q?w(R.children,P):null])}))}return()=>ke("tree",{ref:n,tabindex:0,onKeydown:g},e.file?.length?u.value?.files.size===0?ke("div",{class:"tree-search-empty"},"No files found"):w(i.value):"Empty repository")}};function Wl(){return He({errors:{},dirty:!1,touched:!1,submitted:!1,get invalid(){return Object.values(this.errors).some(Boolean)},setValidity(e,t){this.errors[e]=!t},setDirty(){this.dirty=!0}})}function Kl(e,t){if(!e[t]){let n=Wl();Object.defineProperty(n,"invalid",{get(){return Object.values(n.errors).some(Boolean)||Object.keys(n).some(r=>r!=="invalid"&&n[r]&&typeof n[r]=="object"&&n[r].invalid)}}),e[t]=n}return e[t]}var Yl={beforeMount(e,{value:t}){e._formState=Kl(t,e.name),e.addEventListener("submit",n=>n.preventDefault())}};function i8(e){return e instanceof Date?isNaN(e)?"":`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`:e||""}function Gl(e){let t=e._field.binding.value;e.type==="checkbox"?e.checked=!!t:e.type==="radio"?e.checked=t==(e._value??e.value):e._field.timer||(e.value=e.type==="date"?i8(t):t??""),nr(e)}function nr(e){let t=e._field.validation;if(!t)return;let n=e.validity;for(let[r,s]of Object.entries({required:n.valueMissing,pattern:n.patternMismatch,min:n.rangeUnderflow,max:n.rangeOverflow,date:n.badInput,email:n.typeMismatch&&e.type==="email",url:n.typeMismatch&&e.type==="url"}))t.setValidity(r,e.disabled||!s)}var Jl={beforeMount(e,{value:t}){var a;let n=t.form&&Kl(t.state,t.form),r=n&&e.name?n[a=e.name]||(n[a]=Wl()):null;e._field={binding:t,validation:r,timer:null};let s=()=>{clearTimeout(e._field.timer),e._field.timer=null;let u=e._field.binding,f=e.type==="checkbox"?e.checked:e._value??e.value;if(!(e.type==="radio"&&!e.checked)){if((e.type==="number"||e.type==="range")&&(f=e.value===""?null:Number(e.value)),e.type==="date"&&(f=e.value?new Date(e.value+"T00:00:00"):null),r){r.setDirty();for(let m of Object.keys(r.errors))r.setValidity(m,!0)}u.set(f),nr(e),u.change?.()}};e._field.commit=s;let i=u=>{let f=e._field.binding.options?.debounce||0,m=typeof f=="number"?f:f[u.type]??f.default??0;clearTimeout(e._field.timer),m?e._field.timer=setTimeout(s,m):s()};e.addEventListener(e.tagName==="SELECT"||["checkbox","radio","date"].includes(e.type)?"change":"input",i),e.addEventListener("blur",()=>{r&&(r.touched=!0),e._field.timer&&s()})},mounted:Gl,updated(e,{value:t}){e._field.binding=t,Gl(e)},beforeUnmount(e){clearTimeout(e._field.timer);let{binding:t,validation:n}=e._field,r=t.form&&t.state[t.form];r&&r[e.name]===n&&delete r[e.name]}};function Ql(e,t){let n=e.target.closest("form");if(n?._formState&&(n._formState.submitted=!0),n?.querySelectorAll("input, select, textarea").forEach(r=>{r._field?.timer&&r._field.commit(),r._field&&nr(r)}),n&&!n.checkValidity()){let r=n.querySelector(":invalid");r?.scrollIntoView?.({block:"center"}),r?.focus(),n.reportValidity();return}return t()}var Xl=Symbol("session"),a8=/^\/(w|api|github)(\/|$)/;function Zl(e,t={}){let n=e?.split(".").reduce((r,s)=>r?.[s],ql);return String(n??e??"").replace(/{{\s*([^}]+?)\s*}}/g,(r,s)=>t[s]??"")}var l8={...sr,translate:Zl};function d8(e){if(e==null||e==="")return e;try{let t=new URL(e,window.location.href);return["http:","https:","mailto:","tel:","blob:"].includes(t.protocol)?e:void 0}catch{return}}function u8(e="#app",t={}){!t.history&&window.location.pathname==="/"&&/^#!\/r\/[^/?#]+/.test(window.location.hash)&&window.history.replaceState(window.history.state,"",window.location.hash.slice(2));let n=new Map,r=Il(t.fetch),s,i;function a(){let m=ct(),g={url(h){return h===void 0?i.currentRoute.value.fullPath:(i.push(h),g)},path(){return i.currentRoute.value.path},search(){return i.currentRoute.value.query}},w=new Proxy({},{get(h,b){let E=i.currentRoute.value.params[b];return Array.isArray(E)?E.join("/"):E}});return{http:r,...m,location:g,params:w,window,promises:Pl,html:{trustAsHtml:h=>h},translate:(h,b)=>Promise.resolve(Zl(h,b)),quotaService:Vl(r)}}function u(m){return{name:m.template,setup(){let g=xn(ut(Xl),n);m.setup(g,a()),Ol(m.template,g);let w=[];return()=>tn[m.template](g,w)}}}i=Ia({history:t.history||Ta(),routes:tl.map(m=>m.redirect?m:{path:m.path,component:u(m),meta:{title:m.title,preserveExplorer:m.preserveExplorer}})});let f=Qi({setup(){s=xn(null,n),s.fmt=l8,s.window=window,s.Math=Math,s.sanitize=h=>DOMPurify.sanitize(h??""),s.submitForm=Ql,s.safeUrl=d8;let m=a();qa(s,m.http,m.location,m.timeout),no(Xl,s),je(()=>s.title,h=>{document.title=h||"Anonymous GitHub"});let g=[],w=h=>{let b=h.target.closest?.("a[href]");if(h.defaultPrevented||h.button!==0||h.metaKey||h.ctrlKey||h.shiftKey||h.altKey||!b||b.hasAttribute("download")||b.target&&b.target!=="_self"||b.dataset.toggle||b.getAttribute("href").startsWith("#"))return;let k=new URL(b.href,window.location.href);k.origin!==window.location.origin||a8.test(k.pathname)||(h.preventDefault(),i.push(k.pathname+k.search+k.hash),$("#navbarSupportedContent.show").collapse("hide"))};return document.addEventListener("click",w),ro(()=>document.removeEventListener("click",w)),()=>[Al(s,[]),ke("header",{class:"app-header"},tn["partials/header.htm"](s,g)),ke("main",{class:"app-view align-items-stretch w-100"},ke(Zn,null,{default:({Component:h,route:b})=>h?ke(h,{key:b.meta.preserveExplorer?b.matched[0]?.path:b.path}):null})),ke("div",{class:"position-fixed p-3",style:{zIndex:999999999,right:0,bottom:0}},s.toasts.map((h,b)=>ke("div",{class:"toast show",role:"alert","aria-live":"assertive","aria-atomic":"true",key:b},[ke("div",{class:"toast-header"},[ke("strong",{class:"mr-auto"},h.title),ke("button",{type:"button",class:"ml-2 mb-1 close","aria-label":"Close",onClick:()=>s.removeToast(h)},"\xD7")]),ke("div",{class:"toast-body"},h.body)])))]}});for(let[m,g]of Object.entries(zl))f.component(m,g);return f.component("Tree",Bl),f.component("PartialView",{props:["name","state"],setup(m){let g=[];return()=>tn[m.name](m.state,g)}}),f.directive("field",Jl),f.directive("form",Yl),f.directive("code-editor",Hl),f.directive("paper-scrollspy",jl),f.use(i),i.beforeEach(async m=>{s?.emit("routeLeave"),/^\/(r|repository|anonymize|pull-request-anonymize|gist-anonymize|pr|gist)(\/|$)/.test(m.path)&&await Jt("markdown"),/^\/(r|repository)\//.test(m.path)&&await Jt("org")}),i.afterEach(m=>{if(!s)return;s.title=m.meta.title,s.emit("routeChange",{title:m.meta.title}),s.emit("routeUpdate",{title:m.meta.title});let g=document.querySelector(".app-view");!m.meta.preserveExplorer&&g&&(g.scrollTop=0)}),f.mount(e),{app:f,router:i,state:s}}document.querySelector("#app")&&(window.anonymousApp=u8());})(); /*! Bundled license information: @vue/shared/dist/shared.esm-bundler.js: diff --git a/scripts/performance-benchmark.js b/scripts/performance-benchmark.js new file mode 100644 index 0000000..b6666d7 --- /dev/null +++ b/scripts/performance-benchmark.js @@ -0,0 +1,79 @@ +const { performance, monitorEventLoopDelay } = require("node:perf_hooks"); +const { strict: assert } = require("node:assert"); +const { Readable, Writable } = require("node:stream"); +const { pipeline } = require("node:stream/promises"); +const { setTimeout: delay } = require("node:timers/promises"); +const { setInterval, clearInterval } = require("node:timers"); +require("ts-node/register/transpile-only"); +const { compileTerms, anonymizePath, anonymizePathCompiled, AnonymizeTransformer } = require("../src/core/anonymize-utils"); +const Repository = require("../src/core/Repository").default; +const { closeCacheRedis } = require("../src/core/cache-coordination"); +const median = numbers => [...numbers].sort((a, b) => a - b)[Math.floor(numbers.length / 2)]; +function originalSearch(files, q) { + const folders = new Set(); + for (const file of files) { + let accumulated = ""; + for (const segment of file.path.split("/")) { + accumulated = accumulated ? `${accumulated}/${segment}` : segment; + if (segment.toLowerCase().includes(q)) folders.add(accumulated); + } + } + return files.filter(file => { + if (file.name.toLowerCase().includes(q)) return true; + const fullPath = `${file.path}/${file.name}`; + let found = false; + folders.forEach(folder => { if (fullPath.startsWith(folder + "/") || fullPath === folder) found = true; }); + return found; + }).slice(0, 500); +} +async function benchmark() { + const results = []; + if (!process.argv.includes("--memory-only")) { + for (const count of [1000, 5000, 10000, 100000]) { + const files = Array.from({ length: count }, (_, i) => ({ name: "data.txt", path: `folder-hit-${i}`, size: 10 })); + const repo = { anonymizedFiles: async () => files }; + const old = [], current = []; + for (let repeat = 0; repeat < 3; repeat++) { + const started = performance.now(); + const actual = await Repository.prototype.searchFiles.call(repo, "hit"); + current.push(performance.now() - started); + if (count <= 10000) { + const baseline = performance.now(); + const expected = originalSearch(files, "hit"); + old.push(performance.now() - baseline); assert.deepEqual(actual, expected); + } + } + results.push({ case: "search", files: count, medianMs: median(current), baselineMs: old.length ? median(old) : null, + speedup: old.length ? median(old) / median(current) : null }); + } + const terms = ["secret=>hidden", "Researcher", "University"]; + const paths = Array.from({ length: 10000 }, (_, i) => `src/secret/file${i}.ts`), old = [], current = []; + for (let repeat = 0; repeat < 3; repeat++) { + let started = performance.now(); const expected = paths.map(p => anonymizePath(p, terms)); old.push(performance.now() - started); + started = performance.now(); const compiled = compileTerms(terms); const actual = paths.map(p => anonymizePathCompiled(p, compiled)); current.push(performance.now() - started); + assert.deepEqual(actual, expected); + } + results.push({ case: "compile-once paths", files: paths.length, medianMs: median(current), baselineMs: median(old), speedup: median(old) / median(current) }); + } + if (process.argv.includes("--memory") || process.argv.includes("--memory-only")) { + const size = Number(process.env.PERF_FILE_MIB) || 48, count = Number(process.env.PERF_CONCURRENCY) || 4; + const before = process.memoryUsage().rss; + let peak = before, output = 0; + const timer = setInterval(() => { peak = Math.max(peak, process.memoryUsage().rss); }, 20); + const histogram = monitorEventLoopDelay({ resolution: 10 }); histogram.enable(); + await delay(30); + const started = performance.now(); + await Promise.all(Array.from({ length: count }, (_, i) => pipeline( + Readable.from((async function* () { for (let chunk = 0; chunk < size * 16; chunk++) yield Buffer.alloc(65536, 65); })()), + new AnonymizeTransformer({ filePath: `memory-${i}.txt`, terms: ["Alice"], cacheGeneration: String(Date.now()) }), + new Writable({ write(chunk, _encoding, callback) { output += chunk.length; callback(); } }) + ))); + histogram.disable(); clearInterval(timer); + results.push({ case: "large text", concurrent: count, fileMiB: size, elapsedMs: performance.now() - started, + outputMiB: output / 1048576, peakRssMiB: peak / 1048576, rssIncreaseMiB: (peak - before) / 1048576, + eventLoopP95Ms: histogram.percentile(95) / 1e6, eventLoopMaxMs: histogram.max / 1e6 }); + } + await closeCacheRedis(); + console.log(JSON.stringify({ node: process.version, results }, null, 2)); +} +benchmark().catch(error => { console.error(error); process.exitCode = 1; }); diff --git a/scripts/performance-browser.js b/scripts/performance-browser.js new file mode 100644 index 0000000..f75cfbe --- /dev/null +++ b/scripts/performance-browser.js @@ -0,0 +1,60 @@ +// Local fixture server for resource checks in the collaborative browser. +const express = require("express"); +const fs = require("node:fs"); +const path = require("node:path"); +const app = express(); +const root = path.resolve("public"); +const files = Array.from({ length: 20 }, (_, i) => ({ name: `file${i}.js`, path: "", sha: "1", size: 30 })); +files.push({ name: "long.pdf", path: "", sha: "1", size: 10000 }); +function pdf(count) { + const objects = ["<< /Type /Catalog /Pages 2 0 R >>", "", "<< /Type /Font /Subtype /Type1 /BaseFont /Helvetica >>"]; + const kids = []; + for (let i = 0; i < count; i++) { + const page = objects.length + 1, content = page + 1; + kids.push(`${page} 0 R`); + objects.push(`<< /Type /Page /Parent 2 0 R /MediaBox [0 0 612 792] /Resources << /Font << /F1 3 0 R >> >> /Contents ${content} 0 R >>`); + const text = `BT /F1 24 Tf 72 720 Td (Performance fixture page ${i + 1}) Tj ET`; + objects.push(`<< /Length ${text.length} >>\nstream\n${text}\nendstream`); + } + objects[1] = `<< /Type /Pages /Kids [${kids.join(" ")}] /Count ${count} >>`; + let output = "%PDF-1.4\n", offsets = [0]; + objects.forEach((object, i) => { offsets.push(Buffer.byteLength(output)); output += `${i + 1} 0 obj\n${object}\nendobj\n`; }); + const xref = Buffer.byteLength(output); + output += `xref\n0 ${objects.length + 1}\n0000000000 65535 f \n`; + output += offsets.slice(1).map(offset => String(offset).padStart(10, "0") + " 00000 n \n").join(""); + output += `trailer\n<< /Size ${objects.length + 1} /Root 1 0 R >>\nstartxref\n${xref}\n%%EOF\n`; + return Buffer.from(output); +} +const document = pdf(100); +app.use(express.json()); +app.get("/api/user", (_req, res) => res.json({ username: "perf-user" })); +app.get("/api/user/quota", (_req, res) => res.json({ storage: { used: 0, total: 1000000 }, file: { used: 0, total: 0 }, repository: { used: 150, total: 200 } })); +app.get("/api/user/dashboard", (req, res) => { + let rows = Array.from({ length: 150 }, (_, i) => ({ repoId: `project-${String(i).padStart(3, "0")}`, _type: "repo", status: i % 10 ? "ready" : "error", source: { fullName: `owner/project-${i}` }, pageView: i, options: { terms: [], expirationMode: "never" } })); + const total = rows.length; + if (req.query.q) rows = rows.filter(row => row.repoId.includes(req.query.q)); + if (req.query.type && !["all", "repo"].includes(req.query.type)) rows = []; + if (req.query.statuses) rows = rows.filter(row => req.query.statuses.split(",").includes(row.status)); + if (req.query.attention === "true") rows = rows.filter(row => row.status === "error"); + const offset = Number(req.query.cursor) || 0; + res.json({ items: rows.slice(offset, offset + 50), cursor: offset + 50 < rows.length ? String(offset + 50) : null, total, filtered: rows.length, attention: 15 }); +}); +app.get("/api/repo/perf/options", (_req, res) => res.json({ status: "ready", terms: [], image: true, pdf: true, notebook: true, lastUpdateDate: 0 })); +app.get("/api/repo/perf/files/", (_req, res) => res.json(files)); +app.get("/api/repo/perf/files/counts", (_req, res) => res.json({ "": files.length })); +app.get("/api/repo/perf/file/long.pdf", (_req, res) => res.type("pdf").send(document)); +app.get("/api/repo/perf/file/:filename", (req, res) => res.type("text/plain").send(`// ${req.params.filename}\nconst value = 1;`)); +app.use("/api", (_req, res) => res.json({})); +app.use((req, _res, next) => { req.url = req.url.replace(/\.[a-f0-9]{10}\.min\./, ".min."); next(); }); +app.use(express.static(root, { index: false })); +const html = fs.readFileSync(path.join(root, "index.html"), "utf8") + .replace("__CORE_JS__", "core.min.js").replace("__VENDOR_JS__", "vendor.min.js") + .replace("__MERMAID_JS__", "mermaid.min.js").replace("__ALL_CSS__", "all.min.css") + .replace('