Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
168 commits
Select commit Hold shift + click to select a range
94e5ba8
feat(m217l): bounded on-selection SGCB and LN evidence hydration usin…
masarray Oct 17, 2026
4dcc355
test(m217l): guard finite live SG/LN hydration and strict verified FC…
masarray Oct 17, 2026
1ae22c9
feat(m217l): derive strictly bound CF SIUnit/multiplier reads from se…
masarray Oct 17, 2026
3c9471f
feat(m217l): lazily acquire paired CF engineering units for exact liv…
masarray Oct 17, 2026
4b851e4
test(m217l): assert DataSet-only CF unit read route stays finite and …
masarray Oct 17, 2026
ab73d09
test(m217l): behavioral live-MX DataSet CF pair selection, missing ha…
masarray Oct 17, 2026
9845c4a
test(m217l): repair malformed test fixture and assert live CF-unit se…
masarray Oct 17, 2026
42d8b23
feat(m217l): hydrate exact focused Data Model DO independently of ini…
masarray Oct 17, 2026
f418255
perf(m217l): bound navigation admission history for large IEC 61850 m…
masarray Oct 17, 2026
53c3d7e
test(m217l): assert DO-scoped browser hydration and bounded navigatio…
masarray Oct 17, 2026
0236502
fix(ssot): reconcile divergent M217K/L and bind focused CF hydration …
masarray Oct 17, 2026
6417d59
fix(datamodel): hydrate direct DO/DA navigation and disclosure-arrow …
masarray Oct 17, 2026
bb5daac
test(ssot): replace obsolete DataSet CF and pre-dispatch visited asse…
masarray Oct 17, 2026
c815764
fix(ssot): project canonical MMS Read into monitoring Explorer signal…
masarray Oct 17, 2026
1bf0160
test(ssot): assert FC only on typed DataSet leaves, not structure rows
masarray Oct 17, 2026
df6acd9
fix(ux-ssot): show canonical NamPlt DC summary and release orphaned E…
masarray Oct 17, 2026
27caf8b
fix(nameplate): preserve explicit stale provenance across offline ass…
masarray Oct 17, 2026
4ec5537
test(ux): replace obsolete Command Dock star-row regression contract …
masarray Oct 17, 2026
633b03a
fix(sg): decode IEDScout-style typed LN$SG MMS Read into exact canoni…
masarray Oct 17, 2026
b2495f1
chore(sg): comply with clean-room source identifier guard
masarray Oct 17, 2026
326484e
fix(sg): use supported exact-char root locator for wire identity
masarray Oct 17, 2026
7116fa4
fix(sg): require matching typed primitive when flattening exact MMS S…
masarray Oct 17, 2026
ac8858d
fix(browser): canonical IEC status presentation, explicit angle glyph…
masarray Oct 17, 2026
dd983ce
fix(rcb): hydrate only selected verified RCB operational state via as…
masarray Oct 17, 2026
f53e771
fix(nameplate): project exact current FC=DC child even if parent disc…
masarray Oct 17, 2026
d92fbfa
fix(datamodel): project phase parent from observed exact cVal MX leav…
masarray Oct 17, 2026
8a8fcc1
test(phasor): protect explicit independent angle glyph without implyi…
masarray Oct 17, 2026
c6bbb49
test(browser): align legacy independent-angle assertions with explici…
masarray Oct 17, 2026
094215a
fix(browser): prefer verified CF engineering units and remove false i…
masarray Oct 17, 2026
b7bebe0
fix(browser): hydrate expanded live CF/DC attribute subtrees through …
masarray Oct 17, 2026
0abfdbf
test(browser): preserve phasor pairing safety and verify live CF/DC f…
masarray Oct 17, 2026
adfedc3
chore(browser): maintain clean-room identifier policy in phasor prese…
masarray Oct 17, 2026
d7ea832
test(browser): assert canonical Report provenance without operator-fa…
masarray Oct 17, 2026
95d2bb9
fix(browser): hydrate verified measurement CF units from canonical mo…
masarray Oct 17, 2026
6a6deda
fix(browser): import WPF routed event type for scoped RCB unit read
masarray Oct 17, 2026
5a959d8
fix(browser): render verified SG analogue setting magnitudes with can…
masarray Oct 17, 2026
6b7b78d
test(browser): use IEC verified V symbol rather than Kelvin ordinal i…
masarray Oct 17, 2026
6bd1a51
fix(browser): hydrate IEC MV scalar power and frequency units beside …
masarray Oct 17, 2026
7e75064
test(browser): prove RCB and DataSet use identical canonical CF unit …
masarray Oct 17, 2026
c9a6b9f
fix(browser): retain observed polar angles in shared SSOT-based repor…
masarray Oct 17, 2026
573a095
fix(browser): expose observed three-phase angles on compact MMXU root…
masarray Oct 17, 2026
1137483
test(browser): assert model and report dataset show identical verifie…
masarray Oct 17, 2026
74396f7
fix(browser): keep degree fallback limited to proven IEC cVal vectors
masarray Oct 17, 2026
66c6866
fix(browser): restore Report CF read dispatch, prioritize SG settings…
masarray Oct 18, 2026
78e533e
test(P0): reproduce parent-angle unit leakage, PhV CF owner, and XCBR…
masarray Oct 18, 2026
83f925c
fix(P0): classify IEC vector angle dimension before unit-owner inheri…
masarray Oct 18, 2026
f4be49e
fix(P0): resolve model-verified XCBR CBOpCap from normative typed enu…
masarray Oct 18, 2026
59b66b3
fix(P0): resolve model-verified XCBR CBOpCap from normative typed enu…
masarray Oct 18, 2026
db2430c
fix(P0): resolve model-verified XCBR CBOpCap from normative typed enu…
masarray Oct 18, 2026
a5060e9
test(P0): name IEC field fixture without external reference identifiers
masarray Oct 18, 2026
10967ec
chore(P0): remove test path disallowed by source clean-room guard
masarray Oct 18, 2026
1a2e508
feat(P0): single exact model-verified on-expand raw q/t MMS Read plan
masarray Oct 18, 2026
c3b66a9
feat(P0): wire q/t detail expansion into scoped single-leaf read and …
masarray Oct 18, 2026
65de7af
test(P0): exact phase q/t on-expand typed wire to association ledger …
masarray Oct 18, 2026
74232e8
fix(P0): reject contaminated exact angle metadata, preserve normative…
masarray Oct 18, 2026
e0d4616
test(P0): adversarial magnitude unit on exact angle parent and leaf
masarray Oct 18, 2026
577f40f
fix(P0): preserve conflict fail-closed for null angle units while blo…
masarray Oct 18, 2026
5067823
feat(P0): resolve nested q/t strictly by exact LN GVA TypeSpecificati…
masarray Oct 18, 2026
e012621
fix(P0): emit exact phase raw q/t from typed MMS Report without sibli…
masarray Oct 18, 2026
763774d
fix(P0): pass active typed live MMS schema to nested Report q/t extra…
masarray Oct 18, 2026
569deb4
fix(P0): quarantine conflicting GVA carrier order and alias child off…
masarray Oct 18, 2026
d744cac
test(P0): nested typed WYE/DEL q/t per phase, FC fences, missing byte…
masarray Oct 18, 2026
84cc0e7
feat(P0): model-typed integer ST counter unit from exact fresh CF own…
masarray Oct 18, 2026
1b28a5e
fix(P0): shared Browser detail projection formats CF-proven numeric X…
masarray Oct 18, 2026
d51e1fc
test(P0): XCBR numeric ST units kA²t/s, exact FC and stale/enum exclu…
masarray Oct 18, 2026
4b5b9b5
fix(P0): one semantic unit resolution for parent, leaf, DataSet, Repo…
masarray Oct 18, 2026
9724de6
fix(P0): apply identical typed SSOT engineering unit to XCBR parent a…
masarray Oct 18, 2026
5be4102
test(P0): XCBR parent and leaf share model-proven engineering unit
masarray Oct 18, 2026
2d02fab
perf(P0): index typed numeric ST declarations once per live model; re…
masarray Oct 18, 2026
aa3e566
perf(P0): weak model-keyed typed Report layout index; no per-frame mo…
masarray Oct 18, 2026
9f0cbf1
feat(P0): proof-bound SG EnumType symbols from SHA-verified CID and e…
masarray Oct 18, 2026
7b49c4a
test(P0): exact source SCL EnumType SG mapping, type/FC mismatch, dup…
masarray Oct 18, 2026
f6cbe4c
fix(P0): render vendor SG via SHA-verified exact EnumType; associatio…
masarray Oct 18, 2026
edf52ad
fix(P0): isolate SCL SG enum bindings to selected IED logical devices…
masarray Oct 18, 2026
f52d512
fix(P0): invalidate cached SG enum declaration on trusted SCL source …
masarray Oct 18, 2026
199cc97
feat(P0): read-only exact-FC SSOT coverage metrics for CF, SG EnumTyp…
masarray Oct 18, 2026
e50b3d5
test(P0): exact SSOT acceptance metrics with q/t raw absence, CF pair…
masarray Oct 18, 2026
d72c3a2
feat(P0): expose bounded SSOT acceptance coverage in existing Browser…
masarray Oct 18, 2026
ed594aa
fix(P0): fence SCL EnumType metadata flights by MMS association and c…
masarray Oct 18, 2026
63d5858
fix(P0): reject contradictory live MMS boolean vs SCL EnumType and re…
masarray Oct 18, 2026
8053192
fix(P0): remove intrusive Browser hover provenance and persist active…
masarray Oct 18, 2026
ee58438
test(P0): BCUGE XCBR observed actVal/ST and setMag/SP parent parity w…
masarray Oct 18, 2026
14d98a3
fix(P0): exact XCBR actVal ST and setMag SP DO scalar selection witho…
masarray Oct 18, 2026
55ba70c
fix(P0): require fresh exact owner CF for typed XCBR actVal and SP se…
masarray Oct 18, 2026
64d5be3
fix(P0): one proof-only engineering unit path for XCBR numeric actVal…
masarray Oct 18, 2026
588d51a
test(P0): active Explorer selection visible without focus; remove int…
masarray Oct 18, 2026
ecbf252
fix(P0): distinct local scalar suffix variable in CF schema index
masarray Oct 18, 2026
0b39a37
fix(P0): XCBR-only CBOpCap exact typed ENG/ENS status decoding; unkno…
masarray Oct 18, 2026
6f6a51e
test(P0): field XCBR CBOpCap typed ENS/ENG decoding and strict LN/CDC…
masarray Oct 18, 2026
a91d825
fix(P0): admit exact GVA attribute self-reference as typed XCBR unit …
masarray Oct 18, 2026
78aba65
test(P0): SCL exact DA ObjectReference supported alongside GVA DO own…
masarray Oct 18, 2026
0f5608b
test(P0): update legacy Browser provenance UX contract to prohibit ob…
masarray Oct 18, 2026
03b398b
test(P0): BCUGE Protection unique SG setVal/setMag parent, ambiguous …
masarray Oct 18, 2026
01e2871
fix(P0): bind Protection DO parents to unique observed active SG setV…
masarray Oct 18, 2026
04308a5
fix(P0): exact XCBR CBOpCap enumerated wire type supports GVA model w…
masarray Oct 18, 2026
fc2bf41
test(P0): typed XCBR CBOpCap remains authoritative when GVA CDC is un…
masarray Oct 18, 2026
9a41e09
test(P0): expanded XCBR units CF offers two exact owner-only bounded …
masarray Oct 18, 2026
f0fc11b
fix(P0): exact model-backed XCBR CF units on-expand read scope withou…
masarray Oct 18, 2026
b006306
fix(P0): keep exact sub-DO CF hydration scoped; only true DO clicks a…
masarray Oct 18, 2026
e5f1c67
test(P0): reproduce BCUGE PTOC SP setVal/setCharact parent Not read a…
masarray Oct 18, 2026
0f8a4ff
fix(P0): parent protection PTOC/SP enum/bool/curve setVal and setChar…
masarray Oct 18, 2026
eecf615
fix(P0): prioritize typed Protection SP/SG scalar over CF metadata in…
masarray Oct 18, 2026
89587d1
test(P0): online typed SP enum binds only same SHA-verified PTOC SCL …
masarray Oct 18, 2026
c0e8e06
fix(P0): allow exact verified SP or active SG EnumType symbols withou…
masarray Oct 18, 2026
49dfee6
fix(P0): project verified SP/SG PTOC enum setVal/setCharact uniformly…
masarray Oct 18, 2026
d058fed
fix(P0): dimensionally classify PTOC SP setCharact enum and setting m…
masarray Oct 18, 2026
c679537
test(P0): SP setCharact enum cannot inherit time/engineering magnitud…
masarray Oct 18, 2026
4683638
test(P0): prioritize typed PTOC Str ST.general over CF to avoid unrea…
masarray Oct 18, 2026
66b9d36
fix(P0): ST ACT/ACD protection flags before CF metadata in bounded fo…
masarray Oct 18, 2026
9bce9b1
test(P0): reproduce stale RCB Explorer usage after delayed monitor ac…
masarray Oct 18, 2026
4b4a094
fix(P0): dynamically reconcile RCB caller-owned glyph from active ass…
masarray Oct 18, 2026
625ed23
fix(P0): notify existing left/right RCB rows on ownership transition …
masarray Oct 18, 2026
88d99a0
fix(P0): live RCB ownership refresh on UI tick even when SSOT value v…
masarray Oct 18, 2026
049fb8b
test(P0): use concrete empty HashSet for IReadOnlySet API; restore gr…
masarray Oct 18, 2026
3267aae
test(P0): IEDScout wire capture proves read-only PTOC $SP0 FC root di…
masarray Oct 18, 2026
29c9d59
fix(P0): admit exact typed BCUGE SP0 FC root with strict order/type a…
masarray Oct 18, 2026
d26df8e
fix(P0): share bounded typed SG/SP FC root flight with per-leaf safe …
masarray Oct 18, 2026
c52c7d2
fix(P0): verify GVA and perform one bounded read-only FC=SP0 root lik…
masarray Oct 18, 2026
0d8baab
test(P0): satisfy clean-room source text validation for captured BCUG…
masarray Oct 18, 2026
e862d9e
fix(P0): repair FC-root projection source assembly and preserve stric…
masarray Oct 18, 2026
6340629
test(P0): typed SP0 MMS structure projects exact Boolean and enum chi…
masarray Oct 18, 2026
e23bf97
test(P0): update former SG-only root contract for independently verif…
masarray Oct 18, 2026
eb33edd
test(P0): reproduce Protection SP starvation and demand typed GE SP0 …
masarray Oct 18, 2026
1fc8224
fix(P0): fair FC-quota admission stops Protection SP/SG and CF starva…
masarray Oct 18, 2026
ef45aab
fix(P0): attempt typed setting FC roots before expensive scalar ST fa…
masarray Oct 18, 2026
d95e013
fix(P0): use discovered GE FC0 names for SP SG CF DC EX strict typed …
masarray Oct 18, 2026
4c29006
fix(P0): remove 32-target veto blocking typed FC root reads on real d…
masarray Oct 18, 2026
56dd36f
fix(P0): typed read-only MMS FC0 GVA+Read for Protection SG SP CF DC …
masarray Oct 18, 2026
7a34b3e
test(P0): match observed GE SG0 FC root while retaining exact SG and …
masarray Oct 18, 2026
34400f2
test(P0): match observed GE SG0 FC root while retaining exact SG and …
masarray Oct 18, 2026
a1c4187
fix(P0): stop repeated GVA root timeouts across sibling protection se…
masarray Oct 18, 2026
8768304
fix(P0): pass automatic scoped-read envelope to isolated client witho…
masarray Oct 18, 2026
9bf7fc8
fix(P0): prioritize exact SP/SG and CF on explicit Read LN without tr…
masarray Oct 18, 2026
7671818
fix(P0): explicit LN Read reaches protection settings first while ret…
masarray Oct 18, 2026
3761d89
test(P0): explicit Read LN preserves full identity inventory while pr…
masarray Oct 18, 2026
f7702cb
test(P0): replace brittle old Take token assertion with bounded fair …
masarray Oct 18, 2026
5633c4f
test(P0): typed CF0 root has distinct FC identity, not a forbidden SP…
masarray Oct 18, 2026
f272b7b
test(p0): reproduce SGCB failed-chunk starvation and dense typed root…
masarray Oct 18, 2026
e515510
fix(p0): let bounded SGCB continuation bypass exact failed leaf attempts
masarray Oct 18, 2026
158191c
fix(p0): permit bounded dense typed FC root projection up to 512 exac…
masarray Oct 18, 2026
c0b8f17
fix(p0): try type-verified FC root on dense SGCB inventories before l…
masarray Oct 18, 2026
23838cb
fix(p0): expose strict association guard for SGCB absence evidence reuse
masarray Oct 18, 2026
6fce223
fix(p0): continue SGCB hydration after exact failures and display tot…
masarray Oct 18, 2026
e182dce
feat(p0): export truthful per-target SGCB/LN coverage and canonical l…
masarray Oct 18, 2026
22608f9
feat(p0): add read-only Browser CSV evidence export without MMS side …
masarray Oct 18, 2026
5461813
feat(p0): add unobtrusive Browser read evidence CSV action
masarray Oct 18, 2026
ab80c71
test(p0): verify per-target CSV evidence is association-bound, escape…
masarray Oct 18, 2026
58a0dba
test(p0): red regression for typed FC root full-child projection beyo…
masarray Oct 18, 2026
ed8fab3
fix(p0): admit all uniquely verified children of already selected typ…
masarray Oct 18, 2026
6675b69
fix(p0): retain typed wire-proven unscheduled siblings for one-flight…
masarray Oct 18, 2026
679805c
fix(p0): publish all scoped typed FC root child evidence on independe…
masarray Oct 18, 2026
da6c39d
fix(p0): project scoped full typed FC roots through normal nonmonitor…
masarray Oct 18, 2026
ca39df3
fix(p0): carry exact bounded selected-page root scope across responsi…
masarray Oct 18, 2026
47fe2fb
fix(p0): one focused selected-page root result hydrates all exactly v…
masarray Oct 18, 2026
4a86bab
docs(p0): record captured five-root MMS transaction and exact bounded…
masarray Oct 18, 2026
dbccde2
fix(p0): verify per-root GVA then use ordered MMS multi-variable batc…
masarray Oct 18, 2026
ced5f7a
fix(p0): grouped type-verified MMS FC root prefetch, preserve leaf fa…
masarray Oct 18, 2026
29589af
build(p0): pin trial engine exact SHA from PR174 for grouped FC MMS R…
masarray Oct 18, 2026
3a6e13b
fix(p0): reuse existing pinned ARIEC bounded grouped MMS executor ins…
masarray Oct 18, 2026
a089ec7
build(p0): restore field trial engine pin and all original interopera…
masarray Oct 18, 2026
e9029c5
test(p0): captured 5-root grouped MMS Read matches pinned engine's ex…
masarray Oct 18, 2026
7134046
docs(p0): record pin-safe five-root executor integration and unverifi…
masarray Oct 18, 2026
0298edb
fix(p0): traverse successive bounded five-root MMS groups instead of …
masarray Oct 18, 2026
faaf09e
fix(p0): enforce finite per-page typed root admission during grouped …
masarray Oct 18, 2026
f8412d4
fix(p0): restore complete verified grouped FC Read implementation aft…
masarray Oct 18, 2026
1b7b51e
fix(p0): publish verified root sibling fanout even if the queued leaf…
masarray Oct 18, 2026
c34bf1e
fix(p0): publish verified root sibling fanout even if the queued leaf…
masarray Oct 18, 2026
866cea6
fix(p0): select target identity from typed read result in grouped roo…
masarray Oct 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
120 changes: 120 additions & 0 deletions MainWindow.IedBrowser.RcbFocusedRead.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
using System.Windows;
using System.Windows.Controls;
using System.Windows.Threading;
using ArIED61850Tester.Models;
using ArIED61850Tester.Services;

namespace ArIED61850Tester;

public partial class MainWindow
{
private readonly IedBrowserFocusedAdmission _iedBrowserRcbFocusedAdmission = new();

private void QueueIedBrowserRcbFocusedRead(IedBrowserTreeRow row)
{
if (row is not { Kind: "RCB", Payload: RcbExportRow rcb } ||
SelectedDevice is not { IsConnected: true, IsDemo: false } device ||
device.LiveDiscoveryModel is null)
return;
var targets = IedBrowserRcbFocusedReadPlan.Build(device.LiveDiscoveryModel, rcb);
if (targets.Count == 0)
{
QueueIedBrowserReportUnitRead(row);
return;
}
// Only the currently visible RCB and its three verified read-only
// attribute names; never Read All or operate a device.
var association = device.LiveValues.Association;
var key = IedBrowserFocusedAdmission.PageKey(row.Key, null) + "|RCB";
if (!_iedBrowserRcbFocusedAdmission.CanStart(
device.DeviceId, association, key, 1))
return;
Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(async () =>
{
if (!ReferenceEquals(SelectedDevice, device) ||
!ReferenceEquals(_iedBrowserRenderedPage, row) ||
device.LiveValues.Association != association ||
!device.IsConnected || device.IsBusy || _iedBrowserReadOperation != null ||
!_iedBrowserRcbFocusedAdmission.TryStart(
device.DeviceId, association, key, 1))
return;
var lease = new IedBrowserRcbCheckLease(device);
using var cts = CancellationTokenSource.CreateLinkedTokenSource(
_applicationCancellation.Token);
cts.CancelAfter(TimeSpan.FromSeconds(18));
_iedBrowserReadOperation = cts;
var values = new IedBrowserReadResultInbox(() => { });
var progress = new Progress<IedBrowserReadProgress>(_ => { });
try
{
if (device.IsMonitoring)
await IedBrowserIsolatedReadService.ReadAsync(
device, targets, values, progress, cts.Token);
else
await _runtime.ReadBrowserValuesAsync(
device, targets, values, progress, cts.Token);
if (!lease.IsCurrent(device) || !ReferenceEquals(SelectedDevice, device))
return;
values.Drain(result =>
{
if (result.Error.Length != 0 ||
!IedBrowserReadValuePolicy.TryAcceptDisplay(
result.Value, out var scalar, out _))
return;
device.LiveValues.PublishForAssociation(association,
result.Target.Reference, result.Target.FunctionalConstraint,
scalar, result.Quality, result.DeviceTimestamp, "MMS Read",
result.UtcTimeEvidence, result.QualityEvidence);
});
_iedBrowserLastLiveVersion = -1;
RefreshIedBrowserVisibleValues();
}
catch (OperationCanceledException) { /* no stale admission */ }
catch (Exception ex) when (ex is not OperationCanceledException)
{
if (lease.IsCurrent(device) && ReferenceEquals(_iedBrowserRenderedPage, row))
IedBrowserDetailStatus.ToolTip =
"Selected RCB read-only MMS inspection failed: " + ex.Message;
}
finally
{
if (ReferenceEquals(_iedBrowserReadOperation, cts))
_iedBrowserReadOperation = null;
if (lease.IsCurrent(device) &&
ReferenceEquals(_iedBrowserRenderedPage, row))
UpdateIedBrowserRcbReportDetails();
RefreshIedBrowserReadButtons();
if (lease.IsCurrent(device) &&
ReferenceEquals(_iedBrowserRenderedPage, row))
QueueIedBrowserReportUnitRead(row);
}
}));
}

private void QueueIedBrowserReportUnitRead(IedBrowserTreeRow row)
{
if (row.Kind != "RCB" ||
SelectedDevice is not { IsConnected: true, IsDemo: false } device ||
device.LiveDiscoveryModel is null) return;
var association = device.LiveValues.Association;
var key = IedBrowserFocusedAdmission.PageKey(row.Key, "|unit-CF");
if (!_iedBrowserAutoReadAdmission.CanStart(
device.DeviceId, association, key, 3)) return;
Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() =>
{
if (!ReferenceEquals(SelectedDevice, device) ||
device.LiveValues.Association != association ||
!ReferenceEquals(_iedBrowserNavigation.Current, row) ||
!ReferenceEquals(_iedBrowserRenderedPage, row) ||
device.IsBusy || _iedBrowserReadOperation is not null) return;
if (IedBrowserMeasurementMetadataReadPlan.BuildForPage(
device.LiveDiscoveryModel, row, device.LiveValues).Count == 0)
{
_iedBrowserAutoReadAdmission.Complete(key);
return;
}
IedBrowserReadValues_Click(new Button { Tag = "ReportUnitAuto" },
new RoutedEventArgs());
}));
}
}
Loading
Loading