Class Reports.Trace

java.lang.Object
com.google.protobuf.AbstractMessageLite
com.google.protobuf.AbstractMessage
com.google.protobuf.GeneratedMessage
mdg.engine.proto.Reports.Trace
All Implemented Interfaces:
com.google.protobuf.Message, com.google.protobuf.MessageLite, com.google.protobuf.MessageLiteOrBuilder, com.google.protobuf.MessageOrBuilder, Serializable, Reports.TraceOrBuilder
Enclosing class:
Reports

public static final class Reports.Trace extends com.google.protobuf.GeneratedMessage implements Reports.TraceOrBuilder
Protobuf type mdg.engine.proto.Trace
See Also:
  • Field Details

    • START_TIME_FIELD_NUMBER

      public static final int START_TIME_FIELD_NUMBER
      See Also:
    • END_TIME_FIELD_NUMBER

      public static final int END_TIME_FIELD_NUMBER
      See Also:
    • DURATION_NS_FIELD_NUMBER

      public static final int DURATION_NS_FIELD_NUMBER
      See Also:
    • ROOT_FIELD_NUMBER

      public static final int ROOT_FIELD_NUMBER
      See Also:
    • SIGNATURE_FIELD_NUMBER

      public static final int SIGNATURE_FIELD_NUMBER
      See Also:
    • DETAILS_FIELD_NUMBER

      public static final int DETAILS_FIELD_NUMBER
      See Also:
    • CLIENT_NAME_FIELD_NUMBER

      public static final int CLIENT_NAME_FIELD_NUMBER
      See Also:
    • CLIENT_VERSION_FIELD_NUMBER

      public static final int CLIENT_VERSION_FIELD_NUMBER
      See Also:
    • CLIENT_ADDRESS_FIELD_NUMBER

      public static final int CLIENT_ADDRESS_FIELD_NUMBER
      See Also:
    • CLIENT_REFERENCE_ID_FIELD_NUMBER

      public static final int CLIENT_REFERENCE_ID_FIELD_NUMBER
      See Also:
    • HTTP_FIELD_NUMBER

      public static final int HTTP_FIELD_NUMBER
      See Also:
    • CACHE_POLICY_FIELD_NUMBER

      public static final int CACHE_POLICY_FIELD_NUMBER
      See Also:
    • QUERY_PLAN_FIELD_NUMBER

      public static final int QUERY_PLAN_FIELD_NUMBER
      See Also:
    • FULL_QUERY_CACHE_HIT_FIELD_NUMBER

      public static final int FULL_QUERY_CACHE_HIT_FIELD_NUMBER
      See Also:
    • PERSISTED_QUERY_HIT_FIELD_NUMBER

      public static final int PERSISTED_QUERY_HIT_FIELD_NUMBER
      See Also:
    • PERSISTED_QUERY_REGISTER_FIELD_NUMBER

      public static final int PERSISTED_QUERY_REGISTER_FIELD_NUMBER
      See Also:
    • REGISTERED_OPERATION_FIELD_NUMBER

      public static final int REGISTERED_OPERATION_FIELD_NUMBER
      See Also:
    • FORBIDDEN_OPERATION_FIELD_NUMBER

      public static final int FORBIDDEN_OPERATION_FIELD_NUMBER
      See Also:
    • ORIGIN_REPORTED_START_TIME_FIELD_NUMBER

      public static final int ORIGIN_REPORTED_START_TIME_FIELD_NUMBER
      See Also:
    • ORIGIN_REPORTED_END_TIME_FIELD_NUMBER

      public static final int ORIGIN_REPORTED_END_TIME_FIELD_NUMBER
      See Also:
    • ORIGIN_REPORTED_DURATION_NS_FIELD_NUMBER

      public static final int ORIGIN_REPORTED_DURATION_NS_FIELD_NUMBER
      See Also:
    • LEGACY_SIGNATURE_NEEDS_RESIGNING_FIELD_NUMBER

      public static final int LEGACY_SIGNATURE_NEEDS_RESIGNING_FIELD_NUMBER
      See Also:
  • Method Details

    • getDescriptor

      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor()
    • internalGetFieldAccessorTable

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable()
      Specified by:
      internalGetFieldAccessorTable in class com.google.protobuf.GeneratedMessage
    • hasStartTime

      public boolean hasStartTime()
       Wallclock time when the trace began.
       
      .google.protobuf.Timestamp start_time = 4;
      Specified by:
      hasStartTime in interface Reports.TraceOrBuilder
      Returns:
      Whether the startTime field is set.
    • getStartTime

      public com.google.protobuf.Timestamp getStartTime()
       Wallclock time when the trace began.
       
      .google.protobuf.Timestamp start_time = 4;
      Specified by:
      getStartTime in interface Reports.TraceOrBuilder
      Returns:
      The startTime.
    • getStartTimeOrBuilder

      public com.google.protobuf.TimestampOrBuilder getStartTimeOrBuilder()
       Wallclock time when the trace began.
       
      .google.protobuf.Timestamp start_time = 4;
      Specified by:
      getStartTimeOrBuilder in interface Reports.TraceOrBuilder
    • hasEndTime

      public boolean hasEndTime()
       Wallclock time when the trace ended.
       
      .google.protobuf.Timestamp end_time = 3;
      Specified by:
      hasEndTime in interface Reports.TraceOrBuilder
      Returns:
      Whether the endTime field is set.
    • getEndTime

      public com.google.protobuf.Timestamp getEndTime()
       Wallclock time when the trace ended.
       
      .google.protobuf.Timestamp end_time = 3;
      Specified by:
      getEndTime in interface Reports.TraceOrBuilder
      Returns:
      The endTime.
    • getEndTimeOrBuilder

      public com.google.protobuf.TimestampOrBuilder getEndTimeOrBuilder()
       Wallclock time when the trace ended.
       
      .google.protobuf.Timestamp end_time = 3;
      Specified by:
      getEndTimeOrBuilder in interface Reports.TraceOrBuilder
    • getDurationNs

      public long getDurationNs()
       High precision duration of the trace; may not equal end_time-start_time
       (eg, if your machine's clock changed during the trace).
       
      uint64 duration_ns = 11;
      Specified by:
      getDurationNs in interface Reports.TraceOrBuilder
      Returns:
      The durationNs.
    • hasRoot

      public boolean hasRoot()
       A tree containing information about all resolvers run directly by this
       service, including errors.
       
      .mdg.engine.proto.Trace.Node root = 14;
      Specified by:
      hasRoot in interface Reports.TraceOrBuilder
      Returns:
      Whether the root field is set.
    • getRoot

      public Reports.Trace.Node getRoot()
       A tree containing information about all resolvers run directly by this
       service, including errors.
       
      .mdg.engine.proto.Trace.Node root = 14;
      Specified by:
      getRoot in interface Reports.TraceOrBuilder
      Returns:
      The root.
    • getRootOrBuilder

      public Reports.Trace.NodeOrBuilder getRootOrBuilder()
       A tree containing information about all resolvers run directly by this
       service, including errors.
       
      .mdg.engine.proto.Trace.Node root = 14;
      Specified by:
      getRootOrBuilder in interface Reports.TraceOrBuilder
    • getSignature

      public String getSignature()
       In addition to details.raw_query, we include a "signature" of the query,
       which can be normalized: for example, you may want to discard aliases, drop
       unused operations and fragments, sort fields, etc. The most important thing
       here is that the signature match the signature in StatsReports. In
       StatsReports signatures show up as the key in the per_query map (with the
       operation name prepended).  The signature should be a valid GraphQL query.
       All traces must have a signature; if this Trace is in a FullTracesReport
       that signature is in the key of traces_per_query rather than in this field.
       Engineproxy provides the signature in legacy_signature_needs_resigning
       instead.
       
      string signature = 19;
      Specified by:
      getSignature in interface Reports.TraceOrBuilder
      Returns:
      The signature.
    • getSignatureBytes

      public com.google.protobuf.ByteString getSignatureBytes()
       In addition to details.raw_query, we include a "signature" of the query,
       which can be normalized: for example, you may want to discard aliases, drop
       unused operations and fragments, sort fields, etc. The most important thing
       here is that the signature match the signature in StatsReports. In
       StatsReports signatures show up as the key in the per_query map (with the
       operation name prepended).  The signature should be a valid GraphQL query.
       All traces must have a signature; if this Trace is in a FullTracesReport
       that signature is in the key of traces_per_query rather than in this field.
       Engineproxy provides the signature in legacy_signature_needs_resigning
       instead.
       
      string signature = 19;
      Specified by:
      getSignatureBytes in interface Reports.TraceOrBuilder
      Returns:
      The bytes for signature.
    • hasDetails

      public boolean hasDetails()
      .mdg.engine.proto.Trace.Details details = 6;
      Specified by:
      hasDetails in interface Reports.TraceOrBuilder
      Returns:
      Whether the details field is set.
    • getDetails

      public Reports.Trace.Details getDetails()
      .mdg.engine.proto.Trace.Details details = 6;
      Specified by:
      getDetails in interface Reports.TraceOrBuilder
      Returns:
      The details.
    • getDetailsOrBuilder

      public Reports.Trace.DetailsOrBuilder getDetailsOrBuilder()
      .mdg.engine.proto.Trace.Details details = 6;
      Specified by:
      getDetailsOrBuilder in interface Reports.TraceOrBuilder
    • getClientName

      public String getClientName()
       Note: engineproxy always sets client_name, client_version, and client_address to "none".
       apollo-engine-reporting allows for them to be set by the user.
       
      string client_name = 7;
      Specified by:
      getClientName in interface Reports.TraceOrBuilder
      Returns:
      The clientName.
    • getClientNameBytes

      public com.google.protobuf.ByteString getClientNameBytes()
       Note: engineproxy always sets client_name, client_version, and client_address to "none".
       apollo-engine-reporting allows for them to be set by the user.
       
      string client_name = 7;
      Specified by:
      getClientNameBytes in interface Reports.TraceOrBuilder
      Returns:
      The bytes for clientName.
    • getClientVersion

      public String getClientVersion()
      string client_version = 8;
      Specified by:
      getClientVersion in interface Reports.TraceOrBuilder
      Returns:
      The clientVersion.
    • getClientVersionBytes

      public com.google.protobuf.ByteString getClientVersionBytes()
      string client_version = 8;
      Specified by:
      getClientVersionBytes in interface Reports.TraceOrBuilder
      Returns:
      The bytes for clientVersion.
    • getClientAddress

      public String getClientAddress()
      string client_address = 9;
      Specified by:
      getClientAddress in interface Reports.TraceOrBuilder
      Returns:
      The clientAddress.
    • getClientAddressBytes

      public com.google.protobuf.ByteString getClientAddressBytes()
      string client_address = 9;
      Specified by:
      getClientAddressBytes in interface Reports.TraceOrBuilder
      Returns:
      The bytes for clientAddress.
    • getClientReferenceId

      public String getClientReferenceId()
      string client_reference_id = 23;
      Specified by:
      getClientReferenceId in interface Reports.TraceOrBuilder
      Returns:
      The clientReferenceId.
    • getClientReferenceIdBytes

      public com.google.protobuf.ByteString getClientReferenceIdBytes()
      string client_reference_id = 23;
      Specified by:
      getClientReferenceIdBytes in interface Reports.TraceOrBuilder
      Returns:
      The bytes for clientReferenceId.
    • hasHttp

      public boolean hasHttp()
      .mdg.engine.proto.Trace.HTTP http = 10;
      Specified by:
      hasHttp in interface Reports.TraceOrBuilder
      Returns:
      Whether the http field is set.
    • getHttp

      public Reports.Trace.HTTP getHttp()
      .mdg.engine.proto.Trace.HTTP http = 10;
      Specified by:
      getHttp in interface Reports.TraceOrBuilder
      Returns:
      The http.
    • getHttpOrBuilder

      public Reports.Trace.HTTPOrBuilder getHttpOrBuilder()
      .mdg.engine.proto.Trace.HTTP http = 10;
      Specified by:
      getHttpOrBuilder in interface Reports.TraceOrBuilder
    • hasCachePolicy

      public boolean hasCachePolicy()
      .mdg.engine.proto.Trace.CachePolicy cache_policy = 18;
      Specified by:
      hasCachePolicy in interface Reports.TraceOrBuilder
      Returns:
      Whether the cachePolicy field is set.
    • getCachePolicy

      public Reports.Trace.CachePolicy getCachePolicy()
      .mdg.engine.proto.Trace.CachePolicy cache_policy = 18;
      Specified by:
      getCachePolicy in interface Reports.TraceOrBuilder
      Returns:
      The cachePolicy.
    • getCachePolicyOrBuilder

      public Reports.Trace.CachePolicyOrBuilder getCachePolicyOrBuilder()
      .mdg.engine.proto.Trace.CachePolicy cache_policy = 18;
      Specified by:
      getCachePolicyOrBuilder in interface Reports.TraceOrBuilder
    • hasQueryPlan

      public boolean hasQueryPlan()
       If this Trace was created by a gateway, this is the query plan, including
       sub-Traces for federated services. Note that the 'root' tree on the
       top-level Trace won't contain any resolvers (though it could contain errors
       that occurred in the gateway itself).
       
      .mdg.engine.proto.Trace.QueryPlanNode query_plan = 26;
      Specified by:
      hasQueryPlan in interface Reports.TraceOrBuilder
      Returns:
      Whether the queryPlan field is set.
    • getQueryPlan

      public Reports.Trace.QueryPlanNode getQueryPlan()
       If this Trace was created by a gateway, this is the query plan, including
       sub-Traces for federated services. Note that the 'root' tree on the
       top-level Trace won't contain any resolvers (though it could contain errors
       that occurred in the gateway itself).
       
      .mdg.engine.proto.Trace.QueryPlanNode query_plan = 26;
      Specified by:
      getQueryPlan in interface Reports.TraceOrBuilder
      Returns:
      The queryPlan.
    • getQueryPlanOrBuilder

      public Reports.Trace.QueryPlanNodeOrBuilder getQueryPlanOrBuilder()
       If this Trace was created by a gateway, this is the query plan, including
       sub-Traces for federated services. Note that the 'root' tree on the
       top-level Trace won't contain any resolvers (though it could contain errors
       that occurred in the gateway itself).
       
      .mdg.engine.proto.Trace.QueryPlanNode query_plan = 26;
      Specified by:
      getQueryPlanOrBuilder in interface Reports.TraceOrBuilder
    • getFullQueryCacheHit

      public boolean getFullQueryCacheHit()
       Was this response served from a full query response cache?  (In that case
       the node tree will have no resolvers.)
       
      bool full_query_cache_hit = 20;
      Specified by:
      getFullQueryCacheHit in interface Reports.TraceOrBuilder
      Returns:
      The fullQueryCacheHit.
    • getPersistedQueryHit

      public boolean getPersistedQueryHit()
       Was this query specified successfully as a persisted query hash?
       
      bool persisted_query_hit = 21;
      Specified by:
      getPersistedQueryHit in interface Reports.TraceOrBuilder
      Returns:
      The persistedQueryHit.
    • getPersistedQueryRegister

      public boolean getPersistedQueryRegister()
       Did this query contain both a full query string and a persisted query hash?
       (This typically means that a previous request was rejected as an unknown
       persisted query.)
       
      bool persisted_query_register = 22;
      Specified by:
      getPersistedQueryRegister in interface Reports.TraceOrBuilder
      Returns:
      The persistedQueryRegister.
    • getRegisteredOperation

      public boolean getRegisteredOperation()
       Was this operation registered and a part of the safelist?
       
      bool registered_operation = 24;
      Specified by:
      getRegisteredOperation in interface Reports.TraceOrBuilder
      Returns:
      The registeredOperation.
    • getForbiddenOperation

      public boolean getForbiddenOperation()
       Was this operation forbidden due to lack of safelisting?
       
      bool forbidden_operation = 25;
      Specified by:
      getForbiddenOperation in interface Reports.TraceOrBuilder
      Returns:
      The forbiddenOperation.
    • hasOriginReportedStartTime

      public boolean hasOriginReportedStartTime()
       --------------------------------------------------------------
       Fields below this line are only set by the old Go engineproxy.
       
      .google.protobuf.Timestamp origin_reported_start_time = 15;
      Specified by:
      hasOriginReportedStartTime in interface Reports.TraceOrBuilder
      Returns:
      Whether the originReportedStartTime field is set.
    • getOriginReportedStartTime

      public com.google.protobuf.Timestamp getOriginReportedStartTime()
       --------------------------------------------------------------
       Fields below this line are only set by the old Go engineproxy.
       
      .google.protobuf.Timestamp origin_reported_start_time = 15;
      Specified by:
      getOriginReportedStartTime in interface Reports.TraceOrBuilder
      Returns:
      The originReportedStartTime.
    • getOriginReportedStartTimeOrBuilder

      public com.google.protobuf.TimestampOrBuilder getOriginReportedStartTimeOrBuilder()
       --------------------------------------------------------------
       Fields below this line are only set by the old Go engineproxy.
       
      .google.protobuf.Timestamp origin_reported_start_time = 15;
      Specified by:
      getOriginReportedStartTimeOrBuilder in interface Reports.TraceOrBuilder
    • hasOriginReportedEndTime

      public boolean hasOriginReportedEndTime()
      .google.protobuf.Timestamp origin_reported_end_time = 16;
      Specified by:
      hasOriginReportedEndTime in interface Reports.TraceOrBuilder
      Returns:
      Whether the originReportedEndTime field is set.
    • getOriginReportedEndTime

      public com.google.protobuf.Timestamp getOriginReportedEndTime()
      .google.protobuf.Timestamp origin_reported_end_time = 16;
      Specified by:
      getOriginReportedEndTime in interface Reports.TraceOrBuilder
      Returns:
      The originReportedEndTime.
    • getOriginReportedEndTimeOrBuilder

      public com.google.protobuf.TimestampOrBuilder getOriginReportedEndTimeOrBuilder()
      .google.protobuf.Timestamp origin_reported_end_time = 16;
      Specified by:
      getOriginReportedEndTimeOrBuilder in interface Reports.TraceOrBuilder
    • getOriginReportedDurationNs

      public long getOriginReportedDurationNs()
      uint64 origin_reported_duration_ns = 17;
      Specified by:
      getOriginReportedDurationNs in interface Reports.TraceOrBuilder
      Returns:
      The originReportedDurationNs.
    • getLegacySignatureNeedsResigning

      public String getLegacySignatureNeedsResigning()
       Older agents (eg the Go engineproxy) relied to some degree on the Engine
       backend to run their own semi-compatible implementation of a specific
       variant of query signatures. The backend does not do this for new agents (which
       set the above 'signature' field). It used to still "re-sign" signatures
       from engineproxy, but we've now simplified the backend to no longer do this.
       Deprecated and ignored in FullTracesReports.
       
      string legacy_signature_needs_resigning = 5;
      Specified by:
      getLegacySignatureNeedsResigning in interface Reports.TraceOrBuilder
      Returns:
      The legacySignatureNeedsResigning.
    • getLegacySignatureNeedsResigningBytes

      public com.google.protobuf.ByteString getLegacySignatureNeedsResigningBytes()
       Older agents (eg the Go engineproxy) relied to some degree on the Engine
       backend to run their own semi-compatible implementation of a specific
       variant of query signatures. The backend does not do this for new agents (which
       set the above 'signature' field). It used to still "re-sign" signatures
       from engineproxy, but we've now simplified the backend to no longer do this.
       Deprecated and ignored in FullTracesReports.
       
      string legacy_signature_needs_resigning = 5;
      Specified by:
      getLegacySignatureNeedsResigningBytes in interface Reports.TraceOrBuilder
      Returns:
      The bytes for legacySignatureNeedsResigning.
    • isInitialized

      public final boolean isInitialized()
      Specified by:
      isInitialized in interface com.google.protobuf.MessageLiteOrBuilder
      Overrides:
      isInitialized in class com.google.protobuf.GeneratedMessage
    • writeTo

      public void writeTo(com.google.protobuf.CodedOutputStream output) throws IOException
      Specified by:
      writeTo in interface com.google.protobuf.MessageLite
      Overrides:
      writeTo in class com.google.protobuf.GeneratedMessage
      Throws:
      IOException
    • getSerializedSize

      public int getSerializedSize()
      Specified by:
      getSerializedSize in interface com.google.protobuf.MessageLite
      Overrides:
      getSerializedSize in class com.google.protobuf.GeneratedMessage
    • equals

      public boolean equals(Object obj)
      Specified by:
      equals in interface com.google.protobuf.Message
      Overrides:
      equals in class com.google.protobuf.AbstractMessage
    • hashCode

      public int hashCode()
      Specified by:
      hashCode in interface com.google.protobuf.Message
      Overrides:
      hashCode in class com.google.protobuf.AbstractMessage
    • parseFrom

      public static Reports.Trace parseFrom(ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

      public static Reports.Trace parseFrom(ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

      public static Reports.Trace parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

      public static Reports.Trace parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

      public static Reports.Trace parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

      public static Reports.Trace parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

      public static Reports.Trace parseFrom(InputStream input) throws IOException
      Throws:
      IOException
    • parseFrom

      public static Reports.Trace parseFrom(InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException
      Throws:
      IOException
    • parseDelimitedFrom

      public static Reports.Trace parseDelimitedFrom(InputStream input) throws IOException
      Throws:
      IOException
    • parseDelimitedFrom

      public static Reports.Trace parseDelimitedFrom(InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException
      Throws:
      IOException
    • parseFrom

      public static Reports.Trace parseFrom(com.google.protobuf.CodedInputStream input) throws IOException
      Throws:
      IOException
    • parseFrom

      public static Reports.Trace parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException
      Throws:
      IOException
    • newBuilderForType

      public Reports.Trace.Builder newBuilderForType()
      Specified by:
      newBuilderForType in interface com.google.protobuf.Message
      Specified by:
      newBuilderForType in interface com.google.protobuf.MessageLite
    • newBuilder

      public static Reports.Trace.Builder newBuilder()
    • newBuilder

      public static Reports.Trace.Builder newBuilder(Reports.Trace prototype)
    • toBuilder

      public Reports.Trace.Builder toBuilder()
      Specified by:
      toBuilder in interface com.google.protobuf.Message
      Specified by:
      toBuilder in interface com.google.protobuf.MessageLite
    • newBuilderForType

      protected Reports.Trace.Builder newBuilderForType(com.google.protobuf.AbstractMessage.BuilderParent parent)
      Overrides:
      newBuilderForType in class com.google.protobuf.AbstractMessage
    • getDefaultInstance

      public static Reports.Trace getDefaultInstance()
    • parser

      public static com.google.protobuf.Parser<Reports.Trace> parser()
    • getParserForType

      public com.google.protobuf.Parser<Reports.Trace> getParserForType()
      Specified by:
      getParserForType in interface com.google.protobuf.Message
      Specified by:
      getParserForType in interface com.google.protobuf.MessageLite
      Overrides:
      getParserForType in class com.google.protobuf.GeneratedMessage
    • getDefaultInstanceForType

      public Reports.Trace getDefaultInstanceForType()
      Specified by:
      getDefaultInstanceForType in interface com.google.protobuf.MessageLiteOrBuilder
      Specified by:
      getDefaultInstanceForType in interface com.google.protobuf.MessageOrBuilder