Skip to main content

fidl_fuchsia_component_internal_common/
fidl_fuchsia_component_internal_common.rs

1// WARNING: This file is machine generated by fidlgen.
2
3#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11/// A single entry in an allowlist, expressed in one of three forms:
12///
13///   1. Exact moniker - Most entries should fall under this case,
14///      where the exact monikers of allowed components are listed.
15///      For example, "/foo/bar".
16///   2. Realm - Realms can be allowlisted such that any descendant will be
17///      allowed without being listed explicitly. For example, "/foo/**"
18///      allows any descendant of "/foo" (but not foo itself).
19///   3. Collection - Individual collections can also be allowlisted. For
20///      example, "/foo/bar:**" will allow any child in foo's "bar"
21///      collection and any descendant thereof, but not foo or other
22///      children of foo.
23pub type AllowlistEntryMoniker = String;
24
25/// 256 bits encoded in lower-cased base64 (64 chars).
26pub type InstanceId = String;
27
28/// The maximum size of the JobPolicyAllowlists entries.
29/// This value is currently set arbitrarily.
30pub const MAX_ALLOWLIST_SIZE: u64 = 128;
31
32/// The builtin resolver to use for the fuchsia-boot scheme, if any.
33#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
34#[repr(u8)]
35pub enum BuiltinBootResolver {
36    /// No builtin boot resolver is used.
37    None = 1,
38    /// Try to use the /boot directory from the namespace. Typically this is provided
39    /// to component manager during initialization of the system.
40    Boot = 2,
41}
42
43impl BuiltinBootResolver {
44    #[inline]
45    pub fn from_primitive(prim: u8) -> Option<Self> {
46        match prim {
47            1 => Some(Self::None),
48            2 => Some(Self::Boot),
49            _ => None,
50        }
51    }
52
53    #[inline]
54    pub const fn into_primitive(self) -> u8 {
55        self as u8
56    }
57}
58
59/// Where to log to.
60#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
61#[repr(u8)]
62pub enum LogDestination {
63    /// Log to syslog.
64    Syslog = 1,
65    /// Log to klog.
66    Klog = 2,
67}
68
69impl LogDestination {
70    #[inline]
71    pub fn from_primitive(prim: u8) -> Option<Self> {
72        match prim {
73            1 => Some(Self::Syslog),
74            2 => Some(Self::Klog),
75            _ => None,
76        }
77    }
78
79    #[inline]
80    pub const fn into_primitive(self) -> u8 {
81        self as u8
82    }
83}
84
85/// If and how the realm builder resolver and runner will be used.
86#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
87#[repr(u8)]
88pub enum RealmBuilderResolverAndRunner {
89    /// The realm builder resolver and runner are not used.
90    None = 1,
91    /// The realm builder resolver and runner will be accessed through component
92    /// manager's namespace, and made available to the root realm.
93    Namespace = 2,
94}
95
96impl RealmBuilderResolverAndRunner {
97    #[inline]
98    pub fn from_primitive(prim: u8) -> Option<Self> {
99        match prim {
100            1 => Some(Self::None),
101            2 => Some(Self::Namespace),
102            _ => None,
103        }
104    }
105
106    #[inline]
107    pub const fn into_primitive(self) -> u8 {
108        self as u8
109    }
110}
111
112/// Where to obtain the trace provider from.
113/// to find the trace provider to register with.
114#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
115#[repr(u8)]
116pub enum TraceProvider {
117    /// Default. Get it from the normal fuchsia.tracing.provider.Registry.
118    Namespace = 1,
119    /// Get it from the root component's exposed directory. It is expected that the root
120    /// component exposes `fuchsia.tracing.provider.Registry` protocol to its parent.
121    RootExposed = 2,
122}
123
124impl TraceProvider {
125    #[inline]
126    pub fn from_primitive(prim: u8) -> Option<Self> {
127        match prim {
128            1 => Some(Self::Namespace),
129            2 => Some(Self::RootExposed),
130            _ => None,
131        }
132    }
133
134    #[inline]
135    pub const fn into_primitive(self) -> u8 {
136        self as u8
137    }
138}
139
140/// Where to obtain the vmex resource from, if this component_manager is hosting bootfs.
141#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
142#[repr(u8)]
143pub enum VmexSource {
144    /// Get it from the PA_SYSTEM_RESOURCE handle passed to component_manager
145    SystemResource = 1,
146    /// Get it from the /svc/fuchsia.kernel.VmexResource protocol in
147    /// component_manager's namespace.
148    Namespace = 2,
149}
150
151impl VmexSource {
152    #[inline]
153    pub fn from_primitive(prim: u8) -> Option<Self> {
154        match prim {
155            1 => Some(Self::SystemResource),
156            2 => Some(Self::Namespace),
157            _ => None,
158        }
159    }
160
161    #[inline]
162    pub const fn into_primitive(self) -> u8 {
163        self as u8
164    }
165}
166
167/// The enforcement and validation policy to apply to component target ABI revisions.
168#[derive(Clone, Debug, Default, PartialEq)]
169pub struct AbiRevisionPolicy {
170    /// Allowlist entry monikers for components that will be permitted to run
171    /// even if they fail ABI revision checks. This should _never_ be used. Any
172    /// component that bypasses these checks is unsupported by the platform and
173    /// may behave in unexpected ways!
174    pub allowlist: Option<Vec<String>>,
175    #[doc(hidden)]
176    pub __source_breaking: fidl::marker::SourceBreaking,
177}
178
179impl fidl::Persistable for AbiRevisionPolicy {}
180
181#[derive(Clone, Debug, Default, PartialEq)]
182pub struct AllowlistedDirectory {
183    #[doc(hidden)]
184    pub __source_breaking: fidl::marker::SourceBreaking,
185}
186
187impl fidl::Persistable for AllowlistedDirectory {}
188
189#[derive(Clone, Debug, Default, PartialEq)]
190pub struct AllowlistedProtocol {
191    #[doc(hidden)]
192    pub __source_breaking: fidl::marker::SourceBreaking,
193}
194
195impl fidl::Persistable for AllowlistedProtocol {}
196
197#[derive(Clone, Debug, Default, PartialEq)]
198pub struct AllowlistedResolver {
199    #[doc(hidden)]
200    pub __source_breaking: fidl::marker::SourceBreaking,
201}
202
203impl fidl::Persistable for AllowlistedResolver {}
204
205#[derive(Clone, Debug, Default, PartialEq)]
206pub struct AllowlistedRunner {
207    #[doc(hidden)]
208    pub __source_breaking: fidl::marker::SourceBreaking,
209}
210
211impl fidl::Persistable for AllowlistedRunner {}
212
213#[derive(Clone, Debug, Default, PartialEq)]
214pub struct AllowlistedService {
215    #[doc(hidden)]
216    pub __source_breaking: fidl::marker::SourceBreaking,
217}
218
219impl fidl::Persistable for AllowlistedService {}
220
221#[derive(Clone, Debug, Default, PartialEq)]
222pub struct AllowlistedStorage {
223    #[doc(hidden)]
224    pub __source_breaking: fidl::marker::SourceBreaking,
225}
226
227impl fidl::Persistable for AllowlistedStorage {}
228
229/// Defines a single capability policy entry in the set of capability policy
230/// allowlists.
231#[derive(Clone, Debug, Default, PartialEq)]
232pub struct CapabilityAllowlistEntry {
233    /// The `source_moniker` represents the origin of a capability. The
234    /// `source_moniker` is either a moniker or '<component_manager>'.
235    pub source_moniker: Option<String>,
236    /// The source name of this particular capability.
237    pub source_name: Option<String>,
238    /// Represents the type of capability that is being restricted along
239    /// with any other properties required by a particular capability type.
240    pub capability: Option<AllowlistedCapability>,
241    /// The set of components, described by either exact monikers, realm, or collection,
242    /// that are allowed to use this specific capability.
243    pub target_monikers: Option<Vec<String>>,
244    /// The original source type of this capability, self or framework.
245    pub source: Option<fidl_fuchsia_component_decl_common::Ref>,
246    #[doc(hidden)]
247    pub __source_breaking: fidl::marker::SourceBreaking,
248}
249
250impl fidl::Persistable for CapabilityAllowlistEntry {}
251
252/// Defines the total set of capability allowlists. Each
253/// `source_moniker` + `capability` pair must be unique in the vector.
254#[derive(Clone, Debug, Default, PartialEq)]
255pub struct CapabilityPolicyAllowlists {
256    pub allowlist: Option<Vec<CapabilityAllowlistEntry>>,
257    #[doc(hidden)]
258    pub __source_breaking: fidl::marker::SourceBreaking,
259}
260
261impl fidl::Persistable for CapabilityPolicyAllowlists {}
262
263/// Allowlists for privileged child options.
264#[derive(Clone, Debug, Default, PartialEq)]
265pub struct ChildPolicyAllowlists {
266    /// Allowlist entry monikers of component instances allowed to have the
267    /// `on_terminate=REBOOT` in their `children` declaration.
268    pub reboot_on_terminate: Option<Vec<String>>,
269    #[doc(hidden)]
270    pub __source_breaking: fidl::marker::SourceBreaking,
271}
272
273impl fidl::Persistable for ChildPolicyAllowlists {}
274
275/// Top-level type describing the component ID index.
276#[derive(Clone, Debug, Default, PartialEq)]
277pub struct ComponentIdIndex {
278    /// A list of component ID instance entries.
279    ///
280    /// Required, but may be empty.
281    pub instances: Option<Vec<InstanceIdEntry>>,
282    #[doc(hidden)]
283    pub __source_breaking: fidl::marker::SourceBreaking,
284}
285
286impl fidl::Persistable for ComponentIdIndex {}
287
288#[derive(Clone, Debug, Default, PartialEq)]
289pub struct Config {
290    /// If true, component manager will be in debug mode. In this mode, component manager
291    /// provides the `EventSource` protocol and exposes this protocol. Component
292    /// manager will not start until it is resumed by a call to
293    /// `EventSource.StartComponentTree`.
294    ///
295    /// This is done so that an external component (say an integration test) can subscribe
296    /// to events before the root component has started.
297    pub debug: Option<bool>,
298    /// How many children, maximum, are returned by a call to `Realm.ChildIterator.next()`.
299    pub list_children_batch_size: Option<u32>,
300    /// Security policy configuration.
301    pub security_policy: Option<SecurityPolicy>,
302    /// Capabilities offered from component manager's namespace.
303    pub namespace_capabilities: Option<Vec<fidl_fuchsia_component_decl_common::Capability>>,
304    /// If true, component_manager will serve an instance of fuchsia.process.Launcher and use this
305    /// launcher for the built-in ELF component runner. The root component can additionally
306    /// use and/or offer this service using `/builtin/fuchsia.process.Launcher` from realm.
307    /// This flag exists because the built-in process launcher *only* works when
308    /// component_manager runs under a job that has ZX_POL_NEW_PROCESS set to allow, like the root
309    /// job. Otherwise, the component_manager process cannot directly create process through
310    /// zx_process_create. When we run component_manager elsewhere, like in test environments, it
311    /// has to use the fuchsia.process.Launcher service provided through its namespace instead.
312    pub use_builtin_process_launcher: Option<bool>,
313    /// If true, component_manager will maintain a UTC kernel clock and vend write handles through
314    /// an instance of `fuchsia.time.Maintenance`. This flag should only be used with the top-level
315    /// component_manager.
316    pub maintain_utc_clock: Option<bool>,
317    /// The number of threads to use for running component_manager's executor.
318    /// If not present, interpreted as 1.
319    pub num_threads: Option<u8>,
320    /// URL of the root component to launch. This field is used if the no URL
321    /// is passed to component manager. If value is passed in both places, then
322    /// an error is raised.
323    pub root_component_url: Option<String>,
324    /// Path to the component ID index. An empty value defaults to an empty index.
325    /// An invalid index causes component_manager to abort.
326    pub component_id_index_path: Option<String>,
327    /// Where to log to.
328    pub log_destination: Option<LogDestination>,
329    /// If true, component manager will log all events dispatched in the topology.
330    pub log_all_events: Option<bool>,
331    /// Which builtin resolver to use for the fuchsia-boot scheme.
332    /// If not present, interpreted as BuiltinBootResolver.NONE.
333    pub builtin_boot_resolver: Option<BuiltinBootResolver>,
334    /// If and how the realm builder resolver and runner will be used. Typically
335    /// these capabilities from realm builder are available to a nested
336    /// component manager that is undergoing an integration test.
337    pub realm_builder_resolver_and_runner: Option<RealmBuilderResolverAndRunner>,
338    /// Capabilities offered from component manager as built-in capabilities.
339    pub builtin_capabilities: Option<Vec<fidl_fuchsia_component_decl_common::Capability>>,
340    /// Enables Component Manager's introspection APIs (RealmQuery, RealmExplorer,
341    /// RouteValidator, LifecycleController, etc.) for use by components.
342    pub enable_introspection: Option<bool>,
343    /// The enforcement and validation policy to apply to component target ABI
344    /// revisions.
345    pub abi_revision_policy: Option<AbiRevisionPolicy>,
346    /// Where to obtain the vmex resource from, if this component_manager is hosting bootfs.
347    /// If not present, defaults to `VmexSource::SYSTEM_RESOURCE`.
348    pub vmex_source: Option<VmexSource>,
349    /// Information about the health checks during the update process.
350    pub health_check: Option<HealthCheck>,
351    /// Where to look for the trace provider. If missing, defaults to TraceProvider::NAMESPACE.
352    /// This is ignored on non-tracing builds.
353    pub trace_provider: Option<TraceProvider>,
354    /// Capabilities to inject into components at runtime.
355    pub inject_capabilities: Option<Vec<InjectedCapabilities>>,
356    /// Runtime configuration for Scudo heap allocation, using a 'KEY=VALUE,KEY=VALUE'
357    /// format. See Scudo flags documentation for details. It is shadowed by `SCUDO_OPTIONS`
358    pub scudo_options: Option<String>,
359    #[doc(hidden)]
360    pub __source_breaking: fidl::marker::SourceBreaking,
361}
362
363impl fidl::Persistable for Config {}
364
365/// Defines a capability policy entry in the set of debug capability policy
366/// allowlists.
367#[derive(Clone, Debug, Default, PartialEq)]
368pub struct DebugRegistrationAllowlistEntry {
369    /// The name of the capability as it's registered in the environment.
370    pub name: Option<String>,
371    /// Represents the type of capability that is being restricted along
372    /// with any other properties required by a particular capability type.
373    pub debug: Option<AllowlistedDebugRegistration>,
374    /// The moniker of the component which is allowed to register
375    /// this capability in its environment's debug sction.
376    pub moniker: Option<String>,
377    /// Name of the environment where this capability can be registered.
378    pub environment_name: Option<String>,
379    #[doc(hidden)]
380    pub __source_breaking: fidl::marker::SourceBreaking,
381}
382
383impl fidl::Persistable for DebugRegistrationAllowlistEntry {}
384
385/// Defines the total set of debug capability allowlists.
386#[derive(Clone, Debug, Default, PartialEq)]
387pub struct DebugRegistrationPolicyAllowlists {
388    pub allowlist: Option<Vec<DebugRegistrationAllowlistEntry>>,
389    #[doc(hidden)]
390    pub __source_breaking: fidl::marker::SourceBreaking,
391}
392
393impl fidl::Persistable for DebugRegistrationPolicyAllowlists {}
394
395/// This value is used internally by event stream routers, to carry information
396/// pertinent to the route.
397#[derive(Clone, Debug, Default, PartialEq)]
398pub struct EventStreamRouteMetadata {
399    /// The moniker of the component that has set a scope on this event stream.
400    /// Unset if there is no scope on the event stream.
401    pub scope_moniker: Option<String>,
402    /// The scope(s) from which the consumer of this event stream will be able
403    /// to observe events. Relative to the `scope_moniker`. Unset if there is no
404    /// scope on the event stream.
405    pub scope: Option<Vec<fidl_fuchsia_component_decl_common::Ref>>,
406    #[doc(hidden)]
407    pub __source_breaking: fidl::marker::SourceBreaking,
408}
409
410impl fidl::Persistable for EventStreamRouteMetadata {}
411
412/// Information about the health checks during the update process.
413#[derive(Clone, Debug, Default, PartialEq)]
414pub struct HealthCheck {
415    /// Component monikers that must be healthy in order to complete an OTA update.
416    pub monikers: Option<Vec<String>>,
417    #[doc(hidden)]
418    pub __source_breaking: fidl::marker::SourceBreaking,
419}
420
421impl fidl::Persistable for HealthCheck {}
422
423/// Declares a group of extra capabilities that are layered at runtime on top of
424/// those that would normally be routed to the component.
425#[derive(Clone, Debug, Default, PartialEq)]
426pub struct InjectedCapabilities {
427    /// (Required) Components that will have these capabilities injected into.
428    pub components: Option<Vec<String>>,
429    /// (Optional) Capabilities to be injected.
430    pub use_: Option<Vec<InjectedUse>>,
431    #[doc(hidden)]
432    pub __source_breaking: fidl::marker::SourceBreaking,
433}
434
435impl fidl::Persistable for InjectedCapabilities {}
436
437/// Declares a protocol to be injected into a component.
438#[derive(Clone, Debug, Default, PartialEq)]
439pub struct InjectedUseProtocol {
440    /// (Required) Name identifying the protocol within the root component.
441    pub source_name: Option<String>,
442    /// (Required) The path where the capability should be injected in the new
443    /// component's namespace.
444    ///
445    /// Must be an absolute path starting with /.
446    pub target_path: Option<String>,
447    #[doc(hidden)]
448    pub __source_breaking: fidl::marker::SourceBreaking,
449}
450
451impl fidl::Persistable for InjectedUseProtocol {}
452
453#[derive(Clone, Debug, Default, PartialEq)]
454pub struct InstanceIdEntry {
455    /// A 256-bit identifier encoded in base64 which is unique across all other
456    /// instance IDs in the index.
457    pub instance_id: Option<String>,
458    /// The moniker identifying the component instance.
459    pub moniker: Option<String>,
460    /// Do not generate an error if this entry has the same instance ID as
461    /// another.
462    pub ignore_duplicate_id: Option<bool>,
463    #[doc(hidden)]
464    pub __source_breaking: fidl::marker::SourceBreaking,
465}
466
467impl fidl::Persistable for InstanceIdEntry {}
468
469/// Allowlists for Zircon job policy.
470#[derive(Clone, Debug, Default, PartialEq)]
471pub struct JobPolicyAllowlists {
472    /// Allowlist entry monikers for components allowed to be given the
473    /// ZX_POL_AMBIENT_MARK_VMO_EXEC job policy.
474    ///
475    /// Components must request this policy by including "job_policy_ambient_mark_vmo_exec: true" in
476    /// their CML's `program` section and must be using the ELF runner.
477    /// This is equivalent to the v1 'deprecated-ambient-replace-as-executable' feature.
478    pub ambient_mark_vmo_exec: Option<Vec<String>>,
479    /// Allowlist entry monikers for components allowed to have their original process
480    /// marked as critical to component_manager's job.
481    ///
482    /// Components must request this critical marking by including "main_process_critical: true" in
483    /// their CML's `program` section and must be using the ELF runner.
484    pub main_process_critical: Option<Vec<String>>,
485    /// Allowlist entry monikers for components allowed to call zx_process_create directly
486    /// (e.g., do not have ZX_POL_NEW_PROCESS set to ZX_POL_ACTION_DENY).
487    ///
488    /// Components must request this policy by including "job_policy_create_raw_processes: true" in
489    /// their manifest's program object and must be using the ELF runner.
490    pub create_raw_processes: Option<Vec<String>>,
491    #[doc(hidden)]
492    pub __source_breaking: fidl::marker::SourceBreaking,
493}
494
495impl fidl::Persistable for JobPolicyAllowlists {}
496
497/// Runtime security policy.
498#[derive(Clone, Debug, Default, PartialEq)]
499pub struct SecurityPolicy {
500    /// Allowlists for Zircon job policy.
501    pub job_policy: Option<JobPolicyAllowlists>,
502    /// Capability access policy.
503    pub capability_policy: Option<CapabilityPolicyAllowlists>,
504    /// Debug capability registration policy.
505    pub debug_registration_policy: Option<DebugRegistrationPolicyAllowlists>,
506    /// Component child options policy.
507    pub child_policy: Option<ChildPolicyAllowlists>,
508    #[doc(hidden)]
509    pub __source_breaking: fidl::marker::SourceBreaking,
510}
511
512impl fidl::Persistable for SecurityPolicy {}
513
514/// Represents the class of capabilities supported to be allowlisted.
515#[derive(Clone, Debug)]
516pub enum AllowlistedCapability {
517    Directory(AllowlistedDirectory),
518    Protocol(AllowlistedProtocol),
519    Service(AllowlistedService),
520    Storage(AllowlistedStorage),
521    Runner(AllowlistedRunner),
522    Resolver(AllowlistedResolver),
523    #[doc(hidden)]
524    __SourceBreaking {
525        unknown_ordinal: u64,
526    },
527}
528
529/// Pattern that matches an unknown `AllowlistedCapability` member.
530#[macro_export]
531macro_rules! AllowlistedCapabilityUnknown {
532    () => {
533        _
534    };
535}
536
537// Custom PartialEq so that unknown variants are not equal to themselves.
538impl PartialEq for AllowlistedCapability {
539    fn eq(&self, other: &Self) -> bool {
540        match (self, other) {
541            (Self::Directory(x), Self::Directory(y)) => *x == *y,
542            (Self::Protocol(x), Self::Protocol(y)) => *x == *y,
543            (Self::Service(x), Self::Service(y)) => *x == *y,
544            (Self::Storage(x), Self::Storage(y)) => *x == *y,
545            (Self::Runner(x), Self::Runner(y)) => *x == *y,
546            (Self::Resolver(x), Self::Resolver(y)) => *x == *y,
547            _ => false,
548        }
549    }
550}
551
552impl AllowlistedCapability {
553    #[inline]
554    pub fn ordinal(&self) -> u64 {
555        match *self {
556            Self::Directory(_) => 1,
557            Self::Protocol(_) => 3,
558            Self::Service(_) => 4,
559            Self::Storage(_) => 5,
560            Self::Runner(_) => 6,
561            Self::Resolver(_) => 7,
562            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
563        }
564    }
565
566    #[inline]
567    pub fn unknown_variant_for_testing() -> Self {
568        Self::__SourceBreaking { unknown_ordinal: 0 }
569    }
570
571    #[inline]
572    pub fn is_unknown(&self) -> bool {
573        match self {
574            Self::__SourceBreaking { .. } => true,
575            _ => false,
576        }
577    }
578}
579
580impl fidl::Persistable for AllowlistedCapability {}
581
582/// Represents the class of capabilities supported to be allowlisted.
583#[derive(Clone, Debug)]
584pub enum AllowlistedDebugRegistration {
585    Protocol(AllowlistedProtocol),
586    #[doc(hidden)]
587    __SourceBreaking {
588        unknown_ordinal: u64,
589    },
590}
591
592/// Pattern that matches an unknown `AllowlistedDebugRegistration` member.
593#[macro_export]
594macro_rules! AllowlistedDebugRegistrationUnknown {
595    () => {
596        _
597    };
598}
599
600// Custom PartialEq so that unknown variants are not equal to themselves.
601impl PartialEq for AllowlistedDebugRegistration {
602    fn eq(&self, other: &Self) -> bool {
603        match (self, other) {
604            (Self::Protocol(x), Self::Protocol(y)) => *x == *y,
605            _ => false,
606        }
607    }
608}
609
610impl AllowlistedDebugRegistration {
611    #[inline]
612    pub fn ordinal(&self) -> u64 {
613        match *self {
614            Self::Protocol(_) => 1,
615            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
616        }
617    }
618
619    #[inline]
620    pub fn unknown_variant_for_testing() -> Self {
621        Self::__SourceBreaking { unknown_ordinal: 0 }
622    }
623
624    #[inline]
625    pub fn is_unknown(&self) -> bool {
626        match self {
627            Self::__SourceBreaking { .. } => true,
628            _ => false,
629        }
630    }
631}
632
633impl fidl::Persistable for AllowlistedDebugRegistration {}
634
635/// Declares a capability to be injected into a component.
636#[derive(Clone, Debug)]
637pub enum InjectedUse {
638    Protocol(InjectedUseProtocol),
639    #[doc(hidden)]
640    __SourceBreaking {
641        unknown_ordinal: u64,
642    },
643}
644
645/// Pattern that matches an unknown `InjectedUse` member.
646#[macro_export]
647macro_rules! InjectedUseUnknown {
648    () => {
649        _
650    };
651}
652
653// Custom PartialEq so that unknown variants are not equal to themselves.
654impl PartialEq for InjectedUse {
655    fn eq(&self, other: &Self) -> bool {
656        match (self, other) {
657            (Self::Protocol(x), Self::Protocol(y)) => *x == *y,
658            _ => false,
659        }
660    }
661}
662
663impl InjectedUse {
664    #[inline]
665    pub fn ordinal(&self) -> u64 {
666        match *self {
667            Self::Protocol(_) => 1,
668            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
669        }
670    }
671
672    #[inline]
673    pub fn unknown_variant_for_testing() -> Self {
674        Self::__SourceBreaking { unknown_ordinal: 0 }
675    }
676
677    #[inline]
678    pub fn is_unknown(&self) -> bool {
679        match self {
680            Self::__SourceBreaking { .. } => true,
681            _ => false,
682        }
683    }
684}
685
686impl fidl::Persistable for InjectedUse {}
687
688pub mod component_sandbox_retriever_ordinals {
689    pub const GET_MY_SANDBOX: u64 = 0x61ca075fb9860e84;
690}
691
692mod internal {
693    use super::*;
694    unsafe impl fidl::encoding::TypeMarker for BuiltinBootResolver {
695        type Owned = Self;
696
697        #[inline(always)]
698        fn inline_align(_context: fidl::encoding::Context) -> usize {
699            std::mem::align_of::<u8>()
700        }
701
702        #[inline(always)]
703        fn inline_size(_context: fidl::encoding::Context) -> usize {
704            std::mem::size_of::<u8>()
705        }
706
707        #[inline(always)]
708        fn encode_is_copy() -> bool {
709            true
710        }
711
712        #[inline(always)]
713        fn decode_is_copy() -> bool {
714            false
715        }
716    }
717
718    impl fidl::encoding::ValueTypeMarker for BuiltinBootResolver {
719        type Borrowed<'a> = Self;
720        #[inline(always)]
721        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
722            *value
723        }
724    }
725
726    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
727        for BuiltinBootResolver
728    {
729        #[inline]
730        unsafe fn encode(
731            self,
732            encoder: &mut fidl::encoding::Encoder<'_, D>,
733            offset: usize,
734            _depth: fidl::encoding::Depth,
735        ) -> fidl::Result<()> {
736            encoder.debug_check_bounds::<Self>(offset);
737            encoder.write_num(self.into_primitive(), offset);
738            Ok(())
739        }
740    }
741
742    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BuiltinBootResolver {
743        #[inline(always)]
744        fn new_empty() -> Self {
745            Self::None
746        }
747
748        #[inline]
749        unsafe fn decode(
750            &mut self,
751            decoder: &mut fidl::encoding::Decoder<'_, D>,
752            offset: usize,
753            _depth: fidl::encoding::Depth,
754        ) -> fidl::Result<()> {
755            decoder.debug_check_bounds::<Self>(offset);
756            let prim = decoder.read_num::<u8>(offset);
757
758            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
759            Ok(())
760        }
761    }
762    unsafe impl fidl::encoding::TypeMarker for LogDestination {
763        type Owned = Self;
764
765        #[inline(always)]
766        fn inline_align(_context: fidl::encoding::Context) -> usize {
767            std::mem::align_of::<u8>()
768        }
769
770        #[inline(always)]
771        fn inline_size(_context: fidl::encoding::Context) -> usize {
772            std::mem::size_of::<u8>()
773        }
774
775        #[inline(always)]
776        fn encode_is_copy() -> bool {
777            true
778        }
779
780        #[inline(always)]
781        fn decode_is_copy() -> bool {
782            false
783        }
784    }
785
786    impl fidl::encoding::ValueTypeMarker for LogDestination {
787        type Borrowed<'a> = Self;
788        #[inline(always)]
789        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
790            *value
791        }
792    }
793
794    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for LogDestination {
795        #[inline]
796        unsafe fn encode(
797            self,
798            encoder: &mut fidl::encoding::Encoder<'_, D>,
799            offset: usize,
800            _depth: fidl::encoding::Depth,
801        ) -> fidl::Result<()> {
802            encoder.debug_check_bounds::<Self>(offset);
803            encoder.write_num(self.into_primitive(), offset);
804            Ok(())
805        }
806    }
807
808    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LogDestination {
809        #[inline(always)]
810        fn new_empty() -> Self {
811            Self::Syslog
812        }
813
814        #[inline]
815        unsafe fn decode(
816            &mut self,
817            decoder: &mut fidl::encoding::Decoder<'_, D>,
818            offset: usize,
819            _depth: fidl::encoding::Depth,
820        ) -> fidl::Result<()> {
821            decoder.debug_check_bounds::<Self>(offset);
822            let prim = decoder.read_num::<u8>(offset);
823
824            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
825            Ok(())
826        }
827    }
828    unsafe impl fidl::encoding::TypeMarker for RealmBuilderResolverAndRunner {
829        type Owned = Self;
830
831        #[inline(always)]
832        fn inline_align(_context: fidl::encoding::Context) -> usize {
833            std::mem::align_of::<u8>()
834        }
835
836        #[inline(always)]
837        fn inline_size(_context: fidl::encoding::Context) -> usize {
838            std::mem::size_of::<u8>()
839        }
840
841        #[inline(always)]
842        fn encode_is_copy() -> bool {
843            true
844        }
845
846        #[inline(always)]
847        fn decode_is_copy() -> bool {
848            false
849        }
850    }
851
852    impl fidl::encoding::ValueTypeMarker for RealmBuilderResolverAndRunner {
853        type Borrowed<'a> = Self;
854        #[inline(always)]
855        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
856            *value
857        }
858    }
859
860    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
861        for RealmBuilderResolverAndRunner
862    {
863        #[inline]
864        unsafe fn encode(
865            self,
866            encoder: &mut fidl::encoding::Encoder<'_, D>,
867            offset: usize,
868            _depth: fidl::encoding::Depth,
869        ) -> fidl::Result<()> {
870            encoder.debug_check_bounds::<Self>(offset);
871            encoder.write_num(self.into_primitive(), offset);
872            Ok(())
873        }
874    }
875
876    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
877        for RealmBuilderResolverAndRunner
878    {
879        #[inline(always)]
880        fn new_empty() -> Self {
881            Self::None
882        }
883
884        #[inline]
885        unsafe fn decode(
886            &mut self,
887            decoder: &mut fidl::encoding::Decoder<'_, D>,
888            offset: usize,
889            _depth: fidl::encoding::Depth,
890        ) -> fidl::Result<()> {
891            decoder.debug_check_bounds::<Self>(offset);
892            let prim = decoder.read_num::<u8>(offset);
893
894            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
895            Ok(())
896        }
897    }
898    unsafe impl fidl::encoding::TypeMarker for TraceProvider {
899        type Owned = Self;
900
901        #[inline(always)]
902        fn inline_align(_context: fidl::encoding::Context) -> usize {
903            std::mem::align_of::<u8>()
904        }
905
906        #[inline(always)]
907        fn inline_size(_context: fidl::encoding::Context) -> usize {
908            std::mem::size_of::<u8>()
909        }
910
911        #[inline(always)]
912        fn encode_is_copy() -> bool {
913            true
914        }
915
916        #[inline(always)]
917        fn decode_is_copy() -> bool {
918            false
919        }
920    }
921
922    impl fidl::encoding::ValueTypeMarker for TraceProvider {
923        type Borrowed<'a> = Self;
924        #[inline(always)]
925        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
926            *value
927        }
928    }
929
930    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for TraceProvider {
931        #[inline]
932        unsafe fn encode(
933            self,
934            encoder: &mut fidl::encoding::Encoder<'_, D>,
935            offset: usize,
936            _depth: fidl::encoding::Depth,
937        ) -> fidl::Result<()> {
938            encoder.debug_check_bounds::<Self>(offset);
939            encoder.write_num(self.into_primitive(), offset);
940            Ok(())
941        }
942    }
943
944    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TraceProvider {
945        #[inline(always)]
946        fn new_empty() -> Self {
947            Self::Namespace
948        }
949
950        #[inline]
951        unsafe fn decode(
952            &mut self,
953            decoder: &mut fidl::encoding::Decoder<'_, D>,
954            offset: usize,
955            _depth: fidl::encoding::Depth,
956        ) -> fidl::Result<()> {
957            decoder.debug_check_bounds::<Self>(offset);
958            let prim = decoder.read_num::<u8>(offset);
959
960            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
961            Ok(())
962        }
963    }
964    unsafe impl fidl::encoding::TypeMarker for VmexSource {
965        type Owned = Self;
966
967        #[inline(always)]
968        fn inline_align(_context: fidl::encoding::Context) -> usize {
969            std::mem::align_of::<u8>()
970        }
971
972        #[inline(always)]
973        fn inline_size(_context: fidl::encoding::Context) -> usize {
974            std::mem::size_of::<u8>()
975        }
976
977        #[inline(always)]
978        fn encode_is_copy() -> bool {
979            true
980        }
981
982        #[inline(always)]
983        fn decode_is_copy() -> bool {
984            false
985        }
986    }
987
988    impl fidl::encoding::ValueTypeMarker for VmexSource {
989        type Borrowed<'a> = Self;
990        #[inline(always)]
991        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
992            *value
993        }
994    }
995
996    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for VmexSource {
997        #[inline]
998        unsafe fn encode(
999            self,
1000            encoder: &mut fidl::encoding::Encoder<'_, D>,
1001            offset: usize,
1002            _depth: fidl::encoding::Depth,
1003        ) -> fidl::Result<()> {
1004            encoder.debug_check_bounds::<Self>(offset);
1005            encoder.write_num(self.into_primitive(), offset);
1006            Ok(())
1007        }
1008    }
1009
1010    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for VmexSource {
1011        #[inline(always)]
1012        fn new_empty() -> Self {
1013            Self::SystemResource
1014        }
1015
1016        #[inline]
1017        unsafe fn decode(
1018            &mut self,
1019            decoder: &mut fidl::encoding::Decoder<'_, D>,
1020            offset: usize,
1021            _depth: fidl::encoding::Depth,
1022        ) -> fidl::Result<()> {
1023            decoder.debug_check_bounds::<Self>(offset);
1024            let prim = decoder.read_num::<u8>(offset);
1025
1026            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1027            Ok(())
1028        }
1029    }
1030
1031    impl AbiRevisionPolicy {
1032        #[inline(always)]
1033        fn max_ordinal_present(&self) -> u64 {
1034            if let Some(_) = self.allowlist {
1035                return 1;
1036            }
1037            0
1038        }
1039    }
1040
1041    impl fidl::encoding::ValueTypeMarker for AbiRevisionPolicy {
1042        type Borrowed<'a> = &'a Self;
1043        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1044            value
1045        }
1046    }
1047
1048    unsafe impl fidl::encoding::TypeMarker for AbiRevisionPolicy {
1049        type Owned = Self;
1050
1051        #[inline(always)]
1052        fn inline_align(_context: fidl::encoding::Context) -> usize {
1053            8
1054        }
1055
1056        #[inline(always)]
1057        fn inline_size(_context: fidl::encoding::Context) -> usize {
1058            16
1059        }
1060    }
1061
1062    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AbiRevisionPolicy, D>
1063        for &AbiRevisionPolicy
1064    {
1065        unsafe fn encode(
1066            self,
1067            encoder: &mut fidl::encoding::Encoder<'_, D>,
1068            offset: usize,
1069            mut depth: fidl::encoding::Depth,
1070        ) -> fidl::Result<()> {
1071            encoder.debug_check_bounds::<AbiRevisionPolicy>(offset);
1072            // Vector header
1073            let max_ordinal: u64 = self.max_ordinal_present();
1074            encoder.write_num(max_ordinal, offset);
1075            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1076            // Calling encoder.out_of_line_offset(0) is not allowed.
1077            if max_ordinal == 0 {
1078                return Ok(());
1079            }
1080            depth.increment()?;
1081            let envelope_size = 8;
1082            let bytes_len = max_ordinal as usize * envelope_size;
1083            #[allow(unused_variables)]
1084            let offset = encoder.out_of_line_offset(bytes_len);
1085            let mut _prev_end_offset: usize = 0;
1086            if 1 > max_ordinal {
1087                return Ok(());
1088            }
1089
1090            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1091            // are envelope_size bytes.
1092            let cur_offset: usize = (1 - 1) * envelope_size;
1093
1094            // Zero reserved fields.
1095            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1096
1097            // Safety:
1098            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1099            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1100            //   envelope_size bytes, there is always sufficient room.
1101            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
1102            self.allowlist.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
1103            encoder, offset + cur_offset, depth
1104        )?;
1105
1106            _prev_end_offset = cur_offset + envelope_size;
1107
1108            Ok(())
1109        }
1110    }
1111
1112    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AbiRevisionPolicy {
1113        #[inline(always)]
1114        fn new_empty() -> Self {
1115            Self::default()
1116        }
1117
1118        unsafe fn decode(
1119            &mut self,
1120            decoder: &mut fidl::encoding::Decoder<'_, D>,
1121            offset: usize,
1122            mut depth: fidl::encoding::Depth,
1123        ) -> fidl::Result<()> {
1124            decoder.debug_check_bounds::<Self>(offset);
1125            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1126                None => return Err(fidl::Error::NotNullable),
1127                Some(len) => len,
1128            };
1129            // Calling decoder.out_of_line_offset(0) is not allowed.
1130            if len == 0 {
1131                return Ok(());
1132            };
1133            depth.increment()?;
1134            let envelope_size = 8;
1135            let bytes_len = len * envelope_size;
1136            let offset = decoder.out_of_line_offset(bytes_len)?;
1137            // Decode the envelope for each type.
1138            let mut _next_ordinal_to_read = 0;
1139            let mut next_offset = offset;
1140            let end_offset = offset + bytes_len;
1141            _next_ordinal_to_read += 1;
1142            if next_offset >= end_offset {
1143                return Ok(());
1144            }
1145
1146            // Decode unknown envelopes for gaps in ordinals.
1147            while _next_ordinal_to_read < 1 {
1148                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1149                _next_ordinal_to_read += 1;
1150                next_offset += envelope_size;
1151            }
1152
1153            let next_out_of_line = decoder.next_out_of_line();
1154            let handles_before = decoder.remaining_handles();
1155            if let Some((inlined, num_bytes, num_handles)) =
1156                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1157            {
1158                let member_inline_size = <fidl::encoding::Vector<
1159                    fidl::encoding::BoundedString<4096>,
1160                    128,
1161                > as fidl::encoding::TypeMarker>::inline_size(
1162                    decoder.context
1163                );
1164                if inlined != (member_inline_size <= 4) {
1165                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1166                }
1167                let inner_offset;
1168                let mut inner_depth = depth.clone();
1169                if inlined {
1170                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1171                    inner_offset = next_offset;
1172                } else {
1173                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1174                    inner_depth.increment()?;
1175                }
1176                let val_ref = self.allowlist.get_or_insert_with(|| {
1177                    fidl::new_empty!(
1178                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
1179                        D
1180                    )
1181                });
1182                fidl::decode!(
1183                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
1184                    D,
1185                    val_ref,
1186                    decoder,
1187                    inner_offset,
1188                    inner_depth
1189                )?;
1190                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1191                {
1192                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1193                }
1194                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1195                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1196                }
1197            }
1198
1199            next_offset += envelope_size;
1200
1201            // Decode the remaining unknown envelopes.
1202            while next_offset < end_offset {
1203                _next_ordinal_to_read += 1;
1204                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1205                next_offset += envelope_size;
1206            }
1207
1208            Ok(())
1209        }
1210    }
1211
1212    impl AllowlistedDirectory {
1213        #[inline(always)]
1214        fn max_ordinal_present(&self) -> u64 {
1215            0
1216        }
1217    }
1218
1219    impl fidl::encoding::ValueTypeMarker for AllowlistedDirectory {
1220        type Borrowed<'a> = &'a Self;
1221        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1222            value
1223        }
1224    }
1225
1226    unsafe impl fidl::encoding::TypeMarker for AllowlistedDirectory {
1227        type Owned = Self;
1228
1229        #[inline(always)]
1230        fn inline_align(_context: fidl::encoding::Context) -> usize {
1231            8
1232        }
1233
1234        #[inline(always)]
1235        fn inline_size(_context: fidl::encoding::Context) -> usize {
1236            16
1237        }
1238    }
1239
1240    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedDirectory, D>
1241        for &AllowlistedDirectory
1242    {
1243        unsafe fn encode(
1244            self,
1245            encoder: &mut fidl::encoding::Encoder<'_, D>,
1246            offset: usize,
1247            mut depth: fidl::encoding::Depth,
1248        ) -> fidl::Result<()> {
1249            encoder.debug_check_bounds::<AllowlistedDirectory>(offset);
1250            // Vector header
1251            let max_ordinal: u64 = self.max_ordinal_present();
1252            encoder.write_num(max_ordinal, offset);
1253            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1254            // Calling encoder.out_of_line_offset(0) is not allowed.
1255            if max_ordinal == 0 {
1256                return Ok(());
1257            }
1258            depth.increment()?;
1259            let envelope_size = 8;
1260            let bytes_len = max_ordinal as usize * envelope_size;
1261            #[allow(unused_variables)]
1262            let offset = encoder.out_of_line_offset(bytes_len);
1263            let mut _prev_end_offset: usize = 0;
1264
1265            Ok(())
1266        }
1267    }
1268
1269    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedDirectory {
1270        #[inline(always)]
1271        fn new_empty() -> Self {
1272            Self::default()
1273        }
1274
1275        unsafe fn decode(
1276            &mut self,
1277            decoder: &mut fidl::encoding::Decoder<'_, D>,
1278            offset: usize,
1279            mut depth: fidl::encoding::Depth,
1280        ) -> fidl::Result<()> {
1281            decoder.debug_check_bounds::<Self>(offset);
1282            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1283                None => return Err(fidl::Error::NotNullable),
1284                Some(len) => len,
1285            };
1286            // Calling decoder.out_of_line_offset(0) is not allowed.
1287            if len == 0 {
1288                return Ok(());
1289            };
1290            depth.increment()?;
1291            let envelope_size = 8;
1292            let bytes_len = len * envelope_size;
1293            let offset = decoder.out_of_line_offset(bytes_len)?;
1294            // Decode the envelope for each type.
1295            let mut _next_ordinal_to_read = 0;
1296            let mut next_offset = offset;
1297            let end_offset = offset + bytes_len;
1298
1299            // Decode the remaining unknown envelopes.
1300            while next_offset < end_offset {
1301                _next_ordinal_to_read += 1;
1302                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1303                next_offset += envelope_size;
1304            }
1305
1306            Ok(())
1307        }
1308    }
1309
1310    impl AllowlistedProtocol {
1311        #[inline(always)]
1312        fn max_ordinal_present(&self) -> u64 {
1313            0
1314        }
1315    }
1316
1317    impl fidl::encoding::ValueTypeMarker for AllowlistedProtocol {
1318        type Borrowed<'a> = &'a Self;
1319        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1320            value
1321        }
1322    }
1323
1324    unsafe impl fidl::encoding::TypeMarker for AllowlistedProtocol {
1325        type Owned = Self;
1326
1327        #[inline(always)]
1328        fn inline_align(_context: fidl::encoding::Context) -> usize {
1329            8
1330        }
1331
1332        #[inline(always)]
1333        fn inline_size(_context: fidl::encoding::Context) -> usize {
1334            16
1335        }
1336    }
1337
1338    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedProtocol, D>
1339        for &AllowlistedProtocol
1340    {
1341        unsafe fn encode(
1342            self,
1343            encoder: &mut fidl::encoding::Encoder<'_, D>,
1344            offset: usize,
1345            mut depth: fidl::encoding::Depth,
1346        ) -> fidl::Result<()> {
1347            encoder.debug_check_bounds::<AllowlistedProtocol>(offset);
1348            // Vector header
1349            let max_ordinal: u64 = self.max_ordinal_present();
1350            encoder.write_num(max_ordinal, offset);
1351            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1352            // Calling encoder.out_of_line_offset(0) is not allowed.
1353            if max_ordinal == 0 {
1354                return Ok(());
1355            }
1356            depth.increment()?;
1357            let envelope_size = 8;
1358            let bytes_len = max_ordinal as usize * envelope_size;
1359            #[allow(unused_variables)]
1360            let offset = encoder.out_of_line_offset(bytes_len);
1361            let mut _prev_end_offset: usize = 0;
1362
1363            Ok(())
1364        }
1365    }
1366
1367    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedProtocol {
1368        #[inline(always)]
1369        fn new_empty() -> Self {
1370            Self::default()
1371        }
1372
1373        unsafe fn decode(
1374            &mut self,
1375            decoder: &mut fidl::encoding::Decoder<'_, D>,
1376            offset: usize,
1377            mut depth: fidl::encoding::Depth,
1378        ) -> fidl::Result<()> {
1379            decoder.debug_check_bounds::<Self>(offset);
1380            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1381                None => return Err(fidl::Error::NotNullable),
1382                Some(len) => len,
1383            };
1384            // Calling decoder.out_of_line_offset(0) is not allowed.
1385            if len == 0 {
1386                return Ok(());
1387            };
1388            depth.increment()?;
1389            let envelope_size = 8;
1390            let bytes_len = len * envelope_size;
1391            let offset = decoder.out_of_line_offset(bytes_len)?;
1392            // Decode the envelope for each type.
1393            let mut _next_ordinal_to_read = 0;
1394            let mut next_offset = offset;
1395            let end_offset = offset + bytes_len;
1396
1397            // Decode the remaining unknown envelopes.
1398            while next_offset < end_offset {
1399                _next_ordinal_to_read += 1;
1400                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1401                next_offset += envelope_size;
1402            }
1403
1404            Ok(())
1405        }
1406    }
1407
1408    impl AllowlistedResolver {
1409        #[inline(always)]
1410        fn max_ordinal_present(&self) -> u64 {
1411            0
1412        }
1413    }
1414
1415    impl fidl::encoding::ValueTypeMarker for AllowlistedResolver {
1416        type Borrowed<'a> = &'a Self;
1417        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1418            value
1419        }
1420    }
1421
1422    unsafe impl fidl::encoding::TypeMarker for AllowlistedResolver {
1423        type Owned = Self;
1424
1425        #[inline(always)]
1426        fn inline_align(_context: fidl::encoding::Context) -> usize {
1427            8
1428        }
1429
1430        #[inline(always)]
1431        fn inline_size(_context: fidl::encoding::Context) -> usize {
1432            16
1433        }
1434    }
1435
1436    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedResolver, D>
1437        for &AllowlistedResolver
1438    {
1439        unsafe fn encode(
1440            self,
1441            encoder: &mut fidl::encoding::Encoder<'_, D>,
1442            offset: usize,
1443            mut depth: fidl::encoding::Depth,
1444        ) -> fidl::Result<()> {
1445            encoder.debug_check_bounds::<AllowlistedResolver>(offset);
1446            // Vector header
1447            let max_ordinal: u64 = self.max_ordinal_present();
1448            encoder.write_num(max_ordinal, offset);
1449            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1450            // Calling encoder.out_of_line_offset(0) is not allowed.
1451            if max_ordinal == 0 {
1452                return Ok(());
1453            }
1454            depth.increment()?;
1455            let envelope_size = 8;
1456            let bytes_len = max_ordinal as usize * envelope_size;
1457            #[allow(unused_variables)]
1458            let offset = encoder.out_of_line_offset(bytes_len);
1459            let mut _prev_end_offset: usize = 0;
1460
1461            Ok(())
1462        }
1463    }
1464
1465    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedResolver {
1466        #[inline(always)]
1467        fn new_empty() -> Self {
1468            Self::default()
1469        }
1470
1471        unsafe fn decode(
1472            &mut self,
1473            decoder: &mut fidl::encoding::Decoder<'_, D>,
1474            offset: usize,
1475            mut depth: fidl::encoding::Depth,
1476        ) -> fidl::Result<()> {
1477            decoder.debug_check_bounds::<Self>(offset);
1478            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1479                None => return Err(fidl::Error::NotNullable),
1480                Some(len) => len,
1481            };
1482            // Calling decoder.out_of_line_offset(0) is not allowed.
1483            if len == 0 {
1484                return Ok(());
1485            };
1486            depth.increment()?;
1487            let envelope_size = 8;
1488            let bytes_len = len * envelope_size;
1489            let offset = decoder.out_of_line_offset(bytes_len)?;
1490            // Decode the envelope for each type.
1491            let mut _next_ordinal_to_read = 0;
1492            let mut next_offset = offset;
1493            let end_offset = offset + bytes_len;
1494
1495            // Decode the remaining unknown envelopes.
1496            while next_offset < end_offset {
1497                _next_ordinal_to_read += 1;
1498                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1499                next_offset += envelope_size;
1500            }
1501
1502            Ok(())
1503        }
1504    }
1505
1506    impl AllowlistedRunner {
1507        #[inline(always)]
1508        fn max_ordinal_present(&self) -> u64 {
1509            0
1510        }
1511    }
1512
1513    impl fidl::encoding::ValueTypeMarker for AllowlistedRunner {
1514        type Borrowed<'a> = &'a Self;
1515        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1516            value
1517        }
1518    }
1519
1520    unsafe impl fidl::encoding::TypeMarker for AllowlistedRunner {
1521        type Owned = Self;
1522
1523        #[inline(always)]
1524        fn inline_align(_context: fidl::encoding::Context) -> usize {
1525            8
1526        }
1527
1528        #[inline(always)]
1529        fn inline_size(_context: fidl::encoding::Context) -> usize {
1530            16
1531        }
1532    }
1533
1534    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedRunner, D>
1535        for &AllowlistedRunner
1536    {
1537        unsafe fn encode(
1538            self,
1539            encoder: &mut fidl::encoding::Encoder<'_, D>,
1540            offset: usize,
1541            mut depth: fidl::encoding::Depth,
1542        ) -> fidl::Result<()> {
1543            encoder.debug_check_bounds::<AllowlistedRunner>(offset);
1544            // Vector header
1545            let max_ordinal: u64 = self.max_ordinal_present();
1546            encoder.write_num(max_ordinal, offset);
1547            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1548            // Calling encoder.out_of_line_offset(0) is not allowed.
1549            if max_ordinal == 0 {
1550                return Ok(());
1551            }
1552            depth.increment()?;
1553            let envelope_size = 8;
1554            let bytes_len = max_ordinal as usize * envelope_size;
1555            #[allow(unused_variables)]
1556            let offset = encoder.out_of_line_offset(bytes_len);
1557            let mut _prev_end_offset: usize = 0;
1558
1559            Ok(())
1560        }
1561    }
1562
1563    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedRunner {
1564        #[inline(always)]
1565        fn new_empty() -> Self {
1566            Self::default()
1567        }
1568
1569        unsafe fn decode(
1570            &mut self,
1571            decoder: &mut fidl::encoding::Decoder<'_, D>,
1572            offset: usize,
1573            mut depth: fidl::encoding::Depth,
1574        ) -> fidl::Result<()> {
1575            decoder.debug_check_bounds::<Self>(offset);
1576            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1577                None => return Err(fidl::Error::NotNullable),
1578                Some(len) => len,
1579            };
1580            // Calling decoder.out_of_line_offset(0) is not allowed.
1581            if len == 0 {
1582                return Ok(());
1583            };
1584            depth.increment()?;
1585            let envelope_size = 8;
1586            let bytes_len = len * envelope_size;
1587            let offset = decoder.out_of_line_offset(bytes_len)?;
1588            // Decode the envelope for each type.
1589            let mut _next_ordinal_to_read = 0;
1590            let mut next_offset = offset;
1591            let end_offset = offset + bytes_len;
1592
1593            // Decode the remaining unknown envelopes.
1594            while next_offset < end_offset {
1595                _next_ordinal_to_read += 1;
1596                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1597                next_offset += envelope_size;
1598            }
1599
1600            Ok(())
1601        }
1602    }
1603
1604    impl AllowlistedService {
1605        #[inline(always)]
1606        fn max_ordinal_present(&self) -> u64 {
1607            0
1608        }
1609    }
1610
1611    impl fidl::encoding::ValueTypeMarker for AllowlistedService {
1612        type Borrowed<'a> = &'a Self;
1613        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1614            value
1615        }
1616    }
1617
1618    unsafe impl fidl::encoding::TypeMarker for AllowlistedService {
1619        type Owned = Self;
1620
1621        #[inline(always)]
1622        fn inline_align(_context: fidl::encoding::Context) -> usize {
1623            8
1624        }
1625
1626        #[inline(always)]
1627        fn inline_size(_context: fidl::encoding::Context) -> usize {
1628            16
1629        }
1630    }
1631
1632    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedService, D>
1633        for &AllowlistedService
1634    {
1635        unsafe fn encode(
1636            self,
1637            encoder: &mut fidl::encoding::Encoder<'_, D>,
1638            offset: usize,
1639            mut depth: fidl::encoding::Depth,
1640        ) -> fidl::Result<()> {
1641            encoder.debug_check_bounds::<AllowlistedService>(offset);
1642            // Vector header
1643            let max_ordinal: u64 = self.max_ordinal_present();
1644            encoder.write_num(max_ordinal, offset);
1645            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1646            // Calling encoder.out_of_line_offset(0) is not allowed.
1647            if max_ordinal == 0 {
1648                return Ok(());
1649            }
1650            depth.increment()?;
1651            let envelope_size = 8;
1652            let bytes_len = max_ordinal as usize * envelope_size;
1653            #[allow(unused_variables)]
1654            let offset = encoder.out_of_line_offset(bytes_len);
1655            let mut _prev_end_offset: usize = 0;
1656
1657            Ok(())
1658        }
1659    }
1660
1661    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedService {
1662        #[inline(always)]
1663        fn new_empty() -> Self {
1664            Self::default()
1665        }
1666
1667        unsafe fn decode(
1668            &mut self,
1669            decoder: &mut fidl::encoding::Decoder<'_, D>,
1670            offset: usize,
1671            mut depth: fidl::encoding::Depth,
1672        ) -> fidl::Result<()> {
1673            decoder.debug_check_bounds::<Self>(offset);
1674            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1675                None => return Err(fidl::Error::NotNullable),
1676                Some(len) => len,
1677            };
1678            // Calling decoder.out_of_line_offset(0) is not allowed.
1679            if len == 0 {
1680                return Ok(());
1681            };
1682            depth.increment()?;
1683            let envelope_size = 8;
1684            let bytes_len = len * envelope_size;
1685            let offset = decoder.out_of_line_offset(bytes_len)?;
1686            // Decode the envelope for each type.
1687            let mut _next_ordinal_to_read = 0;
1688            let mut next_offset = offset;
1689            let end_offset = offset + bytes_len;
1690
1691            // Decode the remaining unknown envelopes.
1692            while next_offset < end_offset {
1693                _next_ordinal_to_read += 1;
1694                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1695                next_offset += envelope_size;
1696            }
1697
1698            Ok(())
1699        }
1700    }
1701
1702    impl AllowlistedStorage {
1703        #[inline(always)]
1704        fn max_ordinal_present(&self) -> u64 {
1705            0
1706        }
1707    }
1708
1709    impl fidl::encoding::ValueTypeMarker for AllowlistedStorage {
1710        type Borrowed<'a> = &'a Self;
1711        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1712            value
1713        }
1714    }
1715
1716    unsafe impl fidl::encoding::TypeMarker for AllowlistedStorage {
1717        type Owned = Self;
1718
1719        #[inline(always)]
1720        fn inline_align(_context: fidl::encoding::Context) -> usize {
1721            8
1722        }
1723
1724        #[inline(always)]
1725        fn inline_size(_context: fidl::encoding::Context) -> usize {
1726            16
1727        }
1728    }
1729
1730    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedStorage, D>
1731        for &AllowlistedStorage
1732    {
1733        unsafe fn encode(
1734            self,
1735            encoder: &mut fidl::encoding::Encoder<'_, D>,
1736            offset: usize,
1737            mut depth: fidl::encoding::Depth,
1738        ) -> fidl::Result<()> {
1739            encoder.debug_check_bounds::<AllowlistedStorage>(offset);
1740            // Vector header
1741            let max_ordinal: u64 = self.max_ordinal_present();
1742            encoder.write_num(max_ordinal, offset);
1743            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1744            // Calling encoder.out_of_line_offset(0) is not allowed.
1745            if max_ordinal == 0 {
1746                return Ok(());
1747            }
1748            depth.increment()?;
1749            let envelope_size = 8;
1750            let bytes_len = max_ordinal as usize * envelope_size;
1751            #[allow(unused_variables)]
1752            let offset = encoder.out_of_line_offset(bytes_len);
1753            let mut _prev_end_offset: usize = 0;
1754
1755            Ok(())
1756        }
1757    }
1758
1759    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedStorage {
1760        #[inline(always)]
1761        fn new_empty() -> Self {
1762            Self::default()
1763        }
1764
1765        unsafe fn decode(
1766            &mut self,
1767            decoder: &mut fidl::encoding::Decoder<'_, D>,
1768            offset: usize,
1769            mut depth: fidl::encoding::Depth,
1770        ) -> fidl::Result<()> {
1771            decoder.debug_check_bounds::<Self>(offset);
1772            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1773                None => return Err(fidl::Error::NotNullable),
1774                Some(len) => len,
1775            };
1776            // Calling decoder.out_of_line_offset(0) is not allowed.
1777            if len == 0 {
1778                return Ok(());
1779            };
1780            depth.increment()?;
1781            let envelope_size = 8;
1782            let bytes_len = len * envelope_size;
1783            let offset = decoder.out_of_line_offset(bytes_len)?;
1784            // Decode the envelope for each type.
1785            let mut _next_ordinal_to_read = 0;
1786            let mut next_offset = offset;
1787            let end_offset = offset + bytes_len;
1788
1789            // Decode the remaining unknown envelopes.
1790            while next_offset < end_offset {
1791                _next_ordinal_to_read += 1;
1792                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1793                next_offset += envelope_size;
1794            }
1795
1796            Ok(())
1797        }
1798    }
1799
1800    impl CapabilityAllowlistEntry {
1801        #[inline(always)]
1802        fn max_ordinal_present(&self) -> u64 {
1803            if let Some(_) = self.source {
1804                return 5;
1805            }
1806            if let Some(_) = self.target_monikers {
1807                return 4;
1808            }
1809            if let Some(_) = self.capability {
1810                return 3;
1811            }
1812            if let Some(_) = self.source_name {
1813                return 2;
1814            }
1815            if let Some(_) = self.source_moniker {
1816                return 1;
1817            }
1818            0
1819        }
1820    }
1821
1822    impl fidl::encoding::ValueTypeMarker for CapabilityAllowlistEntry {
1823        type Borrowed<'a> = &'a Self;
1824        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1825            value
1826        }
1827    }
1828
1829    unsafe impl fidl::encoding::TypeMarker for CapabilityAllowlistEntry {
1830        type Owned = Self;
1831
1832        #[inline(always)]
1833        fn inline_align(_context: fidl::encoding::Context) -> usize {
1834            8
1835        }
1836
1837        #[inline(always)]
1838        fn inline_size(_context: fidl::encoding::Context) -> usize {
1839            16
1840        }
1841    }
1842
1843    unsafe impl<D: fidl::encoding::ResourceDialect>
1844        fidl::encoding::Encode<CapabilityAllowlistEntry, D> for &CapabilityAllowlistEntry
1845    {
1846        unsafe fn encode(
1847            self,
1848            encoder: &mut fidl::encoding::Encoder<'_, D>,
1849            offset: usize,
1850            mut depth: fidl::encoding::Depth,
1851        ) -> fidl::Result<()> {
1852            encoder.debug_check_bounds::<CapabilityAllowlistEntry>(offset);
1853            // Vector header
1854            let max_ordinal: u64 = self.max_ordinal_present();
1855            encoder.write_num(max_ordinal, offset);
1856            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1857            // Calling encoder.out_of_line_offset(0) is not allowed.
1858            if max_ordinal == 0 {
1859                return Ok(());
1860            }
1861            depth.increment()?;
1862            let envelope_size = 8;
1863            let bytes_len = max_ordinal as usize * envelope_size;
1864            #[allow(unused_variables)]
1865            let offset = encoder.out_of_line_offset(bytes_len);
1866            let mut _prev_end_offset: usize = 0;
1867            if 1 > max_ordinal {
1868                return Ok(());
1869            }
1870
1871            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1872            // are envelope_size bytes.
1873            let cur_offset: usize = (1 - 1) * envelope_size;
1874
1875            // Zero reserved fields.
1876            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1877
1878            // Safety:
1879            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1880            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1881            //   envelope_size bytes, there is always sufficient room.
1882            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
1883            self.source_moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
1884            encoder, offset + cur_offset, depth
1885        )?;
1886
1887            _prev_end_offset = cur_offset + envelope_size;
1888            if 2 > max_ordinal {
1889                return Ok(());
1890            }
1891
1892            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1893            // are envelope_size bytes.
1894            let cur_offset: usize = (2 - 1) * envelope_size;
1895
1896            // Zero reserved fields.
1897            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1898
1899            // Safety:
1900            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1901            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1902            //   envelope_size bytes, there is always sufficient room.
1903            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
1904                self.source_name.as_ref().map(
1905                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
1906                ),
1907                encoder,
1908                offset + cur_offset,
1909                depth,
1910            )?;
1911
1912            _prev_end_offset = cur_offset + envelope_size;
1913            if 3 > max_ordinal {
1914                return Ok(());
1915            }
1916
1917            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1918            // are envelope_size bytes.
1919            let cur_offset: usize = (3 - 1) * envelope_size;
1920
1921            // Zero reserved fields.
1922            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1923
1924            // Safety:
1925            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1926            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1927            //   envelope_size bytes, there is always sufficient room.
1928            fidl::encoding::encode_in_envelope_optional::<AllowlistedCapability, D>(
1929                self.capability
1930                    .as_ref()
1931                    .map(<AllowlistedCapability as fidl::encoding::ValueTypeMarker>::borrow),
1932                encoder,
1933                offset + cur_offset,
1934                depth,
1935            )?;
1936
1937            _prev_end_offset = cur_offset + envelope_size;
1938            if 4 > max_ordinal {
1939                return Ok(());
1940            }
1941
1942            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1943            // are envelope_size bytes.
1944            let cur_offset: usize = (4 - 1) * envelope_size;
1945
1946            // Zero reserved fields.
1947            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1948
1949            // Safety:
1950            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1951            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1952            //   envelope_size bytes, there is always sufficient room.
1953            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
1954            self.target_monikers.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
1955            encoder, offset + cur_offset, depth
1956        )?;
1957
1958            _prev_end_offset = cur_offset + envelope_size;
1959            if 5 > max_ordinal {
1960                return Ok(());
1961            }
1962
1963            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1964            // are envelope_size bytes.
1965            let cur_offset: usize = (5 - 1) * envelope_size;
1966
1967            // Zero reserved fields.
1968            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1969
1970            // Safety:
1971            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1972            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1973            //   envelope_size bytes, there is always sufficient room.
1974            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_decl_common::Ref, D>(
1975            self.source.as_ref().map(<fidl_fuchsia_component_decl_common::Ref as fidl::encoding::ValueTypeMarker>::borrow),
1976            encoder, offset + cur_offset, depth
1977        )?;
1978
1979            _prev_end_offset = cur_offset + envelope_size;
1980
1981            Ok(())
1982        }
1983    }
1984
1985    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1986        for CapabilityAllowlistEntry
1987    {
1988        #[inline(always)]
1989        fn new_empty() -> Self {
1990            Self::default()
1991        }
1992
1993        unsafe fn decode(
1994            &mut self,
1995            decoder: &mut fidl::encoding::Decoder<'_, D>,
1996            offset: usize,
1997            mut depth: fidl::encoding::Depth,
1998        ) -> fidl::Result<()> {
1999            decoder.debug_check_bounds::<Self>(offset);
2000            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2001                None => return Err(fidl::Error::NotNullable),
2002                Some(len) => len,
2003            };
2004            // Calling decoder.out_of_line_offset(0) is not allowed.
2005            if len == 0 {
2006                return Ok(());
2007            };
2008            depth.increment()?;
2009            let envelope_size = 8;
2010            let bytes_len = len * envelope_size;
2011            let offset = decoder.out_of_line_offset(bytes_len)?;
2012            // Decode the envelope for each type.
2013            let mut _next_ordinal_to_read = 0;
2014            let mut next_offset = offset;
2015            let end_offset = offset + bytes_len;
2016            _next_ordinal_to_read += 1;
2017            if next_offset >= end_offset {
2018                return Ok(());
2019            }
2020
2021            // Decode unknown envelopes for gaps in ordinals.
2022            while _next_ordinal_to_read < 1 {
2023                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2024                _next_ordinal_to_read += 1;
2025                next_offset += envelope_size;
2026            }
2027
2028            let next_out_of_line = decoder.next_out_of_line();
2029            let handles_before = decoder.remaining_handles();
2030            if let Some((inlined, num_bytes, num_handles)) =
2031                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2032            {
2033                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2034                if inlined != (member_inline_size <= 4) {
2035                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2036                }
2037                let inner_offset;
2038                let mut inner_depth = depth.clone();
2039                if inlined {
2040                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2041                    inner_offset = next_offset;
2042                } else {
2043                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2044                    inner_depth.increment()?;
2045                }
2046                let val_ref = self.source_moniker.get_or_insert_with(|| {
2047                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
2048                });
2049                fidl::decode!(
2050                    fidl::encoding::BoundedString<4096>,
2051                    D,
2052                    val_ref,
2053                    decoder,
2054                    inner_offset,
2055                    inner_depth
2056                )?;
2057                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2058                {
2059                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2060                }
2061                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2062                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2063                }
2064            }
2065
2066            next_offset += envelope_size;
2067            _next_ordinal_to_read += 1;
2068            if next_offset >= end_offset {
2069                return Ok(());
2070            }
2071
2072            // Decode unknown envelopes for gaps in ordinals.
2073            while _next_ordinal_to_read < 2 {
2074                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2075                _next_ordinal_to_read += 1;
2076                next_offset += envelope_size;
2077            }
2078
2079            let next_out_of_line = decoder.next_out_of_line();
2080            let handles_before = decoder.remaining_handles();
2081            if let Some((inlined, num_bytes, num_handles)) =
2082                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2083            {
2084                let member_inline_size =
2085                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
2086                        decoder.context,
2087                    );
2088                if inlined != (member_inline_size <= 4) {
2089                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2090                }
2091                let inner_offset;
2092                let mut inner_depth = depth.clone();
2093                if inlined {
2094                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2095                    inner_offset = next_offset;
2096                } else {
2097                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2098                    inner_depth.increment()?;
2099                }
2100                let val_ref = self
2101                    .source_name
2102                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
2103                fidl::decode!(
2104                    fidl::encoding::BoundedString<255>,
2105                    D,
2106                    val_ref,
2107                    decoder,
2108                    inner_offset,
2109                    inner_depth
2110                )?;
2111                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2112                {
2113                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2114                }
2115                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2116                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2117                }
2118            }
2119
2120            next_offset += envelope_size;
2121            _next_ordinal_to_read += 1;
2122            if next_offset >= end_offset {
2123                return Ok(());
2124            }
2125
2126            // Decode unknown envelopes for gaps in ordinals.
2127            while _next_ordinal_to_read < 3 {
2128                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2129                _next_ordinal_to_read += 1;
2130                next_offset += envelope_size;
2131            }
2132
2133            let next_out_of_line = decoder.next_out_of_line();
2134            let handles_before = decoder.remaining_handles();
2135            if let Some((inlined, num_bytes, num_handles)) =
2136                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2137            {
2138                let member_inline_size =
2139                    <AllowlistedCapability as fidl::encoding::TypeMarker>::inline_size(
2140                        decoder.context,
2141                    );
2142                if inlined != (member_inline_size <= 4) {
2143                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2144                }
2145                let inner_offset;
2146                let mut inner_depth = depth.clone();
2147                if inlined {
2148                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2149                    inner_offset = next_offset;
2150                } else {
2151                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2152                    inner_depth.increment()?;
2153                }
2154                let val_ref = self
2155                    .capability
2156                    .get_or_insert_with(|| fidl::new_empty!(AllowlistedCapability, D));
2157                fidl::decode!(
2158                    AllowlistedCapability,
2159                    D,
2160                    val_ref,
2161                    decoder,
2162                    inner_offset,
2163                    inner_depth
2164                )?;
2165                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2166                {
2167                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2168                }
2169                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2170                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2171                }
2172            }
2173
2174            next_offset += envelope_size;
2175            _next_ordinal_to_read += 1;
2176            if next_offset >= end_offset {
2177                return Ok(());
2178            }
2179
2180            // Decode unknown envelopes for gaps in ordinals.
2181            while _next_ordinal_to_read < 4 {
2182                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2183                _next_ordinal_to_read += 1;
2184                next_offset += envelope_size;
2185            }
2186
2187            let next_out_of_line = decoder.next_out_of_line();
2188            let handles_before = decoder.remaining_handles();
2189            if let Some((inlined, num_bytes, num_handles)) =
2190                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2191            {
2192                let member_inline_size = <fidl::encoding::Vector<
2193                    fidl::encoding::BoundedString<4096>,
2194                    128,
2195                > as fidl::encoding::TypeMarker>::inline_size(
2196                    decoder.context
2197                );
2198                if inlined != (member_inline_size <= 4) {
2199                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2200                }
2201                let inner_offset;
2202                let mut inner_depth = depth.clone();
2203                if inlined {
2204                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2205                    inner_offset = next_offset;
2206                } else {
2207                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2208                    inner_depth.increment()?;
2209                }
2210                let val_ref = self.target_monikers.get_or_insert_with(|| {
2211                    fidl::new_empty!(
2212                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
2213                        D
2214                    )
2215                });
2216                fidl::decode!(
2217                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
2218                    D,
2219                    val_ref,
2220                    decoder,
2221                    inner_offset,
2222                    inner_depth
2223                )?;
2224                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2225                {
2226                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2227                }
2228                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2229                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2230                }
2231            }
2232
2233            next_offset += envelope_size;
2234            _next_ordinal_to_read += 1;
2235            if next_offset >= end_offset {
2236                return Ok(());
2237            }
2238
2239            // Decode unknown envelopes for gaps in ordinals.
2240            while _next_ordinal_to_read < 5 {
2241                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2242                _next_ordinal_to_read += 1;
2243                next_offset += envelope_size;
2244            }
2245
2246            let next_out_of_line = decoder.next_out_of_line();
2247            let handles_before = decoder.remaining_handles();
2248            if let Some((inlined, num_bytes, num_handles)) =
2249                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2250            {
2251                let member_inline_size = <fidl_fuchsia_component_decl_common::Ref as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2252                if inlined != (member_inline_size <= 4) {
2253                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2254                }
2255                let inner_offset;
2256                let mut inner_depth = depth.clone();
2257                if inlined {
2258                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2259                    inner_offset = next_offset;
2260                } else {
2261                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2262                    inner_depth.increment()?;
2263                }
2264                let val_ref = self.source.get_or_insert_with(|| {
2265                    fidl::new_empty!(fidl_fuchsia_component_decl_common::Ref, D)
2266                });
2267                fidl::decode!(
2268                    fidl_fuchsia_component_decl_common::Ref,
2269                    D,
2270                    val_ref,
2271                    decoder,
2272                    inner_offset,
2273                    inner_depth
2274                )?;
2275                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2276                {
2277                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2278                }
2279                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2280                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2281                }
2282            }
2283
2284            next_offset += envelope_size;
2285
2286            // Decode the remaining unknown envelopes.
2287            while next_offset < end_offset {
2288                _next_ordinal_to_read += 1;
2289                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2290                next_offset += envelope_size;
2291            }
2292
2293            Ok(())
2294        }
2295    }
2296
2297    impl CapabilityPolicyAllowlists {
2298        #[inline(always)]
2299        fn max_ordinal_present(&self) -> u64 {
2300            if let Some(_) = self.allowlist {
2301                return 1;
2302            }
2303            0
2304        }
2305    }
2306
2307    impl fidl::encoding::ValueTypeMarker for CapabilityPolicyAllowlists {
2308        type Borrowed<'a> = &'a Self;
2309        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2310            value
2311        }
2312    }
2313
2314    unsafe impl fidl::encoding::TypeMarker for CapabilityPolicyAllowlists {
2315        type Owned = Self;
2316
2317        #[inline(always)]
2318        fn inline_align(_context: fidl::encoding::Context) -> usize {
2319            8
2320        }
2321
2322        #[inline(always)]
2323        fn inline_size(_context: fidl::encoding::Context) -> usize {
2324            16
2325        }
2326    }
2327
2328    unsafe impl<D: fidl::encoding::ResourceDialect>
2329        fidl::encoding::Encode<CapabilityPolicyAllowlists, D> for &CapabilityPolicyAllowlists
2330    {
2331        unsafe fn encode(
2332            self,
2333            encoder: &mut fidl::encoding::Encoder<'_, D>,
2334            offset: usize,
2335            mut depth: fidl::encoding::Depth,
2336        ) -> fidl::Result<()> {
2337            encoder.debug_check_bounds::<CapabilityPolicyAllowlists>(offset);
2338            // Vector header
2339            let max_ordinal: u64 = self.max_ordinal_present();
2340            encoder.write_num(max_ordinal, offset);
2341            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2342            // Calling encoder.out_of_line_offset(0) is not allowed.
2343            if max_ordinal == 0 {
2344                return Ok(());
2345            }
2346            depth.increment()?;
2347            let envelope_size = 8;
2348            let bytes_len = max_ordinal as usize * envelope_size;
2349            #[allow(unused_variables)]
2350            let offset = encoder.out_of_line_offset(bytes_len);
2351            let mut _prev_end_offset: usize = 0;
2352            if 1 > max_ordinal {
2353                return Ok(());
2354            }
2355
2356            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2357            // are envelope_size bytes.
2358            let cur_offset: usize = (1 - 1) * envelope_size;
2359
2360            // Zero reserved fields.
2361            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2362
2363            // Safety:
2364            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2365            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2366            //   envelope_size bytes, there is always sufficient room.
2367            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<CapabilityAllowlistEntry, 128>, D>(
2368            self.allowlist.as_ref().map(<fidl::encoding::Vector<CapabilityAllowlistEntry, 128> as fidl::encoding::ValueTypeMarker>::borrow),
2369            encoder, offset + cur_offset, depth
2370        )?;
2371
2372            _prev_end_offset = cur_offset + envelope_size;
2373
2374            Ok(())
2375        }
2376    }
2377
2378    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2379        for CapabilityPolicyAllowlists
2380    {
2381        #[inline(always)]
2382        fn new_empty() -> Self {
2383            Self::default()
2384        }
2385
2386        unsafe fn decode(
2387            &mut self,
2388            decoder: &mut fidl::encoding::Decoder<'_, D>,
2389            offset: usize,
2390            mut depth: fidl::encoding::Depth,
2391        ) -> fidl::Result<()> {
2392            decoder.debug_check_bounds::<Self>(offset);
2393            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2394                None => return Err(fidl::Error::NotNullable),
2395                Some(len) => len,
2396            };
2397            // Calling decoder.out_of_line_offset(0) is not allowed.
2398            if len == 0 {
2399                return Ok(());
2400            };
2401            depth.increment()?;
2402            let envelope_size = 8;
2403            let bytes_len = len * envelope_size;
2404            let offset = decoder.out_of_line_offset(bytes_len)?;
2405            // Decode the envelope for each type.
2406            let mut _next_ordinal_to_read = 0;
2407            let mut next_offset = offset;
2408            let end_offset = offset + bytes_len;
2409            _next_ordinal_to_read += 1;
2410            if next_offset >= end_offset {
2411                return Ok(());
2412            }
2413
2414            // Decode unknown envelopes for gaps in ordinals.
2415            while _next_ordinal_to_read < 1 {
2416                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2417                _next_ordinal_to_read += 1;
2418                next_offset += envelope_size;
2419            }
2420
2421            let next_out_of_line = decoder.next_out_of_line();
2422            let handles_before = decoder.remaining_handles();
2423            if let Some((inlined, num_bytes, num_handles)) =
2424                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2425            {
2426                let member_inline_size = <fidl::encoding::Vector<CapabilityAllowlistEntry, 128> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2427                if inlined != (member_inline_size <= 4) {
2428                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2429                }
2430                let inner_offset;
2431                let mut inner_depth = depth.clone();
2432                if inlined {
2433                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2434                    inner_offset = next_offset;
2435                } else {
2436                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2437                    inner_depth.increment()?;
2438                }
2439                let val_ref = self.allowlist.get_or_insert_with(
2440                    || fidl::new_empty!(fidl::encoding::Vector<CapabilityAllowlistEntry, 128>, D),
2441                );
2442                fidl::decode!(fidl::encoding::Vector<CapabilityAllowlistEntry, 128>, D, val_ref, decoder, inner_offset, inner_depth)?;
2443                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2444                {
2445                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2446                }
2447                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2448                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2449                }
2450            }
2451
2452            next_offset += envelope_size;
2453
2454            // Decode the remaining unknown envelopes.
2455            while next_offset < end_offset {
2456                _next_ordinal_to_read += 1;
2457                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2458                next_offset += envelope_size;
2459            }
2460
2461            Ok(())
2462        }
2463    }
2464
2465    impl ChildPolicyAllowlists {
2466        #[inline(always)]
2467        fn max_ordinal_present(&self) -> u64 {
2468            if let Some(_) = self.reboot_on_terminate {
2469                return 1;
2470            }
2471            0
2472        }
2473    }
2474
2475    impl fidl::encoding::ValueTypeMarker for ChildPolicyAllowlists {
2476        type Borrowed<'a> = &'a Self;
2477        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2478            value
2479        }
2480    }
2481
2482    unsafe impl fidl::encoding::TypeMarker for ChildPolicyAllowlists {
2483        type Owned = Self;
2484
2485        #[inline(always)]
2486        fn inline_align(_context: fidl::encoding::Context) -> usize {
2487            8
2488        }
2489
2490        #[inline(always)]
2491        fn inline_size(_context: fidl::encoding::Context) -> usize {
2492            16
2493        }
2494    }
2495
2496    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ChildPolicyAllowlists, D>
2497        for &ChildPolicyAllowlists
2498    {
2499        unsafe fn encode(
2500            self,
2501            encoder: &mut fidl::encoding::Encoder<'_, D>,
2502            offset: usize,
2503            mut depth: fidl::encoding::Depth,
2504        ) -> fidl::Result<()> {
2505            encoder.debug_check_bounds::<ChildPolicyAllowlists>(offset);
2506            // Vector header
2507            let max_ordinal: u64 = self.max_ordinal_present();
2508            encoder.write_num(max_ordinal, offset);
2509            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2510            // Calling encoder.out_of_line_offset(0) is not allowed.
2511            if max_ordinal == 0 {
2512                return Ok(());
2513            }
2514            depth.increment()?;
2515            let envelope_size = 8;
2516            let bytes_len = max_ordinal as usize * envelope_size;
2517            #[allow(unused_variables)]
2518            let offset = encoder.out_of_line_offset(bytes_len);
2519            let mut _prev_end_offset: usize = 0;
2520            if 1 > max_ordinal {
2521                return Ok(());
2522            }
2523
2524            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2525            // are envelope_size bytes.
2526            let cur_offset: usize = (1 - 1) * envelope_size;
2527
2528            // Zero reserved fields.
2529            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2530
2531            // Safety:
2532            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2533            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2534            //   envelope_size bytes, there is always sufficient room.
2535            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
2536            self.reboot_on_terminate.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
2537            encoder, offset + cur_offset, depth
2538        )?;
2539
2540            _prev_end_offset = cur_offset + envelope_size;
2541
2542            Ok(())
2543        }
2544    }
2545
2546    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ChildPolicyAllowlists {
2547        #[inline(always)]
2548        fn new_empty() -> Self {
2549            Self::default()
2550        }
2551
2552        unsafe fn decode(
2553            &mut self,
2554            decoder: &mut fidl::encoding::Decoder<'_, D>,
2555            offset: usize,
2556            mut depth: fidl::encoding::Depth,
2557        ) -> fidl::Result<()> {
2558            decoder.debug_check_bounds::<Self>(offset);
2559            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2560                None => return Err(fidl::Error::NotNullable),
2561                Some(len) => len,
2562            };
2563            // Calling decoder.out_of_line_offset(0) is not allowed.
2564            if len == 0 {
2565                return Ok(());
2566            };
2567            depth.increment()?;
2568            let envelope_size = 8;
2569            let bytes_len = len * envelope_size;
2570            let offset = decoder.out_of_line_offset(bytes_len)?;
2571            // Decode the envelope for each type.
2572            let mut _next_ordinal_to_read = 0;
2573            let mut next_offset = offset;
2574            let end_offset = offset + bytes_len;
2575            _next_ordinal_to_read += 1;
2576            if next_offset >= end_offset {
2577                return Ok(());
2578            }
2579
2580            // Decode unknown envelopes for gaps in ordinals.
2581            while _next_ordinal_to_read < 1 {
2582                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2583                _next_ordinal_to_read += 1;
2584                next_offset += envelope_size;
2585            }
2586
2587            let next_out_of_line = decoder.next_out_of_line();
2588            let handles_before = decoder.remaining_handles();
2589            if let Some((inlined, num_bytes, num_handles)) =
2590                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2591            {
2592                let member_inline_size = <fidl::encoding::Vector<
2593                    fidl::encoding::BoundedString<4096>,
2594                    128,
2595                > as fidl::encoding::TypeMarker>::inline_size(
2596                    decoder.context
2597                );
2598                if inlined != (member_inline_size <= 4) {
2599                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2600                }
2601                let inner_offset;
2602                let mut inner_depth = depth.clone();
2603                if inlined {
2604                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2605                    inner_offset = next_offset;
2606                } else {
2607                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2608                    inner_depth.increment()?;
2609                }
2610                let val_ref = self.reboot_on_terminate.get_or_insert_with(|| {
2611                    fidl::new_empty!(
2612                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
2613                        D
2614                    )
2615                });
2616                fidl::decode!(
2617                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
2618                    D,
2619                    val_ref,
2620                    decoder,
2621                    inner_offset,
2622                    inner_depth
2623                )?;
2624                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2625                {
2626                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2627                }
2628                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2629                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2630                }
2631            }
2632
2633            next_offset += envelope_size;
2634
2635            // Decode the remaining unknown envelopes.
2636            while next_offset < end_offset {
2637                _next_ordinal_to_read += 1;
2638                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2639                next_offset += envelope_size;
2640            }
2641
2642            Ok(())
2643        }
2644    }
2645
2646    impl ComponentIdIndex {
2647        #[inline(always)]
2648        fn max_ordinal_present(&self) -> u64 {
2649            if let Some(_) = self.instances {
2650                return 2;
2651            }
2652            0
2653        }
2654    }
2655
2656    impl fidl::encoding::ValueTypeMarker for ComponentIdIndex {
2657        type Borrowed<'a> = &'a Self;
2658        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2659            value
2660        }
2661    }
2662
2663    unsafe impl fidl::encoding::TypeMarker for ComponentIdIndex {
2664        type Owned = Self;
2665
2666        #[inline(always)]
2667        fn inline_align(_context: fidl::encoding::Context) -> usize {
2668            8
2669        }
2670
2671        #[inline(always)]
2672        fn inline_size(_context: fidl::encoding::Context) -> usize {
2673            16
2674        }
2675    }
2676
2677    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ComponentIdIndex, D>
2678        for &ComponentIdIndex
2679    {
2680        unsafe fn encode(
2681            self,
2682            encoder: &mut fidl::encoding::Encoder<'_, D>,
2683            offset: usize,
2684            mut depth: fidl::encoding::Depth,
2685        ) -> fidl::Result<()> {
2686            encoder.debug_check_bounds::<ComponentIdIndex>(offset);
2687            // Vector header
2688            let max_ordinal: u64 = self.max_ordinal_present();
2689            encoder.write_num(max_ordinal, offset);
2690            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2691            // Calling encoder.out_of_line_offset(0) is not allowed.
2692            if max_ordinal == 0 {
2693                return Ok(());
2694            }
2695            depth.increment()?;
2696            let envelope_size = 8;
2697            let bytes_len = max_ordinal as usize * envelope_size;
2698            #[allow(unused_variables)]
2699            let offset = encoder.out_of_line_offset(bytes_len);
2700            let mut _prev_end_offset: usize = 0;
2701            if 2 > max_ordinal {
2702                return Ok(());
2703            }
2704
2705            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2706            // are envelope_size bytes.
2707            let cur_offset: usize = (2 - 1) * envelope_size;
2708
2709            // Zero reserved fields.
2710            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2711
2712            // Safety:
2713            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2714            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2715            //   envelope_size bytes, there is always sufficient room.
2716            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<InstanceIdEntry, 1024>, D>(
2717            self.instances.as_ref().map(<fidl::encoding::Vector<InstanceIdEntry, 1024> as fidl::encoding::ValueTypeMarker>::borrow),
2718            encoder, offset + cur_offset, depth
2719        )?;
2720
2721            _prev_end_offset = cur_offset + envelope_size;
2722
2723            Ok(())
2724        }
2725    }
2726
2727    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ComponentIdIndex {
2728        #[inline(always)]
2729        fn new_empty() -> Self {
2730            Self::default()
2731        }
2732
2733        unsafe fn decode(
2734            &mut self,
2735            decoder: &mut fidl::encoding::Decoder<'_, D>,
2736            offset: usize,
2737            mut depth: fidl::encoding::Depth,
2738        ) -> fidl::Result<()> {
2739            decoder.debug_check_bounds::<Self>(offset);
2740            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2741                None => return Err(fidl::Error::NotNullable),
2742                Some(len) => len,
2743            };
2744            // Calling decoder.out_of_line_offset(0) is not allowed.
2745            if len == 0 {
2746                return Ok(());
2747            };
2748            depth.increment()?;
2749            let envelope_size = 8;
2750            let bytes_len = len * envelope_size;
2751            let offset = decoder.out_of_line_offset(bytes_len)?;
2752            // Decode the envelope for each type.
2753            let mut _next_ordinal_to_read = 0;
2754            let mut next_offset = offset;
2755            let end_offset = offset + bytes_len;
2756            _next_ordinal_to_read += 1;
2757            if next_offset >= end_offset {
2758                return Ok(());
2759            }
2760
2761            // Decode unknown envelopes for gaps in ordinals.
2762            while _next_ordinal_to_read < 2 {
2763                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2764                _next_ordinal_to_read += 1;
2765                next_offset += envelope_size;
2766            }
2767
2768            let next_out_of_line = decoder.next_out_of_line();
2769            let handles_before = decoder.remaining_handles();
2770            if let Some((inlined, num_bytes, num_handles)) =
2771                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2772            {
2773                let member_inline_size = <fidl::encoding::Vector<InstanceIdEntry, 1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2774                if inlined != (member_inline_size <= 4) {
2775                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2776                }
2777                let inner_offset;
2778                let mut inner_depth = depth.clone();
2779                if inlined {
2780                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2781                    inner_offset = next_offset;
2782                } else {
2783                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2784                    inner_depth.increment()?;
2785                }
2786                let val_ref = self.instances.get_or_insert_with(
2787                    || fidl::new_empty!(fidl::encoding::Vector<InstanceIdEntry, 1024>, D),
2788                );
2789                fidl::decode!(fidl::encoding::Vector<InstanceIdEntry, 1024>, D, val_ref, decoder, inner_offset, inner_depth)?;
2790                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2791                {
2792                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2793                }
2794                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2795                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2796                }
2797            }
2798
2799            next_offset += envelope_size;
2800
2801            // Decode the remaining unknown envelopes.
2802            while next_offset < end_offset {
2803                _next_ordinal_to_read += 1;
2804                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2805                next_offset += envelope_size;
2806            }
2807
2808            Ok(())
2809        }
2810    }
2811
2812    impl Config {
2813        #[inline(always)]
2814        fn max_ordinal_present(&self) -> u64 {
2815            if let Some(_) = self.scudo_options {
2816                return 24;
2817            }
2818            if let Some(_) = self.inject_capabilities {
2819                return 23;
2820            }
2821            if let Some(_) = self.trace_provider {
2822                return 22;
2823            }
2824            if let Some(_) = self.health_check {
2825                return 21;
2826            }
2827            if let Some(_) = self.vmex_source {
2828                return 20;
2829            }
2830            if let Some(_) = self.abi_revision_policy {
2831                return 19;
2832            }
2833            if let Some(_) = self.enable_introspection {
2834                return 18;
2835            }
2836            if let Some(_) = self.builtin_capabilities {
2837                return 17;
2838            }
2839            if let Some(_) = self.realm_builder_resolver_and_runner {
2840                return 16;
2841            }
2842            if let Some(_) = self.builtin_boot_resolver {
2843                return 14;
2844            }
2845            if let Some(_) = self.log_all_events {
2846                return 13;
2847            }
2848            if let Some(_) = self.log_destination {
2849                return 12;
2850            }
2851            if let Some(_) = self.component_id_index_path {
2852                return 11;
2853            }
2854            if let Some(_) = self.root_component_url {
2855                return 10;
2856            }
2857            if let Some(_) = self.num_threads {
2858                return 7;
2859            }
2860            if let Some(_) = self.maintain_utc_clock {
2861                return 6;
2862            }
2863            if let Some(_) = self.use_builtin_process_launcher {
2864                return 5;
2865            }
2866            if let Some(_) = self.namespace_capabilities {
2867                return 4;
2868            }
2869            if let Some(_) = self.security_policy {
2870                return 3;
2871            }
2872            if let Some(_) = self.list_children_batch_size {
2873                return 2;
2874            }
2875            if let Some(_) = self.debug {
2876                return 1;
2877            }
2878            0
2879        }
2880    }
2881
2882    impl fidl::encoding::ValueTypeMarker for Config {
2883        type Borrowed<'a> = &'a Self;
2884        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2885            value
2886        }
2887    }
2888
2889    unsafe impl fidl::encoding::TypeMarker for Config {
2890        type Owned = Self;
2891
2892        #[inline(always)]
2893        fn inline_align(_context: fidl::encoding::Context) -> usize {
2894            8
2895        }
2896
2897        #[inline(always)]
2898        fn inline_size(_context: fidl::encoding::Context) -> usize {
2899            16
2900        }
2901    }
2902
2903    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Config, D> for &Config {
2904        unsafe fn encode(
2905            self,
2906            encoder: &mut fidl::encoding::Encoder<'_, D>,
2907            offset: usize,
2908            mut depth: fidl::encoding::Depth,
2909        ) -> fidl::Result<()> {
2910            encoder.debug_check_bounds::<Config>(offset);
2911            // Vector header
2912            let max_ordinal: u64 = self.max_ordinal_present();
2913            encoder.write_num(max_ordinal, offset);
2914            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2915            // Calling encoder.out_of_line_offset(0) is not allowed.
2916            if max_ordinal == 0 {
2917                return Ok(());
2918            }
2919            depth.increment()?;
2920            let envelope_size = 8;
2921            let bytes_len = max_ordinal as usize * envelope_size;
2922            #[allow(unused_variables)]
2923            let offset = encoder.out_of_line_offset(bytes_len);
2924            let mut _prev_end_offset: usize = 0;
2925            if 1 > max_ordinal {
2926                return Ok(());
2927            }
2928
2929            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2930            // are envelope_size bytes.
2931            let cur_offset: usize = (1 - 1) * envelope_size;
2932
2933            // Zero reserved fields.
2934            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2935
2936            // Safety:
2937            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2938            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2939            //   envelope_size bytes, there is always sufficient room.
2940            fidl::encoding::encode_in_envelope_optional::<bool, D>(
2941                self.debug.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2942                encoder,
2943                offset + cur_offset,
2944                depth,
2945            )?;
2946
2947            _prev_end_offset = cur_offset + envelope_size;
2948            if 2 > max_ordinal {
2949                return Ok(());
2950            }
2951
2952            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2953            // are envelope_size bytes.
2954            let cur_offset: usize = (2 - 1) * envelope_size;
2955
2956            // Zero reserved fields.
2957            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2958
2959            // Safety:
2960            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2961            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2962            //   envelope_size bytes, there is always sufficient room.
2963            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2964                self.list_children_batch_size
2965                    .as_ref()
2966                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2967                encoder,
2968                offset + cur_offset,
2969                depth,
2970            )?;
2971
2972            _prev_end_offset = cur_offset + envelope_size;
2973            if 3 > max_ordinal {
2974                return Ok(());
2975            }
2976
2977            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2978            // are envelope_size bytes.
2979            let cur_offset: usize = (3 - 1) * envelope_size;
2980
2981            // Zero reserved fields.
2982            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2983
2984            // Safety:
2985            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2986            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2987            //   envelope_size bytes, there is always sufficient room.
2988            fidl::encoding::encode_in_envelope_optional::<SecurityPolicy, D>(
2989                self.security_policy
2990                    .as_ref()
2991                    .map(<SecurityPolicy as fidl::encoding::ValueTypeMarker>::borrow),
2992                encoder,
2993                offset + cur_offset,
2994                depth,
2995            )?;
2996
2997            _prev_end_offset = cur_offset + envelope_size;
2998            if 4 > max_ordinal {
2999                return Ok(());
3000            }
3001
3002            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3003            // are envelope_size bytes.
3004            let cur_offset: usize = (4 - 1) * envelope_size;
3005
3006            // Zero reserved fields.
3007            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3008
3009            // Safety:
3010            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3011            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3012            //   envelope_size bytes, there is always sufficient room.
3013            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl_common::Capability>, D>(
3014            self.namespace_capabilities.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl_common::Capability> as fidl::encoding::ValueTypeMarker>::borrow),
3015            encoder, offset + cur_offset, depth
3016        )?;
3017
3018            _prev_end_offset = cur_offset + envelope_size;
3019            if 5 > max_ordinal {
3020                return Ok(());
3021            }
3022
3023            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3024            // are envelope_size bytes.
3025            let cur_offset: usize = (5 - 1) * envelope_size;
3026
3027            // Zero reserved fields.
3028            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3029
3030            // Safety:
3031            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3032            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3033            //   envelope_size bytes, there is always sufficient room.
3034            fidl::encoding::encode_in_envelope_optional::<bool, D>(
3035                self.use_builtin_process_launcher
3036                    .as_ref()
3037                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3038                encoder,
3039                offset + cur_offset,
3040                depth,
3041            )?;
3042
3043            _prev_end_offset = cur_offset + envelope_size;
3044            if 6 > max_ordinal {
3045                return Ok(());
3046            }
3047
3048            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3049            // are envelope_size bytes.
3050            let cur_offset: usize = (6 - 1) * envelope_size;
3051
3052            // Zero reserved fields.
3053            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3054
3055            // Safety:
3056            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3057            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3058            //   envelope_size bytes, there is always sufficient room.
3059            fidl::encoding::encode_in_envelope_optional::<bool, D>(
3060                self.maintain_utc_clock
3061                    .as_ref()
3062                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3063                encoder,
3064                offset + cur_offset,
3065                depth,
3066            )?;
3067
3068            _prev_end_offset = cur_offset + envelope_size;
3069            if 7 > max_ordinal {
3070                return Ok(());
3071            }
3072
3073            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3074            // are envelope_size bytes.
3075            let cur_offset: usize = (7 - 1) * envelope_size;
3076
3077            // Zero reserved fields.
3078            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3079
3080            // Safety:
3081            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3082            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3083            //   envelope_size bytes, there is always sufficient room.
3084            fidl::encoding::encode_in_envelope_optional::<u8, D>(
3085                self.num_threads.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
3086                encoder,
3087                offset + cur_offset,
3088                depth,
3089            )?;
3090
3091            _prev_end_offset = cur_offset + envelope_size;
3092            if 10 > max_ordinal {
3093                return Ok(());
3094            }
3095
3096            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3097            // are envelope_size bytes.
3098            let cur_offset: usize = (10 - 1) * envelope_size;
3099
3100            // Zero reserved fields.
3101            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3102
3103            // Safety:
3104            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3105            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3106            //   envelope_size bytes, there is always sufficient room.
3107            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
3108            self.root_component_url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
3109            encoder, offset + cur_offset, depth
3110        )?;
3111
3112            _prev_end_offset = cur_offset + envelope_size;
3113            if 11 > max_ordinal {
3114                return Ok(());
3115            }
3116
3117            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3118            // are envelope_size bytes.
3119            let cur_offset: usize = (11 - 1) * envelope_size;
3120
3121            // Zero reserved fields.
3122            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3123
3124            // Safety:
3125            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3126            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3127            //   envelope_size bytes, there is always sufficient room.
3128            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4095>, D>(
3129            self.component_id_index_path.as_ref().map(<fidl::encoding::BoundedString<4095> as fidl::encoding::ValueTypeMarker>::borrow),
3130            encoder, offset + cur_offset, depth
3131        )?;
3132
3133            _prev_end_offset = cur_offset + envelope_size;
3134            if 12 > max_ordinal {
3135                return Ok(());
3136            }
3137
3138            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3139            // are envelope_size bytes.
3140            let cur_offset: usize = (12 - 1) * envelope_size;
3141
3142            // Zero reserved fields.
3143            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3144
3145            // Safety:
3146            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3147            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3148            //   envelope_size bytes, there is always sufficient room.
3149            fidl::encoding::encode_in_envelope_optional::<LogDestination, D>(
3150                self.log_destination
3151                    .as_ref()
3152                    .map(<LogDestination as fidl::encoding::ValueTypeMarker>::borrow),
3153                encoder,
3154                offset + cur_offset,
3155                depth,
3156            )?;
3157
3158            _prev_end_offset = cur_offset + envelope_size;
3159            if 13 > max_ordinal {
3160                return Ok(());
3161            }
3162
3163            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3164            // are envelope_size bytes.
3165            let cur_offset: usize = (13 - 1) * envelope_size;
3166
3167            // Zero reserved fields.
3168            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3169
3170            // Safety:
3171            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3172            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3173            //   envelope_size bytes, there is always sufficient room.
3174            fidl::encoding::encode_in_envelope_optional::<bool, D>(
3175                self.log_all_events.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3176                encoder,
3177                offset + cur_offset,
3178                depth,
3179            )?;
3180
3181            _prev_end_offset = cur_offset + envelope_size;
3182            if 14 > max_ordinal {
3183                return Ok(());
3184            }
3185
3186            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3187            // are envelope_size bytes.
3188            let cur_offset: usize = (14 - 1) * envelope_size;
3189
3190            // Zero reserved fields.
3191            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3192
3193            // Safety:
3194            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3195            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3196            //   envelope_size bytes, there is always sufficient room.
3197            fidl::encoding::encode_in_envelope_optional::<BuiltinBootResolver, D>(
3198                self.builtin_boot_resolver
3199                    .as_ref()
3200                    .map(<BuiltinBootResolver as fidl::encoding::ValueTypeMarker>::borrow),
3201                encoder,
3202                offset + cur_offset,
3203                depth,
3204            )?;
3205
3206            _prev_end_offset = cur_offset + envelope_size;
3207            if 16 > max_ordinal {
3208                return Ok(());
3209            }
3210
3211            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3212            // are envelope_size bytes.
3213            let cur_offset: usize = (16 - 1) * envelope_size;
3214
3215            // Zero reserved fields.
3216            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3217
3218            // Safety:
3219            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3220            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3221            //   envelope_size bytes, there is always sufficient room.
3222            fidl::encoding::encode_in_envelope_optional::<RealmBuilderResolverAndRunner, D>(
3223                self.realm_builder_resolver_and_runner.as_ref().map(
3224                    <RealmBuilderResolverAndRunner as fidl::encoding::ValueTypeMarker>::borrow,
3225                ),
3226                encoder,
3227                offset + cur_offset,
3228                depth,
3229            )?;
3230
3231            _prev_end_offset = cur_offset + envelope_size;
3232            if 17 > max_ordinal {
3233                return Ok(());
3234            }
3235
3236            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3237            // are envelope_size bytes.
3238            let cur_offset: usize = (17 - 1) * envelope_size;
3239
3240            // Zero reserved fields.
3241            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3242
3243            // Safety:
3244            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3245            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3246            //   envelope_size bytes, there is always sufficient room.
3247            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl_common::Capability>, D>(
3248            self.builtin_capabilities.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl_common::Capability> as fidl::encoding::ValueTypeMarker>::borrow),
3249            encoder, offset + cur_offset, depth
3250        )?;
3251
3252            _prev_end_offset = cur_offset + envelope_size;
3253            if 18 > max_ordinal {
3254                return Ok(());
3255            }
3256
3257            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3258            // are envelope_size bytes.
3259            let cur_offset: usize = (18 - 1) * envelope_size;
3260
3261            // Zero reserved fields.
3262            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3263
3264            // Safety:
3265            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3266            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3267            //   envelope_size bytes, there is always sufficient room.
3268            fidl::encoding::encode_in_envelope_optional::<bool, D>(
3269                self.enable_introspection
3270                    .as_ref()
3271                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3272                encoder,
3273                offset + cur_offset,
3274                depth,
3275            )?;
3276
3277            _prev_end_offset = cur_offset + envelope_size;
3278            if 19 > max_ordinal {
3279                return Ok(());
3280            }
3281
3282            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3283            // are envelope_size bytes.
3284            let cur_offset: usize = (19 - 1) * envelope_size;
3285
3286            // Zero reserved fields.
3287            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3288
3289            // Safety:
3290            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3291            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3292            //   envelope_size bytes, there is always sufficient room.
3293            fidl::encoding::encode_in_envelope_optional::<AbiRevisionPolicy, D>(
3294                self.abi_revision_policy
3295                    .as_ref()
3296                    .map(<AbiRevisionPolicy as fidl::encoding::ValueTypeMarker>::borrow),
3297                encoder,
3298                offset + cur_offset,
3299                depth,
3300            )?;
3301
3302            _prev_end_offset = cur_offset + envelope_size;
3303            if 20 > max_ordinal {
3304                return Ok(());
3305            }
3306
3307            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3308            // are envelope_size bytes.
3309            let cur_offset: usize = (20 - 1) * envelope_size;
3310
3311            // Zero reserved fields.
3312            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3313
3314            // Safety:
3315            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3316            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3317            //   envelope_size bytes, there is always sufficient room.
3318            fidl::encoding::encode_in_envelope_optional::<VmexSource, D>(
3319                self.vmex_source
3320                    .as_ref()
3321                    .map(<VmexSource as fidl::encoding::ValueTypeMarker>::borrow),
3322                encoder,
3323                offset + cur_offset,
3324                depth,
3325            )?;
3326
3327            _prev_end_offset = cur_offset + envelope_size;
3328            if 21 > max_ordinal {
3329                return Ok(());
3330            }
3331
3332            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3333            // are envelope_size bytes.
3334            let cur_offset: usize = (21 - 1) * envelope_size;
3335
3336            // Zero reserved fields.
3337            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3338
3339            // Safety:
3340            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3341            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3342            //   envelope_size bytes, there is always sufficient room.
3343            fidl::encoding::encode_in_envelope_optional::<HealthCheck, D>(
3344                self.health_check
3345                    .as_ref()
3346                    .map(<HealthCheck as fidl::encoding::ValueTypeMarker>::borrow),
3347                encoder,
3348                offset + cur_offset,
3349                depth,
3350            )?;
3351
3352            _prev_end_offset = cur_offset + envelope_size;
3353            if 22 > max_ordinal {
3354                return Ok(());
3355            }
3356
3357            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3358            // are envelope_size bytes.
3359            let cur_offset: usize = (22 - 1) * envelope_size;
3360
3361            // Zero reserved fields.
3362            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3363
3364            // Safety:
3365            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3366            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3367            //   envelope_size bytes, there is always sufficient room.
3368            fidl::encoding::encode_in_envelope_optional::<TraceProvider, D>(
3369                self.trace_provider
3370                    .as_ref()
3371                    .map(<TraceProvider as fidl::encoding::ValueTypeMarker>::borrow),
3372                encoder,
3373                offset + cur_offset,
3374                depth,
3375            )?;
3376
3377            _prev_end_offset = cur_offset + envelope_size;
3378            if 23 > max_ordinal {
3379                return Ok(());
3380            }
3381
3382            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3383            // are envelope_size bytes.
3384            let cur_offset: usize = (23 - 1) * envelope_size;
3385
3386            // Zero reserved fields.
3387            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3388
3389            // Safety:
3390            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3391            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3392            //   envelope_size bytes, there is always sufficient room.
3393            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<InjectedCapabilities>, D>(
3394            self.inject_capabilities.as_ref().map(<fidl::encoding::UnboundedVector<InjectedCapabilities> as fidl::encoding::ValueTypeMarker>::borrow),
3395            encoder, offset + cur_offset, depth
3396        )?;
3397
3398            _prev_end_offset = cur_offset + envelope_size;
3399            if 24 > max_ordinal {
3400                return Ok(());
3401            }
3402
3403            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3404            // are envelope_size bytes.
3405            let cur_offset: usize = (24 - 1) * envelope_size;
3406
3407            // Zero reserved fields.
3408            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3409
3410            // Safety:
3411            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3412            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3413            //   envelope_size bytes, there is always sufficient room.
3414            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
3415                self.scudo_options.as_ref().map(
3416                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
3417                ),
3418                encoder,
3419                offset + cur_offset,
3420                depth,
3421            )?;
3422
3423            _prev_end_offset = cur_offset + envelope_size;
3424
3425            Ok(())
3426        }
3427    }
3428
3429    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Config {
3430        #[inline(always)]
3431        fn new_empty() -> Self {
3432            Self::default()
3433        }
3434
3435        unsafe fn decode(
3436            &mut self,
3437            decoder: &mut fidl::encoding::Decoder<'_, D>,
3438            offset: usize,
3439            mut depth: fidl::encoding::Depth,
3440        ) -> fidl::Result<()> {
3441            decoder.debug_check_bounds::<Self>(offset);
3442            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3443                None => return Err(fidl::Error::NotNullable),
3444                Some(len) => len,
3445            };
3446            // Calling decoder.out_of_line_offset(0) is not allowed.
3447            if len == 0 {
3448                return Ok(());
3449            };
3450            depth.increment()?;
3451            let envelope_size = 8;
3452            let bytes_len = len * envelope_size;
3453            let offset = decoder.out_of_line_offset(bytes_len)?;
3454            // Decode the envelope for each type.
3455            let mut _next_ordinal_to_read = 0;
3456            let mut next_offset = offset;
3457            let end_offset = offset + bytes_len;
3458            _next_ordinal_to_read += 1;
3459            if next_offset >= end_offset {
3460                return Ok(());
3461            }
3462
3463            // Decode unknown envelopes for gaps in ordinals.
3464            while _next_ordinal_to_read < 1 {
3465                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3466                _next_ordinal_to_read += 1;
3467                next_offset += envelope_size;
3468            }
3469
3470            let next_out_of_line = decoder.next_out_of_line();
3471            let handles_before = decoder.remaining_handles();
3472            if let Some((inlined, num_bytes, num_handles)) =
3473                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3474            {
3475                let member_inline_size =
3476                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3477                if inlined != (member_inline_size <= 4) {
3478                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3479                }
3480                let inner_offset;
3481                let mut inner_depth = depth.clone();
3482                if inlined {
3483                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3484                    inner_offset = next_offset;
3485                } else {
3486                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3487                    inner_depth.increment()?;
3488                }
3489                let val_ref = self.debug.get_or_insert_with(|| fidl::new_empty!(bool, D));
3490                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3491                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3492                {
3493                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3494                }
3495                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3496                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3497                }
3498            }
3499
3500            next_offset += envelope_size;
3501            _next_ordinal_to_read += 1;
3502            if next_offset >= end_offset {
3503                return Ok(());
3504            }
3505
3506            // Decode unknown envelopes for gaps in ordinals.
3507            while _next_ordinal_to_read < 2 {
3508                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3509                _next_ordinal_to_read += 1;
3510                next_offset += envelope_size;
3511            }
3512
3513            let next_out_of_line = decoder.next_out_of_line();
3514            let handles_before = decoder.remaining_handles();
3515            if let Some((inlined, num_bytes, num_handles)) =
3516                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3517            {
3518                let member_inline_size =
3519                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3520                if inlined != (member_inline_size <= 4) {
3521                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3522                }
3523                let inner_offset;
3524                let mut inner_depth = depth.clone();
3525                if inlined {
3526                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3527                    inner_offset = next_offset;
3528                } else {
3529                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3530                    inner_depth.increment()?;
3531                }
3532                let val_ref =
3533                    self.list_children_batch_size.get_or_insert_with(|| fidl::new_empty!(u32, D));
3534                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3535                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3536                {
3537                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3538                }
3539                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3540                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3541                }
3542            }
3543
3544            next_offset += envelope_size;
3545            _next_ordinal_to_read += 1;
3546            if next_offset >= end_offset {
3547                return Ok(());
3548            }
3549
3550            // Decode unknown envelopes for gaps in ordinals.
3551            while _next_ordinal_to_read < 3 {
3552                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3553                _next_ordinal_to_read += 1;
3554                next_offset += envelope_size;
3555            }
3556
3557            let next_out_of_line = decoder.next_out_of_line();
3558            let handles_before = decoder.remaining_handles();
3559            if let Some((inlined, num_bytes, num_handles)) =
3560                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3561            {
3562                let member_inline_size =
3563                    <SecurityPolicy as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3564                if inlined != (member_inline_size <= 4) {
3565                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3566                }
3567                let inner_offset;
3568                let mut inner_depth = depth.clone();
3569                if inlined {
3570                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3571                    inner_offset = next_offset;
3572                } else {
3573                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3574                    inner_depth.increment()?;
3575                }
3576                let val_ref =
3577                    self.security_policy.get_or_insert_with(|| fidl::new_empty!(SecurityPolicy, D));
3578                fidl::decode!(SecurityPolicy, D, val_ref, decoder, inner_offset, inner_depth)?;
3579                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3580                {
3581                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3582                }
3583                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3584                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3585                }
3586            }
3587
3588            next_offset += envelope_size;
3589            _next_ordinal_to_read += 1;
3590            if next_offset >= end_offset {
3591                return Ok(());
3592            }
3593
3594            // Decode unknown envelopes for gaps in ordinals.
3595            while _next_ordinal_to_read < 4 {
3596                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3597                _next_ordinal_to_read += 1;
3598                next_offset += envelope_size;
3599            }
3600
3601            let next_out_of_line = decoder.next_out_of_line();
3602            let handles_before = decoder.remaining_handles();
3603            if let Some((inlined, num_bytes, num_handles)) =
3604                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3605            {
3606                let member_inline_size = <fidl::encoding::UnboundedVector<
3607                    fidl_fuchsia_component_decl_common::Capability,
3608                > as fidl::encoding::TypeMarker>::inline_size(
3609                    decoder.context
3610                );
3611                if inlined != (member_inline_size <= 4) {
3612                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3613                }
3614                let inner_offset;
3615                let mut inner_depth = depth.clone();
3616                if inlined {
3617                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3618                    inner_offset = next_offset;
3619                } else {
3620                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3621                    inner_depth.increment()?;
3622                }
3623                let val_ref = self.namespace_capabilities.get_or_insert_with(|| {
3624                    fidl::new_empty!(
3625                        fidl::encoding::UnboundedVector<
3626                            fidl_fuchsia_component_decl_common::Capability,
3627                        >,
3628                        D
3629                    )
3630                });
3631                fidl::decode!(
3632                    fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl_common::Capability>,
3633                    D,
3634                    val_ref,
3635                    decoder,
3636                    inner_offset,
3637                    inner_depth
3638                )?;
3639                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3640                {
3641                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3642                }
3643                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3644                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3645                }
3646            }
3647
3648            next_offset += envelope_size;
3649            _next_ordinal_to_read += 1;
3650            if next_offset >= end_offset {
3651                return Ok(());
3652            }
3653
3654            // Decode unknown envelopes for gaps in ordinals.
3655            while _next_ordinal_to_read < 5 {
3656                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3657                _next_ordinal_to_read += 1;
3658                next_offset += envelope_size;
3659            }
3660
3661            let next_out_of_line = decoder.next_out_of_line();
3662            let handles_before = decoder.remaining_handles();
3663            if let Some((inlined, num_bytes, num_handles)) =
3664                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3665            {
3666                let member_inline_size =
3667                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3668                if inlined != (member_inline_size <= 4) {
3669                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3670                }
3671                let inner_offset;
3672                let mut inner_depth = depth.clone();
3673                if inlined {
3674                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3675                    inner_offset = next_offset;
3676                } else {
3677                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3678                    inner_depth.increment()?;
3679                }
3680                let val_ref = self
3681                    .use_builtin_process_launcher
3682                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
3683                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3684                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3685                {
3686                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3687                }
3688                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3689                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3690                }
3691            }
3692
3693            next_offset += envelope_size;
3694            _next_ordinal_to_read += 1;
3695            if next_offset >= end_offset {
3696                return Ok(());
3697            }
3698
3699            // Decode unknown envelopes for gaps in ordinals.
3700            while _next_ordinal_to_read < 6 {
3701                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3702                _next_ordinal_to_read += 1;
3703                next_offset += envelope_size;
3704            }
3705
3706            let next_out_of_line = decoder.next_out_of_line();
3707            let handles_before = decoder.remaining_handles();
3708            if let Some((inlined, num_bytes, num_handles)) =
3709                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3710            {
3711                let member_inline_size =
3712                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3713                if inlined != (member_inline_size <= 4) {
3714                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3715                }
3716                let inner_offset;
3717                let mut inner_depth = depth.clone();
3718                if inlined {
3719                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3720                    inner_offset = next_offset;
3721                } else {
3722                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3723                    inner_depth.increment()?;
3724                }
3725                let val_ref =
3726                    self.maintain_utc_clock.get_or_insert_with(|| fidl::new_empty!(bool, D));
3727                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3728                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3729                {
3730                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3731                }
3732                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3733                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3734                }
3735            }
3736
3737            next_offset += envelope_size;
3738            _next_ordinal_to_read += 1;
3739            if next_offset >= end_offset {
3740                return Ok(());
3741            }
3742
3743            // Decode unknown envelopes for gaps in ordinals.
3744            while _next_ordinal_to_read < 7 {
3745                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3746                _next_ordinal_to_read += 1;
3747                next_offset += envelope_size;
3748            }
3749
3750            let next_out_of_line = decoder.next_out_of_line();
3751            let handles_before = decoder.remaining_handles();
3752            if let Some((inlined, num_bytes, num_handles)) =
3753                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3754            {
3755                let member_inline_size =
3756                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3757                if inlined != (member_inline_size <= 4) {
3758                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3759                }
3760                let inner_offset;
3761                let mut inner_depth = depth.clone();
3762                if inlined {
3763                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3764                    inner_offset = next_offset;
3765                } else {
3766                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3767                    inner_depth.increment()?;
3768                }
3769                let val_ref = self.num_threads.get_or_insert_with(|| fidl::new_empty!(u8, D));
3770                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
3771                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3772                {
3773                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3774                }
3775                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3776                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3777                }
3778            }
3779
3780            next_offset += envelope_size;
3781            _next_ordinal_to_read += 1;
3782            if next_offset >= end_offset {
3783                return Ok(());
3784            }
3785
3786            // Decode unknown envelopes for gaps in ordinals.
3787            while _next_ordinal_to_read < 10 {
3788                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3789                _next_ordinal_to_read += 1;
3790                next_offset += envelope_size;
3791            }
3792
3793            let next_out_of_line = decoder.next_out_of_line();
3794            let handles_before = decoder.remaining_handles();
3795            if let Some((inlined, num_bytes, num_handles)) =
3796                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3797            {
3798                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3799                if inlined != (member_inline_size <= 4) {
3800                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3801                }
3802                let inner_offset;
3803                let mut inner_depth = depth.clone();
3804                if inlined {
3805                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3806                    inner_offset = next_offset;
3807                } else {
3808                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3809                    inner_depth.increment()?;
3810                }
3811                let val_ref = self.root_component_url.get_or_insert_with(|| {
3812                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
3813                });
3814                fidl::decode!(
3815                    fidl::encoding::BoundedString<4096>,
3816                    D,
3817                    val_ref,
3818                    decoder,
3819                    inner_offset,
3820                    inner_depth
3821                )?;
3822                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3823                {
3824                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3825                }
3826                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3827                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3828                }
3829            }
3830
3831            next_offset += envelope_size;
3832            _next_ordinal_to_read += 1;
3833            if next_offset >= end_offset {
3834                return Ok(());
3835            }
3836
3837            // Decode unknown envelopes for gaps in ordinals.
3838            while _next_ordinal_to_read < 11 {
3839                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3840                _next_ordinal_to_read += 1;
3841                next_offset += envelope_size;
3842            }
3843
3844            let next_out_of_line = decoder.next_out_of_line();
3845            let handles_before = decoder.remaining_handles();
3846            if let Some((inlined, num_bytes, num_handles)) =
3847                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3848            {
3849                let member_inline_size = <fidl::encoding::BoundedString<4095> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3850                if inlined != (member_inline_size <= 4) {
3851                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3852                }
3853                let inner_offset;
3854                let mut inner_depth = depth.clone();
3855                if inlined {
3856                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3857                    inner_offset = next_offset;
3858                } else {
3859                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3860                    inner_depth.increment()?;
3861                }
3862                let val_ref = self.component_id_index_path.get_or_insert_with(|| {
3863                    fidl::new_empty!(fidl::encoding::BoundedString<4095>, D)
3864                });
3865                fidl::decode!(
3866                    fidl::encoding::BoundedString<4095>,
3867                    D,
3868                    val_ref,
3869                    decoder,
3870                    inner_offset,
3871                    inner_depth
3872                )?;
3873                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3874                {
3875                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3876                }
3877                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3878                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3879                }
3880            }
3881
3882            next_offset += envelope_size;
3883            _next_ordinal_to_read += 1;
3884            if next_offset >= end_offset {
3885                return Ok(());
3886            }
3887
3888            // Decode unknown envelopes for gaps in ordinals.
3889            while _next_ordinal_to_read < 12 {
3890                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3891                _next_ordinal_to_read += 1;
3892                next_offset += envelope_size;
3893            }
3894
3895            let next_out_of_line = decoder.next_out_of_line();
3896            let handles_before = decoder.remaining_handles();
3897            if let Some((inlined, num_bytes, num_handles)) =
3898                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3899            {
3900                let member_inline_size =
3901                    <LogDestination as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3902                if inlined != (member_inline_size <= 4) {
3903                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3904                }
3905                let inner_offset;
3906                let mut inner_depth = depth.clone();
3907                if inlined {
3908                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3909                    inner_offset = next_offset;
3910                } else {
3911                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3912                    inner_depth.increment()?;
3913                }
3914                let val_ref =
3915                    self.log_destination.get_or_insert_with(|| fidl::new_empty!(LogDestination, D));
3916                fidl::decode!(LogDestination, D, val_ref, decoder, inner_offset, inner_depth)?;
3917                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3918                {
3919                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3920                }
3921                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3922                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3923                }
3924            }
3925
3926            next_offset += envelope_size;
3927            _next_ordinal_to_read += 1;
3928            if next_offset >= end_offset {
3929                return Ok(());
3930            }
3931
3932            // Decode unknown envelopes for gaps in ordinals.
3933            while _next_ordinal_to_read < 13 {
3934                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3935                _next_ordinal_to_read += 1;
3936                next_offset += envelope_size;
3937            }
3938
3939            let next_out_of_line = decoder.next_out_of_line();
3940            let handles_before = decoder.remaining_handles();
3941            if let Some((inlined, num_bytes, num_handles)) =
3942                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3943            {
3944                let member_inline_size =
3945                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3946                if inlined != (member_inline_size <= 4) {
3947                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3948                }
3949                let inner_offset;
3950                let mut inner_depth = depth.clone();
3951                if inlined {
3952                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3953                    inner_offset = next_offset;
3954                } else {
3955                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3956                    inner_depth.increment()?;
3957                }
3958                let val_ref = self.log_all_events.get_or_insert_with(|| fidl::new_empty!(bool, D));
3959                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3960                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3961                {
3962                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3963                }
3964                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3965                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3966                }
3967            }
3968
3969            next_offset += envelope_size;
3970            _next_ordinal_to_read += 1;
3971            if next_offset >= end_offset {
3972                return Ok(());
3973            }
3974
3975            // Decode unknown envelopes for gaps in ordinals.
3976            while _next_ordinal_to_read < 14 {
3977                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3978                _next_ordinal_to_read += 1;
3979                next_offset += envelope_size;
3980            }
3981
3982            let next_out_of_line = decoder.next_out_of_line();
3983            let handles_before = decoder.remaining_handles();
3984            if let Some((inlined, num_bytes, num_handles)) =
3985                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3986            {
3987                let member_inline_size =
3988                    <BuiltinBootResolver as fidl::encoding::TypeMarker>::inline_size(
3989                        decoder.context,
3990                    );
3991                if inlined != (member_inline_size <= 4) {
3992                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3993                }
3994                let inner_offset;
3995                let mut inner_depth = depth.clone();
3996                if inlined {
3997                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3998                    inner_offset = next_offset;
3999                } else {
4000                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4001                    inner_depth.increment()?;
4002                }
4003                let val_ref = self
4004                    .builtin_boot_resolver
4005                    .get_or_insert_with(|| fidl::new_empty!(BuiltinBootResolver, D));
4006                fidl::decode!(BuiltinBootResolver, D, val_ref, decoder, inner_offset, inner_depth)?;
4007                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4008                {
4009                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4010                }
4011                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4012                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4013                }
4014            }
4015
4016            next_offset += envelope_size;
4017            _next_ordinal_to_read += 1;
4018            if next_offset >= end_offset {
4019                return Ok(());
4020            }
4021
4022            // Decode unknown envelopes for gaps in ordinals.
4023            while _next_ordinal_to_read < 16 {
4024                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4025                _next_ordinal_to_read += 1;
4026                next_offset += envelope_size;
4027            }
4028
4029            let next_out_of_line = decoder.next_out_of_line();
4030            let handles_before = decoder.remaining_handles();
4031            if let Some((inlined, num_bytes, num_handles)) =
4032                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4033            {
4034                let member_inline_size =
4035                    <RealmBuilderResolverAndRunner as fidl::encoding::TypeMarker>::inline_size(
4036                        decoder.context,
4037                    );
4038                if inlined != (member_inline_size <= 4) {
4039                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4040                }
4041                let inner_offset;
4042                let mut inner_depth = depth.clone();
4043                if inlined {
4044                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4045                    inner_offset = next_offset;
4046                } else {
4047                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4048                    inner_depth.increment()?;
4049                }
4050                let val_ref = self
4051                    .realm_builder_resolver_and_runner
4052                    .get_or_insert_with(|| fidl::new_empty!(RealmBuilderResolverAndRunner, D));
4053                fidl::decode!(
4054                    RealmBuilderResolverAndRunner,
4055                    D,
4056                    val_ref,
4057                    decoder,
4058                    inner_offset,
4059                    inner_depth
4060                )?;
4061                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4062                {
4063                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4064                }
4065                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4066                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4067                }
4068            }
4069
4070            next_offset += envelope_size;
4071            _next_ordinal_to_read += 1;
4072            if next_offset >= end_offset {
4073                return Ok(());
4074            }
4075
4076            // Decode unknown envelopes for gaps in ordinals.
4077            while _next_ordinal_to_read < 17 {
4078                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4079                _next_ordinal_to_read += 1;
4080                next_offset += envelope_size;
4081            }
4082
4083            let next_out_of_line = decoder.next_out_of_line();
4084            let handles_before = decoder.remaining_handles();
4085            if let Some((inlined, num_bytes, num_handles)) =
4086                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4087            {
4088                let member_inline_size = <fidl::encoding::UnboundedVector<
4089                    fidl_fuchsia_component_decl_common::Capability,
4090                > as fidl::encoding::TypeMarker>::inline_size(
4091                    decoder.context
4092                );
4093                if inlined != (member_inline_size <= 4) {
4094                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4095                }
4096                let inner_offset;
4097                let mut inner_depth = depth.clone();
4098                if inlined {
4099                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4100                    inner_offset = next_offset;
4101                } else {
4102                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4103                    inner_depth.increment()?;
4104                }
4105                let val_ref = self.builtin_capabilities.get_or_insert_with(|| {
4106                    fidl::new_empty!(
4107                        fidl::encoding::UnboundedVector<
4108                            fidl_fuchsia_component_decl_common::Capability,
4109                        >,
4110                        D
4111                    )
4112                });
4113                fidl::decode!(
4114                    fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl_common::Capability>,
4115                    D,
4116                    val_ref,
4117                    decoder,
4118                    inner_offset,
4119                    inner_depth
4120                )?;
4121                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4122                {
4123                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4124                }
4125                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4126                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4127                }
4128            }
4129
4130            next_offset += envelope_size;
4131            _next_ordinal_to_read += 1;
4132            if next_offset >= end_offset {
4133                return Ok(());
4134            }
4135
4136            // Decode unknown envelopes for gaps in ordinals.
4137            while _next_ordinal_to_read < 18 {
4138                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4139                _next_ordinal_to_read += 1;
4140                next_offset += envelope_size;
4141            }
4142
4143            let next_out_of_line = decoder.next_out_of_line();
4144            let handles_before = decoder.remaining_handles();
4145            if let Some((inlined, num_bytes, num_handles)) =
4146                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4147            {
4148                let member_inline_size =
4149                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4150                if inlined != (member_inline_size <= 4) {
4151                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4152                }
4153                let inner_offset;
4154                let mut inner_depth = depth.clone();
4155                if inlined {
4156                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4157                    inner_offset = next_offset;
4158                } else {
4159                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4160                    inner_depth.increment()?;
4161                }
4162                let val_ref =
4163                    self.enable_introspection.get_or_insert_with(|| fidl::new_empty!(bool, D));
4164                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4165                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4166                {
4167                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4168                }
4169                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4170                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4171                }
4172            }
4173
4174            next_offset += envelope_size;
4175            _next_ordinal_to_read += 1;
4176            if next_offset >= end_offset {
4177                return Ok(());
4178            }
4179
4180            // Decode unknown envelopes for gaps in ordinals.
4181            while _next_ordinal_to_read < 19 {
4182                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4183                _next_ordinal_to_read += 1;
4184                next_offset += envelope_size;
4185            }
4186
4187            let next_out_of_line = decoder.next_out_of_line();
4188            let handles_before = decoder.remaining_handles();
4189            if let Some((inlined, num_bytes, num_handles)) =
4190                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4191            {
4192                let member_inline_size =
4193                    <AbiRevisionPolicy as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4194                if inlined != (member_inline_size <= 4) {
4195                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4196                }
4197                let inner_offset;
4198                let mut inner_depth = depth.clone();
4199                if inlined {
4200                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4201                    inner_offset = next_offset;
4202                } else {
4203                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4204                    inner_depth.increment()?;
4205                }
4206                let val_ref = self
4207                    .abi_revision_policy
4208                    .get_or_insert_with(|| fidl::new_empty!(AbiRevisionPolicy, D));
4209                fidl::decode!(AbiRevisionPolicy, D, val_ref, decoder, inner_offset, inner_depth)?;
4210                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4211                {
4212                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4213                }
4214                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4215                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4216                }
4217            }
4218
4219            next_offset += envelope_size;
4220            _next_ordinal_to_read += 1;
4221            if next_offset >= end_offset {
4222                return Ok(());
4223            }
4224
4225            // Decode unknown envelopes for gaps in ordinals.
4226            while _next_ordinal_to_read < 20 {
4227                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4228                _next_ordinal_to_read += 1;
4229                next_offset += envelope_size;
4230            }
4231
4232            let next_out_of_line = decoder.next_out_of_line();
4233            let handles_before = decoder.remaining_handles();
4234            if let Some((inlined, num_bytes, num_handles)) =
4235                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4236            {
4237                let member_inline_size =
4238                    <VmexSource as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4239                if inlined != (member_inline_size <= 4) {
4240                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4241                }
4242                let inner_offset;
4243                let mut inner_depth = depth.clone();
4244                if inlined {
4245                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4246                    inner_offset = next_offset;
4247                } else {
4248                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4249                    inner_depth.increment()?;
4250                }
4251                let val_ref =
4252                    self.vmex_source.get_or_insert_with(|| fidl::new_empty!(VmexSource, D));
4253                fidl::decode!(VmexSource, D, val_ref, decoder, inner_offset, inner_depth)?;
4254                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4255                {
4256                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4257                }
4258                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4259                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4260                }
4261            }
4262
4263            next_offset += envelope_size;
4264            _next_ordinal_to_read += 1;
4265            if next_offset >= end_offset {
4266                return Ok(());
4267            }
4268
4269            // Decode unknown envelopes for gaps in ordinals.
4270            while _next_ordinal_to_read < 21 {
4271                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4272                _next_ordinal_to_read += 1;
4273                next_offset += envelope_size;
4274            }
4275
4276            let next_out_of_line = decoder.next_out_of_line();
4277            let handles_before = decoder.remaining_handles();
4278            if let Some((inlined, num_bytes, num_handles)) =
4279                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4280            {
4281                let member_inline_size =
4282                    <HealthCheck as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4283                if inlined != (member_inline_size <= 4) {
4284                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4285                }
4286                let inner_offset;
4287                let mut inner_depth = depth.clone();
4288                if inlined {
4289                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4290                    inner_offset = next_offset;
4291                } else {
4292                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4293                    inner_depth.increment()?;
4294                }
4295                let val_ref =
4296                    self.health_check.get_or_insert_with(|| fidl::new_empty!(HealthCheck, D));
4297                fidl::decode!(HealthCheck, D, val_ref, decoder, inner_offset, inner_depth)?;
4298                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4299                {
4300                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4301                }
4302                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4303                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4304                }
4305            }
4306
4307            next_offset += envelope_size;
4308            _next_ordinal_to_read += 1;
4309            if next_offset >= end_offset {
4310                return Ok(());
4311            }
4312
4313            // Decode unknown envelopes for gaps in ordinals.
4314            while _next_ordinal_to_read < 22 {
4315                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4316                _next_ordinal_to_read += 1;
4317                next_offset += envelope_size;
4318            }
4319
4320            let next_out_of_line = decoder.next_out_of_line();
4321            let handles_before = decoder.remaining_handles();
4322            if let Some((inlined, num_bytes, num_handles)) =
4323                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4324            {
4325                let member_inline_size =
4326                    <TraceProvider as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4327                if inlined != (member_inline_size <= 4) {
4328                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4329                }
4330                let inner_offset;
4331                let mut inner_depth = depth.clone();
4332                if inlined {
4333                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4334                    inner_offset = next_offset;
4335                } else {
4336                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4337                    inner_depth.increment()?;
4338                }
4339                let val_ref =
4340                    self.trace_provider.get_or_insert_with(|| fidl::new_empty!(TraceProvider, D));
4341                fidl::decode!(TraceProvider, D, val_ref, decoder, inner_offset, inner_depth)?;
4342                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4343                {
4344                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4345                }
4346                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4347                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4348                }
4349            }
4350
4351            next_offset += envelope_size;
4352            _next_ordinal_to_read += 1;
4353            if next_offset >= end_offset {
4354                return Ok(());
4355            }
4356
4357            // Decode unknown envelopes for gaps in ordinals.
4358            while _next_ordinal_to_read < 23 {
4359                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4360                _next_ordinal_to_read += 1;
4361                next_offset += envelope_size;
4362            }
4363
4364            let next_out_of_line = decoder.next_out_of_line();
4365            let handles_before = decoder.remaining_handles();
4366            if let Some((inlined, num_bytes, num_handles)) =
4367                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4368            {
4369                let member_inline_size = <fidl::encoding::UnboundedVector<InjectedCapabilities> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4370                if inlined != (member_inline_size <= 4) {
4371                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4372                }
4373                let inner_offset;
4374                let mut inner_depth = depth.clone();
4375                if inlined {
4376                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4377                    inner_offset = next_offset;
4378                } else {
4379                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4380                    inner_depth.increment()?;
4381                }
4382                let val_ref = self.inject_capabilities.get_or_insert_with(|| {
4383                    fidl::new_empty!(fidl::encoding::UnboundedVector<InjectedCapabilities>, D)
4384                });
4385                fidl::decode!(
4386                    fidl::encoding::UnboundedVector<InjectedCapabilities>,
4387                    D,
4388                    val_ref,
4389                    decoder,
4390                    inner_offset,
4391                    inner_depth
4392                )?;
4393                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4394                {
4395                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4396                }
4397                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4398                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4399                }
4400            }
4401
4402            next_offset += envelope_size;
4403            _next_ordinal_to_read += 1;
4404            if next_offset >= end_offset {
4405                return Ok(());
4406            }
4407
4408            // Decode unknown envelopes for gaps in ordinals.
4409            while _next_ordinal_to_read < 24 {
4410                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4411                _next_ordinal_to_read += 1;
4412                next_offset += envelope_size;
4413            }
4414
4415            let next_out_of_line = decoder.next_out_of_line();
4416            let handles_before = decoder.remaining_handles();
4417            if let Some((inlined, num_bytes, num_handles)) =
4418                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4419            {
4420                let member_inline_size =
4421                    <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
4422                        decoder.context,
4423                    );
4424                if inlined != (member_inline_size <= 4) {
4425                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4426                }
4427                let inner_offset;
4428                let mut inner_depth = depth.clone();
4429                if inlined {
4430                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4431                    inner_offset = next_offset;
4432                } else {
4433                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4434                    inner_depth.increment()?;
4435                }
4436                let val_ref = self
4437                    .scudo_options
4438                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
4439                fidl::decode!(
4440                    fidl::encoding::UnboundedString,
4441                    D,
4442                    val_ref,
4443                    decoder,
4444                    inner_offset,
4445                    inner_depth
4446                )?;
4447                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4448                {
4449                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4450                }
4451                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4452                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4453                }
4454            }
4455
4456            next_offset += envelope_size;
4457
4458            // Decode the remaining unknown envelopes.
4459            while next_offset < end_offset {
4460                _next_ordinal_to_read += 1;
4461                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4462                next_offset += envelope_size;
4463            }
4464
4465            Ok(())
4466        }
4467    }
4468
4469    impl DebugRegistrationAllowlistEntry {
4470        #[inline(always)]
4471        fn max_ordinal_present(&self) -> u64 {
4472            if let Some(_) = self.environment_name {
4473                return 4;
4474            }
4475            if let Some(_) = self.moniker {
4476                return 3;
4477            }
4478            if let Some(_) = self.debug {
4479                return 2;
4480            }
4481            if let Some(_) = self.name {
4482                return 1;
4483            }
4484            0
4485        }
4486    }
4487
4488    impl fidl::encoding::ValueTypeMarker for DebugRegistrationAllowlistEntry {
4489        type Borrowed<'a> = &'a Self;
4490        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4491            value
4492        }
4493    }
4494
4495    unsafe impl fidl::encoding::TypeMarker for DebugRegistrationAllowlistEntry {
4496        type Owned = Self;
4497
4498        #[inline(always)]
4499        fn inline_align(_context: fidl::encoding::Context) -> usize {
4500            8
4501        }
4502
4503        #[inline(always)]
4504        fn inline_size(_context: fidl::encoding::Context) -> usize {
4505            16
4506        }
4507    }
4508
4509    unsafe impl<D: fidl::encoding::ResourceDialect>
4510        fidl::encoding::Encode<DebugRegistrationAllowlistEntry, D>
4511        for &DebugRegistrationAllowlistEntry
4512    {
4513        unsafe fn encode(
4514            self,
4515            encoder: &mut fidl::encoding::Encoder<'_, D>,
4516            offset: usize,
4517            mut depth: fidl::encoding::Depth,
4518        ) -> fidl::Result<()> {
4519            encoder.debug_check_bounds::<DebugRegistrationAllowlistEntry>(offset);
4520            // Vector header
4521            let max_ordinal: u64 = self.max_ordinal_present();
4522            encoder.write_num(max_ordinal, offset);
4523            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4524            // Calling encoder.out_of_line_offset(0) is not allowed.
4525            if max_ordinal == 0 {
4526                return Ok(());
4527            }
4528            depth.increment()?;
4529            let envelope_size = 8;
4530            let bytes_len = max_ordinal as usize * envelope_size;
4531            #[allow(unused_variables)]
4532            let offset = encoder.out_of_line_offset(bytes_len);
4533            let mut _prev_end_offset: usize = 0;
4534            if 1 > max_ordinal {
4535                return Ok(());
4536            }
4537
4538            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4539            // are envelope_size bytes.
4540            let cur_offset: usize = (1 - 1) * envelope_size;
4541
4542            // Zero reserved fields.
4543            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4544
4545            // Safety:
4546            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4547            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4548            //   envelope_size bytes, there is always sufficient room.
4549            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
4550                self.name.as_ref().map(
4551                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
4552                ),
4553                encoder,
4554                offset + cur_offset,
4555                depth,
4556            )?;
4557
4558            _prev_end_offset = cur_offset + envelope_size;
4559            if 2 > max_ordinal {
4560                return Ok(());
4561            }
4562
4563            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4564            // are envelope_size bytes.
4565            let cur_offset: usize = (2 - 1) * envelope_size;
4566
4567            // Zero reserved fields.
4568            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4569
4570            // Safety:
4571            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4572            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4573            //   envelope_size bytes, there is always sufficient room.
4574            fidl::encoding::encode_in_envelope_optional::<AllowlistedDebugRegistration, D>(
4575                self.debug
4576                    .as_ref()
4577                    .map(<AllowlistedDebugRegistration as fidl::encoding::ValueTypeMarker>::borrow),
4578                encoder,
4579                offset + cur_offset,
4580                depth,
4581            )?;
4582
4583            _prev_end_offset = cur_offset + envelope_size;
4584            if 3 > max_ordinal {
4585                return Ok(());
4586            }
4587
4588            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4589            // are envelope_size bytes.
4590            let cur_offset: usize = (3 - 1) * envelope_size;
4591
4592            // Zero reserved fields.
4593            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4594
4595            // Safety:
4596            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4597            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4598            //   envelope_size bytes, there is always sufficient room.
4599            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
4600            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
4601            encoder, offset + cur_offset, depth
4602        )?;
4603
4604            _prev_end_offset = cur_offset + envelope_size;
4605            if 4 > max_ordinal {
4606                return Ok(());
4607            }
4608
4609            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4610            // are envelope_size bytes.
4611            let cur_offset: usize = (4 - 1) * envelope_size;
4612
4613            // Zero reserved fields.
4614            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4615
4616            // Safety:
4617            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4618            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4619            //   envelope_size bytes, there is always sufficient room.
4620            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
4621                self.environment_name.as_ref().map(
4622                    <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
4623                ),
4624                encoder,
4625                offset + cur_offset,
4626                depth,
4627            )?;
4628
4629            _prev_end_offset = cur_offset + envelope_size;
4630
4631            Ok(())
4632        }
4633    }
4634
4635    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4636        for DebugRegistrationAllowlistEntry
4637    {
4638        #[inline(always)]
4639        fn new_empty() -> Self {
4640            Self::default()
4641        }
4642
4643        unsafe fn decode(
4644            &mut self,
4645            decoder: &mut fidl::encoding::Decoder<'_, D>,
4646            offset: usize,
4647            mut depth: fidl::encoding::Depth,
4648        ) -> fidl::Result<()> {
4649            decoder.debug_check_bounds::<Self>(offset);
4650            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4651                None => return Err(fidl::Error::NotNullable),
4652                Some(len) => len,
4653            };
4654            // Calling decoder.out_of_line_offset(0) is not allowed.
4655            if len == 0 {
4656                return Ok(());
4657            };
4658            depth.increment()?;
4659            let envelope_size = 8;
4660            let bytes_len = len * envelope_size;
4661            let offset = decoder.out_of_line_offset(bytes_len)?;
4662            // Decode the envelope for each type.
4663            let mut _next_ordinal_to_read = 0;
4664            let mut next_offset = offset;
4665            let end_offset = offset + bytes_len;
4666            _next_ordinal_to_read += 1;
4667            if next_offset >= end_offset {
4668                return Ok(());
4669            }
4670
4671            // Decode unknown envelopes for gaps in ordinals.
4672            while _next_ordinal_to_read < 1 {
4673                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4674                _next_ordinal_to_read += 1;
4675                next_offset += envelope_size;
4676            }
4677
4678            let next_out_of_line = decoder.next_out_of_line();
4679            let handles_before = decoder.remaining_handles();
4680            if let Some((inlined, num_bytes, num_handles)) =
4681                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4682            {
4683                let member_inline_size =
4684                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
4685                        decoder.context,
4686                    );
4687                if inlined != (member_inline_size <= 4) {
4688                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4689                }
4690                let inner_offset;
4691                let mut inner_depth = depth.clone();
4692                if inlined {
4693                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4694                    inner_offset = next_offset;
4695                } else {
4696                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4697                    inner_depth.increment()?;
4698                }
4699                let val_ref = self
4700                    .name
4701                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
4702                fidl::decode!(
4703                    fidl::encoding::BoundedString<255>,
4704                    D,
4705                    val_ref,
4706                    decoder,
4707                    inner_offset,
4708                    inner_depth
4709                )?;
4710                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4711                {
4712                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4713                }
4714                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4715                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4716                }
4717            }
4718
4719            next_offset += envelope_size;
4720            _next_ordinal_to_read += 1;
4721            if next_offset >= end_offset {
4722                return Ok(());
4723            }
4724
4725            // Decode unknown envelopes for gaps in ordinals.
4726            while _next_ordinal_to_read < 2 {
4727                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4728                _next_ordinal_to_read += 1;
4729                next_offset += envelope_size;
4730            }
4731
4732            let next_out_of_line = decoder.next_out_of_line();
4733            let handles_before = decoder.remaining_handles();
4734            if let Some((inlined, num_bytes, num_handles)) =
4735                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4736            {
4737                let member_inline_size =
4738                    <AllowlistedDebugRegistration as fidl::encoding::TypeMarker>::inline_size(
4739                        decoder.context,
4740                    );
4741                if inlined != (member_inline_size <= 4) {
4742                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4743                }
4744                let inner_offset;
4745                let mut inner_depth = depth.clone();
4746                if inlined {
4747                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4748                    inner_offset = next_offset;
4749                } else {
4750                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4751                    inner_depth.increment()?;
4752                }
4753                let val_ref = self
4754                    .debug
4755                    .get_or_insert_with(|| fidl::new_empty!(AllowlistedDebugRegistration, D));
4756                fidl::decode!(
4757                    AllowlistedDebugRegistration,
4758                    D,
4759                    val_ref,
4760                    decoder,
4761                    inner_offset,
4762                    inner_depth
4763                )?;
4764                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4765                {
4766                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4767                }
4768                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4769                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4770                }
4771            }
4772
4773            next_offset += envelope_size;
4774            _next_ordinal_to_read += 1;
4775            if next_offset >= end_offset {
4776                return Ok(());
4777            }
4778
4779            // Decode unknown envelopes for gaps in ordinals.
4780            while _next_ordinal_to_read < 3 {
4781                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4782                _next_ordinal_to_read += 1;
4783                next_offset += envelope_size;
4784            }
4785
4786            let next_out_of_line = decoder.next_out_of_line();
4787            let handles_before = decoder.remaining_handles();
4788            if let Some((inlined, num_bytes, num_handles)) =
4789                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4790            {
4791                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4792                if inlined != (member_inline_size <= 4) {
4793                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4794                }
4795                let inner_offset;
4796                let mut inner_depth = depth.clone();
4797                if inlined {
4798                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4799                    inner_offset = next_offset;
4800                } else {
4801                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4802                    inner_depth.increment()?;
4803                }
4804                let val_ref = self.moniker.get_or_insert_with(|| {
4805                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
4806                });
4807                fidl::decode!(
4808                    fidl::encoding::BoundedString<4096>,
4809                    D,
4810                    val_ref,
4811                    decoder,
4812                    inner_offset,
4813                    inner_depth
4814                )?;
4815                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4816                {
4817                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4818                }
4819                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4820                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4821                }
4822            }
4823
4824            next_offset += envelope_size;
4825            _next_ordinal_to_read += 1;
4826            if next_offset >= end_offset {
4827                return Ok(());
4828            }
4829
4830            // Decode unknown envelopes for gaps in ordinals.
4831            while _next_ordinal_to_read < 4 {
4832                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4833                _next_ordinal_to_read += 1;
4834                next_offset += envelope_size;
4835            }
4836
4837            let next_out_of_line = decoder.next_out_of_line();
4838            let handles_before = decoder.remaining_handles();
4839            if let Some((inlined, num_bytes, num_handles)) =
4840                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4841            {
4842                let member_inline_size =
4843                    <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
4844                        decoder.context,
4845                    );
4846                if inlined != (member_inline_size <= 4) {
4847                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4848                }
4849                let inner_offset;
4850                let mut inner_depth = depth.clone();
4851                if inlined {
4852                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4853                    inner_offset = next_offset;
4854                } else {
4855                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4856                    inner_depth.increment()?;
4857                }
4858                let val_ref = self
4859                    .environment_name
4860                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
4861                fidl::decode!(
4862                    fidl::encoding::BoundedString<255>,
4863                    D,
4864                    val_ref,
4865                    decoder,
4866                    inner_offset,
4867                    inner_depth
4868                )?;
4869                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4870                {
4871                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4872                }
4873                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4874                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4875                }
4876            }
4877
4878            next_offset += envelope_size;
4879
4880            // Decode the remaining unknown envelopes.
4881            while next_offset < end_offset {
4882                _next_ordinal_to_read += 1;
4883                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4884                next_offset += envelope_size;
4885            }
4886
4887            Ok(())
4888        }
4889    }
4890
4891    impl DebugRegistrationPolicyAllowlists {
4892        #[inline(always)]
4893        fn max_ordinal_present(&self) -> u64 {
4894            if let Some(_) = self.allowlist {
4895                return 1;
4896            }
4897            0
4898        }
4899    }
4900
4901    impl fidl::encoding::ValueTypeMarker for DebugRegistrationPolicyAllowlists {
4902        type Borrowed<'a> = &'a Self;
4903        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4904            value
4905        }
4906    }
4907
4908    unsafe impl fidl::encoding::TypeMarker for DebugRegistrationPolicyAllowlists {
4909        type Owned = Self;
4910
4911        #[inline(always)]
4912        fn inline_align(_context: fidl::encoding::Context) -> usize {
4913            8
4914        }
4915
4916        #[inline(always)]
4917        fn inline_size(_context: fidl::encoding::Context) -> usize {
4918            16
4919        }
4920    }
4921
4922    unsafe impl<D: fidl::encoding::ResourceDialect>
4923        fidl::encoding::Encode<DebugRegistrationPolicyAllowlists, D>
4924        for &DebugRegistrationPolicyAllowlists
4925    {
4926        unsafe fn encode(
4927            self,
4928            encoder: &mut fidl::encoding::Encoder<'_, D>,
4929            offset: usize,
4930            mut depth: fidl::encoding::Depth,
4931        ) -> fidl::Result<()> {
4932            encoder.debug_check_bounds::<DebugRegistrationPolicyAllowlists>(offset);
4933            // Vector header
4934            let max_ordinal: u64 = self.max_ordinal_present();
4935            encoder.write_num(max_ordinal, offset);
4936            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4937            // Calling encoder.out_of_line_offset(0) is not allowed.
4938            if max_ordinal == 0 {
4939                return Ok(());
4940            }
4941            depth.increment()?;
4942            let envelope_size = 8;
4943            let bytes_len = max_ordinal as usize * envelope_size;
4944            #[allow(unused_variables)]
4945            let offset = encoder.out_of_line_offset(bytes_len);
4946            let mut _prev_end_offset: usize = 0;
4947            if 1 > max_ordinal {
4948                return Ok(());
4949            }
4950
4951            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4952            // are envelope_size bytes.
4953            let cur_offset: usize = (1 - 1) * envelope_size;
4954
4955            // Zero reserved fields.
4956            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4957
4958            // Safety:
4959            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4960            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4961            //   envelope_size bytes, there is always sufficient room.
4962            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<DebugRegistrationAllowlistEntry, 128>, D>(
4963            self.allowlist.as_ref().map(<fidl::encoding::Vector<DebugRegistrationAllowlistEntry, 128> as fidl::encoding::ValueTypeMarker>::borrow),
4964            encoder, offset + cur_offset, depth
4965        )?;
4966
4967            _prev_end_offset = cur_offset + envelope_size;
4968
4969            Ok(())
4970        }
4971    }
4972
4973    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4974        for DebugRegistrationPolicyAllowlists
4975    {
4976        #[inline(always)]
4977        fn new_empty() -> Self {
4978            Self::default()
4979        }
4980
4981        unsafe fn decode(
4982            &mut self,
4983            decoder: &mut fidl::encoding::Decoder<'_, D>,
4984            offset: usize,
4985            mut depth: fidl::encoding::Depth,
4986        ) -> fidl::Result<()> {
4987            decoder.debug_check_bounds::<Self>(offset);
4988            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4989                None => return Err(fidl::Error::NotNullable),
4990                Some(len) => len,
4991            };
4992            // Calling decoder.out_of_line_offset(0) is not allowed.
4993            if len == 0 {
4994                return Ok(());
4995            };
4996            depth.increment()?;
4997            let envelope_size = 8;
4998            let bytes_len = len * envelope_size;
4999            let offset = decoder.out_of_line_offset(bytes_len)?;
5000            // Decode the envelope for each type.
5001            let mut _next_ordinal_to_read = 0;
5002            let mut next_offset = offset;
5003            let end_offset = offset + bytes_len;
5004            _next_ordinal_to_read += 1;
5005            if next_offset >= end_offset {
5006                return Ok(());
5007            }
5008
5009            // Decode unknown envelopes for gaps in ordinals.
5010            while _next_ordinal_to_read < 1 {
5011                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5012                _next_ordinal_to_read += 1;
5013                next_offset += envelope_size;
5014            }
5015
5016            let next_out_of_line = decoder.next_out_of_line();
5017            let handles_before = decoder.remaining_handles();
5018            if let Some((inlined, num_bytes, num_handles)) =
5019                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5020            {
5021                let member_inline_size = <fidl::encoding::Vector<
5022                    DebugRegistrationAllowlistEntry,
5023                    128,
5024                > as fidl::encoding::TypeMarker>::inline_size(
5025                    decoder.context
5026                );
5027                if inlined != (member_inline_size <= 4) {
5028                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5029                }
5030                let inner_offset;
5031                let mut inner_depth = depth.clone();
5032                if inlined {
5033                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5034                    inner_offset = next_offset;
5035                } else {
5036                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5037                    inner_depth.increment()?;
5038                }
5039                let val_ref =
5040                self.allowlist.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<DebugRegistrationAllowlistEntry, 128>, D));
5041                fidl::decode!(fidl::encoding::Vector<DebugRegistrationAllowlistEntry, 128>, D, val_ref, decoder, inner_offset, inner_depth)?;
5042                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5043                {
5044                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5045                }
5046                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5047                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5048                }
5049            }
5050
5051            next_offset += envelope_size;
5052
5053            // Decode the remaining unknown envelopes.
5054            while next_offset < end_offset {
5055                _next_ordinal_to_read += 1;
5056                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5057                next_offset += envelope_size;
5058            }
5059
5060            Ok(())
5061        }
5062    }
5063
5064    impl EventStreamRouteMetadata {
5065        #[inline(always)]
5066        fn max_ordinal_present(&self) -> u64 {
5067            if let Some(_) = self.scope {
5068                return 2;
5069            }
5070            if let Some(_) = self.scope_moniker {
5071                return 1;
5072            }
5073            0
5074        }
5075    }
5076
5077    impl fidl::encoding::ValueTypeMarker for EventStreamRouteMetadata {
5078        type Borrowed<'a> = &'a Self;
5079        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5080            value
5081        }
5082    }
5083
5084    unsafe impl fidl::encoding::TypeMarker for EventStreamRouteMetadata {
5085        type Owned = Self;
5086
5087        #[inline(always)]
5088        fn inline_align(_context: fidl::encoding::Context) -> usize {
5089            8
5090        }
5091
5092        #[inline(always)]
5093        fn inline_size(_context: fidl::encoding::Context) -> usize {
5094            16
5095        }
5096    }
5097
5098    unsafe impl<D: fidl::encoding::ResourceDialect>
5099        fidl::encoding::Encode<EventStreamRouteMetadata, D> for &EventStreamRouteMetadata
5100    {
5101        unsafe fn encode(
5102            self,
5103            encoder: &mut fidl::encoding::Encoder<'_, D>,
5104            offset: usize,
5105            mut depth: fidl::encoding::Depth,
5106        ) -> fidl::Result<()> {
5107            encoder.debug_check_bounds::<EventStreamRouteMetadata>(offset);
5108            // Vector header
5109            let max_ordinal: u64 = self.max_ordinal_present();
5110            encoder.write_num(max_ordinal, offset);
5111            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5112            // Calling encoder.out_of_line_offset(0) is not allowed.
5113            if max_ordinal == 0 {
5114                return Ok(());
5115            }
5116            depth.increment()?;
5117            let envelope_size = 8;
5118            let bytes_len = max_ordinal as usize * envelope_size;
5119            #[allow(unused_variables)]
5120            let offset = encoder.out_of_line_offset(bytes_len);
5121            let mut _prev_end_offset: usize = 0;
5122            if 1 > max_ordinal {
5123                return Ok(());
5124            }
5125
5126            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5127            // are envelope_size bytes.
5128            let cur_offset: usize = (1 - 1) * envelope_size;
5129
5130            // Zero reserved fields.
5131            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5132
5133            // Safety:
5134            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5135            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5136            //   envelope_size bytes, there is always sufficient room.
5137            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
5138            self.scope_moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
5139            encoder, offset + cur_offset, depth
5140        )?;
5141
5142            _prev_end_offset = cur_offset + envelope_size;
5143            if 2 > max_ordinal {
5144                return Ok(());
5145            }
5146
5147            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5148            // are envelope_size bytes.
5149            let cur_offset: usize = (2 - 1) * envelope_size;
5150
5151            // Zero reserved fields.
5152            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5153
5154            // Safety:
5155            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5156            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5157            //   envelope_size bytes, there is always sufficient room.
5158            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl_common::Ref>, D>(
5159            self.scope.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl_common::Ref> as fidl::encoding::ValueTypeMarker>::borrow),
5160            encoder, offset + cur_offset, depth
5161        )?;
5162
5163            _prev_end_offset = cur_offset + envelope_size;
5164
5165            Ok(())
5166        }
5167    }
5168
5169    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5170        for EventStreamRouteMetadata
5171    {
5172        #[inline(always)]
5173        fn new_empty() -> Self {
5174            Self::default()
5175        }
5176
5177        unsafe fn decode(
5178            &mut self,
5179            decoder: &mut fidl::encoding::Decoder<'_, D>,
5180            offset: usize,
5181            mut depth: fidl::encoding::Depth,
5182        ) -> fidl::Result<()> {
5183            decoder.debug_check_bounds::<Self>(offset);
5184            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5185                None => return Err(fidl::Error::NotNullable),
5186                Some(len) => len,
5187            };
5188            // Calling decoder.out_of_line_offset(0) is not allowed.
5189            if len == 0 {
5190                return Ok(());
5191            };
5192            depth.increment()?;
5193            let envelope_size = 8;
5194            let bytes_len = len * envelope_size;
5195            let offset = decoder.out_of_line_offset(bytes_len)?;
5196            // Decode the envelope for each type.
5197            let mut _next_ordinal_to_read = 0;
5198            let mut next_offset = offset;
5199            let end_offset = offset + bytes_len;
5200            _next_ordinal_to_read += 1;
5201            if next_offset >= end_offset {
5202                return Ok(());
5203            }
5204
5205            // Decode unknown envelopes for gaps in ordinals.
5206            while _next_ordinal_to_read < 1 {
5207                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5208                _next_ordinal_to_read += 1;
5209                next_offset += envelope_size;
5210            }
5211
5212            let next_out_of_line = decoder.next_out_of_line();
5213            let handles_before = decoder.remaining_handles();
5214            if let Some((inlined, num_bytes, num_handles)) =
5215                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5216            {
5217                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5218                if inlined != (member_inline_size <= 4) {
5219                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5220                }
5221                let inner_offset;
5222                let mut inner_depth = depth.clone();
5223                if inlined {
5224                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5225                    inner_offset = next_offset;
5226                } else {
5227                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5228                    inner_depth.increment()?;
5229                }
5230                let val_ref = self.scope_moniker.get_or_insert_with(|| {
5231                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
5232                });
5233                fidl::decode!(
5234                    fidl::encoding::BoundedString<4096>,
5235                    D,
5236                    val_ref,
5237                    decoder,
5238                    inner_offset,
5239                    inner_depth
5240                )?;
5241                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5242                {
5243                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5244                }
5245                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5246                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5247                }
5248            }
5249
5250            next_offset += envelope_size;
5251            _next_ordinal_to_read += 1;
5252            if next_offset >= end_offset {
5253                return Ok(());
5254            }
5255
5256            // Decode unknown envelopes for gaps in ordinals.
5257            while _next_ordinal_to_read < 2 {
5258                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5259                _next_ordinal_to_read += 1;
5260                next_offset += envelope_size;
5261            }
5262
5263            let next_out_of_line = decoder.next_out_of_line();
5264            let handles_before = decoder.remaining_handles();
5265            if let Some((inlined, num_bytes, num_handles)) =
5266                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5267            {
5268                let member_inline_size = <fidl::encoding::UnboundedVector<
5269                    fidl_fuchsia_component_decl_common::Ref,
5270                > as fidl::encoding::TypeMarker>::inline_size(
5271                    decoder.context
5272                );
5273                if inlined != (member_inline_size <= 4) {
5274                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5275                }
5276                let inner_offset;
5277                let mut inner_depth = depth.clone();
5278                if inlined {
5279                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5280                    inner_offset = next_offset;
5281                } else {
5282                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5283                    inner_depth.increment()?;
5284                }
5285                let val_ref = self.scope.get_or_insert_with(|| {
5286                    fidl::new_empty!(
5287                        fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl_common::Ref>,
5288                        D
5289                    )
5290                });
5291                fidl::decode!(
5292                    fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl_common::Ref>,
5293                    D,
5294                    val_ref,
5295                    decoder,
5296                    inner_offset,
5297                    inner_depth
5298                )?;
5299                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5300                {
5301                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5302                }
5303                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5304                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5305                }
5306            }
5307
5308            next_offset += envelope_size;
5309
5310            // Decode the remaining unknown envelopes.
5311            while next_offset < end_offset {
5312                _next_ordinal_to_read += 1;
5313                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5314                next_offset += envelope_size;
5315            }
5316
5317            Ok(())
5318        }
5319    }
5320
5321    impl HealthCheck {
5322        #[inline(always)]
5323        fn max_ordinal_present(&self) -> u64 {
5324            if let Some(_) = self.monikers {
5325                return 1;
5326            }
5327            0
5328        }
5329    }
5330
5331    impl fidl::encoding::ValueTypeMarker for HealthCheck {
5332        type Borrowed<'a> = &'a Self;
5333        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5334            value
5335        }
5336    }
5337
5338    unsafe impl fidl::encoding::TypeMarker for HealthCheck {
5339        type Owned = Self;
5340
5341        #[inline(always)]
5342        fn inline_align(_context: fidl::encoding::Context) -> usize {
5343            8
5344        }
5345
5346        #[inline(always)]
5347        fn inline_size(_context: fidl::encoding::Context) -> usize {
5348            16
5349        }
5350    }
5351
5352    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HealthCheck, D>
5353        for &HealthCheck
5354    {
5355        unsafe fn encode(
5356            self,
5357            encoder: &mut fidl::encoding::Encoder<'_, D>,
5358            offset: usize,
5359            mut depth: fidl::encoding::Depth,
5360        ) -> fidl::Result<()> {
5361            encoder.debug_check_bounds::<HealthCheck>(offset);
5362            // Vector header
5363            let max_ordinal: u64 = self.max_ordinal_present();
5364            encoder.write_num(max_ordinal, offset);
5365            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5366            // Calling encoder.out_of_line_offset(0) is not allowed.
5367            if max_ordinal == 0 {
5368                return Ok(());
5369            }
5370            depth.increment()?;
5371            let envelope_size = 8;
5372            let bytes_len = max_ordinal as usize * envelope_size;
5373            #[allow(unused_variables)]
5374            let offset = encoder.out_of_line_offset(bytes_len);
5375            let mut _prev_end_offset: usize = 0;
5376            if 1 > max_ordinal {
5377                return Ok(());
5378            }
5379
5380            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5381            // are envelope_size bytes.
5382            let cur_offset: usize = (1 - 1) * envelope_size;
5383
5384            // Zero reserved fields.
5385            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5386
5387            // Safety:
5388            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5389            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5390            //   envelope_size bytes, there is always sufficient room.
5391            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>>, D>(
5392            self.monikers.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>> as fidl::encoding::ValueTypeMarker>::borrow),
5393            encoder, offset + cur_offset, depth
5394        )?;
5395
5396            _prev_end_offset = cur_offset + envelope_size;
5397
5398            Ok(())
5399        }
5400    }
5401
5402    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HealthCheck {
5403        #[inline(always)]
5404        fn new_empty() -> Self {
5405            Self::default()
5406        }
5407
5408        unsafe fn decode(
5409            &mut self,
5410            decoder: &mut fidl::encoding::Decoder<'_, D>,
5411            offset: usize,
5412            mut depth: fidl::encoding::Depth,
5413        ) -> fidl::Result<()> {
5414            decoder.debug_check_bounds::<Self>(offset);
5415            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5416                None => return Err(fidl::Error::NotNullable),
5417                Some(len) => len,
5418            };
5419            // Calling decoder.out_of_line_offset(0) is not allowed.
5420            if len == 0 {
5421                return Ok(());
5422            };
5423            depth.increment()?;
5424            let envelope_size = 8;
5425            let bytes_len = len * envelope_size;
5426            let offset = decoder.out_of_line_offset(bytes_len)?;
5427            // Decode the envelope for each type.
5428            let mut _next_ordinal_to_read = 0;
5429            let mut next_offset = offset;
5430            let end_offset = offset + bytes_len;
5431            _next_ordinal_to_read += 1;
5432            if next_offset >= end_offset {
5433                return Ok(());
5434            }
5435
5436            // Decode unknown envelopes for gaps in ordinals.
5437            while _next_ordinal_to_read < 1 {
5438                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5439                _next_ordinal_to_read += 1;
5440                next_offset += envelope_size;
5441            }
5442
5443            let next_out_of_line = decoder.next_out_of_line();
5444            let handles_before = decoder.remaining_handles();
5445            if let Some((inlined, num_bytes, num_handles)) =
5446                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5447            {
5448                let member_inline_size = <fidl::encoding::UnboundedVector<
5449                    fidl::encoding::BoundedString<255>,
5450                > as fidl::encoding::TypeMarker>::inline_size(
5451                    decoder.context
5452                );
5453                if inlined != (member_inline_size <= 4) {
5454                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5455                }
5456                let inner_offset;
5457                let mut inner_depth = depth.clone();
5458                if inlined {
5459                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5460                    inner_offset = next_offset;
5461                } else {
5462                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5463                    inner_depth.increment()?;
5464                }
5465                let val_ref = self.monikers.get_or_insert_with(|| {
5466                    fidl::new_empty!(
5467                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>>,
5468                        D
5469                    )
5470                });
5471                fidl::decode!(
5472                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<255>>,
5473                    D,
5474                    val_ref,
5475                    decoder,
5476                    inner_offset,
5477                    inner_depth
5478                )?;
5479                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5480                {
5481                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5482                }
5483                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5484                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5485                }
5486            }
5487
5488            next_offset += envelope_size;
5489
5490            // Decode the remaining unknown envelopes.
5491            while next_offset < end_offset {
5492                _next_ordinal_to_read += 1;
5493                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5494                next_offset += envelope_size;
5495            }
5496
5497            Ok(())
5498        }
5499    }
5500
5501    impl InjectedCapabilities {
5502        #[inline(always)]
5503        fn max_ordinal_present(&self) -> u64 {
5504            if let Some(_) = self.use_ {
5505                return 2;
5506            }
5507            if let Some(_) = self.components {
5508                return 1;
5509            }
5510            0
5511        }
5512    }
5513
5514    impl fidl::encoding::ValueTypeMarker for InjectedCapabilities {
5515        type Borrowed<'a> = &'a Self;
5516        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5517            value
5518        }
5519    }
5520
5521    unsafe impl fidl::encoding::TypeMarker for InjectedCapabilities {
5522        type Owned = Self;
5523
5524        #[inline(always)]
5525        fn inline_align(_context: fidl::encoding::Context) -> usize {
5526            8
5527        }
5528
5529        #[inline(always)]
5530        fn inline_size(_context: fidl::encoding::Context) -> usize {
5531            16
5532        }
5533    }
5534
5535    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<InjectedCapabilities, D>
5536        for &InjectedCapabilities
5537    {
5538        unsafe fn encode(
5539            self,
5540            encoder: &mut fidl::encoding::Encoder<'_, D>,
5541            offset: usize,
5542            mut depth: fidl::encoding::Depth,
5543        ) -> fidl::Result<()> {
5544            encoder.debug_check_bounds::<InjectedCapabilities>(offset);
5545            // Vector header
5546            let max_ordinal: u64 = self.max_ordinal_present();
5547            encoder.write_num(max_ordinal, offset);
5548            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5549            // Calling encoder.out_of_line_offset(0) is not allowed.
5550            if max_ordinal == 0 {
5551                return Ok(());
5552            }
5553            depth.increment()?;
5554            let envelope_size = 8;
5555            let bytes_len = max_ordinal as usize * envelope_size;
5556            #[allow(unused_variables)]
5557            let offset = encoder.out_of_line_offset(bytes_len);
5558            let mut _prev_end_offset: usize = 0;
5559            if 1 > max_ordinal {
5560                return Ok(());
5561            }
5562
5563            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5564            // are envelope_size bytes.
5565            let cur_offset: usize = (1 - 1) * envelope_size;
5566
5567            // Zero reserved fields.
5568            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5569
5570            // Safety:
5571            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5572            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5573            //   envelope_size bytes, there is always sufficient room.
5574            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
5575            self.components.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
5576            encoder, offset + cur_offset, depth
5577        )?;
5578
5579            _prev_end_offset = cur_offset + envelope_size;
5580            if 2 > max_ordinal {
5581                return Ok(());
5582            }
5583
5584            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5585            // are envelope_size bytes.
5586            let cur_offset: usize = (2 - 1) * envelope_size;
5587
5588            // Zero reserved fields.
5589            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5590
5591            // Safety:
5592            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5593            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5594            //   envelope_size bytes, there is always sufficient room.
5595            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<InjectedUse>, D>(
5596            self.use_.as_ref().map(<fidl::encoding::UnboundedVector<InjectedUse> as fidl::encoding::ValueTypeMarker>::borrow),
5597            encoder, offset + cur_offset, depth
5598        )?;
5599
5600            _prev_end_offset = cur_offset + envelope_size;
5601
5602            Ok(())
5603        }
5604    }
5605
5606    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for InjectedCapabilities {
5607        #[inline(always)]
5608        fn new_empty() -> Self {
5609            Self::default()
5610        }
5611
5612        unsafe fn decode(
5613            &mut self,
5614            decoder: &mut fidl::encoding::Decoder<'_, D>,
5615            offset: usize,
5616            mut depth: fidl::encoding::Depth,
5617        ) -> fidl::Result<()> {
5618            decoder.debug_check_bounds::<Self>(offset);
5619            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5620                None => return Err(fidl::Error::NotNullable),
5621                Some(len) => len,
5622            };
5623            // Calling decoder.out_of_line_offset(0) is not allowed.
5624            if len == 0 {
5625                return Ok(());
5626            };
5627            depth.increment()?;
5628            let envelope_size = 8;
5629            let bytes_len = len * envelope_size;
5630            let offset = decoder.out_of_line_offset(bytes_len)?;
5631            // Decode the envelope for each type.
5632            let mut _next_ordinal_to_read = 0;
5633            let mut next_offset = offset;
5634            let end_offset = offset + bytes_len;
5635            _next_ordinal_to_read += 1;
5636            if next_offset >= end_offset {
5637                return Ok(());
5638            }
5639
5640            // Decode unknown envelopes for gaps in ordinals.
5641            while _next_ordinal_to_read < 1 {
5642                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5643                _next_ordinal_to_read += 1;
5644                next_offset += envelope_size;
5645            }
5646
5647            let next_out_of_line = decoder.next_out_of_line();
5648            let handles_before = decoder.remaining_handles();
5649            if let Some((inlined, num_bytes, num_handles)) =
5650                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5651            {
5652                let member_inline_size = <fidl::encoding::Vector<
5653                    fidl::encoding::BoundedString<4096>,
5654                    128,
5655                > as fidl::encoding::TypeMarker>::inline_size(
5656                    decoder.context
5657                );
5658                if inlined != (member_inline_size <= 4) {
5659                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5660                }
5661                let inner_offset;
5662                let mut inner_depth = depth.clone();
5663                if inlined {
5664                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5665                    inner_offset = next_offset;
5666                } else {
5667                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5668                    inner_depth.increment()?;
5669                }
5670                let val_ref = self.components.get_or_insert_with(|| {
5671                    fidl::new_empty!(
5672                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
5673                        D
5674                    )
5675                });
5676                fidl::decode!(
5677                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
5678                    D,
5679                    val_ref,
5680                    decoder,
5681                    inner_offset,
5682                    inner_depth
5683                )?;
5684                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5685                {
5686                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5687                }
5688                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5689                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5690                }
5691            }
5692
5693            next_offset += envelope_size;
5694            _next_ordinal_to_read += 1;
5695            if next_offset >= end_offset {
5696                return Ok(());
5697            }
5698
5699            // Decode unknown envelopes for gaps in ordinals.
5700            while _next_ordinal_to_read < 2 {
5701                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5702                _next_ordinal_to_read += 1;
5703                next_offset += envelope_size;
5704            }
5705
5706            let next_out_of_line = decoder.next_out_of_line();
5707            let handles_before = decoder.remaining_handles();
5708            if let Some((inlined, num_bytes, num_handles)) =
5709                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5710            {
5711                let member_inline_size = <fidl::encoding::UnboundedVector<InjectedUse> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5712                if inlined != (member_inline_size <= 4) {
5713                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5714                }
5715                let inner_offset;
5716                let mut inner_depth = depth.clone();
5717                if inlined {
5718                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5719                    inner_offset = next_offset;
5720                } else {
5721                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5722                    inner_depth.increment()?;
5723                }
5724                let val_ref = self.use_.get_or_insert_with(|| {
5725                    fidl::new_empty!(fidl::encoding::UnboundedVector<InjectedUse>, D)
5726                });
5727                fidl::decode!(
5728                    fidl::encoding::UnboundedVector<InjectedUse>,
5729                    D,
5730                    val_ref,
5731                    decoder,
5732                    inner_offset,
5733                    inner_depth
5734                )?;
5735                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5736                {
5737                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5738                }
5739                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5740                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5741                }
5742            }
5743
5744            next_offset += envelope_size;
5745
5746            // Decode the remaining unknown envelopes.
5747            while next_offset < end_offset {
5748                _next_ordinal_to_read += 1;
5749                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5750                next_offset += envelope_size;
5751            }
5752
5753            Ok(())
5754        }
5755    }
5756
5757    impl InjectedUseProtocol {
5758        #[inline(always)]
5759        fn max_ordinal_present(&self) -> u64 {
5760            if let Some(_) = self.target_path {
5761                return 2;
5762            }
5763            if let Some(_) = self.source_name {
5764                return 1;
5765            }
5766            0
5767        }
5768    }
5769
5770    impl fidl::encoding::ValueTypeMarker for InjectedUseProtocol {
5771        type Borrowed<'a> = &'a Self;
5772        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5773            value
5774        }
5775    }
5776
5777    unsafe impl fidl::encoding::TypeMarker for InjectedUseProtocol {
5778        type Owned = Self;
5779
5780        #[inline(always)]
5781        fn inline_align(_context: fidl::encoding::Context) -> usize {
5782            8
5783        }
5784
5785        #[inline(always)]
5786        fn inline_size(_context: fidl::encoding::Context) -> usize {
5787            16
5788        }
5789    }
5790
5791    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<InjectedUseProtocol, D>
5792        for &InjectedUseProtocol
5793    {
5794        unsafe fn encode(
5795            self,
5796            encoder: &mut fidl::encoding::Encoder<'_, D>,
5797            offset: usize,
5798            mut depth: fidl::encoding::Depth,
5799        ) -> fidl::Result<()> {
5800            encoder.debug_check_bounds::<InjectedUseProtocol>(offset);
5801            // Vector header
5802            let max_ordinal: u64 = self.max_ordinal_present();
5803            encoder.write_num(max_ordinal, offset);
5804            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5805            // Calling encoder.out_of_line_offset(0) is not allowed.
5806            if max_ordinal == 0 {
5807                return Ok(());
5808            }
5809            depth.increment()?;
5810            let envelope_size = 8;
5811            let bytes_len = max_ordinal as usize * envelope_size;
5812            #[allow(unused_variables)]
5813            let offset = encoder.out_of_line_offset(bytes_len);
5814            let mut _prev_end_offset: usize = 0;
5815            if 1 > max_ordinal {
5816                return Ok(());
5817            }
5818
5819            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5820            // are envelope_size bytes.
5821            let cur_offset: usize = (1 - 1) * envelope_size;
5822
5823            // Zero reserved fields.
5824            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5825
5826            // Safety:
5827            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5828            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5829            //   envelope_size bytes, there is always sufficient room.
5830            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
5831                self.source_name.as_ref().map(
5832                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
5833                ),
5834                encoder,
5835                offset + cur_offset,
5836                depth,
5837            )?;
5838
5839            _prev_end_offset = cur_offset + envelope_size;
5840            if 2 > max_ordinal {
5841                return Ok(());
5842            }
5843
5844            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5845            // are envelope_size bytes.
5846            let cur_offset: usize = (2 - 1) * envelope_size;
5847
5848            // Zero reserved fields.
5849            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5850
5851            // Safety:
5852            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5853            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5854            //   envelope_size bytes, there is always sufficient room.
5855            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
5856            self.target_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
5857            encoder, offset + cur_offset, depth
5858        )?;
5859
5860            _prev_end_offset = cur_offset + envelope_size;
5861
5862            Ok(())
5863        }
5864    }
5865
5866    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for InjectedUseProtocol {
5867        #[inline(always)]
5868        fn new_empty() -> Self {
5869            Self::default()
5870        }
5871
5872        unsafe fn decode(
5873            &mut self,
5874            decoder: &mut fidl::encoding::Decoder<'_, D>,
5875            offset: usize,
5876            mut depth: fidl::encoding::Depth,
5877        ) -> fidl::Result<()> {
5878            decoder.debug_check_bounds::<Self>(offset);
5879            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5880                None => return Err(fidl::Error::NotNullable),
5881                Some(len) => len,
5882            };
5883            // Calling decoder.out_of_line_offset(0) is not allowed.
5884            if len == 0 {
5885                return Ok(());
5886            };
5887            depth.increment()?;
5888            let envelope_size = 8;
5889            let bytes_len = len * envelope_size;
5890            let offset = decoder.out_of_line_offset(bytes_len)?;
5891            // Decode the envelope for each type.
5892            let mut _next_ordinal_to_read = 0;
5893            let mut next_offset = offset;
5894            let end_offset = offset + bytes_len;
5895            _next_ordinal_to_read += 1;
5896            if next_offset >= end_offset {
5897                return Ok(());
5898            }
5899
5900            // Decode unknown envelopes for gaps in ordinals.
5901            while _next_ordinal_to_read < 1 {
5902                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5903                _next_ordinal_to_read += 1;
5904                next_offset += envelope_size;
5905            }
5906
5907            let next_out_of_line = decoder.next_out_of_line();
5908            let handles_before = decoder.remaining_handles();
5909            if let Some((inlined, num_bytes, num_handles)) =
5910                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5911            {
5912                let member_inline_size =
5913                    <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
5914                        decoder.context,
5915                    );
5916                if inlined != (member_inline_size <= 4) {
5917                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5918                }
5919                let inner_offset;
5920                let mut inner_depth = depth.clone();
5921                if inlined {
5922                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5923                    inner_offset = next_offset;
5924                } else {
5925                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5926                    inner_depth.increment()?;
5927                }
5928                let val_ref = self
5929                    .source_name
5930                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
5931                fidl::decode!(
5932                    fidl::encoding::BoundedString<100>,
5933                    D,
5934                    val_ref,
5935                    decoder,
5936                    inner_offset,
5937                    inner_depth
5938                )?;
5939                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5940                {
5941                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5942                }
5943                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5944                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5945                }
5946            }
5947
5948            next_offset += envelope_size;
5949            _next_ordinal_to_read += 1;
5950            if next_offset >= end_offset {
5951                return Ok(());
5952            }
5953
5954            // Decode unknown envelopes for gaps in ordinals.
5955            while _next_ordinal_to_read < 2 {
5956                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5957                _next_ordinal_to_read += 1;
5958                next_offset += envelope_size;
5959            }
5960
5961            let next_out_of_line = decoder.next_out_of_line();
5962            let handles_before = decoder.remaining_handles();
5963            if let Some((inlined, num_bytes, num_handles)) =
5964                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5965            {
5966                let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5967                if inlined != (member_inline_size <= 4) {
5968                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5969                }
5970                let inner_offset;
5971                let mut inner_depth = depth.clone();
5972                if inlined {
5973                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5974                    inner_offset = next_offset;
5975                } else {
5976                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5977                    inner_depth.increment()?;
5978                }
5979                let val_ref = self.target_path.get_or_insert_with(|| {
5980                    fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
5981                });
5982                fidl::decode!(
5983                    fidl::encoding::BoundedString<1024>,
5984                    D,
5985                    val_ref,
5986                    decoder,
5987                    inner_offset,
5988                    inner_depth
5989                )?;
5990                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5991                {
5992                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5993                }
5994                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5995                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5996                }
5997            }
5998
5999            next_offset += envelope_size;
6000
6001            // Decode the remaining unknown envelopes.
6002            while next_offset < end_offset {
6003                _next_ordinal_to_read += 1;
6004                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6005                next_offset += envelope_size;
6006            }
6007
6008            Ok(())
6009        }
6010    }
6011
6012    impl InstanceIdEntry {
6013        #[inline(always)]
6014        fn max_ordinal_present(&self) -> u64 {
6015            if let Some(_) = self.ignore_duplicate_id {
6016                return 4;
6017            }
6018            if let Some(_) = self.moniker {
6019                return 3;
6020            }
6021            if let Some(_) = self.instance_id {
6022                return 1;
6023            }
6024            0
6025        }
6026    }
6027
6028    impl fidl::encoding::ValueTypeMarker for InstanceIdEntry {
6029        type Borrowed<'a> = &'a Self;
6030        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6031            value
6032        }
6033    }
6034
6035    unsafe impl fidl::encoding::TypeMarker for InstanceIdEntry {
6036        type Owned = Self;
6037
6038        #[inline(always)]
6039        fn inline_align(_context: fidl::encoding::Context) -> usize {
6040            8
6041        }
6042
6043        #[inline(always)]
6044        fn inline_size(_context: fidl::encoding::Context) -> usize {
6045            16
6046        }
6047    }
6048
6049    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<InstanceIdEntry, D>
6050        for &InstanceIdEntry
6051    {
6052        unsafe fn encode(
6053            self,
6054            encoder: &mut fidl::encoding::Encoder<'_, D>,
6055            offset: usize,
6056            mut depth: fidl::encoding::Depth,
6057        ) -> fidl::Result<()> {
6058            encoder.debug_check_bounds::<InstanceIdEntry>(offset);
6059            // Vector header
6060            let max_ordinal: u64 = self.max_ordinal_present();
6061            encoder.write_num(max_ordinal, offset);
6062            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6063            // Calling encoder.out_of_line_offset(0) is not allowed.
6064            if max_ordinal == 0 {
6065                return Ok(());
6066            }
6067            depth.increment()?;
6068            let envelope_size = 8;
6069            let bytes_len = max_ordinal as usize * envelope_size;
6070            #[allow(unused_variables)]
6071            let offset = encoder.out_of_line_offset(bytes_len);
6072            let mut _prev_end_offset: usize = 0;
6073            if 1 > max_ordinal {
6074                return Ok(());
6075            }
6076
6077            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6078            // are envelope_size bytes.
6079            let cur_offset: usize = (1 - 1) * envelope_size;
6080
6081            // Zero reserved fields.
6082            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6083
6084            // Safety:
6085            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6086            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6087            //   envelope_size bytes, there is always sufficient room.
6088            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
6089                self.instance_id.as_ref().map(
6090                    <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
6091                ),
6092                encoder,
6093                offset + cur_offset,
6094                depth,
6095            )?;
6096
6097            _prev_end_offset = cur_offset + envelope_size;
6098            if 3 > max_ordinal {
6099                return Ok(());
6100            }
6101
6102            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6103            // are envelope_size bytes.
6104            let cur_offset: usize = (3 - 1) * envelope_size;
6105
6106            // Zero reserved fields.
6107            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6108
6109            // Safety:
6110            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6111            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6112            //   envelope_size bytes, there is always sufficient room.
6113            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
6114            self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
6115            encoder, offset + cur_offset, depth
6116        )?;
6117
6118            _prev_end_offset = cur_offset + envelope_size;
6119            if 4 > max_ordinal {
6120                return Ok(());
6121            }
6122
6123            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6124            // are envelope_size bytes.
6125            let cur_offset: usize = (4 - 1) * envelope_size;
6126
6127            // Zero reserved fields.
6128            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6129
6130            // Safety:
6131            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6132            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6133            //   envelope_size bytes, there is always sufficient room.
6134            fidl::encoding::encode_in_envelope_optional::<bool, D>(
6135                self.ignore_duplicate_id
6136                    .as_ref()
6137                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6138                encoder,
6139                offset + cur_offset,
6140                depth,
6141            )?;
6142
6143            _prev_end_offset = cur_offset + envelope_size;
6144
6145            Ok(())
6146        }
6147    }
6148
6149    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for InstanceIdEntry {
6150        #[inline(always)]
6151        fn new_empty() -> Self {
6152            Self::default()
6153        }
6154
6155        unsafe fn decode(
6156            &mut self,
6157            decoder: &mut fidl::encoding::Decoder<'_, D>,
6158            offset: usize,
6159            mut depth: fidl::encoding::Depth,
6160        ) -> fidl::Result<()> {
6161            decoder.debug_check_bounds::<Self>(offset);
6162            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6163                None => return Err(fidl::Error::NotNullable),
6164                Some(len) => len,
6165            };
6166            // Calling decoder.out_of_line_offset(0) is not allowed.
6167            if len == 0 {
6168                return Ok(());
6169            };
6170            depth.increment()?;
6171            let envelope_size = 8;
6172            let bytes_len = len * envelope_size;
6173            let offset = decoder.out_of_line_offset(bytes_len)?;
6174            // Decode the envelope for each type.
6175            let mut _next_ordinal_to_read = 0;
6176            let mut next_offset = offset;
6177            let end_offset = offset + bytes_len;
6178            _next_ordinal_to_read += 1;
6179            if next_offset >= end_offset {
6180                return Ok(());
6181            }
6182
6183            // Decode unknown envelopes for gaps in ordinals.
6184            while _next_ordinal_to_read < 1 {
6185                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6186                _next_ordinal_to_read += 1;
6187                next_offset += envelope_size;
6188            }
6189
6190            let next_out_of_line = decoder.next_out_of_line();
6191            let handles_before = decoder.remaining_handles();
6192            if let Some((inlined, num_bytes, num_handles)) =
6193                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6194            {
6195                let member_inline_size =
6196                    <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
6197                        decoder.context,
6198                    );
6199                if inlined != (member_inline_size <= 4) {
6200                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6201                }
6202                let inner_offset;
6203                let mut inner_depth = depth.clone();
6204                if inlined {
6205                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6206                    inner_offset = next_offset;
6207                } else {
6208                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6209                    inner_depth.increment()?;
6210                }
6211                let val_ref = self
6212                    .instance_id
6213                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
6214                fidl::decode!(
6215                    fidl::encoding::BoundedString<64>,
6216                    D,
6217                    val_ref,
6218                    decoder,
6219                    inner_offset,
6220                    inner_depth
6221                )?;
6222                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6223                {
6224                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6225                }
6226                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6227                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6228                }
6229            }
6230
6231            next_offset += envelope_size;
6232            _next_ordinal_to_read += 1;
6233            if next_offset >= end_offset {
6234                return Ok(());
6235            }
6236
6237            // Decode unknown envelopes for gaps in ordinals.
6238            while _next_ordinal_to_read < 3 {
6239                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6240                _next_ordinal_to_read += 1;
6241                next_offset += envelope_size;
6242            }
6243
6244            let next_out_of_line = decoder.next_out_of_line();
6245            let handles_before = decoder.remaining_handles();
6246            if let Some((inlined, num_bytes, num_handles)) =
6247                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6248            {
6249                let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6250                if inlined != (member_inline_size <= 4) {
6251                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6252                }
6253                let inner_offset;
6254                let mut inner_depth = depth.clone();
6255                if inlined {
6256                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6257                    inner_offset = next_offset;
6258                } else {
6259                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6260                    inner_depth.increment()?;
6261                }
6262                let val_ref = self.moniker.get_or_insert_with(|| {
6263                    fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
6264                });
6265                fidl::decode!(
6266                    fidl::encoding::BoundedString<4096>,
6267                    D,
6268                    val_ref,
6269                    decoder,
6270                    inner_offset,
6271                    inner_depth
6272                )?;
6273                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6274                {
6275                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6276                }
6277                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6278                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6279                }
6280            }
6281
6282            next_offset += envelope_size;
6283            _next_ordinal_to_read += 1;
6284            if next_offset >= end_offset {
6285                return Ok(());
6286            }
6287
6288            // Decode unknown envelopes for gaps in ordinals.
6289            while _next_ordinal_to_read < 4 {
6290                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6291                _next_ordinal_to_read += 1;
6292                next_offset += envelope_size;
6293            }
6294
6295            let next_out_of_line = decoder.next_out_of_line();
6296            let handles_before = decoder.remaining_handles();
6297            if let Some((inlined, num_bytes, num_handles)) =
6298                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6299            {
6300                let member_inline_size =
6301                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6302                if inlined != (member_inline_size <= 4) {
6303                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6304                }
6305                let inner_offset;
6306                let mut inner_depth = depth.clone();
6307                if inlined {
6308                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6309                    inner_offset = next_offset;
6310                } else {
6311                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6312                    inner_depth.increment()?;
6313                }
6314                let val_ref =
6315                    self.ignore_duplicate_id.get_or_insert_with(|| fidl::new_empty!(bool, D));
6316                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6317                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6318                {
6319                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6320                }
6321                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6322                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6323                }
6324            }
6325
6326            next_offset += envelope_size;
6327
6328            // Decode the remaining unknown envelopes.
6329            while next_offset < end_offset {
6330                _next_ordinal_to_read += 1;
6331                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6332                next_offset += envelope_size;
6333            }
6334
6335            Ok(())
6336        }
6337    }
6338
6339    impl JobPolicyAllowlists {
6340        #[inline(always)]
6341        fn max_ordinal_present(&self) -> u64 {
6342            if let Some(_) = self.create_raw_processes {
6343                return 3;
6344            }
6345            if let Some(_) = self.main_process_critical {
6346                return 2;
6347            }
6348            if let Some(_) = self.ambient_mark_vmo_exec {
6349                return 1;
6350            }
6351            0
6352        }
6353    }
6354
6355    impl fidl::encoding::ValueTypeMarker for JobPolicyAllowlists {
6356        type Borrowed<'a> = &'a Self;
6357        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6358            value
6359        }
6360    }
6361
6362    unsafe impl fidl::encoding::TypeMarker for JobPolicyAllowlists {
6363        type Owned = Self;
6364
6365        #[inline(always)]
6366        fn inline_align(_context: fidl::encoding::Context) -> usize {
6367            8
6368        }
6369
6370        #[inline(always)]
6371        fn inline_size(_context: fidl::encoding::Context) -> usize {
6372            16
6373        }
6374    }
6375
6376    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<JobPolicyAllowlists, D>
6377        for &JobPolicyAllowlists
6378    {
6379        unsafe fn encode(
6380            self,
6381            encoder: &mut fidl::encoding::Encoder<'_, D>,
6382            offset: usize,
6383            mut depth: fidl::encoding::Depth,
6384        ) -> fidl::Result<()> {
6385            encoder.debug_check_bounds::<JobPolicyAllowlists>(offset);
6386            // Vector header
6387            let max_ordinal: u64 = self.max_ordinal_present();
6388            encoder.write_num(max_ordinal, offset);
6389            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6390            // Calling encoder.out_of_line_offset(0) is not allowed.
6391            if max_ordinal == 0 {
6392                return Ok(());
6393            }
6394            depth.increment()?;
6395            let envelope_size = 8;
6396            let bytes_len = max_ordinal as usize * envelope_size;
6397            #[allow(unused_variables)]
6398            let offset = encoder.out_of_line_offset(bytes_len);
6399            let mut _prev_end_offset: usize = 0;
6400            if 1 > max_ordinal {
6401                return Ok(());
6402            }
6403
6404            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6405            // are envelope_size bytes.
6406            let cur_offset: usize = (1 - 1) * envelope_size;
6407
6408            // Zero reserved fields.
6409            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6410
6411            // Safety:
6412            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6413            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6414            //   envelope_size bytes, there is always sufficient room.
6415            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
6416            self.ambient_mark_vmo_exec.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
6417            encoder, offset + cur_offset, depth
6418        )?;
6419
6420            _prev_end_offset = cur_offset + envelope_size;
6421            if 2 > max_ordinal {
6422                return Ok(());
6423            }
6424
6425            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6426            // are envelope_size bytes.
6427            let cur_offset: usize = (2 - 1) * envelope_size;
6428
6429            // Zero reserved fields.
6430            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6431
6432            // Safety:
6433            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6434            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6435            //   envelope_size bytes, there is always sufficient room.
6436            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
6437            self.main_process_critical.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
6438            encoder, offset + cur_offset, depth
6439        )?;
6440
6441            _prev_end_offset = cur_offset + envelope_size;
6442            if 3 > max_ordinal {
6443                return Ok(());
6444            }
6445
6446            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6447            // are envelope_size bytes.
6448            let cur_offset: usize = (3 - 1) * envelope_size;
6449
6450            // Zero reserved fields.
6451            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6452
6453            // Safety:
6454            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6455            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6456            //   envelope_size bytes, there is always sufficient room.
6457            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>, D>(
6458            self.create_raw_processes.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128> as fidl::encoding::ValueTypeMarker>::borrow),
6459            encoder, offset + cur_offset, depth
6460        )?;
6461
6462            _prev_end_offset = cur_offset + envelope_size;
6463
6464            Ok(())
6465        }
6466    }
6467
6468    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for JobPolicyAllowlists {
6469        #[inline(always)]
6470        fn new_empty() -> Self {
6471            Self::default()
6472        }
6473
6474        unsafe fn decode(
6475            &mut self,
6476            decoder: &mut fidl::encoding::Decoder<'_, D>,
6477            offset: usize,
6478            mut depth: fidl::encoding::Depth,
6479        ) -> fidl::Result<()> {
6480            decoder.debug_check_bounds::<Self>(offset);
6481            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6482                None => return Err(fidl::Error::NotNullable),
6483                Some(len) => len,
6484            };
6485            // Calling decoder.out_of_line_offset(0) is not allowed.
6486            if len == 0 {
6487                return Ok(());
6488            };
6489            depth.increment()?;
6490            let envelope_size = 8;
6491            let bytes_len = len * envelope_size;
6492            let offset = decoder.out_of_line_offset(bytes_len)?;
6493            // Decode the envelope for each type.
6494            let mut _next_ordinal_to_read = 0;
6495            let mut next_offset = offset;
6496            let end_offset = offset + bytes_len;
6497            _next_ordinal_to_read += 1;
6498            if next_offset >= end_offset {
6499                return Ok(());
6500            }
6501
6502            // Decode unknown envelopes for gaps in ordinals.
6503            while _next_ordinal_to_read < 1 {
6504                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6505                _next_ordinal_to_read += 1;
6506                next_offset += envelope_size;
6507            }
6508
6509            let next_out_of_line = decoder.next_out_of_line();
6510            let handles_before = decoder.remaining_handles();
6511            if let Some((inlined, num_bytes, num_handles)) =
6512                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6513            {
6514                let member_inline_size = <fidl::encoding::Vector<
6515                    fidl::encoding::BoundedString<4096>,
6516                    128,
6517                > as fidl::encoding::TypeMarker>::inline_size(
6518                    decoder.context
6519                );
6520                if inlined != (member_inline_size <= 4) {
6521                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6522                }
6523                let inner_offset;
6524                let mut inner_depth = depth.clone();
6525                if inlined {
6526                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6527                    inner_offset = next_offset;
6528                } else {
6529                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6530                    inner_depth.increment()?;
6531                }
6532                let val_ref = self.ambient_mark_vmo_exec.get_or_insert_with(|| {
6533                    fidl::new_empty!(
6534                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
6535                        D
6536                    )
6537                });
6538                fidl::decode!(
6539                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
6540                    D,
6541                    val_ref,
6542                    decoder,
6543                    inner_offset,
6544                    inner_depth
6545                )?;
6546                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6547                {
6548                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6549                }
6550                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6551                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6552                }
6553            }
6554
6555            next_offset += envelope_size;
6556            _next_ordinal_to_read += 1;
6557            if next_offset >= end_offset {
6558                return Ok(());
6559            }
6560
6561            // Decode unknown envelopes for gaps in ordinals.
6562            while _next_ordinal_to_read < 2 {
6563                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6564                _next_ordinal_to_read += 1;
6565                next_offset += envelope_size;
6566            }
6567
6568            let next_out_of_line = decoder.next_out_of_line();
6569            let handles_before = decoder.remaining_handles();
6570            if let Some((inlined, num_bytes, num_handles)) =
6571                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6572            {
6573                let member_inline_size = <fidl::encoding::Vector<
6574                    fidl::encoding::BoundedString<4096>,
6575                    128,
6576                > as fidl::encoding::TypeMarker>::inline_size(
6577                    decoder.context
6578                );
6579                if inlined != (member_inline_size <= 4) {
6580                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6581                }
6582                let inner_offset;
6583                let mut inner_depth = depth.clone();
6584                if inlined {
6585                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6586                    inner_offset = next_offset;
6587                } else {
6588                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6589                    inner_depth.increment()?;
6590                }
6591                let val_ref = self.main_process_critical.get_or_insert_with(|| {
6592                    fidl::new_empty!(
6593                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
6594                        D
6595                    )
6596                });
6597                fidl::decode!(
6598                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
6599                    D,
6600                    val_ref,
6601                    decoder,
6602                    inner_offset,
6603                    inner_depth
6604                )?;
6605                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6606                {
6607                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6608                }
6609                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6610                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6611                }
6612            }
6613
6614            next_offset += envelope_size;
6615            _next_ordinal_to_read += 1;
6616            if next_offset >= end_offset {
6617                return Ok(());
6618            }
6619
6620            // Decode unknown envelopes for gaps in ordinals.
6621            while _next_ordinal_to_read < 3 {
6622                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6623                _next_ordinal_to_read += 1;
6624                next_offset += envelope_size;
6625            }
6626
6627            let next_out_of_line = decoder.next_out_of_line();
6628            let handles_before = decoder.remaining_handles();
6629            if let Some((inlined, num_bytes, num_handles)) =
6630                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6631            {
6632                let member_inline_size = <fidl::encoding::Vector<
6633                    fidl::encoding::BoundedString<4096>,
6634                    128,
6635                > as fidl::encoding::TypeMarker>::inline_size(
6636                    decoder.context
6637                );
6638                if inlined != (member_inline_size <= 4) {
6639                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6640                }
6641                let inner_offset;
6642                let mut inner_depth = depth.clone();
6643                if inlined {
6644                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6645                    inner_offset = next_offset;
6646                } else {
6647                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6648                    inner_depth.increment()?;
6649                }
6650                let val_ref = self.create_raw_processes.get_or_insert_with(|| {
6651                    fidl::new_empty!(
6652                        fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
6653                        D
6654                    )
6655                });
6656                fidl::decode!(
6657                    fidl::encoding::Vector<fidl::encoding::BoundedString<4096>, 128>,
6658                    D,
6659                    val_ref,
6660                    decoder,
6661                    inner_offset,
6662                    inner_depth
6663                )?;
6664                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6665                {
6666                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6667                }
6668                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6669                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6670                }
6671            }
6672
6673            next_offset += envelope_size;
6674
6675            // Decode the remaining unknown envelopes.
6676            while next_offset < end_offset {
6677                _next_ordinal_to_read += 1;
6678                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6679                next_offset += envelope_size;
6680            }
6681
6682            Ok(())
6683        }
6684    }
6685
6686    impl SecurityPolicy {
6687        #[inline(always)]
6688        fn max_ordinal_present(&self) -> u64 {
6689            if let Some(_) = self.child_policy {
6690                return 4;
6691            }
6692            if let Some(_) = self.debug_registration_policy {
6693                return 3;
6694            }
6695            if let Some(_) = self.capability_policy {
6696                return 2;
6697            }
6698            if let Some(_) = self.job_policy {
6699                return 1;
6700            }
6701            0
6702        }
6703    }
6704
6705    impl fidl::encoding::ValueTypeMarker for SecurityPolicy {
6706        type Borrowed<'a> = &'a Self;
6707        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6708            value
6709        }
6710    }
6711
6712    unsafe impl fidl::encoding::TypeMarker for SecurityPolicy {
6713        type Owned = Self;
6714
6715        #[inline(always)]
6716        fn inline_align(_context: fidl::encoding::Context) -> usize {
6717            8
6718        }
6719
6720        #[inline(always)]
6721        fn inline_size(_context: fidl::encoding::Context) -> usize {
6722            16
6723        }
6724    }
6725
6726    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SecurityPolicy, D>
6727        for &SecurityPolicy
6728    {
6729        unsafe fn encode(
6730            self,
6731            encoder: &mut fidl::encoding::Encoder<'_, D>,
6732            offset: usize,
6733            mut depth: fidl::encoding::Depth,
6734        ) -> fidl::Result<()> {
6735            encoder.debug_check_bounds::<SecurityPolicy>(offset);
6736            // Vector header
6737            let max_ordinal: u64 = self.max_ordinal_present();
6738            encoder.write_num(max_ordinal, offset);
6739            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6740            // Calling encoder.out_of_line_offset(0) is not allowed.
6741            if max_ordinal == 0 {
6742                return Ok(());
6743            }
6744            depth.increment()?;
6745            let envelope_size = 8;
6746            let bytes_len = max_ordinal as usize * envelope_size;
6747            #[allow(unused_variables)]
6748            let offset = encoder.out_of_line_offset(bytes_len);
6749            let mut _prev_end_offset: usize = 0;
6750            if 1 > max_ordinal {
6751                return Ok(());
6752            }
6753
6754            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6755            // are envelope_size bytes.
6756            let cur_offset: usize = (1 - 1) * envelope_size;
6757
6758            // Zero reserved fields.
6759            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6760
6761            // Safety:
6762            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6763            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6764            //   envelope_size bytes, there is always sufficient room.
6765            fidl::encoding::encode_in_envelope_optional::<JobPolicyAllowlists, D>(
6766                self.job_policy
6767                    .as_ref()
6768                    .map(<JobPolicyAllowlists as fidl::encoding::ValueTypeMarker>::borrow),
6769                encoder,
6770                offset + cur_offset,
6771                depth,
6772            )?;
6773
6774            _prev_end_offset = cur_offset + envelope_size;
6775            if 2 > max_ordinal {
6776                return Ok(());
6777            }
6778
6779            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6780            // are envelope_size bytes.
6781            let cur_offset: usize = (2 - 1) * envelope_size;
6782
6783            // Zero reserved fields.
6784            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6785
6786            // Safety:
6787            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6788            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6789            //   envelope_size bytes, there is always sufficient room.
6790            fidl::encoding::encode_in_envelope_optional::<CapabilityPolicyAllowlists, D>(
6791                self.capability_policy
6792                    .as_ref()
6793                    .map(<CapabilityPolicyAllowlists as fidl::encoding::ValueTypeMarker>::borrow),
6794                encoder,
6795                offset + cur_offset,
6796                depth,
6797            )?;
6798
6799            _prev_end_offset = cur_offset + envelope_size;
6800            if 3 > max_ordinal {
6801                return Ok(());
6802            }
6803
6804            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6805            // are envelope_size bytes.
6806            let cur_offset: usize = (3 - 1) * envelope_size;
6807
6808            // Zero reserved fields.
6809            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6810
6811            // Safety:
6812            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6813            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6814            //   envelope_size bytes, there is always sufficient room.
6815            fidl::encoding::encode_in_envelope_optional::<DebugRegistrationPolicyAllowlists, D>(
6816                self.debug_registration_policy.as_ref().map(
6817                    <DebugRegistrationPolicyAllowlists as fidl::encoding::ValueTypeMarker>::borrow,
6818                ),
6819                encoder,
6820                offset + cur_offset,
6821                depth,
6822            )?;
6823
6824            _prev_end_offset = cur_offset + envelope_size;
6825            if 4 > max_ordinal {
6826                return Ok(());
6827            }
6828
6829            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6830            // are envelope_size bytes.
6831            let cur_offset: usize = (4 - 1) * envelope_size;
6832
6833            // Zero reserved fields.
6834            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6835
6836            // Safety:
6837            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6838            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6839            //   envelope_size bytes, there is always sufficient room.
6840            fidl::encoding::encode_in_envelope_optional::<ChildPolicyAllowlists, D>(
6841                self.child_policy
6842                    .as_ref()
6843                    .map(<ChildPolicyAllowlists as fidl::encoding::ValueTypeMarker>::borrow),
6844                encoder,
6845                offset + cur_offset,
6846                depth,
6847            )?;
6848
6849            _prev_end_offset = cur_offset + envelope_size;
6850
6851            Ok(())
6852        }
6853    }
6854
6855    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SecurityPolicy {
6856        #[inline(always)]
6857        fn new_empty() -> Self {
6858            Self::default()
6859        }
6860
6861        unsafe fn decode(
6862            &mut self,
6863            decoder: &mut fidl::encoding::Decoder<'_, D>,
6864            offset: usize,
6865            mut depth: fidl::encoding::Depth,
6866        ) -> fidl::Result<()> {
6867            decoder.debug_check_bounds::<Self>(offset);
6868            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6869                None => return Err(fidl::Error::NotNullable),
6870                Some(len) => len,
6871            };
6872            // Calling decoder.out_of_line_offset(0) is not allowed.
6873            if len == 0 {
6874                return Ok(());
6875            };
6876            depth.increment()?;
6877            let envelope_size = 8;
6878            let bytes_len = len * envelope_size;
6879            let offset = decoder.out_of_line_offset(bytes_len)?;
6880            // Decode the envelope for each type.
6881            let mut _next_ordinal_to_read = 0;
6882            let mut next_offset = offset;
6883            let end_offset = offset + bytes_len;
6884            _next_ordinal_to_read += 1;
6885            if next_offset >= end_offset {
6886                return Ok(());
6887            }
6888
6889            // Decode unknown envelopes for gaps in ordinals.
6890            while _next_ordinal_to_read < 1 {
6891                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6892                _next_ordinal_to_read += 1;
6893                next_offset += envelope_size;
6894            }
6895
6896            let next_out_of_line = decoder.next_out_of_line();
6897            let handles_before = decoder.remaining_handles();
6898            if let Some((inlined, num_bytes, num_handles)) =
6899                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6900            {
6901                let member_inline_size =
6902                    <JobPolicyAllowlists as fidl::encoding::TypeMarker>::inline_size(
6903                        decoder.context,
6904                    );
6905                if inlined != (member_inline_size <= 4) {
6906                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6907                }
6908                let inner_offset;
6909                let mut inner_depth = depth.clone();
6910                if inlined {
6911                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6912                    inner_offset = next_offset;
6913                } else {
6914                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6915                    inner_depth.increment()?;
6916                }
6917                let val_ref =
6918                    self.job_policy.get_or_insert_with(|| fidl::new_empty!(JobPolicyAllowlists, D));
6919                fidl::decode!(JobPolicyAllowlists, D, val_ref, decoder, inner_offset, inner_depth)?;
6920                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6921                {
6922                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6923                }
6924                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6925                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6926                }
6927            }
6928
6929            next_offset += envelope_size;
6930            _next_ordinal_to_read += 1;
6931            if next_offset >= end_offset {
6932                return Ok(());
6933            }
6934
6935            // Decode unknown envelopes for gaps in ordinals.
6936            while _next_ordinal_to_read < 2 {
6937                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6938                _next_ordinal_to_read += 1;
6939                next_offset += envelope_size;
6940            }
6941
6942            let next_out_of_line = decoder.next_out_of_line();
6943            let handles_before = decoder.remaining_handles();
6944            if let Some((inlined, num_bytes, num_handles)) =
6945                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6946            {
6947                let member_inline_size =
6948                    <CapabilityPolicyAllowlists as fidl::encoding::TypeMarker>::inline_size(
6949                        decoder.context,
6950                    );
6951                if inlined != (member_inline_size <= 4) {
6952                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6953                }
6954                let inner_offset;
6955                let mut inner_depth = depth.clone();
6956                if inlined {
6957                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6958                    inner_offset = next_offset;
6959                } else {
6960                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6961                    inner_depth.increment()?;
6962                }
6963                let val_ref = self
6964                    .capability_policy
6965                    .get_or_insert_with(|| fidl::new_empty!(CapabilityPolicyAllowlists, D));
6966                fidl::decode!(
6967                    CapabilityPolicyAllowlists,
6968                    D,
6969                    val_ref,
6970                    decoder,
6971                    inner_offset,
6972                    inner_depth
6973                )?;
6974                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6975                {
6976                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6977                }
6978                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6979                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6980                }
6981            }
6982
6983            next_offset += envelope_size;
6984            _next_ordinal_to_read += 1;
6985            if next_offset >= end_offset {
6986                return Ok(());
6987            }
6988
6989            // Decode unknown envelopes for gaps in ordinals.
6990            while _next_ordinal_to_read < 3 {
6991                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6992                _next_ordinal_to_read += 1;
6993                next_offset += envelope_size;
6994            }
6995
6996            let next_out_of_line = decoder.next_out_of_line();
6997            let handles_before = decoder.remaining_handles();
6998            if let Some((inlined, num_bytes, num_handles)) =
6999                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7000            {
7001                let member_inline_size =
7002                    <DebugRegistrationPolicyAllowlists as fidl::encoding::TypeMarker>::inline_size(
7003                        decoder.context,
7004                    );
7005                if inlined != (member_inline_size <= 4) {
7006                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7007                }
7008                let inner_offset;
7009                let mut inner_depth = depth.clone();
7010                if inlined {
7011                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7012                    inner_offset = next_offset;
7013                } else {
7014                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7015                    inner_depth.increment()?;
7016                }
7017                let val_ref = self
7018                    .debug_registration_policy
7019                    .get_or_insert_with(|| fidl::new_empty!(DebugRegistrationPolicyAllowlists, D));
7020                fidl::decode!(
7021                    DebugRegistrationPolicyAllowlists,
7022                    D,
7023                    val_ref,
7024                    decoder,
7025                    inner_offset,
7026                    inner_depth
7027                )?;
7028                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7029                {
7030                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7031                }
7032                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7033                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7034                }
7035            }
7036
7037            next_offset += envelope_size;
7038            _next_ordinal_to_read += 1;
7039            if next_offset >= end_offset {
7040                return Ok(());
7041            }
7042
7043            // Decode unknown envelopes for gaps in ordinals.
7044            while _next_ordinal_to_read < 4 {
7045                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7046                _next_ordinal_to_read += 1;
7047                next_offset += envelope_size;
7048            }
7049
7050            let next_out_of_line = decoder.next_out_of_line();
7051            let handles_before = decoder.remaining_handles();
7052            if let Some((inlined, num_bytes, num_handles)) =
7053                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7054            {
7055                let member_inline_size =
7056                    <ChildPolicyAllowlists as fidl::encoding::TypeMarker>::inline_size(
7057                        decoder.context,
7058                    );
7059                if inlined != (member_inline_size <= 4) {
7060                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7061                }
7062                let inner_offset;
7063                let mut inner_depth = depth.clone();
7064                if inlined {
7065                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7066                    inner_offset = next_offset;
7067                } else {
7068                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7069                    inner_depth.increment()?;
7070                }
7071                let val_ref = self
7072                    .child_policy
7073                    .get_or_insert_with(|| fidl::new_empty!(ChildPolicyAllowlists, D));
7074                fidl::decode!(
7075                    ChildPolicyAllowlists,
7076                    D,
7077                    val_ref,
7078                    decoder,
7079                    inner_offset,
7080                    inner_depth
7081                )?;
7082                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7083                {
7084                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7085                }
7086                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7087                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7088                }
7089            }
7090
7091            next_offset += envelope_size;
7092
7093            // Decode the remaining unknown envelopes.
7094            while next_offset < end_offset {
7095                _next_ordinal_to_read += 1;
7096                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7097                next_offset += envelope_size;
7098            }
7099
7100            Ok(())
7101        }
7102    }
7103
7104    impl fidl::encoding::ValueTypeMarker for AllowlistedCapability {
7105        type Borrowed<'a> = &'a Self;
7106        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7107            value
7108        }
7109    }
7110
7111    unsafe impl fidl::encoding::TypeMarker for AllowlistedCapability {
7112        type Owned = Self;
7113
7114        #[inline(always)]
7115        fn inline_align(_context: fidl::encoding::Context) -> usize {
7116            8
7117        }
7118
7119        #[inline(always)]
7120        fn inline_size(_context: fidl::encoding::Context) -> usize {
7121            16
7122        }
7123    }
7124
7125    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllowlistedCapability, D>
7126        for &AllowlistedCapability
7127    {
7128        #[inline]
7129        unsafe fn encode(
7130            self,
7131            encoder: &mut fidl::encoding::Encoder<'_, D>,
7132            offset: usize,
7133            _depth: fidl::encoding::Depth,
7134        ) -> fidl::Result<()> {
7135            encoder.debug_check_bounds::<AllowlistedCapability>(offset);
7136            encoder.write_num::<u64>(self.ordinal(), offset);
7137            match self {
7138                AllowlistedCapability::Directory(ref val) => {
7139                    fidl::encoding::encode_in_envelope::<AllowlistedDirectory, D>(
7140                        <AllowlistedDirectory as fidl::encoding::ValueTypeMarker>::borrow(val),
7141                        encoder,
7142                        offset + 8,
7143                        _depth,
7144                    )
7145                }
7146                AllowlistedCapability::Protocol(ref val) => {
7147                    fidl::encoding::encode_in_envelope::<AllowlistedProtocol, D>(
7148                        <AllowlistedProtocol as fidl::encoding::ValueTypeMarker>::borrow(val),
7149                        encoder,
7150                        offset + 8,
7151                        _depth,
7152                    )
7153                }
7154                AllowlistedCapability::Service(ref val) => {
7155                    fidl::encoding::encode_in_envelope::<AllowlistedService, D>(
7156                        <AllowlistedService as fidl::encoding::ValueTypeMarker>::borrow(val),
7157                        encoder,
7158                        offset + 8,
7159                        _depth,
7160                    )
7161                }
7162                AllowlistedCapability::Storage(ref val) => {
7163                    fidl::encoding::encode_in_envelope::<AllowlistedStorage, D>(
7164                        <AllowlistedStorage as fidl::encoding::ValueTypeMarker>::borrow(val),
7165                        encoder,
7166                        offset + 8,
7167                        _depth,
7168                    )
7169                }
7170                AllowlistedCapability::Runner(ref val) => {
7171                    fidl::encoding::encode_in_envelope::<AllowlistedRunner, D>(
7172                        <AllowlistedRunner as fidl::encoding::ValueTypeMarker>::borrow(val),
7173                        encoder,
7174                        offset + 8,
7175                        _depth,
7176                    )
7177                }
7178                AllowlistedCapability::Resolver(ref val) => {
7179                    fidl::encoding::encode_in_envelope::<AllowlistedResolver, D>(
7180                        <AllowlistedResolver as fidl::encoding::ValueTypeMarker>::borrow(val),
7181                        encoder,
7182                        offset + 8,
7183                        _depth,
7184                    )
7185                }
7186                AllowlistedCapability::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
7187            }
7188        }
7189    }
7190
7191    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllowlistedCapability {
7192        #[inline(always)]
7193        fn new_empty() -> Self {
7194            Self::__SourceBreaking { unknown_ordinal: 0 }
7195        }
7196
7197        #[inline]
7198        unsafe fn decode(
7199            &mut self,
7200            decoder: &mut fidl::encoding::Decoder<'_, D>,
7201            offset: usize,
7202            mut depth: fidl::encoding::Depth,
7203        ) -> fidl::Result<()> {
7204            decoder.debug_check_bounds::<Self>(offset);
7205            #[allow(unused_variables)]
7206            let next_out_of_line = decoder.next_out_of_line();
7207            let handles_before = decoder.remaining_handles();
7208            let (ordinal, inlined, num_bytes, num_handles) =
7209                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
7210
7211            let member_inline_size = match ordinal {
7212                1 => <AllowlistedDirectory as fidl::encoding::TypeMarker>::inline_size(
7213                    decoder.context,
7214                ),
7215                3 => <AllowlistedProtocol as fidl::encoding::TypeMarker>::inline_size(
7216                    decoder.context,
7217                ),
7218                4 => {
7219                    <AllowlistedService as fidl::encoding::TypeMarker>::inline_size(decoder.context)
7220                }
7221                5 => {
7222                    <AllowlistedStorage as fidl::encoding::TypeMarker>::inline_size(decoder.context)
7223                }
7224                6 => {
7225                    <AllowlistedRunner as fidl::encoding::TypeMarker>::inline_size(decoder.context)
7226                }
7227                7 => <AllowlistedResolver as fidl::encoding::TypeMarker>::inline_size(
7228                    decoder.context,
7229                ),
7230                0 => return Err(fidl::Error::UnknownUnionTag),
7231                _ => num_bytes as usize,
7232            };
7233
7234            if inlined != (member_inline_size <= 4) {
7235                return Err(fidl::Error::InvalidInlineBitInEnvelope);
7236            }
7237            let _inner_offset;
7238            if inlined {
7239                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
7240                _inner_offset = offset + 8;
7241            } else {
7242                depth.increment()?;
7243                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7244            }
7245            match ordinal {
7246                1 => {
7247                    #[allow(irrefutable_let_patterns)]
7248                    if let AllowlistedCapability::Directory(_) = self {
7249                        // Do nothing, read the value into the object
7250                    } else {
7251                        // Initialize `self` to the right variant
7252                        *self = AllowlistedCapability::Directory(fidl::new_empty!(
7253                            AllowlistedDirectory,
7254                            D
7255                        ));
7256                    }
7257                    #[allow(irrefutable_let_patterns)]
7258                    if let AllowlistedCapability::Directory(ref mut val) = self {
7259                        fidl::decode!(AllowlistedDirectory, D, val, decoder, _inner_offset, depth)?;
7260                    } else {
7261                        unreachable!()
7262                    }
7263                }
7264                3 => {
7265                    #[allow(irrefutable_let_patterns)]
7266                    if let AllowlistedCapability::Protocol(_) = self {
7267                        // Do nothing, read the value into the object
7268                    } else {
7269                        // Initialize `self` to the right variant
7270                        *self = AllowlistedCapability::Protocol(fidl::new_empty!(
7271                            AllowlistedProtocol,
7272                            D
7273                        ));
7274                    }
7275                    #[allow(irrefutable_let_patterns)]
7276                    if let AllowlistedCapability::Protocol(ref mut val) = self {
7277                        fidl::decode!(AllowlistedProtocol, D, val, decoder, _inner_offset, depth)?;
7278                    } else {
7279                        unreachable!()
7280                    }
7281                }
7282                4 => {
7283                    #[allow(irrefutable_let_patterns)]
7284                    if let AllowlistedCapability::Service(_) = self {
7285                        // Do nothing, read the value into the object
7286                    } else {
7287                        // Initialize `self` to the right variant
7288                        *self =
7289                            AllowlistedCapability::Service(fidl::new_empty!(AllowlistedService, D));
7290                    }
7291                    #[allow(irrefutable_let_patterns)]
7292                    if let AllowlistedCapability::Service(ref mut val) = self {
7293                        fidl::decode!(AllowlistedService, D, val, decoder, _inner_offset, depth)?;
7294                    } else {
7295                        unreachable!()
7296                    }
7297                }
7298                5 => {
7299                    #[allow(irrefutable_let_patterns)]
7300                    if let AllowlistedCapability::Storage(_) = self {
7301                        // Do nothing, read the value into the object
7302                    } else {
7303                        // Initialize `self` to the right variant
7304                        *self =
7305                            AllowlistedCapability::Storage(fidl::new_empty!(AllowlistedStorage, D));
7306                    }
7307                    #[allow(irrefutable_let_patterns)]
7308                    if let AllowlistedCapability::Storage(ref mut val) = self {
7309                        fidl::decode!(AllowlistedStorage, D, val, decoder, _inner_offset, depth)?;
7310                    } else {
7311                        unreachable!()
7312                    }
7313                }
7314                6 => {
7315                    #[allow(irrefutable_let_patterns)]
7316                    if let AllowlistedCapability::Runner(_) = self {
7317                        // Do nothing, read the value into the object
7318                    } else {
7319                        // Initialize `self` to the right variant
7320                        *self =
7321                            AllowlistedCapability::Runner(fidl::new_empty!(AllowlistedRunner, D));
7322                    }
7323                    #[allow(irrefutable_let_patterns)]
7324                    if let AllowlistedCapability::Runner(ref mut val) = self {
7325                        fidl::decode!(AllowlistedRunner, D, val, decoder, _inner_offset, depth)?;
7326                    } else {
7327                        unreachable!()
7328                    }
7329                }
7330                7 => {
7331                    #[allow(irrefutable_let_patterns)]
7332                    if let AllowlistedCapability::Resolver(_) = self {
7333                        // Do nothing, read the value into the object
7334                    } else {
7335                        // Initialize `self` to the right variant
7336                        *self = AllowlistedCapability::Resolver(fidl::new_empty!(
7337                            AllowlistedResolver,
7338                            D
7339                        ));
7340                    }
7341                    #[allow(irrefutable_let_patterns)]
7342                    if let AllowlistedCapability::Resolver(ref mut val) = self {
7343                        fidl::decode!(AllowlistedResolver, D, val, decoder, _inner_offset, depth)?;
7344                    } else {
7345                        unreachable!()
7346                    }
7347                }
7348                #[allow(deprecated)]
7349                ordinal => {
7350                    for _ in 0..num_handles {
7351                        decoder.drop_next_handle()?;
7352                    }
7353                    *self = AllowlistedCapability::__SourceBreaking { unknown_ordinal: ordinal };
7354                }
7355            }
7356            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
7357                return Err(fidl::Error::InvalidNumBytesInEnvelope);
7358            }
7359            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7360                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7361            }
7362            Ok(())
7363        }
7364    }
7365
7366    impl fidl::encoding::ValueTypeMarker for AllowlistedDebugRegistration {
7367        type Borrowed<'a> = &'a Self;
7368        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7369            value
7370        }
7371    }
7372
7373    unsafe impl fidl::encoding::TypeMarker for AllowlistedDebugRegistration {
7374        type Owned = Self;
7375
7376        #[inline(always)]
7377        fn inline_align(_context: fidl::encoding::Context) -> usize {
7378            8
7379        }
7380
7381        #[inline(always)]
7382        fn inline_size(_context: fidl::encoding::Context) -> usize {
7383            16
7384        }
7385    }
7386
7387    unsafe impl<D: fidl::encoding::ResourceDialect>
7388        fidl::encoding::Encode<AllowlistedDebugRegistration, D> for &AllowlistedDebugRegistration
7389    {
7390        #[inline]
7391        unsafe fn encode(
7392            self,
7393            encoder: &mut fidl::encoding::Encoder<'_, D>,
7394            offset: usize,
7395            _depth: fidl::encoding::Depth,
7396        ) -> fidl::Result<()> {
7397            encoder.debug_check_bounds::<AllowlistedDebugRegistration>(offset);
7398            encoder.write_num::<u64>(self.ordinal(), offset);
7399            match self {
7400                AllowlistedDebugRegistration::Protocol(ref val) => {
7401                    fidl::encoding::encode_in_envelope::<AllowlistedProtocol, D>(
7402                        <AllowlistedProtocol as fidl::encoding::ValueTypeMarker>::borrow(val),
7403                        encoder,
7404                        offset + 8,
7405                        _depth,
7406                    )
7407                }
7408                AllowlistedDebugRegistration::__SourceBreaking { .. } => {
7409                    Err(fidl::Error::UnknownUnionTag)
7410                }
7411            }
7412        }
7413    }
7414
7415    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7416        for AllowlistedDebugRegistration
7417    {
7418        #[inline(always)]
7419        fn new_empty() -> Self {
7420            Self::__SourceBreaking { unknown_ordinal: 0 }
7421        }
7422
7423        #[inline]
7424        unsafe fn decode(
7425            &mut self,
7426            decoder: &mut fidl::encoding::Decoder<'_, D>,
7427            offset: usize,
7428            mut depth: fidl::encoding::Depth,
7429        ) -> fidl::Result<()> {
7430            decoder.debug_check_bounds::<Self>(offset);
7431            #[allow(unused_variables)]
7432            let next_out_of_line = decoder.next_out_of_line();
7433            let handles_before = decoder.remaining_handles();
7434            let (ordinal, inlined, num_bytes, num_handles) =
7435                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
7436
7437            let member_inline_size = match ordinal {
7438                1 => <AllowlistedProtocol as fidl::encoding::TypeMarker>::inline_size(
7439                    decoder.context,
7440                ),
7441                0 => return Err(fidl::Error::UnknownUnionTag),
7442                _ => num_bytes as usize,
7443            };
7444
7445            if inlined != (member_inline_size <= 4) {
7446                return Err(fidl::Error::InvalidInlineBitInEnvelope);
7447            }
7448            let _inner_offset;
7449            if inlined {
7450                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
7451                _inner_offset = offset + 8;
7452            } else {
7453                depth.increment()?;
7454                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7455            }
7456            match ordinal {
7457                1 => {
7458                    #[allow(irrefutable_let_patterns)]
7459                    if let AllowlistedDebugRegistration::Protocol(_) = self {
7460                        // Do nothing, read the value into the object
7461                    } else {
7462                        // Initialize `self` to the right variant
7463                        *self = AllowlistedDebugRegistration::Protocol(fidl::new_empty!(
7464                            AllowlistedProtocol,
7465                            D
7466                        ));
7467                    }
7468                    #[allow(irrefutable_let_patterns)]
7469                    if let AllowlistedDebugRegistration::Protocol(ref mut val) = self {
7470                        fidl::decode!(AllowlistedProtocol, D, val, decoder, _inner_offset, depth)?;
7471                    } else {
7472                        unreachable!()
7473                    }
7474                }
7475                #[allow(deprecated)]
7476                ordinal => {
7477                    for _ in 0..num_handles {
7478                        decoder.drop_next_handle()?;
7479                    }
7480                    *self =
7481                        AllowlistedDebugRegistration::__SourceBreaking { unknown_ordinal: ordinal };
7482                }
7483            }
7484            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
7485                return Err(fidl::Error::InvalidNumBytesInEnvelope);
7486            }
7487            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7488                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7489            }
7490            Ok(())
7491        }
7492    }
7493
7494    impl fidl::encoding::ValueTypeMarker for InjectedUse {
7495        type Borrowed<'a> = &'a Self;
7496        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7497            value
7498        }
7499    }
7500
7501    unsafe impl fidl::encoding::TypeMarker for InjectedUse {
7502        type Owned = Self;
7503
7504        #[inline(always)]
7505        fn inline_align(_context: fidl::encoding::Context) -> usize {
7506            8
7507        }
7508
7509        #[inline(always)]
7510        fn inline_size(_context: fidl::encoding::Context) -> usize {
7511            16
7512        }
7513    }
7514
7515    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<InjectedUse, D>
7516        for &InjectedUse
7517    {
7518        #[inline]
7519        unsafe fn encode(
7520            self,
7521            encoder: &mut fidl::encoding::Encoder<'_, D>,
7522            offset: usize,
7523            _depth: fidl::encoding::Depth,
7524        ) -> fidl::Result<()> {
7525            encoder.debug_check_bounds::<InjectedUse>(offset);
7526            encoder.write_num::<u64>(self.ordinal(), offset);
7527            match self {
7528                InjectedUse::Protocol(ref val) => {
7529                    fidl::encoding::encode_in_envelope::<InjectedUseProtocol, D>(
7530                        <InjectedUseProtocol as fidl::encoding::ValueTypeMarker>::borrow(val),
7531                        encoder,
7532                        offset + 8,
7533                        _depth,
7534                    )
7535                }
7536                InjectedUse::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
7537            }
7538        }
7539    }
7540
7541    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for InjectedUse {
7542        #[inline(always)]
7543        fn new_empty() -> Self {
7544            Self::__SourceBreaking { unknown_ordinal: 0 }
7545        }
7546
7547        #[inline]
7548        unsafe fn decode(
7549            &mut self,
7550            decoder: &mut fidl::encoding::Decoder<'_, D>,
7551            offset: usize,
7552            mut depth: fidl::encoding::Depth,
7553        ) -> fidl::Result<()> {
7554            decoder.debug_check_bounds::<Self>(offset);
7555            #[allow(unused_variables)]
7556            let next_out_of_line = decoder.next_out_of_line();
7557            let handles_before = decoder.remaining_handles();
7558            let (ordinal, inlined, num_bytes, num_handles) =
7559                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
7560
7561            let member_inline_size = match ordinal {
7562                1 => <InjectedUseProtocol as fidl::encoding::TypeMarker>::inline_size(
7563                    decoder.context,
7564                ),
7565                0 => return Err(fidl::Error::UnknownUnionTag),
7566                _ => num_bytes as usize,
7567            };
7568
7569            if inlined != (member_inline_size <= 4) {
7570                return Err(fidl::Error::InvalidInlineBitInEnvelope);
7571            }
7572            let _inner_offset;
7573            if inlined {
7574                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
7575                _inner_offset = offset + 8;
7576            } else {
7577                depth.increment()?;
7578                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7579            }
7580            match ordinal {
7581                1 => {
7582                    #[allow(irrefutable_let_patterns)]
7583                    if let InjectedUse::Protocol(_) = self {
7584                        // Do nothing, read the value into the object
7585                    } else {
7586                        // Initialize `self` to the right variant
7587                        *self = InjectedUse::Protocol(fidl::new_empty!(InjectedUseProtocol, D));
7588                    }
7589                    #[allow(irrefutable_let_patterns)]
7590                    if let InjectedUse::Protocol(ref mut val) = self {
7591                        fidl::decode!(InjectedUseProtocol, D, val, decoder, _inner_offset, depth)?;
7592                    } else {
7593                        unreachable!()
7594                    }
7595                }
7596                #[allow(deprecated)]
7597                ordinal => {
7598                    for _ in 0..num_handles {
7599                        decoder.drop_next_handle()?;
7600                    }
7601                    *self = InjectedUse::__SourceBreaking { unknown_ordinal: ordinal };
7602                }
7603            }
7604            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
7605                return Err(fidl::Error::InvalidNumBytesInEnvelope);
7606            }
7607            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7608                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7609            }
7610            Ok(())
7611        }
7612    }
7613}