Multi Provider FE content
This commit is contained in:
parent
db0b71c9ad
commit
e99bb58453
@ -1,4 +1,4 @@
|
||||
{"type":"meta","next_id":{"DSC":66,"AGD":69,"DEC":40,"PLN":103,"LSN":55,"CLSN":1}}
|
||||
{"type":"meta","next_id":{"DSC":66,"AGD":69,"DEC":41,"PLN":107,"LSN":55,"CLSN":1}}
|
||||
{"type":"discussion","id":"DSC-0065","status":"open","ticket":"multi-frontend-avoid-premature-abstractions","title":"Evitar abstracoes prematuras na preparacao multi-frontend","created_at":"2026-07-15","updated_at":"2026-07-15","tags":["compiler","compiler-general","studio","frontend","architecture","multi-frontend","simplicity"],"agendas":[{"id":"AGD-0068","file":"AGD-0068-multi-frontend-avoid-premature-abstractions.md","status":"open","created_at":"2026-07-15","updated_at":"2026-07-15"}],"decisions":[],"plans":[],"lessons":[]}
|
||||
{"type":"discussion","id":"DSC-0064","status":"open","ticket":"multi-frontend-architectural-tests","title":"Testes arquiteturais para fronteiras multi-frontend","created_at":"2026-07-15","updated_at":"2026-07-15","tags":["compiler","compiler-general","studio","frontend","architecture","tests","multi-frontend"],"agendas":[{"id":"AGD-0067","file":"AGD-0067-multi-frontend-architectural-tests.md","status":"open","created_at":"2026-07-15","updated_at":"2026-07-15"}],"decisions":[],"plans":[],"lessons":[]}
|
||||
{"type":"discussion","id":"DSC-0063","status":"open","ticket":"multi-frontend-synthetic-test-frontend","title":"Frontend sintetico de teste para provar neutralidade do pipeline","created_at":"2026-07-15","updated_at":"2026-07-15","tags":["compiler","compiler-general","frontend","tests","backend","multi-frontend"],"agendas":[{"id":"AGD-0066","file":"AGD-0066-multi-frontend-synthetic-test-frontend.md","status":"open","created_at":"2026-07-15","updated_at":"2026-07-15"}],"decisions":[],"plans":[],"lessons":[]}
|
||||
@ -10,7 +10,7 @@
|
||||
{"type":"discussion","id":"DSC-0057","status":"open","ticket":"multi-frontend-frontend-backend-contract","title":"Estabilizar contrato entre frontend e backend comum","created_at":"2026-07-15","updated_at":"2026-07-15","tags":["compiler","compiler-general","compiler-pbs","ir","backend","multi-frontend"],"agendas":[{"id":"AGD-0060","file":"AGD-0060-multi-frontend-frontend-backend-contract.md","status":"open","created_at":"2026-07-15","updated_at":"2026-07-15"}],"decisions":[],"plans":[],"lessons":[]}
|
||||
{"type":"discussion","id":"DSC-0056","status":"open","ticket":"multi-frontend-remove-pbs-branches","title":"Remover verificacoes explicitas de PBS do codigo comum","created_at":"2026-07-15","updated_at":"2026-07-15","tags":["compiler","compiler-general","compiler-pbs","studio","frontend","coupling","multi-frontend"],"agendas":[{"id":"AGD-0059","file":"AGD-0059-multi-frontend-remove-pbs-branches.md","status":"open","created_at":"2026-07-15","updated_at":"2026-07-15"}],"decisions":[],"plans":[],"lessons":[]}
|
||||
{"type":"discussion","id":"DSC-0055","status":"open","ticket":"multi-frontend-compiler-vs-language-services","title":"Separar compilacao de servicos editoriais de frontend","created_at":"2026-07-15","updated_at":"2026-07-15","tags":["compiler","compiler-general","studio","lsp","editor","frontend","multi-frontend"],"agendas":[{"id":"AGD-0058","file":"AGD-0058-multi-frontend-compiler-vs-language-services.md","status":"open","created_at":"2026-07-15","updated_at":"2026-07-15"}],"decisions":[],"plans":[],"lessons":[]}
|
||||
{"type":"discussion","id":"DSC-0054","status":"open","ticket":"multi-frontend-provider-contract","title":"Introduzir provider completo de frontend","created_at":"2026-07-15","updated_at":"2026-07-15","tags":["compiler","compiler-general","studio","frontend","registry","multi-frontend"],"agendas":[{"id":"AGD-0057","file":"AGD-0057-multi-frontend-provider-contract.md","status":"open","created_at":"2026-07-15","updated_at":"2026-07-15"}],"decisions":[],"plans":[],"lessons":[]}
|
||||
{"type":"discussion","id":"DSC-0054","status":"in_progress","ticket":"multi-frontend-provider-contract","title":"Introduzir provider completo de frontend","created_at":"2026-07-15","updated_at":"2026-07-15","tags":["compiler","compiler-general","studio","frontend","registry","multi-frontend"],"agendas":[{"id":"AGD-0057","file":"AGD-0057-multi-frontend-provider-contract.md","status":"accepted","created_at":"2026-07-15","updated_at":"2026-07-15"}],"decisions":[{"id":"DEC-0040","file":"DEC-0040-frontendprovider-explicito-como-contrato-de-frontend.md","status":"accepted","created_at":"2026-07-15","updated_at":"2026-07-15","ref_agenda":"AGD-0057"}],"plans":[{"id":"PLN-0103","file":"PLN-0103-specify-frontend-provider-and-registry-contract.md","status":"open","created_at":"2026-07-15","updated_at":"2026-07-15","ref_decisions":["DEC-0040"]},{"id":"PLN-0104","file":"PLN-0104-introduce-frontendprovider-registry-api.md","status":"open","created_at":"2026-07-15","updated_at":"2026-07-15","ref_decisions":["DEC-0040"]},{"id":"PLN-0105","file":"PLN-0105-wrap-pbs-frontend-as-explicit-provider.md","status":"open","created_at":"2026-07-15","updated_at":"2026-07-15","ref_decisions":["DEC-0040"]},{"id":"PLN-0106","file":"PLN-0106-migrate-common-consumers-to-provider-lookup.md","status":"open","created_at":"2026-07-15","updated_at":"2026-07-15","ref_decisions":["DEC-0040"]}],"lessons":[]}
|
||||
{"type":"discussion","id":"DSC-0053","status":"open","ticket":"pbs-lsp-call-and-type-hierarchy","title":"PBS LSP Call and Type Hierarchy","created_at":"2026-07-15","updated_at":"2026-07-15","tags":["studio","lsp","vscode","compiler-pbs","editor","call-hierarchy","type-hierarchy"],"agendas":[{"id":"AGD-0056","file":"AGD-0056-pbs-lsp-call-and-type-hierarchy.md","status":"open","created_at":"2026-07-15","updated_at":"2026-07-15"}],"decisions":[],"plans":[],"lessons":[]}
|
||||
{"type":"discussion","id":"DSC-0052","status":"open","ticket":"pbs-lsp-document-links","title":"PBS LSP Document Links","created_at":"2026-07-15","updated_at":"2026-07-15","tags":["studio","lsp","vscode","compiler-pbs","editor","document-links","imports"],"agendas":[{"id":"AGD-0055","file":"AGD-0055-pbs-lsp-document-links.md","status":"open","created_at":"2026-07-15","updated_at":"2026-07-15"}],"decisions":[],"plans":[],"lessons":[]}
|
||||
{"type":"discussion","id":"DSC-0051","status":"open","ticket":"pbs-lsp-diagnostics-ux","title":"PBS LSP Diagnostics UX","created_at":"2026-07-15","updated_at":"2026-07-15","tags":["studio","lsp","vscode","compiler-pbs","editor","diagnostics","ux"],"agendas":[{"id":"AGD-0054","file":"AGD-0054-pbs-lsp-diagnostics-ux.md","status":"open","created_at":"2026-07-15","updated_at":"2026-07-15"}],"decisions":[],"plans":[],"lessons":[]}
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
id: AGD-0057
|
||||
ticket: multi-frontend-provider-contract
|
||||
title: Introduzir provider completo de frontend
|
||||
status: open
|
||||
status: accepted
|
||||
created: 2026-07-15
|
||||
resolved:
|
||||
decision:
|
||||
@ -77,3 +77,18 @@ Comecar por uma auditoria de chamadas atuais ao registry e de instanciacoes dire
|
||||
- Responsabilidades minimas do provider.
|
||||
- Onde fica o composition root autorizado a registrar PBS.
|
||||
|
||||
## Resolucao aceita
|
||||
|
||||
O contrato deve ser introduzido como `FrontendProvider`.
|
||||
|
||||
Responsabilidades minimas:
|
||||
|
||||
- expor a especificacao do frontend por `specification()`;
|
||||
- expor o compilador ou fase de compilacao equivalente por `compiler()`;
|
||||
- expor servicos editoriais por `languageService()` somente como capacidade opcional, quando necessaria para o Studio.
|
||||
|
||||
O contrato nao deve incluir descoberta dinamica de plugins, reflection, classpath scanning ou carregamento externo de JARs.
|
||||
|
||||
O registro inicial deve continuar explicito no composition root da aplicacao, com `prometeu-app/src/main/java/p/studio/AppContainer.java` como ponto preferencial de composicao. Codigo comum deve consumir o provider via `registry.require(languageId)` e nao deve instanciar diretamente classes PBS, incluindo `PBSFrontendPhaseService`.
|
||||
|
||||
PBS permanece o unico provider inicial. Nenhum frontend real novo deve ser criado por esta frente.
|
||||
|
||||
@ -0,0 +1,92 @@
|
||||
---
|
||||
id: DEC-0040
|
||||
ticket: multi-frontend-provider-contract
|
||||
title: FrontendProvider explicito como contrato de frontend
|
||||
status: accepted
|
||||
created: 2026-07-15
|
||||
ref_agenda: AGD-0057
|
||||
tags: [compiler, compiler-general, studio, frontend, registry, multi-frontend]
|
||||
---
|
||||
|
||||
## Context
|
||||
|
||||
This decision belongs to domain owner `compiler/general`, with impact on `studio`.
|
||||
|
||||
The repository already has `FrontendRegistryService`, `FrontendSpec`, `FrontendPhaseService`, and `languageId` based selection. Those surfaces are enough to keep PBS working, but common compiler and Studio code still has places where PBS-specific classes or assumptions can leak into composition and consumption paths.
|
||||
|
||||
The multi-frontend direction requires a stable provider boundary before removing PBS-specific branches from common code. The boundary must make frontend registration explicit without turning the Studio or compiler into a dynamic plugin platform.
|
||||
|
||||
This decision resolves `AGD-0057`.
|
||||
|
||||
## Decision
|
||||
|
||||
The repository MUST introduce an explicit `FrontendProvider` contract as the common frontend registration unit.
|
||||
|
||||
`FrontendProvider` MUST expose the following minimum responsibilities:
|
||||
|
||||
- `specification()`: returns the frontend specification, including its stable `languageId`;
|
||||
- `compiler()`: returns the compiler-facing frontend service or phase equivalent used by the build pipeline;
|
||||
- `languageService()`: returns an optional editor-facing language service capability for Studio consumers.
|
||||
|
||||
`languageService()` MUST be optional. A frontend that can compile but does not provide editor services MUST remain a valid provider.
|
||||
|
||||
`FrontendRegistryService` MUST resolve providers by `languageId`. The common consumption shape SHOULD become `provider = registry.require(languageId)` or an equivalent explicit lookup that fails clearly for unknown languages.
|
||||
|
||||
PBS MUST be registered as the only initial real provider through a `PBSFrontendProvider` or equivalent concrete provider object. This work MUST NOT introduce another real frontend.
|
||||
|
||||
Provider registration MUST remain explicit in the application composition root. `prometeu-app/src/main/java/p/studio/AppContainer.java` is the preferred initial composition point for registering the PBS provider.
|
||||
|
||||
Common compiler, build pipeline, and Studio code MUST NOT instantiate PBS-specific frontend services directly. In particular, common code MUST NOT directly instantiate `PBSFrontendPhaseService`; it MUST obtain the relevant service through the provider resolved from the registry.
|
||||
|
||||
This decision MUST NOT introduce dynamic plugin discovery, reflection-based discovery, classpath scanning, external JAR loading, or runtime plugin installation.
|
||||
|
||||
## Rationale
|
||||
|
||||
An explicit provider object gives the project one stable unit for frontend identity, compilation, and optional editorial capability. It keeps `languageId` as the selection key while avoiding scattered direct knowledge of PBS in common code.
|
||||
|
||||
Keeping the provider small prevents a premature plugin architecture. The immediate goal is static multi-frontend readiness inside the repository, not external extensibility.
|
||||
|
||||
Making language services optional separates build correctness from Studio editor assistance. A frontend should be able to participate in compilation without being forced to implement editor features in the same wave.
|
||||
|
||||
Using the application composition root for registration keeps ownership clear: composition may know that PBS exists, but shared compiler and Studio consumers should only know the provider contract.
|
||||
|
||||
## Implications
|
||||
|
||||
- `FrontendRegistryService` will need to evolve from spec/phase lookups into provider lookup, while preserving compatibility during migration where necessary.
|
||||
- Existing PBS registration must be wrapped behind a provider object.
|
||||
- Common consumers that currently request `FrontendSpec` or `FrontendPhaseService` directly may be migrated incrementally to provider lookup.
|
||||
- Studio catalog code may continue listing specifications, but its source should become provider-derived rather than PBS-specific.
|
||||
- Build pipeline code should obtain compiler-facing frontend behavior from the resolved provider.
|
||||
- Error handling for unknown `languageId` must remain explicit and diagnostic-friendly.
|
||||
- No product or runtime behavior should change for PBS as the only registered provider.
|
||||
|
||||
## Propagation Targets
|
||||
|
||||
- specs:
|
||||
- Add or update a `compiler/general` specification for the frontend provider and registry contract.
|
||||
- Reference Studio-facing optional language service capability where relevant.
|
||||
- plans:
|
||||
- Create an implementation plan for provider contract introduction, PBS provider registration, consumer migration, and tests.
|
||||
- code:
|
||||
- `prometeu-compiler/prometeu-frontend-registry/src/main/java/p/studio/compiler/FrontendRegistryService.java`
|
||||
- PBS frontend module provider implementation.
|
||||
- `prometeu-compiler/prometeu-build-pipeline/...` consumers that resolve frontend services.
|
||||
- `prometeu-studio/src/main/java/p/studio/projects/ProjectLanguageCatalogService.java`
|
||||
- `prometeu-app/src/main/java/p/studio/AppContainer.java`
|
||||
- tests:
|
||||
- Registry resolves a provider by `languageId`.
|
||||
- PBS is registered as the only initial real provider.
|
||||
- Unknown `languageId` fails with a clear error.
|
||||
- Common code can obtain compiler-facing frontend behavior without directly instantiating `PBSFrontendPhaseService`.
|
||||
- docs:
|
||||
- Decision-derived implementation plan.
|
||||
- Lessons after implementation and housekeeping, if the completed work produces reusable guidance.
|
||||
|
||||
## References
|
||||
|
||||
- Agenda: AGD-0057
|
||||
- Source discussion: DSC-0054
|
||||
|
||||
## Revision Log
|
||||
|
||||
- 2026-07-15: Initial decision drafted from accepted `AGD-0057`.
|
||||
@ -0,0 +1,71 @@
|
||||
---
|
||||
id: PLN-0103
|
||||
ticket: multi-frontend-provider-contract
|
||||
title: Specify frontend provider and registry contract
|
||||
status: open
|
||||
created: 2026-07-15
|
||||
ref_decisions: [DEC-0040]
|
||||
tags: [compiler, compiler-general, studio, frontend, registry, multi-frontend]
|
||||
---
|
||||
|
||||
## Briefing
|
||||
|
||||
DEC-0040 locks an explicit `FrontendProvider` contract as the common frontend registration unit. The first implementation step is to make that contract normative in the compiler/general specs before changing code.
|
||||
|
||||
Domain owner: `compiler/general`, with impact on `studio`.
|
||||
|
||||
## Objective
|
||||
|
||||
Specify the frontend provider and registry contract so implementation can introduce the API without relying on implicit behavior or PBS-specific assumptions.
|
||||
|
||||
## Dependencies
|
||||
|
||||
- Accepted decision: `DEC-0040`.
|
||||
- Existing compiler specs under `docs/specs/compiler/`.
|
||||
- Existing Studio/editor references may be linked but must not become the owner of the contract.
|
||||
|
||||
## Scope
|
||||
|
||||
- Add or update a compiler/general spec section defining `FrontendProvider`.
|
||||
- Define required provider responsibilities:
|
||||
- `specification()`;
|
||||
- `compiler()`;
|
||||
- optional `languageService()`.
|
||||
- Define `languageId` as the registry lookup key.
|
||||
- Define explicit provider registration as the only supported v1 registration model.
|
||||
- Define PBS as the only initial real provider.
|
||||
- Define unknown-language failure behavior as explicit and diagnostic-friendly.
|
||||
- Define that common code must obtain compiler-facing frontend behavior through provider lookup.
|
||||
|
||||
## Non-Goals
|
||||
|
||||
- Do not specify dynamic plugin discovery.
|
||||
- Do not specify reflection, classpath scanning, external JAR loading, or runtime plugin installation.
|
||||
- Do not introduce a second real frontend.
|
||||
- Do not define the full Studio language-service API beyond optional provider capability.
|
||||
|
||||
## Execution Method
|
||||
|
||||
1. Inspect existing compiler/general spec organization and choose the nearest owner document for registry and frontend composition.
|
||||
2. Add a `FrontendProvider` section with normative `MUST` language for required and optional responsibilities.
|
||||
3. Add a registry section stating that providers are resolved by `languageId` and that unknown languages fail clearly.
|
||||
4. Add a registration section stating that provider registration is explicit and composition-root-owned.
|
||||
5. Add a PBS v1 section stating that PBS is the only initial real provider and no new frontend is introduced by this work.
|
||||
6. Cross-reference Studio only as an optional language-service consumer, not as the owner of the provider contract.
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
- A compiler/general spec defines `FrontendProvider`, registry lookup, explicit registration, and PBS-only initial provider status.
|
||||
- The spec prohibits plugin discovery, reflection discovery, scanning, external JAR loading, and runtime plugin installation for this decision.
|
||||
- The spec makes `languageService()` optional and does not require editor support for a compilable frontend.
|
||||
- The spec is written in English.
|
||||
|
||||
## Tests
|
||||
|
||||
- Documentation validation through review against `DEC-0040`.
|
||||
- No code tests are required in this plan.
|
||||
|
||||
## Affected Artifacts
|
||||
|
||||
- `docs/specs/compiler/...`
|
||||
- `discussion/workflow/decisions/DEC-0040-frontendprovider-explicito-como-contrato-de-frontend.md`
|
||||
@ -0,0 +1,69 @@
|
||||
---
|
||||
id: PLN-0104
|
||||
ticket: multi-frontend-provider-contract
|
||||
title: Introduce FrontendProvider registry API
|
||||
status: open
|
||||
created: 2026-07-15
|
||||
ref_decisions: [DEC-0040]
|
||||
tags: [compiler, compiler-general, studio, frontend, registry, multi-frontend]
|
||||
---
|
||||
|
||||
## Briefing
|
||||
|
||||
DEC-0040 requires common code to resolve frontend behavior through a provider. This plan introduces the API surface in the frontend registry without forcing all consumers to migrate in the same change.
|
||||
|
||||
Domain owner: `compiler/general`.
|
||||
|
||||
## Objective
|
||||
|
||||
Introduce `FrontendProvider` and provider-based registry lookup while preserving existing PBS behavior during migration.
|
||||
|
||||
## Dependencies
|
||||
|
||||
- `PLN-0103` should define the normative spec first.
|
||||
- Accepted decision: `DEC-0040`.
|
||||
- Existing registry module: `prometeu-compiler/prometeu-frontend-registry`.
|
||||
|
||||
## Scope
|
||||
|
||||
- Add the `FrontendProvider` contract in the frontend registry module.
|
||||
- Add an optional language-service return shape, using an existing interface if one already exists or a minimal neutral placeholder only if required.
|
||||
- Add provider registration and provider lookup by `languageId`.
|
||||
- Add `require(languageId)` or equivalent explicit lookup that fails clearly for unknown languages.
|
||||
- Preserve compatibility methods during migration if existing consumers still call spec or phase lookup.
|
||||
|
||||
## Non-Goals
|
||||
|
||||
- Do not register PBS in this plan unless needed for API tests with a simple fixture.
|
||||
- Do not migrate build pipeline or Studio consumers in this plan.
|
||||
- Do not add plugin discovery, reflection, scanning, external JAR loading, or runtime plugin installation.
|
||||
- Do not define a broad editor API.
|
||||
|
||||
## Execution Method
|
||||
|
||||
1. Inspect `FrontendRegistryService`, `FrontendSpec`, and `FrontendPhaseService` to confirm current method names and package ownership.
|
||||
2. Add `FrontendProvider` to the registry-facing package with `specification()`, `compiler()`, and optional `languageService()`.
|
||||
3. Update `FrontendRegistryService` so its primary storage is provider keyed by `languageId`.
|
||||
4. Add `require(languageId)` or the nearest local naming equivalent for provider lookup.
|
||||
5. Keep old spec/phase accessor methods as provider-derived compatibility wrappers if they are still used.
|
||||
6. Add registry unit tests for provider registration, provider lookup, duplicate language handling if currently supported, and unknown-language errors.
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
- `FrontendProvider` exists and exposes all responsibilities required by `DEC-0040`.
|
||||
- `FrontendRegistryService` can resolve a provider by `languageId`.
|
||||
- Unknown `languageId` lookup fails with a clear exception or diagnostic message.
|
||||
- Existing callers can still compile until their migration plan runs.
|
||||
|
||||
## Tests
|
||||
|
||||
- Registry test: registered provider is returned by `languageId`.
|
||||
- Registry test: unknown `languageId` fails clearly.
|
||||
- Registry test: provider-derived spec listing remains correct if compatibility methods remain.
|
||||
- Run the relevant Gradle test task for `prometeu-frontend-registry`.
|
||||
|
||||
## Affected Artifacts
|
||||
|
||||
- `prometeu-compiler/prometeu-frontend-registry/src/main/java/p/studio/compiler/FrontendRegistryService.java`
|
||||
- New `FrontendProvider` contract in the same registry API surface.
|
||||
- Registry tests under `prometeu-compiler/prometeu-frontend-registry/src/test/...`
|
||||
@ -0,0 +1,73 @@
|
||||
---
|
||||
id: PLN-0105
|
||||
ticket: multi-frontend-provider-contract
|
||||
title: Wrap PBS frontend as explicit provider
|
||||
status: open
|
||||
created: 2026-07-15
|
||||
ref_decisions: [DEC-0040]
|
||||
tags: [compiler, compiler-general, studio, frontend, registry, multi-frontend]
|
||||
---
|
||||
|
||||
## Briefing
|
||||
|
||||
DEC-0040 requires PBS to become the only initial real provider behind the new `FrontendProvider` contract. This plan wraps existing PBS frontend behavior without changing PBS product behavior.
|
||||
|
||||
Domain owner: `compiler/general`, with implementation in `compiler/pbs` and composition impact in `prometeu-app`.
|
||||
|
||||
## Objective
|
||||
|
||||
Create and register an explicit PBS provider through the application composition root.
|
||||
|
||||
## Dependencies
|
||||
|
||||
- `PLN-0104` must introduce `FrontendProvider` and provider lookup first.
|
||||
- Accepted decision: `DEC-0040`.
|
||||
- Existing PBS frontend phase/service implementation.
|
||||
- Application composition root in `prometeu-app`.
|
||||
|
||||
## Scope
|
||||
|
||||
- Add `PBSFrontendProvider` or equivalent concrete provider object.
|
||||
- Make the provider return the existing PBS `FrontendSpec`.
|
||||
- Make the provider return the existing PBS compiler-facing service or phase.
|
||||
- Return no language service, or the existing PBS language-service adapter only if already present and compatible.
|
||||
- Register PBS explicitly in `prometeu-app/src/main/java/p/studio/AppContainer.java` or the nearest current application composition point.
|
||||
- Ensure PBS remains the only initial real provider.
|
||||
|
||||
## Non-Goals
|
||||
|
||||
- Do not create another real frontend.
|
||||
- Do not change PBS parsing, semantics, lowering, or runtime output.
|
||||
- Do not migrate all common consumers in this plan.
|
||||
- Do not introduce dynamic provider discovery.
|
||||
|
||||
## Execution Method
|
||||
|
||||
1. Inspect PBS frontend module boundaries and locate the current `FrontendSpec` and `FrontendPhaseService` construction.
|
||||
2. Add `PBSFrontendProvider` in the PBS frontend module or an existing integration package that can legally depend on PBS.
|
||||
3. Implement `specification()` and `compiler()` by delegating to the existing PBS objects.
|
||||
4. Implement `languageService()` as empty unless a current Studio-compatible PBS language service already exists.
|
||||
5. Update `AppContainer` or the existing composition root to register the PBS provider explicitly with `FrontendRegistryService`.
|
||||
6. Remove direct PBS registration paths that duplicate the provider registration if they become redundant.
|
||||
7. Add tests proving only PBS is registered as the real provider in the default composition path.
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
- PBS is represented by a concrete provider object.
|
||||
- Default application composition registers PBS explicitly as a provider.
|
||||
- PBS remains functional through existing compile/build flows.
|
||||
- No additional real frontend is introduced.
|
||||
- No dynamic discovery mechanism is added.
|
||||
|
||||
## Tests
|
||||
|
||||
- Provider test: `PBSFrontendProvider.specification()` returns the PBS language id.
|
||||
- Provider test: `PBSFrontendProvider.compiler()` returns working compiler-facing behavior.
|
||||
- Composition test: default registry contains PBS as the only real provider.
|
||||
- Existing PBS compile/build tests continue to pass.
|
||||
|
||||
## Affected Artifacts
|
||||
|
||||
- PBS frontend module under `prometeu-compiler/frontends/prometeu-frontend-pbs/...`
|
||||
- `prometeu-app/src/main/java/p/studio/AppContainer.java`
|
||||
- Registry or application composition tests.
|
||||
@ -0,0 +1,74 @@
|
||||
---
|
||||
id: PLN-0106
|
||||
ticket: multi-frontend-provider-contract
|
||||
title: Migrate common consumers to provider lookup
|
||||
status: open
|
||||
created: 2026-07-15
|
||||
ref_decisions: [DEC-0040]
|
||||
tags: [compiler, compiler-general, studio, frontend, registry, multi-frontend]
|
||||
---
|
||||
|
||||
## Briefing
|
||||
|
||||
DEC-0040 forbids common compiler, build pipeline, and Studio code from directly instantiating PBS-specific frontend services. After the registry API and PBS provider exist, consumers must move to provider lookup.
|
||||
|
||||
Domain owner: `compiler/general`, with impact on `studio`.
|
||||
|
||||
## Objective
|
||||
|
||||
Migrate common consumers from direct spec/phase/PBS access to provider-based lookup by `languageId`.
|
||||
|
||||
## Dependencies
|
||||
|
||||
- `PLN-0104` must provide provider lookup.
|
||||
- `PLN-0105` must register PBS as a provider.
|
||||
- Accepted decision: `DEC-0040`.
|
||||
|
||||
## Scope
|
||||
|
||||
- Audit common compiler, build pipeline, Studio, and app code for direct PBS frontend service construction.
|
||||
- Replace common code service lookup with provider lookup.
|
||||
- Make build pipeline frontend execution obtain compiler-facing behavior from `provider.compiler()`.
|
||||
- Make Studio project language catalog list specifications from providers.
|
||||
- Keep PBS-specific construction inside PBS provider or composition root only.
|
||||
- Add or update tests that prove common code does not directly instantiate `PBSFrontendPhaseService`.
|
||||
|
||||
## Non-Goals
|
||||
|
||||
- Do not remove compatibility registry APIs unless all callers have migrated and the removal is local.
|
||||
- Do not introduce new frontend behavior.
|
||||
- Do not change backend IR, validation boundaries, or lifecycle semantics beyond provider lookup.
|
||||
- Do not implement optional Studio language services that do not already exist.
|
||||
|
||||
## Execution Method
|
||||
|
||||
1. Search for `PBSFrontendPhaseService`, PBS frontend constructors, `getFrontendPhaseService`, and `getFrontendSpec` usage outside PBS and composition-owned code.
|
||||
2. Classify each usage as composition-owned, PBS-owned, or common consumer.
|
||||
3. Update common consumers to resolve `FrontendProvider` by `languageId`.
|
||||
4. Update `FrontendPhasePipelineStage` so it calls provider compiler behavior rather than direct phase lookup.
|
||||
5. Update `ProjectLanguageCatalogService` so its catalog is provider-derived.
|
||||
6. Keep compatibility wrappers only where they reduce migration risk and are provider-derived.
|
||||
7. Add architectural tests or focused unit tests that fail if common modules instantiate `PBSFrontendPhaseService` directly.
|
||||
8. Run relevant compiler, build pipeline, Studio, and app tests.
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
- Common compiler/build pipeline/Studio code obtains frontend behavior through provider lookup.
|
||||
- Direct `PBSFrontendPhaseService` instantiation remains only in PBS provider or approved composition code.
|
||||
- `ProjectLanguageCatalogService` is provider-derived.
|
||||
- Unknown `languageId` failures remain clear after consumer migration.
|
||||
- PBS compile/build behavior remains unchanged.
|
||||
|
||||
## Tests
|
||||
|
||||
- Unit or integration test: build pipeline resolves PBS through provider and compiles an existing PBS fixture.
|
||||
- Unit test: Studio language catalog lists PBS from provider specs.
|
||||
- Architecture test or grep-backed test: common modules do not instantiate `PBSFrontendPhaseService`.
|
||||
- Existing PBS and build pipeline tests pass.
|
||||
|
||||
## Affected Artifacts
|
||||
|
||||
- `prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/workspaces/stages/FrontendPhasePipelineStage.java`
|
||||
- `prometeu-studio/src/main/java/p/studio/projects/ProjectLanguageCatalogService.java`
|
||||
- Common code currently using `FrontendRegistryService.getFrontendSpec` or `getFrontendPhaseService`.
|
||||
- Tests in compiler, build pipeline, Studio, and app modules.
|
||||
@ -14,13 +14,13 @@
|
||||
"last_modified" : 1779659315450,
|
||||
"fingerprint" : "ac565160c0dceb321b8f6c9094f2b5e6ae398396fe32c8ead706f5cc36f465cf",
|
||||
"metadata" : {
|
||||
"palette" : {
|
||||
"rgba8888" : [ 0, 673720574, -523190018, -117903106, 945858814, -1600620290, 1484833022 ]
|
||||
},
|
||||
"tile" : {
|
||||
"width" : 32,
|
||||
"height" : 32,
|
||||
"paletteIndices" : "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgICAgICAQAAAAAAAAAAAAABAQEAAAAAAAAAAAAAAAEDBAQEBAQCAQAAAAAAAQEBAQICAgEAAAAAAAAAAAAAAQMEAgUFBQQCAQEBAQECAgICBAQEAgEAAAAAAAAAAAABAwQCBQUFBQQDAwMDAgQEBAQFAgIEAwEBAAAAAAAAAAEDBAIFBQUFAgQEBgYEBQUFBQICAgIEAwMBAQAAAAAAAQMEAgUFBQICAgMDAwIFBQUFBQICAgIGBgMCAQAAAAABAwQCBQUFAgICAgMDAgUFBQUFAgICAwMDBAQCAQEAAAEDBAIFBQUCAgICAwMCBQUFBQUCAgICAwMCAgQFAQAAAQMEAgUFBQICAgIDAwIFBQUFBAQEBAQDAwQEBQEAAAABAwQCBQUFAgICAgMDAgUFBAQFAgICAgYGAgUBAAAAAAEDBAIEBAQEBAICAwMCBQQFBQEBAQEBAwMBAQAAAAAAAQMEBAUFBQUCBAIDAwIEBQEBAAAAAAABAQAAAAAAAAABAwICBQEBAQECBAYGBAUBAAAAAAAAAAAAAAAAAAAAAQECAgIBAAAAAAEDAwICAQAAAAAAAAAAAAAAAAAAAAEBAQEBAQAAAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
|
||||
},
|
||||
"palette" : {
|
||||
"rgba8888" : [ 0, 673720574, -523190018, -117903106, 945858814, -1600620290, 1484833022 ]
|
||||
}
|
||||
},
|
||||
"diagnostics" : [ ]
|
||||
@ -59,13 +59,13 @@
|
||||
"last_modified" : 1779659315452,
|
||||
"fingerprint" : "6dd024eb2259efaa03908ff0c3b75eb67f9da56d365e4a35d8e619b71c7507db",
|
||||
"metadata" : {
|
||||
"palette" : {
|
||||
"rgba8888" : [ 0, 255, -540033025, -134746113, -101191169, 945858815, 1501544959, -1617463297, -1583777281, -1583908353, -1617462785, 929015807, 962701823, 690432511 ]
|
||||
},
|
||||
"tile" : {
|
||||
"width" : 32,
|
||||
"height" : 32,
|
||||
"paletteIndices" : "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgMDBAEBAQEBAAAAAAAAAAAAAAABAQAAAAAAAAAAAAECBQYGBAIHBwgBAAAAAAAAAAEBAQICAQEAAAAAAAAAAQIFAwMGBQUFBQIBAAAAAAEBCQIHBQUDBAEBAAAAAAABAgUDAwIICAoIBQIBAQEBBwcLCwwIAgYGAwMBAAAAAAECBQMDAgoKCgoKBQMDAwIFBQgCCgIKAgIGAwEAAAAAAQIFAwMCCAgICAgCBQYGBQoKCgoCCgICAwMGAwEAAAABAgUDAggICAgICAICAwMCCAgIAggFBQUGBgYDDQAAAAECBgMCCAgICAgIAgIDAggICAgFBQoCAwMDAwQEAQAAAQIGAwIICAgICAgCAgMCCAgIBQgKAQEBAQEBAQQBAAABAgYDAggICAgIAgICAwIKCAUIAQEAAAAAAAAAAQEAAAECBgMCCAgICAUFAgIDAggFCgEAAAAAAAAAAAAAAAAAAQIGAwIICAUFCAIFBQYLBQgBAAAAAAAAAAAAAAAAAAABAgYFBQUFCAoBAQIDBAIJAQAAAAAAAAAAAAAAAAAAAQECAwIICAgBAQAAAQEBAQEAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
|
||||
},
|
||||
"palette" : {
|
||||
"rgba8888" : [ 0, 255, -540033025, -134746113, -101191169, 945858815, 1501544959, -1617463297, -1583777281, -1583908353, -1617462785, 929015807, 962701823, 690432511 ]
|
||||
}
|
||||
},
|
||||
"diagnostics" : [ ]
|
||||
@ -76,13 +76,13 @@
|
||||
"last_modified" : 1779659315453,
|
||||
"fingerprint" : "c8e30f40473deedb265be26967f6bf5f2ba35a2bd5d0a049dcb8843fa60d5600",
|
||||
"metadata" : {
|
||||
"palette" : {
|
||||
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239, -1300082177 ]
|
||||
},
|
||||
"tile" : {
|
||||
"width" : 32,
|
||||
"height" : 32,
|
||||
"paletteIndices" : "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQICAwMBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAQBAgIDAwMCAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQUFBAQBAgIDAgICAQAAAAAAAAAAAAAAAAAAAAAAAAABBQEFBAUBAgICAgMBAAAAAAAAAAAAAAAAAAAAAAAAAAABBgEFBQUBAgECAgMBAAAAAAAAAAAAAAAAAAAAAAAAAAEGBwEFBAEBCAECAwEAAAAAAAAAAAAAAAAAAAAAAAAAAQgBBwEEAQgJAQICAQAAAAAAAAAAAAAAAAAAAAAAAAEICAEHAQQBCQYBAgIBAAAAAAAAAAAAAAAAAAAAAAAAAAEGCQkBBQEGAQUBAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBBgYBBgEBAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQcBAQEBAgIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAwECAwIBAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQECAQcHBwECAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAEBAQEBAQECAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgEJCgoBAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEJCQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEKAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQELCwoKAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
|
||||
},
|
||||
"palette" : {
|
||||
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239, -1300082177 ]
|
||||
}
|
||||
},
|
||||
"diagnostics" : [ ]
|
||||
@ -93,13 +93,13 @@
|
||||
"last_modified" : 1779659315454,
|
||||
"fingerprint" : "58a6a9bc02d9174fdc6bcd6f71f5fb86c47d506812e83cae5b0e23a1f951dbbf",
|
||||
"metadata" : {
|
||||
"palette" : {
|
||||
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239, -1300082177 ]
|
||||
},
|
||||
"tile" : {
|
||||
"width" : 32,
|
||||
"height" : 32,
|
||||
"paletteIndices" : "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQECAgMDAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQQEAQICAwMDAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBQQEAQICAwICAgEAAAAAAAAAAAAAAAAAAAAAAAAAAQUBBQQFAQICAgIDAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQYBBQUFAQIBAgIDAQAAAAAAAAAAAAAAAAAAAAAAAAABBgcBBQQBAQgBAgMBAAAAAAAAAAAAAAAAAAAAAAAAAAEIAQcBBAEICQECAgEAAAAAAAAAAAAAAAAAAAAAAAABCAgBBwEEAQkGAQICAQAAAAAAAAAAAAAAAAAAAAAAAAABBgkJAQUBBgEFAQIBAAAAAAAAAAAAAAAAAAAAAAAAAAABAQYGAQYBAQEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEHAQEBAQECAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgEBBwMBAwMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBCQoBBwEDAgEBAAAAAAAAAAAAAAAAAAAAAAAAAAABAgEJCQoBAgIBAQIBAAAAAAAAAAAAAAAAAAAAAAAAAAECAgEBAQICAQECAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgECAQECAgEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQICAgEBAQoKAQAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQELCwoBAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQsLAQEAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
|
||||
},
|
||||
"palette" : {
|
||||
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239, -1300082177 ]
|
||||
}
|
||||
},
|
||||
"diagnostics" : [ ]
|
||||
@ -110,13 +110,13 @@
|
||||
"last_modified" : 1779659315454,
|
||||
"fingerprint" : "110c4f835a40bb370c7bb7761afcd69de0d38e75798d20d50f4c203aa56f213a",
|
||||
"metadata" : {
|
||||
"palette" : {
|
||||
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239, -1300082177 ]
|
||||
},
|
||||
"tile" : {
|
||||
"width" : 32,
|
||||
"height" : 32,
|
||||
"paletteIndices" : "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgMDAQEAAAEBAAAAAAAAAAAAAAAAAAAAAAABBAQEAQICAwMDAgEBAwEAAAAAAAAAAAAAAAAAAAAAAAEFBQQEAQICAwICAQIDAQAAAAAAAAAAAAAAAAAAAAAAAAEBBQQFAQICAgICAwEBAAAAAAAAAAAAAAAAAAAAAAAAAQYBBQUFAQIBAgICAQAAAAAAAAAAAAAAAAAAAAAAAAABBgcBBQQFAQgBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAEIAQcBBAUBCQEBBQUBAAAAAAAAAAAAAAAAAAAAAAABCAgBBwgBBAUBAQUBAAAAAAAAAAAAAAAAAAAAAAAAAAABBgkJBgYBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQYGBgYBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEJCgEHAwECAwEBAQAAAAAAAAAAAAAAAAAAAAAAAAABAQkKAQcCAQIDAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAEKAQEBAQECAgEBAgELAQAAAAAAAAAAAAAAAAAAAAAAAQEKAQICAQEBAgIBAQoLAQAAAAAAAAAAAAAAAAAAAAAAAQEBAQECAgICAQEAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
|
||||
},
|
||||
"palette" : {
|
||||
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239, -1300082177 ]
|
||||
}
|
||||
},
|
||||
"diagnostics" : [ ]
|
||||
@ -127,13 +127,13 @@
|
||||
"last_modified" : 1779659315455,
|
||||
"fingerprint" : "2e6fb2cfbf77f4b3c0d116b9b77a3ae228cdc5671bd18320285824faef9674d3",
|
||||
"metadata" : {
|
||||
"palette" : {
|
||||
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239, -1300082177 ]
|
||||
},
|
||||
"tile" : {
|
||||
"width" : 32,
|
||||
"height" : 32,
|
||||
"paletteIndices" : "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAAAAAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQICAwMBAQEBAwEAAAAAAAAAAAAAAAAAAAAAAAABBAQBAgIDAwMCAQMDAQAAAAAAAAAAAAAAAAAAAAAAAQUFBAQBAgIDAgICAwIBAAAAAAAAAAAAAAAAAAAAAAABBQEFBAUBAgICAgMCAQAAAAAAAAAAAAAAAAAAAAAAAAABBgEFBQUBAgECAgIBAAAAAAAAAAAAAAAAAAAAAAAAAAEGBwEFBAUBCAEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQgBBwEEBQEJAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAEICAEHCQEEBQEFAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBCQkGBgEBAQUBAAAAAAAAAAAAAAAAAAAAAAAAAAABCQoBAQEGBgEBAQUBAAAAAAAAAAAAAAAAAAAAAAAAAAEKCgEHAgEBAQMBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBBwICAQIDAwEBAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQECAgMBAQIBAAAAAAAAAAAAAAAAAAAAAAAAAQoBAQIBAgICAgECAQEAAAAAAAAAAAAAAAAAAAAAAAABCgoBAgIBAQEBAgELAQAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQICAgIBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
|
||||
},
|
||||
"palette" : {
|
||||
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239, -1300082177 ]
|
||||
}
|
||||
},
|
||||
"diagnostics" : [ ]
|
||||
@ -144,13 +144,13 @@
|
||||
"last_modified" : 1779659315455,
|
||||
"fingerprint" : "c8e30f40473deedb265be26967f6bf5f2ba35a2bd5d0a049dcb8843fa60d5600",
|
||||
"metadata" : {
|
||||
"palette" : {
|
||||
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239, -1300082177 ]
|
||||
},
|
||||
"tile" : {
|
||||
"width" : 32,
|
||||
"height" : 32,
|
||||
"paletteIndices" : "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQICAwMBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAQBAgIDAwMCAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQUFBAQBAgIDAgICAQAAAAAAAAAAAAAAAAAAAAAAAAABBQEFBAUBAgICAgMBAAAAAAAAAAAAAAAAAAAAAAAAAAABBgEFBQUBAgECAgMBAAAAAAAAAAAAAAAAAAAAAAAAAAEGBwEFBAEBCAECAwEAAAAAAAAAAAAAAAAAAAAAAAAAAQgBBwEEAQgJAQICAQAAAAAAAAAAAAAAAAAAAAAAAAEICAEHAQQBCQYBAgIBAAAAAAAAAAAAAAAAAAAAAAAAAAEGCQkBBQEGAQUBAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBBgYBBgEBAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQcBAQEBAgIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAwECAwIBAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQECAQcHBwECAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAEBAQEBAQECAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgEJCgoBAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEJCQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEKAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQELCwoKAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
|
||||
},
|
||||
"palette" : {
|
||||
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239, -1300082177 ]
|
||||
}
|
||||
},
|
||||
"diagnostics" : [ ]
|
||||
@ -161,13 +161,13 @@
|
||||
"last_modified" : 1779659315456,
|
||||
"fingerprint" : "94ac699b5e913925cf881e76ff951875147b598b1ee9870187111e7ca0b40d1d",
|
||||
"metadata" : {
|
||||
"palette" : {
|
||||
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239 ]
|
||||
},
|
||||
"tile" : {
|
||||
"width" : 32,
|
||||
"height" : 32,
|
||||
"paletteIndices" : "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQICAwMBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAQBAgIDAwMCAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQUFBAQBAgIDAgICAQAAAAAAAAAAAAAAAAAAAAAAAAABBQEFBAUBAgICAgMBAAAAAAAAAAAAAAAAAAAAAAAAAAABBgEFBQUBAgECAgMBAAAAAAAAAAAAAAAAAAAAAAAAAAEGBwEFBAEBCAECAwEAAAAAAAAAAAAAAAAAAAAAAAAAAQgBBwEEAQgJAQICAQAAAAAAAAAAAAAAAAAAAAAAAAEICAEHAQQBCQYBAgIBAAAAAAAAAAAAAAAAAAAAAAAAAAEGCQkBBQEGAQUBAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBBgYBAQEBAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQcBAQEDAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwMBAgcHAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQMDAwIBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAIDAgEKCgECAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAQEBAQkJAQIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQECAgICAQECAQoBAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQICAgEKCgEAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBCgoKAQAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
|
||||
},
|
||||
"palette" : {
|
||||
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239 ]
|
||||
}
|
||||
},
|
||||
"diagnostics" : [ ]
|
||||
@ -178,13 +178,13 @@
|
||||
"last_modified" : 1779659315457,
|
||||
"fingerprint" : "fc0a623650619ca39c1ce2f9f9e1b0f6951abd194e18ea60c682fae6a769df97",
|
||||
"metadata" : {
|
||||
"palette" : {
|
||||
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239, -1300082177 ]
|
||||
},
|
||||
"tile" : {
|
||||
"width" : 32,
|
||||
"height" : 32,
|
||||
"paletteIndices" : "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQICAwMBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEEBAQBAgIDAwMCAQABAQAAAAAAAAAAAAAAAAAAAAAAAQUFBAQBAgIDAgIBAQMBAAAAAAAAAAAAAAAAAAAAAAAAAQEFBAUBAgICAgIDAwEAAAAAAAAAAAAAAAAAAAAAAAABBgEFBQUBAgECAgIBAAAAAAAAAAAAAAAAAAAAAAAAAAEGBwEFBAUBCAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAQgBBwEEBQEJAQEFBQEAAAAAAAAAAAAAAAAAAAAAAAEICAEHCAEEBQEBBQEBAAAAAAAAAAAAAAAAAAAAAAAAAAEGCQkGBgEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBBgYGAQIDAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCQEBAQEBAQEHAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBBwcDAgEKCgEBAAAAAAAAAAAAAAAAAAAAAAAAAAABAgIBAwMCAQkJAQEAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQIBAgMCAQEBCgEAAAAAAAAAAAAAAAAAAAAAAAABCwsKAQIBAQECAgEKAQAAAAAAAAAAAAAAAAAAAAAAAAABCwsKAQICAgIBCgoBAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
|
||||
},
|
||||
"palette" : {
|
||||
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239, -1300082177 ]
|
||||
}
|
||||
},
|
||||
"diagnostics" : [ ]
|
||||
@ -195,13 +195,13 @@
|
||||
"last_modified" : 1779659315457,
|
||||
"fingerprint" : "7ada8efefcd6d069b10846fefb9bd9cff1a1fa4c1565bbebfd68fc83645f0732",
|
||||
"metadata" : {
|
||||
"palette" : {
|
||||
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239, -1300082177 ]
|
||||
},
|
||||
"tile" : {
|
||||
"width" : 32,
|
||||
"height" : 32,
|
||||
"paletteIndices" : "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAAAAAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQICAwMBAQEBAwEAAAAAAAAAAAAAAAAAAAAAAAABBAQBAgIDAwMCAQMDAQAAAAAAAAAAAAAAAAAAAAAAAQUFBAQBAgIDAgICAwIBAAAAAAAAAAAAAAAAAAAAAAABBQEFBAUBAgICAgMCAQAAAAAAAAAAAAAAAAAAAAAAAAABBgEFBQUBAgECAgIBAAAAAAAAAAAAAAAAAAAAAAAAAAEGBwEFBAUBCAEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQgBBwEEBQEJAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAEICAEHCQEEBQEFAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEGCQkGBgEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBBgYGAQIDAgEBAAAAAAAAAAAAAAAAAAAAAAAAAAEJAQEBAQEBAgIBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBBwcDAgIBAQoKAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQQBAwMDAgIBCQkBAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgECAwMCAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAABCwYBAgEBAQECAgEKAQAAAAAAAAAAAAAAAAAAAAAAAAELCgYBAgICAgEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAEKCgoBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
|
||||
},
|
||||
"palette" : {
|
||||
"rgba8888" : [ 0, 538976511, 1368527103, 1907499263, -205315841, -1014890241, -1302257409, -202116097, -207461889, -476950017, 1631658239, -1300082177 ]
|
||||
}
|
||||
},
|
||||
"diagnostics" : [ ]
|
||||
@ -250,13 +250,13 @@
|
||||
"last_modified" : 1776965154257,
|
||||
"fingerprint" : "8771c3e294d0edbc8dd3aaa6995a6db32166ae6bfb3e063170cc79b298d17e71",
|
||||
"metadata" : {
|
||||
"palette" : {
|
||||
"rgba8888" : [ 1217939711 ]
|
||||
},
|
||||
"tile" : {
|
||||
"width" : 8,
|
||||
"height" : 8,
|
||||
"paletteIndices" : "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
|
||||
},
|
||||
"palette" : {
|
||||
"rgba8888" : [ 1217939711 ]
|
||||
}
|
||||
},
|
||||
"diagnostics" : [ ]
|
||||
@ -267,13 +267,13 @@
|
||||
"last_modified" : 1776965154257,
|
||||
"fingerprint" : "5d81eef8be13043330b42b546e10beed8ba00dfaa42df67477a8778c2b9484d7",
|
||||
"metadata" : {
|
||||
"palette" : {
|
||||
"rgba8888" : [ 1217939711, 1081622783, 677921023, 676868351, 673720575, -2005909249, -1466932993, 1615868159 ]
|
||||
},
|
||||
"tile" : {
|
||||
"width" : 8,
|
||||
"height" : 8,
|
||||
"paletteIndices" : "AAAAAAAAAAAAAAAAAAEBAQABAQEBAQEBAQIDBAQEBAMCAwQFBQUFBAIDBAUFBgYHAgMEBwUFBwcAAgQEBwcHBg=="
|
||||
},
|
||||
"palette" : {
|
||||
"rgba8888" : [ 1217939711, 1081622783, 677921023, 676868351, 673720575, -2005909249, -1466932993, 1615868159 ]
|
||||
}
|
||||
},
|
||||
"diagnostics" : [ ]
|
||||
@ -284,13 +284,13 @@
|
||||
"last_modified" : 1776965154258,
|
||||
"fingerprint" : "3250840c4fe08c134ea966ce7c8fcaccae2c2a45660d7173c5e262a2e5076548",
|
||||
"metadata" : {
|
||||
"palette" : {
|
||||
"rgba8888" : [ 1081622783, 676868351, 673720575, 1615868159, -1466932993, -2005909249 ]
|
||||
},
|
||||
"tile" : {
|
||||
"width" : 8,
|
||||
"height" : 8,
|
||||
"paletteIndices" : "AAAAAAABAgIAAAAAAQIDBAAAAAECAwQEAAECAgMDAwMCAgUEBAQEBAMFBAQFBQUFBAQEBQUEBAQEBQUFBAQFBQ=="
|
||||
},
|
||||
"palette" : {
|
||||
"rgba8888" : [ 1081622783, 676868351, 673720575, 1615868159, -1466932993, -2005909249 ]
|
||||
}
|
||||
},
|
||||
"diagnostics" : [ ]
|
||||
@ -301,13 +301,13 @@
|
||||
"last_modified" : 1776965154258,
|
||||
"fingerprint" : "fe3ab2b7eb3b10a042de14484d53e718e6b505edb1ad19053668565bfe3a8f25",
|
||||
"metadata" : {
|
||||
"palette" : {
|
||||
"rgba8888" : [ 673720575, 676868351, 1081622783, -1466932993, 1615868159, -2005909249 ]
|
||||
},
|
||||
"tile" : {
|
||||
"width" : 8,
|
||||
"height" : 8,
|
||||
"paletteIndices" : "AAABAgICAgIDBAABAgICAgMDBAABAgICBAQEBAAAAQIDAwMDAwUAAAUFBQUDAwUEAwMDBQUDAwMFBQMDBQUFAw=="
|
||||
},
|
||||
"palette" : {
|
||||
"rgba8888" : [ 673720575, 676868351, 1081622783, -1466932993, 1615868159, -2005909249 ]
|
||||
}
|
||||
},
|
||||
"diagnostics" : [ ]
|
||||
@ -318,13 +318,13 @@
|
||||
"last_modified" : 1776965154259,
|
||||
"fingerprint" : "7fcbf90e1e9a69d6ce3be80ea1901d66c9992f68dc72e4c636dcd2ad52fa2898",
|
||||
"metadata" : {
|
||||
"palette" : {
|
||||
"rgba8888" : [ 1217939711, 1081622783, 676868351, 673720575, 677921023, -2005909249, 1615868159, -1466932993 ]
|
||||
},
|
||||
"tile" : {
|
||||
"width" : 8,
|
||||
"height" : 8,
|
||||
"paletteIndices" : "AAAAAAAAAAABAQEAAAAAAAEBAQEBAQEAAgMDAwMCBAEDBQUFBQMCBAYHBwUFAwIEBgYFBQYDAgQHBgYGAwMEAA=="
|
||||
},
|
||||
"palette" : {
|
||||
"rgba8888" : [ 1217939711, 1081622783, 676868351, 673720575, 677921023, -2005909249, 1615868159, -1466932993 ]
|
||||
}
|
||||
},
|
||||
"diagnostics" : [ ]
|
||||
@ -335,13 +335,13 @@
|
||||
"last_modified" : 1776965154259,
|
||||
"fingerprint" : "451fc8d646049944d5aa7c7dc254636eec0151aaff6e2051059304b9d6ebc31e",
|
||||
"metadata" : {
|
||||
"palette" : {
|
||||
"rgba8888" : [ 1217939711, 677921023, 676868351, 673720575, 1615868159, -1466932993, -2005909249 ]
|
||||
},
|
||||
"tile" : {
|
||||
"width" : 8,
|
||||
"height" : 8,
|
||||
"paletteIndices" : "AAECAwMEBQUAAAECAwUFBgAAAAIDBQYGAAAAAwMFBgYAAAMEAwUGBgADBgQDBQYGAwYFBAMFBgYDBgUEAwUGBg=="
|
||||
},
|
||||
"palette" : {
|
||||
"rgba8888" : [ 1217939711, 677921023, 676868351, 673720575, 1615868159, -1466932993, -2005909249 ]
|
||||
}
|
||||
},
|
||||
"diagnostics" : [ ]
|
||||
@ -352,13 +352,13 @@
|
||||
"last_modified" : 1776965154260,
|
||||
"fingerprint" : "aa757df4600823ec6655235a1081061777124ccee74b31481bbe402e53635f53",
|
||||
"metadata" : {
|
||||
"palette" : {
|
||||
"rgba8888" : [ -2005909249, -1466932993, 1615868159, 673720575 ]
|
||||
},
|
||||
"tile" : {
|
||||
"width" : 8,
|
||||
"height" : 8,
|
||||
"paletteIndices" : "AAABAgIAAAAAAQEAAgIAAQEBAAAAAgIBAQEAAAECAwIBAQAAAQIDAwEBAAABAgMDAQEAAAECAwIBAQEAAgMCAQ=="
|
||||
},
|
||||
"palette" : {
|
||||
"rgba8888" : [ -2005909249, -1466932993, 1615868159, 673720575 ]
|
||||
}
|
||||
},
|
||||
"diagnostics" : [ ]
|
||||
@ -369,13 +369,13 @@
|
||||
"last_modified" : 1776965154260,
|
||||
"fingerprint" : "38162157f5685cce25b835d3a2caee3465fd2ec3ee5db2a5089d7d5ae5ea3bb7",
|
||||
"metadata" : {
|
||||
"palette" : {
|
||||
"rgba8888" : [ -2005909249, 1615868159, -1466932993, 673720575 ]
|
||||
},
|
||||
"tile" : {
|
||||
"width" : 8,
|
||||
"height" : 8,
|
||||
"paletteIndices" : "AAAAAQECAAACAAEBAAICAAIBAQAAAAICAQMBAgAAAgIDAwECAAACAgMDAQIAAAICAQMBAgAAAgICAQMBAAICAg=="
|
||||
},
|
||||
"palette" : {
|
||||
"rgba8888" : [ -2005909249, 1615868159, -1466932993, 673720575 ]
|
||||
}
|
||||
},
|
||||
"diagnostics" : [ ]
|
||||
@ -386,13 +386,13 @@
|
||||
"last_modified" : 1776965154260,
|
||||
"fingerprint" : "8cab5b3d553af9ed371bd19fc624763accc90e5d926d300ba31dd8d9d6bab803",
|
||||
"metadata" : {
|
||||
"palette" : {
|
||||
"rgba8888" : [ -1466932993, 1615868159, 673720575, 676868351, 677921023, 1217939711, -2005909249 ]
|
||||
},
|
||||
"tile" : {
|
||||
"width" : 8,
|
||||
"height" : 8,
|
||||
"paletteIndices" : "AAABAgIDBAUGAAACAwQFBQYGAAIDBQUFBgYAAgIFBQUGBgACAQIFBQYGAAIBBgIFBgYAAgEABgIGBgACAQAGAg=="
|
||||
},
|
||||
"palette" : {
|
||||
"rgba8888" : [ -1466932993, 1615868159, 673720575, 676868351, 677921023, 1217939711, -2005909249 ]
|
||||
}
|
||||
},
|
||||
"diagnostics" : [ ]
|
||||
@ -403,13 +403,13 @@
|
||||
"last_modified" : 1776965154261,
|
||||
"fingerprint" : "d9ff5a6df0f65f5fcfb8f22376beeb266d429e2c6e9c82f51c12bc6ee4c3fcdc",
|
||||
"metadata" : {
|
||||
"palette" : {
|
||||
"rgba8888" : [ 673720575, 1615868159, -2005909249, -1466932993, 676868351, 677921023, 1217939711 ]
|
||||
},
|
||||
"tile" : {
|
||||
"width" : 8,
|
||||
"height" : 8,
|
||||
"paletteIndices" : "AAECAQEAAwIEAAABAQADAwQFBAABAQADBgUEBAABAAAGBgUFBAAAAQYGBgUEAAICBgYGBgAAAgIGBgYEAAEBAg=="
|
||||
},
|
||||
"palette" : {
|
||||
"rgba8888" : [ 673720575, 1615868159, -2005909249, -1466932993, 676868351, 677921023, 1217939711 ]
|
||||
}
|
||||
},
|
||||
"diagnostics" : [ ]
|
||||
@ -420,13 +420,13 @@
|
||||
"last_modified" : 1776965154261,
|
||||
"fingerprint" : "b9ff45c77f7779a6acebcc537c2ddac0e27e91162b656a04dc4772ec5f24fc26",
|
||||
"metadata" : {
|
||||
"palette" : {
|
||||
"rgba8888" : [ -2005909249, -1466932993, 1615868159, 673720575 ]
|
||||
},
|
||||
"tile" : {
|
||||
"width" : 8,
|
||||
"height" : 8,
|
||||
"paletteIndices" : "AAEBAgIAAAEAAAICAQEAAAEAAAAAAQEAAQEBAQAAAQEDAgIBAQAAAAIDAgIBAQAAAAIDAgICAQEAAgIDAgICAg=="
|
||||
},
|
||||
"palette" : {
|
||||
"rgba8888" : [ -2005909249, -1466932993, 1615868159, 673720575 ]
|
||||
}
|
||||
},
|
||||
"diagnostics" : [ ]
|
||||
@ -437,13 +437,13 @@
|
||||
"last_modified" : 1776965154261,
|
||||
"fingerprint" : "43f370324fedccda888d49409e2a64f182f08b4143b4bdd5bafaf498feebd21a",
|
||||
"metadata" : {
|
||||
"palette" : {
|
||||
"rgba8888" : [ -1466932993, -2005909249, 1615868159, 673720575 ]
|
||||
},
|
||||
"tile" : {
|
||||
"width" : 8,
|
||||
"height" : 8,
|
||||
"paletteIndices" : "AAEBAgIAAAEBAQAAAgIBAQEAAAEBAQEAAAABAQAAAAABAQEAAAICAwEBAAACAgMCAAACAgIDAgECAgICAwICAQ=="
|
||||
},
|
||||
"palette" : {
|
||||
"rgba8888" : [ -1466932993, -2005909249, 1615868159, 673720575 ]
|
||||
}
|
||||
},
|
||||
"diagnostics" : [ ]
|
||||
@ -454,13 +454,13 @@
|
||||
"last_modified" : 1776965154262,
|
||||
"fingerprint" : "cb047e655f4e196f22ca0048149df5dcb959f895faeaeb94920182d4a2d16b38",
|
||||
"metadata" : {
|
||||
"palette" : {
|
||||
"rgba8888" : [ -2005909249, -1466932993, 673720575, 1615868159, 676868351, 677921023, 1217939711 ]
|
||||
},
|
||||
"tile" : {
|
||||
"width" : 8,
|
||||
"height" : 8,
|
||||
"paletteIndices" : "AAECAwMAAwIBAQIDAwICBAECAwMCBAUEAgIDAgQEBQYDAgIEBQUGBgAAAgQFBgYGAAACAgYGBgYAAwMCBAYGBg=="
|
||||
},
|
||||
"palette" : {
|
||||
"rgba8888" : [ -2005909249, -1466932993, 673720575, 1615868159, 676868351, 677921023, 1217939711 ]
|
||||
}
|
||||
},
|
||||
"diagnostics" : [ ]
|
||||
@ -471,13 +471,13 @@
|
||||
"last_modified" : 1776965154262,
|
||||
"fingerprint" : "25eba17b67dd5159f5fb9d3edd531d54a44d1c76f997385840dac53517b98886",
|
||||
"metadata" : {
|
||||
"palette" : {
|
||||
"rgba8888" : [ 1217939711, 673720575, -2005909249, 1615868159, 676868351, 677921023 ]
|
||||
},
|
||||
"tile" : {
|
||||
"width" : 8,
|
||||
"height" : 8,
|
||||
"paletteIndices" : "AAAAAQICAwMAAAECAgICAwAAAQICAgIDAAABAgIDAQMAAAEDAQQEAQAABAQFBAUEAAAAAAAFAAUAAAAAAAAAAA=="
|
||||
},
|
||||
"palette" : {
|
||||
"rgba8888" : [ 1217939711, 673720575, -2005909249, 1615868159, 676868351, 677921023 ]
|
||||
}
|
||||
},
|
||||
"diagnostics" : [ ]
|
||||
@ -488,13 +488,13 @@
|
||||
"last_modified" : 1776965154262,
|
||||
"fingerprint" : "32ca96c14290de8009fd2db623f55514bed2345b7d5881a80dd3fe6235012854",
|
||||
"metadata" : {
|
||||
"palette" : {
|
||||
"rgba8888" : [ 1615868159, 673720575, 676868351, -2005909249, 677921023, 1217939711 ]
|
||||
},
|
||||
"tile" : {
|
||||
"width" : 8,
|
||||
"height" : 8,
|
||||
"paletteIndices" : "AAAAAQAAAQEBAAEBAAEAAAEBAgEBAAADAQICAgEAAAMCAgQCAgEAAAQEBQQEAQADBQUFBQUCAQAFBQUFBQUCAQ=="
|
||||
},
|
||||
"palette" : {
|
||||
"rgba8888" : [ 1615868159, 673720575, 676868351, -2005909249, 677921023, 1217939711 ]
|
||||
}
|
||||
},
|
||||
"diagnostics" : [ ]
|
||||
@ -505,13 +505,13 @@
|
||||
"last_modified" : 1776965154263,
|
||||
"fingerprint" : "7a093fe00c805bcf38d4facff14a6d4c2b8baeaa2d553fa8d3db9f2d76b32f3b",
|
||||
"metadata" : {
|
||||
"palette" : {
|
||||
"rgba8888" : [ 673720575, 1615868159, -2005909249, 676868351, 677921023, 1217939711 ]
|
||||
},
|
||||
"tile" : {
|
||||
"width" : 8,
|
||||
"height" : 8,
|
||||
"paletteIndices" : "AAABAQABAQEBAQABAAABAAIBAQAAAwAAAgEBAAMDAwABAQADAwQDAwIBAAQEBQQEAQADBQUFBQUAAwUFBQUFBQ=="
|
||||
},
|
||||
"palette" : {
|
||||
"rgba8888" : [ 673720575, 1615868159, -2005909249, 676868351, 677921023, 1217939711 ]
|
||||
}
|
||||
},
|
||||
"diagnostics" : [ ]
|
||||
@ -522,13 +522,13 @@
|
||||
"last_modified" : 1776965154263,
|
||||
"fingerprint" : "77c5277220421226d16f58b1bcfb4eaf157fa4f6c740c5aaebefaf88fb91c22e",
|
||||
"metadata" : {
|
||||
"palette" : {
|
||||
"rgba8888" : [ 1615868159, -2005909249, 673720575, 1217939711, 676868351, 677921023 ]
|
||||
},
|
||||
"tile" : {
|
||||
"width" : 8,
|
||||
"height" : 8,
|
||||
"paletteIndices" : "AAABAQIDAwMAAQEBAQIDAwABAQEBAgMDAAIAAQECAwMCBAQCAAIDAwQFBAUEBAMDBQMFAwMDAwMDAwMDAwMDAw=="
|
||||
},
|
||||
"palette" : {
|
||||
"rgba8888" : [ 1615868159, -2005909249, 673720575, 1217939711, 676868351, 677921023 ]
|
||||
}
|
||||
},
|
||||
"diagnostics" : [ ]
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user