# Original Powerplay activity UI and query inputs Read-only analysis of the pinned Odyssey image `artifacts/ship-model-reference/client-copy/EliteDangerous64.exe`, base `0x140000000`, SHA-256 `6891f70a021fa9f3a0e00458c284f48d1226e68ae7fc02ad48081aed47857e93`. The installed image was updated by Steam and no longer matches this version. No game function was invoked and no original setting was modified. Selected output is under `artifacts/galaxy-query-research/power-activities/`. The current `map-as/scripts/components/leftHandPanels/PowerplayActivityPanelComponent.as` binds dynamic `FilterActivities` rows and sends their `uid`; declared member names are not an inventory. Original function `3AA1840` creates five rows. `3A199E0` writes both `uid` and `sortField` with the supplied number and calls `465B030` for the original localization token: | Original UI uid | Native DS row | Localization | Original Chinese | | --- | --- | --- | --- | | 1 | Undermining | GALAXY_ACTIVITY_UNDERMINING | 暗中破坏 | | 2 | Reinforcing | GALAXY_ACTIVITY_REINFORCING | 巩固中 | | 3 | Acquiring | GALAXY_ACTIVITY_ACQUIRING | 正在获取 | | 4 | BeingUndermined | GALAXY_ACTIVITY_OPPOSING_UNDERMINING | 抵抗破坏 | | 5 | Total | GALAXY_ACTIVITY_TOTAL | 总计 | `GALAXY_ACTIVITY_CONTESTING` aliases `GALAXY_ACTIVITY_OPPOSING_UNDERMINING`; translating the unused ActionScript member `activityTypeContestingBtn` as a separate contesting activity was incorrect. The implemented domain enum keeps names independent from wire IDs; `GalaxyPowerActivities.OriginalUid` is the explicit proven conversion. `3ACF250` binds the Powerplay service identified by global component id `5F3C524` at object `+78`. Original `3AF6A80` enumerates service vfunc `+40` count and `+50(index)` definitions. Definition RGB floats are `+60..68`. `3AA1840` builds actual power options with label from definition `+18`, but the UI `powerID` is enumeration index plus one, while the definition's first integer and later native selected-power fields may use an internal id. These must not be conflated. No public controlling-power list order establishes this mapping. The registration thunk is `1414DF0`, registering base `+58`. Actual constructor `1401E60` writes base vtable `51BB510`, base+8 `51BB540`, and interface `+58` vtable `51BB640`. The interface's ready flags `+308/+309` guard count `+330` and definition vector `+338` (stride `260`), as proved by `1411EE0/1411FD0`. The name is an original refcounted string pointer at definition `+18`; `763B70` reads that pointer and increments its `+10` refcount for the UI. A reader can copy existing definitions without invoking any game method. The same `3AA1840` loop reads the definition's first integer (`iStack_338=*piVar14`) and compares it with `param5`, but this writes the original `isPledged` field (string at `55213D8`), not proof of the selected activity selector namespace. It separately writes `index+1` as `powerID` for UI callbacks. `3B46030` persists the optional activity struct's first field to setting23; `3ACF4A0` restores it at `+188`, and `3AA1840` publishes that optional field as `defaultPowerIndex`. `1412900` bounds its power argument by the definition count and compares it with metadata's controller index. Consequently, the saved selector cannot yet be mapped to `InternalPowerId` simply because that integer appears in a different pledged-state comparison. The tool preserves this raw setting and requires actual power reselection until the callback/index conversion is closed. The original Any row and ActionScript `OnPowerSelectAny` are separate from a named power: saved23 `-2` restores to optional scope `-1`; saved23 `-1` disables that optional input. The tool models the special All scope explicitly. The system metadata getter `141414100` writes its last-key cache at `+668/+670` and invokes an LRU routine. Activity-level getters `141412900/14121E0` also traverse containers and may flush callbacks; their getter-like names do not prove a pure read path. Do not invoke these as read-only facts without analyzing their existing-cache branches. Original `3AF6A80` converts raw definition RGB using `3AC40B0(mode1)` into a dual three-component color representation: source rawRGB is stored at `+0C`. Territory getter `3B265D0` copies the `+0C` triplet and following opacity from `3B27100`'s dual-color result. Normal named-controller territory colors can use actual rawRGB; activity's different getter and special territory-type palettes are separate evidence tasks. Territory `3ACF4A0` restores settings slot24 to `+194` and slot25 as the minimum-level enable flag, with float setting0 for minimum strength. `3B1CFA0` independently confirms special cases 5=total, 4=opposing undermining, 2=reinforcing. `3B27100` combines power/state selection and, only when enabled, a minimum recent counter. There is no separately established action-eligibility boolean in this path. Positive public reinforcement/undermining progress cannot replace this native counter. The derived outer Activities object is vtable `552E5C8` (factory slot `+408`), with color `3B264B0`, predicate `3B42700`, and update `3AF6C40`. The predicate is a range test around the actual current system. It is distinct from the optional Territory activity counter and its threshold; the uniform base getter `108B2A0` does not establish the derived object's display. The read-only existing-cache adapter reports the original recent counter with explicit scope, actual power id and action uid. It converts an actual InternalPowerId through the current definition table to the original metadata index. UID5 reads total metadata; original zero is preserved when metadata and the cache are ready, while absent metadata or unready sources yield null. It does not invoke the original container-mutating getters. The client rejects mismatched scope/id/action and origin/generation changes. Territory's independent optional-activity enable flag is restored from saved selector23: -1 disables it and -2 enables All. With activity enabled, the counter is read even if the minimum toggle is off, because original territory geometry uses it. Only the minimum toggle adds a threshold condition. Null replaces stale facts, and all such evidence is runtime-only and account/process/current-system bound. Territory style uses the original metadata classification and actual power definition for radius, raw RGB, linear RGB and geometry opacity. `PowerTerritoryStyle(system)` verifies the complete current request and scope/id/action before exposing a cached style. The ordinary point getter consumes raw RGB; the original 32-byte geometry producer consumes linear RGB, so the two are preserved separately. RawState/StateIndex remain numeric until their complete name mapping is established; public enum order is not substituted. Unknown styles have no invented radius or circle. Filled geometry and full live visual equivalence remain separate work. Native `465B030` returns localization tokens above; UI colors are not obtained from `EliteColors`. `ColouredRadioButton` listens to `colour4F` from native DataStore. The script `SystemStateType.getColourFromEnum` only colors summary state bars and is not proof of galaxy system RGB endpoints. Implemented: actual UI selection prerequisites including All, five original activity choices, exact saved Action1–5 restore, explicit current-definition name/InternalPowerId selection, independent minimum level, exact query identity, nonpersistent evidence bound to account/process/origin, the pure read-only native Power definition table/name/id/rawRGB adapter (`Navigation.GalaxyPowerOptions.cs`), and scoped recent-counter wire/worker/UI integration. Remaining: saved named-power selector namespace, the distinct outer Activities range display, and live acceptance on the current executable profile. The UI keeps unresolved sources explicit rather than treating absence as a completed zero-result query. Later2026-10-24 closure: the named-selector gap above is now resolved by the actual `46C6270→551FFF0+3C8/3A6CDE0→3AB6760→552D720+28/3B46030` chain. The saved value is zero-based definition Index; the current actual row supplies its independent InternalPowerId and name. Delayed current-definition binding is implemented with strict pending/ambiguous states. See `galaxy-original-power-selection-evidence.md` and its six-function old/new proof; the earlier uncertainty is retained as historical evidence, not current behaviour.