%% -*- coding: utf-8 -*-
%% @private
%% Automatically generated, do not edit
%% Generated by gpb_compile version 4.11.1
-module(router_pb).

-export([encode_msg/2, encode_msg/3]).
-export([decode_msg/2, decode_msg/3]).
-export([merge_msgs/3, merge_msgs/4]).
-export([verify_msg/2, verify_msg/3]).
-export([get_msg_defs/0]).
-export([get_msg_names/0]).
-export([get_group_names/0]).
-export([get_msg_or_group_names/0]).
-export([get_enum_names/0]).
-export([find_msg_def/1, fetch_msg_def/1]).
-export([find_enum_def/1, fetch_enum_def/1]).
-export([enum_symbol_by_value/2, enum_value_by_symbol/2]).
-export(['enum_symbol_by_value_Etcd.RangeRequest.SortOrder'/1, 'enum_value_by_symbol_Etcd.RangeRequest.SortOrder'/1]).
-export(['enum_symbol_by_value_Etcd.RangeRequest.SortTarget'/1, 'enum_value_by_symbol_Etcd.RangeRequest.SortTarget'/1]).
-export(['enum_symbol_by_value_Etcd.Compare.CompareResult'/1, 'enum_value_by_symbol_Etcd.Compare.CompareResult'/1]).
-export(['enum_symbol_by_value_Etcd.Compare.CompareTarget'/1, 'enum_value_by_symbol_Etcd.Compare.CompareTarget'/1]).
-export(['enum_symbol_by_value_Etcd.WatchCreateRequest.FilterType'/1, 'enum_value_by_symbol_Etcd.WatchCreateRequest.FilterType'/1]).
-export(['enum_symbol_by_value_Etcd.AlarmType'/1, 'enum_value_by_symbol_Etcd.AlarmType'/1]).
-export(['enum_symbol_by_value_Etcd.AlarmRequest.AlarmAction'/1, 'enum_value_by_symbol_Etcd.AlarmRequest.AlarmAction'/1]).
-export(['enum_symbol_by_value_Etcd.HealthCheckResponse.ServingStatus'/1, 'enum_value_by_symbol_Etcd.HealthCheckResponse.ServingStatus'/1]).
-export(['enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'/1, 'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'/1]).
-export(['enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Label'/1, 'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Label'/1]).
-export(['enum_symbol_by_value_google.protobuf.FileOptions.OptimizeMode'/1, 'enum_value_by_symbol_google.protobuf.FileOptions.OptimizeMode'/1]).
-export(['enum_symbol_by_value_google.protobuf.FieldOptions.CType'/1, 'enum_value_by_symbol_google.protobuf.FieldOptions.CType'/1]).
-export(['enum_symbol_by_value_google.protobuf.FieldOptions.JSType'/1, 'enum_value_by_symbol_google.protobuf.FieldOptions.JSType'/1]).
-export(['enum_symbol_by_value_mvccpb.Event.EventType'/1, 'enum_value_by_symbol_mvccpb.Event.EventType'/1]).
-export(['enum_symbol_by_value_authpb.Permission.Type'/1, 'enum_value_by_symbol_authpb.Permission.Type'/1]).
-export([get_service_names/0]).
-export([get_service_def/1]).
-export([get_rpc_names/1]).
-export([find_rpc_def/2, fetch_rpc_def/2]).
-export([fqbin_to_service_name/1]).
-export([service_name_to_fqbin/1]).
-export([fqbins_to_service_and_rpc_name/2]).
-export([service_and_rpc_name_to_fqbins/2]).
-export([fqbin_to_msg_name/1]).
-export([msg_name_to_fqbin/1]).
-export([fqbin_to_enum_name/1]).
-export([enum_name_to_fqbin/1]).
-export([get_package_name/0]).
-export([uses_packages/0]).
-export([source_basename/0]).
-export([get_all_source_basenames/0]).
-export([get_all_proto_names/0]).
-export([get_msg_containment/1]).
-export([get_pkg_containment/1]).
-export([get_service_containment/1]).
-export([get_rpc_containment/1]).
-export([get_enum_containment/1]).
-export([get_proto_by_msg_name_as_fqbin/1]).
-export([get_proto_by_service_name_as_fqbin/1]).
-export([get_proto_by_enum_name_as_fqbin/1]).
-export([get_protos_by_pkg_name_as_fqbin/1]).
-export([gpb_version_as_string/0, gpb_version_as_list/0]).


%% enumerated types
-type 'Etcd.RangeRequest.SortOrder'() :: 'NONE' | 'ASCEND' | 'DESCEND'.
-type 'Etcd.RangeRequest.SortTarget'() :: 'KEY' | 'VERSION' | 'CREATE' | 'MOD' | 'VALUE'.
-type 'Etcd.Compare.CompareResult'() :: 'EQUAL' | 'GREATER' | 'LESS' | 'NOT_EQUAL'.
-type 'Etcd.Compare.CompareTarget'() :: 'VERSION' | 'CREATE' | 'MOD' | 'VALUE' | 'LEASE'.
-type 'Etcd.WatchCreateRequest.FilterType'() :: 'NOPUT' | 'NODELETE'.
-type 'Etcd.AlarmType'() :: 'NONE' | 'NOSPACE' | 'CORRUPT'.
-type 'Etcd.AlarmRequest.AlarmAction'() :: 'GET' | 'ACTIVATE' | 'DEACTIVATE'.
-type 'Etcd.HealthCheckResponse.ServingStatus'() :: 'UNKNOWN' | 'SERVING' | 'NOT_SERVING' | 'SERVICE_UNKNOWN'.
-type 'google.protobuf.FieldDescriptorProto.Type'() :: 'TYPE_DOUBLE' | 'TYPE_FLOAT' | 'TYPE_INT64' | 'TYPE_UINT64' | 'TYPE_INT32' | 'TYPE_FIXED64' | 'TYPE_FIXED32' | 'TYPE_BOOL' | 'TYPE_STRING' | 'TYPE_GROUP' | 'TYPE_MESSAGE' | 'TYPE_BYTES' | 'TYPE_UINT32' | 'TYPE_ENUM' | 'TYPE_SFIXED32' | 'TYPE_SFIXED64' | 'TYPE_SINT32' | 'TYPE_SINT64'.
-type 'google.protobuf.FieldDescriptorProto.Label'() :: 'LABEL_OPTIONAL' | 'LABEL_REQUIRED' | 'LABEL_REPEATED'.
-type 'google.protobuf.FileOptions.OptimizeMode'() :: 'SPEED' | 'CODE_SIZE' | 'LITE_RUNTIME'.
-type 'google.protobuf.FieldOptions.CType'() :: 'STRING' | 'CORD' | 'STRING_PIECE'.
-type 'google.protobuf.FieldOptions.JSType'() :: 'JS_NORMAL' | 'JS_STRING' | 'JS_NUMBER'.
-type 'mvccpb.Event.EventType'() :: 'PUT' | 'DELETE'.
-type 'authpb.Permission.Type'() :: 'READ' | 'WRITE' | 'READWRITE'.
-export_type(['Etcd.RangeRequest.SortOrder'/0, 'Etcd.RangeRequest.SortTarget'/0, 'Etcd.Compare.CompareResult'/0, 'Etcd.Compare.CompareTarget'/0, 'Etcd.WatchCreateRequest.FilterType'/0, 'Etcd.AlarmType'/0, 'Etcd.AlarmRequest.AlarmAction'/0, 'Etcd.HealthCheckResponse.ServingStatus'/0, 'google.protobuf.FieldDescriptorProto.Type'/0, 'google.protobuf.FieldDescriptorProto.Label'/0, 'google.protobuf.FileOptions.OptimizeMode'/0, 'google.protobuf.FieldOptions.CType'/0, 'google.protobuf.FieldOptions.JSType'/0, 'mvccpb.Event.EventType'/0, 'authpb.Permission.Type'/0]).

%% message types
-type 'Etcd.ResponseHeader'() ::
      #{cluster_id              => non_neg_integer(), % = 1, 64 bits
        member_id               => non_neg_integer(), % = 2, 64 bits
        revision                => integer(),       % = 3, 64 bits
        raft_term               => non_neg_integer() % = 4, 64 bits
       }.

-type 'Etcd.RangeRequest'() ::
      #{key                     => iodata(),        % = 1
        range_end               => iodata(),        % = 2
        limit                   => integer(),       % = 3, 64 bits
        revision                => integer(),       % = 4, 64 bits
        sort_order              => 'NONE' | 'ASCEND' | 'DESCEND' | integer(), % = 5, enum Etcd.RangeRequest.SortOrder
        sort_target             => 'KEY' | 'VERSION' | 'CREATE' | 'MOD' | 'VALUE' | integer(), % = 6, enum Etcd.RangeRequest.SortTarget
        serializable            => boolean() | 0 | 1, % = 7
        keys_only               => boolean() | 0 | 1, % = 8
        count_only              => boolean() | 0 | 1, % = 9
        min_mod_revision        => integer(),       % = 10, 64 bits
        max_mod_revision        => integer(),       % = 11, 64 bits
        min_create_revision     => integer(),       % = 12, 64 bits
        max_create_revision     => integer()        % = 13, 64 bits
       }.

-type 'Etcd.RangeResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'(), % = 1
        kvs                     => ['mvccpb.KeyValue'()], % = 2
        more                    => boolean() | 0 | 1, % = 3
        count                   => integer()        % = 4, 64 bits
       }.

-type 'Etcd.PutRequest'() ::
      #{key                     => iodata(),        % = 1
        value                   => iodata(),        % = 2
        lease                   => integer(),       % = 3, 64 bits
        prev_kv                 => boolean() | 0 | 1, % = 4
        ignore_value            => boolean() | 0 | 1, % = 5
        ignore_lease            => boolean() | 0 | 1 % = 6
       }.

-type 'Etcd.PutResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'(), % = 1
        prev_kv                 => 'mvccpb.KeyValue'() % = 2
       }.

-type 'Etcd.DeleteRangeRequest'() ::
      #{key                     => iodata(),        % = 1
        range_end               => iodata(),        % = 2
        prev_kv                 => boolean() | 0 | 1 % = 3
       }.

-type 'Etcd.DeleteRangeResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'(), % = 1
        deleted                 => integer(),       % = 2, 64 bits
        prev_kvs                => ['mvccpb.KeyValue'()] % = 3
       }.

-type 'Etcd.RequestOp'() ::
      #{request                 => {request_range, 'Etcd.RangeRequest'()} | {request_put, 'Etcd.PutRequest'()} | {request_delete_range, 'Etcd.DeleteRangeRequest'()} | {request_txn, 'Etcd.TxnRequest'()} % oneof
       }.

-type 'Etcd.ResponseOp'() ::
      #{response                => {response_range, 'Etcd.RangeResponse'()} | {response_put, 'Etcd.PutResponse'()} | {response_delete_range, 'Etcd.DeleteRangeResponse'()} | {response_txn, 'Etcd.TxnResponse'()} % oneof
       }.

-type 'Etcd.Compare'() ::
      #{result                  => 'EQUAL' | 'GREATER' | 'LESS' | 'NOT_EQUAL' | integer(), % = 1, enum Etcd.Compare.CompareResult
        target                  => 'VERSION' | 'CREATE' | 'MOD' | 'VALUE' | 'LEASE' | integer(), % = 2, enum Etcd.Compare.CompareTarget
        key                     => iodata(),        % = 3
        target_union            => {version, integer()} | {create_revision, integer()} | {mod_revision, integer()} | {value, iodata()} | {lease, integer()}, % oneof
        range_end               => iodata()         % = 64
       }.

-type 'Etcd.TxnRequest'() ::
      #{compare                 => ['Etcd.Compare'()], % = 1
        success                 => ['Etcd.RequestOp'()], % = 2
        failure                 => ['Etcd.RequestOp'()] % = 3
       }.

-type 'Etcd.TxnResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'(), % = 1
        succeeded               => boolean() | 0 | 1, % = 2
        responses               => ['Etcd.ResponseOp'()] % = 3
       }.

-type 'Etcd.CompactionRequest'() ::
      #{revision                => integer(),       % = 1, 64 bits
        physical                => boolean() | 0 | 1 % = 2
       }.

-type 'Etcd.CompactionResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'() % = 1
       }.

-type 'Etcd.HashRequest'() ::
      #{
       }.

-type 'Etcd.HashKVRequest'() ::
      #{revision                => integer()        % = 1, 64 bits
       }.

-type 'Etcd.HashKVResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'(), % = 1
        hash                    => non_neg_integer(), % = 2, 32 bits
        compact_revision        => integer()        % = 3, 64 bits
       }.

-type 'Etcd.HashResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'(), % = 1
        hash                    => non_neg_integer() % = 2, 32 bits
       }.

-type 'Etcd.SnapshotRequest'() ::
      #{
       }.

-type 'Etcd.SnapshotResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'(), % = 1
        remaining_bytes         => non_neg_integer(), % = 2, 64 bits
        blob                    => iodata()         % = 3
       }.

-type 'Etcd.WatchRequest'() ::
      #{request_union           => {create_request, 'Etcd.WatchCreateRequest'()} | {cancel_request, 'Etcd.WatchCancelRequest'()} | {progress_request, 'Etcd.WatchProgressRequest'()} % oneof
       }.

-type 'Etcd.WatchCreateRequest'() ::
      #{key                     => iodata(),        % = 1
        range_end               => iodata(),        % = 2
        start_revision          => integer(),       % = 3, 64 bits
        progress_notify         => boolean() | 0 | 1, % = 4
        filters                 => ['NOPUT' | 'NODELETE' | integer()], % = 5, enum Etcd.WatchCreateRequest.FilterType
        prev_kv                 => boolean() | 0 | 1, % = 6
        watch_id                => integer(),       % = 7, 64 bits
        fragment                => boolean() | 0 | 1 % = 8
       }.

-type 'Etcd.WatchCancelRequest'() ::
      #{watch_id                => integer()        % = 1, 64 bits
       }.

-type 'Etcd.WatchProgressRequest'() ::
      #{
       }.

-type 'Etcd.WatchResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'(), % = 1
        watch_id                => integer(),       % = 2, 64 bits
        created                 => boolean() | 0 | 1, % = 3
        canceled                => boolean() | 0 | 1, % = 4
        compact_revision        => integer(),       % = 5, 64 bits
        cancel_reason           => iodata(),        % = 6
        fragment                => boolean() | 0 | 1, % = 7
        events                  => ['mvccpb.Event'()] % = 11
       }.

-type 'Etcd.LeaseGrantRequest'() ::
      #{'TTL'                   => integer(),       % = 1, 64 bits
        'ID'                    => integer()        % = 2, 64 bits
       }.

-type 'Etcd.LeaseGrantResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'(), % = 1
        'ID'                    => integer(),       % = 2, 64 bits
        'TTL'                   => integer(),       % = 3, 64 bits
        error                   => iodata()         % = 4
       }.

-type 'Etcd.LeaseRevokeRequest'() ::
      #{'ID'                    => integer()        % = 1, 64 bits
       }.

-type 'Etcd.LeaseRevokeResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'() % = 1
       }.

-type 'Etcd.LeaseCheckpoint'() ::
      #{'ID'                    => integer(),       % = 1, 64 bits
        remaining_TTL           => integer()        % = 2, 64 bits
       }.

-type 'Etcd.LeaseCheckpointRequest'() ::
      #{checkpoints             => ['Etcd.LeaseCheckpoint'()] % = 1
       }.

-type 'Etcd.LeaseCheckpointResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'() % = 1
       }.

-type 'Etcd.LeaseKeepAliveRequest'() ::
      #{'ID'                    => integer()        % = 1, 64 bits
       }.

-type 'Etcd.LeaseKeepAliveResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'(), % = 1
        'ID'                    => integer(),       % = 2, 64 bits
        'TTL'                   => integer()        % = 3, 64 bits
       }.

-type 'Etcd.LeaseTimeToLiveRequest'() ::
      #{'ID'                    => integer(),       % = 1, 64 bits
        keys                    => boolean() | 0 | 1 % = 2
       }.

-type 'Etcd.LeaseTimeToLiveResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'(), % = 1
        'ID'                    => integer(),       % = 2, 64 bits
        'TTL'                   => integer(),       % = 3, 64 bits
        grantedTTL              => integer(),       % = 4, 64 bits
        keys                    => [iodata()]       % = 5
       }.

-type 'Etcd.LeaseLeasesRequest'() ::
      #{
       }.

-type 'Etcd.LeaseStatus'() ::
      #{'ID'                    => integer()        % = 1, 64 bits
       }.

-type 'Etcd.LeaseLeasesResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'(), % = 1
        leases                  => ['Etcd.LeaseStatus'()] % = 2
       }.

-type 'Etcd.Member'() ::
      #{'ID'                    => non_neg_integer(), % = 1, 64 bits
        name                    => iodata(),        % = 2
        peerURLs                => [iodata()],      % = 3
        clientURLs              => [iodata()],      % = 4
        isLearner               => boolean() | 0 | 1 % = 5
       }.

-type 'Etcd.MemberAddRequest'() ::
      #{peerURLs                => [iodata()],      % = 1
        isLearner               => boolean() | 0 | 1 % = 2
       }.

-type 'Etcd.MemberAddResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'(), % = 1
        member                  => 'Etcd.Member'(), % = 2
        members                 => ['Etcd.Member'()] % = 3
       }.

-type 'Etcd.MemberRemoveRequest'() ::
      #{'ID'                    => non_neg_integer() % = 1, 64 bits
       }.

-type 'Etcd.MemberRemoveResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'(), % = 1
        members                 => ['Etcd.Member'()] % = 2
       }.

-type 'Etcd.MemberUpdateRequest'() ::
      #{'ID'                    => non_neg_integer(), % = 1, 64 bits
        peerURLs                => [iodata()]       % = 2
       }.

-type 'Etcd.MemberUpdateResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'(), % = 1
        members                 => ['Etcd.Member'()] % = 2
       }.

-type 'Etcd.MemberListRequest'() ::
      #{
       }.

-type 'Etcd.MemberListResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'(), % = 1
        members                 => ['Etcd.Member'()] % = 2
       }.

-type 'Etcd.MemberPromoteRequest'() ::
      #{'ID'                    => non_neg_integer() % = 1, 64 bits
       }.

-type 'Etcd.MemberPromoteResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'(), % = 1
        members                 => ['Etcd.Member'()] % = 2
       }.

-type 'Etcd.DefragmentRequest'() ::
      #{
       }.

-type 'Etcd.DefragmentResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'() % = 1
       }.

-type 'Etcd.MoveLeaderRequest'() ::
      #{targetID                => non_neg_integer() % = 1, 64 bits
       }.

-type 'Etcd.MoveLeaderResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'() % = 1
       }.

-type 'Etcd.AlarmRequest'() ::
      #{action                  => 'GET' | 'ACTIVATE' | 'DEACTIVATE' | integer(), % = 1, enum Etcd.AlarmRequest.AlarmAction
        memberID                => non_neg_integer(), % = 2, 64 bits
        alarm                   => 'NONE' | 'NOSPACE' | 'CORRUPT' | integer() % = 3, enum Etcd.AlarmType
       }.

-type 'Etcd.AlarmMember'() ::
      #{memberID                => non_neg_integer(), % = 1, 64 bits
        alarm                   => 'NONE' | 'NOSPACE' | 'CORRUPT' | integer() % = 2, enum Etcd.AlarmType
       }.

-type 'Etcd.AlarmResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'(), % = 1
        alarms                  => ['Etcd.AlarmMember'()] % = 2
       }.

-type 'Etcd.StatusRequest'() ::
      #{
       }.

-type 'Etcd.StatusResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'(), % = 1
        version                 => iodata(),        % = 2
        dbSize                  => integer(),       % = 3, 64 bits
        leader                  => non_neg_integer(), % = 4, 64 bits
        raftIndex               => non_neg_integer(), % = 5, 64 bits
        raftTerm                => non_neg_integer(), % = 6, 64 bits
        raftAppliedIndex        => non_neg_integer(), % = 7, 64 bits
        errors                  => [iodata()],      % = 8
        dbSizeInUse             => integer(),       % = 9, 64 bits
        isLearner               => boolean() | 0 | 1 % = 10
       }.

-type 'Etcd.AuthEnableRequest'() ::
      #{
       }.

-type 'Etcd.AuthDisableRequest'() ::
      #{
       }.

-type 'Etcd.AuthenticateRequest'() ::
      #{name                    => iodata(),        % = 1
        password                => iodata()         % = 2
       }.

-type 'Etcd.AuthUserAddRequest'() ::
      #{name                    => iodata(),        % = 1
        password                => iodata(),        % = 2
        options                 => 'authpb.UserAddOptions'() % = 3
       }.

-type 'Etcd.AuthUserGetRequest'() ::
      #{name                    => iodata()         % = 1
       }.

-type 'Etcd.AuthUserDeleteRequest'() ::
      #{name                    => iodata()         % = 1
       }.

-type 'Etcd.AuthUserChangePasswordRequest'() ::
      #{name                    => iodata(),        % = 1
        password                => iodata()         % = 2
       }.

-type 'Etcd.AuthUserGrantRoleRequest'() ::
      #{user                    => iodata(),        % = 1
        role                    => iodata()         % = 2
       }.

-type 'Etcd.AuthUserRevokeRoleRequest'() ::
      #{name                    => iodata(),        % = 1
        role                    => iodata()         % = 2
       }.

-type 'Etcd.AuthRoleAddRequest'() ::
      #{name                    => iodata()         % = 1
       }.

-type 'Etcd.AuthRoleGetRequest'() ::
      #{role                    => iodata()         % = 1
       }.

-type 'Etcd.AuthUserListRequest'() ::
      #{
       }.

-type 'Etcd.AuthRoleListRequest'() ::
      #{
       }.

-type 'Etcd.AuthRoleDeleteRequest'() ::
      #{role                    => iodata()         % = 1
       }.

-type 'Etcd.AuthRoleGrantPermissionRequest'() ::
      #{name                    => iodata(),        % = 1
        perm                    => 'authpb.Permission'() % = 2
       }.

-type 'Etcd.AuthRoleRevokePermissionRequest'() ::
      #{role                    => iodata(),        % = 1
        key                     => iodata(),        % = 2
        range_end               => iodata()         % = 3
       }.

-type 'Etcd.AuthEnableResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'() % = 1
       }.

-type 'Etcd.AuthDisableResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'() % = 1
       }.

-type 'Etcd.AuthenticateResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'(), % = 1
        token                   => iodata()         % = 2
       }.

-type 'Etcd.AuthUserAddResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'() % = 1
       }.

-type 'Etcd.AuthUserGetResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'(), % = 1
        roles                   => [iodata()]       % = 2
       }.

-type 'Etcd.AuthUserDeleteResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'() % = 1
       }.

-type 'Etcd.AuthUserChangePasswordResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'() % = 1
       }.

-type 'Etcd.AuthUserGrantRoleResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'() % = 1
       }.

-type 'Etcd.AuthUserRevokeRoleResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'() % = 1
       }.

-type 'Etcd.AuthRoleAddResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'() % = 1
       }.

-type 'Etcd.AuthRoleGetResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'(), % = 1
        perm                    => ['authpb.Permission'()] % = 2
       }.

-type 'Etcd.AuthRoleListResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'(), % = 1
        roles                   => [iodata()]       % = 2
       }.

-type 'Etcd.AuthUserListResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'(), % = 1
        users                   => [iodata()]       % = 2
       }.

-type 'Etcd.AuthRoleDeleteResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'() % = 1
       }.

-type 'Etcd.AuthRoleGrantPermissionResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'() % = 1
       }.

-type 'Etcd.AuthRoleRevokePermissionResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'() % = 1
       }.

-type 'Etcd.HealthCheckRequest'() ::
      #{service                 => iodata()         % = 1
       }.

-type 'Etcd.HealthCheckResponse'() ::
      #{status                  => 'UNKNOWN' | 'SERVING' | 'NOT_SERVING' | 'SERVICE_UNKNOWN' | integer() % = 1, enum Etcd.HealthCheckResponse.ServingStatus
       }.

-type 'Etcd.LockRequest'() ::
      #{name                    => iodata(),        % = 1
        lease                   => integer()        % = 2, 64 bits
       }.

-type 'Etcd.LockResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'(), % = 1
        key                     => iodata()         % = 2
       }.

-type 'Etcd.UnlockRequest'() ::
      #{key                     => iodata()         % = 1
       }.

-type 'Etcd.UnlockResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'() % = 1
       }.

-type 'Etcd.CampaignRequest'() ::
      #{name                    => iodata(),        % = 1
        lease                   => integer(),       % = 2, 64 bits
        value                   => iodata()         % = 3
       }.

-type 'Etcd.CampaignResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'(), % = 1
        leader                  => 'Etcd.LeaderKey'() % = 2
       }.

-type 'Etcd.LeaderKey'() ::
      #{name                    => iodata(),        % = 1
        key                     => iodata(),        % = 2
        rev                     => integer(),       % = 3, 64 bits
        lease                   => integer()        % = 4, 64 bits
       }.

-type 'Etcd.LeaderRequest'() ::
      #{name                    => iodata()         % = 1
       }.

-type 'Etcd.LeaderResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'(), % = 1
        kv                      => 'mvccpb.KeyValue'() % = 2
       }.

-type 'Etcd.ResignRequest'() ::
      #{leader                  => 'Etcd.LeaderKey'() % = 1
       }.

-type 'Etcd.ResignResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'() % = 1
       }.

-type 'Etcd.ProclaimRequest'() ::
      #{leader                  => 'Etcd.LeaderKey'(), % = 1
        value                   => iodata()         % = 2
       }.

-type 'Etcd.ProclaimResponse'() ::
      #{header                  => 'Etcd.ResponseHeader'() % = 1
       }.

-type 'google.protobuf.FileDescriptorSet'() ::
      #{file                    => ['google.protobuf.FileDescriptorProto'()] % = 1
       }.

-type 'google.protobuf.FileDescriptorProto'() ::
      #{name                    => iodata(),        % = 1
        package                 => iodata(),        % = 2
        dependency              => [iodata()],      % = 3
        public_dependency       => [integer()],     % = 10, 32 bits
        weak_dependency         => [integer()],     % = 11, 32 bits
        message_type            => ['google.protobuf.DescriptorProto'()], % = 4
        enum_type               => ['google.protobuf.EnumDescriptorProto'()], % = 5
        service                 => ['google.protobuf.ServiceDescriptorProto'()], % = 6
        extension               => ['google.protobuf.FieldDescriptorProto'()], % = 7
        options                 => 'google.protobuf.FileOptions'(), % = 8
        source_code_info        => 'google.protobuf.SourceCodeInfo'(), % = 9
        syntax                  => iodata()         % = 12
       }.

-type 'google.protobuf.DescriptorProto.ExtensionRange'() ::
      #{start                   => integer(),       % = 1, 32 bits
        'end'                   => integer()        % = 2, 32 bits
       }.

-type 'google.protobuf.DescriptorProto.ReservedRange'() ::
      #{start                   => integer(),       % = 1, 32 bits
        'end'                   => integer()        % = 2, 32 bits
       }.

-type 'google.protobuf.DescriptorProto'() ::
      #{name                    => iodata(),        % = 1
        field                   => ['google.protobuf.FieldDescriptorProto'()], % = 2
        extension               => ['google.protobuf.FieldDescriptorProto'()], % = 6
        nested_type             => ['google.protobuf.DescriptorProto'()], % = 3
        enum_type               => ['google.protobuf.EnumDescriptorProto'()], % = 4
        extension_range         => ['google.protobuf.DescriptorProto.ExtensionRange'()], % = 5
        oneof_decl              => ['google.protobuf.OneofDescriptorProto'()], % = 8
        options                 => 'google.protobuf.MessageOptions'(), % = 7
        reserved_range          => ['google.protobuf.DescriptorProto.ReservedRange'()], % = 9
        reserved_name           => [iodata()]       % = 10
       }.

-type 'google.protobuf.FieldDescriptorProto'() ::
      #{name                    => iodata(),        % = 1
        number                  => integer(),       % = 3, 32 bits
        label                   => 'LABEL_OPTIONAL' | 'LABEL_REQUIRED' | 'LABEL_REPEATED' | integer(), % = 4, enum google.protobuf.FieldDescriptorProto.Label
        type                    => 'TYPE_DOUBLE' | 'TYPE_FLOAT' | 'TYPE_INT64' | 'TYPE_UINT64' | 'TYPE_INT32' | 'TYPE_FIXED64' | 'TYPE_FIXED32' | 'TYPE_BOOL' | 'TYPE_STRING' | 'TYPE_GROUP' | 'TYPE_MESSAGE' | 'TYPE_BYTES' | 'TYPE_UINT32' | 'TYPE_ENUM' | 'TYPE_SFIXED32' | 'TYPE_SFIXED64' | 'TYPE_SINT32' | 'TYPE_SINT64' | integer(), % = 5, enum google.protobuf.FieldDescriptorProto.Type
        type_name               => iodata(),        % = 6
        extendee                => iodata(),        % = 2
        default_value           => iodata(),        % = 7
        oneof_index             => integer(),       % = 9, 32 bits
        json_name               => iodata(),        % = 10
        options                 => 'google.protobuf.FieldOptions'() % = 8
       }.

-type 'google.protobuf.OneofDescriptorProto'() ::
      #{name                    => iodata()         % = 1
       }.

-type 'google.protobuf.EnumDescriptorProto'() ::
      #{name                    => iodata(),        % = 1
        value                   => ['google.protobuf.EnumValueDescriptorProto'()], % = 2
        options                 => 'google.protobuf.EnumOptions'() % = 3
       }.

-type 'google.protobuf.EnumValueDescriptorProto'() ::
      #{name                    => iodata(),        % = 1
        number                  => integer(),       % = 2, 32 bits
        options                 => 'google.protobuf.EnumValueOptions'() % = 3
       }.

-type 'google.protobuf.ServiceDescriptorProto'() ::
      #{name                    => iodata(),        % = 1
        method                  => ['google.protobuf.MethodDescriptorProto'()], % = 2
        options                 => 'google.protobuf.ServiceOptions'() % = 3
       }.

-type 'google.protobuf.MethodDescriptorProto'() ::
      #{name                    => iodata(),        % = 1
        input_type              => iodata(),        % = 2
        output_type             => iodata(),        % = 3
        options                 => 'google.protobuf.MethodOptions'(), % = 4
        client_streaming        => boolean() | 0 | 1, % = 5
        server_streaming        => boolean() | 0 | 1 % = 6
       }.

-type 'google.protobuf.FileOptions'() ::
      #{java_package            => iodata(),        % = 1
        java_outer_classname    => iodata(),        % = 8
        java_multiple_files     => boolean() | 0 | 1, % = 10
        java_generate_equals_and_hash => boolean() | 0 | 1, % = 20
        java_string_check_utf8  => boolean() | 0 | 1, % = 27
        optimize_for            => 'SPEED' | 'CODE_SIZE' | 'LITE_RUNTIME' | integer(), % = 9, enum google.protobuf.FileOptions.OptimizeMode
        go_package              => iodata(),        % = 11
        cc_generic_services     => boolean() | 0 | 1, % = 16
        java_generic_services   => boolean() | 0 | 1, % = 17
        py_generic_services     => boolean() | 0 | 1, % = 18
        deprecated              => boolean() | 0 | 1, % = 23
        cc_enable_arenas        => boolean() | 0 | 1, % = 31
        objc_class_prefix       => iodata(),        % = 36
        csharp_namespace        => iodata(),        % = 37
        javanano_use_deprecated_package => boolean() | 0 | 1, % = 38
        uninterpreted_option    => ['google.protobuf.UninterpretedOption'()], % = 999
        goproto_getters_all     => boolean() | 0 | 1, % = 63001
        goproto_enum_prefix_all => boolean() | 0 | 1, % = 63002
        goproto_stringer_all    => boolean() | 0 | 1, % = 63003
        verbose_equal_all       => boolean() | 0 | 1, % = 63004
        face_all                => boolean() | 0 | 1, % = 63005
        gostring_all            => boolean() | 0 | 1, % = 63006
        populate_all            => boolean() | 0 | 1, % = 63007
        stringer_all            => boolean() | 0 | 1, % = 63008
        onlyone_all             => boolean() | 0 | 1, % = 63009
        equal_all               => boolean() | 0 | 1, % = 63013
        description_all         => boolean() | 0 | 1, % = 63014
        testgen_all             => boolean() | 0 | 1, % = 63015
        benchgen_all            => boolean() | 0 | 1, % = 63016
        marshaler_all           => boolean() | 0 | 1, % = 63017
        unmarshaler_all         => boolean() | 0 | 1, % = 63018
        stable_marshaler_all    => boolean() | 0 | 1, % = 63019
        sizer_all               => boolean() | 0 | 1, % = 63020
        goproto_enum_stringer_all => boolean() | 0 | 1, % = 63021
        enum_stringer_all       => boolean() | 0 | 1, % = 63022
        unsafe_marshaler_all    => boolean() | 0 | 1, % = 63023
        unsafe_unmarshaler_all  => boolean() | 0 | 1, % = 63024
        goproto_extensions_map_all => boolean() | 0 | 1, % = 63025
        goproto_unrecognized_all => boolean() | 0 | 1, % = 63026
        gogoproto_import        => boolean() | 0 | 1, % = 63027
        protosizer_all          => boolean() | 0 | 1, % = 63028
        compare_all             => boolean() | 0 | 1 % = 63029
       }.

-type 'google.protobuf.MessageOptions'() ::
      #{message_set_wire_format => boolean() | 0 | 1, % = 1
        no_standard_descriptor_accessor => boolean() | 0 | 1, % = 2
        deprecated              => boolean() | 0 | 1, % = 3
        map_entry               => boolean() | 0 | 1, % = 7
        uninterpreted_option    => ['google.protobuf.UninterpretedOption'()], % = 999
        goproto_getters         => boolean() | 0 | 1, % = 64001
        goproto_stringer        => boolean() | 0 | 1, % = 64003
        verbose_equal           => boolean() | 0 | 1, % = 64004
        face                    => boolean() | 0 | 1, % = 64005
        gostring                => boolean() | 0 | 1, % = 64006
        populate                => boolean() | 0 | 1, % = 64007
        stringer                => boolean() | 0 | 1, % = 67008
        onlyone                 => boolean() | 0 | 1, % = 64009
        equal                   => boolean() | 0 | 1, % = 64013
        description             => boolean() | 0 | 1, % = 64014
        testgen                 => boolean() | 0 | 1, % = 64015
        benchgen                => boolean() | 0 | 1, % = 64016
        marshaler               => boolean() | 0 | 1, % = 64017
        unmarshaler             => boolean() | 0 | 1, % = 64018
        stable_marshaler        => boolean() | 0 | 1, % = 64019
        sizer                   => boolean() | 0 | 1, % = 64020
        unsafe_marshaler        => boolean() | 0 | 1, % = 64023
        unsafe_unmarshaler      => boolean() | 0 | 1, % = 64024
        goproto_extensions_map  => boolean() | 0 | 1, % = 64025
        goproto_unrecognized    => boolean() | 0 | 1, % = 64026
        protosizer              => boolean() | 0 | 1, % = 64028
        compare                 => boolean() | 0 | 1 % = 64029
       }.

-type 'google.protobuf.FieldOptions'() ::
      #{ctype                   => 'STRING' | 'CORD' | 'STRING_PIECE' | integer(), % = 1, enum google.protobuf.FieldOptions.CType
        packed                  => boolean() | 0 | 1, % = 2
        jstype                  => 'JS_NORMAL' | 'JS_STRING' | 'JS_NUMBER' | integer(), % = 6, enum google.protobuf.FieldOptions.JSType
        lazy                    => boolean() | 0 | 1, % = 5
        deprecated              => boolean() | 0 | 1, % = 3
        weak                    => boolean() | 0 | 1, % = 10
        uninterpreted_option    => ['google.protobuf.UninterpretedOption'()], % = 999
        nullable                => boolean() | 0 | 1, % = 65001
        embed                   => boolean() | 0 | 1, % = 65002
        customtype              => iodata(),        % = 65003
        customname              => iodata(),        % = 65004
        jsontag                 => iodata(),        % = 65005
        moretags                => iodata(),        % = 65006
        casttype                => iodata(),        % = 65007
        castkey                 => iodata(),        % = 65008
        castvalue               => iodata(),        % = 65009
        stdtime                 => boolean() | 0 | 1, % = 65010
        stdduration             => boolean() | 0 | 1 % = 65011
       }.

-type 'google.protobuf.EnumOptions'() ::
      #{allow_alias             => boolean() | 0 | 1, % = 2
        deprecated              => boolean() | 0 | 1, % = 3
        uninterpreted_option    => ['google.protobuf.UninterpretedOption'()], % = 999
        goproto_enum_prefix     => boolean() | 0 | 1, % = 62001
        goproto_enum_stringer   => boolean() | 0 | 1, % = 62021
        enum_stringer           => boolean() | 0 | 1, % = 62022
        enum_customname         => iodata()         % = 62023
       }.

-type 'google.protobuf.EnumValueOptions'() ::
      #{deprecated              => boolean() | 0 | 1, % = 1
        uninterpreted_option    => ['google.protobuf.UninterpretedOption'()], % = 999
        enumvalue_customname    => iodata()         % = 66001
       }.

-type 'google.protobuf.ServiceOptions'() ::
      #{deprecated              => boolean() | 0 | 1, % = 33
        uninterpreted_option    => ['google.protobuf.UninterpretedOption'()] % = 999
       }.

-type 'google.protobuf.MethodOptions'() ::
      #{deprecated              => boolean() | 0 | 1, % = 33
        uninterpreted_option    => ['google.protobuf.UninterpretedOption'()] % = 999
       }.

-type 'google.protobuf.UninterpretedOption.NamePart'() ::
      #{name_part               := iodata(),        % = 1
        is_extension            := boolean() | 0 | 1 % = 2
       }.

-type 'google.protobuf.UninterpretedOption'() ::
      #{name                    => ['google.protobuf.UninterpretedOption.NamePart'()], % = 2
        identifier_value        => iodata(),        % = 3
        positive_int_value      => non_neg_integer(), % = 4, 64 bits
        negative_int_value      => integer(),       % = 5, 64 bits
        double_value            => float() | integer() | infinity | '-infinity' | nan, % = 6
        string_value            => iodata(),        % = 7
        aggregate_value         => iodata()         % = 8
       }.

-type 'google.protobuf.SourceCodeInfo.Location'() ::
      #{path                    => [integer()],     % = 1, 32 bits
        span                    => [integer()],     % = 2, 32 bits
        leading_comments        => iodata(),        % = 3
        trailing_comments       => iodata(),        % = 4
        leading_detached_comments => [iodata()]     % = 6
       }.

-type 'google.protobuf.SourceCodeInfo'() ::
      #{location                => ['google.protobuf.SourceCodeInfo.Location'()] % = 1
       }.

-type 'google.protobuf.GeneratedCodeInfo.Annotation'() ::
      #{path                    => [integer()],     % = 1, 32 bits
        source_file             => iodata(),        % = 2
        'begin'                 => integer(),       % = 3, 32 bits
        'end'                   => integer()        % = 4, 32 bits
       }.

-type 'google.protobuf.GeneratedCodeInfo'() ::
      #{annotation              => ['google.protobuf.GeneratedCodeInfo.Annotation'()] % = 1
       }.

-type 'mvccpb.KeyValue'() ::
      #{key                     => iodata(),        % = 1
        create_revision         => integer(),       % = 2, 64 bits
        mod_revision            => integer(),       % = 3, 64 bits
        version                 => integer(),       % = 4, 64 bits
        value                   => iodata(),        % = 5
        lease                   => integer()        % = 6, 64 bits
       }.

-type 'mvccpb.Event'() ::
      #{type                    => 'PUT' | 'DELETE' | integer(), % = 1, enum mvccpb.Event.EventType
        kv                      => 'mvccpb.KeyValue'(), % = 2
        prev_kv                 => 'mvccpb.KeyValue'() % = 3
       }.

-type 'authpb.UserAddOptions'() ::
      #{no_password             => boolean() | 0 | 1 % = 1
       }.

-type 'authpb.User'() ::
      #{name                    => iodata(),        % = 1
        password                => iodata(),        % = 2
        roles                   => [iodata()],      % = 3
        options                 => 'authpb.UserAddOptions'() % = 4
       }.

-type 'authpb.Permission'() ::
      #{permType                => 'READ' | 'WRITE' | 'READWRITE' | integer(), % = 1, enum authpb.Permission.Type
        key                     => iodata(),        % = 2
        range_end               => iodata()         % = 3
       }.

-type 'authpb.Role'() ::
      #{name                    => iodata(),        % = 1
        keyPermission           => ['authpb.Permission'()] % = 2
       }.

-export_type(['Etcd.ResponseHeader'/0, 'Etcd.RangeRequest'/0, 'Etcd.RangeResponse'/0, 'Etcd.PutRequest'/0, 'Etcd.PutResponse'/0, 'Etcd.DeleteRangeRequest'/0, 'Etcd.DeleteRangeResponse'/0, 'Etcd.RequestOp'/0, 'Etcd.ResponseOp'/0, 'Etcd.Compare'/0, 'Etcd.TxnRequest'/0, 'Etcd.TxnResponse'/0, 'Etcd.CompactionRequest'/0, 'Etcd.CompactionResponse'/0, 'Etcd.HashRequest'/0, 'Etcd.HashKVRequest'/0, 'Etcd.HashKVResponse'/0, 'Etcd.HashResponse'/0, 'Etcd.SnapshotRequest'/0, 'Etcd.SnapshotResponse'/0, 'Etcd.WatchRequest'/0, 'Etcd.WatchCreateRequest'/0, 'Etcd.WatchCancelRequest'/0, 'Etcd.WatchProgressRequest'/0, 'Etcd.WatchResponse'/0, 'Etcd.LeaseGrantRequest'/0, 'Etcd.LeaseGrantResponse'/0, 'Etcd.LeaseRevokeRequest'/0, 'Etcd.LeaseRevokeResponse'/0, 'Etcd.LeaseCheckpoint'/0, 'Etcd.LeaseCheckpointRequest'/0, 'Etcd.LeaseCheckpointResponse'/0, 'Etcd.LeaseKeepAliveRequest'/0, 'Etcd.LeaseKeepAliveResponse'/0, 'Etcd.LeaseTimeToLiveRequest'/0, 'Etcd.LeaseTimeToLiveResponse'/0, 'Etcd.LeaseLeasesRequest'/0, 'Etcd.LeaseStatus'/0, 'Etcd.LeaseLeasesResponse'/0, 'Etcd.Member'/0, 'Etcd.MemberAddRequest'/0, 'Etcd.MemberAddResponse'/0, 'Etcd.MemberRemoveRequest'/0, 'Etcd.MemberRemoveResponse'/0, 'Etcd.MemberUpdateRequest'/0, 'Etcd.MemberUpdateResponse'/0, 'Etcd.MemberListRequest'/0, 'Etcd.MemberListResponse'/0, 'Etcd.MemberPromoteRequest'/0, 'Etcd.MemberPromoteResponse'/0, 'Etcd.DefragmentRequest'/0, 'Etcd.DefragmentResponse'/0, 'Etcd.MoveLeaderRequest'/0, 'Etcd.MoveLeaderResponse'/0, 'Etcd.AlarmRequest'/0, 'Etcd.AlarmMember'/0, 'Etcd.AlarmResponse'/0, 'Etcd.StatusRequest'/0, 'Etcd.StatusResponse'/0, 'Etcd.AuthEnableRequest'/0, 'Etcd.AuthDisableRequest'/0, 'Etcd.AuthenticateRequest'/0, 'Etcd.AuthUserAddRequest'/0, 'Etcd.AuthUserGetRequest'/0, 'Etcd.AuthUserDeleteRequest'/0, 'Etcd.AuthUserChangePasswordRequest'/0, 'Etcd.AuthUserGrantRoleRequest'/0, 'Etcd.AuthUserRevokeRoleRequest'/0, 'Etcd.AuthRoleAddRequest'/0, 'Etcd.AuthRoleGetRequest'/0, 'Etcd.AuthUserListRequest'/0, 'Etcd.AuthRoleListRequest'/0, 'Etcd.AuthRoleDeleteRequest'/0, 'Etcd.AuthRoleGrantPermissionRequest'/0, 'Etcd.AuthRoleRevokePermissionRequest'/0, 'Etcd.AuthEnableResponse'/0, 'Etcd.AuthDisableResponse'/0, 'Etcd.AuthenticateResponse'/0, 'Etcd.AuthUserAddResponse'/0, 'Etcd.AuthUserGetResponse'/0, 'Etcd.AuthUserDeleteResponse'/0, 'Etcd.AuthUserChangePasswordResponse'/0, 'Etcd.AuthUserGrantRoleResponse'/0, 'Etcd.AuthUserRevokeRoleResponse'/0, 'Etcd.AuthRoleAddResponse'/0, 'Etcd.AuthRoleGetResponse'/0, 'Etcd.AuthRoleListResponse'/0, 'Etcd.AuthUserListResponse'/0, 'Etcd.AuthRoleDeleteResponse'/0, 'Etcd.AuthRoleGrantPermissionResponse'/0, 'Etcd.AuthRoleRevokePermissionResponse'/0, 'Etcd.HealthCheckRequest'/0, 'Etcd.HealthCheckResponse'/0, 'Etcd.LockRequest'/0, 'Etcd.LockResponse'/0, 'Etcd.UnlockRequest'/0, 'Etcd.UnlockResponse'/0, 'Etcd.CampaignRequest'/0, 'Etcd.CampaignResponse'/0, 'Etcd.LeaderKey'/0, 'Etcd.LeaderRequest'/0, 'Etcd.LeaderResponse'/0, 'Etcd.ResignRequest'/0, 'Etcd.ResignResponse'/0, 'Etcd.ProclaimRequest'/0, 'Etcd.ProclaimResponse'/0, 'google.protobuf.FileDescriptorSet'/0, 'google.protobuf.FileDescriptorProto'/0, 'google.protobuf.DescriptorProto.ExtensionRange'/0, 'google.protobuf.DescriptorProto.ReservedRange'/0, 'google.protobuf.DescriptorProto'/0, 'google.protobuf.FieldDescriptorProto'/0, 'google.protobuf.OneofDescriptorProto'/0, 'google.protobuf.EnumDescriptorProto'/0, 'google.protobuf.EnumValueDescriptorProto'/0, 'google.protobuf.ServiceDescriptorProto'/0, 'google.protobuf.MethodDescriptorProto'/0, 'google.protobuf.FileOptions'/0, 'google.protobuf.MessageOptions'/0, 'google.protobuf.FieldOptions'/0, 'google.protobuf.EnumOptions'/0, 'google.protobuf.EnumValueOptions'/0, 'google.protobuf.ServiceOptions'/0, 'google.protobuf.MethodOptions'/0, 'google.protobuf.UninterpretedOption.NamePart'/0, 'google.protobuf.UninterpretedOption'/0, 'google.protobuf.SourceCodeInfo.Location'/0, 'google.protobuf.SourceCodeInfo'/0, 'google.protobuf.GeneratedCodeInfo.Annotation'/0, 'google.protobuf.GeneratedCodeInfo'/0, 'mvccpb.KeyValue'/0, 'mvccpb.Event'/0, 'authpb.UserAddOptions'/0, 'authpb.User'/0, 'authpb.Permission'/0, 'authpb.Role'/0]).

-spec encode_msg('Etcd.ResponseHeader'() | 'Etcd.RangeRequest'() | 'Etcd.RangeResponse'() | 'Etcd.PutRequest'() | 'Etcd.PutResponse'() | 'Etcd.DeleteRangeRequest'() | 'Etcd.DeleteRangeResponse'() | 'Etcd.RequestOp'() | 'Etcd.ResponseOp'() | 'Etcd.Compare'() | 'Etcd.TxnRequest'() | 'Etcd.TxnResponse'() | 'Etcd.CompactionRequest'() | 'Etcd.CompactionResponse'() | 'Etcd.HashRequest'() | 'Etcd.HashKVRequest'() | 'Etcd.HashKVResponse'() | 'Etcd.HashResponse'() | 'Etcd.SnapshotRequest'() | 'Etcd.SnapshotResponse'() | 'Etcd.WatchRequest'() | 'Etcd.WatchCreateRequest'() | 'Etcd.WatchCancelRequest'() | 'Etcd.WatchProgressRequest'() | 'Etcd.WatchResponse'() | 'Etcd.LeaseGrantRequest'() | 'Etcd.LeaseGrantResponse'() | 'Etcd.LeaseRevokeRequest'() | 'Etcd.LeaseRevokeResponse'() | 'Etcd.LeaseCheckpoint'() | 'Etcd.LeaseCheckpointRequest'() | 'Etcd.LeaseCheckpointResponse'() | 'Etcd.LeaseKeepAliveRequest'() | 'Etcd.LeaseKeepAliveResponse'() | 'Etcd.LeaseTimeToLiveRequest'() | 'Etcd.LeaseTimeToLiveResponse'() | 'Etcd.LeaseLeasesRequest'() | 'Etcd.LeaseStatus'() | 'Etcd.LeaseLeasesResponse'() | 'Etcd.Member'() | 'Etcd.MemberAddRequest'() | 'Etcd.MemberAddResponse'() | 'Etcd.MemberRemoveRequest'() | 'Etcd.MemberRemoveResponse'() | 'Etcd.MemberUpdateRequest'() | 'Etcd.MemberUpdateResponse'() | 'Etcd.MemberListRequest'() | 'Etcd.MemberListResponse'() | 'Etcd.MemberPromoteRequest'() | 'Etcd.MemberPromoteResponse'() | 'Etcd.DefragmentRequest'() | 'Etcd.DefragmentResponse'() | 'Etcd.MoveLeaderRequest'() | 'Etcd.MoveLeaderResponse'() | 'Etcd.AlarmRequest'() | 'Etcd.AlarmMember'() | 'Etcd.AlarmResponse'() | 'Etcd.StatusRequest'() | 'Etcd.StatusResponse'() | 'Etcd.AuthEnableRequest'() | 'Etcd.AuthDisableRequest'() | 'Etcd.AuthenticateRequest'() | 'Etcd.AuthUserAddRequest'() | 'Etcd.AuthUserGetRequest'() | 'Etcd.AuthUserDeleteRequest'() | 'Etcd.AuthUserChangePasswordRequest'() | 'Etcd.AuthUserGrantRoleRequest'() | 'Etcd.AuthUserRevokeRoleRequest'() | 'Etcd.AuthRoleAddRequest'() | 'Etcd.AuthRoleGetRequest'() | 'Etcd.AuthUserListRequest'() | 'Etcd.AuthRoleListRequest'() | 'Etcd.AuthRoleDeleteRequest'() | 'Etcd.AuthRoleGrantPermissionRequest'() | 'Etcd.AuthRoleRevokePermissionRequest'() | 'Etcd.AuthEnableResponse'() | 'Etcd.AuthDisableResponse'() | 'Etcd.AuthenticateResponse'() | 'Etcd.AuthUserAddResponse'() | 'Etcd.AuthUserGetResponse'() | 'Etcd.AuthUserDeleteResponse'() | 'Etcd.AuthUserChangePasswordResponse'() | 'Etcd.AuthUserGrantRoleResponse'() | 'Etcd.AuthUserRevokeRoleResponse'() | 'Etcd.AuthRoleAddResponse'() | 'Etcd.AuthRoleGetResponse'() | 'Etcd.AuthRoleListResponse'() | 'Etcd.AuthUserListResponse'() | 'Etcd.AuthRoleDeleteResponse'() | 'Etcd.AuthRoleGrantPermissionResponse'() | 'Etcd.AuthRoleRevokePermissionResponse'() | 'Etcd.HealthCheckRequest'() | 'Etcd.HealthCheckResponse'() | 'Etcd.LockRequest'() | 'Etcd.LockResponse'() | 'Etcd.UnlockRequest'() | 'Etcd.UnlockResponse'() | 'Etcd.CampaignRequest'() | 'Etcd.CampaignResponse'() | 'Etcd.LeaderKey'() | 'Etcd.LeaderRequest'() | 'Etcd.LeaderResponse'() | 'Etcd.ResignRequest'() | 'Etcd.ResignResponse'() | 'Etcd.ProclaimRequest'() | 'Etcd.ProclaimResponse'() | 'google.protobuf.FileDescriptorSet'() | 'google.protobuf.FileDescriptorProto'() | 'google.protobuf.DescriptorProto.ExtensionRange'() | 'google.protobuf.DescriptorProto.ReservedRange'() | 'google.protobuf.DescriptorProto'() | 'google.protobuf.FieldDescriptorProto'() | 'google.protobuf.OneofDescriptorProto'() | 'google.protobuf.EnumDescriptorProto'() | 'google.protobuf.EnumValueDescriptorProto'() | 'google.protobuf.ServiceDescriptorProto'() | 'google.protobuf.MethodDescriptorProto'() | 'google.protobuf.FileOptions'() | 'google.protobuf.MessageOptions'() | 'google.protobuf.FieldOptions'() | 'google.protobuf.EnumOptions'() | 'google.protobuf.EnumValueOptions'() | 'google.protobuf.ServiceOptions'() | 'google.protobuf.MethodOptions'() | 'google.protobuf.UninterpretedOption.NamePart'() | 'google.protobuf.UninterpretedOption'() | 'google.protobuf.SourceCodeInfo.Location'() | 'google.protobuf.SourceCodeInfo'() | 'google.protobuf.GeneratedCodeInfo.Annotation'() | 'google.protobuf.GeneratedCodeInfo'() | 'mvccpb.KeyValue'() | 'mvccpb.Event'() | 'authpb.UserAddOptions'() | 'authpb.User'() | 'authpb.Permission'() | 'authpb.Role'(), atom()) -> binary().
encode_msg(Msg, MsgName) when is_atom(MsgName) ->
    encode_msg(Msg, MsgName, []).

-spec encode_msg('Etcd.ResponseHeader'() | 'Etcd.RangeRequest'() | 'Etcd.RangeResponse'() | 'Etcd.PutRequest'() | 'Etcd.PutResponse'() | 'Etcd.DeleteRangeRequest'() | 'Etcd.DeleteRangeResponse'() | 'Etcd.RequestOp'() | 'Etcd.ResponseOp'() | 'Etcd.Compare'() | 'Etcd.TxnRequest'() | 'Etcd.TxnResponse'() | 'Etcd.CompactionRequest'() | 'Etcd.CompactionResponse'() | 'Etcd.HashRequest'() | 'Etcd.HashKVRequest'() | 'Etcd.HashKVResponse'() | 'Etcd.HashResponse'() | 'Etcd.SnapshotRequest'() | 'Etcd.SnapshotResponse'() | 'Etcd.WatchRequest'() | 'Etcd.WatchCreateRequest'() | 'Etcd.WatchCancelRequest'() | 'Etcd.WatchProgressRequest'() | 'Etcd.WatchResponse'() | 'Etcd.LeaseGrantRequest'() | 'Etcd.LeaseGrantResponse'() | 'Etcd.LeaseRevokeRequest'() | 'Etcd.LeaseRevokeResponse'() | 'Etcd.LeaseCheckpoint'() | 'Etcd.LeaseCheckpointRequest'() | 'Etcd.LeaseCheckpointResponse'() | 'Etcd.LeaseKeepAliveRequest'() | 'Etcd.LeaseKeepAliveResponse'() | 'Etcd.LeaseTimeToLiveRequest'() | 'Etcd.LeaseTimeToLiveResponse'() | 'Etcd.LeaseLeasesRequest'() | 'Etcd.LeaseStatus'() | 'Etcd.LeaseLeasesResponse'() | 'Etcd.Member'() | 'Etcd.MemberAddRequest'() | 'Etcd.MemberAddResponse'() | 'Etcd.MemberRemoveRequest'() | 'Etcd.MemberRemoveResponse'() | 'Etcd.MemberUpdateRequest'() | 'Etcd.MemberUpdateResponse'() | 'Etcd.MemberListRequest'() | 'Etcd.MemberListResponse'() | 'Etcd.MemberPromoteRequest'() | 'Etcd.MemberPromoteResponse'() | 'Etcd.DefragmentRequest'() | 'Etcd.DefragmentResponse'() | 'Etcd.MoveLeaderRequest'() | 'Etcd.MoveLeaderResponse'() | 'Etcd.AlarmRequest'() | 'Etcd.AlarmMember'() | 'Etcd.AlarmResponse'() | 'Etcd.StatusRequest'() | 'Etcd.StatusResponse'() | 'Etcd.AuthEnableRequest'() | 'Etcd.AuthDisableRequest'() | 'Etcd.AuthenticateRequest'() | 'Etcd.AuthUserAddRequest'() | 'Etcd.AuthUserGetRequest'() | 'Etcd.AuthUserDeleteRequest'() | 'Etcd.AuthUserChangePasswordRequest'() | 'Etcd.AuthUserGrantRoleRequest'() | 'Etcd.AuthUserRevokeRoleRequest'() | 'Etcd.AuthRoleAddRequest'() | 'Etcd.AuthRoleGetRequest'() | 'Etcd.AuthUserListRequest'() | 'Etcd.AuthRoleListRequest'() | 'Etcd.AuthRoleDeleteRequest'() | 'Etcd.AuthRoleGrantPermissionRequest'() | 'Etcd.AuthRoleRevokePermissionRequest'() | 'Etcd.AuthEnableResponse'() | 'Etcd.AuthDisableResponse'() | 'Etcd.AuthenticateResponse'() | 'Etcd.AuthUserAddResponse'() | 'Etcd.AuthUserGetResponse'() | 'Etcd.AuthUserDeleteResponse'() | 'Etcd.AuthUserChangePasswordResponse'() | 'Etcd.AuthUserGrantRoleResponse'() | 'Etcd.AuthUserRevokeRoleResponse'() | 'Etcd.AuthRoleAddResponse'() | 'Etcd.AuthRoleGetResponse'() | 'Etcd.AuthRoleListResponse'() | 'Etcd.AuthUserListResponse'() | 'Etcd.AuthRoleDeleteResponse'() | 'Etcd.AuthRoleGrantPermissionResponse'() | 'Etcd.AuthRoleRevokePermissionResponse'() | 'Etcd.HealthCheckRequest'() | 'Etcd.HealthCheckResponse'() | 'Etcd.LockRequest'() | 'Etcd.LockResponse'() | 'Etcd.UnlockRequest'() | 'Etcd.UnlockResponse'() | 'Etcd.CampaignRequest'() | 'Etcd.CampaignResponse'() | 'Etcd.LeaderKey'() | 'Etcd.LeaderRequest'() | 'Etcd.LeaderResponse'() | 'Etcd.ResignRequest'() | 'Etcd.ResignResponse'() | 'Etcd.ProclaimRequest'() | 'Etcd.ProclaimResponse'() | 'google.protobuf.FileDescriptorSet'() | 'google.protobuf.FileDescriptorProto'() | 'google.protobuf.DescriptorProto.ExtensionRange'() | 'google.protobuf.DescriptorProto.ReservedRange'() | 'google.protobuf.DescriptorProto'() | 'google.protobuf.FieldDescriptorProto'() | 'google.protobuf.OneofDescriptorProto'() | 'google.protobuf.EnumDescriptorProto'() | 'google.protobuf.EnumValueDescriptorProto'() | 'google.protobuf.ServiceDescriptorProto'() | 'google.protobuf.MethodDescriptorProto'() | 'google.protobuf.FileOptions'() | 'google.protobuf.MessageOptions'() | 'google.protobuf.FieldOptions'() | 'google.protobuf.EnumOptions'() | 'google.protobuf.EnumValueOptions'() | 'google.protobuf.ServiceOptions'() | 'google.protobuf.MethodOptions'() | 'google.protobuf.UninterpretedOption.NamePart'() | 'google.protobuf.UninterpretedOption'() | 'google.protobuf.SourceCodeInfo.Location'() | 'google.protobuf.SourceCodeInfo'() | 'google.protobuf.GeneratedCodeInfo.Annotation'() | 'google.protobuf.GeneratedCodeInfo'() | 'mvccpb.KeyValue'() | 'mvccpb.Event'() | 'authpb.UserAddOptions'() | 'authpb.User'() | 'authpb.Permission'() | 'authpb.Role'(), atom(), list()) -> binary().
encode_msg(Msg, MsgName, Opts) ->
    case proplists:get_bool(verify, Opts) of
      true -> verify_msg(Msg, MsgName, Opts);
      false -> ok
    end,
    TrUserData = proplists:get_value(user_data, Opts),
    case MsgName of
      'Etcd.ResponseHeader' ->
	  'encode_msg_Etcd.ResponseHeader'(id(Msg, TrUserData),
					   TrUserData);
      'Etcd.RangeRequest' ->
	  'encode_msg_Etcd.RangeRequest'(id(Msg, TrUserData),
					 TrUserData);
      'Etcd.RangeResponse' ->
	  'encode_msg_Etcd.RangeResponse'(id(Msg, TrUserData),
					  TrUserData);
      'Etcd.PutRequest' ->
	  'encode_msg_Etcd.PutRequest'(id(Msg, TrUserData),
				       TrUserData);
      'Etcd.PutResponse' ->
	  'encode_msg_Etcd.PutResponse'(id(Msg, TrUserData),
					TrUserData);
      'Etcd.DeleteRangeRequest' ->
	  'encode_msg_Etcd.DeleteRangeRequest'(id(Msg,
						  TrUserData),
					       TrUserData);
      'Etcd.DeleteRangeResponse' ->
	  'encode_msg_Etcd.DeleteRangeResponse'(id(Msg,
						   TrUserData),
						TrUserData);
      'Etcd.RequestOp' ->
	  'encode_msg_Etcd.RequestOp'(id(Msg, TrUserData),
				      TrUserData);
      'Etcd.ResponseOp' ->
	  'encode_msg_Etcd.ResponseOp'(id(Msg, TrUserData),
				       TrUserData);
      'Etcd.Compare' ->
	  'encode_msg_Etcd.Compare'(id(Msg, TrUserData),
				    TrUserData);
      'Etcd.TxnRequest' ->
	  'encode_msg_Etcd.TxnRequest'(id(Msg, TrUserData),
				       TrUserData);
      'Etcd.TxnResponse' ->
	  'encode_msg_Etcd.TxnResponse'(id(Msg, TrUserData),
					TrUserData);
      'Etcd.CompactionRequest' ->
	  'encode_msg_Etcd.CompactionRequest'(id(Msg, TrUserData),
					      TrUserData);
      'Etcd.CompactionResponse' ->
	  'encode_msg_Etcd.CompactionResponse'(id(Msg,
						  TrUserData),
					       TrUserData);
      'Etcd.HashRequest' ->
	  'encode_msg_Etcd.HashRequest'(id(Msg, TrUserData),
					TrUserData);
      'Etcd.HashKVRequest' ->
	  'encode_msg_Etcd.HashKVRequest'(id(Msg, TrUserData),
					  TrUserData);
      'Etcd.HashKVResponse' ->
	  'encode_msg_Etcd.HashKVResponse'(id(Msg, TrUserData),
					   TrUserData);
      'Etcd.HashResponse' ->
	  'encode_msg_Etcd.HashResponse'(id(Msg, TrUserData),
					 TrUserData);
      'Etcd.SnapshotRequest' ->
	  'encode_msg_Etcd.SnapshotRequest'(id(Msg, TrUserData),
					    TrUserData);
      'Etcd.SnapshotResponse' ->
	  'encode_msg_Etcd.SnapshotResponse'(id(Msg, TrUserData),
					     TrUserData);
      'Etcd.WatchRequest' ->
	  'encode_msg_Etcd.WatchRequest'(id(Msg, TrUserData),
					 TrUserData);
      'Etcd.WatchCreateRequest' ->
	  'encode_msg_Etcd.WatchCreateRequest'(id(Msg,
						  TrUserData),
					       TrUserData);
      'Etcd.WatchCancelRequest' ->
	  'encode_msg_Etcd.WatchCancelRequest'(id(Msg,
						  TrUserData),
					       TrUserData);
      'Etcd.WatchProgressRequest' ->
	  'encode_msg_Etcd.WatchProgressRequest'(id(Msg,
						    TrUserData),
						 TrUserData);
      'Etcd.WatchResponse' ->
	  'encode_msg_Etcd.WatchResponse'(id(Msg, TrUserData),
					  TrUserData);
      'Etcd.LeaseGrantRequest' ->
	  'encode_msg_Etcd.LeaseGrantRequest'(id(Msg, TrUserData),
					      TrUserData);
      'Etcd.LeaseGrantResponse' ->
	  'encode_msg_Etcd.LeaseGrantResponse'(id(Msg,
						  TrUserData),
					       TrUserData);
      'Etcd.LeaseRevokeRequest' ->
	  'encode_msg_Etcd.LeaseRevokeRequest'(id(Msg,
						  TrUserData),
					       TrUserData);
      'Etcd.LeaseRevokeResponse' ->
	  'encode_msg_Etcd.LeaseRevokeResponse'(id(Msg,
						   TrUserData),
						TrUserData);
      'Etcd.LeaseCheckpoint' ->
	  'encode_msg_Etcd.LeaseCheckpoint'(id(Msg, TrUserData),
					    TrUserData);
      'Etcd.LeaseCheckpointRequest' ->
	  'encode_msg_Etcd.LeaseCheckpointRequest'(id(Msg,
						      TrUserData),
						   TrUserData);
      'Etcd.LeaseCheckpointResponse' ->
	  'encode_msg_Etcd.LeaseCheckpointResponse'(id(Msg,
						       TrUserData),
						    TrUserData);
      'Etcd.LeaseKeepAliveRequest' ->
	  'encode_msg_Etcd.LeaseKeepAliveRequest'(id(Msg,
						     TrUserData),
						  TrUserData);
      'Etcd.LeaseKeepAliveResponse' ->
	  'encode_msg_Etcd.LeaseKeepAliveResponse'(id(Msg,
						      TrUserData),
						   TrUserData);
      'Etcd.LeaseTimeToLiveRequest' ->
	  'encode_msg_Etcd.LeaseTimeToLiveRequest'(id(Msg,
						      TrUserData),
						   TrUserData);
      'Etcd.LeaseTimeToLiveResponse' ->
	  'encode_msg_Etcd.LeaseTimeToLiveResponse'(id(Msg,
						       TrUserData),
						    TrUserData);
      'Etcd.LeaseLeasesRequest' ->
	  'encode_msg_Etcd.LeaseLeasesRequest'(id(Msg,
						  TrUserData),
					       TrUserData);
      'Etcd.LeaseStatus' ->
	  'encode_msg_Etcd.LeaseStatus'(id(Msg, TrUserData),
					TrUserData);
      'Etcd.LeaseLeasesResponse' ->
	  'encode_msg_Etcd.LeaseLeasesResponse'(id(Msg,
						   TrUserData),
						TrUserData);
      'Etcd.Member' ->
	  'encode_msg_Etcd.Member'(id(Msg, TrUserData),
				   TrUserData);
      'Etcd.MemberAddRequest' ->
	  'encode_msg_Etcd.MemberAddRequest'(id(Msg, TrUserData),
					     TrUserData);
      'Etcd.MemberAddResponse' ->
	  'encode_msg_Etcd.MemberAddResponse'(id(Msg, TrUserData),
					      TrUserData);
      'Etcd.MemberRemoveRequest' ->
	  'encode_msg_Etcd.MemberRemoveRequest'(id(Msg,
						   TrUserData),
						TrUserData);
      'Etcd.MemberRemoveResponse' ->
	  'encode_msg_Etcd.MemberRemoveResponse'(id(Msg,
						    TrUserData),
						 TrUserData);
      'Etcd.MemberUpdateRequest' ->
	  'encode_msg_Etcd.MemberUpdateRequest'(id(Msg,
						   TrUserData),
						TrUserData);
      'Etcd.MemberUpdateResponse' ->
	  'encode_msg_Etcd.MemberUpdateResponse'(id(Msg,
						    TrUserData),
						 TrUserData);
      'Etcd.MemberListRequest' ->
	  'encode_msg_Etcd.MemberListRequest'(id(Msg, TrUserData),
					      TrUserData);
      'Etcd.MemberListResponse' ->
	  'encode_msg_Etcd.MemberListResponse'(id(Msg,
						  TrUserData),
					       TrUserData);
      'Etcd.MemberPromoteRequest' ->
	  'encode_msg_Etcd.MemberPromoteRequest'(id(Msg,
						    TrUserData),
						 TrUserData);
      'Etcd.MemberPromoteResponse' ->
	  'encode_msg_Etcd.MemberPromoteResponse'(id(Msg,
						     TrUserData),
						  TrUserData);
      'Etcd.DefragmentRequest' ->
	  'encode_msg_Etcd.DefragmentRequest'(id(Msg, TrUserData),
					      TrUserData);
      'Etcd.DefragmentResponse' ->
	  'encode_msg_Etcd.DefragmentResponse'(id(Msg,
						  TrUserData),
					       TrUserData);
      'Etcd.MoveLeaderRequest' ->
	  'encode_msg_Etcd.MoveLeaderRequest'(id(Msg, TrUserData),
					      TrUserData);
      'Etcd.MoveLeaderResponse' ->
	  'encode_msg_Etcd.MoveLeaderResponse'(id(Msg,
						  TrUserData),
					       TrUserData);
      'Etcd.AlarmRequest' ->
	  'encode_msg_Etcd.AlarmRequest'(id(Msg, TrUserData),
					 TrUserData);
      'Etcd.AlarmMember' ->
	  'encode_msg_Etcd.AlarmMember'(id(Msg, TrUserData),
					TrUserData);
      'Etcd.AlarmResponse' ->
	  'encode_msg_Etcd.AlarmResponse'(id(Msg, TrUserData),
					  TrUserData);
      'Etcd.StatusRequest' ->
	  'encode_msg_Etcd.StatusRequest'(id(Msg, TrUserData),
					  TrUserData);
      'Etcd.StatusResponse' ->
	  'encode_msg_Etcd.StatusResponse'(id(Msg, TrUserData),
					   TrUserData);
      'Etcd.AuthEnableRequest' ->
	  'encode_msg_Etcd.AuthEnableRequest'(id(Msg, TrUserData),
					      TrUserData);
      'Etcd.AuthDisableRequest' ->
	  'encode_msg_Etcd.AuthDisableRequest'(id(Msg,
						  TrUserData),
					       TrUserData);
      'Etcd.AuthenticateRequest' ->
	  'encode_msg_Etcd.AuthenticateRequest'(id(Msg,
						   TrUserData),
						TrUserData);
      'Etcd.AuthUserAddRequest' ->
	  'encode_msg_Etcd.AuthUserAddRequest'(id(Msg,
						  TrUserData),
					       TrUserData);
      'Etcd.AuthUserGetRequest' ->
	  'encode_msg_Etcd.AuthUserGetRequest'(id(Msg,
						  TrUserData),
					       TrUserData);
      'Etcd.AuthUserDeleteRequest' ->
	  'encode_msg_Etcd.AuthUserDeleteRequest'(id(Msg,
						     TrUserData),
						  TrUserData);
      'Etcd.AuthUserChangePasswordRequest' ->
	  'encode_msg_Etcd.AuthUserChangePasswordRequest'(id(Msg,
							     TrUserData),
							  TrUserData);
      'Etcd.AuthUserGrantRoleRequest' ->
	  'encode_msg_Etcd.AuthUserGrantRoleRequest'(id(Msg,
							TrUserData),
						     TrUserData);
      'Etcd.AuthUserRevokeRoleRequest' ->
	  'encode_msg_Etcd.AuthUserRevokeRoleRequest'(id(Msg,
							 TrUserData),
						      TrUserData);
      'Etcd.AuthRoleAddRequest' ->
	  'encode_msg_Etcd.AuthRoleAddRequest'(id(Msg,
						  TrUserData),
					       TrUserData);
      'Etcd.AuthRoleGetRequest' ->
	  'encode_msg_Etcd.AuthRoleGetRequest'(id(Msg,
						  TrUserData),
					       TrUserData);
      'Etcd.AuthUserListRequest' ->
	  'encode_msg_Etcd.AuthUserListRequest'(id(Msg,
						   TrUserData),
						TrUserData);
      'Etcd.AuthRoleListRequest' ->
	  'encode_msg_Etcd.AuthRoleListRequest'(id(Msg,
						   TrUserData),
						TrUserData);
      'Etcd.AuthRoleDeleteRequest' ->
	  'encode_msg_Etcd.AuthRoleDeleteRequest'(id(Msg,
						     TrUserData),
						  TrUserData);
      'Etcd.AuthRoleGrantPermissionRequest' ->
	  'encode_msg_Etcd.AuthRoleGrantPermissionRequest'(id(Msg,
							      TrUserData),
							   TrUserData);
      'Etcd.AuthRoleRevokePermissionRequest' ->
	  'encode_msg_Etcd.AuthRoleRevokePermissionRequest'(id(Msg,
							       TrUserData),
							    TrUserData);
      'Etcd.AuthEnableResponse' ->
	  'encode_msg_Etcd.AuthEnableResponse'(id(Msg,
						  TrUserData),
					       TrUserData);
      'Etcd.AuthDisableResponse' ->
	  'encode_msg_Etcd.AuthDisableResponse'(id(Msg,
						   TrUserData),
						TrUserData);
      'Etcd.AuthenticateResponse' ->
	  'encode_msg_Etcd.AuthenticateResponse'(id(Msg,
						    TrUserData),
						 TrUserData);
      'Etcd.AuthUserAddResponse' ->
	  'encode_msg_Etcd.AuthUserAddResponse'(id(Msg,
						   TrUserData),
						TrUserData);
      'Etcd.AuthUserGetResponse' ->
	  'encode_msg_Etcd.AuthUserGetResponse'(id(Msg,
						   TrUserData),
						TrUserData);
      'Etcd.AuthUserDeleteResponse' ->
	  'encode_msg_Etcd.AuthUserDeleteResponse'(id(Msg,
						      TrUserData),
						   TrUserData);
      'Etcd.AuthUserChangePasswordResponse' ->
	  'encode_msg_Etcd.AuthUserChangePasswordResponse'(id(Msg,
							      TrUserData),
							   TrUserData);
      'Etcd.AuthUserGrantRoleResponse' ->
	  'encode_msg_Etcd.AuthUserGrantRoleResponse'(id(Msg,
							 TrUserData),
						      TrUserData);
      'Etcd.AuthUserRevokeRoleResponse' ->
	  'encode_msg_Etcd.AuthUserRevokeRoleResponse'(id(Msg,
							  TrUserData),
						       TrUserData);
      'Etcd.AuthRoleAddResponse' ->
	  'encode_msg_Etcd.AuthRoleAddResponse'(id(Msg,
						   TrUserData),
						TrUserData);
      'Etcd.AuthRoleGetResponse' ->
	  'encode_msg_Etcd.AuthRoleGetResponse'(id(Msg,
						   TrUserData),
						TrUserData);
      'Etcd.AuthRoleListResponse' ->
	  'encode_msg_Etcd.AuthRoleListResponse'(id(Msg,
						    TrUserData),
						 TrUserData);
      'Etcd.AuthUserListResponse' ->
	  'encode_msg_Etcd.AuthUserListResponse'(id(Msg,
						    TrUserData),
						 TrUserData);
      'Etcd.AuthRoleDeleteResponse' ->
	  'encode_msg_Etcd.AuthRoleDeleteResponse'(id(Msg,
						      TrUserData),
						   TrUserData);
      'Etcd.AuthRoleGrantPermissionResponse' ->
	  'encode_msg_Etcd.AuthRoleGrantPermissionResponse'(id(Msg,
							       TrUserData),
							    TrUserData);
      'Etcd.AuthRoleRevokePermissionResponse' ->
	  'encode_msg_Etcd.AuthRoleRevokePermissionResponse'(id(Msg,
								TrUserData),
							     TrUserData);
      'Etcd.HealthCheckRequest' ->
	  'encode_msg_Etcd.HealthCheckRequest'(id(Msg,
						  TrUserData),
					       TrUserData);
      'Etcd.HealthCheckResponse' ->
	  'encode_msg_Etcd.HealthCheckResponse'(id(Msg,
						   TrUserData),
						TrUserData);
      'Etcd.LockRequest' ->
	  'encode_msg_Etcd.LockRequest'(id(Msg, TrUserData),
					TrUserData);
      'Etcd.LockResponse' ->
	  'encode_msg_Etcd.LockResponse'(id(Msg, TrUserData),
					 TrUserData);
      'Etcd.UnlockRequest' ->
	  'encode_msg_Etcd.UnlockRequest'(id(Msg, TrUserData),
					  TrUserData);
      'Etcd.UnlockResponse' ->
	  'encode_msg_Etcd.UnlockResponse'(id(Msg, TrUserData),
					   TrUserData);
      'Etcd.CampaignRequest' ->
	  'encode_msg_Etcd.CampaignRequest'(id(Msg, TrUserData),
					    TrUserData);
      'Etcd.CampaignResponse' ->
	  'encode_msg_Etcd.CampaignResponse'(id(Msg, TrUserData),
					     TrUserData);
      'Etcd.LeaderKey' ->
	  'encode_msg_Etcd.LeaderKey'(id(Msg, TrUserData),
				      TrUserData);
      'Etcd.LeaderRequest' ->
	  'encode_msg_Etcd.LeaderRequest'(id(Msg, TrUserData),
					  TrUserData);
      'Etcd.LeaderResponse' ->
	  'encode_msg_Etcd.LeaderResponse'(id(Msg, TrUserData),
					   TrUserData);
      'Etcd.ResignRequest' ->
	  'encode_msg_Etcd.ResignRequest'(id(Msg, TrUserData),
					  TrUserData);
      'Etcd.ResignResponse' ->
	  'encode_msg_Etcd.ResignResponse'(id(Msg, TrUserData),
					   TrUserData);
      'Etcd.ProclaimRequest' ->
	  'encode_msg_Etcd.ProclaimRequest'(id(Msg, TrUserData),
					    TrUserData);
      'Etcd.ProclaimResponse' ->
	  'encode_msg_Etcd.ProclaimResponse'(id(Msg, TrUserData),
					     TrUserData);
      'google.protobuf.FileDescriptorSet' ->
	  'encode_msg_google.protobuf.FileDescriptorSet'(id(Msg,
							    TrUserData),
							 TrUserData);
      'google.protobuf.FileDescriptorProto' ->
	  'encode_msg_google.protobuf.FileDescriptorProto'(id(Msg,
							      TrUserData),
							   TrUserData);
      'google.protobuf.DescriptorProto.ExtensionRange' ->
	  'encode_msg_google.protobuf.DescriptorProto.ExtensionRange'(id(Msg,
									 TrUserData),
								      TrUserData);
      'google.protobuf.DescriptorProto.ReservedRange' ->
	  'encode_msg_google.protobuf.DescriptorProto.ReservedRange'(id(Msg,
									TrUserData),
								     TrUserData);
      'google.protobuf.DescriptorProto' ->
	  'encode_msg_google.protobuf.DescriptorProto'(id(Msg,
							  TrUserData),
						       TrUserData);
      'google.protobuf.FieldDescriptorProto' ->
	  'encode_msg_google.protobuf.FieldDescriptorProto'(id(Msg,
							       TrUserData),
							    TrUserData);
      'google.protobuf.OneofDescriptorProto' ->
	  'encode_msg_google.protobuf.OneofDescriptorProto'(id(Msg,
							       TrUserData),
							    TrUserData);
      'google.protobuf.EnumDescriptorProto' ->
	  'encode_msg_google.protobuf.EnumDescriptorProto'(id(Msg,
							      TrUserData),
							   TrUserData);
      'google.protobuf.EnumValueDescriptorProto' ->
	  'encode_msg_google.protobuf.EnumValueDescriptorProto'(id(Msg,
								   TrUserData),
								TrUserData);
      'google.protobuf.ServiceDescriptorProto' ->
	  'encode_msg_google.protobuf.ServiceDescriptorProto'(id(Msg,
								 TrUserData),
							      TrUserData);
      'google.protobuf.MethodDescriptorProto' ->
	  'encode_msg_google.protobuf.MethodDescriptorProto'(id(Msg,
								TrUserData),
							     TrUserData);
      'google.protobuf.FileOptions' ->
	  'encode_msg_google.protobuf.FileOptions'(id(Msg,
						      TrUserData),
						   TrUserData);
      'google.protobuf.MessageOptions' ->
	  'encode_msg_google.protobuf.MessageOptions'(id(Msg,
							 TrUserData),
						      TrUserData);
      'google.protobuf.FieldOptions' ->
	  'encode_msg_google.protobuf.FieldOptions'(id(Msg,
						       TrUserData),
						    TrUserData);
      'google.protobuf.EnumOptions' ->
	  'encode_msg_google.protobuf.EnumOptions'(id(Msg,
						      TrUserData),
						   TrUserData);
      'google.protobuf.EnumValueOptions' ->
	  'encode_msg_google.protobuf.EnumValueOptions'(id(Msg,
							   TrUserData),
							TrUserData);
      'google.protobuf.ServiceOptions' ->
	  'encode_msg_google.protobuf.ServiceOptions'(id(Msg,
							 TrUserData),
						      TrUserData);
      'google.protobuf.MethodOptions' ->
	  'encode_msg_google.protobuf.MethodOptions'(id(Msg,
							TrUserData),
						     TrUserData);
      'google.protobuf.UninterpretedOption.NamePart' ->
	  'encode_msg_google.protobuf.UninterpretedOption.NamePart'(id(Msg,
								       TrUserData),
								    TrUserData);
      'google.protobuf.UninterpretedOption' ->
	  'encode_msg_google.protobuf.UninterpretedOption'(id(Msg,
							      TrUserData),
							   TrUserData);
      'google.protobuf.SourceCodeInfo.Location' ->
	  'encode_msg_google.protobuf.SourceCodeInfo.Location'(id(Msg,
								  TrUserData),
							       TrUserData);
      'google.protobuf.SourceCodeInfo' ->
	  'encode_msg_google.protobuf.SourceCodeInfo'(id(Msg,
							 TrUserData),
						      TrUserData);
      'google.protobuf.GeneratedCodeInfo.Annotation' ->
	  'encode_msg_google.protobuf.GeneratedCodeInfo.Annotation'(id(Msg,
								       TrUserData),
								    TrUserData);
      'google.protobuf.GeneratedCodeInfo' ->
	  'encode_msg_google.protobuf.GeneratedCodeInfo'(id(Msg,
							    TrUserData),
							 TrUserData);
      'mvccpb.KeyValue' ->
	  'encode_msg_mvccpb.KeyValue'(id(Msg, TrUserData),
				       TrUserData);
      'mvccpb.Event' ->
	  'encode_msg_mvccpb.Event'(id(Msg, TrUserData),
				    TrUserData);
      'authpb.UserAddOptions' ->
	  'encode_msg_authpb.UserAddOptions'(id(Msg, TrUserData),
					     TrUserData);
      'authpb.User' ->
	  'encode_msg_authpb.User'(id(Msg, TrUserData),
				   TrUserData);
      'authpb.Permission' ->
	  'encode_msg_authpb.Permission'(id(Msg, TrUserData),
					 TrUserData);
      'authpb.Role' ->
	  'encode_msg_authpb.Role'(id(Msg, TrUserData),
				   TrUserData)
    end.


'encode_msg_Etcd.ResponseHeader'(Msg, TrUserData) ->
    'encode_msg_Etcd.ResponseHeader'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.ResponseHeader'(#{} = M, Bin,
				 TrUserData) ->
    B1 = case M of
	   #{cluster_id := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= 0 -> Bin;
		    true -> e_varint(TrF1, <<Bin/binary, 8>>, TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{member_id := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 if TrF2 =:= 0 -> B1;
		    true -> e_varint(TrF2, <<B1/binary, 16>>, TrUserData)
		 end
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{revision := F3} ->
	       begin
		 TrF3 = id(F3, TrUserData),
		 if TrF3 =:= 0 -> B2;
		    true ->
			e_type_int64(TrF3, <<B2/binary, 24>>, TrUserData)
		 end
	       end;
	   _ -> B2
	 end,
    case M of
      #{raft_term := F4} ->
	  begin
	    TrF4 = id(F4, TrUserData),
	    if TrF4 =:= 0 -> B3;
	       true -> e_varint(TrF4, <<B3/binary, 32>>, TrUserData)
	    end
	  end;
      _ -> B3
    end.

'encode_msg_Etcd.RangeRequest'(Msg, TrUserData) ->
    'encode_msg_Etcd.RangeRequest'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.RangeRequest'(#{} = M, Bin,
			       TrUserData) ->
    B1 = case M of
	   #{key := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 case iolist_size(TrF1) of
		   0 -> Bin;
		   _ -> e_type_bytes(TrF1, <<Bin/binary, 10>>, TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{range_end := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 case iolist_size(TrF2) of
		   0 -> B1;
		   _ -> e_type_bytes(TrF2, <<B1/binary, 18>>, TrUserData)
		 end
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{limit := F3} ->
	       begin
		 TrF3 = id(F3, TrUserData),
		 if TrF3 =:= 0 -> B2;
		    true ->
			e_type_int64(TrF3, <<B2/binary, 24>>, TrUserData)
		 end
	       end;
	   _ -> B2
	 end,
    B4 = case M of
	   #{revision := F4} ->
	       begin
		 TrF4 = id(F4, TrUserData),
		 if TrF4 =:= 0 -> B3;
		    true ->
			e_type_int64(TrF4, <<B3/binary, 32>>, TrUserData)
		 end
	       end;
	   _ -> B3
	 end,
    B5 = case M of
	   #{sort_order := F5} ->
	       begin
		 TrF5 = id(F5, TrUserData),
		 if TrF5 =:= 'NONE'; TrF5 =:= 0 -> B4;
		    true ->
			'e_enum_Etcd.RangeRequest.SortOrder'(TrF5,
							     <<B4/binary, 40>>,
							     TrUserData)
		 end
	       end;
	   _ -> B4
	 end,
    B6 = case M of
	   #{sort_target := F6} ->
	       begin
		 TrF6 = id(F6, TrUserData),
		 if TrF6 =:= 'KEY'; TrF6 =:= 0 -> B5;
		    true ->
			'e_enum_Etcd.RangeRequest.SortTarget'(TrF6,
							      <<B5/binary, 48>>,
							      TrUserData)
		 end
	       end;
	   _ -> B5
	 end,
    B7 = case M of
	   #{serializable := F7} ->
	       begin
		 TrF7 = id(F7, TrUserData),
		 if TrF7 =:= false -> B6;
		    true -> e_type_bool(TrF7, <<B6/binary, 56>>, TrUserData)
		 end
	       end;
	   _ -> B6
	 end,
    B8 = case M of
	   #{keys_only := F8} ->
	       begin
		 TrF8 = id(F8, TrUserData),
		 if TrF8 =:= false -> B7;
		    true -> e_type_bool(TrF8, <<B7/binary, 64>>, TrUserData)
		 end
	       end;
	   _ -> B7
	 end,
    B9 = case M of
	   #{count_only := F9} ->
	       begin
		 TrF9 = id(F9, TrUserData),
		 if TrF9 =:= false -> B8;
		    true -> e_type_bool(TrF9, <<B8/binary, 72>>, TrUserData)
		 end
	       end;
	   _ -> B8
	 end,
    B10 = case M of
	    #{min_mod_revision := F10} ->
		begin
		  TrF10 = id(F10, TrUserData),
		  if TrF10 =:= 0 -> B9;
		     true ->
			 e_type_int64(TrF10, <<B9/binary, 80>>, TrUserData)
		  end
		end;
	    _ -> B9
	  end,
    B11 = case M of
	    #{max_mod_revision := F11} ->
		begin
		  TrF11 = id(F11, TrUserData),
		  if TrF11 =:= 0 -> B10;
		     true ->
			 e_type_int64(TrF11, <<B10/binary, 88>>, TrUserData)
		  end
		end;
	    _ -> B10
	  end,
    B12 = case M of
	    #{min_create_revision := F12} ->
		begin
		  TrF12 = id(F12, TrUserData),
		  if TrF12 =:= 0 -> B11;
		     true ->
			 e_type_int64(TrF12, <<B11/binary, 96>>, TrUserData)
		  end
		end;
	    _ -> B11
	  end,
    case M of
      #{max_create_revision := F13} ->
	  begin
	    TrF13 = id(F13, TrUserData),
	    if TrF13 =:= 0 -> B12;
	       true ->
		   e_type_int64(TrF13, <<B12/binary, 104>>, TrUserData)
	    end
	  end;
      _ -> B12
    end.

'encode_msg_Etcd.RangeResponse'(Msg, TrUserData) ->
    'encode_msg_Etcd.RangeResponse'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.RangeResponse'(#{} = M, Bin,
				TrUserData) ->
    B1 = case M of
	   #{header := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= undefined -> Bin;
		    true ->
			'e_mfield_Etcd.RangeResponse_header'(TrF1,
							     <<Bin/binary, 10>>,
							     TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{kvs := F2} ->
	       TrF2 = id(F2, TrUserData),
	       if TrF2 == [] -> B1;
		  true ->
		      'e_field_Etcd.RangeResponse_kvs'(TrF2, B1, TrUserData)
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{more := F3} ->
	       begin
		 TrF3 = id(F3, TrUserData),
		 if TrF3 =:= false -> B2;
		    true -> e_type_bool(TrF3, <<B2/binary, 24>>, TrUserData)
		 end
	       end;
	   _ -> B2
	 end,
    case M of
      #{count := F4} ->
	  begin
	    TrF4 = id(F4, TrUserData),
	    if TrF4 =:= 0 -> B3;
	       true ->
		   e_type_int64(TrF4, <<B3/binary, 32>>, TrUserData)
	    end
	  end;
      _ -> B3
    end.

'encode_msg_Etcd.PutRequest'(Msg, TrUserData) ->
    'encode_msg_Etcd.PutRequest'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.PutRequest'(#{} = M, Bin,
			     TrUserData) ->
    B1 = case M of
	   #{key := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 case iolist_size(TrF1) of
		   0 -> Bin;
		   _ -> e_type_bytes(TrF1, <<Bin/binary, 10>>, TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{value := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 case iolist_size(TrF2) of
		   0 -> B1;
		   _ -> e_type_bytes(TrF2, <<B1/binary, 18>>, TrUserData)
		 end
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{lease := F3} ->
	       begin
		 TrF3 = id(F3, TrUserData),
		 if TrF3 =:= 0 -> B2;
		    true ->
			e_type_int64(TrF3, <<B2/binary, 24>>, TrUserData)
		 end
	       end;
	   _ -> B2
	 end,
    B4 = case M of
	   #{prev_kv := F4} ->
	       begin
		 TrF4 = id(F4, TrUserData),
		 if TrF4 =:= false -> B3;
		    true -> e_type_bool(TrF4, <<B3/binary, 32>>, TrUserData)
		 end
	       end;
	   _ -> B3
	 end,
    B5 = case M of
	   #{ignore_value := F5} ->
	       begin
		 TrF5 = id(F5, TrUserData),
		 if TrF5 =:= false -> B4;
		    true -> e_type_bool(TrF5, <<B4/binary, 40>>, TrUserData)
		 end
	       end;
	   _ -> B4
	 end,
    case M of
      #{ignore_lease := F6} ->
	  begin
	    TrF6 = id(F6, TrUserData),
	    if TrF6 =:= false -> B5;
	       true -> e_type_bool(TrF6, <<B5/binary, 48>>, TrUserData)
	    end
	  end;
      _ -> B5
    end.

'encode_msg_Etcd.PutResponse'(Msg, TrUserData) ->
    'encode_msg_Etcd.PutResponse'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.PutResponse'(#{} = M, Bin,
			      TrUserData) ->
    B1 = case M of
	   #{header := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= undefined -> Bin;
		    true ->
			'e_mfield_Etcd.PutResponse_header'(TrF1,
							   <<Bin/binary, 10>>,
							   TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{prev_kv := F2} ->
	  begin
	    TrF2 = id(F2, TrUserData),
	    if TrF2 =:= undefined -> B1;
	       true ->
		   'e_mfield_Etcd.PutResponse_prev_kv'(TrF2,
						       <<B1/binary, 18>>,
						       TrUserData)
	    end
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.DeleteRangeRequest'(Msg, TrUserData) ->
    'encode_msg_Etcd.DeleteRangeRequest'(Msg, <<>>,
					 TrUserData).


'encode_msg_Etcd.DeleteRangeRequest'(#{} = M, Bin,
				     TrUserData) ->
    B1 = case M of
	   #{key := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 case iolist_size(TrF1) of
		   0 -> Bin;
		   _ -> e_type_bytes(TrF1, <<Bin/binary, 10>>, TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{range_end := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 case iolist_size(TrF2) of
		   0 -> B1;
		   _ -> e_type_bytes(TrF2, <<B1/binary, 18>>, TrUserData)
		 end
	       end;
	   _ -> B1
	 end,
    case M of
      #{prev_kv := F3} ->
	  begin
	    TrF3 = id(F3, TrUserData),
	    if TrF3 =:= false -> B2;
	       true -> e_type_bool(TrF3, <<B2/binary, 24>>, TrUserData)
	    end
	  end;
      _ -> B2
    end.

'encode_msg_Etcd.DeleteRangeResponse'(Msg,
				      TrUserData) ->
    'encode_msg_Etcd.DeleteRangeResponse'(Msg, <<>>,
					  TrUserData).


'encode_msg_Etcd.DeleteRangeResponse'(#{} = M, Bin,
				      TrUserData) ->
    B1 = case M of
	   #{header := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= undefined -> Bin;
		    true ->
			'e_mfield_Etcd.DeleteRangeResponse_header'(TrF1,
								   <<Bin/binary,
								     10>>,
								   TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{deleted := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 if TrF2 =:= 0 -> B1;
		    true ->
			e_type_int64(TrF2, <<B1/binary, 16>>, TrUserData)
		 end
	       end;
	   _ -> B1
	 end,
    case M of
      #{prev_kvs := F3} ->
	  TrF3 = id(F3, TrUserData),
	  if TrF3 == [] -> B2;
	     true ->
		 'e_field_Etcd.DeleteRangeResponse_prev_kvs'(TrF3, B2,
							     TrUserData)
	  end;
      _ -> B2
    end.

'encode_msg_Etcd.RequestOp'(Msg, TrUserData) ->
    'encode_msg_Etcd.RequestOp'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.RequestOp'(#{} = M, Bin, TrUserData) ->
    case M of
      #{request := F1} ->
	  case id(F1, TrUserData) of
	    {request_range, TF1} ->
		begin
		  TrTF1 = id(TF1, TrUserData),
		  'e_mfield_Etcd.RequestOp_request_range'(TrTF1,
							  <<Bin/binary, 10>>,
							  TrUserData)
		end;
	    {request_put, TF1} ->
		begin
		  TrTF1 = id(TF1, TrUserData),
		  'e_mfield_Etcd.RequestOp_request_put'(TrTF1,
							<<Bin/binary, 18>>,
							TrUserData)
		end;
	    {request_delete_range, TF1} ->
		begin
		  TrTF1 = id(TF1, TrUserData),
		  'e_mfield_Etcd.RequestOp_request_delete_range'(TrTF1,
								 <<Bin/binary,
								   26>>,
								 TrUserData)
		end;
	    {request_txn, TF1} ->
		begin
		  TrTF1 = id(TF1, TrUserData),
		  'e_mfield_Etcd.RequestOp_request_txn'(TrTF1,
							<<Bin/binary, 34>>,
							TrUserData)
		end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.ResponseOp'(Msg, TrUserData) ->
    'encode_msg_Etcd.ResponseOp'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.ResponseOp'(#{} = M, Bin,
			     TrUserData) ->
    case M of
      #{response := F1} ->
	  case id(F1, TrUserData) of
	    {response_range, TF1} ->
		begin
		  TrTF1 = id(TF1, TrUserData),
		  'e_mfield_Etcd.ResponseOp_response_range'(TrTF1,
							    <<Bin/binary, 10>>,
							    TrUserData)
		end;
	    {response_put, TF1} ->
		begin
		  TrTF1 = id(TF1, TrUserData),
		  'e_mfield_Etcd.ResponseOp_response_put'(TrTF1,
							  <<Bin/binary, 18>>,
							  TrUserData)
		end;
	    {response_delete_range, TF1} ->
		begin
		  TrTF1 = id(TF1, TrUserData),
		  'e_mfield_Etcd.ResponseOp_response_delete_range'(TrTF1,
								   <<Bin/binary,
								     26>>,
								   TrUserData)
		end;
	    {response_txn, TF1} ->
		begin
		  TrTF1 = id(TF1, TrUserData),
		  'e_mfield_Etcd.ResponseOp_response_txn'(TrTF1,
							  <<Bin/binary, 34>>,
							  TrUserData)
		end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.Compare'(Msg, TrUserData) ->
    'encode_msg_Etcd.Compare'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.Compare'(#{} = M, Bin, TrUserData) ->
    B1 = case M of
	   #{result := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= 'EQUAL'; TrF1 =:= 0 -> Bin;
		    true ->
			'e_enum_Etcd.Compare.CompareResult'(TrF1,
							    <<Bin/binary, 8>>,
							    TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{target := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 if TrF2 =:= 'VERSION'; TrF2 =:= 0 -> B1;
		    true ->
			'e_enum_Etcd.Compare.CompareTarget'(TrF2,
							    <<B1/binary, 16>>,
							    TrUserData)
		 end
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{key := F3} ->
	       begin
		 TrF3 = id(F3, TrUserData),
		 case iolist_size(TrF3) of
		   0 -> B2;
		   _ -> e_type_bytes(TrF3, <<B2/binary, 26>>, TrUserData)
		 end
	       end;
	   _ -> B2
	 end,
    B4 = case M of
	   #{target_union := F4} ->
	       case id(F4, TrUserData) of
		 {version, TF4} ->
		     begin
		       TrTF4 = id(TF4, TrUserData),
		       e_type_int64(TrTF4, <<B3/binary, 32>>, TrUserData)
		     end;
		 {create_revision, TF4} ->
		     begin
		       TrTF4 = id(TF4, TrUserData),
		       e_type_int64(TrTF4, <<B3/binary, 40>>, TrUserData)
		     end;
		 {mod_revision, TF4} ->
		     begin
		       TrTF4 = id(TF4, TrUserData),
		       e_type_int64(TrTF4, <<B3/binary, 48>>, TrUserData)
		     end;
		 {value, TF4} ->
		     begin
		       TrTF4 = id(TF4, TrUserData),
		       e_type_bytes(TrTF4, <<B3/binary, 58>>, TrUserData)
		     end;
		 {lease, TF4} ->
		     begin
		       TrTF4 = id(TF4, TrUserData),
		       e_type_int64(TrTF4, <<B3/binary, 64>>, TrUserData)
		     end
	       end;
	   _ -> B3
	 end,
    case M of
      #{range_end := F5} ->
	  begin
	    TrF5 = id(F5, TrUserData),
	    case iolist_size(TrF5) of
	      0 -> B4;
	      _ ->
		  e_type_bytes(TrF5, <<B4/binary, 130, 4>>, TrUserData)
	    end
	  end;
      _ -> B4
    end.

'encode_msg_Etcd.TxnRequest'(Msg, TrUserData) ->
    'encode_msg_Etcd.TxnRequest'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.TxnRequest'(#{} = M, Bin,
			     TrUserData) ->
    B1 = case M of
	   #{compare := F1} ->
	       TrF1 = id(F1, TrUserData),
	       if TrF1 == [] -> Bin;
		  true ->
		      'e_field_Etcd.TxnRequest_compare'(TrF1, Bin, TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{success := F2} ->
	       TrF2 = id(F2, TrUserData),
	       if TrF2 == [] -> B1;
		  true ->
		      'e_field_Etcd.TxnRequest_success'(TrF2, B1, TrUserData)
	       end;
	   _ -> B1
	 end,
    case M of
      #{failure := F3} ->
	  TrF3 = id(F3, TrUserData),
	  if TrF3 == [] -> B2;
	     true ->
		 'e_field_Etcd.TxnRequest_failure'(TrF3, B2, TrUserData)
	  end;
      _ -> B2
    end.

'encode_msg_Etcd.TxnResponse'(Msg, TrUserData) ->
    'encode_msg_Etcd.TxnResponse'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.TxnResponse'(#{} = M, Bin,
			      TrUserData) ->
    B1 = case M of
	   #{header := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= undefined -> Bin;
		    true ->
			'e_mfield_Etcd.TxnResponse_header'(TrF1,
							   <<Bin/binary, 10>>,
							   TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{succeeded := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 if TrF2 =:= false -> B1;
		    true -> e_type_bool(TrF2, <<B1/binary, 16>>, TrUserData)
		 end
	       end;
	   _ -> B1
	 end,
    case M of
      #{responses := F3} ->
	  TrF3 = id(F3, TrUserData),
	  if TrF3 == [] -> B2;
	     true ->
		 'e_field_Etcd.TxnResponse_responses'(TrF3, B2,
						      TrUserData)
	  end;
      _ -> B2
    end.

'encode_msg_Etcd.CompactionRequest'(Msg, TrUserData) ->
    'encode_msg_Etcd.CompactionRequest'(Msg, <<>>,
					TrUserData).


'encode_msg_Etcd.CompactionRequest'(#{} = M, Bin,
				    TrUserData) ->
    B1 = case M of
	   #{revision := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= 0 -> Bin;
		    true ->
			e_type_int64(TrF1, <<Bin/binary, 8>>, TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{physical := F2} ->
	  begin
	    TrF2 = id(F2, TrUserData),
	    if TrF2 =:= false -> B1;
	       true -> e_type_bool(TrF2, <<B1/binary, 16>>, TrUserData)
	    end
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.CompactionResponse'(Msg, TrUserData) ->
    'encode_msg_Etcd.CompactionResponse'(Msg, <<>>,
					 TrUserData).


'encode_msg_Etcd.CompactionResponse'(#{} = M, Bin,
				     TrUserData) ->
    case M of
      #{header := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= undefined -> Bin;
	       true ->
		   'e_mfield_Etcd.CompactionResponse_header'(TrF1,
							     <<Bin/binary, 10>>,
							     TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.HashRequest'(_Msg, _TrUserData) ->
    <<>>.

'encode_msg_Etcd.HashKVRequest'(Msg, TrUserData) ->
    'encode_msg_Etcd.HashKVRequest'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.HashKVRequest'(#{} = M, Bin,
				TrUserData) ->
    case M of
      #{revision := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= 0 -> Bin;
	       true ->
		   e_type_int64(TrF1, <<Bin/binary, 8>>, TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.HashKVResponse'(Msg, TrUserData) ->
    'encode_msg_Etcd.HashKVResponse'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.HashKVResponse'(#{} = M, Bin,
				 TrUserData) ->
    B1 = case M of
	   #{header := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= undefined -> Bin;
		    true ->
			'e_mfield_Etcd.HashKVResponse_header'(TrF1,
							      <<Bin/binary,
								10>>,
							      TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{hash := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 if TrF2 =:= 0 -> B1;
		    true -> e_varint(TrF2, <<B1/binary, 16>>, TrUserData)
		 end
	       end;
	   _ -> B1
	 end,
    case M of
      #{compact_revision := F3} ->
	  begin
	    TrF3 = id(F3, TrUserData),
	    if TrF3 =:= 0 -> B2;
	       true ->
		   e_type_int64(TrF3, <<B2/binary, 24>>, TrUserData)
	    end
	  end;
      _ -> B2
    end.

'encode_msg_Etcd.HashResponse'(Msg, TrUserData) ->
    'encode_msg_Etcd.HashResponse'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.HashResponse'(#{} = M, Bin,
			       TrUserData) ->
    B1 = case M of
	   #{header := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= undefined -> Bin;
		    true ->
			'e_mfield_Etcd.HashResponse_header'(TrF1,
							    <<Bin/binary, 10>>,
							    TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{hash := F2} ->
	  begin
	    TrF2 = id(F2, TrUserData),
	    if TrF2 =:= 0 -> B1;
	       true -> e_varint(TrF2, <<B1/binary, 16>>, TrUserData)
	    end
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.SnapshotRequest'(_Msg, _TrUserData) ->
    <<>>.

'encode_msg_Etcd.SnapshotResponse'(Msg, TrUserData) ->
    'encode_msg_Etcd.SnapshotResponse'(Msg, <<>>,
				       TrUserData).


'encode_msg_Etcd.SnapshotResponse'(#{} = M, Bin,
				   TrUserData) ->
    B1 = case M of
	   #{header := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= undefined -> Bin;
		    true ->
			'e_mfield_Etcd.SnapshotResponse_header'(TrF1,
								<<Bin/binary,
								  10>>,
								TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{remaining_bytes := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 if TrF2 =:= 0 -> B1;
		    true -> e_varint(TrF2, <<B1/binary, 16>>, TrUserData)
		 end
	       end;
	   _ -> B1
	 end,
    case M of
      #{blob := F3} ->
	  begin
	    TrF3 = id(F3, TrUserData),
	    case iolist_size(TrF3) of
	      0 -> B2;
	      _ -> e_type_bytes(TrF3, <<B2/binary, 26>>, TrUserData)
	    end
	  end;
      _ -> B2
    end.

'encode_msg_Etcd.WatchRequest'(Msg, TrUserData) ->
    'encode_msg_Etcd.WatchRequest'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.WatchRequest'(#{} = M, Bin,
			       TrUserData) ->
    case M of
      #{request_union := F1} ->
	  case id(F1, TrUserData) of
	    {create_request, TF1} ->
		begin
		  TrTF1 = id(TF1, TrUserData),
		  'e_mfield_Etcd.WatchRequest_create_request'(TrTF1,
							      <<Bin/binary,
								10>>,
							      TrUserData)
		end;
	    {cancel_request, TF1} ->
		begin
		  TrTF1 = id(TF1, TrUserData),
		  'e_mfield_Etcd.WatchRequest_cancel_request'(TrTF1,
							      <<Bin/binary,
								18>>,
							      TrUserData)
		end;
	    {progress_request, TF1} ->
		begin
		  TrTF1 = id(TF1, TrUserData),
		  'e_mfield_Etcd.WatchRequest_progress_request'(TrTF1,
								<<Bin/binary,
								  26>>,
								TrUserData)
		end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.WatchCreateRequest'(Msg, TrUserData) ->
    'encode_msg_Etcd.WatchCreateRequest'(Msg, <<>>,
					 TrUserData).


'encode_msg_Etcd.WatchCreateRequest'(#{} = M, Bin,
				     TrUserData) ->
    B1 = case M of
	   #{key := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 case iolist_size(TrF1) of
		   0 -> Bin;
		   _ -> e_type_bytes(TrF1, <<Bin/binary, 10>>, TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{range_end := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 case iolist_size(TrF2) of
		   0 -> B1;
		   _ -> e_type_bytes(TrF2, <<B1/binary, 18>>, TrUserData)
		 end
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{start_revision := F3} ->
	       begin
		 TrF3 = id(F3, TrUserData),
		 if TrF3 =:= 0 -> B2;
		    true ->
			e_type_int64(TrF3, <<B2/binary, 24>>, TrUserData)
		 end
	       end;
	   _ -> B2
	 end,
    B4 = case M of
	   #{progress_notify := F4} ->
	       begin
		 TrF4 = id(F4, TrUserData),
		 if TrF4 =:= false -> B3;
		    true -> e_type_bool(TrF4, <<B3/binary, 32>>, TrUserData)
		 end
	       end;
	   _ -> B3
	 end,
    B5 = case M of
	   #{filters := F5} ->
	       TrF5 = id(F5, TrUserData),
	       if TrF5 == [] -> B4;
		  true ->
		      'e_field_Etcd.WatchCreateRequest_filters'(TrF5, B4,
								TrUserData)
	       end;
	   _ -> B4
	 end,
    B6 = case M of
	   #{prev_kv := F6} ->
	       begin
		 TrF6 = id(F6, TrUserData),
		 if TrF6 =:= false -> B5;
		    true -> e_type_bool(TrF6, <<B5/binary, 48>>, TrUserData)
		 end
	       end;
	   _ -> B5
	 end,
    B7 = case M of
	   #{watch_id := F7} ->
	       begin
		 TrF7 = id(F7, TrUserData),
		 if TrF7 =:= 0 -> B6;
		    true ->
			e_type_int64(TrF7, <<B6/binary, 56>>, TrUserData)
		 end
	       end;
	   _ -> B6
	 end,
    case M of
      #{fragment := F8} ->
	  begin
	    TrF8 = id(F8, TrUserData),
	    if TrF8 =:= false -> B7;
	       true -> e_type_bool(TrF8, <<B7/binary, 64>>, TrUserData)
	    end
	  end;
      _ -> B7
    end.

'encode_msg_Etcd.WatchCancelRequest'(Msg, TrUserData) ->
    'encode_msg_Etcd.WatchCancelRequest'(Msg, <<>>,
					 TrUserData).


'encode_msg_Etcd.WatchCancelRequest'(#{} = M, Bin,
				     TrUserData) ->
    case M of
      #{watch_id := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= 0 -> Bin;
	       true ->
		   e_type_int64(TrF1, <<Bin/binary, 8>>, TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.WatchProgressRequest'(_Msg,
				       _TrUserData) ->
    <<>>.

'encode_msg_Etcd.WatchResponse'(Msg, TrUserData) ->
    'encode_msg_Etcd.WatchResponse'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.WatchResponse'(#{} = M, Bin,
				TrUserData) ->
    B1 = case M of
	   #{header := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= undefined -> Bin;
		    true ->
			'e_mfield_Etcd.WatchResponse_header'(TrF1,
							     <<Bin/binary, 10>>,
							     TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{watch_id := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 if TrF2 =:= 0 -> B1;
		    true ->
			e_type_int64(TrF2, <<B1/binary, 16>>, TrUserData)
		 end
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{created := F3} ->
	       begin
		 TrF3 = id(F3, TrUserData),
		 if TrF3 =:= false -> B2;
		    true -> e_type_bool(TrF3, <<B2/binary, 24>>, TrUserData)
		 end
	       end;
	   _ -> B2
	 end,
    B4 = case M of
	   #{canceled := F4} ->
	       begin
		 TrF4 = id(F4, TrUserData),
		 if TrF4 =:= false -> B3;
		    true -> e_type_bool(TrF4, <<B3/binary, 32>>, TrUserData)
		 end
	       end;
	   _ -> B3
	 end,
    B5 = case M of
	   #{compact_revision := F5} ->
	       begin
		 TrF5 = id(F5, TrUserData),
		 if TrF5 =:= 0 -> B4;
		    true ->
			e_type_int64(TrF5, <<B4/binary, 40>>, TrUserData)
		 end
	       end;
	   _ -> B4
	 end,
    B6 = case M of
	   #{cancel_reason := F6} ->
	       begin
		 TrF6 = id(F6, TrUserData),
		 case is_empty_string(TrF6) of
		   true -> B5;
		   false ->
		       e_type_string(TrF6, <<B5/binary, 50>>, TrUserData)
		 end
	       end;
	   _ -> B5
	 end,
    B7 = case M of
	   #{fragment := F7} ->
	       begin
		 TrF7 = id(F7, TrUserData),
		 if TrF7 =:= false -> B6;
		    true -> e_type_bool(TrF7, <<B6/binary, 56>>, TrUserData)
		 end
	       end;
	   _ -> B6
	 end,
    case M of
      #{events := F8} ->
	  TrF8 = id(F8, TrUserData),
	  if TrF8 == [] -> B7;
	     true ->
		 'e_field_Etcd.WatchResponse_events'(TrF8, B7,
						     TrUserData)
	  end;
      _ -> B7
    end.

'encode_msg_Etcd.LeaseGrantRequest'(Msg, TrUserData) ->
    'encode_msg_Etcd.LeaseGrantRequest'(Msg, <<>>,
					TrUserData).


'encode_msg_Etcd.LeaseGrantRequest'(#{} = M, Bin,
				    TrUserData) ->
    B1 = case M of
	   #{'TTL' := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= 0 -> Bin;
		    true ->
			e_type_int64(TrF1, <<Bin/binary, 8>>, TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{'ID' := F2} ->
	  begin
	    TrF2 = id(F2, TrUserData),
	    if TrF2 =:= 0 -> B1;
	       true ->
		   e_type_int64(TrF2, <<B1/binary, 16>>, TrUserData)
	    end
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.LeaseGrantResponse'(Msg, TrUserData) ->
    'encode_msg_Etcd.LeaseGrantResponse'(Msg, <<>>,
					 TrUserData).


'encode_msg_Etcd.LeaseGrantResponse'(#{} = M, Bin,
				     TrUserData) ->
    B1 = case M of
	   #{header := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= undefined -> Bin;
		    true ->
			'e_mfield_Etcd.LeaseGrantResponse_header'(TrF1,
								  <<Bin/binary,
								    10>>,
								  TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{'ID' := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 if TrF2 =:= 0 -> B1;
		    true ->
			e_type_int64(TrF2, <<B1/binary, 16>>, TrUserData)
		 end
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{'TTL' := F3} ->
	       begin
		 TrF3 = id(F3, TrUserData),
		 if TrF3 =:= 0 -> B2;
		    true ->
			e_type_int64(TrF3, <<B2/binary, 24>>, TrUserData)
		 end
	       end;
	   _ -> B2
	 end,
    case M of
      #{error := F4} ->
	  begin
	    TrF4 = id(F4, TrUserData),
	    case is_empty_string(TrF4) of
	      true -> B3;
	      false ->
		  e_type_string(TrF4, <<B3/binary, 34>>, TrUserData)
	    end
	  end;
      _ -> B3
    end.

'encode_msg_Etcd.LeaseRevokeRequest'(Msg, TrUserData) ->
    'encode_msg_Etcd.LeaseRevokeRequest'(Msg, <<>>,
					 TrUserData).


'encode_msg_Etcd.LeaseRevokeRequest'(#{} = M, Bin,
				     TrUserData) ->
    case M of
      #{'ID' := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= 0 -> Bin;
	       true ->
		   e_type_int64(TrF1, <<Bin/binary, 8>>, TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.LeaseRevokeResponse'(Msg,
				      TrUserData) ->
    'encode_msg_Etcd.LeaseRevokeResponse'(Msg, <<>>,
					  TrUserData).


'encode_msg_Etcd.LeaseRevokeResponse'(#{} = M, Bin,
				      TrUserData) ->
    case M of
      #{header := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= undefined -> Bin;
	       true ->
		   'e_mfield_Etcd.LeaseRevokeResponse_header'(TrF1,
							      <<Bin/binary,
								10>>,
							      TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.LeaseCheckpoint'(Msg, TrUserData) ->
    'encode_msg_Etcd.LeaseCheckpoint'(Msg, <<>>,
				      TrUserData).


'encode_msg_Etcd.LeaseCheckpoint'(#{} = M, Bin,
				  TrUserData) ->
    B1 = case M of
	   #{'ID' := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= 0 -> Bin;
		    true ->
			e_type_int64(TrF1, <<Bin/binary, 8>>, TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{remaining_TTL := F2} ->
	  begin
	    TrF2 = id(F2, TrUserData),
	    if TrF2 =:= 0 -> B1;
	       true ->
		   e_type_int64(TrF2, <<B1/binary, 16>>, TrUserData)
	    end
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.LeaseCheckpointRequest'(Msg,
					 TrUserData) ->
    'encode_msg_Etcd.LeaseCheckpointRequest'(Msg, <<>>,
					     TrUserData).


'encode_msg_Etcd.LeaseCheckpointRequest'(#{} = M, Bin,
					 TrUserData) ->
    case M of
      #{checkpoints := F1} ->
	  TrF1 = id(F1, TrUserData),
	  if TrF1 == [] -> Bin;
	     true ->
		 'e_field_Etcd.LeaseCheckpointRequest_checkpoints'(TrF1,
								   Bin,
								   TrUserData)
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.LeaseCheckpointResponse'(Msg,
					  TrUserData) ->
    'encode_msg_Etcd.LeaseCheckpointResponse'(Msg, <<>>,
					      TrUserData).


'encode_msg_Etcd.LeaseCheckpointResponse'(#{} = M, Bin,
					  TrUserData) ->
    case M of
      #{header := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= undefined -> Bin;
	       true ->
		   'e_mfield_Etcd.LeaseCheckpointResponse_header'(TrF1,
								  <<Bin/binary,
								    10>>,
								  TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.LeaseKeepAliveRequest'(Msg,
					TrUserData) ->
    'encode_msg_Etcd.LeaseKeepAliveRequest'(Msg, <<>>,
					    TrUserData).


'encode_msg_Etcd.LeaseKeepAliveRequest'(#{} = M, Bin,
					TrUserData) ->
    case M of
      #{'ID' := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= 0 -> Bin;
	       true ->
		   e_type_int64(TrF1, <<Bin/binary, 8>>, TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.LeaseKeepAliveResponse'(Msg,
					 TrUserData) ->
    'encode_msg_Etcd.LeaseKeepAliveResponse'(Msg, <<>>,
					     TrUserData).


'encode_msg_Etcd.LeaseKeepAliveResponse'(#{} = M, Bin,
					 TrUserData) ->
    B1 = case M of
	   #{header := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= undefined -> Bin;
		    true ->
			'e_mfield_Etcd.LeaseKeepAliveResponse_header'(TrF1,
								      <<Bin/binary,
									10>>,
								      TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{'ID' := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 if TrF2 =:= 0 -> B1;
		    true ->
			e_type_int64(TrF2, <<B1/binary, 16>>, TrUserData)
		 end
	       end;
	   _ -> B1
	 end,
    case M of
      #{'TTL' := F3} ->
	  begin
	    TrF3 = id(F3, TrUserData),
	    if TrF3 =:= 0 -> B2;
	       true ->
		   e_type_int64(TrF3, <<B2/binary, 24>>, TrUserData)
	    end
	  end;
      _ -> B2
    end.

'encode_msg_Etcd.LeaseTimeToLiveRequest'(Msg,
					 TrUserData) ->
    'encode_msg_Etcd.LeaseTimeToLiveRequest'(Msg, <<>>,
					     TrUserData).


'encode_msg_Etcd.LeaseTimeToLiveRequest'(#{} = M, Bin,
					 TrUserData) ->
    B1 = case M of
	   #{'ID' := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= 0 -> Bin;
		    true ->
			e_type_int64(TrF1, <<Bin/binary, 8>>, TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{keys := F2} ->
	  begin
	    TrF2 = id(F2, TrUserData),
	    if TrF2 =:= false -> B1;
	       true -> e_type_bool(TrF2, <<B1/binary, 16>>, TrUserData)
	    end
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.LeaseTimeToLiveResponse'(Msg,
					  TrUserData) ->
    'encode_msg_Etcd.LeaseTimeToLiveResponse'(Msg, <<>>,
					      TrUserData).


'encode_msg_Etcd.LeaseTimeToLiveResponse'(#{} = M, Bin,
					  TrUserData) ->
    B1 = case M of
	   #{header := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= undefined -> Bin;
		    true ->
			'e_mfield_Etcd.LeaseTimeToLiveResponse_header'(TrF1,
								       <<Bin/binary,
									 10>>,
								       TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{'ID' := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 if TrF2 =:= 0 -> B1;
		    true ->
			e_type_int64(TrF2, <<B1/binary, 16>>, TrUserData)
		 end
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{'TTL' := F3} ->
	       begin
		 TrF3 = id(F3, TrUserData),
		 if TrF3 =:= 0 -> B2;
		    true ->
			e_type_int64(TrF3, <<B2/binary, 24>>, TrUserData)
		 end
	       end;
	   _ -> B2
	 end,
    B4 = case M of
	   #{grantedTTL := F4} ->
	       begin
		 TrF4 = id(F4, TrUserData),
		 if TrF4 =:= 0 -> B3;
		    true ->
			e_type_int64(TrF4, <<B3/binary, 32>>, TrUserData)
		 end
	       end;
	   _ -> B3
	 end,
    case M of
      #{keys := F5} ->
	  TrF5 = id(F5, TrUserData),
	  if TrF5 == [] -> B4;
	     true ->
		 'e_field_Etcd.LeaseTimeToLiveResponse_keys'(TrF5, B4,
							     TrUserData)
	  end;
      _ -> B4
    end.

'encode_msg_Etcd.LeaseLeasesRequest'(_Msg,
				     _TrUserData) ->
    <<>>.

'encode_msg_Etcd.LeaseStatus'(Msg, TrUserData) ->
    'encode_msg_Etcd.LeaseStatus'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.LeaseStatus'(#{} = M, Bin,
			      TrUserData) ->
    case M of
      #{'ID' := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= 0 -> Bin;
	       true ->
		   e_type_int64(TrF1, <<Bin/binary, 8>>, TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.LeaseLeasesResponse'(Msg,
				      TrUserData) ->
    'encode_msg_Etcd.LeaseLeasesResponse'(Msg, <<>>,
					  TrUserData).


'encode_msg_Etcd.LeaseLeasesResponse'(#{} = M, Bin,
				      TrUserData) ->
    B1 = case M of
	   #{header := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= undefined -> Bin;
		    true ->
			'e_mfield_Etcd.LeaseLeasesResponse_header'(TrF1,
								   <<Bin/binary,
								     10>>,
								   TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{leases := F2} ->
	  TrF2 = id(F2, TrUserData),
	  if TrF2 == [] -> B1;
	     true ->
		 'e_field_Etcd.LeaseLeasesResponse_leases'(TrF2, B1,
							   TrUserData)
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.Member'(Msg, TrUserData) ->
    'encode_msg_Etcd.Member'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.Member'(#{} = M, Bin, TrUserData) ->
    B1 = case M of
	   #{'ID' := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= 0 -> Bin;
		    true -> e_varint(TrF1, <<Bin/binary, 8>>, TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{name := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 case is_empty_string(TrF2) of
		   true -> B1;
		   false ->
		       e_type_string(TrF2, <<B1/binary, 18>>, TrUserData)
		 end
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{peerURLs := F3} ->
	       TrF3 = id(F3, TrUserData),
	       if TrF3 == [] -> B2;
		  true ->
		      'e_field_Etcd.Member_peerURLs'(TrF3, B2, TrUserData)
	       end;
	   _ -> B2
	 end,
    B4 = case M of
	   #{clientURLs := F4} ->
	       TrF4 = id(F4, TrUserData),
	       if TrF4 == [] -> B3;
		  true ->
		      'e_field_Etcd.Member_clientURLs'(TrF4, B3, TrUserData)
	       end;
	   _ -> B3
	 end,
    case M of
      #{isLearner := F5} ->
	  begin
	    TrF5 = id(F5, TrUserData),
	    if TrF5 =:= false -> B4;
	       true -> e_type_bool(TrF5, <<B4/binary, 40>>, TrUserData)
	    end
	  end;
      _ -> B4
    end.

'encode_msg_Etcd.MemberAddRequest'(Msg, TrUserData) ->
    'encode_msg_Etcd.MemberAddRequest'(Msg, <<>>,
				       TrUserData).


'encode_msg_Etcd.MemberAddRequest'(#{} = M, Bin,
				   TrUserData) ->
    B1 = case M of
	   #{peerURLs := F1} ->
	       TrF1 = id(F1, TrUserData),
	       if TrF1 == [] -> Bin;
		  true ->
		      'e_field_Etcd.MemberAddRequest_peerURLs'(TrF1, Bin,
							       TrUserData)
	       end;
	   _ -> Bin
	 end,
    case M of
      #{isLearner := F2} ->
	  begin
	    TrF2 = id(F2, TrUserData),
	    if TrF2 =:= false -> B1;
	       true -> e_type_bool(TrF2, <<B1/binary, 16>>, TrUserData)
	    end
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.MemberAddResponse'(Msg, TrUserData) ->
    'encode_msg_Etcd.MemberAddResponse'(Msg, <<>>,
					TrUserData).


'encode_msg_Etcd.MemberAddResponse'(#{} = M, Bin,
				    TrUserData) ->
    B1 = case M of
	   #{header := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= undefined -> Bin;
		    true ->
			'e_mfield_Etcd.MemberAddResponse_header'(TrF1,
								 <<Bin/binary,
								   10>>,
								 TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{member := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 if TrF2 =:= undefined -> B1;
		    true ->
			'e_mfield_Etcd.MemberAddResponse_member'(TrF2,
								 <<B1/binary,
								   18>>,
								 TrUserData)
		 end
	       end;
	   _ -> B1
	 end,
    case M of
      #{members := F3} ->
	  TrF3 = id(F3, TrUserData),
	  if TrF3 == [] -> B2;
	     true ->
		 'e_field_Etcd.MemberAddResponse_members'(TrF3, B2,
							  TrUserData)
	  end;
      _ -> B2
    end.

'encode_msg_Etcd.MemberRemoveRequest'(Msg,
				      TrUserData) ->
    'encode_msg_Etcd.MemberRemoveRequest'(Msg, <<>>,
					  TrUserData).


'encode_msg_Etcd.MemberRemoveRequest'(#{} = M, Bin,
				      TrUserData) ->
    case M of
      #{'ID' := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= 0 -> Bin;
	       true -> e_varint(TrF1, <<Bin/binary, 8>>, TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.MemberRemoveResponse'(Msg,
				       TrUserData) ->
    'encode_msg_Etcd.MemberRemoveResponse'(Msg, <<>>,
					   TrUserData).


'encode_msg_Etcd.MemberRemoveResponse'(#{} = M, Bin,
				       TrUserData) ->
    B1 = case M of
	   #{header := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= undefined -> Bin;
		    true ->
			'e_mfield_Etcd.MemberRemoveResponse_header'(TrF1,
								    <<Bin/binary,
								      10>>,
								    TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{members := F2} ->
	  TrF2 = id(F2, TrUserData),
	  if TrF2 == [] -> B1;
	     true ->
		 'e_field_Etcd.MemberRemoveResponse_members'(TrF2, B1,
							     TrUserData)
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.MemberUpdateRequest'(Msg,
				      TrUserData) ->
    'encode_msg_Etcd.MemberUpdateRequest'(Msg, <<>>,
					  TrUserData).


'encode_msg_Etcd.MemberUpdateRequest'(#{} = M, Bin,
				      TrUserData) ->
    B1 = case M of
	   #{'ID' := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= 0 -> Bin;
		    true -> e_varint(TrF1, <<Bin/binary, 8>>, TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{peerURLs := F2} ->
	  TrF2 = id(F2, TrUserData),
	  if TrF2 == [] -> B1;
	     true ->
		 'e_field_Etcd.MemberUpdateRequest_peerURLs'(TrF2, B1,
							     TrUserData)
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.MemberUpdateResponse'(Msg,
				       TrUserData) ->
    'encode_msg_Etcd.MemberUpdateResponse'(Msg, <<>>,
					   TrUserData).


'encode_msg_Etcd.MemberUpdateResponse'(#{} = M, Bin,
				       TrUserData) ->
    B1 = case M of
	   #{header := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= undefined -> Bin;
		    true ->
			'e_mfield_Etcd.MemberUpdateResponse_header'(TrF1,
								    <<Bin/binary,
								      10>>,
								    TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{members := F2} ->
	  TrF2 = id(F2, TrUserData),
	  if TrF2 == [] -> B1;
	     true ->
		 'e_field_Etcd.MemberUpdateResponse_members'(TrF2, B1,
							     TrUserData)
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.MemberListRequest'(_Msg,
				    _TrUserData) ->
    <<>>.

'encode_msg_Etcd.MemberListResponse'(Msg, TrUserData) ->
    'encode_msg_Etcd.MemberListResponse'(Msg, <<>>,
					 TrUserData).


'encode_msg_Etcd.MemberListResponse'(#{} = M, Bin,
				     TrUserData) ->
    B1 = case M of
	   #{header := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= undefined -> Bin;
		    true ->
			'e_mfield_Etcd.MemberListResponse_header'(TrF1,
								  <<Bin/binary,
								    10>>,
								  TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{members := F2} ->
	  TrF2 = id(F2, TrUserData),
	  if TrF2 == [] -> B1;
	     true ->
		 'e_field_Etcd.MemberListResponse_members'(TrF2, B1,
							   TrUserData)
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.MemberPromoteRequest'(Msg,
				       TrUserData) ->
    'encode_msg_Etcd.MemberPromoteRequest'(Msg, <<>>,
					   TrUserData).


'encode_msg_Etcd.MemberPromoteRequest'(#{} = M, Bin,
				       TrUserData) ->
    case M of
      #{'ID' := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= 0 -> Bin;
	       true -> e_varint(TrF1, <<Bin/binary, 8>>, TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.MemberPromoteResponse'(Msg,
					TrUserData) ->
    'encode_msg_Etcd.MemberPromoteResponse'(Msg, <<>>,
					    TrUserData).


'encode_msg_Etcd.MemberPromoteResponse'(#{} = M, Bin,
					TrUserData) ->
    B1 = case M of
	   #{header := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= undefined -> Bin;
		    true ->
			'e_mfield_Etcd.MemberPromoteResponse_header'(TrF1,
								     <<Bin/binary,
								       10>>,
								     TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{members := F2} ->
	  TrF2 = id(F2, TrUserData),
	  if TrF2 == [] -> B1;
	     true ->
		 'e_field_Etcd.MemberPromoteResponse_members'(TrF2, B1,
							      TrUserData)
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.DefragmentRequest'(_Msg,
				    _TrUserData) ->
    <<>>.

'encode_msg_Etcd.DefragmentResponse'(Msg, TrUserData) ->
    'encode_msg_Etcd.DefragmentResponse'(Msg, <<>>,
					 TrUserData).


'encode_msg_Etcd.DefragmentResponse'(#{} = M, Bin,
				     TrUserData) ->
    case M of
      #{header := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= undefined -> Bin;
	       true ->
		   'e_mfield_Etcd.DefragmentResponse_header'(TrF1,
							     <<Bin/binary, 10>>,
							     TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.MoveLeaderRequest'(Msg, TrUserData) ->
    'encode_msg_Etcd.MoveLeaderRequest'(Msg, <<>>,
					TrUserData).


'encode_msg_Etcd.MoveLeaderRequest'(#{} = M, Bin,
				    TrUserData) ->
    case M of
      #{targetID := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= 0 -> Bin;
	       true -> e_varint(TrF1, <<Bin/binary, 8>>, TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.MoveLeaderResponse'(Msg, TrUserData) ->
    'encode_msg_Etcd.MoveLeaderResponse'(Msg, <<>>,
					 TrUserData).


'encode_msg_Etcd.MoveLeaderResponse'(#{} = M, Bin,
				     TrUserData) ->
    case M of
      #{header := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= undefined -> Bin;
	       true ->
		   'e_mfield_Etcd.MoveLeaderResponse_header'(TrF1,
							     <<Bin/binary, 10>>,
							     TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.AlarmRequest'(Msg, TrUserData) ->
    'encode_msg_Etcd.AlarmRequest'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.AlarmRequest'(#{} = M, Bin,
			       TrUserData) ->
    B1 = case M of
	   #{action := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= 'GET'; TrF1 =:= 0 -> Bin;
		    true ->
			'e_enum_Etcd.AlarmRequest.AlarmAction'(TrF1,
							       <<Bin/binary,
								 8>>,
							       TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{memberID := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 if TrF2 =:= 0 -> B1;
		    true -> e_varint(TrF2, <<B1/binary, 16>>, TrUserData)
		 end
	       end;
	   _ -> B1
	 end,
    case M of
      #{alarm := F3} ->
	  begin
	    TrF3 = id(F3, TrUserData),
	    if TrF3 =:= 'NONE'; TrF3 =:= 0 -> B2;
	       true ->
		   'e_enum_Etcd.AlarmType'(TrF3, <<B2/binary, 24>>,
					   TrUserData)
	    end
	  end;
      _ -> B2
    end.

'encode_msg_Etcd.AlarmMember'(Msg, TrUserData) ->
    'encode_msg_Etcd.AlarmMember'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.AlarmMember'(#{} = M, Bin,
			      TrUserData) ->
    B1 = case M of
	   #{memberID := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= 0 -> Bin;
		    true -> e_varint(TrF1, <<Bin/binary, 8>>, TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{alarm := F2} ->
	  begin
	    TrF2 = id(F2, TrUserData),
	    if TrF2 =:= 'NONE'; TrF2 =:= 0 -> B1;
	       true ->
		   'e_enum_Etcd.AlarmType'(TrF2, <<B1/binary, 16>>,
					   TrUserData)
	    end
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.AlarmResponse'(Msg, TrUserData) ->
    'encode_msg_Etcd.AlarmResponse'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.AlarmResponse'(#{} = M, Bin,
				TrUserData) ->
    B1 = case M of
	   #{header := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= undefined -> Bin;
		    true ->
			'e_mfield_Etcd.AlarmResponse_header'(TrF1,
							     <<Bin/binary, 10>>,
							     TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{alarms := F2} ->
	  TrF2 = id(F2, TrUserData),
	  if TrF2 == [] -> B1;
	     true ->
		 'e_field_Etcd.AlarmResponse_alarms'(TrF2, B1,
						     TrUserData)
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.StatusRequest'(_Msg, _TrUserData) ->
    <<>>.

'encode_msg_Etcd.StatusResponse'(Msg, TrUserData) ->
    'encode_msg_Etcd.StatusResponse'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.StatusResponse'(#{} = M, Bin,
				 TrUserData) ->
    B1 = case M of
	   #{header := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= undefined -> Bin;
		    true ->
			'e_mfield_Etcd.StatusResponse_header'(TrF1,
							      <<Bin/binary,
								10>>,
							      TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{version := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 case is_empty_string(TrF2) of
		   true -> B1;
		   false ->
		       e_type_string(TrF2, <<B1/binary, 18>>, TrUserData)
		 end
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{dbSize := F3} ->
	       begin
		 TrF3 = id(F3, TrUserData),
		 if TrF3 =:= 0 -> B2;
		    true ->
			e_type_int64(TrF3, <<B2/binary, 24>>, TrUserData)
		 end
	       end;
	   _ -> B2
	 end,
    B4 = case M of
	   #{leader := F4} ->
	       begin
		 TrF4 = id(F4, TrUserData),
		 if TrF4 =:= 0 -> B3;
		    true -> e_varint(TrF4, <<B3/binary, 32>>, TrUserData)
		 end
	       end;
	   _ -> B3
	 end,
    B5 = case M of
	   #{raftIndex := F5} ->
	       begin
		 TrF5 = id(F5, TrUserData),
		 if TrF5 =:= 0 -> B4;
		    true -> e_varint(TrF5, <<B4/binary, 40>>, TrUserData)
		 end
	       end;
	   _ -> B4
	 end,
    B6 = case M of
	   #{raftTerm := F6} ->
	       begin
		 TrF6 = id(F6, TrUserData),
		 if TrF6 =:= 0 -> B5;
		    true -> e_varint(TrF6, <<B5/binary, 48>>, TrUserData)
		 end
	       end;
	   _ -> B5
	 end,
    B7 = case M of
	   #{raftAppliedIndex := F7} ->
	       begin
		 TrF7 = id(F7, TrUserData),
		 if TrF7 =:= 0 -> B6;
		    true -> e_varint(TrF7, <<B6/binary, 56>>, TrUserData)
		 end
	       end;
	   _ -> B6
	 end,
    B8 = case M of
	   #{errors := F8} ->
	       TrF8 = id(F8, TrUserData),
	       if TrF8 == [] -> B7;
		  true ->
		      'e_field_Etcd.StatusResponse_errors'(TrF8, B7,
							   TrUserData)
	       end;
	   _ -> B7
	 end,
    B9 = case M of
	   #{dbSizeInUse := F9} ->
	       begin
		 TrF9 = id(F9, TrUserData),
		 if TrF9 =:= 0 -> B8;
		    true ->
			e_type_int64(TrF9, <<B8/binary, 72>>, TrUserData)
		 end
	       end;
	   _ -> B8
	 end,
    case M of
      #{isLearner := F10} ->
	  begin
	    TrF10 = id(F10, TrUserData),
	    if TrF10 =:= false -> B9;
	       true ->
		   e_type_bool(TrF10, <<B9/binary, 80>>, TrUserData)
	    end
	  end;
      _ -> B9
    end.

'encode_msg_Etcd.AuthEnableRequest'(_Msg,
				    _TrUserData) ->
    <<>>.

'encode_msg_Etcd.AuthDisableRequest'(_Msg,
				     _TrUserData) ->
    <<>>.

'encode_msg_Etcd.AuthenticateRequest'(Msg,
				      TrUserData) ->
    'encode_msg_Etcd.AuthenticateRequest'(Msg, <<>>,
					  TrUserData).


'encode_msg_Etcd.AuthenticateRequest'(#{} = M, Bin,
				      TrUserData) ->
    B1 = case M of
	   #{name := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 case is_empty_string(TrF1) of
		   true -> Bin;
		   false ->
		       e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{password := F2} ->
	  begin
	    TrF2 = id(F2, TrUserData),
	    case is_empty_string(TrF2) of
	      true -> B1;
	      false ->
		  e_type_string(TrF2, <<B1/binary, 18>>, TrUserData)
	    end
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.AuthUserAddRequest'(Msg, TrUserData) ->
    'encode_msg_Etcd.AuthUserAddRequest'(Msg, <<>>,
					 TrUserData).


'encode_msg_Etcd.AuthUserAddRequest'(#{} = M, Bin,
				     TrUserData) ->
    B1 = case M of
	   #{name := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 case is_empty_string(TrF1) of
		   true -> Bin;
		   false ->
		       e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{password := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 case is_empty_string(TrF2) of
		   true -> B1;
		   false ->
		       e_type_string(TrF2, <<B1/binary, 18>>, TrUserData)
		 end
	       end;
	   _ -> B1
	 end,
    case M of
      #{options := F3} ->
	  begin
	    TrF3 = id(F3, TrUserData),
	    if TrF3 =:= undefined -> B2;
	       true ->
		   'e_mfield_Etcd.AuthUserAddRequest_options'(TrF3,
							      <<B2/binary, 26>>,
							      TrUserData)
	    end
	  end;
      _ -> B2
    end.

'encode_msg_Etcd.AuthUserGetRequest'(Msg, TrUserData) ->
    'encode_msg_Etcd.AuthUserGetRequest'(Msg, <<>>,
					 TrUserData).


'encode_msg_Etcd.AuthUserGetRequest'(#{} = M, Bin,
				     TrUserData) ->
    case M of
      #{name := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    case is_empty_string(TrF1) of
	      true -> Bin;
	      false ->
		  e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.AuthUserDeleteRequest'(Msg,
					TrUserData) ->
    'encode_msg_Etcd.AuthUserDeleteRequest'(Msg, <<>>,
					    TrUserData).


'encode_msg_Etcd.AuthUserDeleteRequest'(#{} = M, Bin,
					TrUserData) ->
    case M of
      #{name := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    case is_empty_string(TrF1) of
	      true -> Bin;
	      false ->
		  e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.AuthUserChangePasswordRequest'(Msg,
						TrUserData) ->
    'encode_msg_Etcd.AuthUserChangePasswordRequest'(Msg,
						    <<>>, TrUserData).


'encode_msg_Etcd.AuthUserChangePasswordRequest'(#{} = M,
						Bin, TrUserData) ->
    B1 = case M of
	   #{name := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 case is_empty_string(TrF1) of
		   true -> Bin;
		   false ->
		       e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{password := F2} ->
	  begin
	    TrF2 = id(F2, TrUserData),
	    case is_empty_string(TrF2) of
	      true -> B1;
	      false ->
		  e_type_string(TrF2, <<B1/binary, 18>>, TrUserData)
	    end
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.AuthUserGrantRoleRequest'(Msg,
					   TrUserData) ->
    'encode_msg_Etcd.AuthUserGrantRoleRequest'(Msg, <<>>,
					       TrUserData).


'encode_msg_Etcd.AuthUserGrantRoleRequest'(#{} = M, Bin,
					   TrUserData) ->
    B1 = case M of
	   #{user := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 case is_empty_string(TrF1) of
		   true -> Bin;
		   false ->
		       e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{role := F2} ->
	  begin
	    TrF2 = id(F2, TrUserData),
	    case is_empty_string(TrF2) of
	      true -> B1;
	      false ->
		  e_type_string(TrF2, <<B1/binary, 18>>, TrUserData)
	    end
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.AuthUserRevokeRoleRequest'(Msg,
					    TrUserData) ->
    'encode_msg_Etcd.AuthUserRevokeRoleRequest'(Msg, <<>>,
						TrUserData).


'encode_msg_Etcd.AuthUserRevokeRoleRequest'(#{} = M,
					    Bin, TrUserData) ->
    B1 = case M of
	   #{name := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 case is_empty_string(TrF1) of
		   true -> Bin;
		   false ->
		       e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{role := F2} ->
	  begin
	    TrF2 = id(F2, TrUserData),
	    case is_empty_string(TrF2) of
	      true -> B1;
	      false ->
		  e_type_string(TrF2, <<B1/binary, 18>>, TrUserData)
	    end
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.AuthRoleAddRequest'(Msg, TrUserData) ->
    'encode_msg_Etcd.AuthRoleAddRequest'(Msg, <<>>,
					 TrUserData).


'encode_msg_Etcd.AuthRoleAddRequest'(#{} = M, Bin,
				     TrUserData) ->
    case M of
      #{name := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    case is_empty_string(TrF1) of
	      true -> Bin;
	      false ->
		  e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.AuthRoleGetRequest'(Msg, TrUserData) ->
    'encode_msg_Etcd.AuthRoleGetRequest'(Msg, <<>>,
					 TrUserData).


'encode_msg_Etcd.AuthRoleGetRequest'(#{} = M, Bin,
				     TrUserData) ->
    case M of
      #{role := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    case is_empty_string(TrF1) of
	      true -> Bin;
	      false ->
		  e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.AuthUserListRequest'(_Msg,
				      _TrUserData) ->
    <<>>.

'encode_msg_Etcd.AuthRoleListRequest'(_Msg,
				      _TrUserData) ->
    <<>>.

'encode_msg_Etcd.AuthRoleDeleteRequest'(Msg,
					TrUserData) ->
    'encode_msg_Etcd.AuthRoleDeleteRequest'(Msg, <<>>,
					    TrUserData).


'encode_msg_Etcd.AuthRoleDeleteRequest'(#{} = M, Bin,
					TrUserData) ->
    case M of
      #{role := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    case is_empty_string(TrF1) of
	      true -> Bin;
	      false ->
		  e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.AuthRoleGrantPermissionRequest'(Msg,
						 TrUserData) ->
    'encode_msg_Etcd.AuthRoleGrantPermissionRequest'(Msg,
						     <<>>, TrUserData).


'encode_msg_Etcd.AuthRoleGrantPermissionRequest'(#{} =
						     M,
						 Bin, TrUserData) ->
    B1 = case M of
	   #{name := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 case is_empty_string(TrF1) of
		   true -> Bin;
		   false ->
		       e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{perm := F2} ->
	  begin
	    TrF2 = id(F2, TrUserData),
	    if TrF2 =:= undefined -> B1;
	       true ->
		   'e_mfield_Etcd.AuthRoleGrantPermissionRequest_perm'(TrF2,
								       <<B1/binary,
									 18>>,
								       TrUserData)
	    end
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.AuthRoleRevokePermissionRequest'(Msg,
						  TrUserData) ->
    'encode_msg_Etcd.AuthRoleRevokePermissionRequest'(Msg,
						      <<>>, TrUserData).


'encode_msg_Etcd.AuthRoleRevokePermissionRequest'(#{} =
						      M,
						  Bin, TrUserData) ->
    B1 = case M of
	   #{role := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 case is_empty_string(TrF1) of
		   true -> Bin;
		   false ->
		       e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{key := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 case iolist_size(TrF2) of
		   0 -> B1;
		   _ -> e_type_bytes(TrF2, <<B1/binary, 18>>, TrUserData)
		 end
	       end;
	   _ -> B1
	 end,
    case M of
      #{range_end := F3} ->
	  begin
	    TrF3 = id(F3, TrUserData),
	    case iolist_size(TrF3) of
	      0 -> B2;
	      _ -> e_type_bytes(TrF3, <<B2/binary, 26>>, TrUserData)
	    end
	  end;
      _ -> B2
    end.

'encode_msg_Etcd.AuthEnableResponse'(Msg, TrUserData) ->
    'encode_msg_Etcd.AuthEnableResponse'(Msg, <<>>,
					 TrUserData).


'encode_msg_Etcd.AuthEnableResponse'(#{} = M, Bin,
				     TrUserData) ->
    case M of
      #{header := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= undefined -> Bin;
	       true ->
		   'e_mfield_Etcd.AuthEnableResponse_header'(TrF1,
							     <<Bin/binary, 10>>,
							     TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.AuthDisableResponse'(Msg,
				      TrUserData) ->
    'encode_msg_Etcd.AuthDisableResponse'(Msg, <<>>,
					  TrUserData).


'encode_msg_Etcd.AuthDisableResponse'(#{} = M, Bin,
				      TrUserData) ->
    case M of
      #{header := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= undefined -> Bin;
	       true ->
		   'e_mfield_Etcd.AuthDisableResponse_header'(TrF1,
							      <<Bin/binary,
								10>>,
							      TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.AuthenticateResponse'(Msg,
				       TrUserData) ->
    'encode_msg_Etcd.AuthenticateResponse'(Msg, <<>>,
					   TrUserData).


'encode_msg_Etcd.AuthenticateResponse'(#{} = M, Bin,
				       TrUserData) ->
    B1 = case M of
	   #{header := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= undefined -> Bin;
		    true ->
			'e_mfield_Etcd.AuthenticateResponse_header'(TrF1,
								    <<Bin/binary,
								      10>>,
								    TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{token := F2} ->
	  begin
	    TrF2 = id(F2, TrUserData),
	    case is_empty_string(TrF2) of
	      true -> B1;
	      false ->
		  e_type_string(TrF2, <<B1/binary, 18>>, TrUserData)
	    end
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.AuthUserAddResponse'(Msg,
				      TrUserData) ->
    'encode_msg_Etcd.AuthUserAddResponse'(Msg, <<>>,
					  TrUserData).


'encode_msg_Etcd.AuthUserAddResponse'(#{} = M, Bin,
				      TrUserData) ->
    case M of
      #{header := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= undefined -> Bin;
	       true ->
		   'e_mfield_Etcd.AuthUserAddResponse_header'(TrF1,
							      <<Bin/binary,
								10>>,
							      TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.AuthUserGetResponse'(Msg,
				      TrUserData) ->
    'encode_msg_Etcd.AuthUserGetResponse'(Msg, <<>>,
					  TrUserData).


'encode_msg_Etcd.AuthUserGetResponse'(#{} = M, Bin,
				      TrUserData) ->
    B1 = case M of
	   #{header := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= undefined -> Bin;
		    true ->
			'e_mfield_Etcd.AuthUserGetResponse_header'(TrF1,
								   <<Bin/binary,
								     10>>,
								   TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{roles := F2} ->
	  TrF2 = id(F2, TrUserData),
	  if TrF2 == [] -> B1;
	     true ->
		 'e_field_Etcd.AuthUserGetResponse_roles'(TrF2, B1,
							  TrUserData)
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.AuthUserDeleteResponse'(Msg,
					 TrUserData) ->
    'encode_msg_Etcd.AuthUserDeleteResponse'(Msg, <<>>,
					     TrUserData).


'encode_msg_Etcd.AuthUserDeleteResponse'(#{} = M, Bin,
					 TrUserData) ->
    case M of
      #{header := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= undefined -> Bin;
	       true ->
		   'e_mfield_Etcd.AuthUserDeleteResponse_header'(TrF1,
								 <<Bin/binary,
								   10>>,
								 TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.AuthUserChangePasswordResponse'(Msg,
						 TrUserData) ->
    'encode_msg_Etcd.AuthUserChangePasswordResponse'(Msg,
						     <<>>, TrUserData).


'encode_msg_Etcd.AuthUserChangePasswordResponse'(#{} =
						     M,
						 Bin, TrUserData) ->
    case M of
      #{header := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= undefined -> Bin;
	       true ->
		   'e_mfield_Etcd.AuthUserChangePasswordResponse_header'(TrF1,
									 <<Bin/binary,
									   10>>,
									 TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.AuthUserGrantRoleResponse'(Msg,
					    TrUserData) ->
    'encode_msg_Etcd.AuthUserGrantRoleResponse'(Msg, <<>>,
						TrUserData).


'encode_msg_Etcd.AuthUserGrantRoleResponse'(#{} = M,
					    Bin, TrUserData) ->
    case M of
      #{header := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= undefined -> Bin;
	       true ->
		   'e_mfield_Etcd.AuthUserGrantRoleResponse_header'(TrF1,
								    <<Bin/binary,
								      10>>,
								    TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.AuthUserRevokeRoleResponse'(Msg,
					     TrUserData) ->
    'encode_msg_Etcd.AuthUserRevokeRoleResponse'(Msg, <<>>,
						 TrUserData).


'encode_msg_Etcd.AuthUserRevokeRoleResponse'(#{} = M,
					     Bin, TrUserData) ->
    case M of
      #{header := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= undefined -> Bin;
	       true ->
		   'e_mfield_Etcd.AuthUserRevokeRoleResponse_header'(TrF1,
								     <<Bin/binary,
								       10>>,
								     TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.AuthRoleAddResponse'(Msg,
				      TrUserData) ->
    'encode_msg_Etcd.AuthRoleAddResponse'(Msg, <<>>,
					  TrUserData).


'encode_msg_Etcd.AuthRoleAddResponse'(#{} = M, Bin,
				      TrUserData) ->
    case M of
      #{header := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= undefined -> Bin;
	       true ->
		   'e_mfield_Etcd.AuthRoleAddResponse_header'(TrF1,
							      <<Bin/binary,
								10>>,
							      TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.AuthRoleGetResponse'(Msg,
				      TrUserData) ->
    'encode_msg_Etcd.AuthRoleGetResponse'(Msg, <<>>,
					  TrUserData).


'encode_msg_Etcd.AuthRoleGetResponse'(#{} = M, Bin,
				      TrUserData) ->
    B1 = case M of
	   #{header := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= undefined -> Bin;
		    true ->
			'e_mfield_Etcd.AuthRoleGetResponse_header'(TrF1,
								   <<Bin/binary,
								     10>>,
								   TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{perm := F2} ->
	  TrF2 = id(F2, TrUserData),
	  if TrF2 == [] -> B1;
	     true ->
		 'e_field_Etcd.AuthRoleGetResponse_perm'(TrF2, B1,
							 TrUserData)
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.AuthRoleListResponse'(Msg,
				       TrUserData) ->
    'encode_msg_Etcd.AuthRoleListResponse'(Msg, <<>>,
					   TrUserData).


'encode_msg_Etcd.AuthRoleListResponse'(#{} = M, Bin,
				       TrUserData) ->
    B1 = case M of
	   #{header := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= undefined -> Bin;
		    true ->
			'e_mfield_Etcd.AuthRoleListResponse_header'(TrF1,
								    <<Bin/binary,
								      10>>,
								    TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{roles := F2} ->
	  TrF2 = id(F2, TrUserData),
	  if TrF2 == [] -> B1;
	     true ->
		 'e_field_Etcd.AuthRoleListResponse_roles'(TrF2, B1,
							   TrUserData)
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.AuthUserListResponse'(Msg,
				       TrUserData) ->
    'encode_msg_Etcd.AuthUserListResponse'(Msg, <<>>,
					   TrUserData).


'encode_msg_Etcd.AuthUserListResponse'(#{} = M, Bin,
				       TrUserData) ->
    B1 = case M of
	   #{header := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= undefined -> Bin;
		    true ->
			'e_mfield_Etcd.AuthUserListResponse_header'(TrF1,
								    <<Bin/binary,
								      10>>,
								    TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{users := F2} ->
	  TrF2 = id(F2, TrUserData),
	  if TrF2 == [] -> B1;
	     true ->
		 'e_field_Etcd.AuthUserListResponse_users'(TrF2, B1,
							   TrUserData)
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.AuthRoleDeleteResponse'(Msg,
					 TrUserData) ->
    'encode_msg_Etcd.AuthRoleDeleteResponse'(Msg, <<>>,
					     TrUserData).


'encode_msg_Etcd.AuthRoleDeleteResponse'(#{} = M, Bin,
					 TrUserData) ->
    case M of
      #{header := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= undefined -> Bin;
	       true ->
		   'e_mfield_Etcd.AuthRoleDeleteResponse_header'(TrF1,
								 <<Bin/binary,
								   10>>,
								 TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.AuthRoleGrantPermissionResponse'(Msg,
						  TrUserData) ->
    'encode_msg_Etcd.AuthRoleGrantPermissionResponse'(Msg,
						      <<>>, TrUserData).


'encode_msg_Etcd.AuthRoleGrantPermissionResponse'(#{} =
						      M,
						  Bin, TrUserData) ->
    case M of
      #{header := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= undefined -> Bin;
	       true ->
		   'e_mfield_Etcd.AuthRoleGrantPermissionResponse_header'(TrF1,
									  <<Bin/binary,
									    10>>,
									  TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.AuthRoleRevokePermissionResponse'(Msg,
						   TrUserData) ->
    'encode_msg_Etcd.AuthRoleRevokePermissionResponse'(Msg,
						       <<>>, TrUserData).


'encode_msg_Etcd.AuthRoleRevokePermissionResponse'(#{} =
						       M,
						   Bin, TrUserData) ->
    case M of
      #{header := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= undefined -> Bin;
	       true ->
		   'e_mfield_Etcd.AuthRoleRevokePermissionResponse_header'(TrF1,
									   <<Bin/binary,
									     10>>,
									   TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.HealthCheckRequest'(Msg, TrUserData) ->
    'encode_msg_Etcd.HealthCheckRequest'(Msg, <<>>,
					 TrUserData).


'encode_msg_Etcd.HealthCheckRequest'(#{} = M, Bin,
				     TrUserData) ->
    case M of
      #{service := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    case is_empty_string(TrF1) of
	      true -> Bin;
	      false ->
		  e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.HealthCheckResponse'(Msg,
				      TrUserData) ->
    'encode_msg_Etcd.HealthCheckResponse'(Msg, <<>>,
					  TrUserData).


'encode_msg_Etcd.HealthCheckResponse'(#{} = M, Bin,
				      TrUserData) ->
    case M of
      #{status := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= 'UNKNOWN'; TrF1 =:= 0 -> Bin;
	       true ->
		   'e_enum_Etcd.HealthCheckResponse.ServingStatus'(TrF1,
								   <<Bin/binary,
								     8>>,
								   TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.LockRequest'(Msg, TrUserData) ->
    'encode_msg_Etcd.LockRequest'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.LockRequest'(#{} = M, Bin,
			      TrUserData) ->
    B1 = case M of
	   #{name := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 case iolist_size(TrF1) of
		   0 -> Bin;
		   _ -> e_type_bytes(TrF1, <<Bin/binary, 10>>, TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{lease := F2} ->
	  begin
	    TrF2 = id(F2, TrUserData),
	    if TrF2 =:= 0 -> B1;
	       true ->
		   e_type_int64(TrF2, <<B1/binary, 16>>, TrUserData)
	    end
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.LockResponse'(Msg, TrUserData) ->
    'encode_msg_Etcd.LockResponse'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.LockResponse'(#{} = M, Bin,
			       TrUserData) ->
    B1 = case M of
	   #{header := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= undefined -> Bin;
		    true ->
			'e_mfield_Etcd.LockResponse_header'(TrF1,
							    <<Bin/binary, 10>>,
							    TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{key := F2} ->
	  begin
	    TrF2 = id(F2, TrUserData),
	    case iolist_size(TrF2) of
	      0 -> B1;
	      _ -> e_type_bytes(TrF2, <<B1/binary, 18>>, TrUserData)
	    end
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.UnlockRequest'(Msg, TrUserData) ->
    'encode_msg_Etcd.UnlockRequest'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.UnlockRequest'(#{} = M, Bin,
				TrUserData) ->
    case M of
      #{key := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    case iolist_size(TrF1) of
	      0 -> Bin;
	      _ -> e_type_bytes(TrF1, <<Bin/binary, 10>>, TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.UnlockResponse'(Msg, TrUserData) ->
    'encode_msg_Etcd.UnlockResponse'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.UnlockResponse'(#{} = M, Bin,
				 TrUserData) ->
    case M of
      #{header := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= undefined -> Bin;
	       true ->
		   'e_mfield_Etcd.UnlockResponse_header'(TrF1,
							 <<Bin/binary, 10>>,
							 TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.CampaignRequest'(Msg, TrUserData) ->
    'encode_msg_Etcd.CampaignRequest'(Msg, <<>>,
				      TrUserData).


'encode_msg_Etcd.CampaignRequest'(#{} = M, Bin,
				  TrUserData) ->
    B1 = case M of
	   #{name := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 case iolist_size(TrF1) of
		   0 -> Bin;
		   _ -> e_type_bytes(TrF1, <<Bin/binary, 10>>, TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{lease := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 if TrF2 =:= 0 -> B1;
		    true ->
			e_type_int64(TrF2, <<B1/binary, 16>>, TrUserData)
		 end
	       end;
	   _ -> B1
	 end,
    case M of
      #{value := F3} ->
	  begin
	    TrF3 = id(F3, TrUserData),
	    case iolist_size(TrF3) of
	      0 -> B2;
	      _ -> e_type_bytes(TrF3, <<B2/binary, 26>>, TrUserData)
	    end
	  end;
      _ -> B2
    end.

'encode_msg_Etcd.CampaignResponse'(Msg, TrUserData) ->
    'encode_msg_Etcd.CampaignResponse'(Msg, <<>>,
				       TrUserData).


'encode_msg_Etcd.CampaignResponse'(#{} = M, Bin,
				   TrUserData) ->
    B1 = case M of
	   #{header := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= undefined -> Bin;
		    true ->
			'e_mfield_Etcd.CampaignResponse_header'(TrF1,
								<<Bin/binary,
								  10>>,
								TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{leader := F2} ->
	  begin
	    TrF2 = id(F2, TrUserData),
	    if TrF2 =:= undefined -> B1;
	       true ->
		   'e_mfield_Etcd.CampaignResponse_leader'(TrF2,
							   <<B1/binary, 18>>,
							   TrUserData)
	    end
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.LeaderKey'(Msg, TrUserData) ->
    'encode_msg_Etcd.LeaderKey'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.LeaderKey'(#{} = M, Bin, TrUserData) ->
    B1 = case M of
	   #{name := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 case iolist_size(TrF1) of
		   0 -> Bin;
		   _ -> e_type_bytes(TrF1, <<Bin/binary, 10>>, TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{key := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 case iolist_size(TrF2) of
		   0 -> B1;
		   _ -> e_type_bytes(TrF2, <<B1/binary, 18>>, TrUserData)
		 end
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{rev := F3} ->
	       begin
		 TrF3 = id(F3, TrUserData),
		 if TrF3 =:= 0 -> B2;
		    true ->
			e_type_int64(TrF3, <<B2/binary, 24>>, TrUserData)
		 end
	       end;
	   _ -> B2
	 end,
    case M of
      #{lease := F4} ->
	  begin
	    TrF4 = id(F4, TrUserData),
	    if TrF4 =:= 0 -> B3;
	       true ->
		   e_type_int64(TrF4, <<B3/binary, 32>>, TrUserData)
	    end
	  end;
      _ -> B3
    end.

'encode_msg_Etcd.LeaderRequest'(Msg, TrUserData) ->
    'encode_msg_Etcd.LeaderRequest'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.LeaderRequest'(#{} = M, Bin,
				TrUserData) ->
    case M of
      #{name := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    case iolist_size(TrF1) of
	      0 -> Bin;
	      _ -> e_type_bytes(TrF1, <<Bin/binary, 10>>, TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.LeaderResponse'(Msg, TrUserData) ->
    'encode_msg_Etcd.LeaderResponse'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.LeaderResponse'(#{} = M, Bin,
				 TrUserData) ->
    B1 = case M of
	   #{header := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= undefined -> Bin;
		    true ->
			'e_mfield_Etcd.LeaderResponse_header'(TrF1,
							      <<Bin/binary,
								10>>,
							      TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{kv := F2} ->
	  begin
	    TrF2 = id(F2, TrUserData),
	    if TrF2 =:= undefined -> B1;
	       true ->
		   'e_mfield_Etcd.LeaderResponse_kv'(TrF2,
						     <<B1/binary, 18>>,
						     TrUserData)
	    end
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.ResignRequest'(Msg, TrUserData) ->
    'encode_msg_Etcd.ResignRequest'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.ResignRequest'(#{} = M, Bin,
				TrUserData) ->
    case M of
      #{leader := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= undefined -> Bin;
	       true ->
		   'e_mfield_Etcd.ResignRequest_leader'(TrF1,
							<<Bin/binary, 10>>,
							TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.ResignResponse'(Msg, TrUserData) ->
    'encode_msg_Etcd.ResignResponse'(Msg, <<>>, TrUserData).


'encode_msg_Etcd.ResignResponse'(#{} = M, Bin,
				 TrUserData) ->
    case M of
      #{header := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= undefined -> Bin;
	       true ->
		   'e_mfield_Etcd.ResignResponse_header'(TrF1,
							 <<Bin/binary, 10>>,
							 TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_Etcd.ProclaimRequest'(Msg, TrUserData) ->
    'encode_msg_Etcd.ProclaimRequest'(Msg, <<>>,
				      TrUserData).


'encode_msg_Etcd.ProclaimRequest'(#{} = M, Bin,
				  TrUserData) ->
    B1 = case M of
	   #{leader := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= undefined -> Bin;
		    true ->
			'e_mfield_Etcd.ProclaimRequest_leader'(TrF1,
							       <<Bin/binary,
								 10>>,
							       TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{value := F2} ->
	  begin
	    TrF2 = id(F2, TrUserData),
	    case iolist_size(TrF2) of
	      0 -> B1;
	      _ -> e_type_bytes(TrF2, <<B1/binary, 18>>, TrUserData)
	    end
	  end;
      _ -> B1
    end.

'encode_msg_Etcd.ProclaimResponse'(Msg, TrUserData) ->
    'encode_msg_Etcd.ProclaimResponse'(Msg, <<>>,
				       TrUserData).


'encode_msg_Etcd.ProclaimResponse'(#{} = M, Bin,
				   TrUserData) ->
    case M of
      #{header := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= undefined -> Bin;
	       true ->
		   'e_mfield_Etcd.ProclaimResponse_header'(TrF1,
							   <<Bin/binary, 10>>,
							   TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_google.protobuf.FileDescriptorSet'(Msg,
					       TrUserData) ->
    'encode_msg_google.protobuf.FileDescriptorSet'(Msg,
						   <<>>, TrUserData).


'encode_msg_google.protobuf.FileDescriptorSet'(#{} = M,
					       Bin, TrUserData) ->
    case M of
      #{file := F1} ->
	  TrF1 = id(F1, TrUserData),
	  if TrF1 == [] -> Bin;
	     true ->
		 'e_field_google.protobuf.FileDescriptorSet_file'(TrF1,
								  Bin,
								  TrUserData)
	  end;
      _ -> Bin
    end.

'encode_msg_google.protobuf.FileDescriptorProto'(Msg,
						 TrUserData) ->
    'encode_msg_google.protobuf.FileDescriptorProto'(Msg,
						     <<>>, TrUserData).


'encode_msg_google.protobuf.FileDescriptorProto'(#{} =
						     M,
						 Bin, TrUserData) ->
    B1 = case M of
	   #{name := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{package := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 e_type_string(TrF2, <<B1/binary, 18>>, TrUserData)
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{dependency := F3} ->
	       TrF3 = id(F3, TrUserData),
	       if TrF3 == [] -> B2;
		  true ->
		      'e_field_google.protobuf.FileDescriptorProto_dependency'(TrF3,
									       B2,
									       TrUserData)
	       end;
	   _ -> B2
	 end,
    B4 = case M of
	   #{public_dependency := F4} ->
	       TrF4 = id(F4, TrUserData),
	       if TrF4 == [] -> B3;
		  true ->
		      'e_field_google.protobuf.FileDescriptorProto_public_dependency'(TrF4,
										      B3,
										      TrUserData)
	       end;
	   _ -> B3
	 end,
    B5 = case M of
	   #{weak_dependency := F5} ->
	       TrF5 = id(F5, TrUserData),
	       if TrF5 == [] -> B4;
		  true ->
		      'e_field_google.protobuf.FileDescriptorProto_weak_dependency'(TrF5,
										    B4,
										    TrUserData)
	       end;
	   _ -> B4
	 end,
    B6 = case M of
	   #{message_type := F6} ->
	       TrF6 = id(F6, TrUserData),
	       if TrF6 == [] -> B5;
		  true ->
		      'e_field_google.protobuf.FileDescriptorProto_message_type'(TrF6,
										 B5,
										 TrUserData)
	       end;
	   _ -> B5
	 end,
    B7 = case M of
	   #{enum_type := F7} ->
	       TrF7 = id(F7, TrUserData),
	       if TrF7 == [] -> B6;
		  true ->
		      'e_field_google.protobuf.FileDescriptorProto_enum_type'(TrF7,
									      B6,
									      TrUserData)
	       end;
	   _ -> B6
	 end,
    B8 = case M of
	   #{service := F8} ->
	       TrF8 = id(F8, TrUserData),
	       if TrF8 == [] -> B7;
		  true ->
		      'e_field_google.protobuf.FileDescriptorProto_service'(TrF8,
									    B7,
									    TrUserData)
	       end;
	   _ -> B7
	 end,
    B9 = case M of
	   #{extension := F9} ->
	       TrF9 = id(F9, TrUserData),
	       if TrF9 == [] -> B8;
		  true ->
		      'e_field_google.protobuf.FileDescriptorProto_extension'(TrF9,
									      B8,
									      TrUserData)
	       end;
	   _ -> B8
	 end,
    B10 = case M of
	    #{options := F10} ->
		begin
		  TrF10 = id(F10, TrUserData),
		  'e_mfield_google.protobuf.FileDescriptorProto_options'(TrF10,
									 <<B9/binary,
									   66>>,
									 TrUserData)
		end;
	    _ -> B9
	  end,
    B11 = case M of
	    #{source_code_info := F11} ->
		begin
		  TrF11 = id(F11, TrUserData),
		  'e_mfield_google.protobuf.FileDescriptorProto_source_code_info'(TrF11,
										  <<B10/binary,
										    74>>,
										  TrUserData)
		end;
	    _ -> B10
	  end,
    case M of
      #{syntax := F12} ->
	  begin
	    TrF12 = id(F12, TrUserData),
	    e_type_string(TrF12, <<B11/binary, 98>>, TrUserData)
	  end;
      _ -> B11
    end.

'encode_msg_google.protobuf.DescriptorProto.ExtensionRange'(Msg,
							    TrUserData) ->
    'encode_msg_google.protobuf.DescriptorProto.ExtensionRange'(Msg,
								<<>>,
								TrUserData).


'encode_msg_google.protobuf.DescriptorProto.ExtensionRange'(#{} =
								M,
							    Bin, TrUserData) ->
    B1 = case M of
	   #{start := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_int32(TrF1, <<Bin/binary, 8>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    case M of
      #{'end' := F2} ->
	  begin
	    TrF2 = id(F2, TrUserData),
	    e_type_int32(TrF2, <<B1/binary, 16>>, TrUserData)
	  end;
      _ -> B1
    end.

'encode_msg_google.protobuf.DescriptorProto.ReservedRange'(Msg,
							   TrUserData) ->
    'encode_msg_google.protobuf.DescriptorProto.ReservedRange'(Msg,
							       <<>>,
							       TrUserData).


'encode_msg_google.protobuf.DescriptorProto.ReservedRange'(#{} =
							       M,
							   Bin, TrUserData) ->
    B1 = case M of
	   #{start := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_int32(TrF1, <<Bin/binary, 8>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    case M of
      #{'end' := F2} ->
	  begin
	    TrF2 = id(F2, TrUserData),
	    e_type_int32(TrF2, <<B1/binary, 16>>, TrUserData)
	  end;
      _ -> B1
    end.

'encode_msg_google.protobuf.DescriptorProto'(Msg,
					     TrUserData) ->
    'encode_msg_google.protobuf.DescriptorProto'(Msg, <<>>,
						 TrUserData).


'encode_msg_google.protobuf.DescriptorProto'(#{} = M,
					     Bin, TrUserData) ->
    B1 = case M of
	   #{name := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{field := F2} ->
	       TrF2 = id(F2, TrUserData),
	       if TrF2 == [] -> B1;
		  true ->
		      'e_field_google.protobuf.DescriptorProto_field'(TrF2,
								      B1,
								      TrUserData)
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{extension := F3} ->
	       TrF3 = id(F3, TrUserData),
	       if TrF3 == [] -> B2;
		  true ->
		      'e_field_google.protobuf.DescriptorProto_extension'(TrF3,
									  B2,
									  TrUserData)
	       end;
	   _ -> B2
	 end,
    B4 = case M of
	   #{nested_type := F4} ->
	       TrF4 = id(F4, TrUserData),
	       if TrF4 == [] -> B3;
		  true ->
		      'e_field_google.protobuf.DescriptorProto_nested_type'(TrF4,
									    B3,
									    TrUserData)
	       end;
	   _ -> B3
	 end,
    B5 = case M of
	   #{enum_type := F5} ->
	       TrF5 = id(F5, TrUserData),
	       if TrF5 == [] -> B4;
		  true ->
		      'e_field_google.protobuf.DescriptorProto_enum_type'(TrF5,
									  B4,
									  TrUserData)
	       end;
	   _ -> B4
	 end,
    B6 = case M of
	   #{extension_range := F6} ->
	       TrF6 = id(F6, TrUserData),
	       if TrF6 == [] -> B5;
		  true ->
		      'e_field_google.protobuf.DescriptorProto_extension_range'(TrF6,
										B5,
										TrUserData)
	       end;
	   _ -> B5
	 end,
    B7 = case M of
	   #{oneof_decl := F7} ->
	       TrF7 = id(F7, TrUserData),
	       if TrF7 == [] -> B6;
		  true ->
		      'e_field_google.protobuf.DescriptorProto_oneof_decl'(TrF7,
									   B6,
									   TrUserData)
	       end;
	   _ -> B6
	 end,
    B8 = case M of
	   #{options := F8} ->
	       begin
		 TrF8 = id(F8, TrUserData),
		 'e_mfield_google.protobuf.DescriptorProto_options'(TrF8,
								    <<B7/binary,
								      58>>,
								    TrUserData)
	       end;
	   _ -> B7
	 end,
    B9 = case M of
	   #{reserved_range := F9} ->
	       TrF9 = id(F9, TrUserData),
	       if TrF9 == [] -> B8;
		  true ->
		      'e_field_google.protobuf.DescriptorProto_reserved_range'(TrF9,
									       B8,
									       TrUserData)
	       end;
	   _ -> B8
	 end,
    case M of
      #{reserved_name := F10} ->
	  TrF10 = id(F10, TrUserData),
	  if TrF10 == [] -> B9;
	     true ->
		 'e_field_google.protobuf.DescriptorProto_reserved_name'(TrF10,
									 B9,
									 TrUserData)
	  end;
      _ -> B9
    end.

'encode_msg_google.protobuf.FieldDescriptorProto'(Msg,
						  TrUserData) ->
    'encode_msg_google.protobuf.FieldDescriptorProto'(Msg,
						      <<>>, TrUserData).


'encode_msg_google.protobuf.FieldDescriptorProto'(#{} =
						      M,
						  Bin, TrUserData) ->
    B1 = case M of
	   #{name := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{number := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 e_type_int32(TrF2, <<B1/binary, 24>>, TrUserData)
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{label := F3} ->
	       begin
		 TrF3 = id(F3, TrUserData),
		 'e_enum_google.protobuf.FieldDescriptorProto.Label'(TrF3,
								     <<B2/binary,
								       32>>,
								     TrUserData)
	       end;
	   _ -> B2
	 end,
    B4 = case M of
	   #{type := F4} ->
	       begin
		 TrF4 = id(F4, TrUserData),
		 'e_enum_google.protobuf.FieldDescriptorProto.Type'(TrF4,
								    <<B3/binary,
								      40>>,
								    TrUserData)
	       end;
	   _ -> B3
	 end,
    B5 = case M of
	   #{type_name := F5} ->
	       begin
		 TrF5 = id(F5, TrUserData),
		 e_type_string(TrF5, <<B4/binary, 50>>, TrUserData)
	       end;
	   _ -> B4
	 end,
    B6 = case M of
	   #{extendee := F6} ->
	       begin
		 TrF6 = id(F6, TrUserData),
		 e_type_string(TrF6, <<B5/binary, 18>>, TrUserData)
	       end;
	   _ -> B5
	 end,
    B7 = case M of
	   #{default_value := F7} ->
	       begin
		 TrF7 = id(F7, TrUserData),
		 e_type_string(TrF7, <<B6/binary, 58>>, TrUserData)
	       end;
	   _ -> B6
	 end,
    B8 = case M of
	   #{oneof_index := F8} ->
	       begin
		 TrF8 = id(F8, TrUserData),
		 e_type_int32(TrF8, <<B7/binary, 72>>, TrUserData)
	       end;
	   _ -> B7
	 end,
    B9 = case M of
	   #{json_name := F9} ->
	       begin
		 TrF9 = id(F9, TrUserData),
		 e_type_string(TrF9, <<B8/binary, 82>>, TrUserData)
	       end;
	   _ -> B8
	 end,
    case M of
      #{options := F10} ->
	  begin
	    TrF10 = id(F10, TrUserData),
	    'e_mfield_google.protobuf.FieldDescriptorProto_options'(TrF10,
								    <<B9/binary,
								      66>>,
								    TrUserData)
	  end;
      _ -> B9
    end.

'encode_msg_google.protobuf.OneofDescriptorProto'(Msg,
						  TrUserData) ->
    'encode_msg_google.protobuf.OneofDescriptorProto'(Msg,
						      <<>>, TrUserData).


'encode_msg_google.protobuf.OneofDescriptorProto'(#{} =
						      M,
						  Bin, TrUserData) ->
    case M of
      #{name := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
	  end;
      _ -> Bin
    end.

'encode_msg_google.protobuf.EnumDescriptorProto'(Msg,
						 TrUserData) ->
    'encode_msg_google.protobuf.EnumDescriptorProto'(Msg,
						     <<>>, TrUserData).


'encode_msg_google.protobuf.EnumDescriptorProto'(#{} =
						     M,
						 Bin, TrUserData) ->
    B1 = case M of
	   #{name := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{value := F2} ->
	       TrF2 = id(F2, TrUserData),
	       if TrF2 == [] -> B1;
		  true ->
		      'e_field_google.protobuf.EnumDescriptorProto_value'(TrF2,
									  B1,
									  TrUserData)
	       end;
	   _ -> B1
	 end,
    case M of
      #{options := F3} ->
	  begin
	    TrF3 = id(F3, TrUserData),
	    'e_mfield_google.protobuf.EnumDescriptorProto_options'(TrF3,
								   <<B2/binary,
								     26>>,
								   TrUserData)
	  end;
      _ -> B2
    end.

'encode_msg_google.protobuf.EnumValueDescriptorProto'(Msg,
						      TrUserData) ->
    'encode_msg_google.protobuf.EnumValueDescriptorProto'(Msg,
							  <<>>, TrUserData).


'encode_msg_google.protobuf.EnumValueDescriptorProto'(#{} =
							  M,
						      Bin, TrUserData) ->
    B1 = case M of
	   #{name := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{number := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 e_type_int32(TrF2, <<B1/binary, 16>>, TrUserData)
	       end;
	   _ -> B1
	 end,
    case M of
      #{options := F3} ->
	  begin
	    TrF3 = id(F3, TrUserData),
	    'e_mfield_google.protobuf.EnumValueDescriptorProto_options'(TrF3,
									<<B2/binary,
									  26>>,
									TrUserData)
	  end;
      _ -> B2
    end.

'encode_msg_google.protobuf.ServiceDescriptorProto'(Msg,
						    TrUserData) ->
    'encode_msg_google.protobuf.ServiceDescriptorProto'(Msg,
							<<>>, TrUserData).


'encode_msg_google.protobuf.ServiceDescriptorProto'(#{} =
							M,
						    Bin, TrUserData) ->
    B1 = case M of
	   #{name := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{method := F2} ->
	       TrF2 = id(F2, TrUserData),
	       if TrF2 == [] -> B1;
		  true ->
		      'e_field_google.protobuf.ServiceDescriptorProto_method'(TrF2,
									      B1,
									      TrUserData)
	       end;
	   _ -> B1
	 end,
    case M of
      #{options := F3} ->
	  begin
	    TrF3 = id(F3, TrUserData),
	    'e_mfield_google.protobuf.ServiceDescriptorProto_options'(TrF3,
								      <<B2/binary,
									26>>,
								      TrUserData)
	  end;
      _ -> B2
    end.

'encode_msg_google.protobuf.MethodDescriptorProto'(Msg,
						   TrUserData) ->
    'encode_msg_google.protobuf.MethodDescriptorProto'(Msg,
						       <<>>, TrUserData).


'encode_msg_google.protobuf.MethodDescriptorProto'(#{} =
						       M,
						   Bin, TrUserData) ->
    B1 = case M of
	   #{name := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{input_type := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 e_type_string(TrF2, <<B1/binary, 18>>, TrUserData)
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{output_type := F3} ->
	       begin
		 TrF3 = id(F3, TrUserData),
		 e_type_string(TrF3, <<B2/binary, 26>>, TrUserData)
	       end;
	   _ -> B2
	 end,
    B4 = case M of
	   #{options := F4} ->
	       begin
		 TrF4 = id(F4, TrUserData),
		 'e_mfield_google.protobuf.MethodDescriptorProto_options'(TrF4,
									  <<B3/binary,
									    34>>,
									  TrUserData)
	       end;
	   _ -> B3
	 end,
    B5 = case M of
	   #{client_streaming := F5} ->
	       begin
		 TrF5 = id(F5, TrUserData),
		 e_type_bool(TrF5, <<B4/binary, 40>>, TrUserData)
	       end;
	   _ -> B4
	 end,
    case M of
      #{server_streaming := F6} ->
	  begin
	    TrF6 = id(F6, TrUserData),
	    e_type_bool(TrF6, <<B5/binary, 48>>, TrUserData)
	  end;
      _ -> B5
    end.

'encode_msg_google.protobuf.FileOptions'(Msg,
					 TrUserData) ->
    'encode_msg_google.protobuf.FileOptions'(Msg, <<>>,
					     TrUserData).


'encode_msg_google.protobuf.FileOptions'(#{} = M, Bin,
					 TrUserData) ->
    B1 = case M of
	   #{java_package := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{java_outer_classname := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 e_type_string(TrF2, <<B1/binary, 66>>, TrUserData)
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{java_multiple_files := F3} ->
	       begin
		 TrF3 = id(F3, TrUserData),
		 e_type_bool(TrF3, <<B2/binary, 80>>, TrUserData)
	       end;
	   _ -> B2
	 end,
    B4 = case M of
	   #{java_generate_equals_and_hash := F4} ->
	       begin
		 TrF4 = id(F4, TrUserData),
		 e_type_bool(TrF4, <<B3/binary, 160, 1>>, TrUserData)
	       end;
	   _ -> B3
	 end,
    B5 = case M of
	   #{java_string_check_utf8 := F5} ->
	       begin
		 TrF5 = id(F5, TrUserData),
		 e_type_bool(TrF5, <<B4/binary, 216, 1>>, TrUserData)
	       end;
	   _ -> B4
	 end,
    B6 = case M of
	   #{optimize_for := F6} ->
	       begin
		 TrF6 = id(F6, TrUserData),
		 'e_enum_google.protobuf.FileOptions.OptimizeMode'(TrF6,
								   <<B5/binary,
								     72>>,
								   TrUserData)
	       end;
	   _ -> B5
	 end,
    B7 = case M of
	   #{go_package := F7} ->
	       begin
		 TrF7 = id(F7, TrUserData),
		 e_type_string(TrF7, <<B6/binary, 90>>, TrUserData)
	       end;
	   _ -> B6
	 end,
    B8 = case M of
	   #{cc_generic_services := F8} ->
	       begin
		 TrF8 = id(F8, TrUserData),
		 e_type_bool(TrF8, <<B7/binary, 128, 1>>, TrUserData)
	       end;
	   _ -> B7
	 end,
    B9 = case M of
	   #{java_generic_services := F9} ->
	       begin
		 TrF9 = id(F9, TrUserData),
		 e_type_bool(TrF9, <<B8/binary, 136, 1>>, TrUserData)
	       end;
	   _ -> B8
	 end,
    B10 = case M of
	    #{py_generic_services := F10} ->
		begin
		  TrF10 = id(F10, TrUserData),
		  e_type_bool(TrF10, <<B9/binary, 144, 1>>, TrUserData)
		end;
	    _ -> B9
	  end,
    B11 = case M of
	    #{deprecated := F11} ->
		begin
		  TrF11 = id(F11, TrUserData),
		  e_type_bool(TrF11, <<B10/binary, 184, 1>>, TrUserData)
		end;
	    _ -> B10
	  end,
    B12 = case M of
	    #{cc_enable_arenas := F12} ->
		begin
		  TrF12 = id(F12, TrUserData),
		  e_type_bool(TrF12, <<B11/binary, 248, 1>>, TrUserData)
		end;
	    _ -> B11
	  end,
    B13 = case M of
	    #{objc_class_prefix := F13} ->
		begin
		  TrF13 = id(F13, TrUserData),
		  e_type_string(TrF13, <<B12/binary, 162, 2>>, TrUserData)
		end;
	    _ -> B12
	  end,
    B14 = case M of
	    #{csharp_namespace := F14} ->
		begin
		  TrF14 = id(F14, TrUserData),
		  e_type_string(TrF14, <<B13/binary, 170, 2>>, TrUserData)
		end;
	    _ -> B13
	  end,
    B15 = case M of
	    #{javanano_use_deprecated_package := F15} ->
		begin
		  TrF15 = id(F15, TrUserData),
		  e_type_bool(TrF15, <<B14/binary, 176, 2>>, TrUserData)
		end;
	    _ -> B14
	  end,
    B16 = case M of
	    #{uninterpreted_option := F16} ->
		TrF16 = id(F16, TrUserData),
		if TrF16 == [] -> B15;
		   true ->
		       'e_field_google.protobuf.FileOptions_uninterpreted_option'(TrF16,
										  B15,
										  TrUserData)
		end;
	    _ -> B15
	  end,
    B17 = case M of
	    #{goproto_getters_all := F17} ->
		begin
		  TrF17 = id(F17, TrUserData),
		  e_type_bool(TrF17, <<B16/binary, 200, 225, 30>>,
			      TrUserData)
		end;
	    _ -> B16
	  end,
    B18 = case M of
	    #{goproto_enum_prefix_all := F18} ->
		begin
		  TrF18 = id(F18, TrUserData),
		  e_type_bool(TrF18, <<B17/binary, 208, 225, 30>>,
			      TrUserData)
		end;
	    _ -> B17
	  end,
    B19 = case M of
	    #{goproto_stringer_all := F19} ->
		begin
		  TrF19 = id(F19, TrUserData),
		  e_type_bool(TrF19, <<B18/binary, 216, 225, 30>>,
			      TrUserData)
		end;
	    _ -> B18
	  end,
    B20 = case M of
	    #{verbose_equal_all := F20} ->
		begin
		  TrF20 = id(F20, TrUserData),
		  e_type_bool(TrF20, <<B19/binary, 224, 225, 30>>,
			      TrUserData)
		end;
	    _ -> B19
	  end,
    B21 = case M of
	    #{face_all := F21} ->
		begin
		  TrF21 = id(F21, TrUserData),
		  e_type_bool(TrF21, <<B20/binary, 232, 225, 30>>,
			      TrUserData)
		end;
	    _ -> B20
	  end,
    B22 = case M of
	    #{gostring_all := F22} ->
		begin
		  TrF22 = id(F22, TrUserData),
		  e_type_bool(TrF22, <<B21/binary, 240, 225, 30>>,
			      TrUserData)
		end;
	    _ -> B21
	  end,
    B23 = case M of
	    #{populate_all := F23} ->
		begin
		  TrF23 = id(F23, TrUserData),
		  e_type_bool(TrF23, <<B22/binary, 248, 225, 30>>,
			      TrUserData)
		end;
	    _ -> B22
	  end,
    B24 = case M of
	    #{stringer_all := F24} ->
		begin
		  TrF24 = id(F24, TrUserData),
		  e_type_bool(TrF24, <<B23/binary, 128, 226, 30>>,
			      TrUserData)
		end;
	    _ -> B23
	  end,
    B25 = case M of
	    #{onlyone_all := F25} ->
		begin
		  TrF25 = id(F25, TrUserData),
		  e_type_bool(TrF25, <<B24/binary, 136, 226, 30>>,
			      TrUserData)
		end;
	    _ -> B24
	  end,
    B26 = case M of
	    #{equal_all := F26} ->
		begin
		  TrF26 = id(F26, TrUserData),
		  e_type_bool(TrF26, <<B25/binary, 168, 226, 30>>,
			      TrUserData)
		end;
	    _ -> B25
	  end,
    B27 = case M of
	    #{description_all := F27} ->
		begin
		  TrF27 = id(F27, TrUserData),
		  e_type_bool(TrF27, <<B26/binary, 176, 226, 30>>,
			      TrUserData)
		end;
	    _ -> B26
	  end,
    B28 = case M of
	    #{testgen_all := F28} ->
		begin
		  TrF28 = id(F28, TrUserData),
		  e_type_bool(TrF28, <<B27/binary, 184, 226, 30>>,
			      TrUserData)
		end;
	    _ -> B27
	  end,
    B29 = case M of
	    #{benchgen_all := F29} ->
		begin
		  TrF29 = id(F29, TrUserData),
		  e_type_bool(TrF29, <<B28/binary, 192, 226, 30>>,
			      TrUserData)
		end;
	    _ -> B28
	  end,
    B30 = case M of
	    #{marshaler_all := F30} ->
		begin
		  TrF30 = id(F30, TrUserData),
		  e_type_bool(TrF30, <<B29/binary, 200, 226, 30>>,
			      TrUserData)
		end;
	    _ -> B29
	  end,
    B31 = case M of
	    #{unmarshaler_all := F31} ->
		begin
		  TrF31 = id(F31, TrUserData),
		  e_type_bool(TrF31, <<B30/binary, 208, 226, 30>>,
			      TrUserData)
		end;
	    _ -> B30
	  end,
    B32 = case M of
	    #{stable_marshaler_all := F32} ->
		begin
		  TrF32 = id(F32, TrUserData),
		  e_type_bool(TrF32, <<B31/binary, 216, 226, 30>>,
			      TrUserData)
		end;
	    _ -> B31
	  end,
    B33 = case M of
	    #{sizer_all := F33} ->
		begin
		  TrF33 = id(F33, TrUserData),
		  e_type_bool(TrF33, <<B32/binary, 224, 226, 30>>,
			      TrUserData)
		end;
	    _ -> B32
	  end,
    B34 = case M of
	    #{goproto_enum_stringer_all := F34} ->
		begin
		  TrF34 = id(F34, TrUserData),
		  e_type_bool(TrF34, <<B33/binary, 232, 226, 30>>,
			      TrUserData)
		end;
	    _ -> B33
	  end,
    B35 = case M of
	    #{enum_stringer_all := F35} ->
		begin
		  TrF35 = id(F35, TrUserData),
		  e_type_bool(TrF35, <<B34/binary, 240, 226, 30>>,
			      TrUserData)
		end;
	    _ -> B34
	  end,
    B36 = case M of
	    #{unsafe_marshaler_all := F36} ->
		begin
		  TrF36 = id(F36, TrUserData),
		  e_type_bool(TrF36, <<B35/binary, 248, 226, 30>>,
			      TrUserData)
		end;
	    _ -> B35
	  end,
    B37 = case M of
	    #{unsafe_unmarshaler_all := F37} ->
		begin
		  TrF37 = id(F37, TrUserData),
		  e_type_bool(TrF37, <<B36/binary, 128, 227, 30>>,
			      TrUserData)
		end;
	    _ -> B36
	  end,
    B38 = case M of
	    #{goproto_extensions_map_all := F38} ->
		begin
		  TrF38 = id(F38, TrUserData),
		  e_type_bool(TrF38, <<B37/binary, 136, 227, 30>>,
			      TrUserData)
		end;
	    _ -> B37
	  end,
    B39 = case M of
	    #{goproto_unrecognized_all := F39} ->
		begin
		  TrF39 = id(F39, TrUserData),
		  e_type_bool(TrF39, <<B38/binary, 144, 227, 30>>,
			      TrUserData)
		end;
	    _ -> B38
	  end,
    B40 = case M of
	    #{gogoproto_import := F40} ->
		begin
		  TrF40 = id(F40, TrUserData),
		  e_type_bool(TrF40, <<B39/binary, 152, 227, 30>>,
			      TrUserData)
		end;
	    _ -> B39
	  end,
    B41 = case M of
	    #{protosizer_all := F41} ->
		begin
		  TrF41 = id(F41, TrUserData),
		  e_type_bool(TrF41, <<B40/binary, 160, 227, 30>>,
			      TrUserData)
		end;
	    _ -> B40
	  end,
    case M of
      #{compare_all := F42} ->
	  begin
	    TrF42 = id(F42, TrUserData),
	    e_type_bool(TrF42, <<B41/binary, 168, 227, 30>>,
			TrUserData)
	  end;
      _ -> B41
    end.

'encode_msg_google.protobuf.MessageOptions'(Msg,
					    TrUserData) ->
    'encode_msg_google.protobuf.MessageOptions'(Msg, <<>>,
						TrUserData).


'encode_msg_google.protobuf.MessageOptions'(#{} = M,
					    Bin, TrUserData) ->
    B1 = case M of
	   #{message_set_wire_format := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_bool(TrF1, <<Bin/binary, 8>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{no_standard_descriptor_accessor := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 e_type_bool(TrF2, <<B1/binary, 16>>, TrUserData)
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{deprecated := F3} ->
	       begin
		 TrF3 = id(F3, TrUserData),
		 e_type_bool(TrF3, <<B2/binary, 24>>, TrUserData)
	       end;
	   _ -> B2
	 end,
    B4 = case M of
	   #{map_entry := F4} ->
	       begin
		 TrF4 = id(F4, TrUserData),
		 e_type_bool(TrF4, <<B3/binary, 56>>, TrUserData)
	       end;
	   _ -> B3
	 end,
    B5 = case M of
	   #{uninterpreted_option := F5} ->
	       TrF5 = id(F5, TrUserData),
	       if TrF5 == [] -> B4;
		  true ->
		      'e_field_google.protobuf.MessageOptions_uninterpreted_option'(TrF5,
										    B4,
										    TrUserData)
	       end;
	   _ -> B4
	 end,
    B6 = case M of
	   #{goproto_getters := F6} ->
	       begin
		 TrF6 = id(F6, TrUserData),
		 e_type_bool(TrF6, <<B5/binary, 136, 160, 31>>,
			     TrUserData)
	       end;
	   _ -> B5
	 end,
    B7 = case M of
	   #{goproto_stringer := F7} ->
	       begin
		 TrF7 = id(F7, TrUserData),
		 e_type_bool(TrF7, <<B6/binary, 152, 160, 31>>,
			     TrUserData)
	       end;
	   _ -> B6
	 end,
    B8 = case M of
	   #{verbose_equal := F8} ->
	       begin
		 TrF8 = id(F8, TrUserData),
		 e_type_bool(TrF8, <<B7/binary, 160, 160, 31>>,
			     TrUserData)
	       end;
	   _ -> B7
	 end,
    B9 = case M of
	   #{face := F9} ->
	       begin
		 TrF9 = id(F9, TrUserData),
		 e_type_bool(TrF9, <<B8/binary, 168, 160, 31>>,
			     TrUserData)
	       end;
	   _ -> B8
	 end,
    B10 = case M of
	    #{gostring := F10} ->
		begin
		  TrF10 = id(F10, TrUserData),
		  e_type_bool(TrF10, <<B9/binary, 176, 160, 31>>,
			      TrUserData)
		end;
	    _ -> B9
	  end,
    B11 = case M of
	    #{populate := F11} ->
		begin
		  TrF11 = id(F11, TrUserData),
		  e_type_bool(TrF11, <<B10/binary, 184, 160, 31>>,
			      TrUserData)
		end;
	    _ -> B10
	  end,
    B12 = case M of
	    #{stringer := F12} ->
		begin
		  TrF12 = id(F12, TrUserData),
		  e_type_bool(TrF12, <<B11/binary, 128, 220, 32>>,
			      TrUserData)
		end;
	    _ -> B11
	  end,
    B13 = case M of
	    #{onlyone := F13} ->
		begin
		  TrF13 = id(F13, TrUserData),
		  e_type_bool(TrF13, <<B12/binary, 200, 160, 31>>,
			      TrUserData)
		end;
	    _ -> B12
	  end,
    B14 = case M of
	    #{equal := F14} ->
		begin
		  TrF14 = id(F14, TrUserData),
		  e_type_bool(TrF14, <<B13/binary, 232, 160, 31>>,
			      TrUserData)
		end;
	    _ -> B13
	  end,
    B15 = case M of
	    #{description := F15} ->
		begin
		  TrF15 = id(F15, TrUserData),
		  e_type_bool(TrF15, <<B14/binary, 240, 160, 31>>,
			      TrUserData)
		end;
	    _ -> B14
	  end,
    B16 = case M of
	    #{testgen := F16} ->
		begin
		  TrF16 = id(F16, TrUserData),
		  e_type_bool(TrF16, <<B15/binary, 248, 160, 31>>,
			      TrUserData)
		end;
	    _ -> B15
	  end,
    B17 = case M of
	    #{benchgen := F17} ->
		begin
		  TrF17 = id(F17, TrUserData),
		  e_type_bool(TrF17, <<B16/binary, 128, 161, 31>>,
			      TrUserData)
		end;
	    _ -> B16
	  end,
    B18 = case M of
	    #{marshaler := F18} ->
		begin
		  TrF18 = id(F18, TrUserData),
		  e_type_bool(TrF18, <<B17/binary, 136, 161, 31>>,
			      TrUserData)
		end;
	    _ -> B17
	  end,
    B19 = case M of
	    #{unmarshaler := F19} ->
		begin
		  TrF19 = id(F19, TrUserData),
		  e_type_bool(TrF19, <<B18/binary, 144, 161, 31>>,
			      TrUserData)
		end;
	    _ -> B18
	  end,
    B20 = case M of
	    #{stable_marshaler := F20} ->
		begin
		  TrF20 = id(F20, TrUserData),
		  e_type_bool(TrF20, <<B19/binary, 152, 161, 31>>,
			      TrUserData)
		end;
	    _ -> B19
	  end,
    B21 = case M of
	    #{sizer := F21} ->
		begin
		  TrF21 = id(F21, TrUserData),
		  e_type_bool(TrF21, <<B20/binary, 160, 161, 31>>,
			      TrUserData)
		end;
	    _ -> B20
	  end,
    B22 = case M of
	    #{unsafe_marshaler := F22} ->
		begin
		  TrF22 = id(F22, TrUserData),
		  e_type_bool(TrF22, <<B21/binary, 184, 161, 31>>,
			      TrUserData)
		end;
	    _ -> B21
	  end,
    B23 = case M of
	    #{unsafe_unmarshaler := F23} ->
		begin
		  TrF23 = id(F23, TrUserData),
		  e_type_bool(TrF23, <<B22/binary, 192, 161, 31>>,
			      TrUserData)
		end;
	    _ -> B22
	  end,
    B24 = case M of
	    #{goproto_extensions_map := F24} ->
		begin
		  TrF24 = id(F24, TrUserData),
		  e_type_bool(TrF24, <<B23/binary, 200, 161, 31>>,
			      TrUserData)
		end;
	    _ -> B23
	  end,
    B25 = case M of
	    #{goproto_unrecognized := F25} ->
		begin
		  TrF25 = id(F25, TrUserData),
		  e_type_bool(TrF25, <<B24/binary, 208, 161, 31>>,
			      TrUserData)
		end;
	    _ -> B24
	  end,
    B26 = case M of
	    #{protosizer := F26} ->
		begin
		  TrF26 = id(F26, TrUserData),
		  e_type_bool(TrF26, <<B25/binary, 224, 161, 31>>,
			      TrUserData)
		end;
	    _ -> B25
	  end,
    case M of
      #{compare := F27} ->
	  begin
	    TrF27 = id(F27, TrUserData),
	    e_type_bool(TrF27, <<B26/binary, 232, 161, 31>>,
			TrUserData)
	  end;
      _ -> B26
    end.

'encode_msg_google.protobuf.FieldOptions'(Msg,
					  TrUserData) ->
    'encode_msg_google.protobuf.FieldOptions'(Msg, <<>>,
					      TrUserData).


'encode_msg_google.protobuf.FieldOptions'(#{} = M, Bin,
					  TrUserData) ->
    B1 = case M of
	   #{ctype := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 'e_enum_google.protobuf.FieldOptions.CType'(TrF1,
							     <<Bin/binary, 8>>,
							     TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{packed := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 e_type_bool(TrF2, <<B1/binary, 16>>, TrUserData)
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{jstype := F3} ->
	       begin
		 TrF3 = id(F3, TrUserData),
		 'e_enum_google.protobuf.FieldOptions.JSType'(TrF3,
							      <<B2/binary, 48>>,
							      TrUserData)
	       end;
	   _ -> B2
	 end,
    B4 = case M of
	   #{lazy := F4} ->
	       begin
		 TrF4 = id(F4, TrUserData),
		 e_type_bool(TrF4, <<B3/binary, 40>>, TrUserData)
	       end;
	   _ -> B3
	 end,
    B5 = case M of
	   #{deprecated := F5} ->
	       begin
		 TrF5 = id(F5, TrUserData),
		 e_type_bool(TrF5, <<B4/binary, 24>>, TrUserData)
	       end;
	   _ -> B4
	 end,
    B6 = case M of
	   #{weak := F6} ->
	       begin
		 TrF6 = id(F6, TrUserData),
		 e_type_bool(TrF6, <<B5/binary, 80>>, TrUserData)
	       end;
	   _ -> B5
	 end,
    B7 = case M of
	   #{uninterpreted_option := F7} ->
	       TrF7 = id(F7, TrUserData),
	       if TrF7 == [] -> B6;
		  true ->
		      'e_field_google.protobuf.FieldOptions_uninterpreted_option'(TrF7,
										  B6,
										  TrUserData)
	       end;
	   _ -> B6
	 end,
    B8 = case M of
	   #{nullable := F8} ->
	       begin
		 TrF8 = id(F8, TrUserData),
		 e_type_bool(TrF8, <<B7/binary, 200, 222, 31>>,
			     TrUserData)
	       end;
	   _ -> B7
	 end,
    B9 = case M of
	   #{embed := F9} ->
	       begin
		 TrF9 = id(F9, TrUserData),
		 e_type_bool(TrF9, <<B8/binary, 208, 222, 31>>,
			     TrUserData)
	       end;
	   _ -> B8
	 end,
    B10 = case M of
	    #{customtype := F10} ->
		begin
		  TrF10 = id(F10, TrUserData),
		  e_type_string(TrF10, <<B9/binary, 218, 222, 31>>,
				TrUserData)
		end;
	    _ -> B9
	  end,
    B11 = case M of
	    #{customname := F11} ->
		begin
		  TrF11 = id(F11, TrUserData),
		  e_type_string(TrF11, <<B10/binary, 226, 222, 31>>,
				TrUserData)
		end;
	    _ -> B10
	  end,
    B12 = case M of
	    #{jsontag := F12} ->
		begin
		  TrF12 = id(F12, TrUserData),
		  e_type_string(TrF12, <<B11/binary, 234, 222, 31>>,
				TrUserData)
		end;
	    _ -> B11
	  end,
    B13 = case M of
	    #{moretags := F13} ->
		begin
		  TrF13 = id(F13, TrUserData),
		  e_type_string(TrF13, <<B12/binary, 242, 222, 31>>,
				TrUserData)
		end;
	    _ -> B12
	  end,
    B14 = case M of
	    #{casttype := F14} ->
		begin
		  TrF14 = id(F14, TrUserData),
		  e_type_string(TrF14, <<B13/binary, 250, 222, 31>>,
				TrUserData)
		end;
	    _ -> B13
	  end,
    B15 = case M of
	    #{castkey := F15} ->
		begin
		  TrF15 = id(F15, TrUserData),
		  e_type_string(TrF15, <<B14/binary, 130, 223, 31>>,
				TrUserData)
		end;
	    _ -> B14
	  end,
    B16 = case M of
	    #{castvalue := F16} ->
		begin
		  TrF16 = id(F16, TrUserData),
		  e_type_string(TrF16, <<B15/binary, 138, 223, 31>>,
				TrUserData)
		end;
	    _ -> B15
	  end,
    B17 = case M of
	    #{stdtime := F17} ->
		begin
		  TrF17 = id(F17, TrUserData),
		  e_type_bool(TrF17, <<B16/binary, 144, 223, 31>>,
			      TrUserData)
		end;
	    _ -> B16
	  end,
    case M of
      #{stdduration := F18} ->
	  begin
	    TrF18 = id(F18, TrUserData),
	    e_type_bool(TrF18, <<B17/binary, 152, 223, 31>>,
			TrUserData)
	  end;
      _ -> B17
    end.

'encode_msg_google.protobuf.EnumOptions'(Msg,
					 TrUserData) ->
    'encode_msg_google.protobuf.EnumOptions'(Msg, <<>>,
					     TrUserData).


'encode_msg_google.protobuf.EnumOptions'(#{} = M, Bin,
					 TrUserData) ->
    B1 = case M of
	   #{allow_alias := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_bool(TrF1, <<Bin/binary, 16>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{deprecated := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 e_type_bool(TrF2, <<B1/binary, 24>>, TrUserData)
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{uninterpreted_option := F3} ->
	       TrF3 = id(F3, TrUserData),
	       if TrF3 == [] -> B2;
		  true ->
		      'e_field_google.protobuf.EnumOptions_uninterpreted_option'(TrF3,
										 B2,
										 TrUserData)
	       end;
	   _ -> B2
	 end,
    B4 = case M of
	   #{goproto_enum_prefix := F4} ->
	       begin
		 TrF4 = id(F4, TrUserData),
		 e_type_bool(TrF4, <<B3/binary, 136, 163, 30>>,
			     TrUserData)
	       end;
	   _ -> B3
	 end,
    B5 = case M of
	   #{goproto_enum_stringer := F5} ->
	       begin
		 TrF5 = id(F5, TrUserData),
		 e_type_bool(TrF5, <<B4/binary, 168, 164, 30>>,
			     TrUserData)
	       end;
	   _ -> B4
	 end,
    B6 = case M of
	   #{enum_stringer := F6} ->
	       begin
		 TrF6 = id(F6, TrUserData),
		 e_type_bool(TrF6, <<B5/binary, 176, 164, 30>>,
			     TrUserData)
	       end;
	   _ -> B5
	 end,
    case M of
      #{enum_customname := F7} ->
	  begin
	    TrF7 = id(F7, TrUserData),
	    e_type_string(TrF7, <<B6/binary, 186, 164, 30>>,
			  TrUserData)
	  end;
      _ -> B6
    end.

'encode_msg_google.protobuf.EnumValueOptions'(Msg,
					      TrUserData) ->
    'encode_msg_google.protobuf.EnumValueOptions'(Msg, <<>>,
						  TrUserData).


'encode_msg_google.protobuf.EnumValueOptions'(#{} = M,
					      Bin, TrUserData) ->
    B1 = case M of
	   #{deprecated := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_bool(TrF1, <<Bin/binary, 8>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{uninterpreted_option := F2} ->
	       TrF2 = id(F2, TrUserData),
	       if TrF2 == [] -> B1;
		  true ->
		      'e_field_google.protobuf.EnumValueOptions_uninterpreted_option'(TrF2,
										      B1,
										      TrUserData)
	       end;
	   _ -> B1
	 end,
    case M of
      #{enumvalue_customname := F3} ->
	  begin
	    TrF3 = id(F3, TrUserData),
	    e_type_string(TrF3, <<B2/binary, 138, 157, 32>>,
			  TrUserData)
	  end;
      _ -> B2
    end.

'encode_msg_google.protobuf.ServiceOptions'(Msg,
					    TrUserData) ->
    'encode_msg_google.protobuf.ServiceOptions'(Msg, <<>>,
						TrUserData).


'encode_msg_google.protobuf.ServiceOptions'(#{} = M,
					    Bin, TrUserData) ->
    B1 = case M of
	   #{deprecated := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_bool(TrF1, <<Bin/binary, 136, 2>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    case M of
      #{uninterpreted_option := F2} ->
	  TrF2 = id(F2, TrUserData),
	  if TrF2 == [] -> B1;
	     true ->
		 'e_field_google.protobuf.ServiceOptions_uninterpreted_option'(TrF2,
									       B1,
									       TrUserData)
	  end;
      _ -> B1
    end.

'encode_msg_google.protobuf.MethodOptions'(Msg,
					   TrUserData) ->
    'encode_msg_google.protobuf.MethodOptions'(Msg, <<>>,
					       TrUserData).


'encode_msg_google.protobuf.MethodOptions'(#{} = M, Bin,
					   TrUserData) ->
    B1 = case M of
	   #{deprecated := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 e_type_bool(TrF1, <<Bin/binary, 136, 2>>, TrUserData)
	       end;
	   _ -> Bin
	 end,
    case M of
      #{uninterpreted_option := F2} ->
	  TrF2 = id(F2, TrUserData),
	  if TrF2 == [] -> B1;
	     true ->
		 'e_field_google.protobuf.MethodOptions_uninterpreted_option'(TrF2,
									      B1,
									      TrUserData)
	  end;
      _ -> B1
    end.

'encode_msg_google.protobuf.UninterpretedOption.NamePart'(Msg,
							  TrUserData) ->
    'encode_msg_google.protobuf.UninterpretedOption.NamePart'(Msg,
							      <<>>, TrUserData).


'encode_msg_google.protobuf.UninterpretedOption.NamePart'(#{name_part
								:= F1,
							    is_extension := F2},
							  Bin, TrUserData) ->
    B1 = begin
	   TrF1 = id(F1, TrUserData),
	   e_type_string(TrF1, <<Bin/binary, 10>>, TrUserData)
	 end,
    begin
      TrF2 = id(F2, TrUserData),
      e_type_bool(TrF2, <<B1/binary, 16>>, TrUserData)
    end.

'encode_msg_google.protobuf.UninterpretedOption'(Msg,
						 TrUserData) ->
    'encode_msg_google.protobuf.UninterpretedOption'(Msg,
						     <<>>, TrUserData).


'encode_msg_google.protobuf.UninterpretedOption'(#{} =
						     M,
						 Bin, TrUserData) ->
    B1 = case M of
	   #{name := F1} ->
	       TrF1 = id(F1, TrUserData),
	       if TrF1 == [] -> Bin;
		  true ->
		      'e_field_google.protobuf.UninterpretedOption_name'(TrF1,
									 Bin,
									 TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{identifier_value := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 e_type_string(TrF2, <<B1/binary, 26>>, TrUserData)
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{positive_int_value := F3} ->
	       begin
		 TrF3 = id(F3, TrUserData),
		 e_varint(TrF3, <<B2/binary, 32>>, TrUserData)
	       end;
	   _ -> B2
	 end,
    B4 = case M of
	   #{negative_int_value := F4} ->
	       begin
		 TrF4 = id(F4, TrUserData),
		 e_type_int64(TrF4, <<B3/binary, 40>>, TrUserData)
	       end;
	   _ -> B3
	 end,
    B5 = case M of
	   #{double_value := F5} ->
	       begin
		 TrF5 = id(F5, TrUserData),
		 e_type_double(TrF5, <<B4/binary, 49>>, TrUserData)
	       end;
	   _ -> B4
	 end,
    B6 = case M of
	   #{string_value := F6} ->
	       begin
		 TrF6 = id(F6, TrUserData),
		 e_type_bytes(TrF6, <<B5/binary, 58>>, TrUserData)
	       end;
	   _ -> B5
	 end,
    case M of
      #{aggregate_value := F7} ->
	  begin
	    TrF7 = id(F7, TrUserData),
	    e_type_string(TrF7, <<B6/binary, 66>>, TrUserData)
	  end;
      _ -> B6
    end.

'encode_msg_google.protobuf.SourceCodeInfo.Location'(Msg,
						     TrUserData) ->
    'encode_msg_google.protobuf.SourceCodeInfo.Location'(Msg,
							 <<>>, TrUserData).


'encode_msg_google.protobuf.SourceCodeInfo.Location'(#{} =
							 M,
						     Bin, TrUserData) ->
    B1 = case M of
	   #{path := F1} ->
	       TrF1 = id(F1, TrUserData),
	       if TrF1 == [] -> Bin;
		  true ->
		      'e_field_google.protobuf.SourceCodeInfo.Location_path'(TrF1,
									     Bin,
									     TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{span := F2} ->
	       TrF2 = id(F2, TrUserData),
	       if TrF2 == [] -> B1;
		  true ->
		      'e_field_google.protobuf.SourceCodeInfo.Location_span'(TrF2,
									     B1,
									     TrUserData)
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{leading_comments := F3} ->
	       begin
		 TrF3 = id(F3, TrUserData),
		 e_type_string(TrF3, <<B2/binary, 26>>, TrUserData)
	       end;
	   _ -> B2
	 end,
    B4 = case M of
	   #{trailing_comments := F4} ->
	       begin
		 TrF4 = id(F4, TrUserData),
		 e_type_string(TrF4, <<B3/binary, 34>>, TrUserData)
	       end;
	   _ -> B3
	 end,
    case M of
      #{leading_detached_comments := F5} ->
	  TrF5 = id(F5, TrUserData),
	  if TrF5 == [] -> B4;
	     true ->
		 'e_field_google.protobuf.SourceCodeInfo.Location_leading_detached_comments'(TrF5,
											     B4,
											     TrUserData)
	  end;
      _ -> B4
    end.

'encode_msg_google.protobuf.SourceCodeInfo'(Msg,
					    TrUserData) ->
    'encode_msg_google.protobuf.SourceCodeInfo'(Msg, <<>>,
						TrUserData).


'encode_msg_google.protobuf.SourceCodeInfo'(#{} = M,
					    Bin, TrUserData) ->
    case M of
      #{location := F1} ->
	  TrF1 = id(F1, TrUserData),
	  if TrF1 == [] -> Bin;
	     true ->
		 'e_field_google.protobuf.SourceCodeInfo_location'(TrF1,
								   Bin,
								   TrUserData)
	  end;
      _ -> Bin
    end.

'encode_msg_google.protobuf.GeneratedCodeInfo.Annotation'(Msg,
							  TrUserData) ->
    'encode_msg_google.protobuf.GeneratedCodeInfo.Annotation'(Msg,
							      <<>>, TrUserData).


'encode_msg_google.protobuf.GeneratedCodeInfo.Annotation'(#{} =
							      M,
							  Bin, TrUserData) ->
    B1 = case M of
	   #{path := F1} ->
	       TrF1 = id(F1, TrUserData),
	       if TrF1 == [] -> Bin;
		  true ->
		      'e_field_google.protobuf.GeneratedCodeInfo.Annotation_path'(TrF1,
										  Bin,
										  TrUserData)
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{source_file := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 e_type_string(TrF2, <<B1/binary, 18>>, TrUserData)
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{'begin' := F3} ->
	       begin
		 TrF3 = id(F3, TrUserData),
		 e_type_int32(TrF3, <<B2/binary, 24>>, TrUserData)
	       end;
	   _ -> B2
	 end,
    case M of
      #{'end' := F4} ->
	  begin
	    TrF4 = id(F4, TrUserData),
	    e_type_int32(TrF4, <<B3/binary, 32>>, TrUserData)
	  end;
      _ -> B3
    end.

'encode_msg_google.protobuf.GeneratedCodeInfo'(Msg,
					       TrUserData) ->
    'encode_msg_google.protobuf.GeneratedCodeInfo'(Msg,
						   <<>>, TrUserData).


'encode_msg_google.protobuf.GeneratedCodeInfo'(#{} = M,
					       Bin, TrUserData) ->
    case M of
      #{annotation := F1} ->
	  TrF1 = id(F1, TrUserData),
	  if TrF1 == [] -> Bin;
	     true ->
		 'e_field_google.protobuf.GeneratedCodeInfo_annotation'(TrF1,
									Bin,
									TrUserData)
	  end;
      _ -> Bin
    end.

'encode_msg_mvccpb.KeyValue'(Msg, TrUserData) ->
    'encode_msg_mvccpb.KeyValue'(Msg, <<>>, TrUserData).


'encode_msg_mvccpb.KeyValue'(#{} = M, Bin,
			     TrUserData) ->
    B1 = case M of
	   #{key := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 case iolist_size(TrF1) of
		   0 -> Bin;
		   _ -> e_type_bytes(TrF1, <<Bin/binary, 10>>, TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{create_revision := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 if TrF2 =:= 0 -> B1;
		    true ->
			e_type_int64(TrF2, <<B1/binary, 16>>, TrUserData)
		 end
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{mod_revision := F3} ->
	       begin
		 TrF3 = id(F3, TrUserData),
		 if TrF3 =:= 0 -> B2;
		    true ->
			e_type_int64(TrF3, <<B2/binary, 24>>, TrUserData)
		 end
	       end;
	   _ -> B2
	 end,
    B4 = case M of
	   #{version := F4} ->
	       begin
		 TrF4 = id(F4, TrUserData),
		 if TrF4 =:= 0 -> B3;
		    true ->
			e_type_int64(TrF4, <<B3/binary, 32>>, TrUserData)
		 end
	       end;
	   _ -> B3
	 end,
    B5 = case M of
	   #{value := F5} ->
	       begin
		 TrF5 = id(F5, TrUserData),
		 case iolist_size(TrF5) of
		   0 -> B4;
		   _ -> e_type_bytes(TrF5, <<B4/binary, 42>>, TrUserData)
		 end
	       end;
	   _ -> B4
	 end,
    case M of
      #{lease := F6} ->
	  begin
	    TrF6 = id(F6, TrUserData),
	    if TrF6 =:= 0 -> B5;
	       true ->
		   e_type_int64(TrF6, <<B5/binary, 48>>, TrUserData)
	    end
	  end;
      _ -> B5
    end.

'encode_msg_mvccpb.Event'(Msg, TrUserData) ->
    'encode_msg_mvccpb.Event'(Msg, <<>>, TrUserData).


'encode_msg_mvccpb.Event'(#{} = M, Bin, TrUserData) ->
    B1 = case M of
	   #{type := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= 'PUT'; TrF1 =:= 0 -> Bin;
		    true ->
			'e_enum_mvccpb.Event.EventType'(TrF1, <<Bin/binary, 8>>,
							TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{kv := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 if TrF2 =:= undefined -> B1;
		    true ->
			'e_mfield_mvccpb.Event_kv'(TrF2, <<B1/binary, 18>>,
						   TrUserData)
		 end
	       end;
	   _ -> B1
	 end,
    case M of
      #{prev_kv := F3} ->
	  begin
	    TrF3 = id(F3, TrUserData),
	    if TrF3 =:= undefined -> B2;
	       true ->
		   'e_mfield_mvccpb.Event_prev_kv'(TrF3, <<B2/binary, 26>>,
						   TrUserData)
	    end
	  end;
      _ -> B2
    end.

'encode_msg_authpb.UserAddOptions'(Msg, TrUserData) ->
    'encode_msg_authpb.UserAddOptions'(Msg, <<>>,
				       TrUserData).


'encode_msg_authpb.UserAddOptions'(#{} = M, Bin,
				   TrUserData) ->
    case M of
      #{no_password := F1} ->
	  begin
	    TrF1 = id(F1, TrUserData),
	    if TrF1 =:= false -> Bin;
	       true -> e_type_bool(TrF1, <<Bin/binary, 8>>, TrUserData)
	    end
	  end;
      _ -> Bin
    end.

'encode_msg_authpb.User'(Msg, TrUserData) ->
    'encode_msg_authpb.User'(Msg, <<>>, TrUserData).


'encode_msg_authpb.User'(#{} = M, Bin, TrUserData) ->
    B1 = case M of
	   #{name := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 case iolist_size(TrF1) of
		   0 -> Bin;
		   _ -> e_type_bytes(TrF1, <<Bin/binary, 10>>, TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{password := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 case iolist_size(TrF2) of
		   0 -> B1;
		   _ -> e_type_bytes(TrF2, <<B1/binary, 18>>, TrUserData)
		 end
	       end;
	   _ -> B1
	 end,
    B3 = case M of
	   #{roles := F3} ->
	       TrF3 = id(F3, TrUserData),
	       if TrF3 == [] -> B2;
		  true ->
		      'e_field_authpb.User_roles'(TrF3, B2, TrUserData)
	       end;
	   _ -> B2
	 end,
    case M of
      #{options := F4} ->
	  begin
	    TrF4 = id(F4, TrUserData),
	    if TrF4 =:= undefined -> B3;
	       true ->
		   'e_mfield_authpb.User_options'(TrF4, <<B3/binary, 34>>,
						  TrUserData)
	    end
	  end;
      _ -> B3
    end.

'encode_msg_authpb.Permission'(Msg, TrUserData) ->
    'encode_msg_authpb.Permission'(Msg, <<>>, TrUserData).


'encode_msg_authpb.Permission'(#{} = M, Bin,
			       TrUserData) ->
    B1 = case M of
	   #{permType := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 if TrF1 =:= 'READ'; TrF1 =:= 0 -> Bin;
		    true ->
			'e_enum_authpb.Permission.Type'(TrF1, <<Bin/binary, 8>>,
							TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    B2 = case M of
	   #{key := F2} ->
	       begin
		 TrF2 = id(F2, TrUserData),
		 case iolist_size(TrF2) of
		   0 -> B1;
		   _ -> e_type_bytes(TrF2, <<B1/binary, 18>>, TrUserData)
		 end
	       end;
	   _ -> B1
	 end,
    case M of
      #{range_end := F3} ->
	  begin
	    TrF3 = id(F3, TrUserData),
	    case iolist_size(TrF3) of
	      0 -> B2;
	      _ -> e_type_bytes(TrF3, <<B2/binary, 26>>, TrUserData)
	    end
	  end;
      _ -> B2
    end.

'encode_msg_authpb.Role'(Msg, TrUserData) ->
    'encode_msg_authpb.Role'(Msg, <<>>, TrUserData).


'encode_msg_authpb.Role'(#{} = M, Bin, TrUserData) ->
    B1 = case M of
	   #{name := F1} ->
	       begin
		 TrF1 = id(F1, TrUserData),
		 case iolist_size(TrF1) of
		   0 -> Bin;
		   _ -> e_type_bytes(TrF1, <<Bin/binary, 10>>, TrUserData)
		 end
	       end;
	   _ -> Bin
	 end,
    case M of
      #{keyPermission := F2} ->
	  TrF2 = id(F2, TrUserData),
	  if TrF2 == [] -> B1;
	     true ->
		 'e_field_authpb.Role_keyPermission'(TrF2, B1,
						     TrUserData)
	  end;
      _ -> B1
    end.

'e_mfield_Etcd.RangeResponse_header'(Msg, Bin,
				     TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.RangeResponse_kvs'(Msg, Bin,
				  TrUserData) ->
    SubBin = 'encode_msg_mvccpb.KeyValue'(Msg, <<>>,
					  TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_Etcd.RangeResponse_kvs'([Elem | Rest], Bin,
				 TrUserData) ->
    Bin2 = <<Bin/binary, 18>>,
    Bin3 = 'e_mfield_Etcd.RangeResponse_kvs'(id(Elem,
						TrUserData),
					     Bin2, TrUserData),
    'e_field_Etcd.RangeResponse_kvs'(Rest, Bin3,
				     TrUserData);
'e_field_Etcd.RangeResponse_kvs'([], Bin,
				 _TrUserData) ->
    Bin.

'e_mfield_Etcd.PutResponse_header'(Msg, Bin,
				   TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.PutResponse_prev_kv'(Msg, Bin,
				    TrUserData) ->
    SubBin = 'encode_msg_mvccpb.KeyValue'(Msg, <<>>,
					  TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.DeleteRangeResponse_header'(Msg, Bin,
					   TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.DeleteRangeResponse_prev_kvs'(Msg, Bin,
					     TrUserData) ->
    SubBin = 'encode_msg_mvccpb.KeyValue'(Msg, <<>>,
					  TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_Etcd.DeleteRangeResponse_prev_kvs'([Elem
					     | Rest],
					    Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 26>>,
    Bin3 =
	'e_mfield_Etcd.DeleteRangeResponse_prev_kvs'(id(Elem,
							TrUserData),
						     Bin2, TrUserData),
    'e_field_Etcd.DeleteRangeResponse_prev_kvs'(Rest, Bin3,
						TrUserData);
'e_field_Etcd.DeleteRangeResponse_prev_kvs'([], Bin,
					    _TrUserData) ->
    Bin.

'e_mfield_Etcd.RequestOp_request_range'(Msg, Bin,
					TrUserData) ->
    SubBin = 'encode_msg_Etcd.RangeRequest'(Msg, <<>>,
					    TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.RequestOp_request_put'(Msg, Bin,
				      TrUserData) ->
    SubBin = 'encode_msg_Etcd.PutRequest'(Msg, <<>>,
					  TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.RequestOp_request_delete_range'(Msg, Bin,
					       TrUserData) ->
    SubBin = 'encode_msg_Etcd.DeleteRangeRequest'(Msg, <<>>,
						  TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.RequestOp_request_txn'(Msg, Bin,
				      TrUserData) ->
    SubBin = 'encode_msg_Etcd.TxnRequest'(Msg, <<>>,
					  TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.ResponseOp_response_range'(Msg, Bin,
					  TrUserData) ->
    SubBin = 'encode_msg_Etcd.RangeResponse'(Msg, <<>>,
					     TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.ResponseOp_response_put'(Msg, Bin,
					TrUserData) ->
    SubBin = 'encode_msg_Etcd.PutResponse'(Msg, <<>>,
					   TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.ResponseOp_response_delete_range'(Msg,
						 Bin, TrUserData) ->
    SubBin = 'encode_msg_Etcd.DeleteRangeResponse'(Msg,
						   <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.ResponseOp_response_txn'(Msg, Bin,
					TrUserData) ->
    SubBin = 'encode_msg_Etcd.TxnResponse'(Msg, <<>>,
					   TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.TxnRequest_compare'(Msg, Bin,
				   TrUserData) ->
    SubBin = 'encode_msg_Etcd.Compare'(Msg, <<>>,
				       TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_Etcd.TxnRequest_compare'([Elem | Rest], Bin,
				  TrUserData) ->
    Bin2 = <<Bin/binary, 10>>,
    Bin3 = 'e_mfield_Etcd.TxnRequest_compare'(id(Elem,
						 TrUserData),
					      Bin2, TrUserData),
    'e_field_Etcd.TxnRequest_compare'(Rest, Bin3,
				      TrUserData);
'e_field_Etcd.TxnRequest_compare'([], Bin,
				  _TrUserData) ->
    Bin.

'e_mfield_Etcd.TxnRequest_success'(Msg, Bin,
				   TrUserData) ->
    SubBin = 'encode_msg_Etcd.RequestOp'(Msg, <<>>,
					 TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_Etcd.TxnRequest_success'([Elem | Rest], Bin,
				  TrUserData) ->
    Bin2 = <<Bin/binary, 18>>,
    Bin3 = 'e_mfield_Etcd.TxnRequest_success'(id(Elem,
						 TrUserData),
					      Bin2, TrUserData),
    'e_field_Etcd.TxnRequest_success'(Rest, Bin3,
				      TrUserData);
'e_field_Etcd.TxnRequest_success'([], Bin,
				  _TrUserData) ->
    Bin.

'e_mfield_Etcd.TxnRequest_failure'(Msg, Bin,
				   TrUserData) ->
    SubBin = 'encode_msg_Etcd.RequestOp'(Msg, <<>>,
					 TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_Etcd.TxnRequest_failure'([Elem | Rest], Bin,
				  TrUserData) ->
    Bin2 = <<Bin/binary, 26>>,
    Bin3 = 'e_mfield_Etcd.TxnRequest_failure'(id(Elem,
						 TrUserData),
					      Bin2, TrUserData),
    'e_field_Etcd.TxnRequest_failure'(Rest, Bin3,
				      TrUserData);
'e_field_Etcd.TxnRequest_failure'([], Bin,
				  _TrUserData) ->
    Bin.

'e_mfield_Etcd.TxnResponse_header'(Msg, Bin,
				   TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.TxnResponse_responses'(Msg, Bin,
				      TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseOp'(Msg, <<>>,
					  TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_Etcd.TxnResponse_responses'([Elem | Rest], Bin,
				     TrUserData) ->
    Bin2 = <<Bin/binary, 26>>,
    Bin3 = 'e_mfield_Etcd.TxnResponse_responses'(id(Elem,
						    TrUserData),
						 Bin2, TrUserData),
    'e_field_Etcd.TxnResponse_responses'(Rest, Bin3,
					 TrUserData);
'e_field_Etcd.TxnResponse_responses'([], Bin,
				     _TrUserData) ->
    Bin.

'e_mfield_Etcd.CompactionResponse_header'(Msg, Bin,
					  TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.HashKVResponse_header'(Msg, Bin,
				      TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.HashResponse_header'(Msg, Bin,
				    TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.SnapshotResponse_header'(Msg, Bin,
					TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.WatchRequest_create_request'(Msg, Bin,
					    TrUserData) ->
    SubBin = 'encode_msg_Etcd.WatchCreateRequest'(Msg, <<>>,
						  TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.WatchRequest_cancel_request'(Msg, Bin,
					    TrUserData) ->
    SubBin = 'encode_msg_Etcd.WatchCancelRequest'(Msg, <<>>,
						  TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.WatchRequest_progress_request'(_Msg, Bin,
					      _TrUserData) ->
    <<Bin/binary, 0>>.

'e_field_Etcd.WatchCreateRequest_filters'(Elems, Bin,
					  TrUserData)
    when Elems =/= [] ->
    SubBin =
	'e_pfield_Etcd.WatchCreateRequest_filters'(Elems, <<>>,
						   TrUserData),
    Bin2 = <<Bin/binary, 42>>,
    Bin3 = e_varint(byte_size(SubBin), Bin2),
    <<Bin3/binary, SubBin/binary>>;
'e_field_Etcd.WatchCreateRequest_filters'([], Bin,
					  _TrUserData) ->
    Bin.

'e_pfield_Etcd.WatchCreateRequest_filters'([Value
					    | Rest],
					   Bin, TrUserData) ->
    Bin2 =
	'e_enum_Etcd.WatchCreateRequest.FilterType'(id(Value,
						       TrUserData),
						    Bin, TrUserData),
    'e_pfield_Etcd.WatchCreateRequest_filters'(Rest, Bin2,
					       TrUserData);
'e_pfield_Etcd.WatchCreateRequest_filters'([], Bin,
					   _TrUserData) ->
    Bin.

'e_mfield_Etcd.WatchResponse_header'(Msg, Bin,
				     TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.WatchResponse_events'(Msg, Bin,
				     TrUserData) ->
    SubBin = 'encode_msg_mvccpb.Event'(Msg, <<>>,
				       TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_Etcd.WatchResponse_events'([Elem | Rest], Bin,
				    TrUserData) ->
    Bin2 = <<Bin/binary, 90>>,
    Bin3 = 'e_mfield_Etcd.WatchResponse_events'(id(Elem,
						   TrUserData),
						Bin2, TrUserData),
    'e_field_Etcd.WatchResponse_events'(Rest, Bin3,
					TrUserData);
'e_field_Etcd.WatchResponse_events'([], Bin,
				    _TrUserData) ->
    Bin.

'e_mfield_Etcd.LeaseGrantResponse_header'(Msg, Bin,
					  TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.LeaseRevokeResponse_header'(Msg, Bin,
					   TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.LeaseCheckpointRequest_checkpoints'(Msg,
						   Bin, TrUserData) ->
    SubBin = 'encode_msg_Etcd.LeaseCheckpoint'(Msg, <<>>,
					       TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_Etcd.LeaseCheckpointRequest_checkpoints'([Elem
						   | Rest],
						  Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 10>>,
    Bin3 =
	'e_mfield_Etcd.LeaseCheckpointRequest_checkpoints'(id(Elem,
							      TrUserData),
							   Bin2, TrUserData),
    'e_field_Etcd.LeaseCheckpointRequest_checkpoints'(Rest,
						      Bin3, TrUserData);
'e_field_Etcd.LeaseCheckpointRequest_checkpoints'([],
						  Bin, _TrUserData) ->
    Bin.

'e_mfield_Etcd.LeaseCheckpointResponse_header'(Msg, Bin,
					       TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.LeaseKeepAliveResponse_header'(Msg, Bin,
					      TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.LeaseTimeToLiveResponse_header'(Msg, Bin,
					       TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_Etcd.LeaseTimeToLiveResponse_keys'([Elem
					     | Rest],
					    Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 42>>,
    Bin3 = e_type_bytes(id(Elem, TrUserData), Bin2,
			TrUserData),
    'e_field_Etcd.LeaseTimeToLiveResponse_keys'(Rest, Bin3,
						TrUserData);
'e_field_Etcd.LeaseTimeToLiveResponse_keys'([], Bin,
					    _TrUserData) ->
    Bin.

'e_mfield_Etcd.LeaseLeasesResponse_header'(Msg, Bin,
					   TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.LeaseLeasesResponse_leases'(Msg, Bin,
					   TrUserData) ->
    SubBin = 'encode_msg_Etcd.LeaseStatus'(Msg, <<>>,
					   TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_Etcd.LeaseLeasesResponse_leases'([Elem | Rest],
					  Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 18>>,
    Bin3 =
	'e_mfield_Etcd.LeaseLeasesResponse_leases'(id(Elem,
						      TrUserData),
						   Bin2, TrUserData),
    'e_field_Etcd.LeaseLeasesResponse_leases'(Rest, Bin3,
					      TrUserData);
'e_field_Etcd.LeaseLeasesResponse_leases'([], Bin,
					  _TrUserData) ->
    Bin.

'e_field_Etcd.Member_peerURLs'([Elem | Rest], Bin,
			       TrUserData) ->
    Bin2 = <<Bin/binary, 26>>,
    Bin3 = e_type_string(id(Elem, TrUserData), Bin2,
			 TrUserData),
    'e_field_Etcd.Member_peerURLs'(Rest, Bin3, TrUserData);
'e_field_Etcd.Member_peerURLs'([], Bin, _TrUserData) ->
    Bin.

'e_field_Etcd.Member_clientURLs'([Elem | Rest], Bin,
				 TrUserData) ->
    Bin2 = <<Bin/binary, 34>>,
    Bin3 = e_type_string(id(Elem, TrUserData), Bin2,
			 TrUserData),
    'e_field_Etcd.Member_clientURLs'(Rest, Bin3,
				     TrUserData);
'e_field_Etcd.Member_clientURLs'([], Bin,
				 _TrUserData) ->
    Bin.

'e_field_Etcd.MemberAddRequest_peerURLs'([Elem | Rest],
					 Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 10>>,
    Bin3 = e_type_string(id(Elem, TrUserData), Bin2,
			 TrUserData),
    'e_field_Etcd.MemberAddRequest_peerURLs'(Rest, Bin3,
					     TrUserData);
'e_field_Etcd.MemberAddRequest_peerURLs'([], Bin,
					 _TrUserData) ->
    Bin.

'e_mfield_Etcd.MemberAddResponse_header'(Msg, Bin,
					 TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.MemberAddResponse_member'(Msg, Bin,
					 TrUserData) ->
    SubBin = 'encode_msg_Etcd.Member'(Msg, <<>>,
				      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.MemberAddResponse_members'(Msg, Bin,
					  TrUserData) ->
    SubBin = 'encode_msg_Etcd.Member'(Msg, <<>>,
				      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_Etcd.MemberAddResponse_members'([Elem | Rest],
					 Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 26>>,
    Bin3 =
	'e_mfield_Etcd.MemberAddResponse_members'(id(Elem,
						     TrUserData),
						  Bin2, TrUserData),
    'e_field_Etcd.MemberAddResponse_members'(Rest, Bin3,
					     TrUserData);
'e_field_Etcd.MemberAddResponse_members'([], Bin,
					 _TrUserData) ->
    Bin.

'e_mfield_Etcd.MemberRemoveResponse_header'(Msg, Bin,
					    TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.MemberRemoveResponse_members'(Msg, Bin,
					     TrUserData) ->
    SubBin = 'encode_msg_Etcd.Member'(Msg, <<>>,
				      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_Etcd.MemberRemoveResponse_members'([Elem
					     | Rest],
					    Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 18>>,
    Bin3 =
	'e_mfield_Etcd.MemberRemoveResponse_members'(id(Elem,
							TrUserData),
						     Bin2, TrUserData),
    'e_field_Etcd.MemberRemoveResponse_members'(Rest, Bin3,
						TrUserData);
'e_field_Etcd.MemberRemoveResponse_members'([], Bin,
					    _TrUserData) ->
    Bin.

'e_field_Etcd.MemberUpdateRequest_peerURLs'([Elem
					     | Rest],
					    Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 18>>,
    Bin3 = e_type_string(id(Elem, TrUserData), Bin2,
			 TrUserData),
    'e_field_Etcd.MemberUpdateRequest_peerURLs'(Rest, Bin3,
						TrUserData);
'e_field_Etcd.MemberUpdateRequest_peerURLs'([], Bin,
					    _TrUserData) ->
    Bin.

'e_mfield_Etcd.MemberUpdateResponse_header'(Msg, Bin,
					    TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.MemberUpdateResponse_members'(Msg, Bin,
					     TrUserData) ->
    SubBin = 'encode_msg_Etcd.Member'(Msg, <<>>,
				      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_Etcd.MemberUpdateResponse_members'([Elem
					     | Rest],
					    Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 18>>,
    Bin3 =
	'e_mfield_Etcd.MemberUpdateResponse_members'(id(Elem,
							TrUserData),
						     Bin2, TrUserData),
    'e_field_Etcd.MemberUpdateResponse_members'(Rest, Bin3,
						TrUserData);
'e_field_Etcd.MemberUpdateResponse_members'([], Bin,
					    _TrUserData) ->
    Bin.

'e_mfield_Etcd.MemberListResponse_header'(Msg, Bin,
					  TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.MemberListResponse_members'(Msg, Bin,
					   TrUserData) ->
    SubBin = 'encode_msg_Etcd.Member'(Msg, <<>>,
				      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_Etcd.MemberListResponse_members'([Elem | Rest],
					  Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 18>>,
    Bin3 =
	'e_mfield_Etcd.MemberListResponse_members'(id(Elem,
						      TrUserData),
						   Bin2, TrUserData),
    'e_field_Etcd.MemberListResponse_members'(Rest, Bin3,
					      TrUserData);
'e_field_Etcd.MemberListResponse_members'([], Bin,
					  _TrUserData) ->
    Bin.

'e_mfield_Etcd.MemberPromoteResponse_header'(Msg, Bin,
					     TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.MemberPromoteResponse_members'(Msg, Bin,
					      TrUserData) ->
    SubBin = 'encode_msg_Etcd.Member'(Msg, <<>>,
				      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_Etcd.MemberPromoteResponse_members'([Elem
					      | Rest],
					     Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 18>>,
    Bin3 =
	'e_mfield_Etcd.MemberPromoteResponse_members'(id(Elem,
							 TrUserData),
						      Bin2, TrUserData),
    'e_field_Etcd.MemberPromoteResponse_members'(Rest, Bin3,
						 TrUserData);
'e_field_Etcd.MemberPromoteResponse_members'([], Bin,
					     _TrUserData) ->
    Bin.

'e_mfield_Etcd.DefragmentResponse_header'(Msg, Bin,
					  TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.MoveLeaderResponse_header'(Msg, Bin,
					  TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.AlarmResponse_header'(Msg, Bin,
				     TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.AlarmResponse_alarms'(Msg, Bin,
				     TrUserData) ->
    SubBin = 'encode_msg_Etcd.AlarmMember'(Msg, <<>>,
					   TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_Etcd.AlarmResponse_alarms'([Elem | Rest], Bin,
				    TrUserData) ->
    Bin2 = <<Bin/binary, 18>>,
    Bin3 = 'e_mfield_Etcd.AlarmResponse_alarms'(id(Elem,
						   TrUserData),
						Bin2, TrUserData),
    'e_field_Etcd.AlarmResponse_alarms'(Rest, Bin3,
					TrUserData);
'e_field_Etcd.AlarmResponse_alarms'([], Bin,
				    _TrUserData) ->
    Bin.

'e_mfield_Etcd.StatusResponse_header'(Msg, Bin,
				      TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_Etcd.StatusResponse_errors'([Elem | Rest], Bin,
				     TrUserData) ->
    Bin2 = <<Bin/binary, 66>>,
    Bin3 = e_type_string(id(Elem, TrUserData), Bin2,
			 TrUserData),
    'e_field_Etcd.StatusResponse_errors'(Rest, Bin3,
					 TrUserData);
'e_field_Etcd.StatusResponse_errors'([], Bin,
				     _TrUserData) ->
    Bin.

'e_mfield_Etcd.AuthUserAddRequest_options'(Msg, Bin,
					   TrUserData) ->
    SubBin = 'encode_msg_authpb.UserAddOptions'(Msg, <<>>,
						TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.AuthRoleGrantPermissionRequest_perm'(Msg,
						    Bin, TrUserData) ->
    SubBin = 'encode_msg_authpb.Permission'(Msg, <<>>,
					    TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.AuthEnableResponse_header'(Msg, Bin,
					  TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.AuthDisableResponse_header'(Msg, Bin,
					   TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.AuthenticateResponse_header'(Msg, Bin,
					    TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.AuthUserAddResponse_header'(Msg, Bin,
					   TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.AuthUserGetResponse_header'(Msg, Bin,
					   TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_Etcd.AuthUserGetResponse_roles'([Elem | Rest],
					 Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 18>>,
    Bin3 = e_type_string(id(Elem, TrUserData), Bin2,
			 TrUserData),
    'e_field_Etcd.AuthUserGetResponse_roles'(Rest, Bin3,
					     TrUserData);
'e_field_Etcd.AuthUserGetResponse_roles'([], Bin,
					 _TrUserData) ->
    Bin.

'e_mfield_Etcd.AuthUserDeleteResponse_header'(Msg, Bin,
					      TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.AuthUserChangePasswordResponse_header'(Msg,
						      Bin, TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.AuthUserGrantRoleResponse_header'(Msg,
						 Bin, TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.AuthUserRevokeRoleResponse_header'(Msg,
						  Bin, TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.AuthRoleAddResponse_header'(Msg, Bin,
					   TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.AuthRoleGetResponse_header'(Msg, Bin,
					   TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.AuthRoleGetResponse_perm'(Msg, Bin,
					 TrUserData) ->
    SubBin = 'encode_msg_authpb.Permission'(Msg, <<>>,
					    TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_Etcd.AuthRoleGetResponse_perm'([Elem | Rest],
					Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 18>>,
    Bin3 = 'e_mfield_Etcd.AuthRoleGetResponse_perm'(id(Elem,
						       TrUserData),
						    Bin2, TrUserData),
    'e_field_Etcd.AuthRoleGetResponse_perm'(Rest, Bin3,
					    TrUserData);
'e_field_Etcd.AuthRoleGetResponse_perm'([], Bin,
					_TrUserData) ->
    Bin.

'e_mfield_Etcd.AuthRoleListResponse_header'(Msg, Bin,
					    TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_Etcd.AuthRoleListResponse_roles'([Elem | Rest],
					  Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 18>>,
    Bin3 = e_type_string(id(Elem, TrUserData), Bin2,
			 TrUserData),
    'e_field_Etcd.AuthRoleListResponse_roles'(Rest, Bin3,
					      TrUserData);
'e_field_Etcd.AuthRoleListResponse_roles'([], Bin,
					  _TrUserData) ->
    Bin.

'e_mfield_Etcd.AuthUserListResponse_header'(Msg, Bin,
					    TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_Etcd.AuthUserListResponse_users'([Elem | Rest],
					  Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 18>>,
    Bin3 = e_type_string(id(Elem, TrUserData), Bin2,
			 TrUserData),
    'e_field_Etcd.AuthUserListResponse_users'(Rest, Bin3,
					      TrUserData);
'e_field_Etcd.AuthUserListResponse_users'([], Bin,
					  _TrUserData) ->
    Bin.

'e_mfield_Etcd.AuthRoleDeleteResponse_header'(Msg, Bin,
					      TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.AuthRoleGrantPermissionResponse_header'(Msg,
						       Bin, TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.AuthRoleRevokePermissionResponse_header'(Msg,
							Bin, TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.LockResponse_header'(Msg, Bin,
				    TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.UnlockResponse_header'(Msg, Bin,
				      TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.CampaignResponse_header'(Msg, Bin,
					TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.CampaignResponse_leader'(Msg, Bin,
					TrUserData) ->
    SubBin = 'encode_msg_Etcd.LeaderKey'(Msg, <<>>,
					 TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.LeaderResponse_header'(Msg, Bin,
				      TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.LeaderResponse_kv'(Msg, Bin,
				  TrUserData) ->
    SubBin = 'encode_msg_mvccpb.KeyValue'(Msg, <<>>,
					  TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.ResignRequest_leader'(Msg, Bin,
				     TrUserData) ->
    SubBin = 'encode_msg_Etcd.LeaderKey'(Msg, <<>>,
					 TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.ResignResponse_header'(Msg, Bin,
				      TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.ProclaimRequest_leader'(Msg, Bin,
				       TrUserData) ->
    SubBin = 'encode_msg_Etcd.LeaderKey'(Msg, <<>>,
					 TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_Etcd.ProclaimResponse_header'(Msg, Bin,
					TrUserData) ->
    SubBin = 'encode_msg_Etcd.ResponseHeader'(Msg, <<>>,
					      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_google.protobuf.FileDescriptorSet_file'(Msg,
						  Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.FileDescriptorProto'(Msg,
							 <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.FileDescriptorSet_file'([Elem
						  | Rest],
						 Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 10>>,
    Bin3 =
	'e_mfield_google.protobuf.FileDescriptorSet_file'(id(Elem,
							     TrUserData),
							  Bin2, TrUserData),
    'e_field_google.protobuf.FileDescriptorSet_file'(Rest,
						     Bin3, TrUserData);
'e_field_google.protobuf.FileDescriptorSet_file'([],
						 Bin, _TrUserData) ->
    Bin.

'e_field_google.protobuf.FileDescriptorProto_dependency'([Elem
							  | Rest],
							 Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 26>>,
    Bin3 = e_type_string(id(Elem, TrUserData), Bin2,
			 TrUserData),
    'e_field_google.protobuf.FileDescriptorProto_dependency'(Rest,
							     Bin3, TrUserData);
'e_field_google.protobuf.FileDescriptorProto_dependency'([],
							 Bin, _TrUserData) ->
    Bin.

'e_field_google.protobuf.FileDescriptorProto_public_dependency'([Elem
								 | Rest],
								Bin,
								TrUserData) ->
    Bin2 = <<Bin/binary, 80>>,
    Bin3 = e_type_int32(id(Elem, TrUserData), Bin2,
			TrUserData),
    'e_field_google.protobuf.FileDescriptorProto_public_dependency'(Rest,
								    Bin3,
								    TrUserData);
'e_field_google.protobuf.FileDescriptorProto_public_dependency'([],
								Bin,
								_TrUserData) ->
    Bin.

'e_field_google.protobuf.FileDescriptorProto_weak_dependency'([Elem
							       | Rest],
							      Bin,
							      TrUserData) ->
    Bin2 = <<Bin/binary, 88>>,
    Bin3 = e_type_int32(id(Elem, TrUserData), Bin2,
			TrUserData),
    'e_field_google.protobuf.FileDescriptorProto_weak_dependency'(Rest,
								  Bin3,
								  TrUserData);
'e_field_google.protobuf.FileDescriptorProto_weak_dependency'([],
							      Bin,
							      _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.FileDescriptorProto_message_type'(Msg,
							    Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.DescriptorProto'(Msg, <<>>,
						     TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.FileDescriptorProto_message_type'([Elem
							    | Rest],
							   Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 34>>,
    Bin3 =
	'e_mfield_google.protobuf.FileDescriptorProto_message_type'(id(Elem,
								       TrUserData),
								    Bin2,
								    TrUserData),
    'e_field_google.protobuf.FileDescriptorProto_message_type'(Rest,
							       Bin3,
							       TrUserData);
'e_field_google.protobuf.FileDescriptorProto_message_type'([],
							   Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.FileDescriptorProto_enum_type'(Msg,
							 Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.EnumDescriptorProto'(Msg,
							 <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.FileDescriptorProto_enum_type'([Elem
							 | Rest],
							Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 42>>,
    Bin3 =
	'e_mfield_google.protobuf.FileDescriptorProto_enum_type'(id(Elem,
								    TrUserData),
								 Bin2,
								 TrUserData),
    'e_field_google.protobuf.FileDescriptorProto_enum_type'(Rest,
							    Bin3, TrUserData);
'e_field_google.protobuf.FileDescriptorProto_enum_type'([],
							Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.FileDescriptorProto_service'(Msg,
						       Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.ServiceDescriptorProto'(Msg,
							    <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.FileDescriptorProto_service'([Elem
						       | Rest],
						      Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 50>>,
    Bin3 =
	'e_mfield_google.protobuf.FileDescriptorProto_service'(id(Elem,
								  TrUserData),
							       Bin2,
							       TrUserData),
    'e_field_google.protobuf.FileDescriptorProto_service'(Rest,
							  Bin3, TrUserData);
'e_field_google.protobuf.FileDescriptorProto_service'([],
						      Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.FileDescriptorProto_extension'(Msg,
							 Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.FieldDescriptorProto'(Msg,
							  <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.FileDescriptorProto_extension'([Elem
							 | Rest],
							Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 58>>,
    Bin3 =
	'e_mfield_google.protobuf.FileDescriptorProto_extension'(id(Elem,
								    TrUserData),
								 Bin2,
								 TrUserData),
    'e_field_google.protobuf.FileDescriptorProto_extension'(Rest,
							    Bin3, TrUserData);
'e_field_google.protobuf.FileDescriptorProto_extension'([],
							Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.FileDescriptorProto_options'(Msg,
						       Bin, TrUserData) ->
    SubBin = 'encode_msg_google.protobuf.FileOptions'(Msg,
						      <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_google.protobuf.FileDescriptorProto_source_code_info'(Msg,
								Bin,
								TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.SourceCodeInfo'(Msg, <<>>,
						    TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_google.protobuf.DescriptorProto_field'(Msg,
						 Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.FieldDescriptorProto'(Msg,
							  <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.DescriptorProto_field'([Elem
						 | Rest],
						Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 18>>,
    Bin3 =
	'e_mfield_google.protobuf.DescriptorProto_field'(id(Elem,
							    TrUserData),
							 Bin2, TrUserData),
    'e_field_google.protobuf.DescriptorProto_field'(Rest,
						    Bin3, TrUserData);
'e_field_google.protobuf.DescriptorProto_field'([], Bin,
						_TrUserData) ->
    Bin.

'e_mfield_google.protobuf.DescriptorProto_extension'(Msg,
						     Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.FieldDescriptorProto'(Msg,
							  <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.DescriptorProto_extension'([Elem
						     | Rest],
						    Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 50>>,
    Bin3 =
	'e_mfield_google.protobuf.DescriptorProto_extension'(id(Elem,
								TrUserData),
							     Bin2, TrUserData),
    'e_field_google.protobuf.DescriptorProto_extension'(Rest,
							Bin3, TrUserData);
'e_field_google.protobuf.DescriptorProto_extension'([],
						    Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.DescriptorProto_nested_type'(Msg,
						       Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.DescriptorProto'(Msg, <<>>,
						     TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.DescriptorProto_nested_type'([Elem
						       | Rest],
						      Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 26>>,
    Bin3 =
	'e_mfield_google.protobuf.DescriptorProto_nested_type'(id(Elem,
								  TrUserData),
							       Bin2,
							       TrUserData),
    'e_field_google.protobuf.DescriptorProto_nested_type'(Rest,
							  Bin3, TrUserData);
'e_field_google.protobuf.DescriptorProto_nested_type'([],
						      Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.DescriptorProto_enum_type'(Msg,
						     Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.EnumDescriptorProto'(Msg,
							 <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.DescriptorProto_enum_type'([Elem
						     | Rest],
						    Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 34>>,
    Bin3 =
	'e_mfield_google.protobuf.DescriptorProto_enum_type'(id(Elem,
								TrUserData),
							     Bin2, TrUserData),
    'e_field_google.protobuf.DescriptorProto_enum_type'(Rest,
							Bin3, TrUserData);
'e_field_google.protobuf.DescriptorProto_enum_type'([],
						    Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.DescriptorProto_extension_range'(Msg,
							   Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.DescriptorProto.ExtensionRange'(Msg,
								    <<>>,
								    TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.DescriptorProto_extension_range'([Elem
							   | Rest],
							  Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 42>>,
    Bin3 =
	'e_mfield_google.protobuf.DescriptorProto_extension_range'(id(Elem,
								      TrUserData),
								   Bin2,
								   TrUserData),
    'e_field_google.protobuf.DescriptorProto_extension_range'(Rest,
							      Bin3, TrUserData);
'e_field_google.protobuf.DescriptorProto_extension_range'([],
							  Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.DescriptorProto_oneof_decl'(Msg,
						      Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.OneofDescriptorProto'(Msg,
							  <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.DescriptorProto_oneof_decl'([Elem
						      | Rest],
						     Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 66>>,
    Bin3 =
	'e_mfield_google.protobuf.DescriptorProto_oneof_decl'(id(Elem,
								 TrUserData),
							      Bin2, TrUserData),
    'e_field_google.protobuf.DescriptorProto_oneof_decl'(Rest,
							 Bin3, TrUserData);
'e_field_google.protobuf.DescriptorProto_oneof_decl'([],
						     Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.DescriptorProto_options'(Msg,
						   Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.MessageOptions'(Msg, <<>>,
						    TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_google.protobuf.DescriptorProto_reserved_range'(Msg,
							  Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.DescriptorProto.ReservedRange'(Msg,
								   <<>>,
								   TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.DescriptorProto_reserved_range'([Elem
							  | Rest],
							 Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 74>>,
    Bin3 =
	'e_mfield_google.protobuf.DescriptorProto_reserved_range'(id(Elem,
								     TrUserData),
								  Bin2,
								  TrUserData),
    'e_field_google.protobuf.DescriptorProto_reserved_range'(Rest,
							     Bin3, TrUserData);
'e_field_google.protobuf.DescriptorProto_reserved_range'([],
							 Bin, _TrUserData) ->
    Bin.

'e_field_google.protobuf.DescriptorProto_reserved_name'([Elem
							 | Rest],
							Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 82>>,
    Bin3 = e_type_string(id(Elem, TrUserData), Bin2,
			 TrUserData),
    'e_field_google.protobuf.DescriptorProto_reserved_name'(Rest,
							    Bin3, TrUserData);
'e_field_google.protobuf.DescriptorProto_reserved_name'([],
							Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.FieldDescriptorProto_options'(Msg,
							Bin, TrUserData) ->
    SubBin = 'encode_msg_google.protobuf.FieldOptions'(Msg,
						       <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_google.protobuf.EnumDescriptorProto_value'(Msg,
						     Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.EnumValueDescriptorProto'(Msg,
							      <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.EnumDescriptorProto_value'([Elem
						     | Rest],
						    Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 18>>,
    Bin3 =
	'e_mfield_google.protobuf.EnumDescriptorProto_value'(id(Elem,
								TrUserData),
							     Bin2, TrUserData),
    'e_field_google.protobuf.EnumDescriptorProto_value'(Rest,
							Bin3, TrUserData);
'e_field_google.protobuf.EnumDescriptorProto_value'([],
						    Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.EnumDescriptorProto_options'(Msg,
						       Bin, TrUserData) ->
    SubBin = 'encode_msg_google.protobuf.EnumOptions'(Msg,
						      <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_google.protobuf.EnumValueDescriptorProto_options'(Msg,
							    Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.EnumValueOptions'(Msg, <<>>,
						      TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_google.protobuf.ServiceDescriptorProto_method'(Msg,
							 Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.MethodDescriptorProto'(Msg,
							   <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.ServiceDescriptorProto_method'([Elem
							 | Rest],
							Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 18>>,
    Bin3 =
	'e_mfield_google.protobuf.ServiceDescriptorProto_method'(id(Elem,
								    TrUserData),
								 Bin2,
								 TrUserData),
    'e_field_google.protobuf.ServiceDescriptorProto_method'(Rest,
							    Bin3, TrUserData);
'e_field_google.protobuf.ServiceDescriptorProto_method'([],
							Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.ServiceDescriptorProto_options'(Msg,
							  Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.ServiceOptions'(Msg, <<>>,
						    TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_google.protobuf.MethodDescriptorProto_options'(Msg,
							 Bin, TrUserData) ->
    SubBin = 'encode_msg_google.protobuf.MethodOptions'(Msg,
							<<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_google.protobuf.FileOptions_uninterpreted_option'(Msg,
							    Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.UninterpretedOption'(Msg,
							 <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.FileOptions_uninterpreted_option'([Elem
							    | Rest],
							   Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 186, 62>>,
    Bin3 =
	'e_mfield_google.protobuf.FileOptions_uninterpreted_option'(id(Elem,
								       TrUserData),
								    Bin2,
								    TrUserData),
    'e_field_google.protobuf.FileOptions_uninterpreted_option'(Rest,
							       Bin3,
							       TrUserData);
'e_field_google.protobuf.FileOptions_uninterpreted_option'([],
							   Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.MessageOptions_uninterpreted_option'(Msg,
							       Bin,
							       TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.UninterpretedOption'(Msg,
							 <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.MessageOptions_uninterpreted_option'([Elem
							       | Rest],
							      Bin,
							      TrUserData) ->
    Bin2 = <<Bin/binary, 186, 62>>,
    Bin3 =
	'e_mfield_google.protobuf.MessageOptions_uninterpreted_option'(id(Elem,
									  TrUserData),
								       Bin2,
								       TrUserData),
    'e_field_google.protobuf.MessageOptions_uninterpreted_option'(Rest,
								  Bin3,
								  TrUserData);
'e_field_google.protobuf.MessageOptions_uninterpreted_option'([],
							      Bin,
							      _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.FieldOptions_uninterpreted_option'(Msg,
							     Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.UninterpretedOption'(Msg,
							 <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.FieldOptions_uninterpreted_option'([Elem
							     | Rest],
							    Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 186, 62>>,
    Bin3 =
	'e_mfield_google.protobuf.FieldOptions_uninterpreted_option'(id(Elem,
									TrUserData),
								     Bin2,
								     TrUserData),
    'e_field_google.protobuf.FieldOptions_uninterpreted_option'(Rest,
								Bin3,
								TrUserData);
'e_field_google.protobuf.FieldOptions_uninterpreted_option'([],
							    Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.EnumOptions_uninterpreted_option'(Msg,
							    Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.UninterpretedOption'(Msg,
							 <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.EnumOptions_uninterpreted_option'([Elem
							    | Rest],
							   Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 186, 62>>,
    Bin3 =
	'e_mfield_google.protobuf.EnumOptions_uninterpreted_option'(id(Elem,
								       TrUserData),
								    Bin2,
								    TrUserData),
    'e_field_google.protobuf.EnumOptions_uninterpreted_option'(Rest,
							       Bin3,
							       TrUserData);
'e_field_google.protobuf.EnumOptions_uninterpreted_option'([],
							   Bin, _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.EnumValueOptions_uninterpreted_option'(Msg,
								 Bin,
								 TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.UninterpretedOption'(Msg,
							 <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.EnumValueOptions_uninterpreted_option'([Elem
								 | Rest],
								Bin,
								TrUserData) ->
    Bin2 = <<Bin/binary, 186, 62>>,
    Bin3 =
	'e_mfield_google.protobuf.EnumValueOptions_uninterpreted_option'(id(Elem,
									    TrUserData),
									 Bin2,
									 TrUserData),
    'e_field_google.protobuf.EnumValueOptions_uninterpreted_option'(Rest,
								    Bin3,
								    TrUserData);
'e_field_google.protobuf.EnumValueOptions_uninterpreted_option'([],
								Bin,
								_TrUserData) ->
    Bin.

'e_mfield_google.protobuf.ServiceOptions_uninterpreted_option'(Msg,
							       Bin,
							       TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.UninterpretedOption'(Msg,
							 <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.ServiceOptions_uninterpreted_option'([Elem
							       | Rest],
							      Bin,
							      TrUserData) ->
    Bin2 = <<Bin/binary, 186, 62>>,
    Bin3 =
	'e_mfield_google.protobuf.ServiceOptions_uninterpreted_option'(id(Elem,
									  TrUserData),
								       Bin2,
								       TrUserData),
    'e_field_google.protobuf.ServiceOptions_uninterpreted_option'(Rest,
								  Bin3,
								  TrUserData);
'e_field_google.protobuf.ServiceOptions_uninterpreted_option'([],
							      Bin,
							      _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.MethodOptions_uninterpreted_option'(Msg,
							      Bin,
							      TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.UninterpretedOption'(Msg,
							 <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.MethodOptions_uninterpreted_option'([Elem
							      | Rest],
							     Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 186, 62>>,
    Bin3 =
	'e_mfield_google.protobuf.MethodOptions_uninterpreted_option'(id(Elem,
									 TrUserData),
								      Bin2,
								      TrUserData),
    'e_field_google.protobuf.MethodOptions_uninterpreted_option'(Rest,
								 Bin3,
								 TrUserData);
'e_field_google.protobuf.MethodOptions_uninterpreted_option'([],
							     Bin,
							     _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.UninterpretedOption_name'(Msg,
						    Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.UninterpretedOption.NamePart'(Msg,
								  <<>>,
								  TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.UninterpretedOption_name'([Elem
						    | Rest],
						   Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 18>>,
    Bin3 =
	'e_mfield_google.protobuf.UninterpretedOption_name'(id(Elem,
							       TrUserData),
							    Bin2, TrUserData),
    'e_field_google.protobuf.UninterpretedOption_name'(Rest,
						       Bin3, TrUserData);
'e_field_google.protobuf.UninterpretedOption_name'([],
						   Bin, _TrUserData) ->
    Bin.

'e_field_google.protobuf.SourceCodeInfo.Location_path'(Elems,
						       Bin, TrUserData)
    when Elems =/= [] ->
    SubBin =
	'e_pfield_google.protobuf.SourceCodeInfo.Location_path'(Elems,
								<<>>,
								TrUserData),
    Bin2 = <<Bin/binary, 10>>,
    Bin3 = e_varint(byte_size(SubBin), Bin2),
    <<Bin3/binary, SubBin/binary>>;
'e_field_google.protobuf.SourceCodeInfo.Location_path'([],
						       Bin, _TrUserData) ->
    Bin.

'e_pfield_google.protobuf.SourceCodeInfo.Location_path'([Value
							 | Rest],
							Bin, TrUserData) ->
    Bin2 = e_type_int32(id(Value, TrUserData), Bin,
			TrUserData),
    'e_pfield_google.protobuf.SourceCodeInfo.Location_path'(Rest,
							    Bin2, TrUserData);
'e_pfield_google.protobuf.SourceCodeInfo.Location_path'([],
							Bin, _TrUserData) ->
    Bin.

'e_field_google.protobuf.SourceCodeInfo.Location_span'(Elems,
						       Bin, TrUserData)
    when Elems =/= [] ->
    SubBin =
	'e_pfield_google.protobuf.SourceCodeInfo.Location_span'(Elems,
								<<>>,
								TrUserData),
    Bin2 = <<Bin/binary, 18>>,
    Bin3 = e_varint(byte_size(SubBin), Bin2),
    <<Bin3/binary, SubBin/binary>>;
'e_field_google.protobuf.SourceCodeInfo.Location_span'([],
						       Bin, _TrUserData) ->
    Bin.

'e_pfield_google.protobuf.SourceCodeInfo.Location_span'([Value
							 | Rest],
							Bin, TrUserData) ->
    Bin2 = e_type_int32(id(Value, TrUserData), Bin,
			TrUserData),
    'e_pfield_google.protobuf.SourceCodeInfo.Location_span'(Rest,
							    Bin2, TrUserData);
'e_pfield_google.protobuf.SourceCodeInfo.Location_span'([],
							Bin, _TrUserData) ->
    Bin.

'e_field_google.protobuf.SourceCodeInfo.Location_leading_detached_comments'([Elem
									     | Rest],
									    Bin,
									    TrUserData) ->
    Bin2 = <<Bin/binary, 50>>,
    Bin3 = e_type_string(id(Elem, TrUserData), Bin2,
			 TrUserData),
    'e_field_google.protobuf.SourceCodeInfo.Location_leading_detached_comments'(Rest,
										Bin3,
										TrUserData);
'e_field_google.protobuf.SourceCodeInfo.Location_leading_detached_comments'([],
									    Bin,
									    _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.SourceCodeInfo_location'(Msg,
						   Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.SourceCodeInfo.Location'(Msg,
							     <<>>, TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.SourceCodeInfo_location'([Elem
						   | Rest],
						  Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 10>>,
    Bin3 =
	'e_mfield_google.protobuf.SourceCodeInfo_location'(id(Elem,
							      TrUserData),
							   Bin2, TrUserData),
    'e_field_google.protobuf.SourceCodeInfo_location'(Rest,
						      Bin3, TrUserData);
'e_field_google.protobuf.SourceCodeInfo_location'([],
						  Bin, _TrUserData) ->
    Bin.

'e_field_google.protobuf.GeneratedCodeInfo.Annotation_path'(Elems,
							    Bin, TrUserData)
    when Elems =/= [] ->
    SubBin =
	'e_pfield_google.protobuf.GeneratedCodeInfo.Annotation_path'(Elems,
								     <<>>,
								     TrUserData),
    Bin2 = <<Bin/binary, 10>>,
    Bin3 = e_varint(byte_size(SubBin), Bin2),
    <<Bin3/binary, SubBin/binary>>;
'e_field_google.protobuf.GeneratedCodeInfo.Annotation_path'([],
							    Bin, _TrUserData) ->
    Bin.

'e_pfield_google.protobuf.GeneratedCodeInfo.Annotation_path'([Value
							      | Rest],
							     Bin, TrUserData) ->
    Bin2 = e_type_int32(id(Value, TrUserData), Bin,
			TrUserData),
    'e_pfield_google.protobuf.GeneratedCodeInfo.Annotation_path'(Rest,
								 Bin2,
								 TrUserData);
'e_pfield_google.protobuf.GeneratedCodeInfo.Annotation_path'([],
							     Bin,
							     _TrUserData) ->
    Bin.

'e_mfield_google.protobuf.GeneratedCodeInfo_annotation'(Msg,
							Bin, TrUserData) ->
    SubBin =
	'encode_msg_google.protobuf.GeneratedCodeInfo.Annotation'(Msg,
								  <<>>,
								  TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_google.protobuf.GeneratedCodeInfo_annotation'([Elem
							| Rest],
						       Bin, TrUserData) ->
    Bin2 = <<Bin/binary, 10>>,
    Bin3 =
	'e_mfield_google.protobuf.GeneratedCodeInfo_annotation'(id(Elem,
								   TrUserData),
								Bin2,
								TrUserData),
    'e_field_google.protobuf.GeneratedCodeInfo_annotation'(Rest,
							   Bin3, TrUserData);
'e_field_google.protobuf.GeneratedCodeInfo_annotation'([],
						       Bin, _TrUserData) ->
    Bin.

'e_mfield_mvccpb.Event_kv'(Msg, Bin, TrUserData) ->
    SubBin = 'encode_msg_mvccpb.KeyValue'(Msg, <<>>,
					  TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_mvccpb.Event_prev_kv'(Msg, Bin, TrUserData) ->
    SubBin = 'encode_msg_mvccpb.KeyValue'(Msg, <<>>,
					  TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_authpb.User_roles'([Elem | Rest], Bin,
			    TrUserData) ->
    Bin2 = <<Bin/binary, 26>>,
    Bin3 = e_type_string(id(Elem, TrUserData), Bin2,
			 TrUserData),
    'e_field_authpb.User_roles'(Rest, Bin3, TrUserData);
'e_field_authpb.User_roles'([], Bin, _TrUserData) ->
    Bin.

'e_mfield_authpb.User_options'(Msg, Bin, TrUserData) ->
    SubBin = 'encode_msg_authpb.UserAddOptions'(Msg, <<>>,
						TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_mfield_authpb.Role_keyPermission'(Msg, Bin,
				     TrUserData) ->
    SubBin = 'encode_msg_authpb.Permission'(Msg, <<>>,
					    TrUserData),
    Bin2 = e_varint(byte_size(SubBin), Bin),
    <<Bin2/binary, SubBin/binary>>.

'e_field_authpb.Role_keyPermission'([Elem | Rest], Bin,
				    TrUserData) ->
    Bin2 = <<Bin/binary, 18>>,
    Bin3 = 'e_mfield_authpb.Role_keyPermission'(id(Elem,
						   TrUserData),
						Bin2, TrUserData),
    'e_field_authpb.Role_keyPermission'(Rest, Bin3,
					TrUserData);
'e_field_authpb.Role_keyPermission'([], Bin,
				    _TrUserData) ->
    Bin.

'e_enum_Etcd.RangeRequest.SortOrder'('NONE', Bin,
				     _TrUserData) ->
    <<Bin/binary, 0>>;
'e_enum_Etcd.RangeRequest.SortOrder'('ASCEND', Bin,
				     _TrUserData) ->
    <<Bin/binary, 1>>;
'e_enum_Etcd.RangeRequest.SortOrder'('DESCEND', Bin,
				     _TrUserData) ->
    <<Bin/binary, 2>>;
'e_enum_Etcd.RangeRequest.SortOrder'(V, Bin,
				     _TrUserData) ->
    e_varint(V, Bin).

'e_enum_Etcd.RangeRequest.SortTarget'('KEY', Bin,
				      _TrUserData) ->
    <<Bin/binary, 0>>;
'e_enum_Etcd.RangeRequest.SortTarget'('VERSION', Bin,
				      _TrUserData) ->
    <<Bin/binary, 1>>;
'e_enum_Etcd.RangeRequest.SortTarget'('CREATE', Bin,
				      _TrUserData) ->
    <<Bin/binary, 2>>;
'e_enum_Etcd.RangeRequest.SortTarget'('MOD', Bin,
				      _TrUserData) ->
    <<Bin/binary, 3>>;
'e_enum_Etcd.RangeRequest.SortTarget'('VALUE', Bin,
				      _TrUserData) ->
    <<Bin/binary, 4>>;
'e_enum_Etcd.RangeRequest.SortTarget'(V, Bin,
				      _TrUserData) ->
    e_varint(V, Bin).

'e_enum_Etcd.Compare.CompareResult'('EQUAL', Bin,
				    _TrUserData) ->
    <<Bin/binary, 0>>;
'e_enum_Etcd.Compare.CompareResult'('GREATER', Bin,
				    _TrUserData) ->
    <<Bin/binary, 1>>;
'e_enum_Etcd.Compare.CompareResult'('LESS', Bin,
				    _TrUserData) ->
    <<Bin/binary, 2>>;
'e_enum_Etcd.Compare.CompareResult'('NOT_EQUAL', Bin,
				    _TrUserData) ->
    <<Bin/binary, 3>>;
'e_enum_Etcd.Compare.CompareResult'(V, Bin,
				    _TrUserData) ->
    e_varint(V, Bin).

'e_enum_Etcd.Compare.CompareTarget'('VERSION', Bin,
				    _TrUserData) ->
    <<Bin/binary, 0>>;
'e_enum_Etcd.Compare.CompareTarget'('CREATE', Bin,
				    _TrUserData) ->
    <<Bin/binary, 1>>;
'e_enum_Etcd.Compare.CompareTarget'('MOD', Bin,
				    _TrUserData) ->
    <<Bin/binary, 2>>;
'e_enum_Etcd.Compare.CompareTarget'('VALUE', Bin,
				    _TrUserData) ->
    <<Bin/binary, 3>>;
'e_enum_Etcd.Compare.CompareTarget'('LEASE', Bin,
				    _TrUserData) ->
    <<Bin/binary, 4>>;
'e_enum_Etcd.Compare.CompareTarget'(V, Bin,
				    _TrUserData) ->
    e_varint(V, Bin).

'e_enum_Etcd.WatchCreateRequest.FilterType'('NOPUT',
					    Bin, _TrUserData) ->
    <<Bin/binary, 0>>;
'e_enum_Etcd.WatchCreateRequest.FilterType'('NODELETE',
					    Bin, _TrUserData) ->
    <<Bin/binary, 1>>;
'e_enum_Etcd.WatchCreateRequest.FilterType'(V, Bin,
					    _TrUserData) ->
    e_varint(V, Bin).

'e_enum_Etcd.AlarmType'('NONE', Bin, _TrUserData) ->
    <<Bin/binary, 0>>;
'e_enum_Etcd.AlarmType'('NOSPACE', Bin, _TrUserData) ->
    <<Bin/binary, 1>>;
'e_enum_Etcd.AlarmType'('CORRUPT', Bin, _TrUserData) ->
    <<Bin/binary, 2>>;
'e_enum_Etcd.AlarmType'(V, Bin, _TrUserData) ->
    e_varint(V, Bin).

'e_enum_Etcd.AlarmRequest.AlarmAction'('GET', Bin,
				       _TrUserData) ->
    <<Bin/binary, 0>>;
'e_enum_Etcd.AlarmRequest.AlarmAction'('ACTIVATE', Bin,
				       _TrUserData) ->
    <<Bin/binary, 1>>;
'e_enum_Etcd.AlarmRequest.AlarmAction'('DEACTIVATE',
				       Bin, _TrUserData) ->
    <<Bin/binary, 2>>;
'e_enum_Etcd.AlarmRequest.AlarmAction'(V, Bin,
				       _TrUserData) ->
    e_varint(V, Bin).

'e_enum_Etcd.HealthCheckResponse.ServingStatus'('UNKNOWN',
						Bin, _TrUserData) ->
    <<Bin/binary, 0>>;
'e_enum_Etcd.HealthCheckResponse.ServingStatus'('SERVING',
						Bin, _TrUserData) ->
    <<Bin/binary, 1>>;
'e_enum_Etcd.HealthCheckResponse.ServingStatus'('NOT_SERVING',
						Bin, _TrUserData) ->
    <<Bin/binary, 2>>;
'e_enum_Etcd.HealthCheckResponse.ServingStatus'('SERVICE_UNKNOWN',
						Bin, _TrUserData) ->
    <<Bin/binary, 3>>;
'e_enum_Etcd.HealthCheckResponse.ServingStatus'(V, Bin,
						_TrUserData) ->
    e_varint(V, Bin).

'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_DOUBLE',
						   Bin, _TrUserData) ->
    <<Bin/binary, 1>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_FLOAT',
						   Bin, _TrUserData) ->
    <<Bin/binary, 2>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_INT64',
						   Bin, _TrUserData) ->
    <<Bin/binary, 3>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_UINT64',
						   Bin, _TrUserData) ->
    <<Bin/binary, 4>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_INT32',
						   Bin, _TrUserData) ->
    <<Bin/binary, 5>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_FIXED64',
						   Bin, _TrUserData) ->
    <<Bin/binary, 6>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_FIXED32',
						   Bin, _TrUserData) ->
    <<Bin/binary, 7>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_BOOL',
						   Bin, _TrUserData) ->
    <<Bin/binary, 8>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_STRING',
						   Bin, _TrUserData) ->
    <<Bin/binary, 9>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_GROUP',
						   Bin, _TrUserData) ->
    <<Bin/binary, 10>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_MESSAGE',
						   Bin, _TrUserData) ->
    <<Bin/binary, 11>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_BYTES',
						   Bin, _TrUserData) ->
    <<Bin/binary, 12>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_UINT32',
						   Bin, _TrUserData) ->
    <<Bin/binary, 13>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_ENUM',
						   Bin, _TrUserData) ->
    <<Bin/binary, 14>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_SFIXED32',
						   Bin, _TrUserData) ->
    <<Bin/binary, 15>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_SFIXED64',
						   Bin, _TrUserData) ->
    <<Bin/binary, 16>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_SINT32',
						   Bin, _TrUserData) ->
    <<Bin/binary, 17>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_SINT64',
						   Bin, _TrUserData) ->
    <<Bin/binary, 18>>;
'e_enum_google.protobuf.FieldDescriptorProto.Type'(V,
						   Bin, _TrUserData) ->
    e_varint(V, Bin).

'e_enum_google.protobuf.FieldDescriptorProto.Label'('LABEL_OPTIONAL',
						    Bin, _TrUserData) ->
    <<Bin/binary, 1>>;
'e_enum_google.protobuf.FieldDescriptorProto.Label'('LABEL_REQUIRED',
						    Bin, _TrUserData) ->
    <<Bin/binary, 2>>;
'e_enum_google.protobuf.FieldDescriptorProto.Label'('LABEL_REPEATED',
						    Bin, _TrUserData) ->
    <<Bin/binary, 3>>;
'e_enum_google.protobuf.FieldDescriptorProto.Label'(V,
						    Bin, _TrUserData) ->
    e_varint(V, Bin).

'e_enum_google.protobuf.FileOptions.OptimizeMode'('SPEED',
						  Bin, _TrUserData) ->
    <<Bin/binary, 1>>;
'e_enum_google.protobuf.FileOptions.OptimizeMode'('CODE_SIZE',
						  Bin, _TrUserData) ->
    <<Bin/binary, 2>>;
'e_enum_google.protobuf.FileOptions.OptimizeMode'('LITE_RUNTIME',
						  Bin, _TrUserData) ->
    <<Bin/binary, 3>>;
'e_enum_google.protobuf.FileOptions.OptimizeMode'(V,
						  Bin, _TrUserData) ->
    e_varint(V, Bin).

'e_enum_google.protobuf.FieldOptions.CType'('STRING',
					    Bin, _TrUserData) ->
    <<Bin/binary, 0>>;
'e_enum_google.protobuf.FieldOptions.CType'('CORD', Bin,
					    _TrUserData) ->
    <<Bin/binary, 1>>;
'e_enum_google.protobuf.FieldOptions.CType'('STRING_PIECE',
					    Bin, _TrUserData) ->
    <<Bin/binary, 2>>;
'e_enum_google.protobuf.FieldOptions.CType'(V, Bin,
					    _TrUserData) ->
    e_varint(V, Bin).

'e_enum_google.protobuf.FieldOptions.JSType'('JS_NORMAL',
					     Bin, _TrUserData) ->
    <<Bin/binary, 0>>;
'e_enum_google.protobuf.FieldOptions.JSType'('JS_STRING',
					     Bin, _TrUserData) ->
    <<Bin/binary, 1>>;
'e_enum_google.protobuf.FieldOptions.JSType'('JS_NUMBER',
					     Bin, _TrUserData) ->
    <<Bin/binary, 2>>;
'e_enum_google.protobuf.FieldOptions.JSType'(V, Bin,
					     _TrUserData) ->
    e_varint(V, Bin).

'e_enum_mvccpb.Event.EventType'('PUT', Bin,
				_TrUserData) ->
    <<Bin/binary, 0>>;
'e_enum_mvccpb.Event.EventType'('DELETE', Bin,
				_TrUserData) ->
    <<Bin/binary, 1>>;
'e_enum_mvccpb.Event.EventType'(V, Bin, _TrUserData) ->
    e_varint(V, Bin).

'e_enum_authpb.Permission.Type'('READ', Bin,
				_TrUserData) ->
    <<Bin/binary, 0>>;
'e_enum_authpb.Permission.Type'('WRITE', Bin,
				_TrUserData) ->
    <<Bin/binary, 1>>;
'e_enum_authpb.Permission.Type'('READWRITE', Bin,
				_TrUserData) ->
    <<Bin/binary, 2>>;
'e_enum_authpb.Permission.Type'(V, Bin, _TrUserData) ->
    e_varint(V, Bin).

-compile({nowarn_unused_function,e_type_sint/3}).
e_type_sint(Value, Bin, _TrUserData) when Value >= 0 ->
    e_varint(Value * 2, Bin);
e_type_sint(Value, Bin, _TrUserData) ->
    e_varint(Value * -2 - 1, Bin).

-compile({nowarn_unused_function,e_type_int32/3}).
e_type_int32(Value, Bin, _TrUserData)
    when 0 =< Value, Value =< 127 ->
    <<Bin/binary, Value>>;
e_type_int32(Value, Bin, _TrUserData) ->
    <<N:64/unsigned-native>> = <<Value:64/signed-native>>,
    e_varint(N, Bin).

-compile({nowarn_unused_function,e_type_int64/3}).
e_type_int64(Value, Bin, _TrUserData)
    when 0 =< Value, Value =< 127 ->
    <<Bin/binary, Value>>;
e_type_int64(Value, Bin, _TrUserData) ->
    <<N:64/unsigned-native>> = <<Value:64/signed-native>>,
    e_varint(N, Bin).

-compile({nowarn_unused_function,e_type_bool/3}).
e_type_bool(true, Bin, _TrUserData) ->
    <<Bin/binary, 1>>;
e_type_bool(false, Bin, _TrUserData) ->
    <<Bin/binary, 0>>;
e_type_bool(1, Bin, _TrUserData) -> <<Bin/binary, 1>>;
e_type_bool(0, Bin, _TrUserData) -> <<Bin/binary, 0>>.

-compile({nowarn_unused_function,e_type_string/3}).
e_type_string(S, Bin, _TrUserData) ->
    Utf8 = unicode:characters_to_binary(S),
    Bin2 = e_varint(byte_size(Utf8), Bin),
    <<Bin2/binary, Utf8/binary>>.

-compile({nowarn_unused_function,e_type_bytes/3}).
e_type_bytes(Bytes, Bin, _TrUserData)
    when is_binary(Bytes) ->
    Bin2 = e_varint(byte_size(Bytes), Bin),
    <<Bin2/binary, Bytes/binary>>;
e_type_bytes(Bytes, Bin, _TrUserData)
    when is_list(Bytes) ->
    BytesBin = iolist_to_binary(Bytes),
    Bin2 = e_varint(byte_size(BytesBin), Bin),
    <<Bin2/binary, BytesBin/binary>>.

-compile({nowarn_unused_function,e_type_fixed32/3}).
e_type_fixed32(Value, Bin, _TrUserData) ->
    <<Bin/binary, Value:32/little>>.

-compile({nowarn_unused_function,e_type_sfixed32/3}).
e_type_sfixed32(Value, Bin, _TrUserData) ->
    <<Bin/binary, Value:32/little-signed>>.

-compile({nowarn_unused_function,e_type_fixed64/3}).
e_type_fixed64(Value, Bin, _TrUserData) ->
    <<Bin/binary, Value:64/little>>.

-compile({nowarn_unused_function,e_type_sfixed64/3}).
e_type_sfixed64(Value, Bin, _TrUserData) ->
    <<Bin/binary, Value:64/little-signed>>.

-compile({nowarn_unused_function,e_type_float/3}).
e_type_float(V, Bin, _) when is_number(V) ->
    <<Bin/binary, V:32/little-float>>;
e_type_float(infinity, Bin, _) ->
    <<Bin/binary, 0:16, 128, 127>>;
e_type_float('-infinity', Bin, _) ->
    <<Bin/binary, 0:16, 128, 255>>;
e_type_float(nan, Bin, _) ->
    <<Bin/binary, 0:16, 192, 127>>.

-compile({nowarn_unused_function,e_type_double/3}).
e_type_double(V, Bin, _) when is_number(V) ->
    <<Bin/binary, V:64/little-float>>;
e_type_double(infinity, Bin, _) ->
    <<Bin/binary, 0:48, 240, 127>>;
e_type_double('-infinity', Bin, _) ->
    <<Bin/binary, 0:48, 240, 255>>;
e_type_double(nan, Bin, _) ->
    <<Bin/binary, 0:48, 248, 127>>.

-compile({nowarn_unused_function,e_varint/3}).
e_varint(N, Bin, _TrUserData) -> e_varint(N, Bin).

-compile({nowarn_unused_function,e_varint/2}).
e_varint(N, Bin) when N =< 127 -> <<Bin/binary, N>>;
e_varint(N, Bin) ->
    Bin2 = <<Bin/binary, (N band 127 bor 128)>>,
    e_varint(N bsr 7, Bin2).

is_empty_string("") -> true;
is_empty_string(<<>>) -> true;
is_empty_string(L) when is_list(L) ->
    not string_has_chars(L);
is_empty_string(B) when is_binary(B) -> false.

string_has_chars([C | _]) when is_integer(C) -> true;
string_has_chars([H | T]) ->
    case string_has_chars(H) of
      true -> true;
      false -> string_has_chars(T)
    end;
string_has_chars(B)
    when is_binary(B), byte_size(B) =/= 0 ->
    true;
string_has_chars(C) when is_integer(C) -> true;
string_has_chars(<<>>) -> false;
string_has_chars([]) -> false.


decode_msg(Bin, MsgName) when is_binary(Bin) ->
    decode_msg(Bin, MsgName, []).

decode_msg(Bin, MsgName, Opts) when is_binary(Bin) ->
    TrUserData = proplists:get_value(user_data, Opts),
    decode_msg_1_catch(Bin, MsgName, TrUserData).

-ifdef('OTP_RELEASE').
decode_msg_1_catch(Bin, MsgName, TrUserData) ->
    try decode_msg_2_doit(MsgName, Bin, TrUserData)
    catch Class:Reason:StackTrace -> error({gpb_error,{decoding_failure, {Bin, MsgName, {Class, Reason, StackTrace}}}})
    end.
-else.
decode_msg_1_catch(Bin, MsgName, TrUserData) ->
    try decode_msg_2_doit(MsgName, Bin, TrUserData)
    catch Class:Reason ->
        StackTrace = erlang:get_stacktrace(),
        error({gpb_error,{decoding_failure, {Bin, MsgName, {Class, Reason, StackTrace}}}})
    end.
-endif.

decode_msg_2_doit('Etcd.ResponseHeader', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.ResponseHeader'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.RangeRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.RangeRequest'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.RangeResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.RangeResponse'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.PutRequest', Bin, TrUserData) ->
    id('decode_msg_Etcd.PutRequest'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.PutResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.PutResponse'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.DeleteRangeRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.DeleteRangeRequest'(Bin,
					    TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.DeleteRangeResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.DeleteRangeResponse'(Bin,
					     TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.RequestOp', Bin, TrUserData) ->
    id('decode_msg_Etcd.RequestOp'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.ResponseOp', Bin, TrUserData) ->
    id('decode_msg_Etcd.ResponseOp'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.Compare', Bin, TrUserData) ->
    id('decode_msg_Etcd.Compare'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.TxnRequest', Bin, TrUserData) ->
    id('decode_msg_Etcd.TxnRequest'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.TxnResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.TxnResponse'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.CompactionRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.CompactionRequest'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.CompactionResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.CompactionResponse'(Bin,
					    TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.HashRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.HashRequest'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.HashKVRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.HashKVRequest'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.HashKVResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.HashKVResponse'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.HashResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.HashResponse'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.SnapshotRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.SnapshotRequest'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.SnapshotResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.SnapshotResponse'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.WatchRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.WatchRequest'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.WatchCreateRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.WatchCreateRequest'(Bin,
					    TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.WatchCancelRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.WatchCancelRequest'(Bin,
					    TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.WatchProgressRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.WatchProgressRequest'(Bin,
					      TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.WatchResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.WatchResponse'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.LeaseGrantRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.LeaseGrantRequest'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.LeaseGrantResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.LeaseGrantResponse'(Bin,
					    TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.LeaseRevokeRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.LeaseRevokeRequest'(Bin,
					    TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.LeaseRevokeResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.LeaseRevokeResponse'(Bin,
					     TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.LeaseCheckpoint', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.LeaseCheckpoint'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.LeaseCheckpointRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.LeaseCheckpointRequest'(Bin,
						TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.LeaseCheckpointResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.LeaseCheckpointResponse'(Bin,
						 TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.LeaseKeepAliveRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.LeaseKeepAliveRequest'(Bin,
					       TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.LeaseKeepAliveResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.LeaseKeepAliveResponse'(Bin,
						TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.LeaseTimeToLiveRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.LeaseTimeToLiveRequest'(Bin,
						TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.LeaseTimeToLiveResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.LeaseTimeToLiveResponse'(Bin,
						 TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.LeaseLeasesRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.LeaseLeasesRequest'(Bin,
					    TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.LeaseStatus', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.LeaseStatus'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.LeaseLeasesResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.LeaseLeasesResponse'(Bin,
					     TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.Member', Bin, TrUserData) ->
    id('decode_msg_Etcd.Member'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.MemberAddRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.MemberAddRequest'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.MemberAddResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.MemberAddResponse'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.MemberRemoveRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.MemberRemoveRequest'(Bin,
					     TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.MemberRemoveResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.MemberRemoveResponse'(Bin,
					      TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.MemberUpdateRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.MemberUpdateRequest'(Bin,
					     TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.MemberUpdateResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.MemberUpdateResponse'(Bin,
					      TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.MemberListRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.MemberListRequest'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.MemberListResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.MemberListResponse'(Bin,
					    TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.MemberPromoteRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.MemberPromoteRequest'(Bin,
					      TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.MemberPromoteResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.MemberPromoteResponse'(Bin,
					       TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.DefragmentRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.DefragmentRequest'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.DefragmentResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.DefragmentResponse'(Bin,
					    TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.MoveLeaderRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.MoveLeaderRequest'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.MoveLeaderResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.MoveLeaderResponse'(Bin,
					    TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AlarmRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.AlarmRequest'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AlarmMember', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.AlarmMember'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AlarmResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.AlarmResponse'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.StatusRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.StatusRequest'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.StatusResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.StatusResponse'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthEnableRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.AuthEnableRequest'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthDisableRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.AuthDisableRequest'(Bin,
					    TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthenticateRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.AuthenticateRequest'(Bin,
					     TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthUserAddRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.AuthUserAddRequest'(Bin,
					    TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthUserGetRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.AuthUserGetRequest'(Bin,
					    TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthUserDeleteRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.AuthUserDeleteRequest'(Bin,
					       TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthUserChangePasswordRequest',
		  Bin, TrUserData) ->
    id('decode_msg_Etcd.AuthUserChangePasswordRequest'(Bin,
						       TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthUserGrantRoleRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.AuthUserGrantRoleRequest'(Bin,
						  TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthUserRevokeRoleRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.AuthUserRevokeRoleRequest'(Bin,
						   TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthRoleAddRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.AuthRoleAddRequest'(Bin,
					    TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthRoleGetRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.AuthRoleGetRequest'(Bin,
					    TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthUserListRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.AuthUserListRequest'(Bin,
					     TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthRoleListRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.AuthRoleListRequest'(Bin,
					     TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthRoleDeleteRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.AuthRoleDeleteRequest'(Bin,
					       TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthRoleGrantPermissionRequest',
		  Bin, TrUserData) ->
    id('decode_msg_Etcd.AuthRoleGrantPermissionRequest'(Bin,
							TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthRoleRevokePermissionRequest',
		  Bin, TrUserData) ->
    id('decode_msg_Etcd.AuthRoleRevokePermissionRequest'(Bin,
							 TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthEnableResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.AuthEnableResponse'(Bin,
					    TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthDisableResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.AuthDisableResponse'(Bin,
					     TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthenticateResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.AuthenticateResponse'(Bin,
					      TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthUserAddResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.AuthUserAddResponse'(Bin,
					     TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthUserGetResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.AuthUserGetResponse'(Bin,
					     TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthUserDeleteResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.AuthUserDeleteResponse'(Bin,
						TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthUserChangePasswordResponse',
		  Bin, TrUserData) ->
    id('decode_msg_Etcd.AuthUserChangePasswordResponse'(Bin,
							TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthUserGrantRoleResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.AuthUserGrantRoleResponse'(Bin,
						   TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthUserRevokeRoleResponse',
		  Bin, TrUserData) ->
    id('decode_msg_Etcd.AuthUserRevokeRoleResponse'(Bin,
						    TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthRoleAddResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.AuthRoleAddResponse'(Bin,
					     TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthRoleGetResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.AuthRoleGetResponse'(Bin,
					     TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthRoleListResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.AuthRoleListResponse'(Bin,
					      TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthUserListResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.AuthUserListResponse'(Bin,
					      TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthRoleDeleteResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.AuthRoleDeleteResponse'(Bin,
						TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthRoleGrantPermissionResponse',
		  Bin, TrUserData) ->
    id('decode_msg_Etcd.AuthRoleGrantPermissionResponse'(Bin,
							 TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.AuthRoleRevokePermissionResponse',
		  Bin, TrUserData) ->
    id('decode_msg_Etcd.AuthRoleRevokePermissionResponse'(Bin,
							  TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.HealthCheckRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.HealthCheckRequest'(Bin,
					    TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.HealthCheckResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.HealthCheckResponse'(Bin,
					     TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.LockRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.LockRequest'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.LockResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.LockResponse'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.UnlockRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.UnlockRequest'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.UnlockResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.UnlockResponse'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.CampaignRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.CampaignRequest'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.CampaignResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.CampaignResponse'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.LeaderKey', Bin, TrUserData) ->
    id('decode_msg_Etcd.LeaderKey'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.LeaderRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.LeaderRequest'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.LeaderResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.LeaderResponse'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.ResignRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.ResignRequest'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.ResignResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.ResignResponse'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.ProclaimRequest', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.ProclaimRequest'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('Etcd.ProclaimResponse', Bin,
		  TrUserData) ->
    id('decode_msg_Etcd.ProclaimResponse'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.FileDescriptorSet',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.FileDescriptorSet'(Bin,
						      TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.FileDescriptorProto',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.FileDescriptorProto'(Bin,
							TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.DescriptorProto.ExtensionRange',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.DescriptorProto.ExtensionRange'(Bin,
								   TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.DescriptorProto.ReservedRange',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.DescriptorProto.ReservedRange'(Bin,
								  TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.DescriptorProto',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.DescriptorProto'(Bin,
						    TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.FieldDescriptorProto',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.FieldDescriptorProto'(Bin,
							 TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.OneofDescriptorProto',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.OneofDescriptorProto'(Bin,
							 TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.EnumDescriptorProto',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.EnumDescriptorProto'(Bin,
							TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.EnumValueDescriptorProto',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.EnumValueDescriptorProto'(Bin,
							     TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.ServiceDescriptorProto',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.ServiceDescriptorProto'(Bin,
							   TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.MethodDescriptorProto',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.MethodDescriptorProto'(Bin,
							  TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.FileOptions', Bin,
		  TrUserData) ->
    id('decode_msg_google.protobuf.FileOptions'(Bin,
						TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.MessageOptions', Bin,
		  TrUserData) ->
    id('decode_msg_google.protobuf.MessageOptions'(Bin,
						   TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.FieldOptions', Bin,
		  TrUserData) ->
    id('decode_msg_google.protobuf.FieldOptions'(Bin,
						 TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.EnumOptions', Bin,
		  TrUserData) ->
    id('decode_msg_google.protobuf.EnumOptions'(Bin,
						TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.EnumValueOptions',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.EnumValueOptions'(Bin,
						     TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.ServiceOptions', Bin,
		  TrUserData) ->
    id('decode_msg_google.protobuf.ServiceOptions'(Bin,
						   TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.MethodOptions', Bin,
		  TrUserData) ->
    id('decode_msg_google.protobuf.MethodOptions'(Bin,
						  TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.UninterpretedOption.NamePart',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.UninterpretedOption.NamePart'(Bin,
								 TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.UninterpretedOption',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.UninterpretedOption'(Bin,
							TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.SourceCodeInfo.Location',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.SourceCodeInfo.Location'(Bin,
							    TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.SourceCodeInfo', Bin,
		  TrUserData) ->
    id('decode_msg_google.protobuf.SourceCodeInfo'(Bin,
						   TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.GeneratedCodeInfo.Annotation',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.GeneratedCodeInfo.Annotation'(Bin,
								 TrUserData),
       TrUserData);
decode_msg_2_doit('google.protobuf.GeneratedCodeInfo',
		  Bin, TrUserData) ->
    id('decode_msg_google.protobuf.GeneratedCodeInfo'(Bin,
						      TrUserData),
       TrUserData);
decode_msg_2_doit('mvccpb.KeyValue', Bin, TrUserData) ->
    id('decode_msg_mvccpb.KeyValue'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('mvccpb.Event', Bin, TrUserData) ->
    id('decode_msg_mvccpb.Event'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('authpb.UserAddOptions', Bin,
		  TrUserData) ->
    id('decode_msg_authpb.UserAddOptions'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('authpb.User', Bin, TrUserData) ->
    id('decode_msg_authpb.User'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('authpb.Permission', Bin,
		  TrUserData) ->
    id('decode_msg_authpb.Permission'(Bin, TrUserData),
       TrUserData);
decode_msg_2_doit('authpb.Role', Bin, TrUserData) ->
    id('decode_msg_authpb.Role'(Bin, TrUserData),
       TrUserData).



'decode_msg_Etcd.ResponseHeader'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.ResponseHeader'(Bin, 0, 0,
					     id(0, TrUserData),
					     id(0, TrUserData),
					     id(0, TrUserData),
					     id(0, TrUserData), TrUserData).

'dfp_read_field_def_Etcd.ResponseHeader'(<<8,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					 TrUserData) ->
    'd_field_Etcd.ResponseHeader_cluster_id'(Rest, Z1, Z2,
					     F@_1, F@_2, F@_3, F@_4,
					     TrUserData);
'dfp_read_field_def_Etcd.ResponseHeader'(<<16,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					 TrUserData) ->
    'd_field_Etcd.ResponseHeader_member_id'(Rest, Z1, Z2,
					    F@_1, F@_2, F@_3, F@_4, TrUserData);
'dfp_read_field_def_Etcd.ResponseHeader'(<<24,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					 TrUserData) ->
    'd_field_Etcd.ResponseHeader_revision'(Rest, Z1, Z2,
					   F@_1, F@_2, F@_3, F@_4, TrUserData);
'dfp_read_field_def_Etcd.ResponseHeader'(<<32,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					 TrUserData) ->
    'd_field_Etcd.ResponseHeader_raft_term'(Rest, Z1, Z2,
					    F@_1, F@_2, F@_3, F@_4, TrUserData);
'dfp_read_field_def_Etcd.ResponseHeader'(<<>>, 0, 0,
					 F@_1, F@_2, F@_3, F@_4, _) ->
    #{cluster_id => F@_1, member_id => F@_2,
      revision => F@_3, raft_term => F@_4};
'dfp_read_field_def_Etcd.ResponseHeader'(Other, Z1, Z2,
					 F@_1, F@_2, F@_3, F@_4, TrUserData) ->
    'dg_read_field_def_Etcd.ResponseHeader'(Other, Z1, Z2,
					    F@_1, F@_2, F@_3, F@_4, TrUserData).

'dg_read_field_def_Etcd.ResponseHeader'(<<1:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, F@_2, F@_3, F@_4,
					TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.ResponseHeader'(Rest, N + 7,
					    X bsl N + Acc, F@_1, F@_2, F@_3,
					    F@_4, TrUserData);
'dg_read_field_def_Etcd.ResponseHeader'(<<0:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, F@_2, F@_3, F@_4,
					TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_Etcd.ResponseHeader_cluster_id'(Rest, 0, 0,
						   F@_1, F@_2, F@_3, F@_4,
						   TrUserData);
      16 ->
	  'd_field_Etcd.ResponseHeader_member_id'(Rest, 0, 0,
						  F@_1, F@_2, F@_3, F@_4,
						  TrUserData);
      24 ->
	  'd_field_Etcd.ResponseHeader_revision'(Rest, 0, 0, F@_1,
						 F@_2, F@_3, F@_4, TrUserData);
      32 ->
	  'd_field_Etcd.ResponseHeader_raft_term'(Rest, 0, 0,
						  F@_1, F@_2, F@_3, F@_4,
						  TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.ResponseHeader'(Rest, 0, 0, F@_1,
						  F@_2, F@_3, F@_4, TrUserData);
	    1 ->
		'skip_64_Etcd.ResponseHeader'(Rest, 0, 0, F@_1, F@_2,
					      F@_3, F@_4, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.ResponseHeader'(Rest, 0, 0,
							    F@_1, F@_2, F@_3,
							    F@_4, TrUserData);
	    3 ->
		'skip_group_Etcd.ResponseHeader'(Rest, Key bsr 3, 0,
						 F@_1, F@_2, F@_3, F@_4,
						 TrUserData);
	    5 ->
		'skip_32_Etcd.ResponseHeader'(Rest, 0, 0, F@_1, F@_2,
					      F@_3, F@_4, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.ResponseHeader'(<<>>, 0, 0,
					F@_1, F@_2, F@_3, F@_4, _) ->
    #{cluster_id => F@_1, member_id => F@_2,
      revision => F@_3, raft_term => F@_4}.

'd_field_Etcd.ResponseHeader_cluster_id'(<<1:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, F@_2, F@_3, F@_4,
					 TrUserData)
    when N < 57 ->
    'd_field_Etcd.ResponseHeader_cluster_id'(Rest, N + 7,
					     X bsl N + Acc, F@_1, F@_2, F@_3,
					     F@_4, TrUserData);
'd_field_Etcd.ResponseHeader_cluster_id'(<<0:1, X:7,
					   Rest/binary>>,
					 N, Acc, _, F@_2, F@_3, F@_4,
					 TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc, TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.ResponseHeader'(RestF, 0, 0,
					     NewFValue, F@_2, F@_3, F@_4,
					     TrUserData).

'd_field_Etcd.ResponseHeader_member_id'(<<1:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, F@_2, F@_3, F@_4,
					TrUserData)
    when N < 57 ->
    'd_field_Etcd.ResponseHeader_member_id'(Rest, N + 7,
					    X bsl N + Acc, F@_1, F@_2, F@_3,
					    F@_4, TrUserData);
'd_field_Etcd.ResponseHeader_member_id'(<<0:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, _, F@_3, F@_4,
					TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc, TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.ResponseHeader'(RestF, 0, 0,
					     F@_1, NewFValue, F@_3, F@_4,
					     TrUserData).

'd_field_Etcd.ResponseHeader_revision'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, F@_2, F@_3, F@_4,
				       TrUserData)
    when N < 57 ->
    'd_field_Etcd.ResponseHeader_revision'(Rest, N + 7,
					   X bsl N + Acc, F@_1, F@_2, F@_3,
					   F@_4, TrUserData);
'd_field_Etcd.ResponseHeader_revision'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, F@_2, _, F@_4,
				       TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.ResponseHeader'(RestF, 0, 0,
					     F@_1, F@_2, NewFValue, F@_4,
					     TrUserData).

'd_field_Etcd.ResponseHeader_raft_term'(<<1:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, F@_2, F@_3, F@_4,
					TrUserData)
    when N < 57 ->
    'd_field_Etcd.ResponseHeader_raft_term'(Rest, N + 7,
					    X bsl N + Acc, F@_1, F@_2, F@_3,
					    F@_4, TrUserData);
'd_field_Etcd.ResponseHeader_raft_term'(<<0:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, F@_2, F@_3, _,
					TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc, TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.ResponseHeader'(RestF, 0, 0,
					     F@_1, F@_2, F@_3, NewFValue,
					     TrUserData).

'skip_varint_Etcd.ResponseHeader'(<<1:1, _:7,
				    Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, F@_3, F@_4, TrUserData) ->
    'skip_varint_Etcd.ResponseHeader'(Rest, Z1, Z2, F@_1,
				      F@_2, F@_3, F@_4, TrUserData);
'skip_varint_Etcd.ResponseHeader'(<<0:1, _:7,
				    Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, F@_3, F@_4, TrUserData) ->
    'dfp_read_field_def_Etcd.ResponseHeader'(Rest, Z1, Z2,
					     F@_1, F@_2, F@_3, F@_4,
					     TrUserData).

'skip_length_delimited_Etcd.ResponseHeader'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, F@_3, F@_4,
					    TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.ResponseHeader'(Rest, N + 7,
						X bsl N + Acc, F@_1, F@_2, F@_3,
						F@_4, TrUserData);
'skip_length_delimited_Etcd.ResponseHeader'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, F@_3, F@_4,
					    TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.ResponseHeader'(Rest2, 0, 0,
					     F@_1, F@_2, F@_3, F@_4,
					     TrUserData).

'skip_group_Etcd.ResponseHeader'(Bin, FNum, Z2, F@_1,
				 F@_2, F@_3, F@_4, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.ResponseHeader'(Rest, 0, Z2,
					     F@_1, F@_2, F@_3, F@_4,
					     TrUserData).

'skip_32_Etcd.ResponseHeader'(<<_:32, Rest/binary>>, Z1,
			      Z2, F@_1, F@_2, F@_3, F@_4, TrUserData) ->
    'dfp_read_field_def_Etcd.ResponseHeader'(Rest, Z1, Z2,
					     F@_1, F@_2, F@_3, F@_4,
					     TrUserData).

'skip_64_Etcd.ResponseHeader'(<<_:64, Rest/binary>>, Z1,
			      Z2, F@_1, F@_2, F@_3, F@_4, TrUserData) ->
    'dfp_read_field_def_Etcd.ResponseHeader'(Rest, Z1, Z2,
					     F@_1, F@_2, F@_3, F@_4,
					     TrUserData).

'decode_msg_Etcd.RangeRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.RangeRequest'(Bin, 0, 0,
					   id(<<>>, TrUserData),
					   id(<<>>, TrUserData),
					   id(0, TrUserData), id(0, TrUserData),
					   id('NONE', TrUserData),
					   id('KEY', TrUserData),
					   id(false, TrUserData),
					   id(false, TrUserData),
					   id(false, TrUserData),
					   id(0, TrUserData), id(0, TrUserData),
					   id(0, TrUserData), id(0, TrUserData),
					   TrUserData).

'dfp_read_field_def_Etcd.RangeRequest'(<<10,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				       F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
				       F@_12, F@_13, TrUserData) ->
    'd_field_Etcd.RangeRequest_key'(Rest, Z1, Z2, F@_1,
				    F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8,
				    F@_9, F@_10, F@_11, F@_12, F@_13,
				    TrUserData);
'dfp_read_field_def_Etcd.RangeRequest'(<<18,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				       F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
				       F@_12, F@_13, TrUserData) ->
    'd_field_Etcd.RangeRequest_range_end'(Rest, Z1, Z2,
					  F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					  F@_7, F@_8, F@_9, F@_10, F@_11, F@_12,
					  F@_13, TrUserData);
'dfp_read_field_def_Etcd.RangeRequest'(<<24,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				       F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
				       F@_12, F@_13, TrUserData) ->
    'd_field_Etcd.RangeRequest_limit'(Rest, Z1, Z2, F@_1,
				      F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8,
				      F@_9, F@_10, F@_11, F@_12, F@_13,
				      TrUserData);
'dfp_read_field_def_Etcd.RangeRequest'(<<32,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				       F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
				       F@_12, F@_13, TrUserData) ->
    'd_field_Etcd.RangeRequest_revision'(Rest, Z1, Z2, F@_1,
					 F@_2, F@_3, F@_4, F@_5, F@_6, F@_7,
					 F@_8, F@_9, F@_10, F@_11, F@_12, F@_13,
					 TrUserData);
'dfp_read_field_def_Etcd.RangeRequest'(<<40,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				       F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
				       F@_12, F@_13, TrUserData) ->
    'd_field_Etcd.RangeRequest_sort_order'(Rest, Z1, Z2,
					   F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					   F@_7, F@_8, F@_9, F@_10, F@_11,
					   F@_12, F@_13, TrUserData);
'dfp_read_field_def_Etcd.RangeRequest'(<<48,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				       F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
				       F@_12, F@_13, TrUserData) ->
    'd_field_Etcd.RangeRequest_sort_target'(Rest, Z1, Z2,
					    F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					    F@_7, F@_8, F@_9, F@_10, F@_11,
					    F@_12, F@_13, TrUserData);
'dfp_read_field_def_Etcd.RangeRequest'(<<56,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				       F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
				       F@_12, F@_13, TrUserData) ->
    'd_field_Etcd.RangeRequest_serializable'(Rest, Z1, Z2,
					     F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					     F@_7, F@_8, F@_9, F@_10, F@_11,
					     F@_12, F@_13, TrUserData);
'dfp_read_field_def_Etcd.RangeRequest'(<<64,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				       F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
				       F@_12, F@_13, TrUserData) ->
    'd_field_Etcd.RangeRequest_keys_only'(Rest, Z1, Z2,
					  F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					  F@_7, F@_8, F@_9, F@_10, F@_11, F@_12,
					  F@_13, TrUserData);
'dfp_read_field_def_Etcd.RangeRequest'(<<72,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				       F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
				       F@_12, F@_13, TrUserData) ->
    'd_field_Etcd.RangeRequest_count_only'(Rest, Z1, Z2,
					   F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					   F@_7, F@_8, F@_9, F@_10, F@_11,
					   F@_12, F@_13, TrUserData);
'dfp_read_field_def_Etcd.RangeRequest'(<<80,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				       F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
				       F@_12, F@_13, TrUserData) ->
    'd_field_Etcd.RangeRequest_min_mod_revision'(Rest, Z1,
						 Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 TrUserData);
'dfp_read_field_def_Etcd.RangeRequest'(<<88,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				       F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
				       F@_12, F@_13, TrUserData) ->
    'd_field_Etcd.RangeRequest_max_mod_revision'(Rest, Z1,
						 Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 TrUserData);
'dfp_read_field_def_Etcd.RangeRequest'(<<96,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				       F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
				       F@_12, F@_13, TrUserData) ->
    'd_field_Etcd.RangeRequest_min_create_revision'(Rest,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, TrUserData);
'dfp_read_field_def_Etcd.RangeRequest'(<<104,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				       F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
				       F@_12, F@_13, TrUserData) ->
    'd_field_Etcd.RangeRequest_max_create_revision'(Rest,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, TrUserData);
'dfp_read_field_def_Etcd.RangeRequest'(<<>>, 0, 0, F@_1,
				       F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8,
				       F@_9, F@_10, F@_11, F@_12, F@_13, _) ->
    #{key => F@_1, range_end => F@_2, limit => F@_3,
      revision => F@_4, sort_order => F@_5,
      sort_target => F@_6, serializable => F@_7,
      keys_only => F@_8, count_only => F@_9,
      min_mod_revision => F@_10, max_mod_revision => F@_11,
      min_create_revision => F@_12,
      max_create_revision => F@_13};
'dfp_read_field_def_Etcd.RangeRequest'(Other, Z1, Z2,
				       F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7,
				       F@_8, F@_9, F@_10, F@_11, F@_12, F@_13,
				       TrUserData) ->
    'dg_read_field_def_Etcd.RangeRequest'(Other, Z1, Z2,
					  F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					  F@_7, F@_8, F@_9, F@_10, F@_11, F@_12,
					  F@_13, TrUserData).

'dg_read_field_def_Etcd.RangeRequest'(<<1:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				      F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
				      F@_12, F@_13, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.RangeRequest'(Rest, N + 7,
					  X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
					  F@_5, F@_6, F@_7, F@_8, F@_9, F@_10,
					  F@_11, F@_12, F@_13, TrUserData);
'dg_read_field_def_Etcd.RangeRequest'(<<0:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				      F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
				      F@_12, F@_13, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.RangeRequest_key'(Rest, 0, 0, F@_1, F@_2,
					  F@_3, F@_4, F@_5, F@_6, F@_7, F@_8,
					  F@_9, F@_10, F@_11, F@_12, F@_13,
					  TrUserData);
      18 ->
	  'd_field_Etcd.RangeRequest_range_end'(Rest, 0, 0, F@_1,
						F@_2, F@_3, F@_4, F@_5, F@_6,
						F@_7, F@_8, F@_9, F@_10, F@_11,
						F@_12, F@_13, TrUserData);
      24 ->
	  'd_field_Etcd.RangeRequest_limit'(Rest, 0, 0, F@_1,
					    F@_2, F@_3, F@_4, F@_5, F@_6, F@_7,
					    F@_8, F@_9, F@_10, F@_11, F@_12,
					    F@_13, TrUserData);
      32 ->
	  'd_field_Etcd.RangeRequest_revision'(Rest, 0, 0, F@_1,
					       F@_2, F@_3, F@_4, F@_5, F@_6,
					       F@_7, F@_8, F@_9, F@_10, F@_11,
					       F@_12, F@_13, TrUserData);
      40 ->
	  'd_field_Etcd.RangeRequest_sort_order'(Rest, 0, 0, F@_1,
						 F@_2, F@_3, F@_4, F@_5, F@_6,
						 F@_7, F@_8, F@_9, F@_10, F@_11,
						 F@_12, F@_13, TrUserData);
      48 ->
	  'd_field_Etcd.RangeRequest_sort_target'(Rest, 0, 0,
						  F@_1, F@_2, F@_3, F@_4, F@_5,
						  F@_6, F@_7, F@_8, F@_9, F@_10,
						  F@_11, F@_12, F@_13,
						  TrUserData);
      56 ->
	  'd_field_Etcd.RangeRequest_serializable'(Rest, 0, 0,
						   F@_1, F@_2, F@_3, F@_4, F@_5,
						   F@_6, F@_7, F@_8, F@_9,
						   F@_10, F@_11, F@_12, F@_13,
						   TrUserData);
      64 ->
	  'd_field_Etcd.RangeRequest_keys_only'(Rest, 0, 0, F@_1,
						F@_2, F@_3, F@_4, F@_5, F@_6,
						F@_7, F@_8, F@_9, F@_10, F@_11,
						F@_12, F@_13, TrUserData);
      72 ->
	  'd_field_Etcd.RangeRequest_count_only'(Rest, 0, 0, F@_1,
						 F@_2, F@_3, F@_4, F@_5, F@_6,
						 F@_7, F@_8, F@_9, F@_10, F@_11,
						 F@_12, F@_13, TrUserData);
      80 ->
	  'd_field_Etcd.RangeRequest_min_mod_revision'(Rest, 0, 0,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7, F@_8,
						       F@_9, F@_10, F@_11,
						       F@_12, F@_13,
						       TrUserData);
      88 ->
	  'd_field_Etcd.RangeRequest_max_mod_revision'(Rest, 0, 0,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7, F@_8,
						       F@_9, F@_10, F@_11,
						       F@_12, F@_13,
						       TrUserData);
      96 ->
	  'd_field_Etcd.RangeRequest_min_create_revision'(Rest, 0,
							  0, F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, F@_11, F@_12,
							  F@_13, TrUserData);
      104 ->
	  'd_field_Etcd.RangeRequest_max_create_revision'(Rest, 0,
							  0, F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, F@_11, F@_12,
							  F@_13, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.RangeRequest'(Rest, 0, 0, F@_1, F@_2,
						F@_3, F@_4, F@_5, F@_6, F@_7,
						F@_8, F@_9, F@_10, F@_11, F@_12,
						F@_13, TrUserData);
	    1 ->
		'skip_64_Etcd.RangeRequest'(Rest, 0, 0, F@_1, F@_2,
					    F@_3, F@_4, F@_5, F@_6, F@_7, F@_8,
					    F@_9, F@_10, F@_11, F@_12, F@_13,
					    TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.RangeRequest'(Rest, 0, 0,
							  F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, F@_11, F@_12,
							  F@_13, TrUserData);
	    3 ->
		'skip_group_Etcd.RangeRequest'(Rest, Key bsr 3, 0, F@_1,
					       F@_2, F@_3, F@_4, F@_5, F@_6,
					       F@_7, F@_8, F@_9, F@_10, F@_11,
					       F@_12, F@_13, TrUserData);
	    5 ->
		'skip_32_Etcd.RangeRequest'(Rest, 0, 0, F@_1, F@_2,
					    F@_3, F@_4, F@_5, F@_6, F@_7, F@_8,
					    F@_9, F@_10, F@_11, F@_12, F@_13,
					    TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.RangeRequest'(<<>>, 0, 0, F@_1,
				      F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8,
				      F@_9, F@_10, F@_11, F@_12, F@_13, _) ->
    #{key => F@_1, range_end => F@_2, limit => F@_3,
      revision => F@_4, sort_order => F@_5,
      sort_target => F@_6, serializable => F@_7,
      keys_only => F@_8, count_only => F@_9,
      min_mod_revision => F@_10, max_mod_revision => F@_11,
      min_create_revision => F@_12,
      max_create_revision => F@_13}.

'd_field_Etcd.RangeRequest_key'(<<1:1, X:7,
				  Rest/binary>>,
				N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13,
				TrUserData)
    when N < 57 ->
    'd_field_Etcd.RangeRequest_key'(Rest, N + 7,
				    X bsl N + Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				    F@_6, F@_7, F@_8, F@_9, F@_10, F@_11, F@_12,
				    F@_13, TrUserData);
'd_field_Etcd.RangeRequest_key'(<<0:1, X:7,
				  Rest/binary>>,
				N, Acc, _, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7,
				F@_8, F@_9, F@_10, F@_11, F@_12, F@_13,
				TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.RangeRequest'(RestF, 0, 0,
					   NewFValue, F@_2, F@_3, F@_4, F@_5,
					   F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
					   F@_12, F@_13, TrUserData).

'd_field_Etcd.RangeRequest_range_end'(<<1:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				      F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
				      F@_12, F@_13, TrUserData)
    when N < 57 ->
    'd_field_Etcd.RangeRequest_range_end'(Rest, N + 7,
					  X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
					  F@_5, F@_6, F@_7, F@_8, F@_9, F@_10,
					  F@_11, F@_12, F@_13, TrUserData);
'd_field_Etcd.RangeRequest_range_end'(<<0:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, _, F@_3, F@_4, F@_5, F@_6,
				      F@_7, F@_8, F@_9, F@_10, F@_11, F@_12,
				      F@_13, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.RangeRequest'(RestF, 0, 0,
					   F@_1, NewFValue, F@_3, F@_4, F@_5,
					   F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
					   F@_12, F@_13, TrUserData).

'd_field_Etcd.RangeRequest_limit'(<<1:1, X:7,
				    Rest/binary>>,
				  N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				  F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13,
				  TrUserData)
    when N < 57 ->
    'd_field_Etcd.RangeRequest_limit'(Rest, N + 7,
				      X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
				      F@_5, F@_6, F@_7, F@_8, F@_9, F@_10,
				      F@_11, F@_12, F@_13, TrUserData);
'd_field_Etcd.RangeRequest_limit'(<<0:1, X:7,
				    Rest/binary>>,
				  N, Acc, F@_1, F@_2, _, F@_4, F@_5, F@_6, F@_7,
				  F@_8, F@_9, F@_10, F@_11, F@_12, F@_13,
				  TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.RangeRequest'(RestF, 0, 0,
					   F@_1, F@_2, NewFValue, F@_4, F@_5,
					   F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
					   F@_12, F@_13, TrUserData).

'd_field_Etcd.RangeRequest_revision'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				     F@_7, F@_8, F@_9, F@_10, F@_11, F@_12,
				     F@_13, TrUserData)
    when N < 57 ->
    'd_field_Etcd.RangeRequest_revision'(Rest, N + 7,
					 X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
					 F@_5, F@_6, F@_7, F@_8, F@_9, F@_10,
					 F@_11, F@_12, F@_13, TrUserData);
'd_field_Etcd.RangeRequest_revision'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, F@_3, _, F@_5, F@_6,
				     F@_7, F@_8, F@_9, F@_10, F@_11, F@_12,
				     F@_13, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.RangeRequest'(RestF, 0, 0,
					   F@_1, F@_2, F@_3, NewFValue, F@_5,
					   F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
					   F@_12, F@_13, TrUserData).

'd_field_Etcd.RangeRequest_sort_order'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				       F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
				       F@_12, F@_13, TrUserData)
    when N < 57 ->
    'd_field_Etcd.RangeRequest_sort_order'(Rest, N + 7,
					   X bsl N + Acc, F@_1, F@_2, F@_3,
					   F@_4, F@_5, F@_6, F@_7, F@_8, F@_9,
					   F@_10, F@_11, F@_12, F@_13,
					   TrUserData);
'd_field_Etcd.RangeRequest_sort_order'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, F@_2, F@_3, F@_4, _, F@_6,
				       F@_7, F@_8, F@_9, F@_10, F@_11, F@_12,
				       F@_13, TrUserData) ->
    {NewFValue, RestF} =
	{id('d_enum_Etcd.RangeRequest.SortOrder'(begin
						   <<Res:32/signed-native>> =
						       <<(X bsl N +
							    Acc):32/unsigned-native>>,
						   id(Res, TrUserData)
						 end),
	    TrUserData),
	 Rest},
    'dfp_read_field_def_Etcd.RangeRequest'(RestF, 0, 0,
					   F@_1, F@_2, F@_3, F@_4, NewFValue,
					   F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
					   F@_12, F@_13, TrUserData).

'd_field_Etcd.RangeRequest_sort_target'(<<1:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
					F@_12, F@_13, TrUserData)
    when N < 57 ->
    'd_field_Etcd.RangeRequest_sort_target'(Rest, N + 7,
					    X bsl N + Acc, F@_1, F@_2, F@_3,
					    F@_4, F@_5, F@_6, F@_7, F@_8, F@_9,
					    F@_10, F@_11, F@_12, F@_13,
					    TrUserData);
'd_field_Etcd.RangeRequest_sort_target'(<<0:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, _,
					F@_7, F@_8, F@_9, F@_10, F@_11, F@_12,
					F@_13, TrUserData) ->
    {NewFValue, RestF} =
	{id('d_enum_Etcd.RangeRequest.SortTarget'(begin
						    <<Res:32/signed-native>> =
							<<(X bsl N +
							     Acc):32/unsigned-native>>,
						    id(Res, TrUserData)
						  end),
	    TrUserData),
	 Rest},
    'dfp_read_field_def_Etcd.RangeRequest'(RestF, 0, 0,
					   F@_1, F@_2, F@_3, F@_4, F@_5,
					   NewFValue, F@_7, F@_8, F@_9, F@_10,
					   F@_11, F@_12, F@_13, TrUserData).

'd_field_Etcd.RangeRequest_serializable'(<<1:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					 F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
					 F@_12, F@_13, TrUserData)
    when N < 57 ->
    'd_field_Etcd.RangeRequest_serializable'(Rest, N + 7,
					     X bsl N + Acc, F@_1, F@_2, F@_3,
					     F@_4, F@_5, F@_6, F@_7, F@_8, F@_9,
					     F@_10, F@_11, F@_12, F@_13,
					     TrUserData);
'd_field_Etcd.RangeRequest_serializable'(<<0:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					 F@_6, _, F@_8, F@_9, F@_10, F@_11,
					 F@_12, F@_13, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.RangeRequest'(RestF, 0, 0,
					   F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					   NewFValue, F@_8, F@_9, F@_10, F@_11,
					   F@_12, F@_13, TrUserData).

'd_field_Etcd.RangeRequest_keys_only'(<<1:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				      F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
				      F@_12, F@_13, TrUserData)
    when N < 57 ->
    'd_field_Etcd.RangeRequest_keys_only'(Rest, N + 7,
					  X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
					  F@_5, F@_6, F@_7, F@_8, F@_9, F@_10,
					  F@_11, F@_12, F@_13, TrUserData);
'd_field_Etcd.RangeRequest_keys_only'(<<0:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				      F@_6, F@_7, _, F@_9, F@_10, F@_11, F@_12,
				      F@_13, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.RangeRequest'(RestF, 0, 0,
					   F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					   F@_7, NewFValue, F@_9, F@_10, F@_11,
					   F@_12, F@_13, TrUserData).

'd_field_Etcd.RangeRequest_count_only'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				       F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
				       F@_12, F@_13, TrUserData)
    when N < 57 ->
    'd_field_Etcd.RangeRequest_count_only'(Rest, N + 7,
					   X bsl N + Acc, F@_1, F@_2, F@_3,
					   F@_4, F@_5, F@_6, F@_7, F@_8, F@_9,
					   F@_10, F@_11, F@_12, F@_13,
					   TrUserData);
'd_field_Etcd.RangeRequest_count_only'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				       F@_6, F@_7, F@_8, _, F@_10, F@_11, F@_12,
				       F@_13, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.RangeRequest'(RestF, 0, 0,
					   F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					   F@_7, F@_8, NewFValue, F@_10, F@_11,
					   F@_12, F@_13, TrUserData).

'd_field_Etcd.RangeRequest_min_mod_revision'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, F@_3, F@_4,
					     F@_5, F@_6, F@_7, F@_8, F@_9,
					     F@_10, F@_11, F@_12, F@_13,
					     TrUserData)
    when N < 57 ->
    'd_field_Etcd.RangeRequest_min_mod_revision'(Rest,
						 N + 7, X bsl N + Acc, F@_1,
						 F@_2, F@_3, F@_4, F@_5, F@_6,
						 F@_7, F@_8, F@_9, F@_10, F@_11,
						 F@_12, F@_13, TrUserData);
'd_field_Etcd.RangeRequest_min_mod_revision'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, F@_3, F@_4,
					     F@_5, F@_6, F@_7, F@_8, F@_9, _,
					     F@_11, F@_12, F@_13, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.RangeRequest'(RestF, 0, 0,
					   F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					   F@_7, F@_8, F@_9, NewFValue, F@_11,
					   F@_12, F@_13, TrUserData).

'd_field_Etcd.RangeRequest_max_mod_revision'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, F@_3, F@_4,
					     F@_5, F@_6, F@_7, F@_8, F@_9,
					     F@_10, F@_11, F@_12, F@_13,
					     TrUserData)
    when N < 57 ->
    'd_field_Etcd.RangeRequest_max_mod_revision'(Rest,
						 N + 7, X bsl N + Acc, F@_1,
						 F@_2, F@_3, F@_4, F@_5, F@_6,
						 F@_7, F@_8, F@_9, F@_10, F@_11,
						 F@_12, F@_13, TrUserData);
'd_field_Etcd.RangeRequest_max_mod_revision'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, F@_3, F@_4,
					     F@_5, F@_6, F@_7, F@_8, F@_9,
					     F@_10, _, F@_12, F@_13,
					     TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.RangeRequest'(RestF, 0, 0,
					   F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					   F@_7, F@_8, F@_9, F@_10, NewFValue,
					   F@_12, F@_13, TrUserData).

'd_field_Etcd.RangeRequest_min_create_revision'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, F@_12, F@_13,
						TrUserData)
    when N < 57 ->
    'd_field_Etcd.RangeRequest_min_create_revision'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    F@_2, F@_3, F@_4, F@_5,
						    F@_6, F@_7, F@_8, F@_9,
						    F@_10, F@_11, F@_12, F@_13,
						    TrUserData);
'd_field_Etcd.RangeRequest_min_create_revision'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, _, F@_13,
						TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.RangeRequest'(RestF, 0, 0,
					   F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					   F@_7, F@_8, F@_9, F@_10, F@_11,
					   NewFValue, F@_13, TrUserData).

'd_field_Etcd.RangeRequest_max_create_revision'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, F@_12, F@_13,
						TrUserData)
    when N < 57 ->
    'd_field_Etcd.RangeRequest_max_create_revision'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    F@_2, F@_3, F@_4, F@_5,
						    F@_6, F@_7, F@_8, F@_9,
						    F@_10, F@_11, F@_12, F@_13,
						    TrUserData);
'd_field_Etcd.RangeRequest_max_create_revision'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, F@_12, _,
						TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.RangeRequest'(RestF, 0, 0,
					   F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					   F@_7, F@_8, F@_9, F@_10, F@_11,
					   F@_12, NewFValue, TrUserData).

'skip_varint_Etcd.RangeRequest'(<<1:1, _:7,
				  Rest/binary>>,
				Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13,
				TrUserData) ->
    'skip_varint_Etcd.RangeRequest'(Rest, Z1, Z2, F@_1,
				    F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8,
				    F@_9, F@_10, F@_11, F@_12, F@_13,
				    TrUserData);
'skip_varint_Etcd.RangeRequest'(<<0:1, _:7,
				  Rest/binary>>,
				Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				F@_7, F@_8, F@_9, F@_10, F@_11, F@_12, F@_13,
				TrUserData) ->
    'dfp_read_field_def_Etcd.RangeRequest'(Rest, Z1, Z2,
					   F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					   F@_7, F@_8, F@_9, F@_10, F@_11,
					   F@_12, F@_13, TrUserData).

'skip_length_delimited_Etcd.RangeRequest'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					  F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
					  F@_12, F@_13, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.RangeRequest'(Rest, N + 7,
					      X bsl N + Acc, F@_1, F@_2, F@_3,
					      F@_4, F@_5, F@_6, F@_7, F@_8,
					      F@_9, F@_10, F@_11, F@_12, F@_13,
					      TrUserData);
'skip_length_delimited_Etcd.RangeRequest'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					  F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
					  F@_12, F@_13, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.RangeRequest'(Rest2, 0, 0,
					   F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					   F@_7, F@_8, F@_9, F@_10, F@_11,
					   F@_12, F@_13, TrUserData).

'skip_group_Etcd.RangeRequest'(Bin, FNum, Z2, F@_1,
			       F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9,
			       F@_10, F@_11, F@_12, F@_13, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.RangeRequest'(Rest, 0, Z2,
					   F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					   F@_7, F@_8, F@_9, F@_10, F@_11,
					   F@_12, F@_13, TrUserData).

'skip_32_Etcd.RangeRequest'(<<_:32, Rest/binary>>, Z1,
			    Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8,
			    F@_9, F@_10, F@_11, F@_12, F@_13, TrUserData) ->
    'dfp_read_field_def_Etcd.RangeRequest'(Rest, Z1, Z2,
					   F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					   F@_7, F@_8, F@_9, F@_10, F@_11,
					   F@_12, F@_13, TrUserData).

'skip_64_Etcd.RangeRequest'(<<_:64, Rest/binary>>, Z1,
			    Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8,
			    F@_9, F@_10, F@_11, F@_12, F@_13, TrUserData) ->
    'dfp_read_field_def_Etcd.RangeRequest'(Rest, Z1, Z2,
					   F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					   F@_7, F@_8, F@_9, F@_10, F@_11,
					   F@_12, F@_13, TrUserData).

'decode_msg_Etcd.RangeResponse'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.RangeResponse'(Bin, 0, 0,
					    id('$undef', TrUserData),
					    id([], TrUserData),
					    id(false, TrUserData),
					    id(0, TrUserData), TrUserData).

'dfp_read_field_def_Etcd.RangeResponse'(<<10,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					TrUserData) ->
    'd_field_Etcd.RangeResponse_header'(Rest, Z1, Z2, F@_1,
					F@_2, F@_3, F@_4, TrUserData);
'dfp_read_field_def_Etcd.RangeResponse'(<<18,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					TrUserData) ->
    'd_field_Etcd.RangeResponse_kvs'(Rest, Z1, Z2, F@_1,
				     F@_2, F@_3, F@_4, TrUserData);
'dfp_read_field_def_Etcd.RangeResponse'(<<24,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					TrUserData) ->
    'd_field_Etcd.RangeResponse_more'(Rest, Z1, Z2, F@_1,
				      F@_2, F@_3, F@_4, TrUserData);
'dfp_read_field_def_Etcd.RangeResponse'(<<32,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					TrUserData) ->
    'd_field_Etcd.RangeResponse_count'(Rest, Z1, Z2, F@_1,
				       F@_2, F@_3, F@_4, TrUserData);
'dfp_read_field_def_Etcd.RangeResponse'(<<>>, 0, 0,
					F@_1, R1, F@_3, F@_4, TrUserData) ->
    S1 = #{more => F@_3, count => F@_4},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true -> S2#{kvs => lists_reverse(R1, TrUserData)}
    end;
'dfp_read_field_def_Etcd.RangeResponse'(Other, Z1, Z2,
					F@_1, F@_2, F@_3, F@_4, TrUserData) ->
    'dg_read_field_def_Etcd.RangeResponse'(Other, Z1, Z2,
					   F@_1, F@_2, F@_3, F@_4, TrUserData).

'dg_read_field_def_Etcd.RangeResponse'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, F@_2, F@_3, F@_4,
				       TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.RangeResponse'(Rest, N + 7,
					   X bsl N + Acc, F@_1, F@_2, F@_3,
					   F@_4, TrUserData);
'dg_read_field_def_Etcd.RangeResponse'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, F@_2, F@_3, F@_4,
				       TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.RangeResponse_header'(Rest, 0, 0, F@_1,
					      F@_2, F@_3, F@_4, TrUserData);
      18 ->
	  'd_field_Etcd.RangeResponse_kvs'(Rest, 0, 0, F@_1, F@_2,
					   F@_3, F@_4, TrUserData);
      24 ->
	  'd_field_Etcd.RangeResponse_more'(Rest, 0, 0, F@_1,
					    F@_2, F@_3, F@_4, TrUserData);
      32 ->
	  'd_field_Etcd.RangeResponse_count'(Rest, 0, 0, F@_1,
					     F@_2, F@_3, F@_4, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.RangeResponse'(Rest, 0, 0, F@_1, F@_2,
						 F@_3, F@_4, TrUserData);
	    1 ->
		'skip_64_Etcd.RangeResponse'(Rest, 0, 0, F@_1, F@_2,
					     F@_3, F@_4, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.RangeResponse'(Rest, 0, 0,
							   F@_1, F@_2, F@_3,
							   F@_4, TrUserData);
	    3 ->
		'skip_group_Etcd.RangeResponse'(Rest, Key bsr 3, 0,
						F@_1, F@_2, F@_3, F@_4,
						TrUserData);
	    5 ->
		'skip_32_Etcd.RangeResponse'(Rest, 0, 0, F@_1, F@_2,
					     F@_3, F@_4, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.RangeResponse'(<<>>, 0, 0, F@_1,
				       R1, F@_3, F@_4, TrUserData) ->
    S1 = #{more => F@_3, count => F@_4},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true -> S2#{kvs => lists_reverse(R1, TrUserData)}
    end.

'd_field_Etcd.RangeResponse_header'(<<1:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, F@_2, F@_3, F@_4, TrUserData)
    when N < 57 ->
    'd_field_Etcd.RangeResponse_header'(Rest, N + 7,
					X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
					TrUserData);
'd_field_Etcd.RangeResponse_header'(<<0:1, X:7,
				      Rest/binary>>,
				    N, Acc, Prev, F@_2, F@_3, F@_4,
				    TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.RangeResponse'(RestF, 0, 0,
					    if Prev == '$undef' -> NewFValue;
					       true ->
						   'merge_msg_Etcd.ResponseHeader'(Prev,
										   NewFValue,
										   TrUserData)
					    end,
					    F@_2, F@_3, F@_4, TrUserData).

'd_field_Etcd.RangeResponse_kvs'(<<1:1, X:7,
				   Rest/binary>>,
				 N, Acc, F@_1, F@_2, F@_3, F@_4, TrUserData)
    when N < 57 ->
    'd_field_Etcd.RangeResponse_kvs'(Rest, N + 7,
				     X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
				     TrUserData);
'd_field_Etcd.RangeResponse_kvs'(<<0:1, X:7,
				   Rest/binary>>,
				 N, Acc, F@_1, Prev, F@_3, F@_4, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_mvccpb.KeyValue'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.RangeResponse'(RestF, 0, 0,
					    F@_1,
					    cons(NewFValue, Prev, TrUserData),
					    F@_3, F@_4, TrUserData).

'd_field_Etcd.RangeResponse_more'(<<1:1, X:7,
				    Rest/binary>>,
				  N, Acc, F@_1, F@_2, F@_3, F@_4, TrUserData)
    when N < 57 ->
    'd_field_Etcd.RangeResponse_more'(Rest, N + 7,
				      X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
				      TrUserData);
'd_field_Etcd.RangeResponse_more'(<<0:1, X:7,
				    Rest/binary>>,
				  N, Acc, F@_1, F@_2, _, F@_4, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.RangeResponse'(RestF, 0, 0,
					    F@_1, F@_2, NewFValue, F@_4,
					    TrUserData).

'd_field_Etcd.RangeResponse_count'(<<1:1, X:7,
				     Rest/binary>>,
				   N, Acc, F@_1, F@_2, F@_3, F@_4, TrUserData)
    when N < 57 ->
    'd_field_Etcd.RangeResponse_count'(Rest, N + 7,
				       X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
				       TrUserData);
'd_field_Etcd.RangeResponse_count'(<<0:1, X:7,
				     Rest/binary>>,
				   N, Acc, F@_1, F@_2, F@_3, _, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.RangeResponse'(RestF, 0, 0,
					    F@_1, F@_2, F@_3, NewFValue,
					    TrUserData).

'skip_varint_Etcd.RangeResponse'(<<1:1, _:7,
				   Rest/binary>>,
				 Z1, Z2, F@_1, F@_2, F@_3, F@_4, TrUserData) ->
    'skip_varint_Etcd.RangeResponse'(Rest, Z1, Z2, F@_1,
				     F@_2, F@_3, F@_4, TrUserData);
'skip_varint_Etcd.RangeResponse'(<<0:1, _:7,
				   Rest/binary>>,
				 Z1, Z2, F@_1, F@_2, F@_3, F@_4, TrUserData) ->
    'dfp_read_field_def_Etcd.RangeResponse'(Rest, Z1, Z2,
					    F@_1, F@_2, F@_3, F@_4, TrUserData).

'skip_length_delimited_Etcd.RangeResponse'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, F@_3, F@_4,
					   TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.RangeResponse'(Rest, N + 7,
					       X bsl N + Acc, F@_1, F@_2, F@_3,
					       F@_4, TrUserData);
'skip_length_delimited_Etcd.RangeResponse'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, F@_3, F@_4,
					   TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.RangeResponse'(Rest2, 0, 0,
					    F@_1, F@_2, F@_3, F@_4, TrUserData).

'skip_group_Etcd.RangeResponse'(Bin, FNum, Z2, F@_1,
				F@_2, F@_3, F@_4, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.RangeResponse'(Rest, 0, Z2,
					    F@_1, F@_2, F@_3, F@_4, TrUserData).

'skip_32_Etcd.RangeResponse'(<<_:32, Rest/binary>>, Z1,
			     Z2, F@_1, F@_2, F@_3, F@_4, TrUserData) ->
    'dfp_read_field_def_Etcd.RangeResponse'(Rest, Z1, Z2,
					    F@_1, F@_2, F@_3, F@_4, TrUserData).

'skip_64_Etcd.RangeResponse'(<<_:64, Rest/binary>>, Z1,
			     Z2, F@_1, F@_2, F@_3, F@_4, TrUserData) ->
    'dfp_read_field_def_Etcd.RangeResponse'(Rest, Z1, Z2,
					    F@_1, F@_2, F@_3, F@_4, TrUserData).

'decode_msg_Etcd.PutRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.PutRequest'(Bin, 0, 0,
					 id(<<>>, TrUserData),
					 id(<<>>, TrUserData),
					 id(0, TrUserData),
					 id(false, TrUserData),
					 id(false, TrUserData),
					 id(false, TrUserData), TrUserData).

'dfp_read_field_def_Etcd.PutRequest'(<<10,
				       Rest/binary>>,
				     Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				     TrUserData) ->
    'd_field_Etcd.PutRequest_key'(Rest, Z1, Z2, F@_1, F@_2,
				  F@_3, F@_4, F@_5, F@_6, TrUserData);
'dfp_read_field_def_Etcd.PutRequest'(<<18,
				       Rest/binary>>,
				     Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				     TrUserData) ->
    'd_field_Etcd.PutRequest_value'(Rest, Z1, Z2, F@_1,
				    F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData);
'dfp_read_field_def_Etcd.PutRequest'(<<24,
				       Rest/binary>>,
				     Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				     TrUserData) ->
    'd_field_Etcd.PutRequest_lease'(Rest, Z1, Z2, F@_1,
				    F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData);
'dfp_read_field_def_Etcd.PutRequest'(<<32,
				       Rest/binary>>,
				     Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				     TrUserData) ->
    'd_field_Etcd.PutRequest_prev_kv'(Rest, Z1, Z2, F@_1,
				      F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData);
'dfp_read_field_def_Etcd.PutRequest'(<<40,
				       Rest/binary>>,
				     Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				     TrUserData) ->
    'd_field_Etcd.PutRequest_ignore_value'(Rest, Z1, Z2,
					   F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					   TrUserData);
'dfp_read_field_def_Etcd.PutRequest'(<<48,
				       Rest/binary>>,
				     Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				     TrUserData) ->
    'd_field_Etcd.PutRequest_ignore_lease'(Rest, Z1, Z2,
					   F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					   TrUserData);
'dfp_read_field_def_Etcd.PutRequest'(<<>>, 0, 0, F@_1,
				     F@_2, F@_3, F@_4, F@_5, F@_6, _) ->
    #{key => F@_1, value => F@_2, lease => F@_3,
      prev_kv => F@_4, ignore_value => F@_5,
      ignore_lease => F@_6};
'dfp_read_field_def_Etcd.PutRequest'(Other, Z1, Z2,
				     F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				     TrUserData) ->
    'dg_read_field_def_Etcd.PutRequest'(Other, Z1, Z2, F@_1,
					F@_2, F@_3, F@_4, F@_5, F@_6,
					TrUserData).

'dg_read_field_def_Etcd.PutRequest'(<<1:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				    TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.PutRequest'(Rest, N + 7,
					X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
					F@_5, F@_6, TrUserData);
'dg_read_field_def_Etcd.PutRequest'(<<0:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				    TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.PutRequest_key'(Rest, 0, 0, F@_1, F@_2,
					F@_3, F@_4, F@_5, F@_6, TrUserData);
      18 ->
	  'd_field_Etcd.PutRequest_value'(Rest, 0, 0, F@_1, F@_2,
					  F@_3, F@_4, F@_5, F@_6, TrUserData);
      24 ->
	  'd_field_Etcd.PutRequest_lease'(Rest, 0, 0, F@_1, F@_2,
					  F@_3, F@_4, F@_5, F@_6, TrUserData);
      32 ->
	  'd_field_Etcd.PutRequest_prev_kv'(Rest, 0, 0, F@_1,
					    F@_2, F@_3, F@_4, F@_5, F@_6,
					    TrUserData);
      40 ->
	  'd_field_Etcd.PutRequest_ignore_value'(Rest, 0, 0, F@_1,
						 F@_2, F@_3, F@_4, F@_5, F@_6,
						 TrUserData);
      48 ->
	  'd_field_Etcd.PutRequest_ignore_lease'(Rest, 0, 0, F@_1,
						 F@_2, F@_3, F@_4, F@_5, F@_6,
						 TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.PutRequest'(Rest, 0, 0, F@_1, F@_2,
					      F@_3, F@_4, F@_5, F@_6,
					      TrUserData);
	    1 ->
		'skip_64_Etcd.PutRequest'(Rest, 0, 0, F@_1, F@_2, F@_3,
					  F@_4, F@_5, F@_6, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.PutRequest'(Rest, 0, 0,
							F@_1, F@_2, F@_3, F@_4,
							F@_5, F@_6, TrUserData);
	    3 ->
		'skip_group_Etcd.PutRequest'(Rest, Key bsr 3, 0, F@_1,
					     F@_2, F@_3, F@_4, F@_5, F@_6,
					     TrUserData);
	    5 ->
		'skip_32_Etcd.PutRequest'(Rest, 0, 0, F@_1, F@_2, F@_3,
					  F@_4, F@_5, F@_6, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.PutRequest'(<<>>, 0, 0, F@_1,
				    F@_2, F@_3, F@_4, F@_5, F@_6, _) ->
    #{key => F@_1, value => F@_2, lease => F@_3,
      prev_kv => F@_4, ignore_value => F@_5,
      ignore_lease => F@_6}.

'd_field_Etcd.PutRequest_key'(<<1:1, X:7, Rest/binary>>,
			      N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
			      TrUserData)
    when N < 57 ->
    'd_field_Etcd.PutRequest_key'(Rest, N + 7,
				  X bsl N + Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				  F@_6, TrUserData);
'd_field_Etcd.PutRequest_key'(<<0:1, X:7, Rest/binary>>,
			      N, Acc, _, F@_2, F@_3, F@_4, F@_5, F@_6,
			      TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.PutRequest'(RestF, 0, 0,
					 NewFValue, F@_2, F@_3, F@_4, F@_5,
					 F@_6, TrUserData).

'd_field_Etcd.PutRequest_value'(<<1:1, X:7,
				  Rest/binary>>,
				N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				TrUserData)
    when N < 57 ->
    'd_field_Etcd.PutRequest_value'(Rest, N + 7,
				    X bsl N + Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				    F@_6, TrUserData);
'd_field_Etcd.PutRequest_value'(<<0:1, X:7,
				  Rest/binary>>,
				N, Acc, F@_1, _, F@_3, F@_4, F@_5, F@_6,
				TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.PutRequest'(RestF, 0, 0, F@_1,
					 NewFValue, F@_3, F@_4, F@_5, F@_6,
					 TrUserData).

'd_field_Etcd.PutRequest_lease'(<<1:1, X:7,
				  Rest/binary>>,
				N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				TrUserData)
    when N < 57 ->
    'd_field_Etcd.PutRequest_lease'(Rest, N + 7,
				    X bsl N + Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				    F@_6, TrUserData);
'd_field_Etcd.PutRequest_lease'(<<0:1, X:7,
				  Rest/binary>>,
				N, Acc, F@_1, F@_2, _, F@_4, F@_5, F@_6,
				TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.PutRequest'(RestF, 0, 0, F@_1,
					 F@_2, NewFValue, F@_4, F@_5, F@_6,
					 TrUserData).

'd_field_Etcd.PutRequest_prev_kv'(<<1:1, X:7,
				    Rest/binary>>,
				  N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				  TrUserData)
    when N < 57 ->
    'd_field_Etcd.PutRequest_prev_kv'(Rest, N + 7,
				      X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
				      F@_5, F@_6, TrUserData);
'd_field_Etcd.PutRequest_prev_kv'(<<0:1, X:7,
				    Rest/binary>>,
				  N, Acc, F@_1, F@_2, F@_3, _, F@_5, F@_6,
				  TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.PutRequest'(RestF, 0, 0, F@_1,
					 F@_2, F@_3, NewFValue, F@_5, F@_6,
					 TrUserData).

'd_field_Etcd.PutRequest_ignore_value'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				       F@_6, TrUserData)
    when N < 57 ->
    'd_field_Etcd.PutRequest_ignore_value'(Rest, N + 7,
					   X bsl N + Acc, F@_1, F@_2, F@_3,
					   F@_4, F@_5, F@_6, TrUserData);
'd_field_Etcd.PutRequest_ignore_value'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, F@_2, F@_3, F@_4, _, F@_6,
				       TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.PutRequest'(RestF, 0, 0, F@_1,
					 F@_2, F@_3, F@_4, NewFValue, F@_6,
					 TrUserData).

'd_field_Etcd.PutRequest_ignore_lease'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				       F@_6, TrUserData)
    when N < 57 ->
    'd_field_Etcd.PutRequest_ignore_lease'(Rest, N + 7,
					   X bsl N + Acc, F@_1, F@_2, F@_3,
					   F@_4, F@_5, F@_6, TrUserData);
'd_field_Etcd.PutRequest_ignore_lease'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, _,
				       TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.PutRequest'(RestF, 0, 0, F@_1,
					 F@_2, F@_3, F@_4, F@_5, NewFValue,
					 TrUserData).

'skip_varint_Etcd.PutRequest'(<<1:1, _:7, Rest/binary>>,
			      Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
			      TrUserData) ->
    'skip_varint_Etcd.PutRequest'(Rest, Z1, Z2, F@_1, F@_2,
				  F@_3, F@_4, F@_5, F@_6, TrUserData);
'skip_varint_Etcd.PutRequest'(<<0:1, _:7, Rest/binary>>,
			      Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
			      TrUserData) ->
    'dfp_read_field_def_Etcd.PutRequest'(Rest, Z1, Z2, F@_1,
					 F@_2, F@_3, F@_4, F@_5, F@_6,
					 TrUserData).

'skip_length_delimited_Etcd.PutRequest'(<<1:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					F@_6, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.PutRequest'(Rest, N + 7,
					    X bsl N + Acc, F@_1, F@_2, F@_3,
					    F@_4, F@_5, F@_6, TrUserData);
'skip_length_delimited_Etcd.PutRequest'(<<0:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					F@_6, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.PutRequest'(Rest2, 0, 0, F@_1,
					 F@_2, F@_3, F@_4, F@_5, F@_6,
					 TrUserData).

'skip_group_Etcd.PutRequest'(Bin, FNum, Z2, F@_1, F@_2,
			     F@_3, F@_4, F@_5, F@_6, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.PutRequest'(Rest, 0, Z2, F@_1,
					 F@_2, F@_3, F@_4, F@_5, F@_6,
					 TrUserData).

'skip_32_Etcd.PutRequest'(<<_:32, Rest/binary>>, Z1, Z2,
			  F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) ->
    'dfp_read_field_def_Etcd.PutRequest'(Rest, Z1, Z2, F@_1,
					 F@_2, F@_3, F@_4, F@_5, F@_6,
					 TrUserData).

'skip_64_Etcd.PutRequest'(<<_:64, Rest/binary>>, Z1, Z2,
			  F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) ->
    'dfp_read_field_def_Etcd.PutRequest'(Rest, Z1, Z2, F@_1,
					 F@_2, F@_3, F@_4, F@_5, F@_6,
					 TrUserData).

'decode_msg_Etcd.PutResponse'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.PutResponse'(Bin, 0, 0,
					  id('$undef', TrUserData),
					  id('$undef', TrUserData), TrUserData).

'dfp_read_field_def_Etcd.PutResponse'(<<10,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.PutResponse_header'(Rest, Z1, Z2, F@_1,
				      F@_2, TrUserData);
'dfp_read_field_def_Etcd.PutResponse'(<<18,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.PutResponse_prev_kv'(Rest, Z1, Z2, F@_1,
				       F@_2, TrUserData);
'dfp_read_field_def_Etcd.PutResponse'(<<>>, 0, 0, F@_1,
				      F@_2, _) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    if F@_2 == '$undef' -> S2;
       true -> S2#{prev_kv => F@_2}
    end;
'dfp_read_field_def_Etcd.PutResponse'(Other, Z1, Z2,
				      F@_1, F@_2, TrUserData) ->
    'dg_read_field_def_Etcd.PutResponse'(Other, Z1, Z2,
					 F@_1, F@_2, TrUserData).

'dg_read_field_def_Etcd.PutResponse'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.PutResponse'(Rest, N + 7,
					 X bsl N + Acc, F@_1, F@_2, TrUserData);
'dg_read_field_def_Etcd.PutResponse'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.PutResponse_header'(Rest, 0, 0, F@_1,
					    F@_2, TrUserData);
      18 ->
	  'd_field_Etcd.PutResponse_prev_kv'(Rest, 0, 0, F@_1,
					     F@_2, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.PutResponse'(Rest, 0, 0, F@_1, F@_2,
					       TrUserData);
	    1 ->
		'skip_64_Etcd.PutResponse'(Rest, 0, 0, F@_1, F@_2,
					   TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.PutResponse'(Rest, 0, 0,
							 F@_1, F@_2,
							 TrUserData);
	    3 ->
		'skip_group_Etcd.PutResponse'(Rest, Key bsr 3, 0, F@_1,
					      F@_2, TrUserData);
	    5 ->
		'skip_32_Etcd.PutResponse'(Rest, 0, 0, F@_1, F@_2,
					   TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.PutResponse'(<<>>, 0, 0, F@_1,
				     F@_2, _) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    if F@_2 == '$undef' -> S2;
       true -> S2#{prev_kv => F@_2}
    end.

'd_field_Etcd.PutResponse_header'(<<1:1, X:7,
				    Rest/binary>>,
				  N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.PutResponse_header'(Rest, N + 7,
				      X bsl N + Acc, F@_1, F@_2, TrUserData);
'd_field_Etcd.PutResponse_header'(<<0:1, X:7,
				    Rest/binary>>,
				  N, Acc, Prev, F@_2, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.PutResponse'(RestF, 0, 0,
					  if Prev == '$undef' -> NewFValue;
					     true ->
						 'merge_msg_Etcd.ResponseHeader'(Prev,
										 NewFValue,
										 TrUserData)
					  end,
					  F@_2, TrUserData).

'd_field_Etcd.PutResponse_prev_kv'(<<1:1, X:7,
				     Rest/binary>>,
				   N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.PutResponse_prev_kv'(Rest, N + 7,
				       X bsl N + Acc, F@_1, F@_2, TrUserData);
'd_field_Etcd.PutResponse_prev_kv'(<<0:1, X:7,
				     Rest/binary>>,
				   N, Acc, F@_1, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_mvccpb.KeyValue'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.PutResponse'(RestF, 0, 0, F@_1,
					  if Prev == '$undef' -> NewFValue;
					     true ->
						 'merge_msg_mvccpb.KeyValue'(Prev,
									     NewFValue,
									     TrUserData)
					  end,
					  TrUserData).

'skip_varint_Etcd.PutResponse'(<<1:1, _:7,
				 Rest/binary>>,
			       Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_Etcd.PutResponse'(Rest, Z1, Z2, F@_1, F@_2,
				   TrUserData);
'skip_varint_Etcd.PutResponse'(<<0:1, _:7,
				 Rest/binary>>,
			       Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.PutResponse'(Rest, Z1, Z2,
					  F@_1, F@_2, TrUserData).

'skip_length_delimited_Etcd.PutResponse'(<<1:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.PutResponse'(Rest, N + 7,
					     X bsl N + Acc, F@_1, F@_2,
					     TrUserData);
'skip_length_delimited_Etcd.PutResponse'(<<0:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, F@_2, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.PutResponse'(Rest2, 0, 0, F@_1,
					  F@_2, TrUserData).

'skip_group_Etcd.PutResponse'(Bin, FNum, Z2, F@_1, F@_2,
			      TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.PutResponse'(Rest, 0, Z2, F@_1,
					  F@_2, TrUserData).

'skip_32_Etcd.PutResponse'(<<_:32, Rest/binary>>, Z1,
			   Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.PutResponse'(Rest, Z1, Z2,
					  F@_1, F@_2, TrUserData).

'skip_64_Etcd.PutResponse'(<<_:64, Rest/binary>>, Z1,
			   Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.PutResponse'(Rest, Z1, Z2,
					  F@_1, F@_2, TrUserData).

'decode_msg_Etcd.DeleteRangeRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.DeleteRangeRequest'(Bin, 0, 0,
						 id(<<>>, TrUserData),
						 id(<<>>, TrUserData),
						 id(false, TrUserData),
						 TrUserData).

'dfp_read_field_def_Etcd.DeleteRangeRequest'(<<10,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, F@_3,
					     TrUserData) ->
    'd_field_Etcd.DeleteRangeRequest_key'(Rest, Z1, Z2,
					  F@_1, F@_2, F@_3, TrUserData);
'dfp_read_field_def_Etcd.DeleteRangeRequest'(<<18,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, F@_3,
					     TrUserData) ->
    'd_field_Etcd.DeleteRangeRequest_range_end'(Rest, Z1,
						Z2, F@_1, F@_2, F@_3,
						TrUserData);
'dfp_read_field_def_Etcd.DeleteRangeRequest'(<<24,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, F@_3,
					     TrUserData) ->
    'd_field_Etcd.DeleteRangeRequest_prev_kv'(Rest, Z1, Z2,
					      F@_1, F@_2, F@_3, TrUserData);
'dfp_read_field_def_Etcd.DeleteRangeRequest'(<<>>, 0, 0,
					     F@_1, F@_2, F@_3, _) ->
    #{key => F@_1, range_end => F@_2, prev_kv => F@_3};
'dfp_read_field_def_Etcd.DeleteRangeRequest'(Other, Z1,
					     Z2, F@_1, F@_2, F@_3,
					     TrUserData) ->
    'dg_read_field_def_Etcd.DeleteRangeRequest'(Other, Z1,
						Z2, F@_1, F@_2, F@_3,
						TrUserData).

'dg_read_field_def_Etcd.DeleteRangeRequest'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, F@_3,
					    TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.DeleteRangeRequest'(Rest, N + 7,
						X bsl N + Acc, F@_1, F@_2, F@_3,
						TrUserData);
'dg_read_field_def_Etcd.DeleteRangeRequest'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, F@_3,
					    TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.DeleteRangeRequest_key'(Rest, 0, 0, F@_1,
						F@_2, F@_3, TrUserData);
      18 ->
	  'd_field_Etcd.DeleteRangeRequest_range_end'(Rest, 0, 0,
						      F@_1, F@_2, F@_3,
						      TrUserData);
      24 ->
	  'd_field_Etcd.DeleteRangeRequest_prev_kv'(Rest, 0, 0,
						    F@_1, F@_2, F@_3,
						    TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.DeleteRangeRequest'(Rest, 0, 0, F@_1,
						      F@_2, F@_3, TrUserData);
	    1 ->
		'skip_64_Etcd.DeleteRangeRequest'(Rest, 0, 0, F@_1,
						  F@_2, F@_3, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.DeleteRangeRequest'(Rest, 0,
								0, F@_1, F@_2,
								F@_3,
								TrUserData);
	    3 ->
		'skip_group_Etcd.DeleteRangeRequest'(Rest, Key bsr 3, 0,
						     F@_1, F@_2, F@_3,
						     TrUserData);
	    5 ->
		'skip_32_Etcd.DeleteRangeRequest'(Rest, 0, 0, F@_1,
						  F@_2, F@_3, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.DeleteRangeRequest'(<<>>, 0, 0,
					    F@_1, F@_2, F@_3, _) ->
    #{key => F@_1, range_end => F@_2, prev_kv => F@_3}.

'd_field_Etcd.DeleteRangeRequest_key'(<<1:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_Etcd.DeleteRangeRequest_key'(Rest, N + 7,
					  X bsl N + Acc, F@_1, F@_2, F@_3,
					  TrUserData);
'd_field_Etcd.DeleteRangeRequest_key'(<<0:1, X:7,
					Rest/binary>>,
				      N, Acc, _, F@_2, F@_3, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.DeleteRangeRequest'(RestF, 0,
						 0, NewFValue, F@_2, F@_3,
						 TrUserData).

'd_field_Etcd.DeleteRangeRequest_range_end'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, F@_3,
					    TrUserData)
    when N < 57 ->
    'd_field_Etcd.DeleteRangeRequest_range_end'(Rest, N + 7,
						X bsl N + Acc, F@_1, F@_2, F@_3,
						TrUserData);
'd_field_Etcd.DeleteRangeRequest_range_end'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, _, F@_3,
					    TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.DeleteRangeRequest'(RestF, 0,
						 0, F@_1, NewFValue, F@_3,
						 TrUserData).

'd_field_Etcd.DeleteRangeRequest_prev_kv'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_Etcd.DeleteRangeRequest_prev_kv'(Rest, N + 7,
					      X bsl N + Acc, F@_1, F@_2, F@_3,
					      TrUserData);
'd_field_Etcd.DeleteRangeRequest_prev_kv'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, _, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.DeleteRangeRequest'(RestF, 0,
						 0, F@_1, F@_2, NewFValue,
						 TrUserData).

'skip_varint_Etcd.DeleteRangeRequest'(<<1:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'skip_varint_Etcd.DeleteRangeRequest'(Rest, Z1, Z2,
					  F@_1, F@_2, F@_3, TrUserData);
'skip_varint_Etcd.DeleteRangeRequest'(<<0:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.DeleteRangeRequest'(Rest, Z1,
						 Z2, F@_1, F@_2, F@_3,
						 TrUserData).

'skip_length_delimited_Etcd.DeleteRangeRequest'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3,
						TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.DeleteRangeRequest'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    F@_2, F@_3, TrUserData);
'skip_length_delimited_Etcd.DeleteRangeRequest'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3,
						TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.DeleteRangeRequest'(Rest2, 0,
						 0, F@_1, F@_2, F@_3,
						 TrUserData).

'skip_group_Etcd.DeleteRangeRequest'(Bin, FNum, Z2,
				     F@_1, F@_2, F@_3, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.DeleteRangeRequest'(Rest, 0,
						 Z2, F@_1, F@_2, F@_3,
						 TrUserData).

'skip_32_Etcd.DeleteRangeRequest'(<<_:32, Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.DeleteRangeRequest'(Rest, Z1,
						 Z2, F@_1, F@_2, F@_3,
						 TrUserData).

'skip_64_Etcd.DeleteRangeRequest'(<<_:64, Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.DeleteRangeRequest'(Rest, Z1,
						 Z2, F@_1, F@_2, F@_3,
						 TrUserData).

'decode_msg_Etcd.DeleteRangeResponse'(Bin,
				      TrUserData) ->
    'dfp_read_field_def_Etcd.DeleteRangeResponse'(Bin, 0, 0,
						  id('$undef', TrUserData),
						  id(0, TrUserData),
						  id([], TrUserData),
						  TrUserData).

'dfp_read_field_def_Etcd.DeleteRangeResponse'(<<10,
						Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, F@_3,
					      TrUserData) ->
    'd_field_Etcd.DeleteRangeResponse_header'(Rest, Z1, Z2,
					      F@_1, F@_2, F@_3, TrUserData);
'dfp_read_field_def_Etcd.DeleteRangeResponse'(<<16,
						Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, F@_3,
					      TrUserData) ->
    'd_field_Etcd.DeleteRangeResponse_deleted'(Rest, Z1, Z2,
					       F@_1, F@_2, F@_3, TrUserData);
'dfp_read_field_def_Etcd.DeleteRangeResponse'(<<26,
						Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, F@_3,
					      TrUserData) ->
    'd_field_Etcd.DeleteRangeResponse_prev_kvs'(Rest, Z1,
						Z2, F@_1, F@_2, F@_3,
						TrUserData);
'dfp_read_field_def_Etcd.DeleteRangeResponse'(<<>>, 0,
					      0, F@_1, F@_2, R1, TrUserData) ->
    S1 = #{deleted => F@_2},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true -> S2#{prev_kvs => lists_reverse(R1, TrUserData)}
    end;
'dfp_read_field_def_Etcd.DeleteRangeResponse'(Other, Z1,
					      Z2, F@_1, F@_2, F@_3,
					      TrUserData) ->
    'dg_read_field_def_Etcd.DeleteRangeResponse'(Other, Z1,
						 Z2, F@_1, F@_2, F@_3,
						 TrUserData).

'dg_read_field_def_Etcd.DeleteRangeResponse'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, F@_3,
					     TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.DeleteRangeResponse'(Rest,
						 N + 7, X bsl N + Acc, F@_1,
						 F@_2, F@_3, TrUserData);
'dg_read_field_def_Etcd.DeleteRangeResponse'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, F@_3,
					     TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.DeleteRangeResponse_header'(Rest, 0, 0,
						    F@_1, F@_2, F@_3,
						    TrUserData);
      16 ->
	  'd_field_Etcd.DeleteRangeResponse_deleted'(Rest, 0, 0,
						     F@_1, F@_2, F@_3,
						     TrUserData);
      26 ->
	  'd_field_Etcd.DeleteRangeResponse_prev_kvs'(Rest, 0, 0,
						      F@_1, F@_2, F@_3,
						      TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.DeleteRangeResponse'(Rest, 0, 0, F@_1,
						       F@_2, F@_3, TrUserData);
	    1 ->
		'skip_64_Etcd.DeleteRangeResponse'(Rest, 0, 0, F@_1,
						   F@_2, F@_3, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.DeleteRangeResponse'(Rest,
								 0, 0, F@_1,
								 F@_2, F@_3,
								 TrUserData);
	    3 ->
		'skip_group_Etcd.DeleteRangeResponse'(Rest, Key bsr 3,
						      0, F@_1, F@_2, F@_3,
						      TrUserData);
	    5 ->
		'skip_32_Etcd.DeleteRangeResponse'(Rest, 0, 0, F@_1,
						   F@_2, F@_3, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.DeleteRangeResponse'(<<>>, 0, 0,
					     F@_1, F@_2, R1, TrUserData) ->
    S1 = #{deleted => F@_2},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true -> S2#{prev_kvs => lists_reverse(R1, TrUserData)}
    end.

'd_field_Etcd.DeleteRangeResponse_header'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_Etcd.DeleteRangeResponse_header'(Rest, N + 7,
					      X bsl N + Acc, F@_1, F@_2, F@_3,
					      TrUserData);
'd_field_Etcd.DeleteRangeResponse_header'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, Prev, F@_2, F@_3,
					  TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.DeleteRangeResponse'(RestF, 0,
						  0,
						  if Prev == '$undef' ->
							 NewFValue;
						     true ->
							 'merge_msg_Etcd.ResponseHeader'(Prev,
											 NewFValue,
											 TrUserData)
						  end,
						  F@_2, F@_3, TrUserData).

'd_field_Etcd.DeleteRangeResponse_deleted'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_Etcd.DeleteRangeResponse_deleted'(Rest, N + 7,
					       X bsl N + Acc, F@_1, F@_2, F@_3,
					       TrUserData);
'd_field_Etcd.DeleteRangeResponse_deleted'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, _, F@_3, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.DeleteRangeResponse'(RestF, 0,
						  0, F@_1, NewFValue, F@_3,
						  TrUserData).

'd_field_Etcd.DeleteRangeResponse_prev_kvs'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, F@_3,
					    TrUserData)
    when N < 57 ->
    'd_field_Etcd.DeleteRangeResponse_prev_kvs'(Rest, N + 7,
						X bsl N + Acc, F@_1, F@_2, F@_3,
						TrUserData);
'd_field_Etcd.DeleteRangeResponse_prev_kvs'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, Prev,
					    TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_mvccpb.KeyValue'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.DeleteRangeResponse'(RestF, 0,
						  0, F@_1, F@_2,
						  cons(NewFValue, Prev,
						       TrUserData),
						  TrUserData).

'skip_varint_Etcd.DeleteRangeResponse'(<<1:1, _:7,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'skip_varint_Etcd.DeleteRangeResponse'(Rest, Z1, Z2,
					   F@_1, F@_2, F@_3, TrUserData);
'skip_varint_Etcd.DeleteRangeResponse'(<<0:1, _:7,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.DeleteRangeResponse'(Rest, Z1,
						  Z2, F@_1, F@_2, F@_3,
						  TrUserData).

'skip_length_delimited_Etcd.DeleteRangeResponse'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3,
						 TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.DeleteRangeResponse'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     F@_2, F@_3, TrUserData);
'skip_length_delimited_Etcd.DeleteRangeResponse'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3,
						 TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.DeleteRangeResponse'(Rest2, 0,
						  0, F@_1, F@_2, F@_3,
						  TrUserData).

'skip_group_Etcd.DeleteRangeResponse'(Bin, FNum, Z2,
				      F@_1, F@_2, F@_3, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.DeleteRangeResponse'(Rest, 0,
						  Z2, F@_1, F@_2, F@_3,
						  TrUserData).

'skip_32_Etcd.DeleteRangeResponse'(<<_:32,
				     Rest/binary>>,
				   Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.DeleteRangeResponse'(Rest, Z1,
						  Z2, F@_1, F@_2, F@_3,
						  TrUserData).

'skip_64_Etcd.DeleteRangeResponse'(<<_:64,
				     Rest/binary>>,
				   Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.DeleteRangeResponse'(Rest, Z1,
						  Z2, F@_1, F@_2, F@_3,
						  TrUserData).

'decode_msg_Etcd.RequestOp'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.RequestOp'(Bin, 0, 0,
					id('$undef', TrUserData), TrUserData).

'dfp_read_field_def_Etcd.RequestOp'(<<10, Rest/binary>>,
				    Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.RequestOp_request_range'(Rest, Z1, Z2,
					   F@_1, TrUserData);
'dfp_read_field_def_Etcd.RequestOp'(<<18, Rest/binary>>,
				    Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.RequestOp_request_put'(Rest, Z1, Z2, F@_1,
					 TrUserData);
'dfp_read_field_def_Etcd.RequestOp'(<<26, Rest/binary>>,
				    Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.RequestOp_request_delete_range'(Rest, Z1,
						  Z2, F@_1, TrUserData);
'dfp_read_field_def_Etcd.RequestOp'(<<34, Rest/binary>>,
				    Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.RequestOp_request_txn'(Rest, Z1, Z2, F@_1,
					 TrUserData);
'dfp_read_field_def_Etcd.RequestOp'(<<>>, 0, 0, F@_1,
				    _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{request => F@_1}
    end;
'dfp_read_field_def_Etcd.RequestOp'(Other, Z1, Z2, F@_1,
				    TrUserData) ->
    'dg_read_field_def_Etcd.RequestOp'(Other, Z1, Z2, F@_1,
				       TrUserData).

'dg_read_field_def_Etcd.RequestOp'(<<1:1, X:7,
				     Rest/binary>>,
				   N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.RequestOp'(Rest, N + 7,
				       X bsl N + Acc, F@_1, TrUserData);
'dg_read_field_def_Etcd.RequestOp'(<<0:1, X:7,
				     Rest/binary>>,
				   N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.RequestOp_request_range'(Rest, 0, 0, F@_1,
						 TrUserData);
      18 ->
	  'd_field_Etcd.RequestOp_request_put'(Rest, 0, 0, F@_1,
					       TrUserData);
      26 ->
	  'd_field_Etcd.RequestOp_request_delete_range'(Rest, 0,
							0, F@_1, TrUserData);
      34 ->
	  'd_field_Etcd.RequestOp_request_txn'(Rest, 0, 0, F@_1,
					       TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.RequestOp'(Rest, 0, 0, F@_1,
					     TrUserData);
	    1 ->
		'skip_64_Etcd.RequestOp'(Rest, 0, 0, F@_1, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.RequestOp'(Rest, 0, 0, F@_1,
						       TrUserData);
	    3 ->
		'skip_group_Etcd.RequestOp'(Rest, Key bsr 3, 0, F@_1,
					    TrUserData);
	    5 ->
		'skip_32_Etcd.RequestOp'(Rest, 0, 0, F@_1, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.RequestOp'(<<>>, 0, 0, F@_1,
				   _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{request => F@_1}
    end.

'd_field_Etcd.RequestOp_request_range'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.RequestOp_request_range'(Rest, N + 7,
					   X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.RequestOp_request_range'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.RangeRequest'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.RequestOp'(RestF, 0, 0,
					case Prev of
					  '$undef' ->
					      id({request_range, NewFValue},
						 TrUserData);
					  {request_range, MVPrev} ->
					      id({request_range,
						  'merge_msg_Etcd.RangeRequest'(MVPrev,
										NewFValue,
										TrUserData)},
						 TrUserData);
					  _ ->
					      id({request_range, NewFValue},
						 TrUserData)
					end,
					TrUserData).

'd_field_Etcd.RequestOp_request_put'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.RequestOp_request_put'(Rest, N + 7,
					 X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.RequestOp_request_put'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.PutRequest'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.RequestOp'(RestF, 0, 0,
					case Prev of
					  '$undef' ->
					      id({request_put, NewFValue},
						 TrUserData);
					  {request_put, MVPrev} ->
					      id({request_put,
						  'merge_msg_Etcd.PutRequest'(MVPrev,
									      NewFValue,
									      TrUserData)},
						 TrUserData);
					  _ ->
					      id({request_put, NewFValue},
						 TrUserData)
					end,
					TrUserData).

'd_field_Etcd.RequestOp_request_delete_range'(<<1:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.RequestOp_request_delete_range'(Rest,
						  N + 7, X bsl N + Acc, F@_1,
						  TrUserData);
'd_field_Etcd.RequestOp_request_delete_range'(<<0:1,
						X:7, Rest/binary>>,
					      N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.DeleteRangeRequest'(Bs,
								    TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.RequestOp'(RestF, 0, 0,
					case Prev of
					  '$undef' ->
					      id({request_delete_range,
						  NewFValue},
						 TrUserData);
					  {request_delete_range, MVPrev} ->
					      id({request_delete_range,
						  'merge_msg_Etcd.DeleteRangeRequest'(MVPrev,
										      NewFValue,
										      TrUserData)},
						 TrUserData);
					  _ ->
					      id({request_delete_range,
						  NewFValue},
						 TrUserData)
					end,
					TrUserData).

'd_field_Etcd.RequestOp_request_txn'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.RequestOp_request_txn'(Rest, N + 7,
					 X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.RequestOp_request_txn'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.TxnRequest'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.RequestOp'(RestF, 0, 0,
					case Prev of
					  '$undef' ->
					      id({request_txn, NewFValue},
						 TrUserData);
					  {request_txn, MVPrev} ->
					      id({request_txn,
						  'merge_msg_Etcd.TxnRequest'(MVPrev,
									      NewFValue,
									      TrUserData)},
						 TrUserData);
					  _ ->
					      id({request_txn, NewFValue},
						 TrUserData)
					end,
					TrUserData).

'skip_varint_Etcd.RequestOp'(<<1:1, _:7, Rest/binary>>,
			     Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.RequestOp'(Rest, Z1, Z2, F@_1,
				 TrUserData);
'skip_varint_Etcd.RequestOp'(<<0:1, _:7, Rest/binary>>,
			     Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.RequestOp'(Rest, Z1, Z2, F@_1,
					TrUserData).

'skip_length_delimited_Etcd.RequestOp'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.RequestOp'(Rest, N + 7,
					   X bsl N + Acc, F@_1, TrUserData);
'skip_length_delimited_Etcd.RequestOp'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.RequestOp'(Rest2, 0, 0, F@_1,
					TrUserData).

'skip_group_Etcd.RequestOp'(Bin, FNum, Z2, F@_1,
			    TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.RequestOp'(Rest, 0, Z2, F@_1,
					TrUserData).

'skip_32_Etcd.RequestOp'(<<_:32, Rest/binary>>, Z1, Z2,
			 F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.RequestOp'(Rest, Z1, Z2, F@_1,
					TrUserData).

'skip_64_Etcd.RequestOp'(<<_:64, Rest/binary>>, Z1, Z2,
			 F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.RequestOp'(Rest, Z1, Z2, F@_1,
					TrUserData).

'decode_msg_Etcd.ResponseOp'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.ResponseOp'(Bin, 0, 0,
					 id('$undef', TrUserData), TrUserData).

'dfp_read_field_def_Etcd.ResponseOp'(<<10,
				       Rest/binary>>,
				     Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.ResponseOp_response_range'(Rest, Z1, Z2,
					     F@_1, TrUserData);
'dfp_read_field_def_Etcd.ResponseOp'(<<18,
				       Rest/binary>>,
				     Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.ResponseOp_response_put'(Rest, Z1, Z2,
					   F@_1, TrUserData);
'dfp_read_field_def_Etcd.ResponseOp'(<<26,
				       Rest/binary>>,
				     Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.ResponseOp_response_delete_range'(Rest,
						    Z1, Z2, F@_1, TrUserData);
'dfp_read_field_def_Etcd.ResponseOp'(<<34,
				       Rest/binary>>,
				     Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.ResponseOp_response_txn'(Rest, Z1, Z2,
					   F@_1, TrUserData);
'dfp_read_field_def_Etcd.ResponseOp'(<<>>, 0, 0, F@_1,
				     _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{response => F@_1}
    end;
'dfp_read_field_def_Etcd.ResponseOp'(Other, Z1, Z2,
				     F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.ResponseOp'(Other, Z1, Z2, F@_1,
					TrUserData).

'dg_read_field_def_Etcd.ResponseOp'(<<1:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.ResponseOp'(Rest, N + 7,
					X bsl N + Acc, F@_1, TrUserData);
'dg_read_field_def_Etcd.ResponseOp'(<<0:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.ResponseOp_response_range'(Rest, 0, 0,
						   F@_1, TrUserData);
      18 ->
	  'd_field_Etcd.ResponseOp_response_put'(Rest, 0, 0, F@_1,
						 TrUserData);
      26 ->
	  'd_field_Etcd.ResponseOp_response_delete_range'(Rest, 0,
							  0, F@_1, TrUserData);
      34 ->
	  'd_field_Etcd.ResponseOp_response_txn'(Rest, 0, 0, F@_1,
						 TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.ResponseOp'(Rest, 0, 0, F@_1,
					      TrUserData);
	    1 ->
		'skip_64_Etcd.ResponseOp'(Rest, 0, 0, F@_1, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.ResponseOp'(Rest, 0, 0,
							F@_1, TrUserData);
	    3 ->
		'skip_group_Etcd.ResponseOp'(Rest, Key bsr 3, 0, F@_1,
					     TrUserData);
	    5 ->
		'skip_32_Etcd.ResponseOp'(Rest, 0, 0, F@_1, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.ResponseOp'(<<>>, 0, 0, F@_1,
				    _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{response => F@_1}
    end.

'd_field_Etcd.ResponseOp_response_range'(<<1:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.ResponseOp_response_range'(Rest, N + 7,
					     X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.ResponseOp_response_range'(<<0:1, X:7,
					   Rest/binary>>,
					 N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.RangeResponse'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.ResponseOp'(RestF, 0, 0,
					 case Prev of
					   '$undef' ->
					       id({response_range, NewFValue},
						  TrUserData);
					   {response_range, MVPrev} ->
					       id({response_range,
						   'merge_msg_Etcd.RangeResponse'(MVPrev,
										  NewFValue,
										  TrUserData)},
						  TrUserData);
					   _ ->
					       id({response_range, NewFValue},
						  TrUserData)
					 end,
					 TrUserData).

'd_field_Etcd.ResponseOp_response_put'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.ResponseOp_response_put'(Rest, N + 7,
					   X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.ResponseOp_response_put'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.PutResponse'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.ResponseOp'(RestF, 0, 0,
					 case Prev of
					   '$undef' ->
					       id({response_put, NewFValue},
						  TrUserData);
					   {response_put, MVPrev} ->
					       id({response_put,
						   'merge_msg_Etcd.PutResponse'(MVPrev,
										NewFValue,
										TrUserData)},
						  TrUserData);
					   _ ->
					       id({response_put, NewFValue},
						  TrUserData)
					 end,
					 TrUserData).

'd_field_Etcd.ResponseOp_response_delete_range'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.ResponseOp_response_delete_range'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    TrUserData);
'd_field_Etcd.ResponseOp_response_delete_range'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.DeleteRangeResponse'(Bs,
								     TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.ResponseOp'(RestF, 0, 0,
					 case Prev of
					   '$undef' ->
					       id({response_delete_range,
						   NewFValue},
						  TrUserData);
					   {response_delete_range, MVPrev} ->
					       id({response_delete_range,
						   'merge_msg_Etcd.DeleteRangeResponse'(MVPrev,
											NewFValue,
											TrUserData)},
						  TrUserData);
					   _ ->
					       id({response_delete_range,
						   NewFValue},
						  TrUserData)
					 end,
					 TrUserData).

'd_field_Etcd.ResponseOp_response_txn'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.ResponseOp_response_txn'(Rest, N + 7,
					   X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.ResponseOp_response_txn'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.TxnResponse'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.ResponseOp'(RestF, 0, 0,
					 case Prev of
					   '$undef' ->
					       id({response_txn, NewFValue},
						  TrUserData);
					   {response_txn, MVPrev} ->
					       id({response_txn,
						   'merge_msg_Etcd.TxnResponse'(MVPrev,
										NewFValue,
										TrUserData)},
						  TrUserData);
					   _ ->
					       id({response_txn, NewFValue},
						  TrUserData)
					 end,
					 TrUserData).

'skip_varint_Etcd.ResponseOp'(<<1:1, _:7, Rest/binary>>,
			      Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.ResponseOp'(Rest, Z1, Z2, F@_1,
				  TrUserData);
'skip_varint_Etcd.ResponseOp'(<<0:1, _:7, Rest/binary>>,
			      Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.ResponseOp'(Rest, Z1, Z2, F@_1,
					 TrUserData).

'skip_length_delimited_Etcd.ResponseOp'(<<1:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.ResponseOp'(Rest, N + 7,
					    X bsl N + Acc, F@_1, TrUserData);
'skip_length_delimited_Etcd.ResponseOp'(<<0:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.ResponseOp'(Rest2, 0, 0, F@_1,
					 TrUserData).

'skip_group_Etcd.ResponseOp'(Bin, FNum, Z2, F@_1,
			     TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.ResponseOp'(Rest, 0, Z2, F@_1,
					 TrUserData).

'skip_32_Etcd.ResponseOp'(<<_:32, Rest/binary>>, Z1, Z2,
			  F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.ResponseOp'(Rest, Z1, Z2, F@_1,
					 TrUserData).

'skip_64_Etcd.ResponseOp'(<<_:64, Rest/binary>>, Z1, Z2,
			  F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.ResponseOp'(Rest, Z1, Z2, F@_1,
					 TrUserData).

'decode_msg_Etcd.Compare'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.Compare'(Bin, 0, 0,
				      id('EQUAL', TrUserData),
				      id('VERSION', TrUserData),
				      id(<<>>, TrUserData),
				      id('$undef', TrUserData),
				      id(<<>>, TrUserData), TrUserData).

'dfp_read_field_def_Etcd.Compare'(<<8, Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				  TrUserData) ->
    'd_field_Etcd.Compare_result'(Rest, Z1, Z2, F@_1, F@_2,
				  F@_3, F@_4, F@_5, TrUserData);
'dfp_read_field_def_Etcd.Compare'(<<16, Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				  TrUserData) ->
    'd_field_Etcd.Compare_target'(Rest, Z1, Z2, F@_1, F@_2,
				  F@_3, F@_4, F@_5, TrUserData);
'dfp_read_field_def_Etcd.Compare'(<<26, Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				  TrUserData) ->
    'd_field_Etcd.Compare_key'(Rest, Z1, Z2, F@_1, F@_2,
			       F@_3, F@_4, F@_5, TrUserData);
'dfp_read_field_def_Etcd.Compare'(<<32, Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				  TrUserData) ->
    'd_field_Etcd.Compare_version'(Rest, Z1, Z2, F@_1, F@_2,
				   F@_3, F@_4, F@_5, TrUserData);
'dfp_read_field_def_Etcd.Compare'(<<40, Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				  TrUserData) ->
    'd_field_Etcd.Compare_create_revision'(Rest, Z1, Z2,
					   F@_1, F@_2, F@_3, F@_4, F@_5,
					   TrUserData);
'dfp_read_field_def_Etcd.Compare'(<<48, Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				  TrUserData) ->
    'd_field_Etcd.Compare_mod_revision'(Rest, Z1, Z2, F@_1,
					F@_2, F@_3, F@_4, F@_5, TrUserData);
'dfp_read_field_def_Etcd.Compare'(<<58, Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				  TrUserData) ->
    'd_field_Etcd.Compare_value'(Rest, Z1, Z2, F@_1, F@_2,
				 F@_3, F@_4, F@_5, TrUserData);
'dfp_read_field_def_Etcd.Compare'(<<64, Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				  TrUserData) ->
    'd_field_Etcd.Compare_lease'(Rest, Z1, Z2, F@_1, F@_2,
				 F@_3, F@_4, F@_5, TrUserData);
'dfp_read_field_def_Etcd.Compare'(<<130, 4,
				    Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				  TrUserData) ->
    'd_field_Etcd.Compare_range_end'(Rest, Z1, Z2, F@_1,
				     F@_2, F@_3, F@_4, F@_5, TrUserData);
'dfp_read_field_def_Etcd.Compare'(<<>>, 0, 0, F@_1,
				  F@_2, F@_3, F@_4, F@_5, _) ->
    S1 = #{result => F@_1, target => F@_2, key => F@_3,
	   range_end => F@_5},
    if F@_4 == '$undef' -> S1;
       true -> S1#{target_union => F@_4}
    end;
'dfp_read_field_def_Etcd.Compare'(Other, Z1, Z2, F@_1,
				  F@_2, F@_3, F@_4, F@_5, TrUserData) ->
    'dg_read_field_def_Etcd.Compare'(Other, Z1, Z2, F@_1,
				     F@_2, F@_3, F@_4, F@_5, TrUserData).

'dg_read_field_def_Etcd.Compare'(<<1:1, X:7,
				   Rest/binary>>,
				 N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				 TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.Compare'(Rest, N + 7,
				     X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
				     F@_5, TrUserData);
'dg_read_field_def_Etcd.Compare'(<<0:1, X:7,
				   Rest/binary>>,
				 N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				 TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_Etcd.Compare_result'(Rest, 0, 0, F@_1, F@_2,
					F@_3, F@_4, F@_5, TrUserData);
      16 ->
	  'd_field_Etcd.Compare_target'(Rest, 0, 0, F@_1, F@_2,
					F@_3, F@_4, F@_5, TrUserData);
      26 ->
	  'd_field_Etcd.Compare_key'(Rest, 0, 0, F@_1, F@_2, F@_3,
				     F@_4, F@_5, TrUserData);
      32 ->
	  'd_field_Etcd.Compare_version'(Rest, 0, 0, F@_1, F@_2,
					 F@_3, F@_4, F@_5, TrUserData);
      40 ->
	  'd_field_Etcd.Compare_create_revision'(Rest, 0, 0, F@_1,
						 F@_2, F@_3, F@_4, F@_5,
						 TrUserData);
      48 ->
	  'd_field_Etcd.Compare_mod_revision'(Rest, 0, 0, F@_1,
					      F@_2, F@_3, F@_4, F@_5,
					      TrUserData);
      58 ->
	  'd_field_Etcd.Compare_value'(Rest, 0, 0, F@_1, F@_2,
				       F@_3, F@_4, F@_5, TrUserData);
      64 ->
	  'd_field_Etcd.Compare_lease'(Rest, 0, 0, F@_1, F@_2,
				       F@_3, F@_4, F@_5, TrUserData);
      514 ->
	  'd_field_Etcd.Compare_range_end'(Rest, 0, 0, F@_1, F@_2,
					   F@_3, F@_4, F@_5, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.Compare'(Rest, 0, 0, F@_1, F@_2, F@_3,
					   F@_4, F@_5, TrUserData);
	    1 ->
		'skip_64_Etcd.Compare'(Rest, 0, 0, F@_1, F@_2, F@_3,
				       F@_4, F@_5, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.Compare'(Rest, 0, 0, F@_1,
						     F@_2, F@_3, F@_4, F@_5,
						     TrUserData);
	    3 ->
		'skip_group_Etcd.Compare'(Rest, Key bsr 3, 0, F@_1,
					  F@_2, F@_3, F@_4, F@_5, TrUserData);
	    5 ->
		'skip_32_Etcd.Compare'(Rest, 0, 0, F@_1, F@_2, F@_3,
				       F@_4, F@_5, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.Compare'(<<>>, 0, 0, F@_1, F@_2,
				 F@_3, F@_4, F@_5, _) ->
    S1 = #{result => F@_1, target => F@_2, key => F@_3,
	   range_end => F@_5},
    if F@_4 == '$undef' -> S1;
       true -> S1#{target_union => F@_4}
    end.

'd_field_Etcd.Compare_result'(<<1:1, X:7, Rest/binary>>,
			      N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData)
    when N < 57 ->
    'd_field_Etcd.Compare_result'(Rest, N + 7,
				  X bsl N + Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				  TrUserData);
'd_field_Etcd.Compare_result'(<<0:1, X:7, Rest/binary>>,
			      N, Acc, _, F@_2, F@_3, F@_4, F@_5, TrUserData) ->
    {NewFValue, RestF} =
	{id('d_enum_Etcd.Compare.CompareResult'(begin
						  <<Res:32/signed-native>> =
						      <<(X bsl N +
							   Acc):32/unsigned-native>>,
						  id(Res, TrUserData)
						end),
	    TrUserData),
	 Rest},
    'dfp_read_field_def_Etcd.Compare'(RestF, 0, 0,
				      NewFValue, F@_2, F@_3, F@_4, F@_5,
				      TrUserData).

'd_field_Etcd.Compare_target'(<<1:1, X:7, Rest/binary>>,
			      N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData)
    when N < 57 ->
    'd_field_Etcd.Compare_target'(Rest, N + 7,
				  X bsl N + Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				  TrUserData);
'd_field_Etcd.Compare_target'(<<0:1, X:7, Rest/binary>>,
			      N, Acc, F@_1, _, F@_3, F@_4, F@_5, TrUserData) ->
    {NewFValue, RestF} =
	{id('d_enum_Etcd.Compare.CompareTarget'(begin
						  <<Res:32/signed-native>> =
						      <<(X bsl N +
							   Acc):32/unsigned-native>>,
						  id(Res, TrUserData)
						end),
	    TrUserData),
	 Rest},
    'dfp_read_field_def_Etcd.Compare'(RestF, 0, 0, F@_1,
				      NewFValue, F@_3, F@_4, F@_5, TrUserData).

'd_field_Etcd.Compare_key'(<<1:1, X:7, Rest/binary>>, N,
			   Acc, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData)
    when N < 57 ->
    'd_field_Etcd.Compare_key'(Rest, N + 7, X bsl N + Acc,
			       F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData);
'd_field_Etcd.Compare_key'(<<0:1, X:7, Rest/binary>>, N,
			   Acc, F@_1, F@_2, _, F@_4, F@_5, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.Compare'(RestF, 0, 0, F@_1,
				      F@_2, NewFValue, F@_4, F@_5, TrUserData).

'd_field_Etcd.Compare_version'(<<1:1, X:7,
				 Rest/binary>>,
			       N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData)
    when N < 57 ->
    'd_field_Etcd.Compare_version'(Rest, N + 7,
				   X bsl N + Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				   TrUserData);
'd_field_Etcd.Compare_version'(<<0:1, X:7,
				 Rest/binary>>,
			       N, Acc, F@_1, F@_2, F@_3, _, F@_5, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.Compare'(RestF, 0, 0, F@_1,
				      F@_2, F@_3,
				      id({version, NewFValue}, TrUserData),
				      F@_5, TrUserData).

'd_field_Etcd.Compare_create_revision'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				       TrUserData)
    when N < 57 ->
    'd_field_Etcd.Compare_create_revision'(Rest, N + 7,
					   X bsl N + Acc, F@_1, F@_2, F@_3,
					   F@_4, F@_5, TrUserData);
'd_field_Etcd.Compare_create_revision'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, F@_2, F@_3, _, F@_5,
				       TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.Compare'(RestF, 0, 0, F@_1,
				      F@_2, F@_3,
				      id({create_revision, NewFValue},
					 TrUserData),
				      F@_5, TrUserData).

'd_field_Etcd.Compare_mod_revision'(<<1:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				    TrUserData)
    when N < 57 ->
    'd_field_Etcd.Compare_mod_revision'(Rest, N + 7,
					X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
					F@_5, TrUserData);
'd_field_Etcd.Compare_mod_revision'(<<0:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, F@_2, F@_3, _, F@_5,
				    TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.Compare'(RestF, 0, 0, F@_1,
				      F@_2, F@_3,
				      id({mod_revision, NewFValue}, TrUserData),
				      F@_5, TrUserData).

'd_field_Etcd.Compare_value'(<<1:1, X:7, Rest/binary>>,
			     N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData)
    when N < 57 ->
    'd_field_Etcd.Compare_value'(Rest, N + 7, X bsl N + Acc,
				 F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData);
'd_field_Etcd.Compare_value'(<<0:1, X:7, Rest/binary>>,
			     N, Acc, F@_1, F@_2, F@_3, _, F@_5, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.Compare'(RestF, 0, 0, F@_1,
				      F@_2, F@_3,
				      id({value, NewFValue}, TrUserData), F@_5,
				      TrUserData).

'd_field_Etcd.Compare_lease'(<<1:1, X:7, Rest/binary>>,
			     N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData)
    when N < 57 ->
    'd_field_Etcd.Compare_lease'(Rest, N + 7, X bsl N + Acc,
				 F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData);
'd_field_Etcd.Compare_lease'(<<0:1, X:7, Rest/binary>>,
			     N, Acc, F@_1, F@_2, F@_3, _, F@_5, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.Compare'(RestF, 0, 0, F@_1,
				      F@_2, F@_3,
				      id({lease, NewFValue}, TrUserData), F@_5,
				      TrUserData).

'd_field_Etcd.Compare_range_end'(<<1:1, X:7,
				   Rest/binary>>,
				 N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				 TrUserData)
    when N < 57 ->
    'd_field_Etcd.Compare_range_end'(Rest, N + 7,
				     X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
				     F@_5, TrUserData);
'd_field_Etcd.Compare_range_end'(<<0:1, X:7,
				   Rest/binary>>,
				 N, Acc, F@_1, F@_2, F@_3, F@_4, _,
				 TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.Compare'(RestF, 0, 0, F@_1,
				      F@_2, F@_3, F@_4, NewFValue, TrUserData).

'skip_varint_Etcd.Compare'(<<1:1, _:7, Rest/binary>>,
			   Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) ->
    'skip_varint_Etcd.Compare'(Rest, Z1, Z2, F@_1, F@_2,
			       F@_3, F@_4, F@_5, TrUserData);
'skip_varint_Etcd.Compare'(<<0:1, _:7, Rest/binary>>,
			   Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) ->
    'dfp_read_field_def_Etcd.Compare'(Rest, Z1, Z2, F@_1,
				      F@_2, F@_3, F@_4, F@_5, TrUserData).

'skip_length_delimited_Etcd.Compare'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				     TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.Compare'(Rest, N + 7,
					 X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
					 F@_5, TrUserData);
'skip_length_delimited_Etcd.Compare'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				     TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.Compare'(Rest2, 0, 0, F@_1,
				      F@_2, F@_3, F@_4, F@_5, TrUserData).

'skip_group_Etcd.Compare'(Bin, FNum, Z2, F@_1, F@_2,
			  F@_3, F@_4, F@_5, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.Compare'(Rest, 0, Z2, F@_1,
				      F@_2, F@_3, F@_4, F@_5, TrUserData).

'skip_32_Etcd.Compare'(<<_:32, Rest/binary>>, Z1, Z2,
		       F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) ->
    'dfp_read_field_def_Etcd.Compare'(Rest, Z1, Z2, F@_1,
				      F@_2, F@_3, F@_4, F@_5, TrUserData).

'skip_64_Etcd.Compare'(<<_:64, Rest/binary>>, Z1, Z2,
		       F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) ->
    'dfp_read_field_def_Etcd.Compare'(Rest, Z1, Z2, F@_1,
				      F@_2, F@_3, F@_4, F@_5, TrUserData).

'decode_msg_Etcd.TxnRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.TxnRequest'(Bin, 0, 0,
					 id([], TrUserData), id([], TrUserData),
					 id([], TrUserData), TrUserData).

'dfp_read_field_def_Etcd.TxnRequest'(<<10,
				       Rest/binary>>,
				     Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'd_field_Etcd.TxnRequest_compare'(Rest, Z1, Z2, F@_1,
				      F@_2, F@_3, TrUserData);
'dfp_read_field_def_Etcd.TxnRequest'(<<18,
				       Rest/binary>>,
				     Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'd_field_Etcd.TxnRequest_success'(Rest, Z1, Z2, F@_1,
				      F@_2, F@_3, TrUserData);
'dfp_read_field_def_Etcd.TxnRequest'(<<26,
				       Rest/binary>>,
				     Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'd_field_Etcd.TxnRequest_failure'(Rest, Z1, Z2, F@_1,
				      F@_2, F@_3, TrUserData);
'dfp_read_field_def_Etcd.TxnRequest'(<<>>, 0, 0, R1, R2,
				     R3, TrUserData) ->
    S1 = #{},
    S2 = if R1 == '$undef' -> S1;
	    true -> S1#{compare => lists_reverse(R1, TrUserData)}
	 end,
    S3 = if R2 == '$undef' -> S2;
	    true -> S2#{success => lists_reverse(R2, TrUserData)}
	 end,
    if R3 == '$undef' -> S3;
       true -> S3#{failure => lists_reverse(R3, TrUserData)}
    end;
'dfp_read_field_def_Etcd.TxnRequest'(Other, Z1, Z2,
				     F@_1, F@_2, F@_3, TrUserData) ->
    'dg_read_field_def_Etcd.TxnRequest'(Other, Z1, Z2, F@_1,
					F@_2, F@_3, TrUserData).

'dg_read_field_def_Etcd.TxnRequest'(<<1:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.TxnRequest'(Rest, N + 7,
					X bsl N + Acc, F@_1, F@_2, F@_3,
					TrUserData);
'dg_read_field_def_Etcd.TxnRequest'(<<0:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, F@_2, F@_3, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.TxnRequest_compare'(Rest, 0, 0, F@_1,
					    F@_2, F@_3, TrUserData);
      18 ->
	  'd_field_Etcd.TxnRequest_success'(Rest, 0, 0, F@_1,
					    F@_2, F@_3, TrUserData);
      26 ->
	  'd_field_Etcd.TxnRequest_failure'(Rest, 0, 0, F@_1,
					    F@_2, F@_3, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.TxnRequest'(Rest, 0, 0, F@_1, F@_2,
					      F@_3, TrUserData);
	    1 ->
		'skip_64_Etcd.TxnRequest'(Rest, 0, 0, F@_1, F@_2, F@_3,
					  TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.TxnRequest'(Rest, 0, 0,
							F@_1, F@_2, F@_3,
							TrUserData);
	    3 ->
		'skip_group_Etcd.TxnRequest'(Rest, Key bsr 3, 0, F@_1,
					     F@_2, F@_3, TrUserData);
	    5 ->
		'skip_32_Etcd.TxnRequest'(Rest, 0, 0, F@_1, F@_2, F@_3,
					  TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.TxnRequest'(<<>>, 0, 0, R1, R2,
				    R3, TrUserData) ->
    S1 = #{},
    S2 = if R1 == '$undef' -> S1;
	    true -> S1#{compare => lists_reverse(R1, TrUserData)}
	 end,
    S3 = if R2 == '$undef' -> S2;
	    true -> S2#{success => lists_reverse(R2, TrUserData)}
	 end,
    if R3 == '$undef' -> S3;
       true -> S3#{failure => lists_reverse(R3, TrUserData)}
    end.

'd_field_Etcd.TxnRequest_compare'(<<1:1, X:7,
				    Rest/binary>>,
				  N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_Etcd.TxnRequest_compare'(Rest, N + 7,
				      X bsl N + Acc, F@_1, F@_2, F@_3,
				      TrUserData);
'd_field_Etcd.TxnRequest_compare'(<<0:1, X:7,
				    Rest/binary>>,
				  N, Acc, Prev, F@_2, F@_3, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.Compare'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.TxnRequest'(RestF, 0, 0,
					 cons(NewFValue, Prev, TrUserData),
					 F@_2, F@_3, TrUserData).

'd_field_Etcd.TxnRequest_success'(<<1:1, X:7,
				    Rest/binary>>,
				  N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_Etcd.TxnRequest_success'(Rest, N + 7,
				      X bsl N + Acc, F@_1, F@_2, F@_3,
				      TrUserData);
'd_field_Etcd.TxnRequest_success'(<<0:1, X:7,
				    Rest/binary>>,
				  N, Acc, F@_1, Prev, F@_3, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.RequestOp'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.TxnRequest'(RestF, 0, 0, F@_1,
					 cons(NewFValue, Prev, TrUserData),
					 F@_3, TrUserData).

'd_field_Etcd.TxnRequest_failure'(<<1:1, X:7,
				    Rest/binary>>,
				  N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_Etcd.TxnRequest_failure'(Rest, N + 7,
				      X bsl N + Acc, F@_1, F@_2, F@_3,
				      TrUserData);
'd_field_Etcd.TxnRequest_failure'(<<0:1, X:7,
				    Rest/binary>>,
				  N, Acc, F@_1, F@_2, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.RequestOp'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.TxnRequest'(RestF, 0, 0, F@_1,
					 F@_2,
					 cons(NewFValue, Prev, TrUserData),
					 TrUserData).

'skip_varint_Etcd.TxnRequest'(<<1:1, _:7, Rest/binary>>,
			      Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'skip_varint_Etcd.TxnRequest'(Rest, Z1, Z2, F@_1, F@_2,
				  F@_3, TrUserData);
'skip_varint_Etcd.TxnRequest'(<<0:1, _:7, Rest/binary>>,
			      Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.TxnRequest'(Rest, Z1, Z2, F@_1,
					 F@_2, F@_3, TrUserData).

'skip_length_delimited_Etcd.TxnRequest'(<<1:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.TxnRequest'(Rest, N + 7,
					    X bsl N + Acc, F@_1, F@_2, F@_3,
					    TrUserData);
'skip_length_delimited_Etcd.TxnRequest'(<<0:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, F@_2, F@_3, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.TxnRequest'(Rest2, 0, 0, F@_1,
					 F@_2, F@_3, TrUserData).

'skip_group_Etcd.TxnRequest'(Bin, FNum, Z2, F@_1, F@_2,
			     F@_3, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.TxnRequest'(Rest, 0, Z2, F@_1,
					 F@_2, F@_3, TrUserData).

'skip_32_Etcd.TxnRequest'(<<_:32, Rest/binary>>, Z1, Z2,
			  F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.TxnRequest'(Rest, Z1, Z2, F@_1,
					 F@_2, F@_3, TrUserData).

'skip_64_Etcd.TxnRequest'(<<_:64, Rest/binary>>, Z1, Z2,
			  F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.TxnRequest'(Rest, Z1, Z2, F@_1,
					 F@_2, F@_3, TrUserData).

'decode_msg_Etcd.TxnResponse'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.TxnResponse'(Bin, 0, 0,
					  id('$undef', TrUserData),
					  id(false, TrUserData),
					  id([], TrUserData), TrUserData).

'dfp_read_field_def_Etcd.TxnResponse'(<<10,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'd_field_Etcd.TxnResponse_header'(Rest, Z1, Z2, F@_1,
				      F@_2, F@_3, TrUserData);
'dfp_read_field_def_Etcd.TxnResponse'(<<16,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'd_field_Etcd.TxnResponse_succeeded'(Rest, Z1, Z2, F@_1,
					 F@_2, F@_3, TrUserData);
'dfp_read_field_def_Etcd.TxnResponse'(<<26,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'd_field_Etcd.TxnResponse_responses'(Rest, Z1, Z2, F@_1,
					 F@_2, F@_3, TrUserData);
'dfp_read_field_def_Etcd.TxnResponse'(<<>>, 0, 0, F@_1,
				      F@_2, R1, TrUserData) ->
    S1 = #{succeeded => F@_2},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true -> S2#{responses => lists_reverse(R1, TrUserData)}
    end;
'dfp_read_field_def_Etcd.TxnResponse'(Other, Z1, Z2,
				      F@_1, F@_2, F@_3, TrUserData) ->
    'dg_read_field_def_Etcd.TxnResponse'(Other, Z1, Z2,
					 F@_1, F@_2, F@_3, TrUserData).

'dg_read_field_def_Etcd.TxnResponse'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.TxnResponse'(Rest, N + 7,
					 X bsl N + Acc, F@_1, F@_2, F@_3,
					 TrUserData);
'dg_read_field_def_Etcd.TxnResponse'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, F@_3, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.TxnResponse_header'(Rest, 0, 0, F@_1,
					    F@_2, F@_3, TrUserData);
      16 ->
	  'd_field_Etcd.TxnResponse_succeeded'(Rest, 0, 0, F@_1,
					       F@_2, F@_3, TrUserData);
      26 ->
	  'd_field_Etcd.TxnResponse_responses'(Rest, 0, 0, F@_1,
					       F@_2, F@_3, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.TxnResponse'(Rest, 0, 0, F@_1, F@_2,
					       F@_3, TrUserData);
	    1 ->
		'skip_64_Etcd.TxnResponse'(Rest, 0, 0, F@_1, F@_2, F@_3,
					   TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.TxnResponse'(Rest, 0, 0,
							 F@_1, F@_2, F@_3,
							 TrUserData);
	    3 ->
		'skip_group_Etcd.TxnResponse'(Rest, Key bsr 3, 0, F@_1,
					      F@_2, F@_3, TrUserData);
	    5 ->
		'skip_32_Etcd.TxnResponse'(Rest, 0, 0, F@_1, F@_2, F@_3,
					   TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.TxnResponse'(<<>>, 0, 0, F@_1,
				     F@_2, R1, TrUserData) ->
    S1 = #{succeeded => F@_2},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true -> S2#{responses => lists_reverse(R1, TrUserData)}
    end.

'd_field_Etcd.TxnResponse_header'(<<1:1, X:7,
				    Rest/binary>>,
				  N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_Etcd.TxnResponse_header'(Rest, N + 7,
				      X bsl N + Acc, F@_1, F@_2, F@_3,
				      TrUserData);
'd_field_Etcd.TxnResponse_header'(<<0:1, X:7,
				    Rest/binary>>,
				  N, Acc, Prev, F@_2, F@_3, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.TxnResponse'(RestF, 0, 0,
					  if Prev == '$undef' -> NewFValue;
					     true ->
						 'merge_msg_Etcd.ResponseHeader'(Prev,
										 NewFValue,
										 TrUserData)
					  end,
					  F@_2, F@_3, TrUserData).

'd_field_Etcd.TxnResponse_succeeded'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_Etcd.TxnResponse_succeeded'(Rest, N + 7,
					 X bsl N + Acc, F@_1, F@_2, F@_3,
					 TrUserData);
'd_field_Etcd.TxnResponse_succeeded'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, _, F@_3, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.TxnResponse'(RestF, 0, 0, F@_1,
					  NewFValue, F@_3, TrUserData).

'd_field_Etcd.TxnResponse_responses'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_Etcd.TxnResponse_responses'(Rest, N + 7,
					 X bsl N + Acc, F@_1, F@_2, F@_3,
					 TrUserData);
'd_field_Etcd.TxnResponse_responses'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseOp'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.TxnResponse'(RestF, 0, 0, F@_1,
					  F@_2,
					  cons(NewFValue, Prev, TrUserData),
					  TrUserData).

'skip_varint_Etcd.TxnResponse'(<<1:1, _:7,
				 Rest/binary>>,
			       Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'skip_varint_Etcd.TxnResponse'(Rest, Z1, Z2, F@_1, F@_2,
				   F@_3, TrUserData);
'skip_varint_Etcd.TxnResponse'(<<0:1, _:7,
				 Rest/binary>>,
			       Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.TxnResponse'(Rest, Z1, Z2,
					  F@_1, F@_2, F@_3, TrUserData).

'skip_length_delimited_Etcd.TxnResponse'(<<1:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.TxnResponse'(Rest, N + 7,
					     X bsl N + Acc, F@_1, F@_2, F@_3,
					     TrUserData);
'skip_length_delimited_Etcd.TxnResponse'(<<0:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, F@_2, F@_3,
					 TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.TxnResponse'(Rest2, 0, 0, F@_1,
					  F@_2, F@_3, TrUserData).

'skip_group_Etcd.TxnResponse'(Bin, FNum, Z2, F@_1, F@_2,
			      F@_3, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.TxnResponse'(Rest, 0, Z2, F@_1,
					  F@_2, F@_3, TrUserData).

'skip_32_Etcd.TxnResponse'(<<_:32, Rest/binary>>, Z1,
			   Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.TxnResponse'(Rest, Z1, Z2,
					  F@_1, F@_2, F@_3, TrUserData).

'skip_64_Etcd.TxnResponse'(<<_:64, Rest/binary>>, Z1,
			   Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.TxnResponse'(Rest, Z1, Z2,
					  F@_1, F@_2, F@_3, TrUserData).

'decode_msg_Etcd.CompactionRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.CompactionRequest'(Bin, 0, 0,
						id(0, TrUserData),
						id(false, TrUserData),
						TrUserData).

'dfp_read_field_def_Etcd.CompactionRequest'(<<8,
					      Rest/binary>>,
					    Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.CompactionRequest_revision'(Rest, Z1, Z2,
					      F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.CompactionRequest'(<<16,
					      Rest/binary>>,
					    Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.CompactionRequest_physical'(Rest, Z1, Z2,
					      F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.CompactionRequest'(<<>>, 0, 0,
					    F@_1, F@_2, _) ->
    #{revision => F@_1, physical => F@_2};
'dfp_read_field_def_Etcd.CompactionRequest'(Other, Z1,
					    Z2, F@_1, F@_2, TrUserData) ->
    'dg_read_field_def_Etcd.CompactionRequest'(Other, Z1,
					       Z2, F@_1, F@_2, TrUserData).

'dg_read_field_def_Etcd.CompactionRequest'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.CompactionRequest'(Rest, N + 7,
					       X bsl N + Acc, F@_1, F@_2,
					       TrUserData);
'dg_read_field_def_Etcd.CompactionRequest'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_Etcd.CompactionRequest_revision'(Rest, 0, 0,
						    F@_1, F@_2, TrUserData);
      16 ->
	  'd_field_Etcd.CompactionRequest_physical'(Rest, 0, 0,
						    F@_1, F@_2, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.CompactionRequest'(Rest, 0, 0, F@_1,
						     F@_2, TrUserData);
	    1 ->
		'skip_64_Etcd.CompactionRequest'(Rest, 0, 0, F@_1, F@_2,
						 TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.CompactionRequest'(Rest, 0,
							       0, F@_1, F@_2,
							       TrUserData);
	    3 ->
		'skip_group_Etcd.CompactionRequest'(Rest, Key bsr 3, 0,
						    F@_1, F@_2, TrUserData);
	    5 ->
		'skip_32_Etcd.CompactionRequest'(Rest, 0, 0, F@_1, F@_2,
						 TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.CompactionRequest'(<<>>, 0, 0,
					   F@_1, F@_2, _) ->
    #{revision => F@_1, physical => F@_2}.

'd_field_Etcd.CompactionRequest_revision'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.CompactionRequest_revision'(Rest, N + 7,
					      X bsl N + Acc, F@_1, F@_2,
					      TrUserData);
'd_field_Etcd.CompactionRequest_revision'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, _, F@_2, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.CompactionRequest'(RestF, 0, 0,
						NewFValue, F@_2, TrUserData).

'd_field_Etcd.CompactionRequest_physical'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.CompactionRequest_physical'(Rest, N + 7,
					      X bsl N + Acc, F@_1, F@_2,
					      TrUserData);
'd_field_Etcd.CompactionRequest_physical'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, _, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.CompactionRequest'(RestF, 0, 0,
						F@_1, NewFValue, TrUserData).

'skip_varint_Etcd.CompactionRequest'(<<1:1, _:7,
				       Rest/binary>>,
				     Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_Etcd.CompactionRequest'(Rest, Z1, Z2, F@_1,
					 F@_2, TrUserData);
'skip_varint_Etcd.CompactionRequest'(<<0:1, _:7,
				       Rest/binary>>,
				     Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.CompactionRequest'(Rest, Z1,
						Z2, F@_1, F@_2, TrUserData).

'skip_length_delimited_Etcd.CompactionRequest'(<<1:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.CompactionRequest'(Rest,
						   N + 7, X bsl N + Acc, F@_1,
						   F@_2, TrUserData);
'skip_length_delimited_Etcd.CompactionRequest'(<<0:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2,
					       TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.CompactionRequest'(Rest2, 0, 0,
						F@_1, F@_2, TrUserData).

'skip_group_Etcd.CompactionRequest'(Bin, FNum, Z2, F@_1,
				    F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.CompactionRequest'(Rest, 0, Z2,
						F@_1, F@_2, TrUserData).

'skip_32_Etcd.CompactionRequest'(<<_:32, Rest/binary>>,
				 Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.CompactionRequest'(Rest, Z1,
						Z2, F@_1, F@_2, TrUserData).

'skip_64_Etcd.CompactionRequest'(<<_:64, Rest/binary>>,
				 Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.CompactionRequest'(Rest, Z1,
						Z2, F@_1, F@_2, TrUserData).

'decode_msg_Etcd.CompactionResponse'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.CompactionResponse'(Bin, 0, 0,
						 id('$undef', TrUserData),
						 TrUserData).

'dfp_read_field_def_Etcd.CompactionResponse'(<<10,
					       Rest/binary>>,
					     Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.CompactionResponse_header'(Rest, Z1, Z2,
					     F@_1, TrUserData);
'dfp_read_field_def_Etcd.CompactionResponse'(<<>>, 0, 0,
					     F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.CompactionResponse'(Other, Z1,
					     Z2, F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.CompactionResponse'(Other, Z1,
						Z2, F@_1, TrUserData).

'dg_read_field_def_Etcd.CompactionResponse'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.CompactionResponse'(Rest, N + 7,
						X bsl N + Acc, F@_1,
						TrUserData);
'dg_read_field_def_Etcd.CompactionResponse'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.CompactionResponse_header'(Rest, 0, 0,
						   F@_1, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.CompactionResponse'(Rest, 0, 0, F@_1,
						      TrUserData);
	    1 ->
		'skip_64_Etcd.CompactionResponse'(Rest, 0, 0, F@_1,
						  TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.CompactionResponse'(Rest, 0,
								0, F@_1,
								TrUserData);
	    3 ->
		'skip_group_Etcd.CompactionResponse'(Rest, Key bsr 3, 0,
						     F@_1, TrUserData);
	    5 ->
		'skip_32_Etcd.CompactionResponse'(Rest, 0, 0, F@_1,
						  TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.CompactionResponse'(<<>>, 0, 0,
					    F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.CompactionResponse_header'(<<1:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.CompactionResponse_header'(Rest, N + 7,
					     X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.CompactionResponse_header'(<<0:1, X:7,
					   Rest/binary>>,
					 N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.CompactionResponse'(RestF, 0,
						 0,
						 if Prev == '$undef' ->
							NewFValue;
						    true ->
							'merge_msg_Etcd.ResponseHeader'(Prev,
											NewFValue,
											TrUserData)
						 end,
						 TrUserData).

'skip_varint_Etcd.CompactionResponse'(<<1:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.CompactionResponse'(Rest, Z1, Z2,
					  F@_1, TrUserData);
'skip_varint_Etcd.CompactionResponse'(<<0:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.CompactionResponse'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'skip_length_delimited_Etcd.CompactionResponse'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.CompactionResponse'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    TrUserData);
'skip_length_delimited_Etcd.CompactionResponse'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.CompactionResponse'(Rest2, 0,
						 0, F@_1, TrUserData).

'skip_group_Etcd.CompactionResponse'(Bin, FNum, Z2,
				     F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.CompactionResponse'(Rest, 0,
						 Z2, F@_1, TrUserData).

'skip_32_Etcd.CompactionResponse'(<<_:32, Rest/binary>>,
				  Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.CompactionResponse'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'skip_64_Etcd.CompactionResponse'(<<_:64, Rest/binary>>,
				  Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.CompactionResponse'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'decode_msg_Etcd.HashRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.HashRequest'(Bin, 0, 0,
					  TrUserData).

'dfp_read_field_def_Etcd.HashRequest'(<<>>, 0, 0, _) ->
    #{};
'dfp_read_field_def_Etcd.HashRequest'(Other, Z1, Z2,
				      TrUserData) ->
    'dg_read_field_def_Etcd.HashRequest'(Other, Z1, Z2,
					 TrUserData).

'dg_read_field_def_Etcd.HashRequest'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.HashRequest'(Rest, N + 7,
					 X bsl N + Acc, TrUserData);
'dg_read_field_def_Etcd.HashRequest'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, TrUserData) ->
    Key = X bsl N + Acc,
    case Key band 7 of
      0 ->
	  'skip_varint_Etcd.HashRequest'(Rest, 0, 0, TrUserData);
      1 -> 'skip_64_Etcd.HashRequest'(Rest, 0, 0, TrUserData);
      2 ->
	  'skip_length_delimited_Etcd.HashRequest'(Rest, 0, 0,
						   TrUserData);
      3 ->
	  'skip_group_Etcd.HashRequest'(Rest, Key bsr 3, 0,
					TrUserData);
      5 -> 'skip_32_Etcd.HashRequest'(Rest, 0, 0, TrUserData)
    end;
'dg_read_field_def_Etcd.HashRequest'(<<>>, 0, 0, _) ->
    #{}.

'skip_varint_Etcd.HashRequest'(<<1:1, _:7,
				 Rest/binary>>,
			       Z1, Z2, TrUserData) ->
    'skip_varint_Etcd.HashRequest'(Rest, Z1, Z2,
				   TrUserData);
'skip_varint_Etcd.HashRequest'(<<0:1, _:7,
				 Rest/binary>>,
			       Z1, Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.HashRequest'(Rest, Z1, Z2,
					  TrUserData).

'skip_length_delimited_Etcd.HashRequest'(<<1:1, X:7,
					   Rest/binary>>,
					 N, Acc, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.HashRequest'(Rest, N + 7,
					     X bsl N + Acc, TrUserData);
'skip_length_delimited_Etcd.HashRequest'(<<0:1, X:7,
					   Rest/binary>>,
					 N, Acc, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.HashRequest'(Rest2, 0, 0,
					  TrUserData).

'skip_group_Etcd.HashRequest'(Bin, FNum, Z2,
			      TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.HashRequest'(Rest, 0, Z2,
					  TrUserData).

'skip_32_Etcd.HashRequest'(<<_:32, Rest/binary>>, Z1,
			   Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.HashRequest'(Rest, Z1, Z2,
					  TrUserData).

'skip_64_Etcd.HashRequest'(<<_:64, Rest/binary>>, Z1,
			   Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.HashRequest'(Rest, Z1, Z2,
					  TrUserData).

'decode_msg_Etcd.HashKVRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.HashKVRequest'(Bin, 0, 0,
					    id(0, TrUserData), TrUserData).

'dfp_read_field_def_Etcd.HashKVRequest'(<<8,
					  Rest/binary>>,
					Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.HashKVRequest_revision'(Rest, Z1, Z2,
					  F@_1, TrUserData);
'dfp_read_field_def_Etcd.HashKVRequest'(<<>>, 0, 0,
					F@_1, _) ->
    #{revision => F@_1};
'dfp_read_field_def_Etcd.HashKVRequest'(Other, Z1, Z2,
					F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.HashKVRequest'(Other, Z1, Z2,
					   F@_1, TrUserData).

'dg_read_field_def_Etcd.HashKVRequest'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.HashKVRequest'(Rest, N + 7,
					   X bsl N + Acc, F@_1, TrUserData);
'dg_read_field_def_Etcd.HashKVRequest'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_Etcd.HashKVRequest_revision'(Rest, 0, 0, F@_1,
						TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.HashKVRequest'(Rest, 0, 0, F@_1,
						 TrUserData);
	    1 ->
		'skip_64_Etcd.HashKVRequest'(Rest, 0, 0, F@_1,
					     TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.HashKVRequest'(Rest, 0, 0,
							   F@_1, TrUserData);
	    3 ->
		'skip_group_Etcd.HashKVRequest'(Rest, Key bsr 3, 0,
						F@_1, TrUserData);
	    5 ->
		'skip_32_Etcd.HashKVRequest'(Rest, 0, 0, F@_1,
					     TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.HashKVRequest'(<<>>, 0, 0, F@_1,
				       _) ->
    #{revision => F@_1}.

'd_field_Etcd.HashKVRequest_revision'(<<1:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.HashKVRequest_revision'(Rest, N + 7,
					  X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.HashKVRequest_revision'(<<0:1, X:7,
					Rest/binary>>,
				      N, Acc, _, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.HashKVRequest'(RestF, 0, 0,
					    NewFValue, TrUserData).

'skip_varint_Etcd.HashKVRequest'(<<1:1, _:7,
				   Rest/binary>>,
				 Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.HashKVRequest'(Rest, Z1, Z2, F@_1,
				     TrUserData);
'skip_varint_Etcd.HashKVRequest'(<<0:1, _:7,
				   Rest/binary>>,
				 Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.HashKVRequest'(Rest, Z1, Z2,
					    F@_1, TrUserData).

'skip_length_delimited_Etcd.HashKVRequest'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.HashKVRequest'(Rest, N + 7,
					       X bsl N + Acc, F@_1, TrUserData);
'skip_length_delimited_Etcd.HashKVRequest'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.HashKVRequest'(Rest2, 0, 0,
					    F@_1, TrUserData).

'skip_group_Etcd.HashKVRequest'(Bin, FNum, Z2, F@_1,
				TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.HashKVRequest'(Rest, 0, Z2,
					    F@_1, TrUserData).

'skip_32_Etcd.HashKVRequest'(<<_:32, Rest/binary>>, Z1,
			     Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.HashKVRequest'(Rest, Z1, Z2,
					    F@_1, TrUserData).

'skip_64_Etcd.HashKVRequest'(<<_:64, Rest/binary>>, Z1,
			     Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.HashKVRequest'(Rest, Z1, Z2,
					    F@_1, TrUserData).

'decode_msg_Etcd.HashKVResponse'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.HashKVResponse'(Bin, 0, 0,
					     id('$undef', TrUserData),
					     id(0, TrUserData),
					     id(0, TrUserData), TrUserData).

'dfp_read_field_def_Etcd.HashKVResponse'(<<10,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, F@_3,
					 TrUserData) ->
    'd_field_Etcd.HashKVResponse_header'(Rest, Z1, Z2, F@_1,
					 F@_2, F@_3, TrUserData);
'dfp_read_field_def_Etcd.HashKVResponse'(<<16,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, F@_3,
					 TrUserData) ->
    'd_field_Etcd.HashKVResponse_hash'(Rest, Z1, Z2, F@_1,
				       F@_2, F@_3, TrUserData);
'dfp_read_field_def_Etcd.HashKVResponse'(<<24,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, F@_3,
					 TrUserData) ->
    'd_field_Etcd.HashKVResponse_compact_revision'(Rest, Z1,
						   Z2, F@_1, F@_2, F@_3,
						   TrUserData);
'dfp_read_field_def_Etcd.HashKVResponse'(<<>>, 0, 0,
					 F@_1, F@_2, F@_3, _) ->
    S1 = #{hash => F@_2, compact_revision => F@_3},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.HashKVResponse'(Other, Z1, Z2,
					 F@_1, F@_2, F@_3, TrUserData) ->
    'dg_read_field_def_Etcd.HashKVResponse'(Other, Z1, Z2,
					    F@_1, F@_2, F@_3, TrUserData).

'dg_read_field_def_Etcd.HashKVResponse'(<<1:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.HashKVResponse'(Rest, N + 7,
					    X bsl N + Acc, F@_1, F@_2, F@_3,
					    TrUserData);
'dg_read_field_def_Etcd.HashKVResponse'(<<0:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, F@_2, F@_3, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.HashKVResponse_header'(Rest, 0, 0, F@_1,
					       F@_2, F@_3, TrUserData);
      16 ->
	  'd_field_Etcd.HashKVResponse_hash'(Rest, 0, 0, F@_1,
					     F@_2, F@_3, TrUserData);
      24 ->
	  'd_field_Etcd.HashKVResponse_compact_revision'(Rest, 0,
							 0, F@_1, F@_2, F@_3,
							 TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.HashKVResponse'(Rest, 0, 0, F@_1,
						  F@_2, F@_3, TrUserData);
	    1 ->
		'skip_64_Etcd.HashKVResponse'(Rest, 0, 0, F@_1, F@_2,
					      F@_3, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.HashKVResponse'(Rest, 0, 0,
							    F@_1, F@_2, F@_3,
							    TrUserData);
	    3 ->
		'skip_group_Etcd.HashKVResponse'(Rest, Key bsr 3, 0,
						 F@_1, F@_2, F@_3, TrUserData);
	    5 ->
		'skip_32_Etcd.HashKVResponse'(Rest, 0, 0, F@_1, F@_2,
					      F@_3, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.HashKVResponse'(<<>>, 0, 0,
					F@_1, F@_2, F@_3, _) ->
    S1 = #{hash => F@_2, compact_revision => F@_3},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.HashKVResponse_header'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_Etcd.HashKVResponse_header'(Rest, N + 7,
					 X bsl N + Acc, F@_1, F@_2, F@_3,
					 TrUserData);
'd_field_Etcd.HashKVResponse_header'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, Prev, F@_2, F@_3, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.HashKVResponse'(RestF, 0, 0,
					     if Prev == '$undef' -> NewFValue;
						true ->
						    'merge_msg_Etcd.ResponseHeader'(Prev,
										    NewFValue,
										    TrUserData)
					     end,
					     F@_2, F@_3, TrUserData).

'd_field_Etcd.HashKVResponse_hash'(<<1:1, X:7,
				     Rest/binary>>,
				   N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_Etcd.HashKVResponse_hash'(Rest, N + 7,
				       X bsl N + Acc, F@_1, F@_2, F@_3,
				       TrUserData);
'd_field_Etcd.HashKVResponse_hash'(<<0:1, X:7,
				     Rest/binary>>,
				   N, Acc, F@_1, _, F@_3, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc, TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.HashKVResponse'(RestF, 0, 0,
					     F@_1, NewFValue, F@_3, TrUserData).

'd_field_Etcd.HashKVResponse_compact_revision'(<<1:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3,
					       TrUserData)
    when N < 57 ->
    'd_field_Etcd.HashKVResponse_compact_revision'(Rest,
						   N + 7, X bsl N + Acc, F@_1,
						   F@_2, F@_3, TrUserData);
'd_field_Etcd.HashKVResponse_compact_revision'(<<0:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, _,
					       TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.HashKVResponse'(RestF, 0, 0,
					     F@_1, F@_2, NewFValue, TrUserData).

'skip_varint_Etcd.HashKVResponse'(<<1:1, _:7,
				    Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'skip_varint_Etcd.HashKVResponse'(Rest, Z1, Z2, F@_1,
				      F@_2, F@_3, TrUserData);
'skip_varint_Etcd.HashKVResponse'(<<0:1, _:7,
				    Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.HashKVResponse'(Rest, Z1, Z2,
					     F@_1, F@_2, F@_3, TrUserData).

'skip_length_delimited_Etcd.HashKVResponse'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, F@_3,
					    TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.HashKVResponse'(Rest, N + 7,
						X bsl N + Acc, F@_1, F@_2, F@_3,
						TrUserData);
'skip_length_delimited_Etcd.HashKVResponse'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, F@_3,
					    TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.HashKVResponse'(Rest2, 0, 0,
					     F@_1, F@_2, F@_3, TrUserData).

'skip_group_Etcd.HashKVResponse'(Bin, FNum, Z2, F@_1,
				 F@_2, F@_3, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.HashKVResponse'(Rest, 0, Z2,
					     F@_1, F@_2, F@_3, TrUserData).

'skip_32_Etcd.HashKVResponse'(<<_:32, Rest/binary>>, Z1,
			      Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.HashKVResponse'(Rest, Z1, Z2,
					     F@_1, F@_2, F@_3, TrUserData).

'skip_64_Etcd.HashKVResponse'(<<_:64, Rest/binary>>, Z1,
			      Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.HashKVResponse'(Rest, Z1, Z2,
					     F@_1, F@_2, F@_3, TrUserData).

'decode_msg_Etcd.HashResponse'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.HashResponse'(Bin, 0, 0,
					   id('$undef', TrUserData),
					   id(0, TrUserData), TrUserData).

'dfp_read_field_def_Etcd.HashResponse'(<<10,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.HashResponse_header'(Rest, Z1, Z2, F@_1,
				       F@_2, TrUserData);
'dfp_read_field_def_Etcd.HashResponse'(<<16,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.HashResponse_hash'(Rest, Z1, Z2, F@_1,
				     F@_2, TrUserData);
'dfp_read_field_def_Etcd.HashResponse'(<<>>, 0, 0, F@_1,
				       F@_2, _) ->
    S1 = #{hash => F@_2},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.HashResponse'(Other, Z1, Z2,
				       F@_1, F@_2, TrUserData) ->
    'dg_read_field_def_Etcd.HashResponse'(Other, Z1, Z2,
					  F@_1, F@_2, TrUserData).

'dg_read_field_def_Etcd.HashResponse'(<<1:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, F@_2, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.HashResponse'(Rest, N + 7,
					  X bsl N + Acc, F@_1, F@_2,
					  TrUserData);
'dg_read_field_def_Etcd.HashResponse'(<<0:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, F@_2, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.HashResponse_header'(Rest, 0, 0, F@_1,
					     F@_2, TrUserData);
      16 ->
	  'd_field_Etcd.HashResponse_hash'(Rest, 0, 0, F@_1, F@_2,
					   TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.HashResponse'(Rest, 0, 0, F@_1, F@_2,
						TrUserData);
	    1 ->
		'skip_64_Etcd.HashResponse'(Rest, 0, 0, F@_1, F@_2,
					    TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.HashResponse'(Rest, 0, 0,
							  F@_1, F@_2,
							  TrUserData);
	    3 ->
		'skip_group_Etcd.HashResponse'(Rest, Key bsr 3, 0, F@_1,
					       F@_2, TrUserData);
	    5 ->
		'skip_32_Etcd.HashResponse'(Rest, 0, 0, F@_1, F@_2,
					    TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.HashResponse'(<<>>, 0, 0, F@_1,
				      F@_2, _) ->
    S1 = #{hash => F@_2},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.HashResponse_header'(<<1:1, X:7,
				     Rest/binary>>,
				   N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.HashResponse_header'(Rest, N + 7,
				       X bsl N + Acc, F@_1, F@_2, TrUserData);
'd_field_Etcd.HashResponse_header'(<<0:1, X:7,
				     Rest/binary>>,
				   N, Acc, Prev, F@_2, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.HashResponse'(RestF, 0, 0,
					   if Prev == '$undef' -> NewFValue;
					      true ->
						  'merge_msg_Etcd.ResponseHeader'(Prev,
										  NewFValue,
										  TrUserData)
					   end,
					   F@_2, TrUserData).

'd_field_Etcd.HashResponse_hash'(<<1:1, X:7,
				   Rest/binary>>,
				 N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.HashResponse_hash'(Rest, N + 7,
				     X bsl N + Acc, F@_1, F@_2, TrUserData);
'd_field_Etcd.HashResponse_hash'(<<0:1, X:7,
				   Rest/binary>>,
				 N, Acc, F@_1, _, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc, TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.HashResponse'(RestF, 0, 0,
					   F@_1, NewFValue, TrUserData).

'skip_varint_Etcd.HashResponse'(<<1:1, _:7,
				  Rest/binary>>,
				Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_Etcd.HashResponse'(Rest, Z1, Z2, F@_1,
				    F@_2, TrUserData);
'skip_varint_Etcd.HashResponse'(<<0:1, _:7,
				  Rest/binary>>,
				Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.HashResponse'(Rest, Z1, Z2,
					   F@_1, F@_2, TrUserData).

'skip_length_delimited_Etcd.HashResponse'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.HashResponse'(Rest, N + 7,
					      X bsl N + Acc, F@_1, F@_2,
					      TrUserData);
'skip_length_delimited_Etcd.HashResponse'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.HashResponse'(Rest2, 0, 0,
					   F@_1, F@_2, TrUserData).

'skip_group_Etcd.HashResponse'(Bin, FNum, Z2, F@_1,
			       F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.HashResponse'(Rest, 0, Z2,
					   F@_1, F@_2, TrUserData).

'skip_32_Etcd.HashResponse'(<<_:32, Rest/binary>>, Z1,
			    Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.HashResponse'(Rest, Z1, Z2,
					   F@_1, F@_2, TrUserData).

'skip_64_Etcd.HashResponse'(<<_:64, Rest/binary>>, Z1,
			    Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.HashResponse'(Rest, Z1, Z2,
					   F@_1, F@_2, TrUserData).

'decode_msg_Etcd.SnapshotRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.SnapshotRequest'(Bin, 0, 0,
					      TrUserData).

'dfp_read_field_def_Etcd.SnapshotRequest'(<<>>, 0, 0,
					  _) ->
    #{};
'dfp_read_field_def_Etcd.SnapshotRequest'(Other, Z1, Z2,
					  TrUserData) ->
    'dg_read_field_def_Etcd.SnapshotRequest'(Other, Z1, Z2,
					     TrUserData).

'dg_read_field_def_Etcd.SnapshotRequest'(<<1:1, X:7,
					   Rest/binary>>,
					 N, Acc, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.SnapshotRequest'(Rest, N + 7,
					     X bsl N + Acc, TrUserData);
'dg_read_field_def_Etcd.SnapshotRequest'(<<0:1, X:7,
					   Rest/binary>>,
					 N, Acc, TrUserData) ->
    Key = X bsl N + Acc,
    case Key band 7 of
      0 ->
	  'skip_varint_Etcd.SnapshotRequest'(Rest, 0, 0,
					     TrUserData);
      1 ->
	  'skip_64_Etcd.SnapshotRequest'(Rest, 0, 0, TrUserData);
      2 ->
	  'skip_length_delimited_Etcd.SnapshotRequest'(Rest, 0, 0,
						       TrUserData);
      3 ->
	  'skip_group_Etcd.SnapshotRequest'(Rest, Key bsr 3, 0,
					    TrUserData);
      5 ->
	  'skip_32_Etcd.SnapshotRequest'(Rest, 0, 0, TrUserData)
    end;
'dg_read_field_def_Etcd.SnapshotRequest'(<<>>, 0, 0,
					 _) ->
    #{}.

'skip_varint_Etcd.SnapshotRequest'(<<1:1, _:7,
				     Rest/binary>>,
				   Z1, Z2, TrUserData) ->
    'skip_varint_Etcd.SnapshotRequest'(Rest, Z1, Z2,
				       TrUserData);
'skip_varint_Etcd.SnapshotRequest'(<<0:1, _:7,
				     Rest/binary>>,
				   Z1, Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.SnapshotRequest'(Rest, Z1, Z2,
					      TrUserData).

'skip_length_delimited_Etcd.SnapshotRequest'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.SnapshotRequest'(Rest,
						 N + 7, X bsl N + Acc,
						 TrUserData);
'skip_length_delimited_Etcd.SnapshotRequest'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.SnapshotRequest'(Rest2, 0, 0,
					      TrUserData).

'skip_group_Etcd.SnapshotRequest'(Bin, FNum, Z2,
				  TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.SnapshotRequest'(Rest, 0, Z2,
					      TrUserData).

'skip_32_Etcd.SnapshotRequest'(<<_:32, Rest/binary>>,
			       Z1, Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.SnapshotRequest'(Rest, Z1, Z2,
					      TrUserData).

'skip_64_Etcd.SnapshotRequest'(<<_:64, Rest/binary>>,
			       Z1, Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.SnapshotRequest'(Rest, Z1, Z2,
					      TrUserData).

'decode_msg_Etcd.SnapshotResponse'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.SnapshotResponse'(Bin, 0, 0,
					       id('$undef', TrUserData),
					       id(0, TrUserData),
					       id(<<>>, TrUserData),
					       TrUserData).

'dfp_read_field_def_Etcd.SnapshotResponse'(<<10,
					     Rest/binary>>,
					   Z1, Z2, F@_1, F@_2, F@_3,
					   TrUserData) ->
    'd_field_Etcd.SnapshotResponse_header'(Rest, Z1, Z2,
					   F@_1, F@_2, F@_3, TrUserData);
'dfp_read_field_def_Etcd.SnapshotResponse'(<<16,
					     Rest/binary>>,
					   Z1, Z2, F@_1, F@_2, F@_3,
					   TrUserData) ->
    'd_field_Etcd.SnapshotResponse_remaining_bytes'(Rest,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    TrUserData);
'dfp_read_field_def_Etcd.SnapshotResponse'(<<26,
					     Rest/binary>>,
					   Z1, Z2, F@_1, F@_2, F@_3,
					   TrUserData) ->
    'd_field_Etcd.SnapshotResponse_blob'(Rest, Z1, Z2, F@_1,
					 F@_2, F@_3, TrUserData);
'dfp_read_field_def_Etcd.SnapshotResponse'(<<>>, 0, 0,
					   F@_1, F@_2, F@_3, _) ->
    S1 = #{remaining_bytes => F@_2, blob => F@_3},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.SnapshotResponse'(Other, Z1,
					   Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dg_read_field_def_Etcd.SnapshotResponse'(Other, Z1, Z2,
					      F@_1, F@_2, F@_3, TrUserData).

'dg_read_field_def_Etcd.SnapshotResponse'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.SnapshotResponse'(Rest, N + 7,
					      X bsl N + Acc, F@_1, F@_2, F@_3,
					      TrUserData);
'dg_read_field_def_Etcd.SnapshotResponse'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, F@_3,
					  TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.SnapshotResponse_header'(Rest, 0, 0, F@_1,
						 F@_2, F@_3, TrUserData);
      16 ->
	  'd_field_Etcd.SnapshotResponse_remaining_bytes'(Rest, 0,
							  0, F@_1, F@_2, F@_3,
							  TrUserData);
      26 ->
	  'd_field_Etcd.SnapshotResponse_blob'(Rest, 0, 0, F@_1,
					       F@_2, F@_3, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.SnapshotResponse'(Rest, 0, 0, F@_1,
						    F@_2, F@_3, TrUserData);
	    1 ->
		'skip_64_Etcd.SnapshotResponse'(Rest, 0, 0, F@_1, F@_2,
						F@_3, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.SnapshotResponse'(Rest, 0,
							      0, F@_1, F@_2,
							      F@_3, TrUserData);
	    3 ->
		'skip_group_Etcd.SnapshotResponse'(Rest, Key bsr 3, 0,
						   F@_1, F@_2, F@_3,
						   TrUserData);
	    5 ->
		'skip_32_Etcd.SnapshotResponse'(Rest, 0, 0, F@_1, F@_2,
						F@_3, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.SnapshotResponse'(<<>>, 0, 0,
					  F@_1, F@_2, F@_3, _) ->
    S1 = #{remaining_bytes => F@_2, blob => F@_3},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.SnapshotResponse_header'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_Etcd.SnapshotResponse_header'(Rest, N + 7,
					   X bsl N + Acc, F@_1, F@_2, F@_3,
					   TrUserData);
'd_field_Etcd.SnapshotResponse_header'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, Prev, F@_2, F@_3, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.SnapshotResponse'(RestF, 0, 0,
					       if Prev == '$undef' -> NewFValue;
						  true ->
						      'merge_msg_Etcd.ResponseHeader'(Prev,
										      NewFValue,
										      TrUserData)
					       end,
					       F@_2, F@_3, TrUserData).

'd_field_Etcd.SnapshotResponse_remaining_bytes'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3,
						TrUserData)
    when N < 57 ->
    'd_field_Etcd.SnapshotResponse_remaining_bytes'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    F@_2, F@_3, TrUserData);
'd_field_Etcd.SnapshotResponse_remaining_bytes'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, _, F@_3,
						TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc, TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.SnapshotResponse'(RestF, 0, 0,
					       F@_1, NewFValue, F@_3,
					       TrUserData).

'd_field_Etcd.SnapshotResponse_blob'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_Etcd.SnapshotResponse_blob'(Rest, N + 7,
					 X bsl N + Acc, F@_1, F@_2, F@_3,
					 TrUserData);
'd_field_Etcd.SnapshotResponse_blob'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, _, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.SnapshotResponse'(RestF, 0, 0,
					       F@_1, F@_2, NewFValue,
					       TrUserData).

'skip_varint_Etcd.SnapshotResponse'(<<1:1, _:7,
				      Rest/binary>>,
				    Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'skip_varint_Etcd.SnapshotResponse'(Rest, Z1, Z2, F@_1,
					F@_2, F@_3, TrUserData);
'skip_varint_Etcd.SnapshotResponse'(<<0:1, _:7,
				      Rest/binary>>,
				    Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.SnapshotResponse'(Rest, Z1, Z2,
					       F@_1, F@_2, F@_3, TrUserData).

'skip_length_delimited_Etcd.SnapshotResponse'(<<1:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, F@_3,
					      TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.SnapshotResponse'(Rest,
						  N + 7, X bsl N + Acc, F@_1,
						  F@_2, F@_3, TrUserData);
'skip_length_delimited_Etcd.SnapshotResponse'(<<0:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, F@_3,
					      TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.SnapshotResponse'(Rest2, 0, 0,
					       F@_1, F@_2, F@_3, TrUserData).

'skip_group_Etcd.SnapshotResponse'(Bin, FNum, Z2, F@_1,
				   F@_2, F@_3, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.SnapshotResponse'(Rest, 0, Z2,
					       F@_1, F@_2, F@_3, TrUserData).

'skip_32_Etcd.SnapshotResponse'(<<_:32, Rest/binary>>,
				Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.SnapshotResponse'(Rest, Z1, Z2,
					       F@_1, F@_2, F@_3, TrUserData).

'skip_64_Etcd.SnapshotResponse'(<<_:64, Rest/binary>>,
				Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.SnapshotResponse'(Rest, Z1, Z2,
					       F@_1, F@_2, F@_3, TrUserData).

'decode_msg_Etcd.WatchRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.WatchRequest'(Bin, 0, 0,
					   id('$undef', TrUserData),
					   TrUserData).

'dfp_read_field_def_Etcd.WatchRequest'(<<10,
					 Rest/binary>>,
				       Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.WatchRequest_create_request'(Rest, Z1, Z2,
					       F@_1, TrUserData);
'dfp_read_field_def_Etcd.WatchRequest'(<<18,
					 Rest/binary>>,
				       Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.WatchRequest_cancel_request'(Rest, Z1, Z2,
					       F@_1, TrUserData);
'dfp_read_field_def_Etcd.WatchRequest'(<<26,
					 Rest/binary>>,
				       Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.WatchRequest_progress_request'(Rest, Z1,
						 Z2, F@_1, TrUserData);
'dfp_read_field_def_Etcd.WatchRequest'(<<>>, 0, 0, F@_1,
				       _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{request_union => F@_1}
    end;
'dfp_read_field_def_Etcd.WatchRequest'(Other, Z1, Z2,
				       F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.WatchRequest'(Other, Z1, Z2,
					  F@_1, TrUserData).

'dg_read_field_def_Etcd.WatchRequest'(<<1:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.WatchRequest'(Rest, N + 7,
					  X bsl N + Acc, F@_1, TrUserData);
'dg_read_field_def_Etcd.WatchRequest'(<<0:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.WatchRequest_create_request'(Rest, 0, 0,
						     F@_1, TrUserData);
      18 ->
	  'd_field_Etcd.WatchRequest_cancel_request'(Rest, 0, 0,
						     F@_1, TrUserData);
      26 ->
	  'd_field_Etcd.WatchRequest_progress_request'(Rest, 0, 0,
						       F@_1, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.WatchRequest'(Rest, 0, 0, F@_1,
						TrUserData);
	    1 ->
		'skip_64_Etcd.WatchRequest'(Rest, 0, 0, F@_1,
					    TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.WatchRequest'(Rest, 0, 0,
							  F@_1, TrUserData);
	    3 ->
		'skip_group_Etcd.WatchRequest'(Rest, Key bsr 3, 0, F@_1,
					       TrUserData);
	    5 ->
		'skip_32_Etcd.WatchRequest'(Rest, 0, 0, F@_1,
					    TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.WatchRequest'(<<>>, 0, 0, F@_1,
				      _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{request_union => F@_1}
    end.

'd_field_Etcd.WatchRequest_create_request'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.WatchRequest_create_request'(Rest, N + 7,
					       X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.WatchRequest_create_request'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.WatchCreateRequest'(Bs,
								    TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.WatchRequest'(RestF, 0, 0,
					   case Prev of
					     '$undef' ->
						 id({create_request, NewFValue},
						    TrUserData);
					     {create_request, MVPrev} ->
						 id({create_request,
						     'merge_msg_Etcd.WatchCreateRequest'(MVPrev,
											 NewFValue,
											 TrUserData)},
						    TrUserData);
					     _ ->
						 id({create_request, NewFValue},
						    TrUserData)
					   end,
					   TrUserData).

'd_field_Etcd.WatchRequest_cancel_request'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.WatchRequest_cancel_request'(Rest, N + 7,
					       X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.WatchRequest_cancel_request'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.WatchCancelRequest'(Bs,
								    TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.WatchRequest'(RestF, 0, 0,
					   case Prev of
					     '$undef' ->
						 id({cancel_request, NewFValue},
						    TrUserData);
					     {cancel_request, MVPrev} ->
						 id({cancel_request,
						     'merge_msg_Etcd.WatchCancelRequest'(MVPrev,
											 NewFValue,
											 TrUserData)},
						    TrUserData);
					     _ ->
						 id({cancel_request, NewFValue},
						    TrUserData)
					   end,
					   TrUserData).

'd_field_Etcd.WatchRequest_progress_request'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.WatchRequest_progress_request'(Rest,
						 N + 7, X bsl N + Acc, F@_1,
						 TrUserData);
'd_field_Etcd.WatchRequest_progress_request'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.WatchProgressRequest'(Bs,
								      TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.WatchRequest'(RestF, 0, 0,
					   case Prev of
					     '$undef' ->
						 id({progress_request,
						     NewFValue},
						    TrUserData);
					     {progress_request, MVPrev} ->
						 id({progress_request,
						     'merge_msg_Etcd.WatchProgressRequest'(MVPrev,
											   NewFValue,
											   TrUserData)},
						    TrUserData);
					     _ ->
						 id({progress_request,
						     NewFValue},
						    TrUserData)
					   end,
					   TrUserData).

'skip_varint_Etcd.WatchRequest'(<<1:1, _:7,
				  Rest/binary>>,
				Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.WatchRequest'(Rest, Z1, Z2, F@_1,
				    TrUserData);
'skip_varint_Etcd.WatchRequest'(<<0:1, _:7,
				  Rest/binary>>,
				Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.WatchRequest'(Rest, Z1, Z2,
					   F@_1, TrUserData).

'skip_length_delimited_Etcd.WatchRequest'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.WatchRequest'(Rest, N + 7,
					      X bsl N + Acc, F@_1, TrUserData);
'skip_length_delimited_Etcd.WatchRequest'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.WatchRequest'(Rest2, 0, 0,
					   F@_1, TrUserData).

'skip_group_Etcd.WatchRequest'(Bin, FNum, Z2, F@_1,
			       TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.WatchRequest'(Rest, 0, Z2,
					   F@_1, TrUserData).

'skip_32_Etcd.WatchRequest'(<<_:32, Rest/binary>>, Z1,
			    Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.WatchRequest'(Rest, Z1, Z2,
					   F@_1, TrUserData).

'skip_64_Etcd.WatchRequest'(<<_:64, Rest/binary>>, Z1,
			    Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.WatchRequest'(Rest, Z1, Z2,
					   F@_1, TrUserData).

'decode_msg_Etcd.WatchCreateRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.WatchCreateRequest'(Bin, 0, 0,
						 id(<<>>, TrUserData),
						 id(<<>>, TrUserData),
						 id(0, TrUserData),
						 id(false, TrUserData),
						 id([], TrUserData),
						 id(false, TrUserData),
						 id(0, TrUserData),
						 id(false, TrUserData),
						 TrUserData).

'dfp_read_field_def_Etcd.WatchCreateRequest'(<<10,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					     F@_5, F@_6, F@_7, F@_8,
					     TrUserData) ->
    'd_field_Etcd.WatchCreateRequest_key'(Rest, Z1, Z2,
					  F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					  F@_7, F@_8, TrUserData);
'dfp_read_field_def_Etcd.WatchCreateRequest'(<<18,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					     F@_5, F@_6, F@_7, F@_8,
					     TrUserData) ->
    'd_field_Etcd.WatchCreateRequest_range_end'(Rest, Z1,
						Z2, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8,
						TrUserData);
'dfp_read_field_def_Etcd.WatchCreateRequest'(<<24,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					     F@_5, F@_6, F@_7, F@_8,
					     TrUserData) ->
    'd_field_Etcd.WatchCreateRequest_start_revision'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, TrUserData);
'dfp_read_field_def_Etcd.WatchCreateRequest'(<<32,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					     F@_5, F@_6, F@_7, F@_8,
					     TrUserData) ->
    'd_field_Etcd.WatchCreateRequest_progress_notify'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, TrUserData);
'dfp_read_field_def_Etcd.WatchCreateRequest'(<<42,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					     F@_5, F@_6, F@_7, F@_8,
					     TrUserData) ->
    'd_pfield_Etcd.WatchCreateRequest_filters'(Rest, Z1, Z2,
					       F@_1, F@_2, F@_3, F@_4, F@_5,
					       F@_6, F@_7, F@_8, TrUserData);
'dfp_read_field_def_Etcd.WatchCreateRequest'(<<40,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					     F@_5, F@_6, F@_7, F@_8,
					     TrUserData) ->
    'd_field_Etcd.WatchCreateRequest_filters'(Rest, Z1, Z2,
					      F@_1, F@_2, F@_3, F@_4, F@_5,
					      F@_6, F@_7, F@_8, TrUserData);
'dfp_read_field_def_Etcd.WatchCreateRequest'(<<48,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					     F@_5, F@_6, F@_7, F@_8,
					     TrUserData) ->
    'd_field_Etcd.WatchCreateRequest_prev_kv'(Rest, Z1, Z2,
					      F@_1, F@_2, F@_3, F@_4, F@_5,
					      F@_6, F@_7, F@_8, TrUserData);
'dfp_read_field_def_Etcd.WatchCreateRequest'(<<56,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					     F@_5, F@_6, F@_7, F@_8,
					     TrUserData) ->
    'd_field_Etcd.WatchCreateRequest_watch_id'(Rest, Z1, Z2,
					       F@_1, F@_2, F@_3, F@_4, F@_5,
					       F@_6, F@_7, F@_8, TrUserData);
'dfp_read_field_def_Etcd.WatchCreateRequest'(<<64,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					     F@_5, F@_6, F@_7, F@_8,
					     TrUserData) ->
    'd_field_Etcd.WatchCreateRequest_fragment'(Rest, Z1, Z2,
					       F@_1, F@_2, F@_3, F@_4, F@_5,
					       F@_6, F@_7, F@_8, TrUserData);
'dfp_read_field_def_Etcd.WatchCreateRequest'(<<>>, 0, 0,
					     F@_1, F@_2, F@_3, F@_4, R1, F@_6,
					     F@_7, F@_8, TrUserData) ->
    #{key => F@_1, range_end => F@_2,
      start_revision => F@_3, progress_notify => F@_4,
      filters => lists_reverse(R1, TrUserData),
      prev_kv => F@_6, watch_id => F@_7, fragment => F@_8};
'dfp_read_field_def_Etcd.WatchCreateRequest'(Other, Z1,
					     Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					     F@_6, F@_7, F@_8, TrUserData) ->
    'dg_read_field_def_Etcd.WatchCreateRequest'(Other, Z1,
						Z2, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8,
						TrUserData).

'dg_read_field_def_Etcd.WatchCreateRequest'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, F@_3, F@_4,
					    F@_5, F@_6, F@_7, F@_8, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.WatchCreateRequest'(Rest, N + 7,
						X bsl N + Acc, F@_1, F@_2, F@_3,
						F@_4, F@_5, F@_6, F@_7, F@_8,
						TrUserData);
'dg_read_field_def_Etcd.WatchCreateRequest'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, F@_3, F@_4,
					    F@_5, F@_6, F@_7, F@_8,
					    TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.WatchCreateRequest_key'(Rest, 0, 0, F@_1,
						F@_2, F@_3, F@_4, F@_5, F@_6,
						F@_7, F@_8, TrUserData);
      18 ->
	  'd_field_Etcd.WatchCreateRequest_range_end'(Rest, 0, 0,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7, F@_8,
						      TrUserData);
      24 ->
	  'd_field_Etcd.WatchCreateRequest_start_revision'(Rest,
							   0, 0, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   TrUserData);
      32 ->
	  'd_field_Etcd.WatchCreateRequest_progress_notify'(Rest,
							    0, 0, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    TrUserData);
      42 ->
	  'd_pfield_Etcd.WatchCreateRequest_filters'(Rest, 0, 0,
						     F@_1, F@_2, F@_3, F@_4,
						     F@_5, F@_6, F@_7, F@_8,
						     TrUserData);
      40 ->
	  'd_field_Etcd.WatchCreateRequest_filters'(Rest, 0, 0,
						    F@_1, F@_2, F@_3, F@_4,
						    F@_5, F@_6, F@_7, F@_8,
						    TrUserData);
      48 ->
	  'd_field_Etcd.WatchCreateRequest_prev_kv'(Rest, 0, 0,
						    F@_1, F@_2, F@_3, F@_4,
						    F@_5, F@_6, F@_7, F@_8,
						    TrUserData);
      56 ->
	  'd_field_Etcd.WatchCreateRequest_watch_id'(Rest, 0, 0,
						     F@_1, F@_2, F@_3, F@_4,
						     F@_5, F@_6, F@_7, F@_8,
						     TrUserData);
      64 ->
	  'd_field_Etcd.WatchCreateRequest_fragment'(Rest, 0, 0,
						     F@_1, F@_2, F@_3, F@_4,
						     F@_5, F@_6, F@_7, F@_8,
						     TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.WatchCreateRequest'(Rest, 0, 0, F@_1,
						      F@_2, F@_3, F@_4, F@_5,
						      F@_6, F@_7, F@_8,
						      TrUserData);
	    1 ->
		'skip_64_Etcd.WatchCreateRequest'(Rest, 0, 0, F@_1,
						  F@_2, F@_3, F@_4, F@_5, F@_6,
						  F@_7, F@_8, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.WatchCreateRequest'(Rest, 0,
								0, F@_1, F@_2,
								F@_3, F@_4,
								F@_5, F@_6,
								F@_7, F@_8,
								TrUserData);
	    3 ->
		'skip_group_Etcd.WatchCreateRequest'(Rest, Key bsr 3, 0,
						     F@_1, F@_2, F@_3, F@_4,
						     F@_5, F@_6, F@_7, F@_8,
						     TrUserData);
	    5 ->
		'skip_32_Etcd.WatchCreateRequest'(Rest, 0, 0, F@_1,
						  F@_2, F@_3, F@_4, F@_5, F@_6,
						  F@_7, F@_8, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.WatchCreateRequest'(<<>>, 0, 0,
					    F@_1, F@_2, F@_3, F@_4, R1, F@_6,
					    F@_7, F@_8, TrUserData) ->
    #{key => F@_1, range_end => F@_2,
      start_revision => F@_3, progress_notify => F@_4,
      filters => lists_reverse(R1, TrUserData),
      prev_kv => F@_6, watch_id => F@_7, fragment => F@_8}.

'd_field_Etcd.WatchCreateRequest_key'(<<1:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				      F@_6, F@_7, F@_8, TrUserData)
    when N < 57 ->
    'd_field_Etcd.WatchCreateRequest_key'(Rest, N + 7,
					  X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
					  F@_5, F@_6, F@_7, F@_8, TrUserData);
'd_field_Etcd.WatchCreateRequest_key'(<<0:1, X:7,
					Rest/binary>>,
				      N, Acc, _, F@_2, F@_3, F@_4, F@_5, F@_6,
				      F@_7, F@_8, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.WatchCreateRequest'(RestF, 0,
						 0, NewFValue, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8,
						 TrUserData).

'd_field_Etcd.WatchCreateRequest_range_end'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, F@_3, F@_4,
					    F@_5, F@_6, F@_7, F@_8, TrUserData)
    when N < 57 ->
    'd_field_Etcd.WatchCreateRequest_range_end'(Rest, N + 7,
						X bsl N + Acc, F@_1, F@_2, F@_3,
						F@_4, F@_5, F@_6, F@_7, F@_8,
						TrUserData);
'd_field_Etcd.WatchCreateRequest_range_end'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, _, F@_3, F@_4, F@_5,
					    F@_6, F@_7, F@_8, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.WatchCreateRequest'(RestF, 0,
						 0, F@_1, NewFValue, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8,
						 TrUserData).

'd_field_Etcd.WatchCreateRequest_start_revision'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8,
						 TrUserData)
    when N < 57 ->
    'd_field_Etcd.WatchCreateRequest_start_revision'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     F@_2, F@_3, F@_4, F@_5,
						     F@_6, F@_7, F@_8,
						     TrUserData);
'd_field_Etcd.WatchCreateRequest_start_revision'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, _, F@_4,
						 F@_5, F@_6, F@_7, F@_8,
						 TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.WatchCreateRequest'(RestF, 0,
						 0, F@_1, F@_2, NewFValue, F@_4,
						 F@_5, F@_6, F@_7, F@_8,
						 TrUserData).

'd_field_Etcd.WatchCreateRequest_progress_notify'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  TrUserData)
    when N < 57 ->
    'd_field_Etcd.WatchCreateRequest_progress_notify'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7, F@_8,
						      TrUserData);
'd_field_Etcd.WatchCreateRequest_progress_notify'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3, _,
						  F@_5, F@_6, F@_7, F@_8,
						  TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.WatchCreateRequest'(RestF, 0,
						 0, F@_1, F@_2, F@_3, NewFValue,
						 F@_5, F@_6, F@_7, F@_8,
						 TrUserData).

'd_field_Etcd.WatchCreateRequest_filters'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					  F@_6, F@_7, F@_8, TrUserData)
    when N < 57 ->
    'd_field_Etcd.WatchCreateRequest_filters'(Rest, N + 7,
					      X bsl N + Acc, F@_1, F@_2, F@_3,
					      F@_4, F@_5, F@_6, F@_7, F@_8,
					      TrUserData);
'd_field_Etcd.WatchCreateRequest_filters'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, F@_3, F@_4, Prev,
					  F@_6, F@_7, F@_8, TrUserData) ->
    {NewFValue, RestF} =
	{id('d_enum_Etcd.WatchCreateRequest.FilterType'(begin
							  <<Res:32/signed-native>> =
							      <<(X bsl N +
								   Acc):32/unsigned-native>>,
							  id(Res, TrUserData)
							end),
	    TrUserData),
	 Rest},
    'dfp_read_field_def_Etcd.WatchCreateRequest'(RestF, 0,
						 0, F@_1, F@_2, F@_3, F@_4,
						 cons(NewFValue, Prev,
						      TrUserData),
						 F@_6, F@_7, F@_8, TrUserData).

'd_pfield_Etcd.WatchCreateRequest_filters'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					   F@_6, F@_7, F@_8, TrUserData)
    when N < 57 ->
    'd_pfield_Etcd.WatchCreateRequest_filters'(Rest, N + 7,
					       X bsl N + Acc, F@_1, F@_2, F@_3,
					       F@_4, F@_5, F@_6, F@_7, F@_8,
					       TrUserData);
'd_pfield_Etcd.WatchCreateRequest_filters'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, F@_3, F@_4, E,
					   F@_6, F@_7, F@_8, TrUserData) ->
    Len = X bsl N + Acc,
    <<PackedBytes:Len/binary, Rest2/binary>> = Rest,
    NewSeq =
	'd_packed_field_Etcd.WatchCreateRequest_filters'(PackedBytes,
							 0, 0, E, TrUserData),
    'dfp_read_field_def_Etcd.WatchCreateRequest'(Rest2, 0,
						 0, F@_1, F@_2, F@_3, F@_4,
						 NewSeq, F@_6, F@_7, F@_8,
						 TrUserData).

'd_packed_field_Etcd.WatchCreateRequest_filters'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, AccSeq, TrUserData)
    when N < 57 ->
    'd_packed_field_Etcd.WatchCreateRequest_filters'(Rest,
						     N + 7, X bsl N + Acc,
						     AccSeq, TrUserData);
'd_packed_field_Etcd.WatchCreateRequest_filters'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, AccSeq, TrUserData) ->
    {NewFValue, RestF} =
	{id('d_enum_Etcd.WatchCreateRequest.FilterType'(begin
							  <<Res:32/signed-native>> =
							      <<(X bsl N +
								   Acc):32/unsigned-native>>,
							  id(Res, TrUserData)
							end),
	    TrUserData),
	 Rest},
    'd_packed_field_Etcd.WatchCreateRequest_filters'(RestF,
						     0, 0, [NewFValue | AccSeq],
						     TrUserData);
'd_packed_field_Etcd.WatchCreateRequest_filters'(<<>>,
						 0, 0, AccSeq, _) ->
    AccSeq.

'd_field_Etcd.WatchCreateRequest_prev_kv'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					  F@_6, F@_7, F@_8, TrUserData)
    when N < 57 ->
    'd_field_Etcd.WatchCreateRequest_prev_kv'(Rest, N + 7,
					      X bsl N + Acc, F@_1, F@_2, F@_3,
					      F@_4, F@_5, F@_6, F@_7, F@_8,
					      TrUserData);
'd_field_Etcd.WatchCreateRequest_prev_kv'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					  _, F@_7, F@_8, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.WatchCreateRequest'(RestF, 0,
						 0, F@_1, F@_2, F@_3, F@_4,
						 F@_5, NewFValue, F@_7, F@_8,
						 TrUserData).

'd_field_Etcd.WatchCreateRequest_watch_id'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					   F@_6, F@_7, F@_8, TrUserData)
    when N < 57 ->
    'd_field_Etcd.WatchCreateRequest_watch_id'(Rest, N + 7,
					       X bsl N + Acc, F@_1, F@_2, F@_3,
					       F@_4, F@_5, F@_6, F@_7, F@_8,
					       TrUserData);
'd_field_Etcd.WatchCreateRequest_watch_id'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					   F@_6, _, F@_8, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.WatchCreateRequest'(RestF, 0,
						 0, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, NewFValue, F@_8,
						 TrUserData).

'd_field_Etcd.WatchCreateRequest_fragment'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					   F@_6, F@_7, F@_8, TrUserData)
    when N < 57 ->
    'd_field_Etcd.WatchCreateRequest_fragment'(Rest, N + 7,
					       X bsl N + Acc, F@_1, F@_2, F@_3,
					       F@_4, F@_5, F@_6, F@_7, F@_8,
					       TrUserData);
'd_field_Etcd.WatchCreateRequest_fragment'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					   F@_6, F@_7, _, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.WatchCreateRequest'(RestF, 0,
						 0, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, NewFValue,
						 TrUserData).

'skip_varint_Etcd.WatchCreateRequest'(<<1:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				      F@_6, F@_7, F@_8, TrUserData) ->
    'skip_varint_Etcd.WatchCreateRequest'(Rest, Z1, Z2,
					  F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					  F@_7, F@_8, TrUserData);
'skip_varint_Etcd.WatchCreateRequest'(<<0:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				      F@_6, F@_7, F@_8, TrUserData) ->
    'dfp_read_field_def_Etcd.WatchCreateRequest'(Rest, Z1,
						 Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8,
						 TrUserData).

'skip_length_delimited_Etcd.WatchCreateRequest'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8,
						TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.WatchCreateRequest'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    F@_2, F@_3, F@_4, F@_5,
						    F@_6, F@_7, F@_8,
						    TrUserData);
'skip_length_delimited_Etcd.WatchCreateRequest'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8,
						TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.WatchCreateRequest'(Rest2, 0,
						 0, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8,
						 TrUserData).

'skip_group_Etcd.WatchCreateRequest'(Bin, FNum, Z2,
				     F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7,
				     F@_8, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.WatchCreateRequest'(Rest, 0,
						 Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8,
						 TrUserData).

'skip_32_Etcd.WatchCreateRequest'(<<_:32, Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				  F@_7, F@_8, TrUserData) ->
    'dfp_read_field_def_Etcd.WatchCreateRequest'(Rest, Z1,
						 Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8,
						 TrUserData).

'skip_64_Etcd.WatchCreateRequest'(<<_:64, Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				  F@_7, F@_8, TrUserData) ->
    'dfp_read_field_def_Etcd.WatchCreateRequest'(Rest, Z1,
						 Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8,
						 TrUserData).

'decode_msg_Etcd.WatchCancelRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.WatchCancelRequest'(Bin, 0, 0,
						 id(0, TrUserData), TrUserData).

'dfp_read_field_def_Etcd.WatchCancelRequest'(<<8,
					       Rest/binary>>,
					     Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.WatchCancelRequest_watch_id'(Rest, Z1, Z2,
					       F@_1, TrUserData);
'dfp_read_field_def_Etcd.WatchCancelRequest'(<<>>, 0, 0,
					     F@_1, _) ->
    #{watch_id => F@_1};
'dfp_read_field_def_Etcd.WatchCancelRequest'(Other, Z1,
					     Z2, F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.WatchCancelRequest'(Other, Z1,
						Z2, F@_1, TrUserData).

'dg_read_field_def_Etcd.WatchCancelRequest'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.WatchCancelRequest'(Rest, N + 7,
						X bsl N + Acc, F@_1,
						TrUserData);
'dg_read_field_def_Etcd.WatchCancelRequest'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_Etcd.WatchCancelRequest_watch_id'(Rest, 0, 0,
						     F@_1, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.WatchCancelRequest'(Rest, 0, 0, F@_1,
						      TrUserData);
	    1 ->
		'skip_64_Etcd.WatchCancelRequest'(Rest, 0, 0, F@_1,
						  TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.WatchCancelRequest'(Rest, 0,
								0, F@_1,
								TrUserData);
	    3 ->
		'skip_group_Etcd.WatchCancelRequest'(Rest, Key bsr 3, 0,
						     F@_1, TrUserData);
	    5 ->
		'skip_32_Etcd.WatchCancelRequest'(Rest, 0, 0, F@_1,
						  TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.WatchCancelRequest'(<<>>, 0, 0,
					    F@_1, _) ->
    #{watch_id => F@_1}.

'd_field_Etcd.WatchCancelRequest_watch_id'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.WatchCancelRequest_watch_id'(Rest, N + 7,
					       X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.WatchCancelRequest_watch_id'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, _, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.WatchCancelRequest'(RestF, 0,
						 0, NewFValue, TrUserData).

'skip_varint_Etcd.WatchCancelRequest'(<<1:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.WatchCancelRequest'(Rest, Z1, Z2,
					  F@_1, TrUserData);
'skip_varint_Etcd.WatchCancelRequest'(<<0:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.WatchCancelRequest'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'skip_length_delimited_Etcd.WatchCancelRequest'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.WatchCancelRequest'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    TrUserData);
'skip_length_delimited_Etcd.WatchCancelRequest'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.WatchCancelRequest'(Rest2, 0,
						 0, F@_1, TrUserData).

'skip_group_Etcd.WatchCancelRequest'(Bin, FNum, Z2,
				     F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.WatchCancelRequest'(Rest, 0,
						 Z2, F@_1, TrUserData).

'skip_32_Etcd.WatchCancelRequest'(<<_:32, Rest/binary>>,
				  Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.WatchCancelRequest'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'skip_64_Etcd.WatchCancelRequest'(<<_:64, Rest/binary>>,
				  Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.WatchCancelRequest'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'decode_msg_Etcd.WatchProgressRequest'(Bin,
				       TrUserData) ->
    'dfp_read_field_def_Etcd.WatchProgressRequest'(Bin, 0,
						   0, TrUserData).

'dfp_read_field_def_Etcd.WatchProgressRequest'(<<>>, 0,
					       0, _) ->
    #{};
'dfp_read_field_def_Etcd.WatchProgressRequest'(Other,
					       Z1, Z2, TrUserData) ->
    'dg_read_field_def_Etcd.WatchProgressRequest'(Other, Z1,
						  Z2, TrUserData).

'dg_read_field_def_Etcd.WatchProgressRequest'(<<1:1,
						X:7, Rest/binary>>,
					      N, Acc, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.WatchProgressRequest'(Rest,
						  N + 7, X bsl N + Acc,
						  TrUserData);
'dg_read_field_def_Etcd.WatchProgressRequest'(<<0:1,
						X:7, Rest/binary>>,
					      N, Acc, TrUserData) ->
    Key = X bsl N + Acc,
    case Key band 7 of
      0 ->
	  'skip_varint_Etcd.WatchProgressRequest'(Rest, 0, 0,
						  TrUserData);
      1 ->
	  'skip_64_Etcd.WatchProgressRequest'(Rest, 0, 0,
					      TrUserData);
      2 ->
	  'skip_length_delimited_Etcd.WatchProgressRequest'(Rest,
							    0, 0, TrUserData);
      3 ->
	  'skip_group_Etcd.WatchProgressRequest'(Rest, Key bsr 3,
						 0, TrUserData);
      5 ->
	  'skip_32_Etcd.WatchProgressRequest'(Rest, 0, 0,
					      TrUserData)
    end;
'dg_read_field_def_Etcd.WatchProgressRequest'(<<>>, 0,
					      0, _) ->
    #{}.

'skip_varint_Etcd.WatchProgressRequest'(<<1:1, _:7,
					  Rest/binary>>,
					Z1, Z2, TrUserData) ->
    'skip_varint_Etcd.WatchProgressRequest'(Rest, Z1, Z2,
					    TrUserData);
'skip_varint_Etcd.WatchProgressRequest'(<<0:1, _:7,
					  Rest/binary>>,
					Z1, Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.WatchProgressRequest'(Rest, Z1,
						   Z2, TrUserData).

'skip_length_delimited_Etcd.WatchProgressRequest'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.WatchProgressRequest'(Rest,
						      N + 7, X bsl N + Acc,
						      TrUserData);
'skip_length_delimited_Etcd.WatchProgressRequest'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.WatchProgressRequest'(Rest2, 0,
						   0, TrUserData).

'skip_group_Etcd.WatchProgressRequest'(Bin, FNum, Z2,
				       TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.WatchProgressRequest'(Rest, 0,
						   Z2, TrUserData).

'skip_32_Etcd.WatchProgressRequest'(<<_:32,
				      Rest/binary>>,
				    Z1, Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.WatchProgressRequest'(Rest, Z1,
						   Z2, TrUserData).

'skip_64_Etcd.WatchProgressRequest'(<<_:64,
				      Rest/binary>>,
				    Z1, Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.WatchProgressRequest'(Rest, Z1,
						   Z2, TrUserData).

'decode_msg_Etcd.WatchResponse'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.WatchResponse'(Bin, 0, 0,
					    id('$undef', TrUserData),
					    id(0, TrUserData),
					    id(false, TrUserData),
					    id(false, TrUserData),
					    id(0, TrUserData),
					    id(<<>>, TrUserData),
					    id(false, TrUserData),
					    id([], TrUserData), TrUserData).

'dfp_read_field_def_Etcd.WatchResponse'(<<10,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					F@_6, F@_7, F@_8, TrUserData) ->
    'd_field_Etcd.WatchResponse_header'(Rest, Z1, Z2, F@_1,
					F@_2, F@_3, F@_4, F@_5, F@_6, F@_7,
					F@_8, TrUserData);
'dfp_read_field_def_Etcd.WatchResponse'(<<16,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					F@_6, F@_7, F@_8, TrUserData) ->
    'd_field_Etcd.WatchResponse_watch_id'(Rest, Z1, Z2,
					  F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					  F@_7, F@_8, TrUserData);
'dfp_read_field_def_Etcd.WatchResponse'(<<24,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					F@_6, F@_7, F@_8, TrUserData) ->
    'd_field_Etcd.WatchResponse_created'(Rest, Z1, Z2, F@_1,
					 F@_2, F@_3, F@_4, F@_5, F@_6, F@_7,
					 F@_8, TrUserData);
'dfp_read_field_def_Etcd.WatchResponse'(<<32,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					F@_6, F@_7, F@_8, TrUserData) ->
    'd_field_Etcd.WatchResponse_canceled'(Rest, Z1, Z2,
					  F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					  F@_7, F@_8, TrUserData);
'dfp_read_field_def_Etcd.WatchResponse'(<<40,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					F@_6, F@_7, F@_8, TrUserData) ->
    'd_field_Etcd.WatchResponse_compact_revision'(Rest, Z1,
						  Z2, F@_1, F@_2, F@_3, F@_4,
						  F@_5, F@_6, F@_7, F@_8,
						  TrUserData);
'dfp_read_field_def_Etcd.WatchResponse'(<<50,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					F@_6, F@_7, F@_8, TrUserData) ->
    'd_field_Etcd.WatchResponse_cancel_reason'(Rest, Z1, Z2,
					       F@_1, F@_2, F@_3, F@_4, F@_5,
					       F@_6, F@_7, F@_8, TrUserData);
'dfp_read_field_def_Etcd.WatchResponse'(<<56,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					F@_6, F@_7, F@_8, TrUserData) ->
    'd_field_Etcd.WatchResponse_fragment'(Rest, Z1, Z2,
					  F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					  F@_7, F@_8, TrUserData);
'dfp_read_field_def_Etcd.WatchResponse'(<<90,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					F@_6, F@_7, F@_8, TrUserData) ->
    'd_field_Etcd.WatchResponse_events'(Rest, Z1, Z2, F@_1,
					F@_2, F@_3, F@_4, F@_5, F@_6, F@_7,
					F@_8, TrUserData);
'dfp_read_field_def_Etcd.WatchResponse'(<<>>, 0, 0,
					F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					F@_7, R1, TrUserData) ->
    S1 = #{watch_id => F@_2, created => F@_3,
	   canceled => F@_4, compact_revision => F@_5,
	   cancel_reason => F@_6, fragment => F@_7},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true -> S2#{events => lists_reverse(R1, TrUserData)}
    end;
'dfp_read_field_def_Etcd.WatchResponse'(Other, Z1, Z2,
					F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					F@_7, F@_8, TrUserData) ->
    'dg_read_field_def_Etcd.WatchResponse'(Other, Z1, Z2,
					   F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					   F@_7, F@_8, TrUserData).

'dg_read_field_def_Etcd.WatchResponse'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				       F@_6, F@_7, F@_8, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.WatchResponse'(Rest, N + 7,
					   X bsl N + Acc, F@_1, F@_2, F@_3,
					   F@_4, F@_5, F@_6, F@_7, F@_8,
					   TrUserData);
'dg_read_field_def_Etcd.WatchResponse'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				       F@_6, F@_7, F@_8, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.WatchResponse_header'(Rest, 0, 0, F@_1,
					      F@_2, F@_3, F@_4, F@_5, F@_6,
					      F@_7, F@_8, TrUserData);
      16 ->
	  'd_field_Etcd.WatchResponse_watch_id'(Rest, 0, 0, F@_1,
						F@_2, F@_3, F@_4, F@_5, F@_6,
						F@_7, F@_8, TrUserData);
      24 ->
	  'd_field_Etcd.WatchResponse_created'(Rest, 0, 0, F@_1,
					       F@_2, F@_3, F@_4, F@_5, F@_6,
					       F@_7, F@_8, TrUserData);
      32 ->
	  'd_field_Etcd.WatchResponse_canceled'(Rest, 0, 0, F@_1,
						F@_2, F@_3, F@_4, F@_5, F@_6,
						F@_7, F@_8, TrUserData);
      40 ->
	  'd_field_Etcd.WatchResponse_compact_revision'(Rest, 0,
							0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, TrUserData);
      50 ->
	  'd_field_Etcd.WatchResponse_cancel_reason'(Rest, 0, 0,
						     F@_1, F@_2, F@_3, F@_4,
						     F@_5, F@_6, F@_7, F@_8,
						     TrUserData);
      56 ->
	  'd_field_Etcd.WatchResponse_fragment'(Rest, 0, 0, F@_1,
						F@_2, F@_3, F@_4, F@_5, F@_6,
						F@_7, F@_8, TrUserData);
      90 ->
	  'd_field_Etcd.WatchResponse_events'(Rest, 0, 0, F@_1,
					      F@_2, F@_3, F@_4, F@_5, F@_6,
					      F@_7, F@_8, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.WatchResponse'(Rest, 0, 0, F@_1, F@_2,
						 F@_3, F@_4, F@_5, F@_6, F@_7,
						 F@_8, TrUserData);
	    1 ->
		'skip_64_Etcd.WatchResponse'(Rest, 0, 0, F@_1, F@_2,
					     F@_3, F@_4, F@_5, F@_6, F@_7, F@_8,
					     TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.WatchResponse'(Rest, 0, 0,
							   F@_1, F@_2, F@_3,
							   F@_4, F@_5, F@_6,
							   F@_7, F@_8,
							   TrUserData);
	    3 ->
		'skip_group_Etcd.WatchResponse'(Rest, Key bsr 3, 0,
						F@_1, F@_2, F@_3, F@_4, F@_5,
						F@_6, F@_7, F@_8, TrUserData);
	    5 ->
		'skip_32_Etcd.WatchResponse'(Rest, 0, 0, F@_1, F@_2,
					     F@_3, F@_4, F@_5, F@_6, F@_7, F@_8,
					     TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.WatchResponse'(<<>>, 0, 0, F@_1,
				       F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, R1,
				       TrUserData) ->
    S1 = #{watch_id => F@_2, created => F@_3,
	   canceled => F@_4, compact_revision => F@_5,
	   cancel_reason => F@_6, fragment => F@_7},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true -> S2#{events => lists_reverse(R1, TrUserData)}
    end.

'd_field_Etcd.WatchResponse_header'(<<1:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				    F@_7, F@_8, TrUserData)
    when N < 57 ->
    'd_field_Etcd.WatchResponse_header'(Rest, N + 7,
					X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
					F@_5, F@_6, F@_7, F@_8, TrUserData);
'd_field_Etcd.WatchResponse_header'(<<0:1, X:7,
				      Rest/binary>>,
				    N, Acc, Prev, F@_2, F@_3, F@_4, F@_5, F@_6,
				    F@_7, F@_8, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.WatchResponse'(RestF, 0, 0,
					    if Prev == '$undef' -> NewFValue;
					       true ->
						   'merge_msg_Etcd.ResponseHeader'(Prev,
										   NewFValue,
										   TrUserData)
					    end,
					    F@_2, F@_3, F@_4, F@_5, F@_6, F@_7,
					    F@_8, TrUserData).

'd_field_Etcd.WatchResponse_watch_id'(<<1:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				      F@_6, F@_7, F@_8, TrUserData)
    when N < 57 ->
    'd_field_Etcd.WatchResponse_watch_id'(Rest, N + 7,
					  X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
					  F@_5, F@_6, F@_7, F@_8, TrUserData);
'd_field_Etcd.WatchResponse_watch_id'(<<0:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, _, F@_3, F@_4, F@_5, F@_6,
				      F@_7, F@_8, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.WatchResponse'(RestF, 0, 0,
					    F@_1, NewFValue, F@_3, F@_4, F@_5,
					    F@_6, F@_7, F@_8, TrUserData).

'd_field_Etcd.WatchResponse_created'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				     F@_7, F@_8, TrUserData)
    when N < 57 ->
    'd_field_Etcd.WatchResponse_created'(Rest, N + 7,
					 X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
					 F@_5, F@_6, F@_7, F@_8, TrUserData);
'd_field_Etcd.WatchResponse_created'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, _, F@_4, F@_5, F@_6,
				     F@_7, F@_8, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.WatchResponse'(RestF, 0, 0,
					    F@_1, F@_2, NewFValue, F@_4, F@_5,
					    F@_6, F@_7, F@_8, TrUserData).

'd_field_Etcd.WatchResponse_canceled'(<<1:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				      F@_6, F@_7, F@_8, TrUserData)
    when N < 57 ->
    'd_field_Etcd.WatchResponse_canceled'(Rest, N + 7,
					  X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
					  F@_5, F@_6, F@_7, F@_8, TrUserData);
'd_field_Etcd.WatchResponse_canceled'(<<0:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, F@_2, F@_3, _, F@_5, F@_6,
				      F@_7, F@_8, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.WatchResponse'(RestF, 0, 0,
					    F@_1, F@_2, F@_3, NewFValue, F@_5,
					    F@_6, F@_7, F@_8, TrUserData).

'd_field_Etcd.WatchResponse_compact_revision'(<<1:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, F@_3, F@_4,
					      F@_5, F@_6, F@_7, F@_8,
					      TrUserData)
    when N < 57 ->
    'd_field_Etcd.WatchResponse_compact_revision'(Rest,
						  N + 7, X bsl N + Acc, F@_1,
						  F@_2, F@_3, F@_4, F@_5, F@_6,
						  F@_7, F@_8, TrUserData);
'd_field_Etcd.WatchResponse_compact_revision'(<<0:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, F@_3, F@_4, _,
					      F@_6, F@_7, F@_8, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.WatchResponse'(RestF, 0, 0,
					    F@_1, F@_2, F@_3, F@_4, NewFValue,
					    F@_6, F@_7, F@_8, TrUserData).

'd_field_Etcd.WatchResponse_cancel_reason'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					   F@_6, F@_7, F@_8, TrUserData)
    when N < 57 ->
    'd_field_Etcd.WatchResponse_cancel_reason'(Rest, N + 7,
					       X bsl N + Acc, F@_1, F@_2, F@_3,
					       F@_4, F@_5, F@_6, F@_7, F@_8,
					       TrUserData);
'd_field_Etcd.WatchResponse_cancel_reason'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					   _, F@_7, F@_8, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.WatchResponse'(RestF, 0, 0,
					    F@_1, F@_2, F@_3, F@_4, F@_5,
					    NewFValue, F@_7, F@_8, TrUserData).

'd_field_Etcd.WatchResponse_fragment'(<<1:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				      F@_6, F@_7, F@_8, TrUserData)
    when N < 57 ->
    'd_field_Etcd.WatchResponse_fragment'(Rest, N + 7,
					  X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
					  F@_5, F@_6, F@_7, F@_8, TrUserData);
'd_field_Etcd.WatchResponse_fragment'(<<0:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				      F@_6, _, F@_8, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.WatchResponse'(RestF, 0, 0,
					    F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					    NewFValue, F@_8, TrUserData).

'd_field_Etcd.WatchResponse_events'(<<1:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				    F@_7, F@_8, TrUserData)
    when N < 57 ->
    'd_field_Etcd.WatchResponse_events'(Rest, N + 7,
					X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
					F@_5, F@_6, F@_7, F@_8, TrUserData);
'd_field_Etcd.WatchResponse_events'(<<0:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				    F@_7, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_mvccpb.Event'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.WatchResponse'(RestF, 0, 0,
					    F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					    F@_7,
					    cons(NewFValue, Prev, TrUserData),
					    TrUserData).

'skip_varint_Etcd.WatchResponse'(<<1:1, _:7,
				   Rest/binary>>,
				 Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				 F@_7, F@_8, TrUserData) ->
    'skip_varint_Etcd.WatchResponse'(Rest, Z1, Z2, F@_1,
				     F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8,
				     TrUserData);
'skip_varint_Etcd.WatchResponse'(<<0:1, _:7,
				   Rest/binary>>,
				 Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				 F@_7, F@_8, TrUserData) ->
    'dfp_read_field_def_Etcd.WatchResponse'(Rest, Z1, Z2,
					    F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					    F@_7, F@_8, TrUserData).

'skip_length_delimited_Etcd.WatchResponse'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					   F@_6, F@_7, F@_8, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.WatchResponse'(Rest, N + 7,
					       X bsl N + Acc, F@_1, F@_2, F@_3,
					       F@_4, F@_5, F@_6, F@_7, F@_8,
					       TrUserData);
'skip_length_delimited_Etcd.WatchResponse'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					   F@_6, F@_7, F@_8, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.WatchResponse'(Rest2, 0, 0,
					    F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					    F@_7, F@_8, TrUserData).

'skip_group_Etcd.WatchResponse'(Bin, FNum, Z2, F@_1,
				F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8,
				TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.WatchResponse'(Rest, 0, Z2,
					    F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					    F@_7, F@_8, TrUserData).

'skip_32_Etcd.WatchResponse'(<<_:32, Rest/binary>>, Z1,
			     Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8,
			     TrUserData) ->
    'dfp_read_field_def_Etcd.WatchResponse'(Rest, Z1, Z2,
					    F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					    F@_7, F@_8, TrUserData).

'skip_64_Etcd.WatchResponse'(<<_:64, Rest/binary>>, Z1,
			     Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8,
			     TrUserData) ->
    'dfp_read_field_def_Etcd.WatchResponse'(Rest, Z1, Z2,
					    F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					    F@_7, F@_8, TrUserData).

'decode_msg_Etcd.LeaseGrantRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseGrantRequest'(Bin, 0, 0,
						id(0, TrUserData),
						id(0, TrUserData), TrUserData).

'dfp_read_field_def_Etcd.LeaseGrantRequest'(<<8,
					      Rest/binary>>,
					    Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.LeaseGrantRequest_TTL'(Rest, Z1, Z2, F@_1,
					 F@_2, TrUserData);
'dfp_read_field_def_Etcd.LeaseGrantRequest'(<<16,
					      Rest/binary>>,
					    Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.LeaseGrantRequest_ID'(Rest, Z1, Z2, F@_1,
					F@_2, TrUserData);
'dfp_read_field_def_Etcd.LeaseGrantRequest'(<<>>, 0, 0,
					    F@_1, F@_2, _) ->
    #{'TTL' => F@_1, 'ID' => F@_2};
'dfp_read_field_def_Etcd.LeaseGrantRequest'(Other, Z1,
					    Z2, F@_1, F@_2, TrUserData) ->
    'dg_read_field_def_Etcd.LeaseGrantRequest'(Other, Z1,
					       Z2, F@_1, F@_2, TrUserData).

'dg_read_field_def_Etcd.LeaseGrantRequest'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.LeaseGrantRequest'(Rest, N + 7,
					       X bsl N + Acc, F@_1, F@_2,
					       TrUserData);
'dg_read_field_def_Etcd.LeaseGrantRequest'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_Etcd.LeaseGrantRequest_TTL'(Rest, 0, 0, F@_1,
					       F@_2, TrUserData);
      16 ->
	  'd_field_Etcd.LeaseGrantRequest_ID'(Rest, 0, 0, F@_1,
					      F@_2, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.LeaseGrantRequest'(Rest, 0, 0, F@_1,
						     F@_2, TrUserData);
	    1 ->
		'skip_64_Etcd.LeaseGrantRequest'(Rest, 0, 0, F@_1, F@_2,
						 TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.LeaseGrantRequest'(Rest, 0,
							       0, F@_1, F@_2,
							       TrUserData);
	    3 ->
		'skip_group_Etcd.LeaseGrantRequest'(Rest, Key bsr 3, 0,
						    F@_1, F@_2, TrUserData);
	    5 ->
		'skip_32_Etcd.LeaseGrantRequest'(Rest, 0, 0, F@_1, F@_2,
						 TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.LeaseGrantRequest'(<<>>, 0, 0,
					   F@_1, F@_2, _) ->
    #{'TTL' => F@_1, 'ID' => F@_2}.

'd_field_Etcd.LeaseGrantRequest_TTL'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaseGrantRequest_TTL'(Rest, N + 7,
					 X bsl N + Acc, F@_1, F@_2, TrUserData);
'd_field_Etcd.LeaseGrantRequest_TTL'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, _, F@_2, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.LeaseGrantRequest'(RestF, 0, 0,
						NewFValue, F@_2, TrUserData).

'd_field_Etcd.LeaseGrantRequest_ID'(<<1:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaseGrantRequest_ID'(Rest, N + 7,
					X bsl N + Acc, F@_1, F@_2, TrUserData);
'd_field_Etcd.LeaseGrantRequest_ID'(<<0:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, _, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.LeaseGrantRequest'(RestF, 0, 0,
						F@_1, NewFValue, TrUserData).

'skip_varint_Etcd.LeaseGrantRequest'(<<1:1, _:7,
				       Rest/binary>>,
				     Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_Etcd.LeaseGrantRequest'(Rest, Z1, Z2, F@_1,
					 F@_2, TrUserData);
'skip_varint_Etcd.LeaseGrantRequest'(<<0:1, _:7,
				       Rest/binary>>,
				     Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseGrantRequest'(Rest, Z1,
						Z2, F@_1, F@_2, TrUserData).

'skip_length_delimited_Etcd.LeaseGrantRequest'(<<1:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.LeaseGrantRequest'(Rest,
						   N + 7, X bsl N + Acc, F@_1,
						   F@_2, TrUserData);
'skip_length_delimited_Etcd.LeaseGrantRequest'(<<0:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2,
					       TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.LeaseGrantRequest'(Rest2, 0, 0,
						F@_1, F@_2, TrUserData).

'skip_group_Etcd.LeaseGrantRequest'(Bin, FNum, Z2, F@_1,
				    F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.LeaseGrantRequest'(Rest, 0, Z2,
						F@_1, F@_2, TrUserData).

'skip_32_Etcd.LeaseGrantRequest'(<<_:32, Rest/binary>>,
				 Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseGrantRequest'(Rest, Z1,
						Z2, F@_1, F@_2, TrUserData).

'skip_64_Etcd.LeaseGrantRequest'(<<_:64, Rest/binary>>,
				 Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseGrantRequest'(Rest, Z1,
						Z2, F@_1, F@_2, TrUserData).

'decode_msg_Etcd.LeaseGrantResponse'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseGrantResponse'(Bin, 0, 0,
						 id('$undef', TrUserData),
						 id(0, TrUserData),
						 id(0, TrUserData),
						 id(<<>>, TrUserData),
						 TrUserData).

'dfp_read_field_def_Etcd.LeaseGrantResponse'(<<10,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					     TrUserData) ->
    'd_field_Etcd.LeaseGrantResponse_header'(Rest, Z1, Z2,
					     F@_1, F@_2, F@_3, F@_4,
					     TrUserData);
'dfp_read_field_def_Etcd.LeaseGrantResponse'(<<16,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					     TrUserData) ->
    'd_field_Etcd.LeaseGrantResponse_ID'(Rest, Z1, Z2, F@_1,
					 F@_2, F@_3, F@_4, TrUserData);
'dfp_read_field_def_Etcd.LeaseGrantResponse'(<<24,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					     TrUserData) ->
    'd_field_Etcd.LeaseGrantResponse_TTL'(Rest, Z1, Z2,
					  F@_1, F@_2, F@_3, F@_4, TrUserData);
'dfp_read_field_def_Etcd.LeaseGrantResponse'(<<34,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					     TrUserData) ->
    'd_field_Etcd.LeaseGrantResponse_error'(Rest, Z1, Z2,
					    F@_1, F@_2, F@_3, F@_4, TrUserData);
'dfp_read_field_def_Etcd.LeaseGrantResponse'(<<>>, 0, 0,
					     F@_1, F@_2, F@_3, F@_4, _) ->
    S1 = #{'ID' => F@_2, 'TTL' => F@_3, error => F@_4},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.LeaseGrantResponse'(Other, Z1,
					     Z2, F@_1, F@_2, F@_3, F@_4,
					     TrUserData) ->
    'dg_read_field_def_Etcd.LeaseGrantResponse'(Other, Z1,
						Z2, F@_1, F@_2, F@_3, F@_4,
						TrUserData).

'dg_read_field_def_Etcd.LeaseGrantResponse'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, F@_3, F@_4,
					    TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.LeaseGrantResponse'(Rest, N + 7,
						X bsl N + Acc, F@_1, F@_2, F@_3,
						F@_4, TrUserData);
'dg_read_field_def_Etcd.LeaseGrantResponse'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, F@_3, F@_4,
					    TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.LeaseGrantResponse_header'(Rest, 0, 0,
						   F@_1, F@_2, F@_3, F@_4,
						   TrUserData);
      16 ->
	  'd_field_Etcd.LeaseGrantResponse_ID'(Rest, 0, 0, F@_1,
					       F@_2, F@_3, F@_4, TrUserData);
      24 ->
	  'd_field_Etcd.LeaseGrantResponse_TTL'(Rest, 0, 0, F@_1,
						F@_2, F@_3, F@_4, TrUserData);
      34 ->
	  'd_field_Etcd.LeaseGrantResponse_error'(Rest, 0, 0,
						  F@_1, F@_2, F@_3, F@_4,
						  TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.LeaseGrantResponse'(Rest, 0, 0, F@_1,
						      F@_2, F@_3, F@_4,
						      TrUserData);
	    1 ->
		'skip_64_Etcd.LeaseGrantResponse'(Rest, 0, 0, F@_1,
						  F@_2, F@_3, F@_4, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.LeaseGrantResponse'(Rest, 0,
								0, F@_1, F@_2,
								F@_3, F@_4,
								TrUserData);
	    3 ->
		'skip_group_Etcd.LeaseGrantResponse'(Rest, Key bsr 3, 0,
						     F@_1, F@_2, F@_3, F@_4,
						     TrUserData);
	    5 ->
		'skip_32_Etcd.LeaseGrantResponse'(Rest, 0, 0, F@_1,
						  F@_2, F@_3, F@_4, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.LeaseGrantResponse'(<<>>, 0, 0,
					    F@_1, F@_2, F@_3, F@_4, _) ->
    S1 = #{'ID' => F@_2, 'TTL' => F@_3, error => F@_4},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.LeaseGrantResponse_header'(<<1:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, F@_2, F@_3, F@_4,
					 TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaseGrantResponse_header'(Rest, N + 7,
					     X bsl N + Acc, F@_1, F@_2, F@_3,
					     F@_4, TrUserData);
'd_field_Etcd.LeaseGrantResponse_header'(<<0:1, X:7,
					   Rest/binary>>,
					 N, Acc, Prev, F@_2, F@_3, F@_4,
					 TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.LeaseGrantResponse'(RestF, 0,
						 0,
						 if Prev == '$undef' ->
							NewFValue;
						    true ->
							'merge_msg_Etcd.ResponseHeader'(Prev,
											NewFValue,
											TrUserData)
						 end,
						 F@_2, F@_3, F@_4, TrUserData).

'd_field_Etcd.LeaseGrantResponse_ID'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, F@_3, F@_4, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaseGrantResponse_ID'(Rest, N + 7,
					 X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
					 TrUserData);
'd_field_Etcd.LeaseGrantResponse_ID'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, _, F@_3, F@_4, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.LeaseGrantResponse'(RestF, 0,
						 0, F@_1, NewFValue, F@_3, F@_4,
						 TrUserData).

'd_field_Etcd.LeaseGrantResponse_TTL'(<<1:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, F@_2, F@_3, F@_4,
				      TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaseGrantResponse_TTL'(Rest, N + 7,
					  X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
					  TrUserData);
'd_field_Etcd.LeaseGrantResponse_TTL'(<<0:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, F@_2, _, F@_4,
				      TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.LeaseGrantResponse'(RestF, 0,
						 0, F@_1, F@_2, NewFValue, F@_4,
						 TrUserData).

'd_field_Etcd.LeaseGrantResponse_error'(<<1:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, F@_2, F@_3, F@_4,
					TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaseGrantResponse_error'(Rest, N + 7,
					    X bsl N + Acc, F@_1, F@_2, F@_3,
					    F@_4, TrUserData);
'd_field_Etcd.LeaseGrantResponse_error'(<<0:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, F@_2, F@_3, _,
					TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.LeaseGrantResponse'(RestF, 0,
						 0, F@_1, F@_2, F@_3, NewFValue,
						 TrUserData).

'skip_varint_Etcd.LeaseGrantResponse'(<<1:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, F@_3, F@_4,
				      TrUserData) ->
    'skip_varint_Etcd.LeaseGrantResponse'(Rest, Z1, Z2,
					  F@_1, F@_2, F@_3, F@_4, TrUserData);
'skip_varint_Etcd.LeaseGrantResponse'(<<0:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, F@_3, F@_4,
				      TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseGrantResponse'(Rest, Z1,
						 Z2, F@_1, F@_2, F@_3, F@_4,
						 TrUserData).

'skip_length_delimited_Etcd.LeaseGrantResponse'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.LeaseGrantResponse'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    F@_2, F@_3, F@_4,
						    TrUserData);
'skip_length_delimited_Etcd.LeaseGrantResponse'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.LeaseGrantResponse'(Rest2, 0,
						 0, F@_1, F@_2, F@_3, F@_4,
						 TrUserData).

'skip_group_Etcd.LeaseGrantResponse'(Bin, FNum, Z2,
				     F@_1, F@_2, F@_3, F@_4, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.LeaseGrantResponse'(Rest, 0,
						 Z2, F@_1, F@_2, F@_3, F@_4,
						 TrUserData).

'skip_32_Etcd.LeaseGrantResponse'(<<_:32, Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, F@_3, F@_4, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseGrantResponse'(Rest, Z1,
						 Z2, F@_1, F@_2, F@_3, F@_4,
						 TrUserData).

'skip_64_Etcd.LeaseGrantResponse'(<<_:64, Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, F@_3, F@_4, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseGrantResponse'(Rest, Z1,
						 Z2, F@_1, F@_2, F@_3, F@_4,
						 TrUserData).

'decode_msg_Etcd.LeaseRevokeRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseRevokeRequest'(Bin, 0, 0,
						 id(0, TrUserData), TrUserData).

'dfp_read_field_def_Etcd.LeaseRevokeRequest'(<<8,
					       Rest/binary>>,
					     Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.LeaseRevokeRequest_ID'(Rest, Z1, Z2, F@_1,
					 TrUserData);
'dfp_read_field_def_Etcd.LeaseRevokeRequest'(<<>>, 0, 0,
					     F@_1, _) ->
    #{'ID' => F@_1};
'dfp_read_field_def_Etcd.LeaseRevokeRequest'(Other, Z1,
					     Z2, F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.LeaseRevokeRequest'(Other, Z1,
						Z2, F@_1, TrUserData).

'dg_read_field_def_Etcd.LeaseRevokeRequest'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.LeaseRevokeRequest'(Rest, N + 7,
						X bsl N + Acc, F@_1,
						TrUserData);
'dg_read_field_def_Etcd.LeaseRevokeRequest'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_Etcd.LeaseRevokeRequest_ID'(Rest, 0, 0, F@_1,
					       TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.LeaseRevokeRequest'(Rest, 0, 0, F@_1,
						      TrUserData);
	    1 ->
		'skip_64_Etcd.LeaseRevokeRequest'(Rest, 0, 0, F@_1,
						  TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.LeaseRevokeRequest'(Rest, 0,
								0, F@_1,
								TrUserData);
	    3 ->
		'skip_group_Etcd.LeaseRevokeRequest'(Rest, Key bsr 3, 0,
						     F@_1, TrUserData);
	    5 ->
		'skip_32_Etcd.LeaseRevokeRequest'(Rest, 0, 0, F@_1,
						  TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.LeaseRevokeRequest'(<<>>, 0, 0,
					    F@_1, _) ->
    #{'ID' => F@_1}.

'd_field_Etcd.LeaseRevokeRequest_ID'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaseRevokeRequest_ID'(Rest, N + 7,
					 X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.LeaseRevokeRequest_ID'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, _, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.LeaseRevokeRequest'(RestF, 0,
						 0, NewFValue, TrUserData).

'skip_varint_Etcd.LeaseRevokeRequest'(<<1:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.LeaseRevokeRequest'(Rest, Z1, Z2,
					  F@_1, TrUserData);
'skip_varint_Etcd.LeaseRevokeRequest'(<<0:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseRevokeRequest'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'skip_length_delimited_Etcd.LeaseRevokeRequest'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.LeaseRevokeRequest'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    TrUserData);
'skip_length_delimited_Etcd.LeaseRevokeRequest'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.LeaseRevokeRequest'(Rest2, 0,
						 0, F@_1, TrUserData).

'skip_group_Etcd.LeaseRevokeRequest'(Bin, FNum, Z2,
				     F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.LeaseRevokeRequest'(Rest, 0,
						 Z2, F@_1, TrUserData).

'skip_32_Etcd.LeaseRevokeRequest'(<<_:32, Rest/binary>>,
				  Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseRevokeRequest'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'skip_64_Etcd.LeaseRevokeRequest'(<<_:64, Rest/binary>>,
				  Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseRevokeRequest'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'decode_msg_Etcd.LeaseRevokeResponse'(Bin,
				      TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseRevokeResponse'(Bin, 0, 0,
						  id('$undef', TrUserData),
						  TrUserData).

'dfp_read_field_def_Etcd.LeaseRevokeResponse'(<<10,
						Rest/binary>>,
					      Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.LeaseRevokeResponse_header'(Rest, Z1, Z2,
					      F@_1, TrUserData);
'dfp_read_field_def_Etcd.LeaseRevokeResponse'(<<>>, 0,
					      0, F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.LeaseRevokeResponse'(Other, Z1,
					      Z2, F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.LeaseRevokeResponse'(Other, Z1,
						 Z2, F@_1, TrUserData).

'dg_read_field_def_Etcd.LeaseRevokeResponse'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.LeaseRevokeResponse'(Rest,
						 N + 7, X bsl N + Acc, F@_1,
						 TrUserData);
'dg_read_field_def_Etcd.LeaseRevokeResponse'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.LeaseRevokeResponse_header'(Rest, 0, 0,
						    F@_1, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.LeaseRevokeResponse'(Rest, 0, 0, F@_1,
						       TrUserData);
	    1 ->
		'skip_64_Etcd.LeaseRevokeResponse'(Rest, 0, 0, F@_1,
						   TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.LeaseRevokeResponse'(Rest,
								 0, 0, F@_1,
								 TrUserData);
	    3 ->
		'skip_group_Etcd.LeaseRevokeResponse'(Rest, Key bsr 3,
						      0, F@_1, TrUserData);
	    5 ->
		'skip_32_Etcd.LeaseRevokeResponse'(Rest, 0, 0, F@_1,
						   TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.LeaseRevokeResponse'(<<>>, 0, 0,
					     F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.LeaseRevokeResponse_header'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaseRevokeResponse_header'(Rest, N + 7,
					      X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.LeaseRevokeResponse_header'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.LeaseRevokeResponse'(RestF, 0,
						  0,
						  if Prev == '$undef' ->
							 NewFValue;
						     true ->
							 'merge_msg_Etcd.ResponseHeader'(Prev,
											 NewFValue,
											 TrUserData)
						  end,
						  TrUserData).

'skip_varint_Etcd.LeaseRevokeResponse'(<<1:1, _:7,
					 Rest/binary>>,
				       Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.LeaseRevokeResponse'(Rest, Z1, Z2,
					   F@_1, TrUserData);
'skip_varint_Etcd.LeaseRevokeResponse'(<<0:1, _:7,
					 Rest/binary>>,
				       Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseRevokeResponse'(Rest, Z1,
						  Z2, F@_1, TrUserData).

'skip_length_delimited_Etcd.LeaseRevokeResponse'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.LeaseRevokeResponse'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     TrUserData);
'skip_length_delimited_Etcd.LeaseRevokeResponse'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.LeaseRevokeResponse'(Rest2, 0,
						  0, F@_1, TrUserData).

'skip_group_Etcd.LeaseRevokeResponse'(Bin, FNum, Z2,
				      F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.LeaseRevokeResponse'(Rest, 0,
						  Z2, F@_1, TrUserData).

'skip_32_Etcd.LeaseRevokeResponse'(<<_:32,
				     Rest/binary>>,
				   Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseRevokeResponse'(Rest, Z1,
						  Z2, F@_1, TrUserData).

'skip_64_Etcd.LeaseRevokeResponse'(<<_:64,
				     Rest/binary>>,
				   Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseRevokeResponse'(Rest, Z1,
						  Z2, F@_1, TrUserData).

'decode_msg_Etcd.LeaseCheckpoint'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseCheckpoint'(Bin, 0, 0,
					      id(0, TrUserData),
					      id(0, TrUserData), TrUserData).

'dfp_read_field_def_Etcd.LeaseCheckpoint'(<<8,
					    Rest/binary>>,
					  Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.LeaseCheckpoint_ID'(Rest, Z1, Z2, F@_1,
				      F@_2, TrUserData);
'dfp_read_field_def_Etcd.LeaseCheckpoint'(<<16,
					    Rest/binary>>,
					  Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.LeaseCheckpoint_remaining_TTL'(Rest, Z1,
						 Z2, F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.LeaseCheckpoint'(<<>>, 0, 0,
					  F@_1, F@_2, _) ->
    #{'ID' => F@_1, remaining_TTL => F@_2};
'dfp_read_field_def_Etcd.LeaseCheckpoint'(Other, Z1, Z2,
					  F@_1, F@_2, TrUserData) ->
    'dg_read_field_def_Etcd.LeaseCheckpoint'(Other, Z1, Z2,
					     F@_1, F@_2, TrUserData).

'dg_read_field_def_Etcd.LeaseCheckpoint'(<<1:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, F@_2, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.LeaseCheckpoint'(Rest, N + 7,
					     X bsl N + Acc, F@_1, F@_2,
					     TrUserData);
'dg_read_field_def_Etcd.LeaseCheckpoint'(<<0:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, F@_2, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_Etcd.LeaseCheckpoint_ID'(Rest, 0, 0, F@_1,
					    F@_2, TrUserData);
      16 ->
	  'd_field_Etcd.LeaseCheckpoint_remaining_TTL'(Rest, 0, 0,
						       F@_1, F@_2, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.LeaseCheckpoint'(Rest, 0, 0, F@_1,
						   F@_2, TrUserData);
	    1 ->
		'skip_64_Etcd.LeaseCheckpoint'(Rest, 0, 0, F@_1, F@_2,
					       TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.LeaseCheckpoint'(Rest, 0, 0,
							     F@_1, F@_2,
							     TrUserData);
	    3 ->
		'skip_group_Etcd.LeaseCheckpoint'(Rest, Key bsr 3, 0,
						  F@_1, F@_2, TrUserData);
	    5 ->
		'skip_32_Etcd.LeaseCheckpoint'(Rest, 0, 0, F@_1, F@_2,
					       TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.LeaseCheckpoint'(<<>>, 0, 0,
					 F@_1, F@_2, _) ->
    #{'ID' => F@_1, remaining_TTL => F@_2}.

'd_field_Etcd.LeaseCheckpoint_ID'(<<1:1, X:7,
				    Rest/binary>>,
				  N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaseCheckpoint_ID'(Rest, N + 7,
				      X bsl N + Acc, F@_1, F@_2, TrUserData);
'd_field_Etcd.LeaseCheckpoint_ID'(<<0:1, X:7,
				    Rest/binary>>,
				  N, Acc, _, F@_2, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.LeaseCheckpoint'(RestF, 0, 0,
					      NewFValue, F@_2, TrUserData).

'd_field_Etcd.LeaseCheckpoint_remaining_TTL'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaseCheckpoint_remaining_TTL'(Rest,
						 N + 7, X bsl N + Acc, F@_1,
						 F@_2, TrUserData);
'd_field_Etcd.LeaseCheckpoint_remaining_TTL'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, _, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.LeaseCheckpoint'(RestF, 0, 0,
					      F@_1, NewFValue, TrUserData).

'skip_varint_Etcd.LeaseCheckpoint'(<<1:1, _:7,
				     Rest/binary>>,
				   Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_Etcd.LeaseCheckpoint'(Rest, Z1, Z2, F@_1,
				       F@_2, TrUserData);
'skip_varint_Etcd.LeaseCheckpoint'(<<0:1, _:7,
				     Rest/binary>>,
				   Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseCheckpoint'(Rest, Z1, Z2,
					      F@_1, F@_2, TrUserData).

'skip_length_delimited_Etcd.LeaseCheckpoint'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.LeaseCheckpoint'(Rest,
						 N + 7, X bsl N + Acc, F@_1,
						 F@_2, TrUserData);
'skip_length_delimited_Etcd.LeaseCheckpoint'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.LeaseCheckpoint'(Rest2, 0, 0,
					      F@_1, F@_2, TrUserData).

'skip_group_Etcd.LeaseCheckpoint'(Bin, FNum, Z2, F@_1,
				  F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.LeaseCheckpoint'(Rest, 0, Z2,
					      F@_1, F@_2, TrUserData).

'skip_32_Etcd.LeaseCheckpoint'(<<_:32, Rest/binary>>,
			       Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseCheckpoint'(Rest, Z1, Z2,
					      F@_1, F@_2, TrUserData).

'skip_64_Etcd.LeaseCheckpoint'(<<_:64, Rest/binary>>,
			       Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseCheckpoint'(Rest, Z1, Z2,
					      F@_1, F@_2, TrUserData).

'decode_msg_Etcd.LeaseCheckpointRequest'(Bin,
					 TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseCheckpointRequest'(Bin, 0,
						     0, id([], TrUserData),
						     TrUserData).

'dfp_read_field_def_Etcd.LeaseCheckpointRequest'(<<10,
						   Rest/binary>>,
						 Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.LeaseCheckpointRequest_checkpoints'(Rest,
						      Z1, Z2, F@_1, TrUserData);
'dfp_read_field_def_Etcd.LeaseCheckpointRequest'(<<>>,
						 0, 0, R1, TrUserData) ->
    S1 = #{},
    if R1 == '$undef' -> S1;
       true ->
	   S1#{checkpoints => lists_reverse(R1, TrUserData)}
    end;
'dfp_read_field_def_Etcd.LeaseCheckpointRequest'(Other,
						 Z1, Z2, F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.LeaseCheckpointRequest'(Other,
						    Z1, Z2, F@_1, TrUserData).

'dg_read_field_def_Etcd.LeaseCheckpointRequest'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.LeaseCheckpointRequest'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    TrUserData);
'dg_read_field_def_Etcd.LeaseCheckpointRequest'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.LeaseCheckpointRequest_checkpoints'(Rest,
							    0, 0, F@_1,
							    TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.LeaseCheckpointRequest'(Rest, 0, 0,
							  F@_1, TrUserData);
	    1 ->
		'skip_64_Etcd.LeaseCheckpointRequest'(Rest, 0, 0, F@_1,
						      TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.LeaseCheckpointRequest'(Rest,
								    0, 0, F@_1,
								    TrUserData);
	    3 ->
		'skip_group_Etcd.LeaseCheckpointRequest'(Rest,
							 Key bsr 3, 0, F@_1,
							 TrUserData);
	    5 ->
		'skip_32_Etcd.LeaseCheckpointRequest'(Rest, 0, 0, F@_1,
						      TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.LeaseCheckpointRequest'(<<>>, 0,
						0, R1, TrUserData) ->
    S1 = #{},
    if R1 == '$undef' -> S1;
       true ->
	   S1#{checkpoints => lists_reverse(R1, TrUserData)}
    end.

'd_field_Etcd.LeaseCheckpointRequest_checkpoints'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaseCheckpointRequest_checkpoints'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, TrUserData);
'd_field_Etcd.LeaseCheckpointRequest_checkpoints'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.LeaseCheckpoint'(Bs,
								 TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.LeaseCheckpointRequest'(RestF,
						     0, 0,
						     cons(NewFValue, Prev,
							  TrUserData),
						     TrUserData).

'skip_varint_Etcd.LeaseCheckpointRequest'(<<1:1, _:7,
					    Rest/binary>>,
					  Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.LeaseCheckpointRequest'(Rest, Z1, Z2,
					      F@_1, TrUserData);
'skip_varint_Etcd.LeaseCheckpointRequest'(<<0:1, _:7,
					    Rest/binary>>,
					  Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseCheckpointRequest'(Rest,
						     Z1, Z2, F@_1, TrUserData).

'skip_length_delimited_Etcd.LeaseCheckpointRequest'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.LeaseCheckpointRequest'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, TrUserData);
'skip_length_delimited_Etcd.LeaseCheckpointRequest'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.LeaseCheckpointRequest'(Rest2,
						     0, 0, F@_1, TrUserData).

'skip_group_Etcd.LeaseCheckpointRequest'(Bin, FNum, Z2,
					 F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.LeaseCheckpointRequest'(Rest,
						     0, Z2, F@_1, TrUserData).

'skip_32_Etcd.LeaseCheckpointRequest'(<<_:32,
					Rest/binary>>,
				      Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseCheckpointRequest'(Rest,
						     Z1, Z2, F@_1, TrUserData).

'skip_64_Etcd.LeaseCheckpointRequest'(<<_:64,
					Rest/binary>>,
				      Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseCheckpointRequest'(Rest,
						     Z1, Z2, F@_1, TrUserData).

'decode_msg_Etcd.LeaseCheckpointResponse'(Bin,
					  TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseCheckpointResponse'(Bin,
						      0, 0,
						      id('$undef', TrUserData),
						      TrUserData).

'dfp_read_field_def_Etcd.LeaseCheckpointResponse'(<<10,
						    Rest/binary>>,
						  Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.LeaseCheckpointResponse_header'(Rest, Z1,
						  Z2, F@_1, TrUserData);
'dfp_read_field_def_Etcd.LeaseCheckpointResponse'(<<>>,
						  0, 0, F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.LeaseCheckpointResponse'(Other,
						  Z1, Z2, F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.LeaseCheckpointResponse'(Other,
						     Z1, Z2, F@_1, TrUserData).

'dg_read_field_def_Etcd.LeaseCheckpointResponse'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.LeaseCheckpointResponse'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     TrUserData);
'dg_read_field_def_Etcd.LeaseCheckpointResponse'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.LeaseCheckpointResponse_header'(Rest, 0,
							0, F@_1, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.LeaseCheckpointResponse'(Rest, 0, 0,
							   F@_1, TrUserData);
	    1 ->
		'skip_64_Etcd.LeaseCheckpointResponse'(Rest, 0, 0, F@_1,
						       TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.LeaseCheckpointResponse'(Rest,
								     0, 0, F@_1,
								     TrUserData);
	    3 ->
		'skip_group_Etcd.LeaseCheckpointResponse'(Rest,
							  Key bsr 3, 0, F@_1,
							  TrUserData);
	    5 ->
		'skip_32_Etcd.LeaseCheckpointResponse'(Rest, 0, 0, F@_1,
						       TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.LeaseCheckpointResponse'(<<>>,
						 0, 0, F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.LeaseCheckpointResponse_header'(<<1:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaseCheckpointResponse_header'(Rest,
						  N + 7, X bsl N + Acc, F@_1,
						  TrUserData);
'd_field_Etcd.LeaseCheckpointResponse_header'(<<0:1,
						X:7, Rest/binary>>,
					      N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.LeaseCheckpointResponse'(RestF,
						      0, 0,
						      if Prev == '$undef' ->
							     NewFValue;
							 true ->
							     'merge_msg_Etcd.ResponseHeader'(Prev,
											     NewFValue,
											     TrUserData)
						      end,
						      TrUserData).

'skip_varint_Etcd.LeaseCheckpointResponse'(<<1:1, _:7,
					     Rest/binary>>,
					   Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.LeaseCheckpointResponse'(Rest, Z1, Z2,
					       F@_1, TrUserData);
'skip_varint_Etcd.LeaseCheckpointResponse'(<<0:1, _:7,
					     Rest/binary>>,
					   Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseCheckpointResponse'(Rest,
						      Z1, Z2, F@_1, TrUserData).

'skip_length_delimited_Etcd.LeaseCheckpointResponse'(<<1:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.LeaseCheckpointResponse'(Rest,
							 N + 7, X bsl N + Acc,
							 F@_1, TrUserData);
'skip_length_delimited_Etcd.LeaseCheckpointResponse'(<<0:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1,
						     TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.LeaseCheckpointResponse'(Rest2,
						      0, 0, F@_1, TrUserData).

'skip_group_Etcd.LeaseCheckpointResponse'(Bin, FNum, Z2,
					  F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.LeaseCheckpointResponse'(Rest,
						      0, Z2, F@_1, TrUserData).

'skip_32_Etcd.LeaseCheckpointResponse'(<<_:32,
					 Rest/binary>>,
				       Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseCheckpointResponse'(Rest,
						      Z1, Z2, F@_1, TrUserData).

'skip_64_Etcd.LeaseCheckpointResponse'(<<_:64,
					 Rest/binary>>,
				       Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseCheckpointResponse'(Rest,
						      Z1, Z2, F@_1, TrUserData).

'decode_msg_Etcd.LeaseKeepAliveRequest'(Bin,
					TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseKeepAliveRequest'(Bin, 0,
						    0, id(0, TrUserData),
						    TrUserData).

'dfp_read_field_def_Etcd.LeaseKeepAliveRequest'(<<8,
						  Rest/binary>>,
						Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.LeaseKeepAliveRequest_ID'(Rest, Z1, Z2,
					    F@_1, TrUserData);
'dfp_read_field_def_Etcd.LeaseKeepAliveRequest'(<<>>, 0,
						0, F@_1, _) ->
    #{'ID' => F@_1};
'dfp_read_field_def_Etcd.LeaseKeepAliveRequest'(Other,
						Z1, Z2, F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.LeaseKeepAliveRequest'(Other,
						   Z1, Z2, F@_1, TrUserData).

'dg_read_field_def_Etcd.LeaseKeepAliveRequest'(<<1:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.LeaseKeepAliveRequest'(Rest,
						   N + 7, X bsl N + Acc, F@_1,
						   TrUserData);
'dg_read_field_def_Etcd.LeaseKeepAliveRequest'(<<0:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_Etcd.LeaseKeepAliveRequest_ID'(Rest, 0, 0,
						  F@_1, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.LeaseKeepAliveRequest'(Rest, 0, 0,
							 F@_1, TrUserData);
	    1 ->
		'skip_64_Etcd.LeaseKeepAliveRequest'(Rest, 0, 0, F@_1,
						     TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.LeaseKeepAliveRequest'(Rest,
								   0, 0, F@_1,
								   TrUserData);
	    3 ->
		'skip_group_Etcd.LeaseKeepAliveRequest'(Rest, Key bsr 3,
							0, F@_1, TrUserData);
	    5 ->
		'skip_32_Etcd.LeaseKeepAliveRequest'(Rest, 0, 0, F@_1,
						     TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.LeaseKeepAliveRequest'(<<>>, 0,
					       0, F@_1, _) ->
    #{'ID' => F@_1}.

'd_field_Etcd.LeaseKeepAliveRequest_ID'(<<1:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaseKeepAliveRequest_ID'(Rest, N + 7,
					    X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.LeaseKeepAliveRequest_ID'(<<0:1, X:7,
					  Rest/binary>>,
					N, Acc, _, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.LeaseKeepAliveRequest'(RestF,
						    0, 0, NewFValue,
						    TrUserData).

'skip_varint_Etcd.LeaseKeepAliveRequest'(<<1:1, _:7,
					   Rest/binary>>,
					 Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.LeaseKeepAliveRequest'(Rest, Z1, Z2,
					     F@_1, TrUserData);
'skip_varint_Etcd.LeaseKeepAliveRequest'(<<0:1, _:7,
					   Rest/binary>>,
					 Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseKeepAliveRequest'(Rest,
						    Z1, Z2, F@_1, TrUserData).

'skip_length_delimited_Etcd.LeaseKeepAliveRequest'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.LeaseKeepAliveRequest'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, TrUserData);
'skip_length_delimited_Etcd.LeaseKeepAliveRequest'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.LeaseKeepAliveRequest'(Rest2,
						    0, 0, F@_1, TrUserData).

'skip_group_Etcd.LeaseKeepAliveRequest'(Bin, FNum, Z2,
					F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.LeaseKeepAliveRequest'(Rest, 0,
						    Z2, F@_1, TrUserData).

'skip_32_Etcd.LeaseKeepAliveRequest'(<<_:32,
				       Rest/binary>>,
				     Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseKeepAliveRequest'(Rest,
						    Z1, Z2, F@_1, TrUserData).

'skip_64_Etcd.LeaseKeepAliveRequest'(<<_:64,
				       Rest/binary>>,
				     Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseKeepAliveRequest'(Rest,
						    Z1, Z2, F@_1, TrUserData).

'decode_msg_Etcd.LeaseKeepAliveResponse'(Bin,
					 TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseKeepAliveResponse'(Bin, 0,
						     0,
						     id('$undef', TrUserData),
						     id(0, TrUserData),
						     id(0, TrUserData),
						     TrUserData).

'dfp_read_field_def_Etcd.LeaseKeepAliveResponse'(<<10,
						   Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3,
						 TrUserData) ->
    'd_field_Etcd.LeaseKeepAliveResponse_header'(Rest, Z1,
						 Z2, F@_1, F@_2, F@_3,
						 TrUserData);
'dfp_read_field_def_Etcd.LeaseKeepAliveResponse'(<<16,
						   Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3,
						 TrUserData) ->
    'd_field_Etcd.LeaseKeepAliveResponse_ID'(Rest, Z1, Z2,
					     F@_1, F@_2, F@_3, TrUserData);
'dfp_read_field_def_Etcd.LeaseKeepAliveResponse'(<<24,
						   Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3,
						 TrUserData) ->
    'd_field_Etcd.LeaseKeepAliveResponse_TTL'(Rest, Z1, Z2,
					      F@_1, F@_2, F@_3, TrUserData);
'dfp_read_field_def_Etcd.LeaseKeepAliveResponse'(<<>>,
						 0, 0, F@_1, F@_2, F@_3, _) ->
    S1 = #{'ID' => F@_2, 'TTL' => F@_3},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.LeaseKeepAliveResponse'(Other,
						 Z1, Z2, F@_1, F@_2, F@_3,
						 TrUserData) ->
    'dg_read_field_def_Etcd.LeaseKeepAliveResponse'(Other,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    TrUserData).

'dg_read_field_def_Etcd.LeaseKeepAliveResponse'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3,
						TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.LeaseKeepAliveResponse'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    F@_2, F@_3, TrUserData);
'dg_read_field_def_Etcd.LeaseKeepAliveResponse'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3,
						TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.LeaseKeepAliveResponse_header'(Rest, 0, 0,
						       F@_1, F@_2, F@_3,
						       TrUserData);
      16 ->
	  'd_field_Etcd.LeaseKeepAliveResponse_ID'(Rest, 0, 0,
						   F@_1, F@_2, F@_3,
						   TrUserData);
      24 ->
	  'd_field_Etcd.LeaseKeepAliveResponse_TTL'(Rest, 0, 0,
						    F@_1, F@_2, F@_3,
						    TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.LeaseKeepAliveResponse'(Rest, 0, 0,
							  F@_1, F@_2, F@_3,
							  TrUserData);
	    1 ->
		'skip_64_Etcd.LeaseKeepAliveResponse'(Rest, 0, 0, F@_1,
						      F@_2, F@_3, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.LeaseKeepAliveResponse'(Rest,
								    0, 0, F@_1,
								    F@_2, F@_3,
								    TrUserData);
	    3 ->
		'skip_group_Etcd.LeaseKeepAliveResponse'(Rest,
							 Key bsr 3, 0, F@_1,
							 F@_2, F@_3,
							 TrUserData);
	    5 ->
		'skip_32_Etcd.LeaseKeepAliveResponse'(Rest, 0, 0, F@_1,
						      F@_2, F@_3, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.LeaseKeepAliveResponse'(<<>>, 0,
						0, F@_1, F@_2, F@_3, _) ->
    S1 = #{'ID' => F@_2, 'TTL' => F@_3},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.LeaseKeepAliveResponse_header'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, F@_3,
					     TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaseKeepAliveResponse_header'(Rest,
						 N + 7, X bsl N + Acc, F@_1,
						 F@_2, F@_3, TrUserData);
'd_field_Etcd.LeaseKeepAliveResponse_header'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, Prev, F@_2, F@_3,
					     TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.LeaseKeepAliveResponse'(RestF,
						     0, 0,
						     if Prev == '$undef' ->
							    NewFValue;
							true ->
							    'merge_msg_Etcd.ResponseHeader'(Prev,
											    NewFValue,
											    TrUserData)
						     end,
						     F@_2, F@_3, TrUserData).

'd_field_Etcd.LeaseKeepAliveResponse_ID'(<<1:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaseKeepAliveResponse_ID'(Rest, N + 7,
					     X bsl N + Acc, F@_1, F@_2, F@_3,
					     TrUserData);
'd_field_Etcd.LeaseKeepAliveResponse_ID'(<<0:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, _, F@_3, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.LeaseKeepAliveResponse'(RestF,
						     0, 0, F@_1, NewFValue,
						     F@_3, TrUserData).

'd_field_Etcd.LeaseKeepAliveResponse_TTL'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaseKeepAliveResponse_TTL'(Rest, N + 7,
					      X bsl N + Acc, F@_1, F@_2, F@_3,
					      TrUserData);
'd_field_Etcd.LeaseKeepAliveResponse_TTL'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, _, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.LeaseKeepAliveResponse'(RestF,
						     0, 0, F@_1, F@_2,
						     NewFValue, TrUserData).

'skip_varint_Etcd.LeaseKeepAliveResponse'(<<1:1, _:7,
					    Rest/binary>>,
					  Z1, Z2, F@_1, F@_2, F@_3,
					  TrUserData) ->
    'skip_varint_Etcd.LeaseKeepAliveResponse'(Rest, Z1, Z2,
					      F@_1, F@_2, F@_3, TrUserData);
'skip_varint_Etcd.LeaseKeepAliveResponse'(<<0:1, _:7,
					    Rest/binary>>,
					  Z1, Z2, F@_1, F@_2, F@_3,
					  TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseKeepAliveResponse'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     TrUserData).

'skip_length_delimited_Etcd.LeaseKeepAliveResponse'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.LeaseKeepAliveResponse'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, F@_2, F@_3,
							TrUserData);
'skip_length_delimited_Etcd.LeaseKeepAliveResponse'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.LeaseKeepAliveResponse'(Rest2,
						     0, 0, F@_1, F@_2, F@_3,
						     TrUserData).

'skip_group_Etcd.LeaseKeepAliveResponse'(Bin, FNum, Z2,
					 F@_1, F@_2, F@_3, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.LeaseKeepAliveResponse'(Rest,
						     0, Z2, F@_1, F@_2, F@_3,
						     TrUserData).

'skip_32_Etcd.LeaseKeepAliveResponse'(<<_:32,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseKeepAliveResponse'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     TrUserData).

'skip_64_Etcd.LeaseKeepAliveResponse'(<<_:64,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseKeepAliveResponse'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     TrUserData).

'decode_msg_Etcd.LeaseTimeToLiveRequest'(Bin,
					 TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseTimeToLiveRequest'(Bin, 0,
						     0, id(0, TrUserData),
						     id(false, TrUserData),
						     TrUserData).

'dfp_read_field_def_Etcd.LeaseTimeToLiveRequest'(<<8,
						   Rest/binary>>,
						 Z1, Z2, F@_1, F@_2,
						 TrUserData) ->
    'd_field_Etcd.LeaseTimeToLiveRequest_ID'(Rest, Z1, Z2,
					     F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.LeaseTimeToLiveRequest'(<<16,
						   Rest/binary>>,
						 Z1, Z2, F@_1, F@_2,
						 TrUserData) ->
    'd_field_Etcd.LeaseTimeToLiveRequest_keys'(Rest, Z1, Z2,
					       F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.LeaseTimeToLiveRequest'(<<>>,
						 0, 0, F@_1, F@_2, _) ->
    #{'ID' => F@_1, keys => F@_2};
'dfp_read_field_def_Etcd.LeaseTimeToLiveRequest'(Other,
						 Z1, Z2, F@_1, F@_2,
						 TrUserData) ->
    'dg_read_field_def_Etcd.LeaseTimeToLiveRequest'(Other,
						    Z1, Z2, F@_1, F@_2,
						    TrUserData).

'dg_read_field_def_Etcd.LeaseTimeToLiveRequest'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.LeaseTimeToLiveRequest'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    F@_2, TrUserData);
'dg_read_field_def_Etcd.LeaseTimeToLiveRequest'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2,
						TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_Etcd.LeaseTimeToLiveRequest_ID'(Rest, 0, 0,
						   F@_1, F@_2, TrUserData);
      16 ->
	  'd_field_Etcd.LeaseTimeToLiveRequest_keys'(Rest, 0, 0,
						     F@_1, F@_2, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.LeaseTimeToLiveRequest'(Rest, 0, 0,
							  F@_1, F@_2,
							  TrUserData);
	    1 ->
		'skip_64_Etcd.LeaseTimeToLiveRequest'(Rest, 0, 0, F@_1,
						      F@_2, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.LeaseTimeToLiveRequest'(Rest,
								    0, 0, F@_1,
								    F@_2,
								    TrUserData);
	    3 ->
		'skip_group_Etcd.LeaseTimeToLiveRequest'(Rest,
							 Key bsr 3, 0, F@_1,
							 F@_2, TrUserData);
	    5 ->
		'skip_32_Etcd.LeaseTimeToLiveRequest'(Rest, 0, 0, F@_1,
						      F@_2, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.LeaseTimeToLiveRequest'(<<>>, 0,
						0, F@_1, F@_2, _) ->
    #{'ID' => F@_1, keys => F@_2}.

'd_field_Etcd.LeaseTimeToLiveRequest_ID'(<<1:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaseTimeToLiveRequest_ID'(Rest, N + 7,
					     X bsl N + Acc, F@_1, F@_2,
					     TrUserData);
'd_field_Etcd.LeaseTimeToLiveRequest_ID'(<<0:1, X:7,
					   Rest/binary>>,
					 N, Acc, _, F@_2, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.LeaseTimeToLiveRequest'(RestF,
						     0, 0, NewFValue, F@_2,
						     TrUserData).

'd_field_Etcd.LeaseTimeToLiveRequest_keys'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaseTimeToLiveRequest_keys'(Rest, N + 7,
					       X bsl N + Acc, F@_1, F@_2,
					       TrUserData);
'd_field_Etcd.LeaseTimeToLiveRequest_keys'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, _, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.LeaseTimeToLiveRequest'(RestF,
						     0, 0, F@_1, NewFValue,
						     TrUserData).

'skip_varint_Etcd.LeaseTimeToLiveRequest'(<<1:1, _:7,
					    Rest/binary>>,
					  Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_Etcd.LeaseTimeToLiveRequest'(Rest, Z1, Z2,
					      F@_1, F@_2, TrUserData);
'skip_varint_Etcd.LeaseTimeToLiveRequest'(<<0:1, _:7,
					    Rest/binary>>,
					  Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseTimeToLiveRequest'(Rest,
						     Z1, Z2, F@_1, F@_2,
						     TrUserData).

'skip_length_delimited_Etcd.LeaseTimeToLiveRequest'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2,
						    TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.LeaseTimeToLiveRequest'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, F@_2, TrUserData);
'skip_length_delimited_Etcd.LeaseTimeToLiveRequest'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2,
						    TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.LeaseTimeToLiveRequest'(Rest2,
						     0, 0, F@_1, F@_2,
						     TrUserData).

'skip_group_Etcd.LeaseTimeToLiveRequest'(Bin, FNum, Z2,
					 F@_1, F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.LeaseTimeToLiveRequest'(Rest,
						     0, Z2, F@_1, F@_2,
						     TrUserData).

'skip_32_Etcd.LeaseTimeToLiveRequest'(<<_:32,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseTimeToLiveRequest'(Rest,
						     Z1, Z2, F@_1, F@_2,
						     TrUserData).

'skip_64_Etcd.LeaseTimeToLiveRequest'(<<_:64,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseTimeToLiveRequest'(Rest,
						     Z1, Z2, F@_1, F@_2,
						     TrUserData).

'decode_msg_Etcd.LeaseTimeToLiveResponse'(Bin,
					  TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseTimeToLiveResponse'(Bin,
						      0, 0,
						      id('$undef', TrUserData),
						      id(0, TrUserData),
						      id(0, TrUserData),
						      id(0, TrUserData),
						      id([], TrUserData),
						      TrUserData).

'dfp_read_field_def_Etcd.LeaseTimeToLiveResponse'(<<10,
						    Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, TrUserData) ->
    'd_field_Etcd.LeaseTimeToLiveResponse_header'(Rest, Z1,
						  Z2, F@_1, F@_2, F@_3, F@_4,
						  F@_5, TrUserData);
'dfp_read_field_def_Etcd.LeaseTimeToLiveResponse'(<<16,
						    Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, TrUserData) ->
    'd_field_Etcd.LeaseTimeToLiveResponse_ID'(Rest, Z1, Z2,
					      F@_1, F@_2, F@_3, F@_4, F@_5,
					      TrUserData);
'dfp_read_field_def_Etcd.LeaseTimeToLiveResponse'(<<24,
						    Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, TrUserData) ->
    'd_field_Etcd.LeaseTimeToLiveResponse_TTL'(Rest, Z1, Z2,
					       F@_1, F@_2, F@_3, F@_4, F@_5,
					       TrUserData);
'dfp_read_field_def_Etcd.LeaseTimeToLiveResponse'(<<32,
						    Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, TrUserData) ->
    'd_field_Etcd.LeaseTimeToLiveResponse_grantedTTL'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, TrUserData);
'dfp_read_field_def_Etcd.LeaseTimeToLiveResponse'(<<42,
						    Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, TrUserData) ->
    'd_field_Etcd.LeaseTimeToLiveResponse_keys'(Rest, Z1,
						Z2, F@_1, F@_2, F@_3, F@_4,
						F@_5, TrUserData);
'dfp_read_field_def_Etcd.LeaseTimeToLiveResponse'(<<>>,
						  0, 0, F@_1, F@_2, F@_3, F@_4,
						  R1, TrUserData) ->
    S1 = #{'ID' => F@_2, 'TTL' => F@_3, grantedTTL => F@_4,
	   keys => lists_reverse(R1, TrUserData)},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.LeaseTimeToLiveResponse'(Other,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, TrUserData) ->
    'dg_read_field_def_Etcd.LeaseTimeToLiveResponse'(Other,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, TrUserData).

'dg_read_field_def_Etcd.LeaseTimeToLiveResponse'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.LeaseTimeToLiveResponse'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     F@_2, F@_3, F@_4, F@_5,
						     TrUserData);
'dg_read_field_def_Etcd.LeaseTimeToLiveResponse'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.LeaseTimeToLiveResponse_header'(Rest, 0,
							0, F@_1, F@_2, F@_3,
							F@_4, F@_5, TrUserData);
      16 ->
	  'd_field_Etcd.LeaseTimeToLiveResponse_ID'(Rest, 0, 0,
						    F@_1, F@_2, F@_3, F@_4,
						    F@_5, TrUserData);
      24 ->
	  'd_field_Etcd.LeaseTimeToLiveResponse_TTL'(Rest, 0, 0,
						     F@_1, F@_2, F@_3, F@_4,
						     F@_5, TrUserData);
      32 ->
	  'd_field_Etcd.LeaseTimeToLiveResponse_grantedTTL'(Rest,
							    0, 0, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    TrUserData);
      42 ->
	  'd_field_Etcd.LeaseTimeToLiveResponse_keys'(Rest, 0, 0,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.LeaseTimeToLiveResponse'(Rest, 0, 0,
							   F@_1, F@_2, F@_3,
							   F@_4, F@_5,
							   TrUserData);
	    1 ->
		'skip_64_Etcd.LeaseTimeToLiveResponse'(Rest, 0, 0, F@_1,
						       F@_2, F@_3, F@_4, F@_5,
						       TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.LeaseTimeToLiveResponse'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     F@_4, F@_5,
								     TrUserData);
	    3 ->
		'skip_group_Etcd.LeaseTimeToLiveResponse'(Rest,
							  Key bsr 3, 0, F@_1,
							  F@_2, F@_3, F@_4,
							  F@_5, TrUserData);
	    5 ->
		'skip_32_Etcd.LeaseTimeToLiveResponse'(Rest, 0, 0, F@_1,
						       F@_2, F@_3, F@_4, F@_5,
						       TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.LeaseTimeToLiveResponse'(<<>>,
						 0, 0, F@_1, F@_2, F@_3, F@_4,
						 R1, TrUserData) ->
    S1 = #{'ID' => F@_2, 'TTL' => F@_3, grantedTTL => F@_4,
	   keys => lists_reverse(R1, TrUserData)},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.LeaseTimeToLiveResponse_header'(<<1:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, F@_3, F@_4,
					      F@_5, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaseTimeToLiveResponse_header'(Rest,
						  N + 7, X bsl N + Acc, F@_1,
						  F@_2, F@_3, F@_4, F@_5,
						  TrUserData);
'd_field_Etcd.LeaseTimeToLiveResponse_header'(<<0:1,
						X:7, Rest/binary>>,
					      N, Acc, Prev, F@_2, F@_3, F@_4,
					      F@_5, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.LeaseTimeToLiveResponse'(RestF,
						      0, 0,
						      if Prev == '$undef' ->
							     NewFValue;
							 true ->
							     'merge_msg_Etcd.ResponseHeader'(Prev,
											     NewFValue,
											     TrUserData)
						      end,
						      F@_2, F@_3, F@_4, F@_5,
						      TrUserData).

'd_field_Etcd.LeaseTimeToLiveResponse_ID'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					  TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaseTimeToLiveResponse_ID'(Rest, N + 7,
					      X bsl N + Acc, F@_1, F@_2, F@_3,
					      F@_4, F@_5, TrUserData);
'd_field_Etcd.LeaseTimeToLiveResponse_ID'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, _, F@_3, F@_4, F@_5,
					  TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.LeaseTimeToLiveResponse'(RestF,
						      0, 0, F@_1, NewFValue,
						      F@_3, F@_4, F@_5,
						      TrUserData).

'd_field_Etcd.LeaseTimeToLiveResponse_TTL'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					   TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaseTimeToLiveResponse_TTL'(Rest, N + 7,
					       X bsl N + Acc, F@_1, F@_2, F@_3,
					       F@_4, F@_5, TrUserData);
'd_field_Etcd.LeaseTimeToLiveResponse_TTL'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, _, F@_4, F@_5,
					   TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.LeaseTimeToLiveResponse'(RestF,
						      0, 0, F@_1, F@_2,
						      NewFValue, F@_4, F@_5,
						      TrUserData).

'd_field_Etcd.LeaseTimeToLiveResponse_grantedTTL'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaseTimeToLiveResponse_grantedTTL'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, TrUserData);
'd_field_Etcd.LeaseTimeToLiveResponse_grantedTTL'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3, _,
						  F@_5, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.LeaseTimeToLiveResponse'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      NewFValue, F@_5,
						      TrUserData).

'd_field_Etcd.LeaseTimeToLiveResponse_keys'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, F@_3, F@_4,
					    F@_5, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaseTimeToLiveResponse_keys'(Rest, N + 7,
						X bsl N + Acc, F@_1, F@_2, F@_3,
						F@_4, F@_5, TrUserData);
'd_field_Etcd.LeaseTimeToLiveResponse_keys'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, F@_3, F@_4,
					    Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.LeaseTimeToLiveResponse'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4,
						      cons(NewFValue, Prev,
							   TrUserData),
						      TrUserData).

'skip_varint_Etcd.LeaseTimeToLiveResponse'(<<1:1, _:7,
					     Rest/binary>>,
					   Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					   TrUserData) ->
    'skip_varint_Etcd.LeaseTimeToLiveResponse'(Rest, Z1, Z2,
					       F@_1, F@_2, F@_3, F@_4, F@_5,
					       TrUserData);
'skip_varint_Etcd.LeaseTimeToLiveResponse'(<<0:1, _:7,
					     Rest/binary>>,
					   Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					   TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseTimeToLiveResponse'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, TrUserData).

'skip_length_delimited_Etcd.LeaseTimeToLiveResponse'(<<1:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.LeaseTimeToLiveResponse'(Rest,
							 N + 7, X bsl N + Acc,
							 F@_1, F@_2, F@_3, F@_4,
							 F@_5, TrUserData);
'skip_length_delimited_Etcd.LeaseTimeToLiveResponse'(<<0:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.LeaseTimeToLiveResponse'(Rest2,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, F@_5, TrUserData).

'skip_group_Etcd.LeaseTimeToLiveResponse'(Bin, FNum, Z2,
					  F@_1, F@_2, F@_3, F@_4, F@_5,
					  TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.LeaseTimeToLiveResponse'(Rest,
						      0, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, TrUserData).

'skip_32_Etcd.LeaseTimeToLiveResponse'(<<_:32,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				       TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseTimeToLiveResponse'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, TrUserData).

'skip_64_Etcd.LeaseTimeToLiveResponse'(<<_:64,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				       TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseTimeToLiveResponse'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, TrUserData).

'decode_msg_Etcd.LeaseLeasesRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseLeasesRequest'(Bin, 0, 0,
						 TrUserData).

'dfp_read_field_def_Etcd.LeaseLeasesRequest'(<<>>, 0, 0,
					     _) ->
    #{};
'dfp_read_field_def_Etcd.LeaseLeasesRequest'(Other, Z1,
					     Z2, TrUserData) ->
    'dg_read_field_def_Etcd.LeaseLeasesRequest'(Other, Z1,
						Z2, TrUserData).

'dg_read_field_def_Etcd.LeaseLeasesRequest'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.LeaseLeasesRequest'(Rest, N + 7,
						X bsl N + Acc, TrUserData);
'dg_read_field_def_Etcd.LeaseLeasesRequest'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, TrUserData) ->
    Key = X bsl N + Acc,
    case Key band 7 of
      0 ->
	  'skip_varint_Etcd.LeaseLeasesRequest'(Rest, 0, 0,
						TrUserData);
      1 ->
	  'skip_64_Etcd.LeaseLeasesRequest'(Rest, 0, 0,
					    TrUserData);
      2 ->
	  'skip_length_delimited_Etcd.LeaseLeasesRequest'(Rest, 0,
							  0, TrUserData);
      3 ->
	  'skip_group_Etcd.LeaseLeasesRequest'(Rest, Key bsr 3, 0,
					       TrUserData);
      5 ->
	  'skip_32_Etcd.LeaseLeasesRequest'(Rest, 0, 0,
					    TrUserData)
    end;
'dg_read_field_def_Etcd.LeaseLeasesRequest'(<<>>, 0, 0,
					    _) ->
    #{}.

'skip_varint_Etcd.LeaseLeasesRequest'(<<1:1, _:7,
					Rest/binary>>,
				      Z1, Z2, TrUserData) ->
    'skip_varint_Etcd.LeaseLeasesRequest'(Rest, Z1, Z2,
					  TrUserData);
'skip_varint_Etcd.LeaseLeasesRequest'(<<0:1, _:7,
					Rest/binary>>,
				      Z1, Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseLeasesRequest'(Rest, Z1,
						 Z2, TrUserData).

'skip_length_delimited_Etcd.LeaseLeasesRequest'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.LeaseLeasesRequest'(Rest,
						    N + 7, X bsl N + Acc,
						    TrUserData);
'skip_length_delimited_Etcd.LeaseLeasesRequest'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.LeaseLeasesRequest'(Rest2, 0,
						 0, TrUserData).

'skip_group_Etcd.LeaseLeasesRequest'(Bin, FNum, Z2,
				     TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.LeaseLeasesRequest'(Rest, 0,
						 Z2, TrUserData).

'skip_32_Etcd.LeaseLeasesRequest'(<<_:32, Rest/binary>>,
				  Z1, Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseLeasesRequest'(Rest, Z1,
						 Z2, TrUserData).

'skip_64_Etcd.LeaseLeasesRequest'(<<_:64, Rest/binary>>,
				  Z1, Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseLeasesRequest'(Rest, Z1,
						 Z2, TrUserData).

'decode_msg_Etcd.LeaseStatus'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseStatus'(Bin, 0, 0,
					  id(0, TrUserData), TrUserData).

'dfp_read_field_def_Etcd.LeaseStatus'(<<8,
					Rest/binary>>,
				      Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.LeaseStatus_ID'(Rest, Z1, Z2, F@_1,
				  TrUserData);
'dfp_read_field_def_Etcd.LeaseStatus'(<<>>, 0, 0, F@_1,
				      _) ->
    #{'ID' => F@_1};
'dfp_read_field_def_Etcd.LeaseStatus'(Other, Z1, Z2,
				      F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.LeaseStatus'(Other, Z1, Z2,
					 F@_1, TrUserData).

'dg_read_field_def_Etcd.LeaseStatus'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.LeaseStatus'(Rest, N + 7,
					 X bsl N + Acc, F@_1, TrUserData);
'dg_read_field_def_Etcd.LeaseStatus'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_Etcd.LeaseStatus_ID'(Rest, 0, 0, F@_1,
					TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.LeaseStatus'(Rest, 0, 0, F@_1,
					       TrUserData);
	    1 ->
		'skip_64_Etcd.LeaseStatus'(Rest, 0, 0, F@_1,
					   TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.LeaseStatus'(Rest, 0, 0,
							 F@_1, TrUserData);
	    3 ->
		'skip_group_Etcd.LeaseStatus'(Rest, Key bsr 3, 0, F@_1,
					      TrUserData);
	    5 ->
		'skip_32_Etcd.LeaseStatus'(Rest, 0, 0, F@_1, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.LeaseStatus'(<<>>, 0, 0, F@_1,
				     _) ->
    #{'ID' => F@_1}.

'd_field_Etcd.LeaseStatus_ID'(<<1:1, X:7, Rest/binary>>,
			      N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaseStatus_ID'(Rest, N + 7,
				  X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.LeaseStatus_ID'(<<0:1, X:7, Rest/binary>>,
			      N, Acc, _, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.LeaseStatus'(RestF, 0, 0,
					  NewFValue, TrUserData).

'skip_varint_Etcd.LeaseStatus'(<<1:1, _:7,
				 Rest/binary>>,
			       Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.LeaseStatus'(Rest, Z1, Z2, F@_1,
				   TrUserData);
'skip_varint_Etcd.LeaseStatus'(<<0:1, _:7,
				 Rest/binary>>,
			       Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseStatus'(Rest, Z1, Z2,
					  F@_1, TrUserData).

'skip_length_delimited_Etcd.LeaseStatus'(<<1:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.LeaseStatus'(Rest, N + 7,
					     X bsl N + Acc, F@_1, TrUserData);
'skip_length_delimited_Etcd.LeaseStatus'(<<0:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.LeaseStatus'(Rest2, 0, 0, F@_1,
					  TrUserData).

'skip_group_Etcd.LeaseStatus'(Bin, FNum, Z2, F@_1,
			      TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.LeaseStatus'(Rest, 0, Z2, F@_1,
					  TrUserData).

'skip_32_Etcd.LeaseStatus'(<<_:32, Rest/binary>>, Z1,
			   Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseStatus'(Rest, Z1, Z2,
					  F@_1, TrUserData).

'skip_64_Etcd.LeaseStatus'(<<_:64, Rest/binary>>, Z1,
			   Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseStatus'(Rest, Z1, Z2,
					  F@_1, TrUserData).

'decode_msg_Etcd.LeaseLeasesResponse'(Bin,
				      TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseLeasesResponse'(Bin, 0, 0,
						  id('$undef', TrUserData),
						  id([], TrUserData),
						  TrUserData).

'dfp_read_field_def_Etcd.LeaseLeasesResponse'(<<10,
						Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.LeaseLeasesResponse_header'(Rest, Z1, Z2,
					      F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.LeaseLeasesResponse'(<<18,
						Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.LeaseLeasesResponse_leases'(Rest, Z1, Z2,
					      F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.LeaseLeasesResponse'(<<>>, 0,
					      0, F@_1, R1, TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true -> S2#{leases => lists_reverse(R1, TrUserData)}
    end;
'dfp_read_field_def_Etcd.LeaseLeasesResponse'(Other, Z1,
					      Z2, F@_1, F@_2, TrUserData) ->
    'dg_read_field_def_Etcd.LeaseLeasesResponse'(Other, Z1,
						 Z2, F@_1, F@_2, TrUserData).

'dg_read_field_def_Etcd.LeaseLeasesResponse'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.LeaseLeasesResponse'(Rest,
						 N + 7, X bsl N + Acc, F@_1,
						 F@_2, TrUserData);
'dg_read_field_def_Etcd.LeaseLeasesResponse'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.LeaseLeasesResponse_header'(Rest, 0, 0,
						    F@_1, F@_2, TrUserData);
      18 ->
	  'd_field_Etcd.LeaseLeasesResponse_leases'(Rest, 0, 0,
						    F@_1, F@_2, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.LeaseLeasesResponse'(Rest, 0, 0, F@_1,
						       F@_2, TrUserData);
	    1 ->
		'skip_64_Etcd.LeaseLeasesResponse'(Rest, 0, 0, F@_1,
						   F@_2, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.LeaseLeasesResponse'(Rest,
								 0, 0, F@_1,
								 F@_2,
								 TrUserData);
	    3 ->
		'skip_group_Etcd.LeaseLeasesResponse'(Rest, Key bsr 3,
						      0, F@_1, F@_2,
						      TrUserData);
	    5 ->
		'skip_32_Etcd.LeaseLeasesResponse'(Rest, 0, 0, F@_1,
						   F@_2, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.LeaseLeasesResponse'(<<>>, 0, 0,
					     F@_1, R1, TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true -> S2#{leases => lists_reverse(R1, TrUserData)}
    end.

'd_field_Etcd.LeaseLeasesResponse_header'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaseLeasesResponse_header'(Rest, N + 7,
					      X bsl N + Acc, F@_1, F@_2,
					      TrUserData);
'd_field_Etcd.LeaseLeasesResponse_header'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, Prev, F@_2, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.LeaseLeasesResponse'(RestF, 0,
						  0,
						  if Prev == '$undef' ->
							 NewFValue;
						     true ->
							 'merge_msg_Etcd.ResponseHeader'(Prev,
											 NewFValue,
											 TrUserData)
						  end,
						  F@_2, TrUserData).

'd_field_Etcd.LeaseLeasesResponse_leases'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaseLeasesResponse_leases'(Rest, N + 7,
					      X bsl N + Acc, F@_1, F@_2,
					      TrUserData);
'd_field_Etcd.LeaseLeasesResponse_leases'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.LeaseStatus'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.LeaseLeasesResponse'(RestF, 0,
						  0, F@_1,
						  cons(NewFValue, Prev,
						       TrUserData),
						  TrUserData).

'skip_varint_Etcd.LeaseLeasesResponse'(<<1:1, _:7,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_Etcd.LeaseLeasesResponse'(Rest, Z1, Z2,
					   F@_1, F@_2, TrUserData);
'skip_varint_Etcd.LeaseLeasesResponse'(<<0:1, _:7,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseLeasesResponse'(Rest, Z1,
						  Z2, F@_1, F@_2, TrUserData).

'skip_length_delimited_Etcd.LeaseLeasesResponse'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.LeaseLeasesResponse'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     F@_2, TrUserData);
'skip_length_delimited_Etcd.LeaseLeasesResponse'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2,
						 TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.LeaseLeasesResponse'(Rest2, 0,
						  0, F@_1, F@_2, TrUserData).

'skip_group_Etcd.LeaseLeasesResponse'(Bin, FNum, Z2,
				      F@_1, F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.LeaseLeasesResponse'(Rest, 0,
						  Z2, F@_1, F@_2, TrUserData).

'skip_32_Etcd.LeaseLeasesResponse'(<<_:32,
				     Rest/binary>>,
				   Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseLeasesResponse'(Rest, Z1,
						  Z2, F@_1, F@_2, TrUserData).

'skip_64_Etcd.LeaseLeasesResponse'(<<_:64,
				     Rest/binary>>,
				   Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaseLeasesResponse'(Rest, Z1,
						  Z2, F@_1, F@_2, TrUserData).

'decode_msg_Etcd.Member'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.Member'(Bin, 0, 0,
				     id(0, TrUserData), id(<<>>, TrUserData),
				     id([], TrUserData), id([], TrUserData),
				     id(false, TrUserData), TrUserData).

'dfp_read_field_def_Etcd.Member'(<<8, Rest/binary>>, Z1,
				 Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				 TrUserData) ->
    'd_field_Etcd.Member_ID'(Rest, Z1, Z2, F@_1, F@_2, F@_3,
			     F@_4, F@_5, TrUserData);
'dfp_read_field_def_Etcd.Member'(<<18, Rest/binary>>,
				 Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				 TrUserData) ->
    'd_field_Etcd.Member_name'(Rest, Z1, Z2, F@_1, F@_2,
			       F@_3, F@_4, F@_5, TrUserData);
'dfp_read_field_def_Etcd.Member'(<<26, Rest/binary>>,
				 Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				 TrUserData) ->
    'd_field_Etcd.Member_peerURLs'(Rest, Z1, Z2, F@_1, F@_2,
				   F@_3, F@_4, F@_5, TrUserData);
'dfp_read_field_def_Etcd.Member'(<<34, Rest/binary>>,
				 Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				 TrUserData) ->
    'd_field_Etcd.Member_clientURLs'(Rest, Z1, Z2, F@_1,
				     F@_2, F@_3, F@_4, F@_5, TrUserData);
'dfp_read_field_def_Etcd.Member'(<<40, Rest/binary>>,
				 Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				 TrUserData) ->
    'd_field_Etcd.Member_isLearner'(Rest, Z1, Z2, F@_1,
				    F@_2, F@_3, F@_4, F@_5, TrUserData);
'dfp_read_field_def_Etcd.Member'(<<>>, 0, 0, F@_1, F@_2,
				 R1, R2, F@_5, TrUserData) ->
    #{'ID' => F@_1, name => F@_2,
      peerURLs => lists_reverse(R1, TrUserData),
      clientURLs => lists_reverse(R2, TrUserData),
      isLearner => F@_5};
'dfp_read_field_def_Etcd.Member'(Other, Z1, Z2, F@_1,
				 F@_2, F@_3, F@_4, F@_5, TrUserData) ->
    'dg_read_field_def_Etcd.Member'(Other, Z1, Z2, F@_1,
				    F@_2, F@_3, F@_4, F@_5, TrUserData).

'dg_read_field_def_Etcd.Member'(<<1:1, X:7,
				  Rest/binary>>,
				N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.Member'(Rest, N + 7,
				    X bsl N + Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				    TrUserData);
'dg_read_field_def_Etcd.Member'(<<0:1, X:7,
				  Rest/binary>>,
				N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_Etcd.Member_ID'(Rest, 0, 0, F@_1, F@_2, F@_3,
				   F@_4, F@_5, TrUserData);
      18 ->
	  'd_field_Etcd.Member_name'(Rest, 0, 0, F@_1, F@_2, F@_3,
				     F@_4, F@_5, TrUserData);
      26 ->
	  'd_field_Etcd.Member_peerURLs'(Rest, 0, 0, F@_1, F@_2,
					 F@_3, F@_4, F@_5, TrUserData);
      34 ->
	  'd_field_Etcd.Member_clientURLs'(Rest, 0, 0, F@_1, F@_2,
					   F@_3, F@_4, F@_5, TrUserData);
      40 ->
	  'd_field_Etcd.Member_isLearner'(Rest, 0, 0, F@_1, F@_2,
					  F@_3, F@_4, F@_5, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.Member'(Rest, 0, 0, F@_1, F@_2, F@_3,
					  F@_4, F@_5, TrUserData);
	    1 ->
		'skip_64_Etcd.Member'(Rest, 0, 0, F@_1, F@_2, F@_3,
				      F@_4, F@_5, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.Member'(Rest, 0, 0, F@_1,
						    F@_2, F@_3, F@_4, F@_5,
						    TrUserData);
	    3 ->
		'skip_group_Etcd.Member'(Rest, Key bsr 3, 0, F@_1, F@_2,
					 F@_3, F@_4, F@_5, TrUserData);
	    5 ->
		'skip_32_Etcd.Member'(Rest, 0, 0, F@_1, F@_2, F@_3,
				      F@_4, F@_5, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.Member'(<<>>, 0, 0, F@_1, F@_2,
				R1, R2, F@_5, TrUserData) ->
    #{'ID' => F@_1, name => F@_2,
      peerURLs => lists_reverse(R1, TrUserData),
      clientURLs => lists_reverse(R2, TrUserData),
      isLearner => F@_5}.

'd_field_Etcd.Member_ID'(<<1:1, X:7, Rest/binary>>, N,
			 Acc, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData)
    when N < 57 ->
    'd_field_Etcd.Member_ID'(Rest, N + 7, X bsl N + Acc,
			     F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData);
'd_field_Etcd.Member_ID'(<<0:1, X:7, Rest/binary>>, N,
			 Acc, _, F@_2, F@_3, F@_4, F@_5, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc, TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.Member'(RestF, 0, 0, NewFValue,
				     F@_2, F@_3, F@_4, F@_5, TrUserData).

'd_field_Etcd.Member_name'(<<1:1, X:7, Rest/binary>>, N,
			   Acc, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData)
    when N < 57 ->
    'd_field_Etcd.Member_name'(Rest, N + 7, X bsl N + Acc,
			       F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData);
'd_field_Etcd.Member_name'(<<0:1, X:7, Rest/binary>>, N,
			   Acc, F@_1, _, F@_3, F@_4, F@_5, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.Member'(RestF, 0, 0, F@_1,
				     NewFValue, F@_3, F@_4, F@_5, TrUserData).

'd_field_Etcd.Member_peerURLs'(<<1:1, X:7,
				 Rest/binary>>,
			       N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData)
    when N < 57 ->
    'd_field_Etcd.Member_peerURLs'(Rest, N + 7,
				   X bsl N + Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				   TrUserData);
'd_field_Etcd.Member_peerURLs'(<<0:1, X:7,
				 Rest/binary>>,
			       N, Acc, F@_1, F@_2, Prev, F@_4, F@_5,
			       TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.Member'(RestF, 0, 0, F@_1,
				     F@_2, cons(NewFValue, Prev, TrUserData),
				     F@_4, F@_5, TrUserData).

'd_field_Etcd.Member_clientURLs'(<<1:1, X:7,
				   Rest/binary>>,
				 N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				 TrUserData)
    when N < 57 ->
    'd_field_Etcd.Member_clientURLs'(Rest, N + 7,
				     X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
				     F@_5, TrUserData);
'd_field_Etcd.Member_clientURLs'(<<0:1, X:7,
				   Rest/binary>>,
				 N, Acc, F@_1, F@_2, F@_3, Prev, F@_5,
				 TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.Member'(RestF, 0, 0, F@_1,
				     F@_2, F@_3,
				     cons(NewFValue, Prev, TrUserData), F@_5,
				     TrUserData).

'd_field_Etcd.Member_isLearner'(<<1:1, X:7,
				  Rest/binary>>,
				N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				TrUserData)
    when N < 57 ->
    'd_field_Etcd.Member_isLearner'(Rest, N + 7,
				    X bsl N + Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				    TrUserData);
'd_field_Etcd.Member_isLearner'(<<0:1, X:7,
				  Rest/binary>>,
				N, Acc, F@_1, F@_2, F@_3, F@_4, _,
				TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.Member'(RestF, 0, 0, F@_1,
				     F@_2, F@_3, F@_4, NewFValue, TrUserData).

'skip_varint_Etcd.Member'(<<1:1, _:7, Rest/binary>>, Z1,
			  Z2, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) ->
    'skip_varint_Etcd.Member'(Rest, Z1, Z2, F@_1, F@_2,
			      F@_3, F@_4, F@_5, TrUserData);
'skip_varint_Etcd.Member'(<<0:1, _:7, Rest/binary>>, Z1,
			  Z2, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) ->
    'dfp_read_field_def_Etcd.Member'(Rest, Z1, Z2, F@_1,
				     F@_2, F@_3, F@_4, F@_5, TrUserData).

'skip_length_delimited_Etcd.Member'(<<1:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				    TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.Member'(Rest, N + 7,
					X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
					F@_5, TrUserData);
'skip_length_delimited_Etcd.Member'(<<0:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				    TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.Member'(Rest2, 0, 0, F@_1,
				     F@_2, F@_3, F@_4, F@_5, TrUserData).

'skip_group_Etcd.Member'(Bin, FNum, Z2, F@_1, F@_2,
			 F@_3, F@_4, F@_5, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.Member'(Rest, 0, Z2, F@_1,
				     F@_2, F@_3, F@_4, F@_5, TrUserData).

'skip_32_Etcd.Member'(<<_:32, Rest/binary>>, Z1, Z2,
		      F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) ->
    'dfp_read_field_def_Etcd.Member'(Rest, Z1, Z2, F@_1,
				     F@_2, F@_3, F@_4, F@_5, TrUserData).

'skip_64_Etcd.Member'(<<_:64, Rest/binary>>, Z1, Z2,
		      F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) ->
    'dfp_read_field_def_Etcd.Member'(Rest, Z1, Z2, F@_1,
				     F@_2, F@_3, F@_4, F@_5, TrUserData).

'decode_msg_Etcd.MemberAddRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberAddRequest'(Bin, 0, 0,
					       id([], TrUserData),
					       id(false, TrUserData),
					       TrUserData).

'dfp_read_field_def_Etcd.MemberAddRequest'(<<10,
					     Rest/binary>>,
					   Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.MemberAddRequest_peerURLs'(Rest, Z1, Z2,
					     F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.MemberAddRequest'(<<16,
					     Rest/binary>>,
					   Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.MemberAddRequest_isLearner'(Rest, Z1, Z2,
					      F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.MemberAddRequest'(<<>>, 0, 0,
					   R1, F@_2, TrUserData) ->
    #{peerURLs => lists_reverse(R1, TrUserData),
      isLearner => F@_2};
'dfp_read_field_def_Etcd.MemberAddRequest'(Other, Z1,
					   Z2, F@_1, F@_2, TrUserData) ->
    'dg_read_field_def_Etcd.MemberAddRequest'(Other, Z1, Z2,
					      F@_1, F@_2, TrUserData).

'dg_read_field_def_Etcd.MemberAddRequest'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.MemberAddRequest'(Rest, N + 7,
					      X bsl N + Acc, F@_1, F@_2,
					      TrUserData);
'dg_read_field_def_Etcd.MemberAddRequest'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.MemberAddRequest_peerURLs'(Rest, 0, 0,
						   F@_1, F@_2, TrUserData);
      16 ->
	  'd_field_Etcd.MemberAddRequest_isLearner'(Rest, 0, 0,
						    F@_1, F@_2, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.MemberAddRequest'(Rest, 0, 0, F@_1,
						    F@_2, TrUserData);
	    1 ->
		'skip_64_Etcd.MemberAddRequest'(Rest, 0, 0, F@_1, F@_2,
						TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.MemberAddRequest'(Rest, 0,
							      0, F@_1, F@_2,
							      TrUserData);
	    3 ->
		'skip_group_Etcd.MemberAddRequest'(Rest, Key bsr 3, 0,
						   F@_1, F@_2, TrUserData);
	    5 ->
		'skip_32_Etcd.MemberAddRequest'(Rest, 0, 0, F@_1, F@_2,
						TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.MemberAddRequest'(<<>>, 0, 0,
					  R1, F@_2, TrUserData) ->
    #{peerURLs => lists_reverse(R1, TrUserData),
      isLearner => F@_2}.

'd_field_Etcd.MemberAddRequest_peerURLs'(<<1:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.MemberAddRequest_peerURLs'(Rest, N + 7,
					     X bsl N + Acc, F@_1, F@_2,
					     TrUserData);
'd_field_Etcd.MemberAddRequest_peerURLs'(<<0:1, X:7,
					   Rest/binary>>,
					 N, Acc, Prev, F@_2, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.MemberAddRequest'(RestF, 0, 0,
					       cons(NewFValue, Prev,
						    TrUserData),
					       F@_2, TrUserData).

'd_field_Etcd.MemberAddRequest_isLearner'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.MemberAddRequest_isLearner'(Rest, N + 7,
					      X bsl N + Acc, F@_1, F@_2,
					      TrUserData);
'd_field_Etcd.MemberAddRequest_isLearner'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, _, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.MemberAddRequest'(RestF, 0, 0,
					       F@_1, NewFValue, TrUserData).

'skip_varint_Etcd.MemberAddRequest'(<<1:1, _:7,
				      Rest/binary>>,
				    Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_Etcd.MemberAddRequest'(Rest, Z1, Z2, F@_1,
					F@_2, TrUserData);
'skip_varint_Etcd.MemberAddRequest'(<<0:1, _:7,
				      Rest/binary>>,
				    Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberAddRequest'(Rest, Z1, Z2,
					       F@_1, F@_2, TrUserData).

'skip_length_delimited_Etcd.MemberAddRequest'(<<1:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.MemberAddRequest'(Rest,
						  N + 7, X bsl N + Acc, F@_1,
						  F@_2, TrUserData);
'skip_length_delimited_Etcd.MemberAddRequest'(<<0:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.MemberAddRequest'(Rest2, 0, 0,
					       F@_1, F@_2, TrUserData).

'skip_group_Etcd.MemberAddRequest'(Bin, FNum, Z2, F@_1,
				   F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.MemberAddRequest'(Rest, 0, Z2,
					       F@_1, F@_2, TrUserData).

'skip_32_Etcd.MemberAddRequest'(<<_:32, Rest/binary>>,
				Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberAddRequest'(Rest, Z1, Z2,
					       F@_1, F@_2, TrUserData).

'skip_64_Etcd.MemberAddRequest'(<<_:64, Rest/binary>>,
				Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberAddRequest'(Rest, Z1, Z2,
					       F@_1, F@_2, TrUserData).

'decode_msg_Etcd.MemberAddResponse'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberAddResponse'(Bin, 0, 0,
						id('$undef', TrUserData),
						id('$undef', TrUserData),
						id([], TrUserData), TrUserData).

'dfp_read_field_def_Etcd.MemberAddResponse'(<<10,
					      Rest/binary>>,
					    Z1, Z2, F@_1, F@_2, F@_3,
					    TrUserData) ->
    'd_field_Etcd.MemberAddResponse_header'(Rest, Z1, Z2,
					    F@_1, F@_2, F@_3, TrUserData);
'dfp_read_field_def_Etcd.MemberAddResponse'(<<18,
					      Rest/binary>>,
					    Z1, Z2, F@_1, F@_2, F@_3,
					    TrUserData) ->
    'd_field_Etcd.MemberAddResponse_member'(Rest, Z1, Z2,
					    F@_1, F@_2, F@_3, TrUserData);
'dfp_read_field_def_Etcd.MemberAddResponse'(<<26,
					      Rest/binary>>,
					    Z1, Z2, F@_1, F@_2, F@_3,
					    TrUserData) ->
    'd_field_Etcd.MemberAddResponse_members'(Rest, Z1, Z2,
					     F@_1, F@_2, F@_3, TrUserData);
'dfp_read_field_def_Etcd.MemberAddResponse'(<<>>, 0, 0,
					    F@_1, F@_2, R1, TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{member => F@_2}
	 end,
    if R1 == '$undef' -> S3;
       true -> S3#{members => lists_reverse(R1, TrUserData)}
    end;
'dfp_read_field_def_Etcd.MemberAddResponse'(Other, Z1,
					    Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dg_read_field_def_Etcd.MemberAddResponse'(Other, Z1,
					       Z2, F@_1, F@_2, F@_3,
					       TrUserData).

'dg_read_field_def_Etcd.MemberAddResponse'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.MemberAddResponse'(Rest, N + 7,
					       X bsl N + Acc, F@_1, F@_2, F@_3,
					       TrUserData);
'dg_read_field_def_Etcd.MemberAddResponse'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, F@_3,
					   TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.MemberAddResponse_header'(Rest, 0, 0,
						  F@_1, F@_2, F@_3, TrUserData);
      18 ->
	  'd_field_Etcd.MemberAddResponse_member'(Rest, 0, 0,
						  F@_1, F@_2, F@_3, TrUserData);
      26 ->
	  'd_field_Etcd.MemberAddResponse_members'(Rest, 0, 0,
						   F@_1, F@_2, F@_3,
						   TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.MemberAddResponse'(Rest, 0, 0, F@_1,
						     F@_2, F@_3, TrUserData);
	    1 ->
		'skip_64_Etcd.MemberAddResponse'(Rest, 0, 0, F@_1, F@_2,
						 F@_3, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.MemberAddResponse'(Rest, 0,
							       0, F@_1, F@_2,
							       F@_3,
							       TrUserData);
	    3 ->
		'skip_group_Etcd.MemberAddResponse'(Rest, Key bsr 3, 0,
						    F@_1, F@_2, F@_3,
						    TrUserData);
	    5 ->
		'skip_32_Etcd.MemberAddResponse'(Rest, 0, 0, F@_1, F@_2,
						 F@_3, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.MemberAddResponse'(<<>>, 0, 0,
					   F@_1, F@_2, R1, TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{member => F@_2}
	 end,
    if R1 == '$undef' -> S3;
       true -> S3#{members => lists_reverse(R1, TrUserData)}
    end.

'd_field_Etcd.MemberAddResponse_header'(<<1:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_Etcd.MemberAddResponse_header'(Rest, N + 7,
					    X bsl N + Acc, F@_1, F@_2, F@_3,
					    TrUserData);
'd_field_Etcd.MemberAddResponse_header'(<<0:1, X:7,
					  Rest/binary>>,
					N, Acc, Prev, F@_2, F@_3, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.MemberAddResponse'(RestF, 0, 0,
						if Prev == '$undef' ->
						       NewFValue;
						   true ->
						       'merge_msg_Etcd.ResponseHeader'(Prev,
										       NewFValue,
										       TrUserData)
						end,
						F@_2, F@_3, TrUserData).

'd_field_Etcd.MemberAddResponse_member'(<<1:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_Etcd.MemberAddResponse_member'(Rest, N + 7,
					    X bsl N + Acc, F@_1, F@_2, F@_3,
					    TrUserData);
'd_field_Etcd.MemberAddResponse_member'(<<0:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, Prev, F@_3, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.Member'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.MemberAddResponse'(RestF, 0, 0,
						F@_1,
						if Prev == '$undef' ->
						       NewFValue;
						   true ->
						       'merge_msg_Etcd.Member'(Prev,
									       NewFValue,
									       TrUserData)
						end,
						F@_3, TrUserData).

'd_field_Etcd.MemberAddResponse_members'(<<1:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_Etcd.MemberAddResponse_members'(Rest, N + 7,
					     X bsl N + Acc, F@_1, F@_2, F@_3,
					     TrUserData);
'd_field_Etcd.MemberAddResponse_members'(<<0:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, F@_2, Prev,
					 TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.Member'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.MemberAddResponse'(RestF, 0, 0,
						F@_1, F@_2,
						cons(NewFValue, Prev,
						     TrUserData),
						TrUserData).

'skip_varint_Etcd.MemberAddResponse'(<<1:1, _:7,
				       Rest/binary>>,
				     Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'skip_varint_Etcd.MemberAddResponse'(Rest, Z1, Z2, F@_1,
					 F@_2, F@_3, TrUserData);
'skip_varint_Etcd.MemberAddResponse'(<<0:1, _:7,
				       Rest/binary>>,
				     Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberAddResponse'(Rest, Z1,
						Z2, F@_1, F@_2, F@_3,
						TrUserData).

'skip_length_delimited_Etcd.MemberAddResponse'(<<1:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3,
					       TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.MemberAddResponse'(Rest,
						   N + 7, X bsl N + Acc, F@_1,
						   F@_2, F@_3, TrUserData);
'skip_length_delimited_Etcd.MemberAddResponse'(<<0:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3,
					       TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.MemberAddResponse'(Rest2, 0, 0,
						F@_1, F@_2, F@_3, TrUserData).

'skip_group_Etcd.MemberAddResponse'(Bin, FNum, Z2, F@_1,
				    F@_2, F@_3, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.MemberAddResponse'(Rest, 0, Z2,
						F@_1, F@_2, F@_3, TrUserData).

'skip_32_Etcd.MemberAddResponse'(<<_:32, Rest/binary>>,
				 Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberAddResponse'(Rest, Z1,
						Z2, F@_1, F@_2, F@_3,
						TrUserData).

'skip_64_Etcd.MemberAddResponse'(<<_:64, Rest/binary>>,
				 Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberAddResponse'(Rest, Z1,
						Z2, F@_1, F@_2, F@_3,
						TrUserData).

'decode_msg_Etcd.MemberRemoveRequest'(Bin,
				      TrUserData) ->
    'dfp_read_field_def_Etcd.MemberRemoveRequest'(Bin, 0, 0,
						  id(0, TrUserData),
						  TrUserData).

'dfp_read_field_def_Etcd.MemberRemoveRequest'(<<8,
						Rest/binary>>,
					      Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.MemberRemoveRequest_ID'(Rest, Z1, Z2,
					  F@_1, TrUserData);
'dfp_read_field_def_Etcd.MemberRemoveRequest'(<<>>, 0,
					      0, F@_1, _) ->
    #{'ID' => F@_1};
'dfp_read_field_def_Etcd.MemberRemoveRequest'(Other, Z1,
					      Z2, F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.MemberRemoveRequest'(Other, Z1,
						 Z2, F@_1, TrUserData).

'dg_read_field_def_Etcd.MemberRemoveRequest'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.MemberRemoveRequest'(Rest,
						 N + 7, X bsl N + Acc, F@_1,
						 TrUserData);
'dg_read_field_def_Etcd.MemberRemoveRequest'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_Etcd.MemberRemoveRequest_ID'(Rest, 0, 0, F@_1,
						TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.MemberRemoveRequest'(Rest, 0, 0, F@_1,
						       TrUserData);
	    1 ->
		'skip_64_Etcd.MemberRemoveRequest'(Rest, 0, 0, F@_1,
						   TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.MemberRemoveRequest'(Rest,
								 0, 0, F@_1,
								 TrUserData);
	    3 ->
		'skip_group_Etcd.MemberRemoveRequest'(Rest, Key bsr 3,
						      0, F@_1, TrUserData);
	    5 ->
		'skip_32_Etcd.MemberRemoveRequest'(Rest, 0, 0, F@_1,
						   TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.MemberRemoveRequest'(<<>>, 0, 0,
					     F@_1, _) ->
    #{'ID' => F@_1}.

'd_field_Etcd.MemberRemoveRequest_ID'(<<1:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.MemberRemoveRequest_ID'(Rest, N + 7,
					  X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.MemberRemoveRequest_ID'(<<0:1, X:7,
					Rest/binary>>,
				      N, Acc, _, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc, TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.MemberRemoveRequest'(RestF, 0,
						  0, NewFValue, TrUserData).

'skip_varint_Etcd.MemberRemoveRequest'(<<1:1, _:7,
					 Rest/binary>>,
				       Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.MemberRemoveRequest'(Rest, Z1, Z2,
					   F@_1, TrUserData);
'skip_varint_Etcd.MemberRemoveRequest'(<<0:1, _:7,
					 Rest/binary>>,
				       Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberRemoveRequest'(Rest, Z1,
						  Z2, F@_1, TrUserData).

'skip_length_delimited_Etcd.MemberRemoveRequest'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.MemberRemoveRequest'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     TrUserData);
'skip_length_delimited_Etcd.MemberRemoveRequest'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.MemberRemoveRequest'(Rest2, 0,
						  0, F@_1, TrUserData).

'skip_group_Etcd.MemberRemoveRequest'(Bin, FNum, Z2,
				      F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.MemberRemoveRequest'(Rest, 0,
						  Z2, F@_1, TrUserData).

'skip_32_Etcd.MemberRemoveRequest'(<<_:32,
				     Rest/binary>>,
				   Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberRemoveRequest'(Rest, Z1,
						  Z2, F@_1, TrUserData).

'skip_64_Etcd.MemberRemoveRequest'(<<_:64,
				     Rest/binary>>,
				   Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberRemoveRequest'(Rest, Z1,
						  Z2, F@_1, TrUserData).

'decode_msg_Etcd.MemberRemoveResponse'(Bin,
				       TrUserData) ->
    'dfp_read_field_def_Etcd.MemberRemoveResponse'(Bin, 0,
						   0, id('$undef', TrUserData),
						   id([], TrUserData),
						   TrUserData).

'dfp_read_field_def_Etcd.MemberRemoveResponse'(<<10,
						 Rest/binary>>,
					       Z1, Z2, F@_1, F@_2,
					       TrUserData) ->
    'd_field_Etcd.MemberRemoveResponse_header'(Rest, Z1, Z2,
					       F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.MemberRemoveResponse'(<<18,
						 Rest/binary>>,
					       Z1, Z2, F@_1, F@_2,
					       TrUserData) ->
    'd_field_Etcd.MemberRemoveResponse_members'(Rest, Z1,
						Z2, F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.MemberRemoveResponse'(<<>>, 0,
					       0, F@_1, R1, TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true -> S2#{members => lists_reverse(R1, TrUserData)}
    end;
'dfp_read_field_def_Etcd.MemberRemoveResponse'(Other,
					       Z1, Z2, F@_1, F@_2,
					       TrUserData) ->
    'dg_read_field_def_Etcd.MemberRemoveResponse'(Other, Z1,
						  Z2, F@_1, F@_2, TrUserData).

'dg_read_field_def_Etcd.MemberRemoveResponse'(<<1:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.MemberRemoveResponse'(Rest,
						  N + 7, X bsl N + Acc, F@_1,
						  F@_2, TrUserData);
'dg_read_field_def_Etcd.MemberRemoveResponse'(<<0:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.MemberRemoveResponse_header'(Rest, 0, 0,
						     F@_1, F@_2, TrUserData);
      18 ->
	  'd_field_Etcd.MemberRemoveResponse_members'(Rest, 0, 0,
						      F@_1, F@_2, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.MemberRemoveResponse'(Rest, 0, 0,
							F@_1, F@_2, TrUserData);
	    1 ->
		'skip_64_Etcd.MemberRemoveResponse'(Rest, 0, 0, F@_1,
						    F@_2, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.MemberRemoveResponse'(Rest,
								  0, 0, F@_1,
								  F@_2,
								  TrUserData);
	    3 ->
		'skip_group_Etcd.MemberRemoveResponse'(Rest, Key bsr 3,
						       0, F@_1, F@_2,
						       TrUserData);
	    5 ->
		'skip_32_Etcd.MemberRemoveResponse'(Rest, 0, 0, F@_1,
						    F@_2, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.MemberRemoveResponse'(<<>>, 0,
					      0, F@_1, R1, TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true -> S2#{members => lists_reverse(R1, TrUserData)}
    end.

'd_field_Etcd.MemberRemoveResponse_header'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.MemberRemoveResponse_header'(Rest, N + 7,
					       X bsl N + Acc, F@_1, F@_2,
					       TrUserData);
'd_field_Etcd.MemberRemoveResponse_header'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, Prev, F@_2, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.MemberRemoveResponse'(RestF, 0,
						   0,
						   if Prev == '$undef' ->
							  NewFValue;
						      true ->
							  'merge_msg_Etcd.ResponseHeader'(Prev,
											  NewFValue,
											  TrUserData)
						   end,
						   F@_2, TrUserData).

'd_field_Etcd.MemberRemoveResponse_members'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.MemberRemoveResponse_members'(Rest, N + 7,
						X bsl N + Acc, F@_1, F@_2,
						TrUserData);
'd_field_Etcd.MemberRemoveResponse_members'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.Member'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.MemberRemoveResponse'(RestF, 0,
						   0, F@_1,
						   cons(NewFValue, Prev,
							TrUserData),
						   TrUserData).

'skip_varint_Etcd.MemberRemoveResponse'(<<1:1, _:7,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_Etcd.MemberRemoveResponse'(Rest, Z1, Z2,
					    F@_1, F@_2, TrUserData);
'skip_varint_Etcd.MemberRemoveResponse'(<<0:1, _:7,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberRemoveResponse'(Rest, Z1,
						   Z2, F@_1, F@_2, TrUserData).

'skip_length_delimited_Etcd.MemberRemoveResponse'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2,
						  TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.MemberRemoveResponse'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, TrUserData);
'skip_length_delimited_Etcd.MemberRemoveResponse'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2,
						  TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.MemberRemoveResponse'(Rest2, 0,
						   0, F@_1, F@_2, TrUserData).

'skip_group_Etcd.MemberRemoveResponse'(Bin, FNum, Z2,
				       F@_1, F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.MemberRemoveResponse'(Rest, 0,
						   Z2, F@_1, F@_2, TrUserData).

'skip_32_Etcd.MemberRemoveResponse'(<<_:32,
				      Rest/binary>>,
				    Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberRemoveResponse'(Rest, Z1,
						   Z2, F@_1, F@_2, TrUserData).

'skip_64_Etcd.MemberRemoveResponse'(<<_:64,
				      Rest/binary>>,
				    Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberRemoveResponse'(Rest, Z1,
						   Z2, F@_1, F@_2, TrUserData).

'decode_msg_Etcd.MemberUpdateRequest'(Bin,
				      TrUserData) ->
    'dfp_read_field_def_Etcd.MemberUpdateRequest'(Bin, 0, 0,
						  id(0, TrUserData),
						  id([], TrUserData),
						  TrUserData).

'dfp_read_field_def_Etcd.MemberUpdateRequest'(<<8,
						Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.MemberUpdateRequest_ID'(Rest, Z1, Z2,
					  F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.MemberUpdateRequest'(<<18,
						Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.MemberUpdateRequest_peerURLs'(Rest, Z1,
						Z2, F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.MemberUpdateRequest'(<<>>, 0,
					      0, F@_1, R1, TrUserData) ->
    #{'ID' => F@_1,
      peerURLs => lists_reverse(R1, TrUserData)};
'dfp_read_field_def_Etcd.MemberUpdateRequest'(Other, Z1,
					      Z2, F@_1, F@_2, TrUserData) ->
    'dg_read_field_def_Etcd.MemberUpdateRequest'(Other, Z1,
						 Z2, F@_1, F@_2, TrUserData).

'dg_read_field_def_Etcd.MemberUpdateRequest'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.MemberUpdateRequest'(Rest,
						 N + 7, X bsl N + Acc, F@_1,
						 F@_2, TrUserData);
'dg_read_field_def_Etcd.MemberUpdateRequest'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_Etcd.MemberUpdateRequest_ID'(Rest, 0, 0, F@_1,
						F@_2, TrUserData);
      18 ->
	  'd_field_Etcd.MemberUpdateRequest_peerURLs'(Rest, 0, 0,
						      F@_1, F@_2, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.MemberUpdateRequest'(Rest, 0, 0, F@_1,
						       F@_2, TrUserData);
	    1 ->
		'skip_64_Etcd.MemberUpdateRequest'(Rest, 0, 0, F@_1,
						   F@_2, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.MemberUpdateRequest'(Rest,
								 0, 0, F@_1,
								 F@_2,
								 TrUserData);
	    3 ->
		'skip_group_Etcd.MemberUpdateRequest'(Rest, Key bsr 3,
						      0, F@_1, F@_2,
						      TrUserData);
	    5 ->
		'skip_32_Etcd.MemberUpdateRequest'(Rest, 0, 0, F@_1,
						   F@_2, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.MemberUpdateRequest'(<<>>, 0, 0,
					     F@_1, R1, TrUserData) ->
    #{'ID' => F@_1,
      peerURLs => lists_reverse(R1, TrUserData)}.

'd_field_Etcd.MemberUpdateRequest_ID'(<<1:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.MemberUpdateRequest_ID'(Rest, N + 7,
					  X bsl N + Acc, F@_1, F@_2,
					  TrUserData);
'd_field_Etcd.MemberUpdateRequest_ID'(<<0:1, X:7,
					Rest/binary>>,
				      N, Acc, _, F@_2, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc, TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.MemberUpdateRequest'(RestF, 0,
						  0, NewFValue, F@_2,
						  TrUserData).

'd_field_Etcd.MemberUpdateRequest_peerURLs'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.MemberUpdateRequest_peerURLs'(Rest, N + 7,
						X bsl N + Acc, F@_1, F@_2,
						TrUserData);
'd_field_Etcd.MemberUpdateRequest_peerURLs'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.MemberUpdateRequest'(RestF, 0,
						  0, F@_1,
						  cons(NewFValue, Prev,
						       TrUserData),
						  TrUserData).

'skip_varint_Etcd.MemberUpdateRequest'(<<1:1, _:7,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_Etcd.MemberUpdateRequest'(Rest, Z1, Z2,
					   F@_1, F@_2, TrUserData);
'skip_varint_Etcd.MemberUpdateRequest'(<<0:1, _:7,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberUpdateRequest'(Rest, Z1,
						  Z2, F@_1, F@_2, TrUserData).

'skip_length_delimited_Etcd.MemberUpdateRequest'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.MemberUpdateRequest'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     F@_2, TrUserData);
'skip_length_delimited_Etcd.MemberUpdateRequest'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2,
						 TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.MemberUpdateRequest'(Rest2, 0,
						  0, F@_1, F@_2, TrUserData).

'skip_group_Etcd.MemberUpdateRequest'(Bin, FNum, Z2,
				      F@_1, F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.MemberUpdateRequest'(Rest, 0,
						  Z2, F@_1, F@_2, TrUserData).

'skip_32_Etcd.MemberUpdateRequest'(<<_:32,
				     Rest/binary>>,
				   Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberUpdateRequest'(Rest, Z1,
						  Z2, F@_1, F@_2, TrUserData).

'skip_64_Etcd.MemberUpdateRequest'(<<_:64,
				     Rest/binary>>,
				   Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberUpdateRequest'(Rest, Z1,
						  Z2, F@_1, F@_2, TrUserData).

'decode_msg_Etcd.MemberUpdateResponse'(Bin,
				       TrUserData) ->
    'dfp_read_field_def_Etcd.MemberUpdateResponse'(Bin, 0,
						   0, id('$undef', TrUserData),
						   id([], TrUserData),
						   TrUserData).

'dfp_read_field_def_Etcd.MemberUpdateResponse'(<<10,
						 Rest/binary>>,
					       Z1, Z2, F@_1, F@_2,
					       TrUserData) ->
    'd_field_Etcd.MemberUpdateResponse_header'(Rest, Z1, Z2,
					       F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.MemberUpdateResponse'(<<18,
						 Rest/binary>>,
					       Z1, Z2, F@_1, F@_2,
					       TrUserData) ->
    'd_field_Etcd.MemberUpdateResponse_members'(Rest, Z1,
						Z2, F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.MemberUpdateResponse'(<<>>, 0,
					       0, F@_1, R1, TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true -> S2#{members => lists_reverse(R1, TrUserData)}
    end;
'dfp_read_field_def_Etcd.MemberUpdateResponse'(Other,
					       Z1, Z2, F@_1, F@_2,
					       TrUserData) ->
    'dg_read_field_def_Etcd.MemberUpdateResponse'(Other, Z1,
						  Z2, F@_1, F@_2, TrUserData).

'dg_read_field_def_Etcd.MemberUpdateResponse'(<<1:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.MemberUpdateResponse'(Rest,
						  N + 7, X bsl N + Acc, F@_1,
						  F@_2, TrUserData);
'dg_read_field_def_Etcd.MemberUpdateResponse'(<<0:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.MemberUpdateResponse_header'(Rest, 0, 0,
						     F@_1, F@_2, TrUserData);
      18 ->
	  'd_field_Etcd.MemberUpdateResponse_members'(Rest, 0, 0,
						      F@_1, F@_2, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.MemberUpdateResponse'(Rest, 0, 0,
							F@_1, F@_2, TrUserData);
	    1 ->
		'skip_64_Etcd.MemberUpdateResponse'(Rest, 0, 0, F@_1,
						    F@_2, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.MemberUpdateResponse'(Rest,
								  0, 0, F@_1,
								  F@_2,
								  TrUserData);
	    3 ->
		'skip_group_Etcd.MemberUpdateResponse'(Rest, Key bsr 3,
						       0, F@_1, F@_2,
						       TrUserData);
	    5 ->
		'skip_32_Etcd.MemberUpdateResponse'(Rest, 0, 0, F@_1,
						    F@_2, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.MemberUpdateResponse'(<<>>, 0,
					      0, F@_1, R1, TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true -> S2#{members => lists_reverse(R1, TrUserData)}
    end.

'd_field_Etcd.MemberUpdateResponse_header'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.MemberUpdateResponse_header'(Rest, N + 7,
					       X bsl N + Acc, F@_1, F@_2,
					       TrUserData);
'd_field_Etcd.MemberUpdateResponse_header'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, Prev, F@_2, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.MemberUpdateResponse'(RestF, 0,
						   0,
						   if Prev == '$undef' ->
							  NewFValue;
						      true ->
							  'merge_msg_Etcd.ResponseHeader'(Prev,
											  NewFValue,
											  TrUserData)
						   end,
						   F@_2, TrUserData).

'd_field_Etcd.MemberUpdateResponse_members'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.MemberUpdateResponse_members'(Rest, N + 7,
						X bsl N + Acc, F@_1, F@_2,
						TrUserData);
'd_field_Etcd.MemberUpdateResponse_members'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.Member'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.MemberUpdateResponse'(RestF, 0,
						   0, F@_1,
						   cons(NewFValue, Prev,
							TrUserData),
						   TrUserData).

'skip_varint_Etcd.MemberUpdateResponse'(<<1:1, _:7,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_Etcd.MemberUpdateResponse'(Rest, Z1, Z2,
					    F@_1, F@_2, TrUserData);
'skip_varint_Etcd.MemberUpdateResponse'(<<0:1, _:7,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberUpdateResponse'(Rest, Z1,
						   Z2, F@_1, F@_2, TrUserData).

'skip_length_delimited_Etcd.MemberUpdateResponse'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2,
						  TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.MemberUpdateResponse'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, TrUserData);
'skip_length_delimited_Etcd.MemberUpdateResponse'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2,
						  TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.MemberUpdateResponse'(Rest2, 0,
						   0, F@_1, F@_2, TrUserData).

'skip_group_Etcd.MemberUpdateResponse'(Bin, FNum, Z2,
				       F@_1, F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.MemberUpdateResponse'(Rest, 0,
						   Z2, F@_1, F@_2, TrUserData).

'skip_32_Etcd.MemberUpdateResponse'(<<_:32,
				      Rest/binary>>,
				    Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberUpdateResponse'(Rest, Z1,
						   Z2, F@_1, F@_2, TrUserData).

'skip_64_Etcd.MemberUpdateResponse'(<<_:64,
				      Rest/binary>>,
				    Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberUpdateResponse'(Rest, Z1,
						   Z2, F@_1, F@_2, TrUserData).

'decode_msg_Etcd.MemberListRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberListRequest'(Bin, 0, 0,
						TrUserData).

'dfp_read_field_def_Etcd.MemberListRequest'(<<>>, 0, 0,
					    _) ->
    #{};
'dfp_read_field_def_Etcd.MemberListRequest'(Other, Z1,
					    Z2, TrUserData) ->
    'dg_read_field_def_Etcd.MemberListRequest'(Other, Z1,
					       Z2, TrUserData).

'dg_read_field_def_Etcd.MemberListRequest'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.MemberListRequest'(Rest, N + 7,
					       X bsl N + Acc, TrUserData);
'dg_read_field_def_Etcd.MemberListRequest'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, TrUserData) ->
    Key = X bsl N + Acc,
    case Key band 7 of
      0 ->
	  'skip_varint_Etcd.MemberListRequest'(Rest, 0, 0,
					       TrUserData);
      1 ->
	  'skip_64_Etcd.MemberListRequest'(Rest, 0, 0,
					   TrUserData);
      2 ->
	  'skip_length_delimited_Etcd.MemberListRequest'(Rest, 0,
							 0, TrUserData);
      3 ->
	  'skip_group_Etcd.MemberListRequest'(Rest, Key bsr 3, 0,
					      TrUserData);
      5 ->
	  'skip_32_Etcd.MemberListRequest'(Rest, 0, 0, TrUserData)
    end;
'dg_read_field_def_Etcd.MemberListRequest'(<<>>, 0, 0,
					   _) ->
    #{}.

'skip_varint_Etcd.MemberListRequest'(<<1:1, _:7,
				       Rest/binary>>,
				     Z1, Z2, TrUserData) ->
    'skip_varint_Etcd.MemberListRequest'(Rest, Z1, Z2,
					 TrUserData);
'skip_varint_Etcd.MemberListRequest'(<<0:1, _:7,
				       Rest/binary>>,
				     Z1, Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberListRequest'(Rest, Z1,
						Z2, TrUserData).

'skip_length_delimited_Etcd.MemberListRequest'(<<1:1,
						 X:7, Rest/binary>>,
					       N, Acc, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.MemberListRequest'(Rest,
						   N + 7, X bsl N + Acc,
						   TrUserData);
'skip_length_delimited_Etcd.MemberListRequest'(<<0:1,
						 X:7, Rest/binary>>,
					       N, Acc, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.MemberListRequest'(Rest2, 0, 0,
						TrUserData).

'skip_group_Etcd.MemberListRequest'(Bin, FNum, Z2,
				    TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.MemberListRequest'(Rest, 0, Z2,
						TrUserData).

'skip_32_Etcd.MemberListRequest'(<<_:32, Rest/binary>>,
				 Z1, Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberListRequest'(Rest, Z1,
						Z2, TrUserData).

'skip_64_Etcd.MemberListRequest'(<<_:64, Rest/binary>>,
				 Z1, Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberListRequest'(Rest, Z1,
						Z2, TrUserData).

'decode_msg_Etcd.MemberListResponse'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberListResponse'(Bin, 0, 0,
						 id('$undef', TrUserData),
						 id([], TrUserData),
						 TrUserData).

'dfp_read_field_def_Etcd.MemberListResponse'(<<10,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.MemberListResponse_header'(Rest, Z1, Z2,
					     F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.MemberListResponse'(<<18,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.MemberListResponse_members'(Rest, Z1, Z2,
					      F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.MemberListResponse'(<<>>, 0, 0,
					     F@_1, R1, TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true -> S2#{members => lists_reverse(R1, TrUserData)}
    end;
'dfp_read_field_def_Etcd.MemberListResponse'(Other, Z1,
					     Z2, F@_1, F@_2, TrUserData) ->
    'dg_read_field_def_Etcd.MemberListResponse'(Other, Z1,
						Z2, F@_1, F@_2, TrUserData).

'dg_read_field_def_Etcd.MemberListResponse'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.MemberListResponse'(Rest, N + 7,
						X bsl N + Acc, F@_1, F@_2,
						TrUserData);
'dg_read_field_def_Etcd.MemberListResponse'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.MemberListResponse_header'(Rest, 0, 0,
						   F@_1, F@_2, TrUserData);
      18 ->
	  'd_field_Etcd.MemberListResponse_members'(Rest, 0, 0,
						    F@_1, F@_2, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.MemberListResponse'(Rest, 0, 0, F@_1,
						      F@_2, TrUserData);
	    1 ->
		'skip_64_Etcd.MemberListResponse'(Rest, 0, 0, F@_1,
						  F@_2, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.MemberListResponse'(Rest, 0,
								0, F@_1, F@_2,
								TrUserData);
	    3 ->
		'skip_group_Etcd.MemberListResponse'(Rest, Key bsr 3, 0,
						     F@_1, F@_2, TrUserData);
	    5 ->
		'skip_32_Etcd.MemberListResponse'(Rest, 0, 0, F@_1,
						  F@_2, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.MemberListResponse'(<<>>, 0, 0,
					    F@_1, R1, TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true -> S2#{members => lists_reverse(R1, TrUserData)}
    end.

'd_field_Etcd.MemberListResponse_header'(<<1:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.MemberListResponse_header'(Rest, N + 7,
					     X bsl N + Acc, F@_1, F@_2,
					     TrUserData);
'd_field_Etcd.MemberListResponse_header'(<<0:1, X:7,
					   Rest/binary>>,
					 N, Acc, Prev, F@_2, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.MemberListResponse'(RestF, 0,
						 0,
						 if Prev == '$undef' ->
							NewFValue;
						    true ->
							'merge_msg_Etcd.ResponseHeader'(Prev,
											NewFValue,
											TrUserData)
						 end,
						 F@_2, TrUserData).

'd_field_Etcd.MemberListResponse_members'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.MemberListResponse_members'(Rest, N + 7,
					      X bsl N + Acc, F@_1, F@_2,
					      TrUserData);
'd_field_Etcd.MemberListResponse_members'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.Member'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.MemberListResponse'(RestF, 0,
						 0, F@_1,
						 cons(NewFValue, Prev,
						      TrUserData),
						 TrUserData).

'skip_varint_Etcd.MemberListResponse'(<<1:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_Etcd.MemberListResponse'(Rest, Z1, Z2,
					  F@_1, F@_2, TrUserData);
'skip_varint_Etcd.MemberListResponse'(<<0:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberListResponse'(Rest, Z1,
						 Z2, F@_1, F@_2, TrUserData).

'skip_length_delimited_Etcd.MemberListResponse'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.MemberListResponse'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    F@_2, TrUserData);
'skip_length_delimited_Etcd.MemberListResponse'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2,
						TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.MemberListResponse'(Rest2, 0,
						 0, F@_1, F@_2, TrUserData).

'skip_group_Etcd.MemberListResponse'(Bin, FNum, Z2,
				     F@_1, F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.MemberListResponse'(Rest, 0,
						 Z2, F@_1, F@_2, TrUserData).

'skip_32_Etcd.MemberListResponse'(<<_:32, Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberListResponse'(Rest, Z1,
						 Z2, F@_1, F@_2, TrUserData).

'skip_64_Etcd.MemberListResponse'(<<_:64, Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberListResponse'(Rest, Z1,
						 Z2, F@_1, F@_2, TrUserData).

'decode_msg_Etcd.MemberPromoteRequest'(Bin,
				       TrUserData) ->
    'dfp_read_field_def_Etcd.MemberPromoteRequest'(Bin, 0,
						   0, id(0, TrUserData),
						   TrUserData).

'dfp_read_field_def_Etcd.MemberPromoteRequest'(<<8,
						 Rest/binary>>,
					       Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.MemberPromoteRequest_ID'(Rest, Z1, Z2,
					   F@_1, TrUserData);
'dfp_read_field_def_Etcd.MemberPromoteRequest'(<<>>, 0,
					       0, F@_1, _) ->
    #{'ID' => F@_1};
'dfp_read_field_def_Etcd.MemberPromoteRequest'(Other,
					       Z1, Z2, F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.MemberPromoteRequest'(Other, Z1,
						  Z2, F@_1, TrUserData).

'dg_read_field_def_Etcd.MemberPromoteRequest'(<<1:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.MemberPromoteRequest'(Rest,
						  N + 7, X bsl N + Acc, F@_1,
						  TrUserData);
'dg_read_field_def_Etcd.MemberPromoteRequest'(<<0:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_Etcd.MemberPromoteRequest_ID'(Rest, 0, 0, F@_1,
						 TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.MemberPromoteRequest'(Rest, 0, 0,
							F@_1, TrUserData);
	    1 ->
		'skip_64_Etcd.MemberPromoteRequest'(Rest, 0, 0, F@_1,
						    TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.MemberPromoteRequest'(Rest,
								  0, 0, F@_1,
								  TrUserData);
	    3 ->
		'skip_group_Etcd.MemberPromoteRequest'(Rest, Key bsr 3,
						       0, F@_1, TrUserData);
	    5 ->
		'skip_32_Etcd.MemberPromoteRequest'(Rest, 0, 0, F@_1,
						    TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.MemberPromoteRequest'(<<>>, 0,
					      0, F@_1, _) ->
    #{'ID' => F@_1}.

'd_field_Etcd.MemberPromoteRequest_ID'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.MemberPromoteRequest_ID'(Rest, N + 7,
					   X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.MemberPromoteRequest_ID'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, _, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc, TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.MemberPromoteRequest'(RestF, 0,
						   0, NewFValue, TrUserData).

'skip_varint_Etcd.MemberPromoteRequest'(<<1:1, _:7,
					  Rest/binary>>,
					Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.MemberPromoteRequest'(Rest, Z1, Z2,
					    F@_1, TrUserData);
'skip_varint_Etcd.MemberPromoteRequest'(<<0:1, _:7,
					  Rest/binary>>,
					Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberPromoteRequest'(Rest, Z1,
						   Z2, F@_1, TrUserData).

'skip_length_delimited_Etcd.MemberPromoteRequest'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.MemberPromoteRequest'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, TrUserData);
'skip_length_delimited_Etcd.MemberPromoteRequest'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.MemberPromoteRequest'(Rest2, 0,
						   0, F@_1, TrUserData).

'skip_group_Etcd.MemberPromoteRequest'(Bin, FNum, Z2,
				       F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.MemberPromoteRequest'(Rest, 0,
						   Z2, F@_1, TrUserData).

'skip_32_Etcd.MemberPromoteRequest'(<<_:32,
				      Rest/binary>>,
				    Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberPromoteRequest'(Rest, Z1,
						   Z2, F@_1, TrUserData).

'skip_64_Etcd.MemberPromoteRequest'(<<_:64,
				      Rest/binary>>,
				    Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberPromoteRequest'(Rest, Z1,
						   Z2, F@_1, TrUserData).

'decode_msg_Etcd.MemberPromoteResponse'(Bin,
					TrUserData) ->
    'dfp_read_field_def_Etcd.MemberPromoteResponse'(Bin, 0,
						    0, id('$undef', TrUserData),
						    id([], TrUserData),
						    TrUserData).

'dfp_read_field_def_Etcd.MemberPromoteResponse'(<<10,
						  Rest/binary>>,
						Z1, Z2, F@_1, F@_2,
						TrUserData) ->
    'd_field_Etcd.MemberPromoteResponse_header'(Rest, Z1,
						Z2, F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.MemberPromoteResponse'(<<18,
						  Rest/binary>>,
						Z1, Z2, F@_1, F@_2,
						TrUserData) ->
    'd_field_Etcd.MemberPromoteResponse_members'(Rest, Z1,
						 Z2, F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.MemberPromoteResponse'(<<>>, 0,
						0, F@_1, R1, TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true -> S2#{members => lists_reverse(R1, TrUserData)}
    end;
'dfp_read_field_def_Etcd.MemberPromoteResponse'(Other,
						Z1, Z2, F@_1, F@_2,
						TrUserData) ->
    'dg_read_field_def_Etcd.MemberPromoteResponse'(Other,
						   Z1, Z2, F@_1, F@_2,
						   TrUserData).

'dg_read_field_def_Etcd.MemberPromoteResponse'(<<1:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.MemberPromoteResponse'(Rest,
						   N + 7, X bsl N + Acc, F@_1,
						   F@_2, TrUserData);
'dg_read_field_def_Etcd.MemberPromoteResponse'(<<0:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2,
					       TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.MemberPromoteResponse_header'(Rest, 0, 0,
						      F@_1, F@_2, TrUserData);
      18 ->
	  'd_field_Etcd.MemberPromoteResponse_members'(Rest, 0, 0,
						       F@_1, F@_2, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.MemberPromoteResponse'(Rest, 0, 0,
							 F@_1, F@_2,
							 TrUserData);
	    1 ->
		'skip_64_Etcd.MemberPromoteResponse'(Rest, 0, 0, F@_1,
						     F@_2, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.MemberPromoteResponse'(Rest,
								   0, 0, F@_1,
								   F@_2,
								   TrUserData);
	    3 ->
		'skip_group_Etcd.MemberPromoteResponse'(Rest, Key bsr 3,
							0, F@_1, F@_2,
							TrUserData);
	    5 ->
		'skip_32_Etcd.MemberPromoteResponse'(Rest, 0, 0, F@_1,
						     F@_2, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.MemberPromoteResponse'(<<>>, 0,
					       0, F@_1, R1, TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true -> S2#{members => lists_reverse(R1, TrUserData)}
    end.

'd_field_Etcd.MemberPromoteResponse_header'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.MemberPromoteResponse_header'(Rest, N + 7,
						X bsl N + Acc, F@_1, F@_2,
						TrUserData);
'd_field_Etcd.MemberPromoteResponse_header'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, Prev, F@_2, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.MemberPromoteResponse'(RestF,
						    0, 0,
						    if Prev == '$undef' ->
							   NewFValue;
						       true ->
							   'merge_msg_Etcd.ResponseHeader'(Prev,
											   NewFValue,
											   TrUserData)
						    end,
						    F@_2, TrUserData).

'd_field_Etcd.MemberPromoteResponse_members'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.MemberPromoteResponse_members'(Rest,
						 N + 7, X bsl N + Acc, F@_1,
						 F@_2, TrUserData);
'd_field_Etcd.MemberPromoteResponse_members'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.Member'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.MemberPromoteResponse'(RestF,
						    0, 0, F@_1,
						    cons(NewFValue, Prev,
							 TrUserData),
						    TrUserData).

'skip_varint_Etcd.MemberPromoteResponse'(<<1:1, _:7,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_Etcd.MemberPromoteResponse'(Rest, Z1, Z2,
					     F@_1, F@_2, TrUserData);
'skip_varint_Etcd.MemberPromoteResponse'(<<0:1, _:7,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberPromoteResponse'(Rest,
						    Z1, Z2, F@_1, F@_2,
						    TrUserData).

'skip_length_delimited_Etcd.MemberPromoteResponse'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2,
						   TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.MemberPromoteResponse'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, TrUserData);
'skip_length_delimited_Etcd.MemberPromoteResponse'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2,
						   TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.MemberPromoteResponse'(Rest2,
						    0, 0, F@_1, F@_2,
						    TrUserData).

'skip_group_Etcd.MemberPromoteResponse'(Bin, FNum, Z2,
					F@_1, F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.MemberPromoteResponse'(Rest, 0,
						    Z2, F@_1, F@_2, TrUserData).

'skip_32_Etcd.MemberPromoteResponse'(<<_:32,
				       Rest/binary>>,
				     Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberPromoteResponse'(Rest,
						    Z1, Z2, F@_1, F@_2,
						    TrUserData).

'skip_64_Etcd.MemberPromoteResponse'(<<_:64,
				       Rest/binary>>,
				     Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.MemberPromoteResponse'(Rest,
						    Z1, Z2, F@_1, F@_2,
						    TrUserData).

'decode_msg_Etcd.DefragmentRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.DefragmentRequest'(Bin, 0, 0,
						TrUserData).

'dfp_read_field_def_Etcd.DefragmentRequest'(<<>>, 0, 0,
					    _) ->
    #{};
'dfp_read_field_def_Etcd.DefragmentRequest'(Other, Z1,
					    Z2, TrUserData) ->
    'dg_read_field_def_Etcd.DefragmentRequest'(Other, Z1,
					       Z2, TrUserData).

'dg_read_field_def_Etcd.DefragmentRequest'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.DefragmentRequest'(Rest, N + 7,
					       X bsl N + Acc, TrUserData);
'dg_read_field_def_Etcd.DefragmentRequest'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, TrUserData) ->
    Key = X bsl N + Acc,
    case Key band 7 of
      0 ->
	  'skip_varint_Etcd.DefragmentRequest'(Rest, 0, 0,
					       TrUserData);
      1 ->
	  'skip_64_Etcd.DefragmentRequest'(Rest, 0, 0,
					   TrUserData);
      2 ->
	  'skip_length_delimited_Etcd.DefragmentRequest'(Rest, 0,
							 0, TrUserData);
      3 ->
	  'skip_group_Etcd.DefragmentRequest'(Rest, Key bsr 3, 0,
					      TrUserData);
      5 ->
	  'skip_32_Etcd.DefragmentRequest'(Rest, 0, 0, TrUserData)
    end;
'dg_read_field_def_Etcd.DefragmentRequest'(<<>>, 0, 0,
					   _) ->
    #{}.

'skip_varint_Etcd.DefragmentRequest'(<<1:1, _:7,
				       Rest/binary>>,
				     Z1, Z2, TrUserData) ->
    'skip_varint_Etcd.DefragmentRequest'(Rest, Z1, Z2,
					 TrUserData);
'skip_varint_Etcd.DefragmentRequest'(<<0:1, _:7,
				       Rest/binary>>,
				     Z1, Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.DefragmentRequest'(Rest, Z1,
						Z2, TrUserData).

'skip_length_delimited_Etcd.DefragmentRequest'(<<1:1,
						 X:7, Rest/binary>>,
					       N, Acc, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.DefragmentRequest'(Rest,
						   N + 7, X bsl N + Acc,
						   TrUserData);
'skip_length_delimited_Etcd.DefragmentRequest'(<<0:1,
						 X:7, Rest/binary>>,
					       N, Acc, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.DefragmentRequest'(Rest2, 0, 0,
						TrUserData).

'skip_group_Etcd.DefragmentRequest'(Bin, FNum, Z2,
				    TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.DefragmentRequest'(Rest, 0, Z2,
						TrUserData).

'skip_32_Etcd.DefragmentRequest'(<<_:32, Rest/binary>>,
				 Z1, Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.DefragmentRequest'(Rest, Z1,
						Z2, TrUserData).

'skip_64_Etcd.DefragmentRequest'(<<_:64, Rest/binary>>,
				 Z1, Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.DefragmentRequest'(Rest, Z1,
						Z2, TrUserData).

'decode_msg_Etcd.DefragmentResponse'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.DefragmentResponse'(Bin, 0, 0,
						 id('$undef', TrUserData),
						 TrUserData).

'dfp_read_field_def_Etcd.DefragmentResponse'(<<10,
					       Rest/binary>>,
					     Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.DefragmentResponse_header'(Rest, Z1, Z2,
					     F@_1, TrUserData);
'dfp_read_field_def_Etcd.DefragmentResponse'(<<>>, 0, 0,
					     F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.DefragmentResponse'(Other, Z1,
					     Z2, F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.DefragmentResponse'(Other, Z1,
						Z2, F@_1, TrUserData).

'dg_read_field_def_Etcd.DefragmentResponse'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.DefragmentResponse'(Rest, N + 7,
						X bsl N + Acc, F@_1,
						TrUserData);
'dg_read_field_def_Etcd.DefragmentResponse'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.DefragmentResponse_header'(Rest, 0, 0,
						   F@_1, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.DefragmentResponse'(Rest, 0, 0, F@_1,
						      TrUserData);
	    1 ->
		'skip_64_Etcd.DefragmentResponse'(Rest, 0, 0, F@_1,
						  TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.DefragmentResponse'(Rest, 0,
								0, F@_1,
								TrUserData);
	    3 ->
		'skip_group_Etcd.DefragmentResponse'(Rest, Key bsr 3, 0,
						     F@_1, TrUserData);
	    5 ->
		'skip_32_Etcd.DefragmentResponse'(Rest, 0, 0, F@_1,
						  TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.DefragmentResponse'(<<>>, 0, 0,
					    F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.DefragmentResponse_header'(<<1:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.DefragmentResponse_header'(Rest, N + 7,
					     X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.DefragmentResponse_header'(<<0:1, X:7,
					   Rest/binary>>,
					 N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.DefragmentResponse'(RestF, 0,
						 0,
						 if Prev == '$undef' ->
							NewFValue;
						    true ->
							'merge_msg_Etcd.ResponseHeader'(Prev,
											NewFValue,
											TrUserData)
						 end,
						 TrUserData).

'skip_varint_Etcd.DefragmentResponse'(<<1:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.DefragmentResponse'(Rest, Z1, Z2,
					  F@_1, TrUserData);
'skip_varint_Etcd.DefragmentResponse'(<<0:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.DefragmentResponse'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'skip_length_delimited_Etcd.DefragmentResponse'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.DefragmentResponse'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    TrUserData);
'skip_length_delimited_Etcd.DefragmentResponse'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.DefragmentResponse'(Rest2, 0,
						 0, F@_1, TrUserData).

'skip_group_Etcd.DefragmentResponse'(Bin, FNum, Z2,
				     F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.DefragmentResponse'(Rest, 0,
						 Z2, F@_1, TrUserData).

'skip_32_Etcd.DefragmentResponse'(<<_:32, Rest/binary>>,
				  Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.DefragmentResponse'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'skip_64_Etcd.DefragmentResponse'(<<_:64, Rest/binary>>,
				  Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.DefragmentResponse'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'decode_msg_Etcd.MoveLeaderRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.MoveLeaderRequest'(Bin, 0, 0,
						id(0, TrUserData), TrUserData).

'dfp_read_field_def_Etcd.MoveLeaderRequest'(<<8,
					      Rest/binary>>,
					    Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.MoveLeaderRequest_targetID'(Rest, Z1, Z2,
					      F@_1, TrUserData);
'dfp_read_field_def_Etcd.MoveLeaderRequest'(<<>>, 0, 0,
					    F@_1, _) ->
    #{targetID => F@_1};
'dfp_read_field_def_Etcd.MoveLeaderRequest'(Other, Z1,
					    Z2, F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.MoveLeaderRequest'(Other, Z1,
					       Z2, F@_1, TrUserData).

'dg_read_field_def_Etcd.MoveLeaderRequest'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.MoveLeaderRequest'(Rest, N + 7,
					       X bsl N + Acc, F@_1, TrUserData);
'dg_read_field_def_Etcd.MoveLeaderRequest'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_Etcd.MoveLeaderRequest_targetID'(Rest, 0, 0,
						    F@_1, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.MoveLeaderRequest'(Rest, 0, 0, F@_1,
						     TrUserData);
	    1 ->
		'skip_64_Etcd.MoveLeaderRequest'(Rest, 0, 0, F@_1,
						 TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.MoveLeaderRequest'(Rest, 0,
							       0, F@_1,
							       TrUserData);
	    3 ->
		'skip_group_Etcd.MoveLeaderRequest'(Rest, Key bsr 3, 0,
						    F@_1, TrUserData);
	    5 ->
		'skip_32_Etcd.MoveLeaderRequest'(Rest, 0, 0, F@_1,
						 TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.MoveLeaderRequest'(<<>>, 0, 0,
					   F@_1, _) ->
    #{targetID => F@_1}.

'd_field_Etcd.MoveLeaderRequest_targetID'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.MoveLeaderRequest_targetID'(Rest, N + 7,
					      X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.MoveLeaderRequest_targetID'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, _, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc, TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.MoveLeaderRequest'(RestF, 0, 0,
						NewFValue, TrUserData).

'skip_varint_Etcd.MoveLeaderRequest'(<<1:1, _:7,
				       Rest/binary>>,
				     Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.MoveLeaderRequest'(Rest, Z1, Z2, F@_1,
					 TrUserData);
'skip_varint_Etcd.MoveLeaderRequest'(<<0:1, _:7,
				       Rest/binary>>,
				     Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.MoveLeaderRequest'(Rest, Z1,
						Z2, F@_1, TrUserData).

'skip_length_delimited_Etcd.MoveLeaderRequest'(<<1:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.MoveLeaderRequest'(Rest,
						   N + 7, X bsl N + Acc, F@_1,
						   TrUserData);
'skip_length_delimited_Etcd.MoveLeaderRequest'(<<0:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.MoveLeaderRequest'(Rest2, 0, 0,
						F@_1, TrUserData).

'skip_group_Etcd.MoveLeaderRequest'(Bin, FNum, Z2, F@_1,
				    TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.MoveLeaderRequest'(Rest, 0, Z2,
						F@_1, TrUserData).

'skip_32_Etcd.MoveLeaderRequest'(<<_:32, Rest/binary>>,
				 Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.MoveLeaderRequest'(Rest, Z1,
						Z2, F@_1, TrUserData).

'skip_64_Etcd.MoveLeaderRequest'(<<_:64, Rest/binary>>,
				 Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.MoveLeaderRequest'(Rest, Z1,
						Z2, F@_1, TrUserData).

'decode_msg_Etcd.MoveLeaderResponse'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.MoveLeaderResponse'(Bin, 0, 0,
						 id('$undef', TrUserData),
						 TrUserData).

'dfp_read_field_def_Etcd.MoveLeaderResponse'(<<10,
					       Rest/binary>>,
					     Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.MoveLeaderResponse_header'(Rest, Z1, Z2,
					     F@_1, TrUserData);
'dfp_read_field_def_Etcd.MoveLeaderResponse'(<<>>, 0, 0,
					     F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.MoveLeaderResponse'(Other, Z1,
					     Z2, F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.MoveLeaderResponse'(Other, Z1,
						Z2, F@_1, TrUserData).

'dg_read_field_def_Etcd.MoveLeaderResponse'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.MoveLeaderResponse'(Rest, N + 7,
						X bsl N + Acc, F@_1,
						TrUserData);
'dg_read_field_def_Etcd.MoveLeaderResponse'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.MoveLeaderResponse_header'(Rest, 0, 0,
						   F@_1, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.MoveLeaderResponse'(Rest, 0, 0, F@_1,
						      TrUserData);
	    1 ->
		'skip_64_Etcd.MoveLeaderResponse'(Rest, 0, 0, F@_1,
						  TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.MoveLeaderResponse'(Rest, 0,
								0, F@_1,
								TrUserData);
	    3 ->
		'skip_group_Etcd.MoveLeaderResponse'(Rest, Key bsr 3, 0,
						     F@_1, TrUserData);
	    5 ->
		'skip_32_Etcd.MoveLeaderResponse'(Rest, 0, 0, F@_1,
						  TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.MoveLeaderResponse'(<<>>, 0, 0,
					    F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.MoveLeaderResponse_header'(<<1:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.MoveLeaderResponse_header'(Rest, N + 7,
					     X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.MoveLeaderResponse_header'(<<0:1, X:7,
					   Rest/binary>>,
					 N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.MoveLeaderResponse'(RestF, 0,
						 0,
						 if Prev == '$undef' ->
							NewFValue;
						    true ->
							'merge_msg_Etcd.ResponseHeader'(Prev,
											NewFValue,
											TrUserData)
						 end,
						 TrUserData).

'skip_varint_Etcd.MoveLeaderResponse'(<<1:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.MoveLeaderResponse'(Rest, Z1, Z2,
					  F@_1, TrUserData);
'skip_varint_Etcd.MoveLeaderResponse'(<<0:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.MoveLeaderResponse'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'skip_length_delimited_Etcd.MoveLeaderResponse'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.MoveLeaderResponse'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    TrUserData);
'skip_length_delimited_Etcd.MoveLeaderResponse'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.MoveLeaderResponse'(Rest2, 0,
						 0, F@_1, TrUserData).

'skip_group_Etcd.MoveLeaderResponse'(Bin, FNum, Z2,
				     F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.MoveLeaderResponse'(Rest, 0,
						 Z2, F@_1, TrUserData).

'skip_32_Etcd.MoveLeaderResponse'(<<_:32, Rest/binary>>,
				  Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.MoveLeaderResponse'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'skip_64_Etcd.MoveLeaderResponse'(<<_:64, Rest/binary>>,
				  Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.MoveLeaderResponse'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'decode_msg_Etcd.AlarmRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.AlarmRequest'(Bin, 0, 0,
					   id('GET', TrUserData),
					   id(0, TrUserData),
					   id('NONE', TrUserData), TrUserData).

'dfp_read_field_def_Etcd.AlarmRequest'(<<8,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'd_field_Etcd.AlarmRequest_action'(Rest, Z1, Z2, F@_1,
				       F@_2, F@_3, TrUserData);
'dfp_read_field_def_Etcd.AlarmRequest'(<<16,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'd_field_Etcd.AlarmRequest_memberID'(Rest, Z1, Z2, F@_1,
					 F@_2, F@_3, TrUserData);
'dfp_read_field_def_Etcd.AlarmRequest'(<<24,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'd_field_Etcd.AlarmRequest_alarm'(Rest, Z1, Z2, F@_1,
				      F@_2, F@_3, TrUserData);
'dfp_read_field_def_Etcd.AlarmRequest'(<<>>, 0, 0, F@_1,
				       F@_2, F@_3, _) ->
    #{action => F@_1, memberID => F@_2, alarm => F@_3};
'dfp_read_field_def_Etcd.AlarmRequest'(Other, Z1, Z2,
				       F@_1, F@_2, F@_3, TrUserData) ->
    'dg_read_field_def_Etcd.AlarmRequest'(Other, Z1, Z2,
					  F@_1, F@_2, F@_3, TrUserData).

'dg_read_field_def_Etcd.AlarmRequest'(<<1:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AlarmRequest'(Rest, N + 7,
					  X bsl N + Acc, F@_1, F@_2, F@_3,
					  TrUserData);
'dg_read_field_def_Etcd.AlarmRequest'(<<0:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, F@_2, F@_3, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_Etcd.AlarmRequest_action'(Rest, 0, 0, F@_1,
					     F@_2, F@_3, TrUserData);
      16 ->
	  'd_field_Etcd.AlarmRequest_memberID'(Rest, 0, 0, F@_1,
					       F@_2, F@_3, TrUserData);
      24 ->
	  'd_field_Etcd.AlarmRequest_alarm'(Rest, 0, 0, F@_1,
					    F@_2, F@_3, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AlarmRequest'(Rest, 0, 0, F@_1, F@_2,
						F@_3, TrUserData);
	    1 ->
		'skip_64_Etcd.AlarmRequest'(Rest, 0, 0, F@_1, F@_2,
					    F@_3, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AlarmRequest'(Rest, 0, 0,
							  F@_1, F@_2, F@_3,
							  TrUserData);
	    3 ->
		'skip_group_Etcd.AlarmRequest'(Rest, Key bsr 3, 0, F@_1,
					       F@_2, F@_3, TrUserData);
	    5 ->
		'skip_32_Etcd.AlarmRequest'(Rest, 0, 0, F@_1, F@_2,
					    F@_3, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AlarmRequest'(<<>>, 0, 0, F@_1,
				      F@_2, F@_3, _) ->
    #{action => F@_1, memberID => F@_2, alarm => F@_3}.

'd_field_Etcd.AlarmRequest_action'(<<1:1, X:7,
				     Rest/binary>>,
				   N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AlarmRequest_action'(Rest, N + 7,
				       X bsl N + Acc, F@_1, F@_2, F@_3,
				       TrUserData);
'd_field_Etcd.AlarmRequest_action'(<<0:1, X:7,
				     Rest/binary>>,
				   N, Acc, _, F@_2, F@_3, TrUserData) ->
    {NewFValue, RestF} =
	{id('d_enum_Etcd.AlarmRequest.AlarmAction'(begin
						     <<Res:32/signed-native>> =
							 <<(X bsl N +
							      Acc):32/unsigned-native>>,
						     id(Res, TrUserData)
						   end),
	    TrUserData),
	 Rest},
    'dfp_read_field_def_Etcd.AlarmRequest'(RestF, 0, 0,
					   NewFValue, F@_2, F@_3, TrUserData).

'd_field_Etcd.AlarmRequest_memberID'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AlarmRequest_memberID'(Rest, N + 7,
					 X bsl N + Acc, F@_1, F@_2, F@_3,
					 TrUserData);
'd_field_Etcd.AlarmRequest_memberID'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, _, F@_3, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc, TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.AlarmRequest'(RestF, 0, 0,
					   F@_1, NewFValue, F@_3, TrUserData).

'd_field_Etcd.AlarmRequest_alarm'(<<1:1, X:7,
				    Rest/binary>>,
				  N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AlarmRequest_alarm'(Rest, N + 7,
				      X bsl N + Acc, F@_1, F@_2, F@_3,
				      TrUserData);
'd_field_Etcd.AlarmRequest_alarm'(<<0:1, X:7,
				    Rest/binary>>,
				  N, Acc, F@_1, F@_2, _, TrUserData) ->
    {NewFValue, RestF} = {id('d_enum_Etcd.AlarmType'(begin
						       <<Res:32/signed-native>> =
							   <<(X bsl N +
								Acc):32/unsigned-native>>,
						       id(Res, TrUserData)
						     end),
			     TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.AlarmRequest'(RestF, 0, 0,
					   F@_1, F@_2, NewFValue, TrUserData).

'skip_varint_Etcd.AlarmRequest'(<<1:1, _:7,
				  Rest/binary>>,
				Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'skip_varint_Etcd.AlarmRequest'(Rest, Z1, Z2, F@_1,
				    F@_2, F@_3, TrUserData);
'skip_varint_Etcd.AlarmRequest'(<<0:1, _:7,
				  Rest/binary>>,
				Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.AlarmRequest'(Rest, Z1, Z2,
					   F@_1, F@_2, F@_3, TrUserData).

'skip_length_delimited_Etcd.AlarmRequest'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AlarmRequest'(Rest, N + 7,
					      X bsl N + Acc, F@_1, F@_2, F@_3,
					      TrUserData);
'skip_length_delimited_Etcd.AlarmRequest'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, F@_3,
					  TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AlarmRequest'(Rest2, 0, 0,
					   F@_1, F@_2, F@_3, TrUserData).

'skip_group_Etcd.AlarmRequest'(Bin, FNum, Z2, F@_1,
			       F@_2, F@_3, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AlarmRequest'(Rest, 0, Z2,
					   F@_1, F@_2, F@_3, TrUserData).

'skip_32_Etcd.AlarmRequest'(<<_:32, Rest/binary>>, Z1,
			    Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.AlarmRequest'(Rest, Z1, Z2,
					   F@_1, F@_2, F@_3, TrUserData).

'skip_64_Etcd.AlarmRequest'(<<_:64, Rest/binary>>, Z1,
			    Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.AlarmRequest'(Rest, Z1, Z2,
					   F@_1, F@_2, F@_3, TrUserData).

'decode_msg_Etcd.AlarmMember'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.AlarmMember'(Bin, 0, 0,
					  id(0, TrUserData),
					  id('NONE', TrUserData), TrUserData).

'dfp_read_field_def_Etcd.AlarmMember'(<<8,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.AlarmMember_memberID'(Rest, Z1, Z2, F@_1,
					F@_2, TrUserData);
'dfp_read_field_def_Etcd.AlarmMember'(<<16,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.AlarmMember_alarm'(Rest, Z1, Z2, F@_1,
				     F@_2, TrUserData);
'dfp_read_field_def_Etcd.AlarmMember'(<<>>, 0, 0, F@_1,
				      F@_2, _) ->
    #{memberID => F@_1, alarm => F@_2};
'dfp_read_field_def_Etcd.AlarmMember'(Other, Z1, Z2,
				      F@_1, F@_2, TrUserData) ->
    'dg_read_field_def_Etcd.AlarmMember'(Other, Z1, Z2,
					 F@_1, F@_2, TrUserData).

'dg_read_field_def_Etcd.AlarmMember'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AlarmMember'(Rest, N + 7,
					 X bsl N + Acc, F@_1, F@_2, TrUserData);
'dg_read_field_def_Etcd.AlarmMember'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_Etcd.AlarmMember_memberID'(Rest, 0, 0, F@_1,
					      F@_2, TrUserData);
      16 ->
	  'd_field_Etcd.AlarmMember_alarm'(Rest, 0, 0, F@_1, F@_2,
					   TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AlarmMember'(Rest, 0, 0, F@_1, F@_2,
					       TrUserData);
	    1 ->
		'skip_64_Etcd.AlarmMember'(Rest, 0, 0, F@_1, F@_2,
					   TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AlarmMember'(Rest, 0, 0,
							 F@_1, F@_2,
							 TrUserData);
	    3 ->
		'skip_group_Etcd.AlarmMember'(Rest, Key bsr 3, 0, F@_1,
					      F@_2, TrUserData);
	    5 ->
		'skip_32_Etcd.AlarmMember'(Rest, 0, 0, F@_1, F@_2,
					   TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AlarmMember'(<<>>, 0, 0, F@_1,
				     F@_2, _) ->
    #{memberID => F@_1, alarm => F@_2}.

'd_field_Etcd.AlarmMember_memberID'(<<1:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AlarmMember_memberID'(Rest, N + 7,
					X bsl N + Acc, F@_1, F@_2, TrUserData);
'd_field_Etcd.AlarmMember_memberID'(<<0:1, X:7,
				      Rest/binary>>,
				    N, Acc, _, F@_2, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc, TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.AlarmMember'(RestF, 0, 0,
					  NewFValue, F@_2, TrUserData).

'd_field_Etcd.AlarmMember_alarm'(<<1:1, X:7,
				   Rest/binary>>,
				 N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AlarmMember_alarm'(Rest, N + 7,
				     X bsl N + Acc, F@_1, F@_2, TrUserData);
'd_field_Etcd.AlarmMember_alarm'(<<0:1, X:7,
				   Rest/binary>>,
				 N, Acc, F@_1, _, TrUserData) ->
    {NewFValue, RestF} = {id('d_enum_Etcd.AlarmType'(begin
						       <<Res:32/signed-native>> =
							   <<(X bsl N +
								Acc):32/unsigned-native>>,
						       id(Res, TrUserData)
						     end),
			     TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.AlarmMember'(RestF, 0, 0, F@_1,
					  NewFValue, TrUserData).

'skip_varint_Etcd.AlarmMember'(<<1:1, _:7,
				 Rest/binary>>,
			       Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_Etcd.AlarmMember'(Rest, Z1, Z2, F@_1, F@_2,
				   TrUserData);
'skip_varint_Etcd.AlarmMember'(<<0:1, _:7,
				 Rest/binary>>,
			       Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AlarmMember'(Rest, Z1, Z2,
					  F@_1, F@_2, TrUserData).

'skip_length_delimited_Etcd.AlarmMember'(<<1:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AlarmMember'(Rest, N + 7,
					     X bsl N + Acc, F@_1, F@_2,
					     TrUserData);
'skip_length_delimited_Etcd.AlarmMember'(<<0:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, F@_2, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AlarmMember'(Rest2, 0, 0, F@_1,
					  F@_2, TrUserData).

'skip_group_Etcd.AlarmMember'(Bin, FNum, Z2, F@_1, F@_2,
			      TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AlarmMember'(Rest, 0, Z2, F@_1,
					  F@_2, TrUserData).

'skip_32_Etcd.AlarmMember'(<<_:32, Rest/binary>>, Z1,
			   Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AlarmMember'(Rest, Z1, Z2,
					  F@_1, F@_2, TrUserData).

'skip_64_Etcd.AlarmMember'(<<_:64, Rest/binary>>, Z1,
			   Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AlarmMember'(Rest, Z1, Z2,
					  F@_1, F@_2, TrUserData).

'decode_msg_Etcd.AlarmResponse'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.AlarmResponse'(Bin, 0, 0,
					    id('$undef', TrUserData),
					    id([], TrUserData), TrUserData).

'dfp_read_field_def_Etcd.AlarmResponse'(<<10,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.AlarmResponse_header'(Rest, Z1, Z2, F@_1,
					F@_2, TrUserData);
'dfp_read_field_def_Etcd.AlarmResponse'(<<18,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.AlarmResponse_alarms'(Rest, Z1, Z2, F@_1,
					F@_2, TrUserData);
'dfp_read_field_def_Etcd.AlarmResponse'(<<>>, 0, 0,
					F@_1, R1, TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true -> S2#{alarms => lists_reverse(R1, TrUserData)}
    end;
'dfp_read_field_def_Etcd.AlarmResponse'(Other, Z1, Z2,
					F@_1, F@_2, TrUserData) ->
    'dg_read_field_def_Etcd.AlarmResponse'(Other, Z1, Z2,
					   F@_1, F@_2, TrUserData).

'dg_read_field_def_Etcd.AlarmResponse'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, F@_2, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AlarmResponse'(Rest, N + 7,
					   X bsl N + Acc, F@_1, F@_2,
					   TrUserData);
'dg_read_field_def_Etcd.AlarmResponse'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, F@_2, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.AlarmResponse_header'(Rest, 0, 0, F@_1,
					      F@_2, TrUserData);
      18 ->
	  'd_field_Etcd.AlarmResponse_alarms'(Rest, 0, 0, F@_1,
					      F@_2, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AlarmResponse'(Rest, 0, 0, F@_1, F@_2,
						 TrUserData);
	    1 ->
		'skip_64_Etcd.AlarmResponse'(Rest, 0, 0, F@_1, F@_2,
					     TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AlarmResponse'(Rest, 0, 0,
							   F@_1, F@_2,
							   TrUserData);
	    3 ->
		'skip_group_Etcd.AlarmResponse'(Rest, Key bsr 3, 0,
						F@_1, F@_2, TrUserData);
	    5 ->
		'skip_32_Etcd.AlarmResponse'(Rest, 0, 0, F@_1, F@_2,
					     TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AlarmResponse'(<<>>, 0, 0, F@_1,
				       R1, TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true -> S2#{alarms => lists_reverse(R1, TrUserData)}
    end.

'd_field_Etcd.AlarmResponse_header'(<<1:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AlarmResponse_header'(Rest, N + 7,
					X bsl N + Acc, F@_1, F@_2, TrUserData);
'd_field_Etcd.AlarmResponse_header'(<<0:1, X:7,
				      Rest/binary>>,
				    N, Acc, Prev, F@_2, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.AlarmResponse'(RestF, 0, 0,
					    if Prev == '$undef' -> NewFValue;
					       true ->
						   'merge_msg_Etcd.ResponseHeader'(Prev,
										   NewFValue,
										   TrUserData)
					    end,
					    F@_2, TrUserData).

'd_field_Etcd.AlarmResponse_alarms'(<<1:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AlarmResponse_alarms'(Rest, N + 7,
					X bsl N + Acc, F@_1, F@_2, TrUserData);
'd_field_Etcd.AlarmResponse_alarms'(<<0:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.AlarmMember'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.AlarmResponse'(RestF, 0, 0,
					    F@_1,
					    cons(NewFValue, Prev, TrUserData),
					    TrUserData).

'skip_varint_Etcd.AlarmResponse'(<<1:1, _:7,
				   Rest/binary>>,
				 Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_Etcd.AlarmResponse'(Rest, Z1, Z2, F@_1,
				     F@_2, TrUserData);
'skip_varint_Etcd.AlarmResponse'(<<0:1, _:7,
				   Rest/binary>>,
				 Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AlarmResponse'(Rest, Z1, Z2,
					    F@_1, F@_2, TrUserData).

'skip_length_delimited_Etcd.AlarmResponse'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AlarmResponse'(Rest, N + 7,
					       X bsl N + Acc, F@_1, F@_2,
					       TrUserData);
'skip_length_delimited_Etcd.AlarmResponse'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AlarmResponse'(Rest2, 0, 0,
					    F@_1, F@_2, TrUserData).

'skip_group_Etcd.AlarmResponse'(Bin, FNum, Z2, F@_1,
				F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AlarmResponse'(Rest, 0, Z2,
					    F@_1, F@_2, TrUserData).

'skip_32_Etcd.AlarmResponse'(<<_:32, Rest/binary>>, Z1,
			     Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AlarmResponse'(Rest, Z1, Z2,
					    F@_1, F@_2, TrUserData).

'skip_64_Etcd.AlarmResponse'(<<_:64, Rest/binary>>, Z1,
			     Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AlarmResponse'(Rest, Z1, Z2,
					    F@_1, F@_2, TrUserData).

'decode_msg_Etcd.StatusRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.StatusRequest'(Bin, 0, 0,
					    TrUserData).

'dfp_read_field_def_Etcd.StatusRequest'(<<>>, 0, 0,
					_) ->
    #{};
'dfp_read_field_def_Etcd.StatusRequest'(Other, Z1, Z2,
					TrUserData) ->
    'dg_read_field_def_Etcd.StatusRequest'(Other, Z1, Z2,
					   TrUserData).

'dg_read_field_def_Etcd.StatusRequest'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.StatusRequest'(Rest, N + 7,
					   X bsl N + Acc, TrUserData);
'dg_read_field_def_Etcd.StatusRequest'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, TrUserData) ->
    Key = X bsl N + Acc,
    case Key band 7 of
      0 ->
	  'skip_varint_Etcd.StatusRequest'(Rest, 0, 0,
					   TrUserData);
      1 ->
	  'skip_64_Etcd.StatusRequest'(Rest, 0, 0, TrUserData);
      2 ->
	  'skip_length_delimited_Etcd.StatusRequest'(Rest, 0, 0,
						     TrUserData);
      3 ->
	  'skip_group_Etcd.StatusRequest'(Rest, Key bsr 3, 0,
					  TrUserData);
      5 ->
	  'skip_32_Etcd.StatusRequest'(Rest, 0, 0, TrUserData)
    end;
'dg_read_field_def_Etcd.StatusRequest'(<<>>, 0, 0, _) ->
    #{}.

'skip_varint_Etcd.StatusRequest'(<<1:1, _:7,
				   Rest/binary>>,
				 Z1, Z2, TrUserData) ->
    'skip_varint_Etcd.StatusRequest'(Rest, Z1, Z2,
				     TrUserData);
'skip_varint_Etcd.StatusRequest'(<<0:1, _:7,
				   Rest/binary>>,
				 Z1, Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.StatusRequest'(Rest, Z1, Z2,
					    TrUserData).

'skip_length_delimited_Etcd.StatusRequest'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.StatusRequest'(Rest, N + 7,
					       X bsl N + Acc, TrUserData);
'skip_length_delimited_Etcd.StatusRequest'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.StatusRequest'(Rest2, 0, 0,
					    TrUserData).

'skip_group_Etcd.StatusRequest'(Bin, FNum, Z2,
				TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.StatusRequest'(Rest, 0, Z2,
					    TrUserData).

'skip_32_Etcd.StatusRequest'(<<_:32, Rest/binary>>, Z1,
			     Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.StatusRequest'(Rest, Z1, Z2,
					    TrUserData).

'skip_64_Etcd.StatusRequest'(<<_:64, Rest/binary>>, Z1,
			     Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.StatusRequest'(Rest, Z1, Z2,
					    TrUserData).

'decode_msg_Etcd.StatusResponse'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.StatusResponse'(Bin, 0, 0,
					     id('$undef', TrUserData),
					     id(<<>>, TrUserData),
					     id(0, TrUserData),
					     id(0, TrUserData),
					     id(0, TrUserData),
					     id(0, TrUserData),
					     id(0, TrUserData),
					     id([], TrUserData),
					     id(0, TrUserData),
					     id(false, TrUserData), TrUserData).

'dfp_read_field_def_Etcd.StatusResponse'(<<10,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					 F@_6, F@_7, F@_8, F@_9, F@_10,
					 TrUserData) ->
    'd_field_Etcd.StatusResponse_header'(Rest, Z1, Z2, F@_1,
					 F@_2, F@_3, F@_4, F@_5, F@_6, F@_7,
					 F@_8, F@_9, F@_10, TrUserData);
'dfp_read_field_def_Etcd.StatusResponse'(<<18,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					 F@_6, F@_7, F@_8, F@_9, F@_10,
					 TrUserData) ->
    'd_field_Etcd.StatusResponse_version'(Rest, Z1, Z2,
					  F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					  F@_7, F@_8, F@_9, F@_10, TrUserData);
'dfp_read_field_def_Etcd.StatusResponse'(<<24,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					 F@_6, F@_7, F@_8, F@_9, F@_10,
					 TrUserData) ->
    'd_field_Etcd.StatusResponse_dbSize'(Rest, Z1, Z2, F@_1,
					 F@_2, F@_3, F@_4, F@_5, F@_6, F@_7,
					 F@_8, F@_9, F@_10, TrUserData);
'dfp_read_field_def_Etcd.StatusResponse'(<<32,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					 F@_6, F@_7, F@_8, F@_9, F@_10,
					 TrUserData) ->
    'd_field_Etcd.StatusResponse_leader'(Rest, Z1, Z2, F@_1,
					 F@_2, F@_3, F@_4, F@_5, F@_6, F@_7,
					 F@_8, F@_9, F@_10, TrUserData);
'dfp_read_field_def_Etcd.StatusResponse'(<<40,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					 F@_6, F@_7, F@_8, F@_9, F@_10,
					 TrUserData) ->
    'd_field_Etcd.StatusResponse_raftIndex'(Rest, Z1, Z2,
					    F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					    F@_7, F@_8, F@_9, F@_10,
					    TrUserData);
'dfp_read_field_def_Etcd.StatusResponse'(<<48,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					 F@_6, F@_7, F@_8, F@_9, F@_10,
					 TrUserData) ->
    'd_field_Etcd.StatusResponse_raftTerm'(Rest, Z1, Z2,
					   F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					   F@_7, F@_8, F@_9, F@_10, TrUserData);
'dfp_read_field_def_Etcd.StatusResponse'(<<56,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					 F@_6, F@_7, F@_8, F@_9, F@_10,
					 TrUserData) ->
    'd_field_Etcd.StatusResponse_raftAppliedIndex'(Rest, Z1,
						   Z2, F@_1, F@_2, F@_3, F@_4,
						   F@_5, F@_6, F@_7, F@_8, F@_9,
						   F@_10, TrUserData);
'dfp_read_field_def_Etcd.StatusResponse'(<<66,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					 F@_6, F@_7, F@_8, F@_9, F@_10,
					 TrUserData) ->
    'd_field_Etcd.StatusResponse_errors'(Rest, Z1, Z2, F@_1,
					 F@_2, F@_3, F@_4, F@_5, F@_6, F@_7,
					 F@_8, F@_9, F@_10, TrUserData);
'dfp_read_field_def_Etcd.StatusResponse'(<<72,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					 F@_6, F@_7, F@_8, F@_9, F@_10,
					 TrUserData) ->
    'd_field_Etcd.StatusResponse_dbSizeInUse'(Rest, Z1, Z2,
					      F@_1, F@_2, F@_3, F@_4, F@_5,
					      F@_6, F@_7, F@_8, F@_9, F@_10,
					      TrUserData);
'dfp_read_field_def_Etcd.StatusResponse'(<<80,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					 F@_6, F@_7, F@_8, F@_9, F@_10,
					 TrUserData) ->
    'd_field_Etcd.StatusResponse_isLearner'(Rest, Z1, Z2,
					    F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					    F@_7, F@_8, F@_9, F@_10,
					    TrUserData);
'dfp_read_field_def_Etcd.StatusResponse'(<<>>, 0, 0,
					 F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					 F@_7, R1, F@_9, F@_10, TrUserData) ->
    S1 = #{version => F@_2, dbSize => F@_3, leader => F@_4,
	   raftIndex => F@_5, raftTerm => F@_6,
	   raftAppliedIndex => F@_7,
	   errors => lists_reverse(R1, TrUserData),
	   dbSizeInUse => F@_9, isLearner => F@_10},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.StatusResponse'(Other, Z1, Z2,
					 F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					 F@_7, F@_8, F@_9, F@_10, TrUserData) ->
    'dg_read_field_def_Etcd.StatusResponse'(Other, Z1, Z2,
					    F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					    F@_7, F@_8, F@_9, F@_10,
					    TrUserData).

'dg_read_field_def_Etcd.StatusResponse'(<<1:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					F@_6, F@_7, F@_8, F@_9, F@_10,
					TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.StatusResponse'(Rest, N + 7,
					    X bsl N + Acc, F@_1, F@_2, F@_3,
					    F@_4, F@_5, F@_6, F@_7, F@_8, F@_9,
					    F@_10, TrUserData);
'dg_read_field_def_Etcd.StatusResponse'(<<0:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					F@_6, F@_7, F@_8, F@_9, F@_10,
					TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.StatusResponse_header'(Rest, 0, 0, F@_1,
					       F@_2, F@_3, F@_4, F@_5, F@_6,
					       F@_7, F@_8, F@_9, F@_10,
					       TrUserData);
      18 ->
	  'd_field_Etcd.StatusResponse_version'(Rest, 0, 0, F@_1,
						F@_2, F@_3, F@_4, F@_5, F@_6,
						F@_7, F@_8, F@_9, F@_10,
						TrUserData);
      24 ->
	  'd_field_Etcd.StatusResponse_dbSize'(Rest, 0, 0, F@_1,
					       F@_2, F@_3, F@_4, F@_5, F@_6,
					       F@_7, F@_8, F@_9, F@_10,
					       TrUserData);
      32 ->
	  'd_field_Etcd.StatusResponse_leader'(Rest, 0, 0, F@_1,
					       F@_2, F@_3, F@_4, F@_5, F@_6,
					       F@_7, F@_8, F@_9, F@_10,
					       TrUserData);
      40 ->
	  'd_field_Etcd.StatusResponse_raftIndex'(Rest, 0, 0,
						  F@_1, F@_2, F@_3, F@_4, F@_5,
						  F@_6, F@_7, F@_8, F@_9, F@_10,
						  TrUserData);
      48 ->
	  'd_field_Etcd.StatusResponse_raftTerm'(Rest, 0, 0, F@_1,
						 F@_2, F@_3, F@_4, F@_5, F@_6,
						 F@_7, F@_8, F@_9, F@_10,
						 TrUserData);
      56 ->
	  'd_field_Etcd.StatusResponse_raftAppliedIndex'(Rest, 0,
							 0, F@_1, F@_2, F@_3,
							 F@_4, F@_5, F@_6, F@_7,
							 F@_8, F@_9, F@_10,
							 TrUserData);
      66 ->
	  'd_field_Etcd.StatusResponse_errors'(Rest, 0, 0, F@_1,
					       F@_2, F@_3, F@_4, F@_5, F@_6,
					       F@_7, F@_8, F@_9, F@_10,
					       TrUserData);
      72 ->
	  'd_field_Etcd.StatusResponse_dbSizeInUse'(Rest, 0, 0,
						    F@_1, F@_2, F@_3, F@_4,
						    F@_5, F@_6, F@_7, F@_8,
						    F@_9, F@_10, TrUserData);
      80 ->
	  'd_field_Etcd.StatusResponse_isLearner'(Rest, 0, 0,
						  F@_1, F@_2, F@_3, F@_4, F@_5,
						  F@_6, F@_7, F@_8, F@_9, F@_10,
						  TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.StatusResponse'(Rest, 0, 0, F@_1,
						  F@_2, F@_3, F@_4, F@_5, F@_6,
						  F@_7, F@_8, F@_9, F@_10,
						  TrUserData);
	    1 ->
		'skip_64_Etcd.StatusResponse'(Rest, 0, 0, F@_1, F@_2,
					      F@_3, F@_4, F@_5, F@_6, F@_7,
					      F@_8, F@_9, F@_10, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.StatusResponse'(Rest, 0, 0,
							    F@_1, F@_2, F@_3,
							    F@_4, F@_5, F@_6,
							    F@_7, F@_8, F@_9,
							    F@_10, TrUserData);
	    3 ->
		'skip_group_Etcd.StatusResponse'(Rest, Key bsr 3, 0,
						 F@_1, F@_2, F@_3, F@_4, F@_5,
						 F@_6, F@_7, F@_8, F@_9, F@_10,
						 TrUserData);
	    5 ->
		'skip_32_Etcd.StatusResponse'(Rest, 0, 0, F@_1, F@_2,
					      F@_3, F@_4, F@_5, F@_6, F@_7,
					      F@_8, F@_9, F@_10, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.StatusResponse'(<<>>, 0, 0,
					F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					F@_7, R1, F@_9, F@_10, TrUserData) ->
    S1 = #{version => F@_2, dbSize => F@_3, leader => F@_4,
	   raftIndex => F@_5, raftTerm => F@_6,
	   raftAppliedIndex => F@_7,
	   errors => lists_reverse(R1, TrUserData),
	   dbSizeInUse => F@_9, isLearner => F@_10},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.StatusResponse_header'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				     F@_7, F@_8, F@_9, F@_10, TrUserData)
    when N < 57 ->
    'd_field_Etcd.StatusResponse_header'(Rest, N + 7,
					 X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
					 F@_5, F@_6, F@_7, F@_8, F@_9, F@_10,
					 TrUserData);
'd_field_Etcd.StatusResponse_header'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, Prev, F@_2, F@_3, F@_4, F@_5, F@_6,
				     F@_7, F@_8, F@_9, F@_10, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.StatusResponse'(RestF, 0, 0,
					     if Prev == '$undef' -> NewFValue;
						true ->
						    'merge_msg_Etcd.ResponseHeader'(Prev,
										    NewFValue,
										    TrUserData)
					     end,
					     F@_2, F@_3, F@_4, F@_5, F@_6, F@_7,
					     F@_8, F@_9, F@_10, TrUserData).

'd_field_Etcd.StatusResponse_version'(<<1:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				      F@_6, F@_7, F@_8, F@_9, F@_10, TrUserData)
    when N < 57 ->
    'd_field_Etcd.StatusResponse_version'(Rest, N + 7,
					  X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
					  F@_5, F@_6, F@_7, F@_8, F@_9, F@_10,
					  TrUserData);
'd_field_Etcd.StatusResponse_version'(<<0:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, _, F@_3, F@_4, F@_5, F@_6,
				      F@_7, F@_8, F@_9, F@_10, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.StatusResponse'(RestF, 0, 0,
					     F@_1, NewFValue, F@_3, F@_4, F@_5,
					     F@_6, F@_7, F@_8, F@_9, F@_10,
					     TrUserData).

'd_field_Etcd.StatusResponse_dbSize'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				     F@_7, F@_8, F@_9, F@_10, TrUserData)
    when N < 57 ->
    'd_field_Etcd.StatusResponse_dbSize'(Rest, N + 7,
					 X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
					 F@_5, F@_6, F@_7, F@_8, F@_9, F@_10,
					 TrUserData);
'd_field_Etcd.StatusResponse_dbSize'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, _, F@_4, F@_5, F@_6,
				     F@_7, F@_8, F@_9, F@_10, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.StatusResponse'(RestF, 0, 0,
					     F@_1, F@_2, NewFValue, F@_4, F@_5,
					     F@_6, F@_7, F@_8, F@_9, F@_10,
					     TrUserData).

'd_field_Etcd.StatusResponse_leader'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				     F@_7, F@_8, F@_9, F@_10, TrUserData)
    when N < 57 ->
    'd_field_Etcd.StatusResponse_leader'(Rest, N + 7,
					 X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
					 F@_5, F@_6, F@_7, F@_8, F@_9, F@_10,
					 TrUserData);
'd_field_Etcd.StatusResponse_leader'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, F@_3, _, F@_5, F@_6,
				     F@_7, F@_8, F@_9, F@_10, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc, TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.StatusResponse'(RestF, 0, 0,
					     F@_1, F@_2, F@_3, NewFValue, F@_5,
					     F@_6, F@_7, F@_8, F@_9, F@_10,
					     TrUserData).

'd_field_Etcd.StatusResponse_raftIndex'(<<1:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					F@_6, F@_7, F@_8, F@_9, F@_10,
					TrUserData)
    when N < 57 ->
    'd_field_Etcd.StatusResponse_raftIndex'(Rest, N + 7,
					    X bsl N + Acc, F@_1, F@_2, F@_3,
					    F@_4, F@_5, F@_6, F@_7, F@_8, F@_9,
					    F@_10, TrUserData);
'd_field_Etcd.StatusResponse_raftIndex'(<<0:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, F@_2, F@_3, F@_4, _, F@_6,
					F@_7, F@_8, F@_9, F@_10, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc, TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.StatusResponse'(RestF, 0, 0,
					     F@_1, F@_2, F@_3, F@_4, NewFValue,
					     F@_6, F@_7, F@_8, F@_9, F@_10,
					     TrUserData).

'd_field_Etcd.StatusResponse_raftTerm'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				       F@_6, F@_7, F@_8, F@_9, F@_10,
				       TrUserData)
    when N < 57 ->
    'd_field_Etcd.StatusResponse_raftTerm'(Rest, N + 7,
					   X bsl N + Acc, F@_1, F@_2, F@_3,
					   F@_4, F@_5, F@_6, F@_7, F@_8, F@_9,
					   F@_10, TrUserData);
'd_field_Etcd.StatusResponse_raftTerm'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, _,
				       F@_7, F@_8, F@_9, F@_10, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc, TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.StatusResponse'(RestF, 0, 0,
					     F@_1, F@_2, F@_3, F@_4, F@_5,
					     NewFValue, F@_7, F@_8, F@_9, F@_10,
					     TrUserData).

'd_field_Etcd.StatusResponse_raftAppliedIndex'(<<1:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, TrUserData)
    when N < 57 ->
    'd_field_Etcd.StatusResponse_raftAppliedIndex'(Rest,
						   N + 7, X bsl N + Acc, F@_1,
						   F@_2, F@_3, F@_4, F@_5, F@_6,
						   F@_7, F@_8, F@_9, F@_10,
						   TrUserData);
'd_field_Etcd.StatusResponse_raftAppliedIndex'(<<0:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, _, F@_8, F@_9, F@_10,
					       TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc, TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.StatusResponse'(RestF, 0, 0,
					     F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					     NewFValue, F@_8, F@_9, F@_10,
					     TrUserData).

'd_field_Etcd.StatusResponse_errors'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				     F@_7, F@_8, F@_9, F@_10, TrUserData)
    when N < 57 ->
    'd_field_Etcd.StatusResponse_errors'(Rest, N + 7,
					 X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
					 F@_5, F@_6, F@_7, F@_8, F@_9, F@_10,
					 TrUserData);
'd_field_Etcd.StatusResponse_errors'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				     F@_7, Prev, F@_9, F@_10, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.StatusResponse'(RestF, 0, 0,
					     F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					     F@_7,
					     cons(NewFValue, Prev, TrUserData),
					     F@_9, F@_10, TrUserData).

'd_field_Etcd.StatusResponse_dbSizeInUse'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					  F@_6, F@_7, F@_8, F@_9, F@_10,
					  TrUserData)
    when N < 57 ->
    'd_field_Etcd.StatusResponse_dbSizeInUse'(Rest, N + 7,
					      X bsl N + Acc, F@_1, F@_2, F@_3,
					      F@_4, F@_5, F@_6, F@_7, F@_8,
					      F@_9, F@_10, TrUserData);
'd_field_Etcd.StatusResponse_dbSizeInUse'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					  F@_6, F@_7, F@_8, _, F@_10,
					  TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.StatusResponse'(RestF, 0, 0,
					     F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					     F@_7, F@_8, NewFValue, F@_10,
					     TrUserData).

'd_field_Etcd.StatusResponse_isLearner'(<<1:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					F@_6, F@_7, F@_8, F@_9, F@_10,
					TrUserData)
    when N < 57 ->
    'd_field_Etcd.StatusResponse_isLearner'(Rest, N + 7,
					    X bsl N + Acc, F@_1, F@_2, F@_3,
					    F@_4, F@_5, F@_6, F@_7, F@_8, F@_9,
					    F@_10, TrUserData);
'd_field_Etcd.StatusResponse_isLearner'(<<0:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					F@_6, F@_7, F@_8, F@_9, _,
					TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_Etcd.StatusResponse'(RestF, 0, 0,
					     F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					     F@_7, F@_8, F@_9, NewFValue,
					     TrUserData).

'skip_varint_Etcd.StatusResponse'(<<1:1, _:7,
				    Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				  F@_7, F@_8, F@_9, F@_10, TrUserData) ->
    'skip_varint_Etcd.StatusResponse'(Rest, Z1, Z2, F@_1,
				      F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8,
				      F@_9, F@_10, TrUserData);
'skip_varint_Etcd.StatusResponse'(<<0:1, _:7,
				    Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				  F@_7, F@_8, F@_9, F@_10, TrUserData) ->
    'dfp_read_field_def_Etcd.StatusResponse'(Rest, Z1, Z2,
					     F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					     F@_7, F@_8, F@_9, F@_10,
					     TrUserData).

'skip_length_delimited_Etcd.StatusResponse'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, F@_3, F@_4,
					    F@_5, F@_6, F@_7, F@_8, F@_9, F@_10,
					    TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.StatusResponse'(Rest, N + 7,
						X bsl N + Acc, F@_1, F@_2, F@_3,
						F@_4, F@_5, F@_6, F@_7, F@_8,
						F@_9, F@_10, TrUserData);
'skip_length_delimited_Etcd.StatusResponse'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, F@_3, F@_4,
					    F@_5, F@_6, F@_7, F@_8, F@_9, F@_10,
					    TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.StatusResponse'(Rest2, 0, 0,
					     F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					     F@_7, F@_8, F@_9, F@_10,
					     TrUserData).

'skip_group_Etcd.StatusResponse'(Bin, FNum, Z2, F@_1,
				 F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9,
				 F@_10, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.StatusResponse'(Rest, 0, Z2,
					     F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					     F@_7, F@_8, F@_9, F@_10,
					     TrUserData).

'skip_32_Etcd.StatusResponse'(<<_:32, Rest/binary>>, Z1,
			      Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7,
			      F@_8, F@_9, F@_10, TrUserData) ->
    'dfp_read_field_def_Etcd.StatusResponse'(Rest, Z1, Z2,
					     F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					     F@_7, F@_8, F@_9, F@_10,
					     TrUserData).

'skip_64_Etcd.StatusResponse'(<<_:64, Rest/binary>>, Z1,
			      Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7,
			      F@_8, F@_9, F@_10, TrUserData) ->
    'dfp_read_field_def_Etcd.StatusResponse'(Rest, Z1, Z2,
					     F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					     F@_7, F@_8, F@_9, F@_10,
					     TrUserData).

'decode_msg_Etcd.AuthEnableRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthEnableRequest'(Bin, 0, 0,
						TrUserData).

'dfp_read_field_def_Etcd.AuthEnableRequest'(<<>>, 0, 0,
					    _) ->
    #{};
'dfp_read_field_def_Etcd.AuthEnableRequest'(Other, Z1,
					    Z2, TrUserData) ->
    'dg_read_field_def_Etcd.AuthEnableRequest'(Other, Z1,
					       Z2, TrUserData).

'dg_read_field_def_Etcd.AuthEnableRequest'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthEnableRequest'(Rest, N + 7,
					       X bsl N + Acc, TrUserData);
'dg_read_field_def_Etcd.AuthEnableRequest'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, TrUserData) ->
    Key = X bsl N + Acc,
    case Key band 7 of
      0 ->
	  'skip_varint_Etcd.AuthEnableRequest'(Rest, 0, 0,
					       TrUserData);
      1 ->
	  'skip_64_Etcd.AuthEnableRequest'(Rest, 0, 0,
					   TrUserData);
      2 ->
	  'skip_length_delimited_Etcd.AuthEnableRequest'(Rest, 0,
							 0, TrUserData);
      3 ->
	  'skip_group_Etcd.AuthEnableRequest'(Rest, Key bsr 3, 0,
					      TrUserData);
      5 ->
	  'skip_32_Etcd.AuthEnableRequest'(Rest, 0, 0, TrUserData)
    end;
'dg_read_field_def_Etcd.AuthEnableRequest'(<<>>, 0, 0,
					   _) ->
    #{}.

'skip_varint_Etcd.AuthEnableRequest'(<<1:1, _:7,
				       Rest/binary>>,
				     Z1, Z2, TrUserData) ->
    'skip_varint_Etcd.AuthEnableRequest'(Rest, Z1, Z2,
					 TrUserData);
'skip_varint_Etcd.AuthEnableRequest'(<<0:1, _:7,
				       Rest/binary>>,
				     Z1, Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthEnableRequest'(Rest, Z1,
						Z2, TrUserData).

'skip_length_delimited_Etcd.AuthEnableRequest'(<<1:1,
						 X:7, Rest/binary>>,
					       N, Acc, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthEnableRequest'(Rest,
						   N + 7, X bsl N + Acc,
						   TrUserData);
'skip_length_delimited_Etcd.AuthEnableRequest'(<<0:1,
						 X:7, Rest/binary>>,
					       N, Acc, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthEnableRequest'(Rest2, 0, 0,
						TrUserData).

'skip_group_Etcd.AuthEnableRequest'(Bin, FNum, Z2,
				    TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthEnableRequest'(Rest, 0, Z2,
						TrUserData).

'skip_32_Etcd.AuthEnableRequest'(<<_:32, Rest/binary>>,
				 Z1, Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthEnableRequest'(Rest, Z1,
						Z2, TrUserData).

'skip_64_Etcd.AuthEnableRequest'(<<_:64, Rest/binary>>,
				 Z1, Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthEnableRequest'(Rest, Z1,
						Z2, TrUserData).

'decode_msg_Etcd.AuthDisableRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthDisableRequest'(Bin, 0, 0,
						 TrUserData).

'dfp_read_field_def_Etcd.AuthDisableRequest'(<<>>, 0, 0,
					     _) ->
    #{};
'dfp_read_field_def_Etcd.AuthDisableRequest'(Other, Z1,
					     Z2, TrUserData) ->
    'dg_read_field_def_Etcd.AuthDisableRequest'(Other, Z1,
						Z2, TrUserData).

'dg_read_field_def_Etcd.AuthDisableRequest'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthDisableRequest'(Rest, N + 7,
						X bsl N + Acc, TrUserData);
'dg_read_field_def_Etcd.AuthDisableRequest'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, TrUserData) ->
    Key = X bsl N + Acc,
    case Key band 7 of
      0 ->
	  'skip_varint_Etcd.AuthDisableRequest'(Rest, 0, 0,
						TrUserData);
      1 ->
	  'skip_64_Etcd.AuthDisableRequest'(Rest, 0, 0,
					    TrUserData);
      2 ->
	  'skip_length_delimited_Etcd.AuthDisableRequest'(Rest, 0,
							  0, TrUserData);
      3 ->
	  'skip_group_Etcd.AuthDisableRequest'(Rest, Key bsr 3, 0,
					       TrUserData);
      5 ->
	  'skip_32_Etcd.AuthDisableRequest'(Rest, 0, 0,
					    TrUserData)
    end;
'dg_read_field_def_Etcd.AuthDisableRequest'(<<>>, 0, 0,
					    _) ->
    #{}.

'skip_varint_Etcd.AuthDisableRequest'(<<1:1, _:7,
					Rest/binary>>,
				      Z1, Z2, TrUserData) ->
    'skip_varint_Etcd.AuthDisableRequest'(Rest, Z1, Z2,
					  TrUserData);
'skip_varint_Etcd.AuthDisableRequest'(<<0:1, _:7,
					Rest/binary>>,
				      Z1, Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthDisableRequest'(Rest, Z1,
						 Z2, TrUserData).

'skip_length_delimited_Etcd.AuthDisableRequest'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthDisableRequest'(Rest,
						    N + 7, X bsl N + Acc,
						    TrUserData);
'skip_length_delimited_Etcd.AuthDisableRequest'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthDisableRequest'(Rest2, 0,
						 0, TrUserData).

'skip_group_Etcd.AuthDisableRequest'(Bin, FNum, Z2,
				     TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthDisableRequest'(Rest, 0,
						 Z2, TrUserData).

'skip_32_Etcd.AuthDisableRequest'(<<_:32, Rest/binary>>,
				  Z1, Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthDisableRequest'(Rest, Z1,
						 Z2, TrUserData).

'skip_64_Etcd.AuthDisableRequest'(<<_:64, Rest/binary>>,
				  Z1, Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthDisableRequest'(Rest, Z1,
						 Z2, TrUserData).

'decode_msg_Etcd.AuthenticateRequest'(Bin,
				      TrUserData) ->
    'dfp_read_field_def_Etcd.AuthenticateRequest'(Bin, 0, 0,
						  id(<<>>, TrUserData),
						  id(<<>>, TrUserData),
						  TrUserData).

'dfp_read_field_def_Etcd.AuthenticateRequest'(<<10,
						Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.AuthenticateRequest_name'(Rest, Z1, Z2,
					    F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.AuthenticateRequest'(<<18,
						Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.AuthenticateRequest_password'(Rest, Z1,
						Z2, F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.AuthenticateRequest'(<<>>, 0,
					      0, F@_1, F@_2, _) ->
    #{name => F@_1, password => F@_2};
'dfp_read_field_def_Etcd.AuthenticateRequest'(Other, Z1,
					      Z2, F@_1, F@_2, TrUserData) ->
    'dg_read_field_def_Etcd.AuthenticateRequest'(Other, Z1,
						 Z2, F@_1, F@_2, TrUserData).

'dg_read_field_def_Etcd.AuthenticateRequest'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthenticateRequest'(Rest,
						 N + 7, X bsl N + Acc, F@_1,
						 F@_2, TrUserData);
'dg_read_field_def_Etcd.AuthenticateRequest'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.AuthenticateRequest_name'(Rest, 0, 0,
						  F@_1, F@_2, TrUserData);
      18 ->
	  'd_field_Etcd.AuthenticateRequest_password'(Rest, 0, 0,
						      F@_1, F@_2, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AuthenticateRequest'(Rest, 0, 0, F@_1,
						       F@_2, TrUserData);
	    1 ->
		'skip_64_Etcd.AuthenticateRequest'(Rest, 0, 0, F@_1,
						   F@_2, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AuthenticateRequest'(Rest,
								 0, 0, F@_1,
								 F@_2,
								 TrUserData);
	    3 ->
		'skip_group_Etcd.AuthenticateRequest'(Rest, Key bsr 3,
						      0, F@_1, F@_2,
						      TrUserData);
	    5 ->
		'skip_32_Etcd.AuthenticateRequest'(Rest, 0, 0, F@_1,
						   F@_2, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AuthenticateRequest'(<<>>, 0, 0,
					     F@_1, F@_2, _) ->
    #{name => F@_1, password => F@_2}.

'd_field_Etcd.AuthenticateRequest_name'(<<1:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthenticateRequest_name'(Rest, N + 7,
					    X bsl N + Acc, F@_1, F@_2,
					    TrUserData);
'd_field_Etcd.AuthenticateRequest_name'(<<0:1, X:7,
					  Rest/binary>>,
					N, Acc, _, F@_2, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthenticateRequest'(RestF, 0,
						  0, NewFValue, F@_2,
						  TrUserData).

'd_field_Etcd.AuthenticateRequest_password'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthenticateRequest_password'(Rest, N + 7,
						X bsl N + Acc, F@_1, F@_2,
						TrUserData);
'd_field_Etcd.AuthenticateRequest_password'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, _, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthenticateRequest'(RestF, 0,
						  0, F@_1, NewFValue,
						  TrUserData).

'skip_varint_Etcd.AuthenticateRequest'(<<1:1, _:7,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_Etcd.AuthenticateRequest'(Rest, Z1, Z2,
					   F@_1, F@_2, TrUserData);
'skip_varint_Etcd.AuthenticateRequest'(<<0:1, _:7,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthenticateRequest'(Rest, Z1,
						  Z2, F@_1, F@_2, TrUserData).

'skip_length_delimited_Etcd.AuthenticateRequest'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthenticateRequest'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     F@_2, TrUserData);
'skip_length_delimited_Etcd.AuthenticateRequest'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2,
						 TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthenticateRequest'(Rest2, 0,
						  0, F@_1, F@_2, TrUserData).

'skip_group_Etcd.AuthenticateRequest'(Bin, FNum, Z2,
				      F@_1, F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthenticateRequest'(Rest, 0,
						  Z2, F@_1, F@_2, TrUserData).

'skip_32_Etcd.AuthenticateRequest'(<<_:32,
				     Rest/binary>>,
				   Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthenticateRequest'(Rest, Z1,
						  Z2, F@_1, F@_2, TrUserData).

'skip_64_Etcd.AuthenticateRequest'(<<_:64,
				     Rest/binary>>,
				   Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthenticateRequest'(Rest, Z1,
						  Z2, F@_1, F@_2, TrUserData).

'decode_msg_Etcd.AuthUserAddRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserAddRequest'(Bin, 0, 0,
						 id(<<>>, TrUserData),
						 id(<<>>, TrUserData),
						 id('$undef', TrUserData),
						 TrUserData).

'dfp_read_field_def_Etcd.AuthUserAddRequest'(<<10,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, F@_3,
					     TrUserData) ->
    'd_field_Etcd.AuthUserAddRequest_name'(Rest, Z1, Z2,
					   F@_1, F@_2, F@_3, TrUserData);
'dfp_read_field_def_Etcd.AuthUserAddRequest'(<<18,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, F@_3,
					     TrUserData) ->
    'd_field_Etcd.AuthUserAddRequest_password'(Rest, Z1, Z2,
					       F@_1, F@_2, F@_3, TrUserData);
'dfp_read_field_def_Etcd.AuthUserAddRequest'(<<26,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, F@_3,
					     TrUserData) ->
    'd_field_Etcd.AuthUserAddRequest_options'(Rest, Z1, Z2,
					      F@_1, F@_2, F@_3, TrUserData);
'dfp_read_field_def_Etcd.AuthUserAddRequest'(<<>>, 0, 0,
					     F@_1, F@_2, F@_3, _) ->
    S1 = #{name => F@_1, password => F@_2},
    if F@_3 == '$undef' -> S1;
       true -> S1#{options => F@_3}
    end;
'dfp_read_field_def_Etcd.AuthUserAddRequest'(Other, Z1,
					     Z2, F@_1, F@_2, F@_3,
					     TrUserData) ->
    'dg_read_field_def_Etcd.AuthUserAddRequest'(Other, Z1,
						Z2, F@_1, F@_2, F@_3,
						TrUserData).

'dg_read_field_def_Etcd.AuthUserAddRequest'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, F@_3,
					    TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthUserAddRequest'(Rest, N + 7,
						X bsl N + Acc, F@_1, F@_2, F@_3,
						TrUserData);
'dg_read_field_def_Etcd.AuthUserAddRequest'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, F@_3,
					    TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.AuthUserAddRequest_name'(Rest, 0, 0, F@_1,
						 F@_2, F@_3, TrUserData);
      18 ->
	  'd_field_Etcd.AuthUserAddRequest_password'(Rest, 0, 0,
						     F@_1, F@_2, F@_3,
						     TrUserData);
      26 ->
	  'd_field_Etcd.AuthUserAddRequest_options'(Rest, 0, 0,
						    F@_1, F@_2, F@_3,
						    TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AuthUserAddRequest'(Rest, 0, 0, F@_1,
						      F@_2, F@_3, TrUserData);
	    1 ->
		'skip_64_Etcd.AuthUserAddRequest'(Rest, 0, 0, F@_1,
						  F@_2, F@_3, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AuthUserAddRequest'(Rest, 0,
								0, F@_1, F@_2,
								F@_3,
								TrUserData);
	    3 ->
		'skip_group_Etcd.AuthUserAddRequest'(Rest, Key bsr 3, 0,
						     F@_1, F@_2, F@_3,
						     TrUserData);
	    5 ->
		'skip_32_Etcd.AuthUserAddRequest'(Rest, 0, 0, F@_1,
						  F@_2, F@_3, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AuthUserAddRequest'(<<>>, 0, 0,
					    F@_1, F@_2, F@_3, _) ->
    S1 = #{name => F@_1, password => F@_2},
    if F@_3 == '$undef' -> S1;
       true -> S1#{options => F@_3}
    end.

'd_field_Etcd.AuthUserAddRequest_name'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthUserAddRequest_name'(Rest, N + 7,
					   X bsl N + Acc, F@_1, F@_2, F@_3,
					   TrUserData);
'd_field_Etcd.AuthUserAddRequest_name'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, _, F@_2, F@_3, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthUserAddRequest'(RestF, 0,
						 0, NewFValue, F@_2, F@_3,
						 TrUserData).

'd_field_Etcd.AuthUserAddRequest_password'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthUserAddRequest_password'(Rest, N + 7,
					       X bsl N + Acc, F@_1, F@_2, F@_3,
					       TrUserData);
'd_field_Etcd.AuthUserAddRequest_password'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, _, F@_3, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthUserAddRequest'(RestF, 0,
						 0, F@_1, NewFValue, F@_3,
						 TrUserData).

'd_field_Etcd.AuthUserAddRequest_options'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthUserAddRequest_options'(Rest, N + 7,
					      X bsl N + Acc, F@_1, F@_2, F@_3,
					      TrUserData);
'd_field_Etcd.AuthUserAddRequest_options'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, Prev,
					  TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_authpb.UserAddOptions'(Bs,
								  TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthUserAddRequest'(RestF, 0,
						 0, F@_1, F@_2,
						 if Prev == '$undef' ->
							NewFValue;
						    true ->
							'merge_msg_authpb.UserAddOptions'(Prev,
											  NewFValue,
											  TrUserData)
						 end,
						 TrUserData).

'skip_varint_Etcd.AuthUserAddRequest'(<<1:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'skip_varint_Etcd.AuthUserAddRequest'(Rest, Z1, Z2,
					  F@_1, F@_2, F@_3, TrUserData);
'skip_varint_Etcd.AuthUserAddRequest'(<<0:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserAddRequest'(Rest, Z1,
						 Z2, F@_1, F@_2, F@_3,
						 TrUserData).

'skip_length_delimited_Etcd.AuthUserAddRequest'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3,
						TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthUserAddRequest'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    F@_2, F@_3, TrUserData);
'skip_length_delimited_Etcd.AuthUserAddRequest'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3,
						TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthUserAddRequest'(Rest2, 0,
						 0, F@_1, F@_2, F@_3,
						 TrUserData).

'skip_group_Etcd.AuthUserAddRequest'(Bin, FNum, Z2,
				     F@_1, F@_2, F@_3, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthUserAddRequest'(Rest, 0,
						 Z2, F@_1, F@_2, F@_3,
						 TrUserData).

'skip_32_Etcd.AuthUserAddRequest'(<<_:32, Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserAddRequest'(Rest, Z1,
						 Z2, F@_1, F@_2, F@_3,
						 TrUserData).

'skip_64_Etcd.AuthUserAddRequest'(<<_:64, Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserAddRequest'(Rest, Z1,
						 Z2, F@_1, F@_2, F@_3,
						 TrUserData).

'decode_msg_Etcd.AuthUserGetRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserGetRequest'(Bin, 0, 0,
						 id(<<>>, TrUserData),
						 TrUserData).

'dfp_read_field_def_Etcd.AuthUserGetRequest'(<<10,
					       Rest/binary>>,
					     Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.AuthUserGetRequest_name'(Rest, Z1, Z2,
					   F@_1, TrUserData);
'dfp_read_field_def_Etcd.AuthUserGetRequest'(<<>>, 0, 0,
					     F@_1, _) ->
    #{name => F@_1};
'dfp_read_field_def_Etcd.AuthUserGetRequest'(Other, Z1,
					     Z2, F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.AuthUserGetRequest'(Other, Z1,
						Z2, F@_1, TrUserData).

'dg_read_field_def_Etcd.AuthUserGetRequest'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthUserGetRequest'(Rest, N + 7,
						X bsl N + Acc, F@_1,
						TrUserData);
'dg_read_field_def_Etcd.AuthUserGetRequest'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.AuthUserGetRequest_name'(Rest, 0, 0, F@_1,
						 TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AuthUserGetRequest'(Rest, 0, 0, F@_1,
						      TrUserData);
	    1 ->
		'skip_64_Etcd.AuthUserGetRequest'(Rest, 0, 0, F@_1,
						  TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AuthUserGetRequest'(Rest, 0,
								0, F@_1,
								TrUserData);
	    3 ->
		'skip_group_Etcd.AuthUserGetRequest'(Rest, Key bsr 3, 0,
						     F@_1, TrUserData);
	    5 ->
		'skip_32_Etcd.AuthUserGetRequest'(Rest, 0, 0, F@_1,
						  TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AuthUserGetRequest'(<<>>, 0, 0,
					    F@_1, _) ->
    #{name => F@_1}.

'd_field_Etcd.AuthUserGetRequest_name'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthUserGetRequest_name'(Rest, N + 7,
					   X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.AuthUserGetRequest_name'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, _, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthUserGetRequest'(RestF, 0,
						 0, NewFValue, TrUserData).

'skip_varint_Etcd.AuthUserGetRequest'(<<1:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.AuthUserGetRequest'(Rest, Z1, Z2,
					  F@_1, TrUserData);
'skip_varint_Etcd.AuthUserGetRequest'(<<0:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserGetRequest'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'skip_length_delimited_Etcd.AuthUserGetRequest'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthUserGetRequest'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    TrUserData);
'skip_length_delimited_Etcd.AuthUserGetRequest'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthUserGetRequest'(Rest2, 0,
						 0, F@_1, TrUserData).

'skip_group_Etcd.AuthUserGetRequest'(Bin, FNum, Z2,
				     F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthUserGetRequest'(Rest, 0,
						 Z2, F@_1, TrUserData).

'skip_32_Etcd.AuthUserGetRequest'(<<_:32, Rest/binary>>,
				  Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserGetRequest'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'skip_64_Etcd.AuthUserGetRequest'(<<_:64, Rest/binary>>,
				  Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserGetRequest'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'decode_msg_Etcd.AuthUserDeleteRequest'(Bin,
					TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserDeleteRequest'(Bin, 0,
						    0, id(<<>>, TrUserData),
						    TrUserData).

'dfp_read_field_def_Etcd.AuthUserDeleteRequest'(<<10,
						  Rest/binary>>,
						Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.AuthUserDeleteRequest_name'(Rest, Z1, Z2,
					      F@_1, TrUserData);
'dfp_read_field_def_Etcd.AuthUserDeleteRequest'(<<>>, 0,
						0, F@_1, _) ->
    #{name => F@_1};
'dfp_read_field_def_Etcd.AuthUserDeleteRequest'(Other,
						Z1, Z2, F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.AuthUserDeleteRequest'(Other,
						   Z1, Z2, F@_1, TrUserData).

'dg_read_field_def_Etcd.AuthUserDeleteRequest'(<<1:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthUserDeleteRequest'(Rest,
						   N + 7, X bsl N + Acc, F@_1,
						   TrUserData);
'dg_read_field_def_Etcd.AuthUserDeleteRequest'(<<0:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.AuthUserDeleteRequest_name'(Rest, 0, 0,
						    F@_1, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AuthUserDeleteRequest'(Rest, 0, 0,
							 F@_1, TrUserData);
	    1 ->
		'skip_64_Etcd.AuthUserDeleteRequest'(Rest, 0, 0, F@_1,
						     TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AuthUserDeleteRequest'(Rest,
								   0, 0, F@_1,
								   TrUserData);
	    3 ->
		'skip_group_Etcd.AuthUserDeleteRequest'(Rest, Key bsr 3,
							0, F@_1, TrUserData);
	    5 ->
		'skip_32_Etcd.AuthUserDeleteRequest'(Rest, 0, 0, F@_1,
						     TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AuthUserDeleteRequest'(<<>>, 0,
					       0, F@_1, _) ->
    #{name => F@_1}.

'd_field_Etcd.AuthUserDeleteRequest_name'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthUserDeleteRequest_name'(Rest, N + 7,
					      X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.AuthUserDeleteRequest_name'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, _, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthUserDeleteRequest'(RestF,
						    0, 0, NewFValue,
						    TrUserData).

'skip_varint_Etcd.AuthUserDeleteRequest'(<<1:1, _:7,
					   Rest/binary>>,
					 Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.AuthUserDeleteRequest'(Rest, Z1, Z2,
					     F@_1, TrUserData);
'skip_varint_Etcd.AuthUserDeleteRequest'(<<0:1, _:7,
					   Rest/binary>>,
					 Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserDeleteRequest'(Rest,
						    Z1, Z2, F@_1, TrUserData).

'skip_length_delimited_Etcd.AuthUserDeleteRequest'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthUserDeleteRequest'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, TrUserData);
'skip_length_delimited_Etcd.AuthUserDeleteRequest'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthUserDeleteRequest'(Rest2,
						    0, 0, F@_1, TrUserData).

'skip_group_Etcd.AuthUserDeleteRequest'(Bin, FNum, Z2,
					F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthUserDeleteRequest'(Rest, 0,
						    Z2, F@_1, TrUserData).

'skip_32_Etcd.AuthUserDeleteRequest'(<<_:32,
				       Rest/binary>>,
				     Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserDeleteRequest'(Rest,
						    Z1, Z2, F@_1, TrUserData).

'skip_64_Etcd.AuthUserDeleteRequest'(<<_:64,
				       Rest/binary>>,
				     Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserDeleteRequest'(Rest,
						    Z1, Z2, F@_1, TrUserData).

'decode_msg_Etcd.AuthUserChangePasswordRequest'(Bin,
						TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserChangePasswordRequest'(Bin,
							    0, 0,
							    id(<<>>,
							       TrUserData),
							    id(<<>>,
							       TrUserData),
							    TrUserData).

'dfp_read_field_def_Etcd.AuthUserChangePasswordRequest'(<<10,
							  Rest/binary>>,
							Z1, Z2, F@_1, F@_2,
							TrUserData) ->
    'd_field_Etcd.AuthUserChangePasswordRequest_name'(Rest,
						      Z1, Z2, F@_1, F@_2,
						      TrUserData);
'dfp_read_field_def_Etcd.AuthUserChangePasswordRequest'(<<18,
							  Rest/binary>>,
							Z1, Z2, F@_1, F@_2,
							TrUserData) ->
    'd_field_Etcd.AuthUserChangePasswordRequest_password'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  TrUserData);
'dfp_read_field_def_Etcd.AuthUserChangePasswordRequest'(<<>>,
							0, 0, F@_1, F@_2, _) ->
    #{name => F@_1, password => F@_2};
'dfp_read_field_def_Etcd.AuthUserChangePasswordRequest'(Other,
							Z1, Z2, F@_1, F@_2,
							TrUserData) ->
    'dg_read_field_def_Etcd.AuthUserChangePasswordRequest'(Other,
							   Z1, Z2, F@_1, F@_2,
							   TrUserData).

'dg_read_field_def_Etcd.AuthUserChangePasswordRequest'(<<1:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2,
						       TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthUserChangePasswordRequest'(Rest,
							   N + 7, X bsl N + Acc,
							   F@_1, F@_2,
							   TrUserData);
'dg_read_field_def_Etcd.AuthUserChangePasswordRequest'(<<0:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2,
						       TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.AuthUserChangePasswordRequest_name'(Rest,
							    0, 0, F@_1, F@_2,
							    TrUserData);
      18 ->
	  'd_field_Etcd.AuthUserChangePasswordRequest_password'(Rest,
								0, 0, F@_1,
								F@_2,
								TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AuthUserChangePasswordRequest'(Rest,
								 0, 0, F@_1,
								 F@_2,
								 TrUserData);
	    1 ->
		'skip_64_Etcd.AuthUserChangePasswordRequest'(Rest, 0, 0,
							     F@_1, F@_2,
							     TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AuthUserChangePasswordRequest'(Rest,
									   0, 0,
									   F@_1,
									   F@_2,
									   TrUserData);
	    3 ->
		'skip_group_Etcd.AuthUserChangePasswordRequest'(Rest,
								Key bsr 3, 0,
								F@_1, F@_2,
								TrUserData);
	    5 ->
		'skip_32_Etcd.AuthUserChangePasswordRequest'(Rest, 0, 0,
							     F@_1, F@_2,
							     TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AuthUserChangePasswordRequest'(<<>>,
						       0, 0, F@_1, F@_2, _) ->
    #{name => F@_1, password => F@_2}.

'd_field_Etcd.AuthUserChangePasswordRequest_name'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2,
						  TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthUserChangePasswordRequest_name'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, TrUserData);
'd_field_Etcd.AuthUserChangePasswordRequest_name'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, _, F@_2,
						  TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthUserChangePasswordRequest'(RestF,
							    0, 0, NewFValue,
							    F@_2, TrUserData).

'd_field_Etcd.AuthUserChangePasswordRequest_password'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2,
						      TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthUserChangePasswordRequest_password'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, F@_2,
							  TrUserData);
'd_field_Etcd.AuthUserChangePasswordRequest_password'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, _,
						      TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthUserChangePasswordRequest'(RestF,
							    0, 0, F@_1,
							    NewFValue,
							    TrUserData).

'skip_varint_Etcd.AuthUserChangePasswordRequest'(<<1:1,
						   _:7, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2,
						 TrUserData) ->
    'skip_varint_Etcd.AuthUserChangePasswordRequest'(Rest,
						     Z1, Z2, F@_1, F@_2,
						     TrUserData);
'skip_varint_Etcd.AuthUserChangePasswordRequest'(<<0:1,
						   _:7, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2,
						 TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserChangePasswordRequest'(Rest,
							    Z1, Z2, F@_1, F@_2,
							    TrUserData).

'skip_length_delimited_Etcd.AuthUserChangePasswordRequest'(<<1:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthUserChangePasswordRequest'(Rest,
							       N + 7,
							       X bsl N + Acc,
							       F@_1, F@_2,
							       TrUserData);
'skip_length_delimited_Etcd.AuthUserChangePasswordRequest'(<<0:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthUserChangePasswordRequest'(Rest2,
							    0, 0, F@_1, F@_2,
							    TrUserData).

'skip_group_Etcd.AuthUserChangePasswordRequest'(Bin,
						FNum, Z2, F@_1, F@_2,
						TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthUserChangePasswordRequest'(Rest,
							    0, Z2, F@_1, F@_2,
							    TrUserData).

'skip_32_Etcd.AuthUserChangePasswordRequest'(<<_:32,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserChangePasswordRequest'(Rest,
							    Z1, Z2, F@_1, F@_2,
							    TrUserData).

'skip_64_Etcd.AuthUserChangePasswordRequest'(<<_:64,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserChangePasswordRequest'(Rest,
							    Z1, Z2, F@_1, F@_2,
							    TrUserData).

'decode_msg_Etcd.AuthUserGrantRoleRequest'(Bin,
					   TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserGrantRoleRequest'(Bin,
						       0, 0,
						       id(<<>>, TrUserData),
						       id(<<>>, TrUserData),
						       TrUserData).

'dfp_read_field_def_Etcd.AuthUserGrantRoleRequest'(<<10,
						     Rest/binary>>,
						   Z1, Z2, F@_1, F@_2,
						   TrUserData) ->
    'd_field_Etcd.AuthUserGrantRoleRequest_user'(Rest, Z1,
						 Z2, F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.AuthUserGrantRoleRequest'(<<18,
						     Rest/binary>>,
						   Z1, Z2, F@_1, F@_2,
						   TrUserData) ->
    'd_field_Etcd.AuthUserGrantRoleRequest_role'(Rest, Z1,
						 Z2, F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.AuthUserGrantRoleRequest'(<<>>,
						   0, 0, F@_1, F@_2, _) ->
    #{user => F@_1, role => F@_2};
'dfp_read_field_def_Etcd.AuthUserGrantRoleRequest'(Other,
						   Z1, Z2, F@_1, F@_2,
						   TrUserData) ->
    'dg_read_field_def_Etcd.AuthUserGrantRoleRequest'(Other,
						      Z1, Z2, F@_1, F@_2,
						      TrUserData).

'dg_read_field_def_Etcd.AuthUserGrantRoleRequest'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2,
						  TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthUserGrantRoleRequest'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, TrUserData);
'dg_read_field_def_Etcd.AuthUserGrantRoleRequest'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2,
						  TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.AuthUserGrantRoleRequest_user'(Rest, 0, 0,
						       F@_1, F@_2, TrUserData);
      18 ->
	  'd_field_Etcd.AuthUserGrantRoleRequest_role'(Rest, 0, 0,
						       F@_1, F@_2, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AuthUserGrantRoleRequest'(Rest, 0, 0,
							    F@_1, F@_2,
							    TrUserData);
	    1 ->
		'skip_64_Etcd.AuthUserGrantRoleRequest'(Rest, 0, 0,
							F@_1, F@_2, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AuthUserGrantRoleRequest'(Rest,
								      0, 0,
								      F@_1,
								      F@_2,
								      TrUserData);
	    3 ->
		'skip_group_Etcd.AuthUserGrantRoleRequest'(Rest,
							   Key bsr 3, 0, F@_1,
							   F@_2, TrUserData);
	    5 ->
		'skip_32_Etcd.AuthUserGrantRoleRequest'(Rest, 0, 0,
							F@_1, F@_2, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AuthUserGrantRoleRequest'(<<>>,
						  0, 0, F@_1, F@_2, _) ->
    #{user => F@_1, role => F@_2}.

'd_field_Etcd.AuthUserGrantRoleRequest_user'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthUserGrantRoleRequest_user'(Rest,
						 N + 7, X bsl N + Acc, F@_1,
						 F@_2, TrUserData);
'd_field_Etcd.AuthUserGrantRoleRequest_user'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, _, F@_2, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthUserGrantRoleRequest'(RestF,
						       0, 0, NewFValue, F@_2,
						       TrUserData).

'd_field_Etcd.AuthUserGrantRoleRequest_role'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthUserGrantRoleRequest_role'(Rest,
						 N + 7, X bsl N + Acc, F@_1,
						 F@_2, TrUserData);
'd_field_Etcd.AuthUserGrantRoleRequest_role'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, _, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthUserGrantRoleRequest'(RestF,
						       0, 0, F@_1, NewFValue,
						       TrUserData).

'skip_varint_Etcd.AuthUserGrantRoleRequest'(<<1:1, _:7,
					      Rest/binary>>,
					    Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_Etcd.AuthUserGrantRoleRequest'(Rest, Z1,
						Z2, F@_1, F@_2, TrUserData);
'skip_varint_Etcd.AuthUserGrantRoleRequest'(<<0:1, _:7,
					      Rest/binary>>,
					    Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserGrantRoleRequest'(Rest,
						       Z1, Z2, F@_1, F@_2,
						       TrUserData).

'skip_length_delimited_Etcd.AuthUserGrantRoleRequest'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2,
						      TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthUserGrantRoleRequest'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, F@_2,
							  TrUserData);
'skip_length_delimited_Etcd.AuthUserGrantRoleRequest'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2,
						      TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthUserGrantRoleRequest'(Rest2,
						       0, 0, F@_1, F@_2,
						       TrUserData).

'skip_group_Etcd.AuthUserGrantRoleRequest'(Bin, FNum,
					   Z2, F@_1, F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthUserGrantRoleRequest'(Rest,
						       0, Z2, F@_1, F@_2,
						       TrUserData).

'skip_32_Etcd.AuthUserGrantRoleRequest'(<<_:32,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserGrantRoleRequest'(Rest,
						       Z1, Z2, F@_1, F@_2,
						       TrUserData).

'skip_64_Etcd.AuthUserGrantRoleRequest'(<<_:64,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserGrantRoleRequest'(Rest,
						       Z1, Z2, F@_1, F@_2,
						       TrUserData).

'decode_msg_Etcd.AuthUserRevokeRoleRequest'(Bin,
					    TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserRevokeRoleRequest'(Bin,
							0, 0,
							id(<<>>, TrUserData),
							id(<<>>, TrUserData),
							TrUserData).

'dfp_read_field_def_Etcd.AuthUserRevokeRoleRequest'(<<10,
						      Rest/binary>>,
						    Z1, Z2, F@_1, F@_2,
						    TrUserData) ->
    'd_field_Etcd.AuthUserRevokeRoleRequest_name'(Rest, Z1,
						  Z2, F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.AuthUserRevokeRoleRequest'(<<18,
						      Rest/binary>>,
						    Z1, Z2, F@_1, F@_2,
						    TrUserData) ->
    'd_field_Etcd.AuthUserRevokeRoleRequest_role'(Rest, Z1,
						  Z2, F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.AuthUserRevokeRoleRequest'(<<>>,
						    0, 0, F@_1, F@_2, _) ->
    #{name => F@_1, role => F@_2};
'dfp_read_field_def_Etcd.AuthUserRevokeRoleRequest'(Other,
						    Z1, Z2, F@_1, F@_2,
						    TrUserData) ->
    'dg_read_field_def_Etcd.AuthUserRevokeRoleRequest'(Other,
						       Z1, Z2, F@_1, F@_2,
						       TrUserData).

'dg_read_field_def_Etcd.AuthUserRevokeRoleRequest'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2,
						   TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthUserRevokeRoleRequest'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, TrUserData);
'dg_read_field_def_Etcd.AuthUserRevokeRoleRequest'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2,
						   TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.AuthUserRevokeRoleRequest_name'(Rest, 0,
							0, F@_1, F@_2,
							TrUserData);
      18 ->
	  'd_field_Etcd.AuthUserRevokeRoleRequest_role'(Rest, 0,
							0, F@_1, F@_2,
							TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AuthUserRevokeRoleRequest'(Rest, 0, 0,
							     F@_1, F@_2,
							     TrUserData);
	    1 ->
		'skip_64_Etcd.AuthUserRevokeRoleRequest'(Rest, 0, 0,
							 F@_1, F@_2,
							 TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AuthUserRevokeRoleRequest'(Rest,
								       0, 0,
								       F@_1,
								       F@_2,
								       TrUserData);
	    3 ->
		'skip_group_Etcd.AuthUserRevokeRoleRequest'(Rest,
							    Key bsr 3, 0, F@_1,
							    F@_2, TrUserData);
	    5 ->
		'skip_32_Etcd.AuthUserRevokeRoleRequest'(Rest, 0, 0,
							 F@_1, F@_2, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AuthUserRevokeRoleRequest'(<<>>,
						   0, 0, F@_1, F@_2, _) ->
    #{name => F@_1, role => F@_2}.

'd_field_Etcd.AuthUserRevokeRoleRequest_name'(<<1:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthUserRevokeRoleRequest_name'(Rest,
						  N + 7, X bsl N + Acc, F@_1,
						  F@_2, TrUserData);
'd_field_Etcd.AuthUserRevokeRoleRequest_name'(<<0:1,
						X:7, Rest/binary>>,
					      N, Acc, _, F@_2, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthUserRevokeRoleRequest'(RestF,
							0, 0, NewFValue, F@_2,
							TrUserData).

'd_field_Etcd.AuthUserRevokeRoleRequest_role'(<<1:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthUserRevokeRoleRequest_role'(Rest,
						  N + 7, X bsl N + Acc, F@_1,
						  F@_2, TrUserData);
'd_field_Etcd.AuthUserRevokeRoleRequest_role'(<<0:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, _, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthUserRevokeRoleRequest'(RestF,
							0, 0, F@_1, NewFValue,
							TrUserData).

'skip_varint_Etcd.AuthUserRevokeRoleRequest'(<<1:1, _:7,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_Etcd.AuthUserRevokeRoleRequest'(Rest, Z1,
						 Z2, F@_1, F@_2, TrUserData);
'skip_varint_Etcd.AuthUserRevokeRoleRequest'(<<0:1, _:7,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserRevokeRoleRequest'(Rest,
							Z1, Z2, F@_1, F@_2,
							TrUserData).

'skip_length_delimited_Etcd.AuthUserRevokeRoleRequest'(<<1:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2,
						       TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthUserRevokeRoleRequest'(Rest,
							   N + 7, X bsl N + Acc,
							   F@_1, F@_2,
							   TrUserData);
'skip_length_delimited_Etcd.AuthUserRevokeRoleRequest'(<<0:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2,
						       TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthUserRevokeRoleRequest'(Rest2,
							0, 0, F@_1, F@_2,
							TrUserData).

'skip_group_Etcd.AuthUserRevokeRoleRequest'(Bin, FNum,
					    Z2, F@_1, F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthUserRevokeRoleRequest'(Rest,
							0, Z2, F@_1, F@_2,
							TrUserData).

'skip_32_Etcd.AuthUserRevokeRoleRequest'(<<_:32,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserRevokeRoleRequest'(Rest,
							Z1, Z2, F@_1, F@_2,
							TrUserData).

'skip_64_Etcd.AuthUserRevokeRoleRequest'(<<_:64,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserRevokeRoleRequest'(Rest,
							Z1, Z2, F@_1, F@_2,
							TrUserData).

'decode_msg_Etcd.AuthRoleAddRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleAddRequest'(Bin, 0, 0,
						 id(<<>>, TrUserData),
						 TrUserData).

'dfp_read_field_def_Etcd.AuthRoleAddRequest'(<<10,
					       Rest/binary>>,
					     Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.AuthRoleAddRequest_name'(Rest, Z1, Z2,
					   F@_1, TrUserData);
'dfp_read_field_def_Etcd.AuthRoleAddRequest'(<<>>, 0, 0,
					     F@_1, _) ->
    #{name => F@_1};
'dfp_read_field_def_Etcd.AuthRoleAddRequest'(Other, Z1,
					     Z2, F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.AuthRoleAddRequest'(Other, Z1,
						Z2, F@_1, TrUserData).

'dg_read_field_def_Etcd.AuthRoleAddRequest'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthRoleAddRequest'(Rest, N + 7,
						X bsl N + Acc, F@_1,
						TrUserData);
'dg_read_field_def_Etcd.AuthRoleAddRequest'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.AuthRoleAddRequest_name'(Rest, 0, 0, F@_1,
						 TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AuthRoleAddRequest'(Rest, 0, 0, F@_1,
						      TrUserData);
	    1 ->
		'skip_64_Etcd.AuthRoleAddRequest'(Rest, 0, 0, F@_1,
						  TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AuthRoleAddRequest'(Rest, 0,
								0, F@_1,
								TrUserData);
	    3 ->
		'skip_group_Etcd.AuthRoleAddRequest'(Rest, Key bsr 3, 0,
						     F@_1, TrUserData);
	    5 ->
		'skip_32_Etcd.AuthRoleAddRequest'(Rest, 0, 0, F@_1,
						  TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AuthRoleAddRequest'(<<>>, 0, 0,
					    F@_1, _) ->
    #{name => F@_1}.

'd_field_Etcd.AuthRoleAddRequest_name'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthRoleAddRequest_name'(Rest, N + 7,
					   X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.AuthRoleAddRequest_name'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, _, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthRoleAddRequest'(RestF, 0,
						 0, NewFValue, TrUserData).

'skip_varint_Etcd.AuthRoleAddRequest'(<<1:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.AuthRoleAddRequest'(Rest, Z1, Z2,
					  F@_1, TrUserData);
'skip_varint_Etcd.AuthRoleAddRequest'(<<0:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleAddRequest'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'skip_length_delimited_Etcd.AuthRoleAddRequest'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthRoleAddRequest'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    TrUserData);
'skip_length_delimited_Etcd.AuthRoleAddRequest'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthRoleAddRequest'(Rest2, 0,
						 0, F@_1, TrUserData).

'skip_group_Etcd.AuthRoleAddRequest'(Bin, FNum, Z2,
				     F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthRoleAddRequest'(Rest, 0,
						 Z2, F@_1, TrUserData).

'skip_32_Etcd.AuthRoleAddRequest'(<<_:32, Rest/binary>>,
				  Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleAddRequest'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'skip_64_Etcd.AuthRoleAddRequest'(<<_:64, Rest/binary>>,
				  Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleAddRequest'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'decode_msg_Etcd.AuthRoleGetRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleGetRequest'(Bin, 0, 0,
						 id(<<>>, TrUserData),
						 TrUserData).

'dfp_read_field_def_Etcd.AuthRoleGetRequest'(<<10,
					       Rest/binary>>,
					     Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.AuthRoleGetRequest_role'(Rest, Z1, Z2,
					   F@_1, TrUserData);
'dfp_read_field_def_Etcd.AuthRoleGetRequest'(<<>>, 0, 0,
					     F@_1, _) ->
    #{role => F@_1};
'dfp_read_field_def_Etcd.AuthRoleGetRequest'(Other, Z1,
					     Z2, F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.AuthRoleGetRequest'(Other, Z1,
						Z2, F@_1, TrUserData).

'dg_read_field_def_Etcd.AuthRoleGetRequest'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthRoleGetRequest'(Rest, N + 7,
						X bsl N + Acc, F@_1,
						TrUserData);
'dg_read_field_def_Etcd.AuthRoleGetRequest'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.AuthRoleGetRequest_role'(Rest, 0, 0, F@_1,
						 TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AuthRoleGetRequest'(Rest, 0, 0, F@_1,
						      TrUserData);
	    1 ->
		'skip_64_Etcd.AuthRoleGetRequest'(Rest, 0, 0, F@_1,
						  TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AuthRoleGetRequest'(Rest, 0,
								0, F@_1,
								TrUserData);
	    3 ->
		'skip_group_Etcd.AuthRoleGetRequest'(Rest, Key bsr 3, 0,
						     F@_1, TrUserData);
	    5 ->
		'skip_32_Etcd.AuthRoleGetRequest'(Rest, 0, 0, F@_1,
						  TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AuthRoleGetRequest'(<<>>, 0, 0,
					    F@_1, _) ->
    #{role => F@_1}.

'd_field_Etcd.AuthRoleGetRequest_role'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthRoleGetRequest_role'(Rest, N + 7,
					   X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.AuthRoleGetRequest_role'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, _, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthRoleGetRequest'(RestF, 0,
						 0, NewFValue, TrUserData).

'skip_varint_Etcd.AuthRoleGetRequest'(<<1:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.AuthRoleGetRequest'(Rest, Z1, Z2,
					  F@_1, TrUserData);
'skip_varint_Etcd.AuthRoleGetRequest'(<<0:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleGetRequest'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'skip_length_delimited_Etcd.AuthRoleGetRequest'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthRoleGetRequest'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    TrUserData);
'skip_length_delimited_Etcd.AuthRoleGetRequest'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthRoleGetRequest'(Rest2, 0,
						 0, F@_1, TrUserData).

'skip_group_Etcd.AuthRoleGetRequest'(Bin, FNum, Z2,
				     F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthRoleGetRequest'(Rest, 0,
						 Z2, F@_1, TrUserData).

'skip_32_Etcd.AuthRoleGetRequest'(<<_:32, Rest/binary>>,
				  Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleGetRequest'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'skip_64_Etcd.AuthRoleGetRequest'(<<_:64, Rest/binary>>,
				  Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleGetRequest'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'decode_msg_Etcd.AuthUserListRequest'(Bin,
				      TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserListRequest'(Bin, 0, 0,
						  TrUserData).

'dfp_read_field_def_Etcd.AuthUserListRequest'(<<>>, 0,
					      0, _) ->
    #{};
'dfp_read_field_def_Etcd.AuthUserListRequest'(Other, Z1,
					      Z2, TrUserData) ->
    'dg_read_field_def_Etcd.AuthUserListRequest'(Other, Z1,
						 Z2, TrUserData).

'dg_read_field_def_Etcd.AuthUserListRequest'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthUserListRequest'(Rest,
						 N + 7, X bsl N + Acc,
						 TrUserData);
'dg_read_field_def_Etcd.AuthUserListRequest'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, TrUserData) ->
    Key = X bsl N + Acc,
    case Key band 7 of
      0 ->
	  'skip_varint_Etcd.AuthUserListRequest'(Rest, 0, 0,
						 TrUserData);
      1 ->
	  'skip_64_Etcd.AuthUserListRequest'(Rest, 0, 0,
					     TrUserData);
      2 ->
	  'skip_length_delimited_Etcd.AuthUserListRequest'(Rest,
							   0, 0, TrUserData);
      3 ->
	  'skip_group_Etcd.AuthUserListRequest'(Rest, Key bsr 3,
						0, TrUserData);
      5 ->
	  'skip_32_Etcd.AuthUserListRequest'(Rest, 0, 0,
					     TrUserData)
    end;
'dg_read_field_def_Etcd.AuthUserListRequest'(<<>>, 0, 0,
					     _) ->
    #{}.

'skip_varint_Etcd.AuthUserListRequest'(<<1:1, _:7,
					 Rest/binary>>,
				       Z1, Z2, TrUserData) ->
    'skip_varint_Etcd.AuthUserListRequest'(Rest, Z1, Z2,
					   TrUserData);
'skip_varint_Etcd.AuthUserListRequest'(<<0:1, _:7,
					 Rest/binary>>,
				       Z1, Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserListRequest'(Rest, Z1,
						  Z2, TrUserData).

'skip_length_delimited_Etcd.AuthUserListRequest'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthUserListRequest'(Rest,
						     N + 7, X bsl N + Acc,
						     TrUserData);
'skip_length_delimited_Etcd.AuthUserListRequest'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthUserListRequest'(Rest2, 0,
						  0, TrUserData).

'skip_group_Etcd.AuthUserListRequest'(Bin, FNum, Z2,
				      TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthUserListRequest'(Rest, 0,
						  Z2, TrUserData).

'skip_32_Etcd.AuthUserListRequest'(<<_:32,
				     Rest/binary>>,
				   Z1, Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserListRequest'(Rest, Z1,
						  Z2, TrUserData).

'skip_64_Etcd.AuthUserListRequest'(<<_:64,
				     Rest/binary>>,
				   Z1, Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserListRequest'(Rest, Z1,
						  Z2, TrUserData).

'decode_msg_Etcd.AuthRoleListRequest'(Bin,
				      TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleListRequest'(Bin, 0, 0,
						  TrUserData).

'dfp_read_field_def_Etcd.AuthRoleListRequest'(<<>>, 0,
					      0, _) ->
    #{};
'dfp_read_field_def_Etcd.AuthRoleListRequest'(Other, Z1,
					      Z2, TrUserData) ->
    'dg_read_field_def_Etcd.AuthRoleListRequest'(Other, Z1,
						 Z2, TrUserData).

'dg_read_field_def_Etcd.AuthRoleListRequest'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthRoleListRequest'(Rest,
						 N + 7, X bsl N + Acc,
						 TrUserData);
'dg_read_field_def_Etcd.AuthRoleListRequest'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, TrUserData) ->
    Key = X bsl N + Acc,
    case Key band 7 of
      0 ->
	  'skip_varint_Etcd.AuthRoleListRequest'(Rest, 0, 0,
						 TrUserData);
      1 ->
	  'skip_64_Etcd.AuthRoleListRequest'(Rest, 0, 0,
					     TrUserData);
      2 ->
	  'skip_length_delimited_Etcd.AuthRoleListRequest'(Rest,
							   0, 0, TrUserData);
      3 ->
	  'skip_group_Etcd.AuthRoleListRequest'(Rest, Key bsr 3,
						0, TrUserData);
      5 ->
	  'skip_32_Etcd.AuthRoleListRequest'(Rest, 0, 0,
					     TrUserData)
    end;
'dg_read_field_def_Etcd.AuthRoleListRequest'(<<>>, 0, 0,
					     _) ->
    #{}.

'skip_varint_Etcd.AuthRoleListRequest'(<<1:1, _:7,
					 Rest/binary>>,
				       Z1, Z2, TrUserData) ->
    'skip_varint_Etcd.AuthRoleListRequest'(Rest, Z1, Z2,
					   TrUserData);
'skip_varint_Etcd.AuthRoleListRequest'(<<0:1, _:7,
					 Rest/binary>>,
				       Z1, Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleListRequest'(Rest, Z1,
						  Z2, TrUserData).

'skip_length_delimited_Etcd.AuthRoleListRequest'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthRoleListRequest'(Rest,
						     N + 7, X bsl N + Acc,
						     TrUserData);
'skip_length_delimited_Etcd.AuthRoleListRequest'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthRoleListRequest'(Rest2, 0,
						  0, TrUserData).

'skip_group_Etcd.AuthRoleListRequest'(Bin, FNum, Z2,
				      TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthRoleListRequest'(Rest, 0,
						  Z2, TrUserData).

'skip_32_Etcd.AuthRoleListRequest'(<<_:32,
				     Rest/binary>>,
				   Z1, Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleListRequest'(Rest, Z1,
						  Z2, TrUserData).

'skip_64_Etcd.AuthRoleListRequest'(<<_:64,
				     Rest/binary>>,
				   Z1, Z2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleListRequest'(Rest, Z1,
						  Z2, TrUserData).

'decode_msg_Etcd.AuthRoleDeleteRequest'(Bin,
					TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleDeleteRequest'(Bin, 0,
						    0, id(<<>>, TrUserData),
						    TrUserData).

'dfp_read_field_def_Etcd.AuthRoleDeleteRequest'(<<10,
						  Rest/binary>>,
						Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.AuthRoleDeleteRequest_role'(Rest, Z1, Z2,
					      F@_1, TrUserData);
'dfp_read_field_def_Etcd.AuthRoleDeleteRequest'(<<>>, 0,
						0, F@_1, _) ->
    #{role => F@_1};
'dfp_read_field_def_Etcd.AuthRoleDeleteRequest'(Other,
						Z1, Z2, F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.AuthRoleDeleteRequest'(Other,
						   Z1, Z2, F@_1, TrUserData).

'dg_read_field_def_Etcd.AuthRoleDeleteRequest'(<<1:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthRoleDeleteRequest'(Rest,
						   N + 7, X bsl N + Acc, F@_1,
						   TrUserData);
'dg_read_field_def_Etcd.AuthRoleDeleteRequest'(<<0:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.AuthRoleDeleteRequest_role'(Rest, 0, 0,
						    F@_1, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AuthRoleDeleteRequest'(Rest, 0, 0,
							 F@_1, TrUserData);
	    1 ->
		'skip_64_Etcd.AuthRoleDeleteRequest'(Rest, 0, 0, F@_1,
						     TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AuthRoleDeleteRequest'(Rest,
								   0, 0, F@_1,
								   TrUserData);
	    3 ->
		'skip_group_Etcd.AuthRoleDeleteRequest'(Rest, Key bsr 3,
							0, F@_1, TrUserData);
	    5 ->
		'skip_32_Etcd.AuthRoleDeleteRequest'(Rest, 0, 0, F@_1,
						     TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AuthRoleDeleteRequest'(<<>>, 0,
					       0, F@_1, _) ->
    #{role => F@_1}.

'd_field_Etcd.AuthRoleDeleteRequest_role'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthRoleDeleteRequest_role'(Rest, N + 7,
					      X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.AuthRoleDeleteRequest_role'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, _, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthRoleDeleteRequest'(RestF,
						    0, 0, NewFValue,
						    TrUserData).

'skip_varint_Etcd.AuthRoleDeleteRequest'(<<1:1, _:7,
					   Rest/binary>>,
					 Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.AuthRoleDeleteRequest'(Rest, Z1, Z2,
					     F@_1, TrUserData);
'skip_varint_Etcd.AuthRoleDeleteRequest'(<<0:1, _:7,
					   Rest/binary>>,
					 Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleDeleteRequest'(Rest,
						    Z1, Z2, F@_1, TrUserData).

'skip_length_delimited_Etcd.AuthRoleDeleteRequest'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthRoleDeleteRequest'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, TrUserData);
'skip_length_delimited_Etcd.AuthRoleDeleteRequest'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthRoleDeleteRequest'(Rest2,
						    0, 0, F@_1, TrUserData).

'skip_group_Etcd.AuthRoleDeleteRequest'(Bin, FNum, Z2,
					F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthRoleDeleteRequest'(Rest, 0,
						    Z2, F@_1, TrUserData).

'skip_32_Etcd.AuthRoleDeleteRequest'(<<_:32,
				       Rest/binary>>,
				     Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleDeleteRequest'(Rest,
						    Z1, Z2, F@_1, TrUserData).

'skip_64_Etcd.AuthRoleDeleteRequest'(<<_:64,
				       Rest/binary>>,
				     Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleDeleteRequest'(Rest,
						    Z1, Z2, F@_1, TrUserData).

'decode_msg_Etcd.AuthRoleGrantPermissionRequest'(Bin,
						 TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleGrantPermissionRequest'(Bin,
							     0, 0,
							     id(<<>>,
								TrUserData),
							     id('$undef',
								TrUserData),
							     TrUserData).

'dfp_read_field_def_Etcd.AuthRoleGrantPermissionRequest'(<<10,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 TrUserData) ->
    'd_field_Etcd.AuthRoleGrantPermissionRequest_name'(Rest,
						       Z1, Z2, F@_1, F@_2,
						       TrUserData);
'dfp_read_field_def_Etcd.AuthRoleGrantPermissionRequest'(<<18,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 TrUserData) ->
    'd_field_Etcd.AuthRoleGrantPermissionRequest_perm'(Rest,
						       Z1, Z2, F@_1, F@_2,
						       TrUserData);
'dfp_read_field_def_Etcd.AuthRoleGrantPermissionRequest'(<<>>,
							 0, 0, F@_1, F@_2, _) ->
    S1 = #{name => F@_1},
    if F@_2 == '$undef' -> S1;
       true -> S1#{perm => F@_2}
    end;
'dfp_read_field_def_Etcd.AuthRoleGrantPermissionRequest'(Other,
							 Z1, Z2, F@_1, F@_2,
							 TrUserData) ->
    'dg_read_field_def_Etcd.AuthRoleGrantPermissionRequest'(Other,
							    Z1, Z2, F@_1, F@_2,
							    TrUserData).

'dg_read_field_def_Etcd.AuthRoleGrantPermissionRequest'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthRoleGrantPermissionRequest'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, TrUserData);
'dg_read_field_def_Etcd.AuthRoleGrantPermissionRequest'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.AuthRoleGrantPermissionRequest_name'(Rest,
							     0, 0, F@_1, F@_2,
							     TrUserData);
      18 ->
	  'd_field_Etcd.AuthRoleGrantPermissionRequest_perm'(Rest,
							     0, 0, F@_1, F@_2,
							     TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AuthRoleGrantPermissionRequest'(Rest,
								  0, 0, F@_1,
								  F@_2,
								  TrUserData);
	    1 ->
		'skip_64_Etcd.AuthRoleGrantPermissionRequest'(Rest, 0,
							      0, F@_1, F@_2,
							      TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AuthRoleGrantPermissionRequest'(Rest,
									    0,
									    0,
									    F@_1,
									    F@_2,
									    TrUserData);
	    3 ->
		'skip_group_Etcd.AuthRoleGrantPermissionRequest'(Rest,
								 Key bsr 3, 0,
								 F@_1, F@_2,
								 TrUserData);
	    5 ->
		'skip_32_Etcd.AuthRoleGrantPermissionRequest'(Rest, 0,
							      0, F@_1, F@_2,
							      TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AuthRoleGrantPermissionRequest'(<<>>,
							0, 0, F@_1, F@_2, _) ->
    S1 = #{name => F@_1},
    if F@_2 == '$undef' -> S1;
       true -> S1#{perm => F@_2}
    end.

'd_field_Etcd.AuthRoleGrantPermissionRequest_name'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2,
						   TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthRoleGrantPermissionRequest_name'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, TrUserData);
'd_field_Etcd.AuthRoleGrantPermissionRequest_name'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, _, F@_2,
						   TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthRoleGrantPermissionRequest'(RestF,
							     0, 0, NewFValue,
							     F@_2, TrUserData).

'd_field_Etcd.AuthRoleGrantPermissionRequest_perm'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2,
						   TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthRoleGrantPermissionRequest_perm'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, TrUserData);
'd_field_Etcd.AuthRoleGrantPermissionRequest_perm'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, Prev,
						   TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_authpb.Permission'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthRoleGrantPermissionRequest'(RestF,
							     0, 0, F@_1,
							     if Prev ==
								  '$undef' ->
								    NewFValue;
								true ->
								    'merge_msg_authpb.Permission'(Prev,
												  NewFValue,
												  TrUserData)
							     end,
							     TrUserData).

'skip_varint_Etcd.AuthRoleGrantPermissionRequest'(<<1:1,
						    _:7, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2,
						  TrUserData) ->
    'skip_varint_Etcd.AuthRoleGrantPermissionRequest'(Rest,
						      Z1, Z2, F@_1, F@_2,
						      TrUserData);
'skip_varint_Etcd.AuthRoleGrantPermissionRequest'(<<0:1,
						    _:7, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2,
						  TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleGrantPermissionRequest'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     TrUserData).

'skip_length_delimited_Etcd.AuthRoleGrantPermissionRequest'(<<1:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthRoleGrantPermissionRequest'(Rest,
								N + 7,
								X bsl N + Acc,
								F@_1, F@_2,
								TrUserData);
'skip_length_delimited_Etcd.AuthRoleGrantPermissionRequest'(<<0:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthRoleGrantPermissionRequest'(Rest2,
							     0, 0, F@_1, F@_2,
							     TrUserData).

'skip_group_Etcd.AuthRoleGrantPermissionRequest'(Bin,
						 FNum, Z2, F@_1, F@_2,
						 TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthRoleGrantPermissionRequest'(Rest,
							     0, Z2, F@_1, F@_2,
							     TrUserData).

'skip_32_Etcd.AuthRoleGrantPermissionRequest'(<<_:32,
						Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleGrantPermissionRequest'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     TrUserData).

'skip_64_Etcd.AuthRoleGrantPermissionRequest'(<<_:64,
						Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleGrantPermissionRequest'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     TrUserData).

'decode_msg_Etcd.AuthRoleRevokePermissionRequest'(Bin,
						  TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleRevokePermissionRequest'(Bin,
							      0, 0,
							      id(<<>>,
								 TrUserData),
							      id(<<>>,
								 TrUserData),
							      id(<<>>,
								 TrUserData),
							      TrUserData).

'dfp_read_field_def_Etcd.AuthRoleRevokePermissionRequest'(<<10,
							    Rest/binary>>,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, TrUserData) ->
    'd_field_Etcd.AuthRoleRevokePermissionRequest_role'(Rest,
							Z1, Z2, F@_1, F@_2,
							F@_3, TrUserData);
'dfp_read_field_def_Etcd.AuthRoleRevokePermissionRequest'(<<18,
							    Rest/binary>>,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, TrUserData) ->
    'd_field_Etcd.AuthRoleRevokePermissionRequest_key'(Rest,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       TrUserData);
'dfp_read_field_def_Etcd.AuthRoleRevokePermissionRequest'(<<26,
							    Rest/binary>>,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, TrUserData) ->
    'd_field_Etcd.AuthRoleRevokePermissionRequest_range_end'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, TrUserData);
'dfp_read_field_def_Etcd.AuthRoleRevokePermissionRequest'(<<>>,
							  0, 0, F@_1, F@_2,
							  F@_3, _) ->
    #{role => F@_1, key => F@_2, range_end => F@_3};
'dfp_read_field_def_Etcd.AuthRoleRevokePermissionRequest'(Other,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, TrUserData) ->
    'dg_read_field_def_Etcd.AuthRoleRevokePermissionRequest'(Other,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, TrUserData).

'dg_read_field_def_Etcd.AuthRoleRevokePermissionRequest'(<<1:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthRoleRevokePermissionRequest'(Rest,
							     N + 7,
							     X bsl N + Acc,
							     F@_1, F@_2, F@_3,
							     TrUserData);
'dg_read_field_def_Etcd.AuthRoleRevokePermissionRequest'(<<0:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.AuthRoleRevokePermissionRequest_role'(Rest,
							      0, 0, F@_1, F@_2,
							      F@_3, TrUserData);
      18 ->
	  'd_field_Etcd.AuthRoleRevokePermissionRequest_key'(Rest,
							     0, 0, F@_1, F@_2,
							     F@_3, TrUserData);
      26 ->
	  'd_field_Etcd.AuthRoleRevokePermissionRequest_range_end'(Rest,
								   0, 0, F@_1,
								   F@_2, F@_3,
								   TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AuthRoleRevokePermissionRequest'(Rest,
								   0, 0, F@_1,
								   F@_2, F@_3,
								   TrUserData);
	    1 ->
		'skip_64_Etcd.AuthRoleRevokePermissionRequest'(Rest, 0,
							       0, F@_1, F@_2,
							       F@_3,
							       TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AuthRoleRevokePermissionRequest'(Rest,
									     0,
									     0,
									     F@_1,
									     F@_2,
									     F@_3,
									     TrUserData);
	    3 ->
		'skip_group_Etcd.AuthRoleRevokePermissionRequest'(Rest,
								  Key bsr 3, 0,
								  F@_1, F@_2,
								  F@_3,
								  TrUserData);
	    5 ->
		'skip_32_Etcd.AuthRoleRevokePermissionRequest'(Rest, 0,
							       0, F@_1, F@_2,
							       F@_3, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AuthRoleRevokePermissionRequest'(<<>>,
							 0, 0, F@_1, F@_2, F@_3,
							 _) ->
    #{role => F@_1, key => F@_2, range_end => F@_3}.

'd_field_Etcd.AuthRoleRevokePermissionRequest_role'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthRoleRevokePermissionRequest_role'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, F@_2, F@_3,
							TrUserData);
'd_field_Etcd.AuthRoleRevokePermissionRequest_role'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, _, F@_2, F@_3,
						    TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthRoleRevokePermissionRequest'(RestF,
							      0, 0, NewFValue,
							      F@_2, F@_3,
							      TrUserData).

'd_field_Etcd.AuthRoleRevokePermissionRequest_key'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthRoleRevokePermissionRequest_key'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, F@_3,
						       TrUserData);
'd_field_Etcd.AuthRoleRevokePermissionRequest_key'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, _, F@_3,
						   TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthRoleRevokePermissionRequest'(RestF,
							      0, 0, F@_1,
							      NewFValue, F@_3,
							      TrUserData).

'd_field_Etcd.AuthRoleRevokePermissionRequest_range_end'(<<1:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthRoleRevokePermissionRequest_range_end'(Rest,
							     N + 7,
							     X bsl N + Acc,
							     F@_1, F@_2, F@_3,
							     TrUserData);
'd_field_Etcd.AuthRoleRevokePermissionRequest_range_end'(<<0:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2, _,
							 TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthRoleRevokePermissionRequest'(RestF,
							      0, 0, F@_1, F@_2,
							      NewFValue,
							      TrUserData).

'skip_varint_Etcd.AuthRoleRevokePermissionRequest'(<<1:1,
						     _:7, Rest/binary>>,
						   Z1, Z2, F@_1, F@_2, F@_3,
						   TrUserData) ->
    'skip_varint_Etcd.AuthRoleRevokePermissionRequest'(Rest,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       TrUserData);
'skip_varint_Etcd.AuthRoleRevokePermissionRequest'(<<0:1,
						     _:7, Rest/binary>>,
						   Z1, Z2, F@_1, F@_2, F@_3,
						   TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleRevokePermissionRequest'(Rest,
							      Z1, Z2, F@_1,
							      F@_2, F@_3,
							      TrUserData).

'skip_length_delimited_Etcd.AuthRoleRevokePermissionRequest'(<<1:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     F@_3, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthRoleRevokePermissionRequest'(Rest,
								 N + 7,
								 X bsl N + Acc,
								 F@_1, F@_2,
								 F@_3,
								 TrUserData);
'skip_length_delimited_Etcd.AuthRoleRevokePermissionRequest'(<<0:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     F@_3,
							     TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthRoleRevokePermissionRequest'(Rest2,
							      0, 0, F@_1, F@_2,
							      F@_3, TrUserData).

'skip_group_Etcd.AuthRoleRevokePermissionRequest'(Bin,
						  FNum, Z2, F@_1, F@_2, F@_3,
						  TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthRoleRevokePermissionRequest'(Rest,
							      0, Z2, F@_1, F@_2,
							      F@_3, TrUserData).

'skip_32_Etcd.AuthRoleRevokePermissionRequest'(<<_:32,
						 Rest/binary>>,
					       Z1, Z2, F@_1, F@_2, F@_3,
					       TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleRevokePermissionRequest'(Rest,
							      Z1, Z2, F@_1,
							      F@_2, F@_3,
							      TrUserData).

'skip_64_Etcd.AuthRoleRevokePermissionRequest'(<<_:64,
						 Rest/binary>>,
					       Z1, Z2, F@_1, F@_2, F@_3,
					       TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleRevokePermissionRequest'(Rest,
							      Z1, Z2, F@_1,
							      F@_2, F@_3,
							      TrUserData).

'decode_msg_Etcd.AuthEnableResponse'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthEnableResponse'(Bin, 0, 0,
						 id('$undef', TrUserData),
						 TrUserData).

'dfp_read_field_def_Etcd.AuthEnableResponse'(<<10,
					       Rest/binary>>,
					     Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.AuthEnableResponse_header'(Rest, Z1, Z2,
					     F@_1, TrUserData);
'dfp_read_field_def_Etcd.AuthEnableResponse'(<<>>, 0, 0,
					     F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.AuthEnableResponse'(Other, Z1,
					     Z2, F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.AuthEnableResponse'(Other, Z1,
						Z2, F@_1, TrUserData).

'dg_read_field_def_Etcd.AuthEnableResponse'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthEnableResponse'(Rest, N + 7,
						X bsl N + Acc, F@_1,
						TrUserData);
'dg_read_field_def_Etcd.AuthEnableResponse'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.AuthEnableResponse_header'(Rest, 0, 0,
						   F@_1, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AuthEnableResponse'(Rest, 0, 0, F@_1,
						      TrUserData);
	    1 ->
		'skip_64_Etcd.AuthEnableResponse'(Rest, 0, 0, F@_1,
						  TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AuthEnableResponse'(Rest, 0,
								0, F@_1,
								TrUserData);
	    3 ->
		'skip_group_Etcd.AuthEnableResponse'(Rest, Key bsr 3, 0,
						     F@_1, TrUserData);
	    5 ->
		'skip_32_Etcd.AuthEnableResponse'(Rest, 0, 0, F@_1,
						  TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AuthEnableResponse'(<<>>, 0, 0,
					    F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.AuthEnableResponse_header'(<<1:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthEnableResponse_header'(Rest, N + 7,
					     X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.AuthEnableResponse_header'(<<0:1, X:7,
					   Rest/binary>>,
					 N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthEnableResponse'(RestF, 0,
						 0,
						 if Prev == '$undef' ->
							NewFValue;
						    true ->
							'merge_msg_Etcd.ResponseHeader'(Prev,
											NewFValue,
											TrUserData)
						 end,
						 TrUserData).

'skip_varint_Etcd.AuthEnableResponse'(<<1:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.AuthEnableResponse'(Rest, Z1, Z2,
					  F@_1, TrUserData);
'skip_varint_Etcd.AuthEnableResponse'(<<0:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthEnableResponse'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'skip_length_delimited_Etcd.AuthEnableResponse'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthEnableResponse'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    TrUserData);
'skip_length_delimited_Etcd.AuthEnableResponse'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthEnableResponse'(Rest2, 0,
						 0, F@_1, TrUserData).

'skip_group_Etcd.AuthEnableResponse'(Bin, FNum, Z2,
				     F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthEnableResponse'(Rest, 0,
						 Z2, F@_1, TrUserData).

'skip_32_Etcd.AuthEnableResponse'(<<_:32, Rest/binary>>,
				  Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthEnableResponse'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'skip_64_Etcd.AuthEnableResponse'(<<_:64, Rest/binary>>,
				  Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthEnableResponse'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'decode_msg_Etcd.AuthDisableResponse'(Bin,
				      TrUserData) ->
    'dfp_read_field_def_Etcd.AuthDisableResponse'(Bin, 0, 0,
						  id('$undef', TrUserData),
						  TrUserData).

'dfp_read_field_def_Etcd.AuthDisableResponse'(<<10,
						Rest/binary>>,
					      Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.AuthDisableResponse_header'(Rest, Z1, Z2,
					      F@_1, TrUserData);
'dfp_read_field_def_Etcd.AuthDisableResponse'(<<>>, 0,
					      0, F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.AuthDisableResponse'(Other, Z1,
					      Z2, F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.AuthDisableResponse'(Other, Z1,
						 Z2, F@_1, TrUserData).

'dg_read_field_def_Etcd.AuthDisableResponse'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthDisableResponse'(Rest,
						 N + 7, X bsl N + Acc, F@_1,
						 TrUserData);
'dg_read_field_def_Etcd.AuthDisableResponse'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.AuthDisableResponse_header'(Rest, 0, 0,
						    F@_1, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AuthDisableResponse'(Rest, 0, 0, F@_1,
						       TrUserData);
	    1 ->
		'skip_64_Etcd.AuthDisableResponse'(Rest, 0, 0, F@_1,
						   TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AuthDisableResponse'(Rest,
								 0, 0, F@_1,
								 TrUserData);
	    3 ->
		'skip_group_Etcd.AuthDisableResponse'(Rest, Key bsr 3,
						      0, F@_1, TrUserData);
	    5 ->
		'skip_32_Etcd.AuthDisableResponse'(Rest, 0, 0, F@_1,
						   TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AuthDisableResponse'(<<>>, 0, 0,
					     F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.AuthDisableResponse_header'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthDisableResponse_header'(Rest, N + 7,
					      X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.AuthDisableResponse_header'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthDisableResponse'(RestF, 0,
						  0,
						  if Prev == '$undef' ->
							 NewFValue;
						     true ->
							 'merge_msg_Etcd.ResponseHeader'(Prev,
											 NewFValue,
											 TrUserData)
						  end,
						  TrUserData).

'skip_varint_Etcd.AuthDisableResponse'(<<1:1, _:7,
					 Rest/binary>>,
				       Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.AuthDisableResponse'(Rest, Z1, Z2,
					   F@_1, TrUserData);
'skip_varint_Etcd.AuthDisableResponse'(<<0:1, _:7,
					 Rest/binary>>,
				       Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthDisableResponse'(Rest, Z1,
						  Z2, F@_1, TrUserData).

'skip_length_delimited_Etcd.AuthDisableResponse'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthDisableResponse'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     TrUserData);
'skip_length_delimited_Etcd.AuthDisableResponse'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthDisableResponse'(Rest2, 0,
						  0, F@_1, TrUserData).

'skip_group_Etcd.AuthDisableResponse'(Bin, FNum, Z2,
				      F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthDisableResponse'(Rest, 0,
						  Z2, F@_1, TrUserData).

'skip_32_Etcd.AuthDisableResponse'(<<_:32,
				     Rest/binary>>,
				   Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthDisableResponse'(Rest, Z1,
						  Z2, F@_1, TrUserData).

'skip_64_Etcd.AuthDisableResponse'(<<_:64,
				     Rest/binary>>,
				   Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthDisableResponse'(Rest, Z1,
						  Z2, F@_1, TrUserData).

'decode_msg_Etcd.AuthenticateResponse'(Bin,
				       TrUserData) ->
    'dfp_read_field_def_Etcd.AuthenticateResponse'(Bin, 0,
						   0, id('$undef', TrUserData),
						   id(<<>>, TrUserData),
						   TrUserData).

'dfp_read_field_def_Etcd.AuthenticateResponse'(<<10,
						 Rest/binary>>,
					       Z1, Z2, F@_1, F@_2,
					       TrUserData) ->
    'd_field_Etcd.AuthenticateResponse_header'(Rest, Z1, Z2,
					       F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.AuthenticateResponse'(<<18,
						 Rest/binary>>,
					       Z1, Z2, F@_1, F@_2,
					       TrUserData) ->
    'd_field_Etcd.AuthenticateResponse_token'(Rest, Z1, Z2,
					      F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.AuthenticateResponse'(<<>>, 0,
					       0, F@_1, F@_2, _) ->
    S1 = #{token => F@_2},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.AuthenticateResponse'(Other,
					       Z1, Z2, F@_1, F@_2,
					       TrUserData) ->
    'dg_read_field_def_Etcd.AuthenticateResponse'(Other, Z1,
						  Z2, F@_1, F@_2, TrUserData).

'dg_read_field_def_Etcd.AuthenticateResponse'(<<1:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthenticateResponse'(Rest,
						  N + 7, X bsl N + Acc, F@_1,
						  F@_2, TrUserData);
'dg_read_field_def_Etcd.AuthenticateResponse'(<<0:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.AuthenticateResponse_header'(Rest, 0, 0,
						     F@_1, F@_2, TrUserData);
      18 ->
	  'd_field_Etcd.AuthenticateResponse_token'(Rest, 0, 0,
						    F@_1, F@_2, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AuthenticateResponse'(Rest, 0, 0,
							F@_1, F@_2, TrUserData);
	    1 ->
		'skip_64_Etcd.AuthenticateResponse'(Rest, 0, 0, F@_1,
						    F@_2, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AuthenticateResponse'(Rest,
								  0, 0, F@_1,
								  F@_2,
								  TrUserData);
	    3 ->
		'skip_group_Etcd.AuthenticateResponse'(Rest, Key bsr 3,
						       0, F@_1, F@_2,
						       TrUserData);
	    5 ->
		'skip_32_Etcd.AuthenticateResponse'(Rest, 0, 0, F@_1,
						    F@_2, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AuthenticateResponse'(<<>>, 0,
					      0, F@_1, F@_2, _) ->
    S1 = #{token => F@_2},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.AuthenticateResponse_header'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthenticateResponse_header'(Rest, N + 7,
					       X bsl N + Acc, F@_1, F@_2,
					       TrUserData);
'd_field_Etcd.AuthenticateResponse_header'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, Prev, F@_2, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthenticateResponse'(RestF, 0,
						   0,
						   if Prev == '$undef' ->
							  NewFValue;
						      true ->
							  'merge_msg_Etcd.ResponseHeader'(Prev,
											  NewFValue,
											  TrUserData)
						   end,
						   F@_2, TrUserData).

'd_field_Etcd.AuthenticateResponse_token'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthenticateResponse_token'(Rest, N + 7,
					      X bsl N + Acc, F@_1, F@_2,
					      TrUserData);
'd_field_Etcd.AuthenticateResponse_token'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, _, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthenticateResponse'(RestF, 0,
						   0, F@_1, NewFValue,
						   TrUserData).

'skip_varint_Etcd.AuthenticateResponse'(<<1:1, _:7,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_Etcd.AuthenticateResponse'(Rest, Z1, Z2,
					    F@_1, F@_2, TrUserData);
'skip_varint_Etcd.AuthenticateResponse'(<<0:1, _:7,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthenticateResponse'(Rest, Z1,
						   Z2, F@_1, F@_2, TrUserData).

'skip_length_delimited_Etcd.AuthenticateResponse'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2,
						  TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthenticateResponse'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, TrUserData);
'skip_length_delimited_Etcd.AuthenticateResponse'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2,
						  TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthenticateResponse'(Rest2, 0,
						   0, F@_1, F@_2, TrUserData).

'skip_group_Etcd.AuthenticateResponse'(Bin, FNum, Z2,
				       F@_1, F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthenticateResponse'(Rest, 0,
						   Z2, F@_1, F@_2, TrUserData).

'skip_32_Etcd.AuthenticateResponse'(<<_:32,
				      Rest/binary>>,
				    Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthenticateResponse'(Rest, Z1,
						   Z2, F@_1, F@_2, TrUserData).

'skip_64_Etcd.AuthenticateResponse'(<<_:64,
				      Rest/binary>>,
				    Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthenticateResponse'(Rest, Z1,
						   Z2, F@_1, F@_2, TrUserData).

'decode_msg_Etcd.AuthUserAddResponse'(Bin,
				      TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserAddResponse'(Bin, 0, 0,
						  id('$undef', TrUserData),
						  TrUserData).

'dfp_read_field_def_Etcd.AuthUserAddResponse'(<<10,
						Rest/binary>>,
					      Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.AuthUserAddResponse_header'(Rest, Z1, Z2,
					      F@_1, TrUserData);
'dfp_read_field_def_Etcd.AuthUserAddResponse'(<<>>, 0,
					      0, F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.AuthUserAddResponse'(Other, Z1,
					      Z2, F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.AuthUserAddResponse'(Other, Z1,
						 Z2, F@_1, TrUserData).

'dg_read_field_def_Etcd.AuthUserAddResponse'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthUserAddResponse'(Rest,
						 N + 7, X bsl N + Acc, F@_1,
						 TrUserData);
'dg_read_field_def_Etcd.AuthUserAddResponse'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.AuthUserAddResponse_header'(Rest, 0, 0,
						    F@_1, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AuthUserAddResponse'(Rest, 0, 0, F@_1,
						       TrUserData);
	    1 ->
		'skip_64_Etcd.AuthUserAddResponse'(Rest, 0, 0, F@_1,
						   TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AuthUserAddResponse'(Rest,
								 0, 0, F@_1,
								 TrUserData);
	    3 ->
		'skip_group_Etcd.AuthUserAddResponse'(Rest, Key bsr 3,
						      0, F@_1, TrUserData);
	    5 ->
		'skip_32_Etcd.AuthUserAddResponse'(Rest, 0, 0, F@_1,
						   TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AuthUserAddResponse'(<<>>, 0, 0,
					     F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.AuthUserAddResponse_header'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthUserAddResponse_header'(Rest, N + 7,
					      X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.AuthUserAddResponse_header'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthUserAddResponse'(RestF, 0,
						  0,
						  if Prev == '$undef' ->
							 NewFValue;
						     true ->
							 'merge_msg_Etcd.ResponseHeader'(Prev,
											 NewFValue,
											 TrUserData)
						  end,
						  TrUserData).

'skip_varint_Etcd.AuthUserAddResponse'(<<1:1, _:7,
					 Rest/binary>>,
				       Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.AuthUserAddResponse'(Rest, Z1, Z2,
					   F@_1, TrUserData);
'skip_varint_Etcd.AuthUserAddResponse'(<<0:1, _:7,
					 Rest/binary>>,
				       Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserAddResponse'(Rest, Z1,
						  Z2, F@_1, TrUserData).

'skip_length_delimited_Etcd.AuthUserAddResponse'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthUserAddResponse'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     TrUserData);
'skip_length_delimited_Etcd.AuthUserAddResponse'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthUserAddResponse'(Rest2, 0,
						  0, F@_1, TrUserData).

'skip_group_Etcd.AuthUserAddResponse'(Bin, FNum, Z2,
				      F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthUserAddResponse'(Rest, 0,
						  Z2, F@_1, TrUserData).

'skip_32_Etcd.AuthUserAddResponse'(<<_:32,
				     Rest/binary>>,
				   Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserAddResponse'(Rest, Z1,
						  Z2, F@_1, TrUserData).

'skip_64_Etcd.AuthUserAddResponse'(<<_:64,
				     Rest/binary>>,
				   Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserAddResponse'(Rest, Z1,
						  Z2, F@_1, TrUserData).

'decode_msg_Etcd.AuthUserGetResponse'(Bin,
				      TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserGetResponse'(Bin, 0, 0,
						  id('$undef', TrUserData),
						  id([], TrUserData),
						  TrUserData).

'dfp_read_field_def_Etcd.AuthUserGetResponse'(<<10,
						Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.AuthUserGetResponse_header'(Rest, Z1, Z2,
					      F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.AuthUserGetResponse'(<<18,
						Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.AuthUserGetResponse_roles'(Rest, Z1, Z2,
					     F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.AuthUserGetResponse'(<<>>, 0,
					      0, F@_1, R1, TrUserData) ->
    S1 = #{roles => lists_reverse(R1, TrUserData)},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.AuthUserGetResponse'(Other, Z1,
					      Z2, F@_1, F@_2, TrUserData) ->
    'dg_read_field_def_Etcd.AuthUserGetResponse'(Other, Z1,
						 Z2, F@_1, F@_2, TrUserData).

'dg_read_field_def_Etcd.AuthUserGetResponse'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthUserGetResponse'(Rest,
						 N + 7, X bsl N + Acc, F@_1,
						 F@_2, TrUserData);
'dg_read_field_def_Etcd.AuthUserGetResponse'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.AuthUserGetResponse_header'(Rest, 0, 0,
						    F@_1, F@_2, TrUserData);
      18 ->
	  'd_field_Etcd.AuthUserGetResponse_roles'(Rest, 0, 0,
						   F@_1, F@_2, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AuthUserGetResponse'(Rest, 0, 0, F@_1,
						       F@_2, TrUserData);
	    1 ->
		'skip_64_Etcd.AuthUserGetResponse'(Rest, 0, 0, F@_1,
						   F@_2, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AuthUserGetResponse'(Rest,
								 0, 0, F@_1,
								 F@_2,
								 TrUserData);
	    3 ->
		'skip_group_Etcd.AuthUserGetResponse'(Rest, Key bsr 3,
						      0, F@_1, F@_2,
						      TrUserData);
	    5 ->
		'skip_32_Etcd.AuthUserGetResponse'(Rest, 0, 0, F@_1,
						   F@_2, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AuthUserGetResponse'(<<>>, 0, 0,
					     F@_1, R1, TrUserData) ->
    S1 = #{roles => lists_reverse(R1, TrUserData)},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.AuthUserGetResponse_header'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthUserGetResponse_header'(Rest, N + 7,
					      X bsl N + Acc, F@_1, F@_2,
					      TrUserData);
'd_field_Etcd.AuthUserGetResponse_header'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, Prev, F@_2, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthUserGetResponse'(RestF, 0,
						  0,
						  if Prev == '$undef' ->
							 NewFValue;
						     true ->
							 'merge_msg_Etcd.ResponseHeader'(Prev,
											 NewFValue,
											 TrUserData)
						  end,
						  F@_2, TrUserData).

'd_field_Etcd.AuthUserGetResponse_roles'(<<1:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthUserGetResponse_roles'(Rest, N + 7,
					     X bsl N + Acc, F@_1, F@_2,
					     TrUserData);
'd_field_Etcd.AuthUserGetResponse_roles'(<<0:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthUserGetResponse'(RestF, 0,
						  0, F@_1,
						  cons(NewFValue, Prev,
						       TrUserData),
						  TrUserData).

'skip_varint_Etcd.AuthUserGetResponse'(<<1:1, _:7,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_Etcd.AuthUserGetResponse'(Rest, Z1, Z2,
					   F@_1, F@_2, TrUserData);
'skip_varint_Etcd.AuthUserGetResponse'(<<0:1, _:7,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserGetResponse'(Rest, Z1,
						  Z2, F@_1, F@_2, TrUserData).

'skip_length_delimited_Etcd.AuthUserGetResponse'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthUserGetResponse'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     F@_2, TrUserData);
'skip_length_delimited_Etcd.AuthUserGetResponse'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2,
						 TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthUserGetResponse'(Rest2, 0,
						  0, F@_1, F@_2, TrUserData).

'skip_group_Etcd.AuthUserGetResponse'(Bin, FNum, Z2,
				      F@_1, F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthUserGetResponse'(Rest, 0,
						  Z2, F@_1, F@_2, TrUserData).

'skip_32_Etcd.AuthUserGetResponse'(<<_:32,
				     Rest/binary>>,
				   Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserGetResponse'(Rest, Z1,
						  Z2, F@_1, F@_2, TrUserData).

'skip_64_Etcd.AuthUserGetResponse'(<<_:64,
				     Rest/binary>>,
				   Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserGetResponse'(Rest, Z1,
						  Z2, F@_1, F@_2, TrUserData).

'decode_msg_Etcd.AuthUserDeleteResponse'(Bin,
					 TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserDeleteResponse'(Bin, 0,
						     0,
						     id('$undef', TrUserData),
						     TrUserData).

'dfp_read_field_def_Etcd.AuthUserDeleteResponse'(<<10,
						   Rest/binary>>,
						 Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.AuthUserDeleteResponse_header'(Rest, Z1,
						 Z2, F@_1, TrUserData);
'dfp_read_field_def_Etcd.AuthUserDeleteResponse'(<<>>,
						 0, 0, F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.AuthUserDeleteResponse'(Other,
						 Z1, Z2, F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.AuthUserDeleteResponse'(Other,
						    Z1, Z2, F@_1, TrUserData).

'dg_read_field_def_Etcd.AuthUserDeleteResponse'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthUserDeleteResponse'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    TrUserData);
'dg_read_field_def_Etcd.AuthUserDeleteResponse'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.AuthUserDeleteResponse_header'(Rest, 0, 0,
						       F@_1, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AuthUserDeleteResponse'(Rest, 0, 0,
							  F@_1, TrUserData);
	    1 ->
		'skip_64_Etcd.AuthUserDeleteResponse'(Rest, 0, 0, F@_1,
						      TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AuthUserDeleteResponse'(Rest,
								    0, 0, F@_1,
								    TrUserData);
	    3 ->
		'skip_group_Etcd.AuthUserDeleteResponse'(Rest,
							 Key bsr 3, 0, F@_1,
							 TrUserData);
	    5 ->
		'skip_32_Etcd.AuthUserDeleteResponse'(Rest, 0, 0, F@_1,
						      TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AuthUserDeleteResponse'(<<>>, 0,
						0, F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.AuthUserDeleteResponse_header'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthUserDeleteResponse_header'(Rest,
						 N + 7, X bsl N + Acc, F@_1,
						 TrUserData);
'd_field_Etcd.AuthUserDeleteResponse_header'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthUserDeleteResponse'(RestF,
						     0, 0,
						     if Prev == '$undef' ->
							    NewFValue;
							true ->
							    'merge_msg_Etcd.ResponseHeader'(Prev,
											    NewFValue,
											    TrUserData)
						     end,
						     TrUserData).

'skip_varint_Etcd.AuthUserDeleteResponse'(<<1:1, _:7,
					    Rest/binary>>,
					  Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.AuthUserDeleteResponse'(Rest, Z1, Z2,
					      F@_1, TrUserData);
'skip_varint_Etcd.AuthUserDeleteResponse'(<<0:1, _:7,
					    Rest/binary>>,
					  Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserDeleteResponse'(Rest,
						     Z1, Z2, F@_1, TrUserData).

'skip_length_delimited_Etcd.AuthUserDeleteResponse'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthUserDeleteResponse'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, TrUserData);
'skip_length_delimited_Etcd.AuthUserDeleteResponse'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthUserDeleteResponse'(Rest2,
						     0, 0, F@_1, TrUserData).

'skip_group_Etcd.AuthUserDeleteResponse'(Bin, FNum, Z2,
					 F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthUserDeleteResponse'(Rest,
						     0, Z2, F@_1, TrUserData).

'skip_32_Etcd.AuthUserDeleteResponse'(<<_:32,
					Rest/binary>>,
				      Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserDeleteResponse'(Rest,
						     Z1, Z2, F@_1, TrUserData).

'skip_64_Etcd.AuthUserDeleteResponse'(<<_:64,
					Rest/binary>>,
				      Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserDeleteResponse'(Rest,
						     Z1, Z2, F@_1, TrUserData).

'decode_msg_Etcd.AuthUserChangePasswordResponse'(Bin,
						 TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserChangePasswordResponse'(Bin,
							     0, 0,
							     id('$undef',
								TrUserData),
							     TrUserData).

'dfp_read_field_def_Etcd.AuthUserChangePasswordResponse'(<<10,
							   Rest/binary>>,
							 Z1, Z2, F@_1,
							 TrUserData) ->
    'd_field_Etcd.AuthUserChangePasswordResponse_header'(Rest,
							 Z1, Z2, F@_1,
							 TrUserData);
'dfp_read_field_def_Etcd.AuthUserChangePasswordResponse'(<<>>,
							 0, 0, F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.AuthUserChangePasswordResponse'(Other,
							 Z1, Z2, F@_1,
							 TrUserData) ->
    'dg_read_field_def_Etcd.AuthUserChangePasswordResponse'(Other,
							    Z1, Z2, F@_1,
							    TrUserData).

'dg_read_field_def_Etcd.AuthUserChangePasswordResponse'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1,
							TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthUserChangePasswordResponse'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    TrUserData);
'dg_read_field_def_Etcd.AuthUserChangePasswordResponse'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1,
							TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.AuthUserChangePasswordResponse_header'(Rest,
							       0, 0, F@_1,
							       TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AuthUserChangePasswordResponse'(Rest,
								  0, 0, F@_1,
								  TrUserData);
	    1 ->
		'skip_64_Etcd.AuthUserChangePasswordResponse'(Rest, 0,
							      0, F@_1,
							      TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AuthUserChangePasswordResponse'(Rest,
									    0,
									    0,
									    F@_1,
									    TrUserData);
	    3 ->
		'skip_group_Etcd.AuthUserChangePasswordResponse'(Rest,
								 Key bsr 3, 0,
								 F@_1,
								 TrUserData);
	    5 ->
		'skip_32_Etcd.AuthUserChangePasswordResponse'(Rest, 0,
							      0, F@_1,
							      TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AuthUserChangePasswordResponse'(<<>>,
							0, 0, F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.AuthUserChangePasswordResponse_header'(<<1:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthUserChangePasswordResponse_header'(Rest,
							 N + 7, X bsl N + Acc,
							 F@_1, TrUserData);
'd_field_Etcd.AuthUserChangePasswordResponse_header'(<<0:1,
						       X:7, Rest/binary>>,
						     N, Acc, Prev,
						     TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthUserChangePasswordResponse'(RestF,
							     0, 0,
							     if Prev ==
								  '$undef' ->
								    NewFValue;
								true ->
								    'merge_msg_Etcd.ResponseHeader'(Prev,
												    NewFValue,
												    TrUserData)
							     end,
							     TrUserData).

'skip_varint_Etcd.AuthUserChangePasswordResponse'(<<1:1,
						    _:7, Rest/binary>>,
						  Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.AuthUserChangePasswordResponse'(Rest,
						      Z1, Z2, F@_1, TrUserData);
'skip_varint_Etcd.AuthUserChangePasswordResponse'(<<0:1,
						    _:7, Rest/binary>>,
						  Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserChangePasswordResponse'(Rest,
							     Z1, Z2, F@_1,
							     TrUserData).

'skip_length_delimited_Etcd.AuthUserChangePasswordResponse'(<<1:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1,
							    TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthUserChangePasswordResponse'(Rest,
								N + 7,
								X bsl N + Acc,
								F@_1,
								TrUserData);
'skip_length_delimited_Etcd.AuthUserChangePasswordResponse'(<<0:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1,
							    TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthUserChangePasswordResponse'(Rest2,
							     0, 0, F@_1,
							     TrUserData).

'skip_group_Etcd.AuthUserChangePasswordResponse'(Bin,
						 FNum, Z2, F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthUserChangePasswordResponse'(Rest,
							     0, Z2, F@_1,
							     TrUserData).

'skip_32_Etcd.AuthUserChangePasswordResponse'(<<_:32,
						Rest/binary>>,
					      Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserChangePasswordResponse'(Rest,
							     Z1, Z2, F@_1,
							     TrUserData).

'skip_64_Etcd.AuthUserChangePasswordResponse'(<<_:64,
						Rest/binary>>,
					      Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserChangePasswordResponse'(Rest,
							     Z1, Z2, F@_1,
							     TrUserData).

'decode_msg_Etcd.AuthUserGrantRoleResponse'(Bin,
					    TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserGrantRoleResponse'(Bin,
							0, 0,
							id('$undef',
							   TrUserData),
							TrUserData).

'dfp_read_field_def_Etcd.AuthUserGrantRoleResponse'(<<10,
						      Rest/binary>>,
						    Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.AuthUserGrantRoleResponse_header'(Rest,
						    Z1, Z2, F@_1, TrUserData);
'dfp_read_field_def_Etcd.AuthUserGrantRoleResponse'(<<>>,
						    0, 0, F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.AuthUserGrantRoleResponse'(Other,
						    Z1, Z2, F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.AuthUserGrantRoleResponse'(Other,
						       Z1, Z2, F@_1,
						       TrUserData).

'dg_read_field_def_Etcd.AuthUserGrantRoleResponse'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthUserGrantRoleResponse'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, TrUserData);
'dg_read_field_def_Etcd.AuthUserGrantRoleResponse'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.AuthUserGrantRoleResponse_header'(Rest, 0,
							  0, F@_1, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AuthUserGrantRoleResponse'(Rest, 0, 0,
							     F@_1, TrUserData);
	    1 ->
		'skip_64_Etcd.AuthUserGrantRoleResponse'(Rest, 0, 0,
							 F@_1, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AuthUserGrantRoleResponse'(Rest,
								       0, 0,
								       F@_1,
								       TrUserData);
	    3 ->
		'skip_group_Etcd.AuthUserGrantRoleResponse'(Rest,
							    Key bsr 3, 0, F@_1,
							    TrUserData);
	    5 ->
		'skip_32_Etcd.AuthUserGrantRoleResponse'(Rest, 0, 0,
							 F@_1, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AuthUserGrantRoleResponse'(<<>>,
						   0, 0, F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.AuthUserGrantRoleResponse_header'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthUserGrantRoleResponse_header'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    TrUserData);
'd_field_Etcd.AuthUserGrantRoleResponse_header'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthUserGrantRoleResponse'(RestF,
							0, 0,
							if Prev == '$undef' ->
							       NewFValue;
							   true ->
							       'merge_msg_Etcd.ResponseHeader'(Prev,
											       NewFValue,
											       TrUserData)
							end,
							TrUserData).

'skip_varint_Etcd.AuthUserGrantRoleResponse'(<<1:1, _:7,
					       Rest/binary>>,
					     Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.AuthUserGrantRoleResponse'(Rest, Z1,
						 Z2, F@_1, TrUserData);
'skip_varint_Etcd.AuthUserGrantRoleResponse'(<<0:1, _:7,
					       Rest/binary>>,
					     Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserGrantRoleResponse'(Rest,
							Z1, Z2, F@_1,
							TrUserData).

'skip_length_delimited_Etcd.AuthUserGrantRoleResponse'(<<1:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthUserGrantRoleResponse'(Rest,
							   N + 7, X bsl N + Acc,
							   F@_1, TrUserData);
'skip_length_delimited_Etcd.AuthUserGrantRoleResponse'(<<0:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1,
						       TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthUserGrantRoleResponse'(Rest2,
							0, 0, F@_1, TrUserData).

'skip_group_Etcd.AuthUserGrantRoleResponse'(Bin, FNum,
					    Z2, F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthUserGrantRoleResponse'(Rest,
							0, Z2, F@_1,
							TrUserData).

'skip_32_Etcd.AuthUserGrantRoleResponse'(<<_:32,
					   Rest/binary>>,
					 Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserGrantRoleResponse'(Rest,
							Z1, Z2, F@_1,
							TrUserData).

'skip_64_Etcd.AuthUserGrantRoleResponse'(<<_:64,
					   Rest/binary>>,
					 Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserGrantRoleResponse'(Rest,
							Z1, Z2, F@_1,
							TrUserData).

'decode_msg_Etcd.AuthUserRevokeRoleResponse'(Bin,
					     TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserRevokeRoleResponse'(Bin,
							 0, 0,
							 id('$undef',
							    TrUserData),
							 TrUserData).

'dfp_read_field_def_Etcd.AuthUserRevokeRoleResponse'(<<10,
						       Rest/binary>>,
						     Z1, Z2, F@_1,
						     TrUserData) ->
    'd_field_Etcd.AuthUserRevokeRoleResponse_header'(Rest,
						     Z1, Z2, F@_1, TrUserData);
'dfp_read_field_def_Etcd.AuthUserRevokeRoleResponse'(<<>>,
						     0, 0, F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.AuthUserRevokeRoleResponse'(Other,
						     Z1, Z2, F@_1,
						     TrUserData) ->
    'dg_read_field_def_Etcd.AuthUserRevokeRoleResponse'(Other,
							Z1, Z2, F@_1,
							TrUserData).

'dg_read_field_def_Etcd.AuthUserRevokeRoleResponse'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthUserRevokeRoleResponse'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, TrUserData);
'dg_read_field_def_Etcd.AuthUserRevokeRoleResponse'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.AuthUserRevokeRoleResponse_header'(Rest,
							   0, 0, F@_1,
							   TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AuthUserRevokeRoleResponse'(Rest, 0,
							      0, F@_1,
							      TrUserData);
	    1 ->
		'skip_64_Etcd.AuthUserRevokeRoleResponse'(Rest, 0, 0,
							  F@_1, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AuthUserRevokeRoleResponse'(Rest,
									0, 0,
									F@_1,
									TrUserData);
	    3 ->
		'skip_group_Etcd.AuthUserRevokeRoleResponse'(Rest,
							     Key bsr 3, 0, F@_1,
							     TrUserData);
	    5 ->
		'skip_32_Etcd.AuthUserRevokeRoleResponse'(Rest, 0, 0,
							  F@_1, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AuthUserRevokeRoleResponse'(<<>>,
						    0, 0, F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.AuthUserRevokeRoleResponse_header'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthUserRevokeRoleResponse_header'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     TrUserData);
'd_field_Etcd.AuthUserRevokeRoleResponse_header'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthUserRevokeRoleResponse'(RestF,
							 0, 0,
							 if Prev == '$undef' ->
								NewFValue;
							    true ->
								'merge_msg_Etcd.ResponseHeader'(Prev,
												NewFValue,
												TrUserData)
							 end,
							 TrUserData).

'skip_varint_Etcd.AuthUserRevokeRoleResponse'(<<1:1,
						_:7, Rest/binary>>,
					      Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.AuthUserRevokeRoleResponse'(Rest, Z1,
						  Z2, F@_1, TrUserData);
'skip_varint_Etcd.AuthUserRevokeRoleResponse'(<<0:1,
						_:7, Rest/binary>>,
					      Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserRevokeRoleResponse'(Rest,
							 Z1, Z2, F@_1,
							 TrUserData).

'skip_length_delimited_Etcd.AuthUserRevokeRoleResponse'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1,
							TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthUserRevokeRoleResponse'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    TrUserData);
'skip_length_delimited_Etcd.AuthUserRevokeRoleResponse'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1,
							TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthUserRevokeRoleResponse'(Rest2,
							 0, 0, F@_1,
							 TrUserData).

'skip_group_Etcd.AuthUserRevokeRoleResponse'(Bin, FNum,
					     Z2, F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthUserRevokeRoleResponse'(Rest,
							 0, Z2, F@_1,
							 TrUserData).

'skip_32_Etcd.AuthUserRevokeRoleResponse'(<<_:32,
					    Rest/binary>>,
					  Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserRevokeRoleResponse'(Rest,
							 Z1, Z2, F@_1,
							 TrUserData).

'skip_64_Etcd.AuthUserRevokeRoleResponse'(<<_:64,
					    Rest/binary>>,
					  Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserRevokeRoleResponse'(Rest,
							 Z1, Z2, F@_1,
							 TrUserData).

'decode_msg_Etcd.AuthRoleAddResponse'(Bin,
				      TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleAddResponse'(Bin, 0, 0,
						  id('$undef', TrUserData),
						  TrUserData).

'dfp_read_field_def_Etcd.AuthRoleAddResponse'(<<10,
						Rest/binary>>,
					      Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.AuthRoleAddResponse_header'(Rest, Z1, Z2,
					      F@_1, TrUserData);
'dfp_read_field_def_Etcd.AuthRoleAddResponse'(<<>>, 0,
					      0, F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.AuthRoleAddResponse'(Other, Z1,
					      Z2, F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.AuthRoleAddResponse'(Other, Z1,
						 Z2, F@_1, TrUserData).

'dg_read_field_def_Etcd.AuthRoleAddResponse'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthRoleAddResponse'(Rest,
						 N + 7, X bsl N + Acc, F@_1,
						 TrUserData);
'dg_read_field_def_Etcd.AuthRoleAddResponse'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.AuthRoleAddResponse_header'(Rest, 0, 0,
						    F@_1, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AuthRoleAddResponse'(Rest, 0, 0, F@_1,
						       TrUserData);
	    1 ->
		'skip_64_Etcd.AuthRoleAddResponse'(Rest, 0, 0, F@_1,
						   TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AuthRoleAddResponse'(Rest,
								 0, 0, F@_1,
								 TrUserData);
	    3 ->
		'skip_group_Etcd.AuthRoleAddResponse'(Rest, Key bsr 3,
						      0, F@_1, TrUserData);
	    5 ->
		'skip_32_Etcd.AuthRoleAddResponse'(Rest, 0, 0, F@_1,
						   TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AuthRoleAddResponse'(<<>>, 0, 0,
					     F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.AuthRoleAddResponse_header'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthRoleAddResponse_header'(Rest, N + 7,
					      X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.AuthRoleAddResponse_header'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthRoleAddResponse'(RestF, 0,
						  0,
						  if Prev == '$undef' ->
							 NewFValue;
						     true ->
							 'merge_msg_Etcd.ResponseHeader'(Prev,
											 NewFValue,
											 TrUserData)
						  end,
						  TrUserData).

'skip_varint_Etcd.AuthRoleAddResponse'(<<1:1, _:7,
					 Rest/binary>>,
				       Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.AuthRoleAddResponse'(Rest, Z1, Z2,
					   F@_1, TrUserData);
'skip_varint_Etcd.AuthRoleAddResponse'(<<0:1, _:7,
					 Rest/binary>>,
				       Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleAddResponse'(Rest, Z1,
						  Z2, F@_1, TrUserData).

'skip_length_delimited_Etcd.AuthRoleAddResponse'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthRoleAddResponse'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     TrUserData);
'skip_length_delimited_Etcd.AuthRoleAddResponse'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthRoleAddResponse'(Rest2, 0,
						  0, F@_1, TrUserData).

'skip_group_Etcd.AuthRoleAddResponse'(Bin, FNum, Z2,
				      F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthRoleAddResponse'(Rest, 0,
						  Z2, F@_1, TrUserData).

'skip_32_Etcd.AuthRoleAddResponse'(<<_:32,
				     Rest/binary>>,
				   Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleAddResponse'(Rest, Z1,
						  Z2, F@_1, TrUserData).

'skip_64_Etcd.AuthRoleAddResponse'(<<_:64,
				     Rest/binary>>,
				   Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleAddResponse'(Rest, Z1,
						  Z2, F@_1, TrUserData).

'decode_msg_Etcd.AuthRoleGetResponse'(Bin,
				      TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleGetResponse'(Bin, 0, 0,
						  id('$undef', TrUserData),
						  id([], TrUserData),
						  TrUserData).

'dfp_read_field_def_Etcd.AuthRoleGetResponse'(<<10,
						Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.AuthRoleGetResponse_header'(Rest, Z1, Z2,
					      F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.AuthRoleGetResponse'(<<18,
						Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.AuthRoleGetResponse_perm'(Rest, Z1, Z2,
					    F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.AuthRoleGetResponse'(<<>>, 0,
					      0, F@_1, R1, TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true -> S2#{perm => lists_reverse(R1, TrUserData)}
    end;
'dfp_read_field_def_Etcd.AuthRoleGetResponse'(Other, Z1,
					      Z2, F@_1, F@_2, TrUserData) ->
    'dg_read_field_def_Etcd.AuthRoleGetResponse'(Other, Z1,
						 Z2, F@_1, F@_2, TrUserData).

'dg_read_field_def_Etcd.AuthRoleGetResponse'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthRoleGetResponse'(Rest,
						 N + 7, X bsl N + Acc, F@_1,
						 F@_2, TrUserData);
'dg_read_field_def_Etcd.AuthRoleGetResponse'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.AuthRoleGetResponse_header'(Rest, 0, 0,
						    F@_1, F@_2, TrUserData);
      18 ->
	  'd_field_Etcd.AuthRoleGetResponse_perm'(Rest, 0, 0,
						  F@_1, F@_2, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AuthRoleGetResponse'(Rest, 0, 0, F@_1,
						       F@_2, TrUserData);
	    1 ->
		'skip_64_Etcd.AuthRoleGetResponse'(Rest, 0, 0, F@_1,
						   F@_2, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AuthRoleGetResponse'(Rest,
								 0, 0, F@_1,
								 F@_2,
								 TrUserData);
	    3 ->
		'skip_group_Etcd.AuthRoleGetResponse'(Rest, Key bsr 3,
						      0, F@_1, F@_2,
						      TrUserData);
	    5 ->
		'skip_32_Etcd.AuthRoleGetResponse'(Rest, 0, 0, F@_1,
						   F@_2, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AuthRoleGetResponse'(<<>>, 0, 0,
					     F@_1, R1, TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true -> S2#{perm => lists_reverse(R1, TrUserData)}
    end.

'd_field_Etcd.AuthRoleGetResponse_header'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthRoleGetResponse_header'(Rest, N + 7,
					      X bsl N + Acc, F@_1, F@_2,
					      TrUserData);
'd_field_Etcd.AuthRoleGetResponse_header'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, Prev, F@_2, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthRoleGetResponse'(RestF, 0,
						  0,
						  if Prev == '$undef' ->
							 NewFValue;
						     true ->
							 'merge_msg_Etcd.ResponseHeader'(Prev,
											 NewFValue,
											 TrUserData)
						  end,
						  F@_2, TrUserData).

'd_field_Etcd.AuthRoleGetResponse_perm'(<<1:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthRoleGetResponse_perm'(Rest, N + 7,
					    X bsl N + Acc, F@_1, F@_2,
					    TrUserData);
'd_field_Etcd.AuthRoleGetResponse_perm'(<<0:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_authpb.Permission'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthRoleGetResponse'(RestF, 0,
						  0, F@_1,
						  cons(NewFValue, Prev,
						       TrUserData),
						  TrUserData).

'skip_varint_Etcd.AuthRoleGetResponse'(<<1:1, _:7,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_Etcd.AuthRoleGetResponse'(Rest, Z1, Z2,
					   F@_1, F@_2, TrUserData);
'skip_varint_Etcd.AuthRoleGetResponse'(<<0:1, _:7,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleGetResponse'(Rest, Z1,
						  Z2, F@_1, F@_2, TrUserData).

'skip_length_delimited_Etcd.AuthRoleGetResponse'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthRoleGetResponse'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     F@_2, TrUserData);
'skip_length_delimited_Etcd.AuthRoleGetResponse'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2,
						 TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthRoleGetResponse'(Rest2, 0,
						  0, F@_1, F@_2, TrUserData).

'skip_group_Etcd.AuthRoleGetResponse'(Bin, FNum, Z2,
				      F@_1, F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthRoleGetResponse'(Rest, 0,
						  Z2, F@_1, F@_2, TrUserData).

'skip_32_Etcd.AuthRoleGetResponse'(<<_:32,
				     Rest/binary>>,
				   Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleGetResponse'(Rest, Z1,
						  Z2, F@_1, F@_2, TrUserData).

'skip_64_Etcd.AuthRoleGetResponse'(<<_:64,
				     Rest/binary>>,
				   Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleGetResponse'(Rest, Z1,
						  Z2, F@_1, F@_2, TrUserData).

'decode_msg_Etcd.AuthRoleListResponse'(Bin,
				       TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleListResponse'(Bin, 0,
						   0, id('$undef', TrUserData),
						   id([], TrUserData),
						   TrUserData).

'dfp_read_field_def_Etcd.AuthRoleListResponse'(<<10,
						 Rest/binary>>,
					       Z1, Z2, F@_1, F@_2,
					       TrUserData) ->
    'd_field_Etcd.AuthRoleListResponse_header'(Rest, Z1, Z2,
					       F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.AuthRoleListResponse'(<<18,
						 Rest/binary>>,
					       Z1, Z2, F@_1, F@_2,
					       TrUserData) ->
    'd_field_Etcd.AuthRoleListResponse_roles'(Rest, Z1, Z2,
					      F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.AuthRoleListResponse'(<<>>, 0,
					       0, F@_1, R1, TrUserData) ->
    S1 = #{roles => lists_reverse(R1, TrUserData)},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.AuthRoleListResponse'(Other,
					       Z1, Z2, F@_1, F@_2,
					       TrUserData) ->
    'dg_read_field_def_Etcd.AuthRoleListResponse'(Other, Z1,
						  Z2, F@_1, F@_2, TrUserData).

'dg_read_field_def_Etcd.AuthRoleListResponse'(<<1:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthRoleListResponse'(Rest,
						  N + 7, X bsl N + Acc, F@_1,
						  F@_2, TrUserData);
'dg_read_field_def_Etcd.AuthRoleListResponse'(<<0:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.AuthRoleListResponse_header'(Rest, 0, 0,
						     F@_1, F@_2, TrUserData);
      18 ->
	  'd_field_Etcd.AuthRoleListResponse_roles'(Rest, 0, 0,
						    F@_1, F@_2, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AuthRoleListResponse'(Rest, 0, 0,
							F@_1, F@_2, TrUserData);
	    1 ->
		'skip_64_Etcd.AuthRoleListResponse'(Rest, 0, 0, F@_1,
						    F@_2, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AuthRoleListResponse'(Rest,
								  0, 0, F@_1,
								  F@_2,
								  TrUserData);
	    3 ->
		'skip_group_Etcd.AuthRoleListResponse'(Rest, Key bsr 3,
						       0, F@_1, F@_2,
						       TrUserData);
	    5 ->
		'skip_32_Etcd.AuthRoleListResponse'(Rest, 0, 0, F@_1,
						    F@_2, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AuthRoleListResponse'(<<>>, 0,
					      0, F@_1, R1, TrUserData) ->
    S1 = #{roles => lists_reverse(R1, TrUserData)},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.AuthRoleListResponse_header'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthRoleListResponse_header'(Rest, N + 7,
					       X bsl N + Acc, F@_1, F@_2,
					       TrUserData);
'd_field_Etcd.AuthRoleListResponse_header'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, Prev, F@_2, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthRoleListResponse'(RestF, 0,
						   0,
						   if Prev == '$undef' ->
							  NewFValue;
						      true ->
							  'merge_msg_Etcd.ResponseHeader'(Prev,
											  NewFValue,
											  TrUserData)
						   end,
						   F@_2, TrUserData).

'd_field_Etcd.AuthRoleListResponse_roles'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthRoleListResponse_roles'(Rest, N + 7,
					      X bsl N + Acc, F@_1, F@_2,
					      TrUserData);
'd_field_Etcd.AuthRoleListResponse_roles'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthRoleListResponse'(RestF, 0,
						   0, F@_1,
						   cons(NewFValue, Prev,
							TrUserData),
						   TrUserData).

'skip_varint_Etcd.AuthRoleListResponse'(<<1:1, _:7,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_Etcd.AuthRoleListResponse'(Rest, Z1, Z2,
					    F@_1, F@_2, TrUserData);
'skip_varint_Etcd.AuthRoleListResponse'(<<0:1, _:7,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleListResponse'(Rest, Z1,
						   Z2, F@_1, F@_2, TrUserData).

'skip_length_delimited_Etcd.AuthRoleListResponse'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2,
						  TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthRoleListResponse'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, TrUserData);
'skip_length_delimited_Etcd.AuthRoleListResponse'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2,
						  TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthRoleListResponse'(Rest2, 0,
						   0, F@_1, F@_2, TrUserData).

'skip_group_Etcd.AuthRoleListResponse'(Bin, FNum, Z2,
				       F@_1, F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthRoleListResponse'(Rest, 0,
						   Z2, F@_1, F@_2, TrUserData).

'skip_32_Etcd.AuthRoleListResponse'(<<_:32,
				      Rest/binary>>,
				    Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleListResponse'(Rest, Z1,
						   Z2, F@_1, F@_2, TrUserData).

'skip_64_Etcd.AuthRoleListResponse'(<<_:64,
				      Rest/binary>>,
				    Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleListResponse'(Rest, Z1,
						   Z2, F@_1, F@_2, TrUserData).

'decode_msg_Etcd.AuthUserListResponse'(Bin,
				       TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserListResponse'(Bin, 0,
						   0, id('$undef', TrUserData),
						   id([], TrUserData),
						   TrUserData).

'dfp_read_field_def_Etcd.AuthUserListResponse'(<<10,
						 Rest/binary>>,
					       Z1, Z2, F@_1, F@_2,
					       TrUserData) ->
    'd_field_Etcd.AuthUserListResponse_header'(Rest, Z1, Z2,
					       F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.AuthUserListResponse'(<<18,
						 Rest/binary>>,
					       Z1, Z2, F@_1, F@_2,
					       TrUserData) ->
    'd_field_Etcd.AuthUserListResponse_users'(Rest, Z1, Z2,
					      F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.AuthUserListResponse'(<<>>, 0,
					       0, F@_1, R1, TrUserData) ->
    S1 = #{users => lists_reverse(R1, TrUserData)},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.AuthUserListResponse'(Other,
					       Z1, Z2, F@_1, F@_2,
					       TrUserData) ->
    'dg_read_field_def_Etcd.AuthUserListResponse'(Other, Z1,
						  Z2, F@_1, F@_2, TrUserData).

'dg_read_field_def_Etcd.AuthUserListResponse'(<<1:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthUserListResponse'(Rest,
						  N + 7, X bsl N + Acc, F@_1,
						  F@_2, TrUserData);
'dg_read_field_def_Etcd.AuthUserListResponse'(<<0:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.AuthUserListResponse_header'(Rest, 0, 0,
						     F@_1, F@_2, TrUserData);
      18 ->
	  'd_field_Etcd.AuthUserListResponse_users'(Rest, 0, 0,
						    F@_1, F@_2, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AuthUserListResponse'(Rest, 0, 0,
							F@_1, F@_2, TrUserData);
	    1 ->
		'skip_64_Etcd.AuthUserListResponse'(Rest, 0, 0, F@_1,
						    F@_2, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AuthUserListResponse'(Rest,
								  0, 0, F@_1,
								  F@_2,
								  TrUserData);
	    3 ->
		'skip_group_Etcd.AuthUserListResponse'(Rest, Key bsr 3,
						       0, F@_1, F@_2,
						       TrUserData);
	    5 ->
		'skip_32_Etcd.AuthUserListResponse'(Rest, 0, 0, F@_1,
						    F@_2, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AuthUserListResponse'(<<>>, 0,
					      0, F@_1, R1, TrUserData) ->
    S1 = #{users => lists_reverse(R1, TrUserData)},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.AuthUserListResponse_header'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthUserListResponse_header'(Rest, N + 7,
					       X bsl N + Acc, F@_1, F@_2,
					       TrUserData);
'd_field_Etcd.AuthUserListResponse_header'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, Prev, F@_2, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthUserListResponse'(RestF, 0,
						   0,
						   if Prev == '$undef' ->
							  NewFValue;
						      true ->
							  'merge_msg_Etcd.ResponseHeader'(Prev,
											  NewFValue,
											  TrUserData)
						   end,
						   F@_2, TrUserData).

'd_field_Etcd.AuthUserListResponse_users'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthUserListResponse_users'(Rest, N + 7,
					      X bsl N + Acc, F@_1, F@_2,
					      TrUserData);
'd_field_Etcd.AuthUserListResponse_users'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthUserListResponse'(RestF, 0,
						   0, F@_1,
						   cons(NewFValue, Prev,
							TrUserData),
						   TrUserData).

'skip_varint_Etcd.AuthUserListResponse'(<<1:1, _:7,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_Etcd.AuthUserListResponse'(Rest, Z1, Z2,
					    F@_1, F@_2, TrUserData);
'skip_varint_Etcd.AuthUserListResponse'(<<0:1, _:7,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserListResponse'(Rest, Z1,
						   Z2, F@_1, F@_2, TrUserData).

'skip_length_delimited_Etcd.AuthUserListResponse'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2,
						  TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthUserListResponse'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, TrUserData);
'skip_length_delimited_Etcd.AuthUserListResponse'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2,
						  TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthUserListResponse'(Rest2, 0,
						   0, F@_1, F@_2, TrUserData).

'skip_group_Etcd.AuthUserListResponse'(Bin, FNum, Z2,
				       F@_1, F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthUserListResponse'(Rest, 0,
						   Z2, F@_1, F@_2, TrUserData).

'skip_32_Etcd.AuthUserListResponse'(<<_:32,
				      Rest/binary>>,
				    Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserListResponse'(Rest, Z1,
						   Z2, F@_1, F@_2, TrUserData).

'skip_64_Etcd.AuthUserListResponse'(<<_:64,
				      Rest/binary>>,
				    Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthUserListResponse'(Rest, Z1,
						   Z2, F@_1, F@_2, TrUserData).

'decode_msg_Etcd.AuthRoleDeleteResponse'(Bin,
					 TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleDeleteResponse'(Bin, 0,
						     0,
						     id('$undef', TrUserData),
						     TrUserData).

'dfp_read_field_def_Etcd.AuthRoleDeleteResponse'(<<10,
						   Rest/binary>>,
						 Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.AuthRoleDeleteResponse_header'(Rest, Z1,
						 Z2, F@_1, TrUserData);
'dfp_read_field_def_Etcd.AuthRoleDeleteResponse'(<<>>,
						 0, 0, F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.AuthRoleDeleteResponse'(Other,
						 Z1, Z2, F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.AuthRoleDeleteResponse'(Other,
						    Z1, Z2, F@_1, TrUserData).

'dg_read_field_def_Etcd.AuthRoleDeleteResponse'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthRoleDeleteResponse'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    TrUserData);
'dg_read_field_def_Etcd.AuthRoleDeleteResponse'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.AuthRoleDeleteResponse_header'(Rest, 0, 0,
						       F@_1, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AuthRoleDeleteResponse'(Rest, 0, 0,
							  F@_1, TrUserData);
	    1 ->
		'skip_64_Etcd.AuthRoleDeleteResponse'(Rest, 0, 0, F@_1,
						      TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AuthRoleDeleteResponse'(Rest,
								    0, 0, F@_1,
								    TrUserData);
	    3 ->
		'skip_group_Etcd.AuthRoleDeleteResponse'(Rest,
							 Key bsr 3, 0, F@_1,
							 TrUserData);
	    5 ->
		'skip_32_Etcd.AuthRoleDeleteResponse'(Rest, 0, 0, F@_1,
						      TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AuthRoleDeleteResponse'(<<>>, 0,
						0, F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.AuthRoleDeleteResponse_header'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthRoleDeleteResponse_header'(Rest,
						 N + 7, X bsl N + Acc, F@_1,
						 TrUserData);
'd_field_Etcd.AuthRoleDeleteResponse_header'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthRoleDeleteResponse'(RestF,
						     0, 0,
						     if Prev == '$undef' ->
							    NewFValue;
							true ->
							    'merge_msg_Etcd.ResponseHeader'(Prev,
											    NewFValue,
											    TrUserData)
						     end,
						     TrUserData).

'skip_varint_Etcd.AuthRoleDeleteResponse'(<<1:1, _:7,
					    Rest/binary>>,
					  Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.AuthRoleDeleteResponse'(Rest, Z1, Z2,
					      F@_1, TrUserData);
'skip_varint_Etcd.AuthRoleDeleteResponse'(<<0:1, _:7,
					    Rest/binary>>,
					  Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleDeleteResponse'(Rest,
						     Z1, Z2, F@_1, TrUserData).

'skip_length_delimited_Etcd.AuthRoleDeleteResponse'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthRoleDeleteResponse'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, TrUserData);
'skip_length_delimited_Etcd.AuthRoleDeleteResponse'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthRoleDeleteResponse'(Rest2,
						     0, 0, F@_1, TrUserData).

'skip_group_Etcd.AuthRoleDeleteResponse'(Bin, FNum, Z2,
					 F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthRoleDeleteResponse'(Rest,
						     0, Z2, F@_1, TrUserData).

'skip_32_Etcd.AuthRoleDeleteResponse'(<<_:32,
					Rest/binary>>,
				      Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleDeleteResponse'(Rest,
						     Z1, Z2, F@_1, TrUserData).

'skip_64_Etcd.AuthRoleDeleteResponse'(<<_:64,
					Rest/binary>>,
				      Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleDeleteResponse'(Rest,
						     Z1, Z2, F@_1, TrUserData).

'decode_msg_Etcd.AuthRoleGrantPermissionResponse'(Bin,
						  TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleGrantPermissionResponse'(Bin,
							      0, 0,
							      id('$undef',
								 TrUserData),
							      TrUserData).

'dfp_read_field_def_Etcd.AuthRoleGrantPermissionResponse'(<<10,
							    Rest/binary>>,
							  Z1, Z2, F@_1,
							  TrUserData) ->
    'd_field_Etcd.AuthRoleGrantPermissionResponse_header'(Rest,
							  Z1, Z2, F@_1,
							  TrUserData);
'dfp_read_field_def_Etcd.AuthRoleGrantPermissionResponse'(<<>>,
							  0, 0, F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.AuthRoleGrantPermissionResponse'(Other,
							  Z1, Z2, F@_1,
							  TrUserData) ->
    'dg_read_field_def_Etcd.AuthRoleGrantPermissionResponse'(Other,
							     Z1, Z2, F@_1,
							     TrUserData).

'dg_read_field_def_Etcd.AuthRoleGrantPermissionResponse'(<<1:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1,
							 TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthRoleGrantPermissionResponse'(Rest,
							     N + 7,
							     X bsl N + Acc,
							     F@_1, TrUserData);
'dg_read_field_def_Etcd.AuthRoleGrantPermissionResponse'(<<0:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1,
							 TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.AuthRoleGrantPermissionResponse_header'(Rest,
								0, 0, F@_1,
								TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AuthRoleGrantPermissionResponse'(Rest,
								   0, 0, F@_1,
								   TrUserData);
	    1 ->
		'skip_64_Etcd.AuthRoleGrantPermissionResponse'(Rest, 0,
							       0, F@_1,
							       TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AuthRoleGrantPermissionResponse'(Rest,
									     0,
									     0,
									     F@_1,
									     TrUserData);
	    3 ->
		'skip_group_Etcd.AuthRoleGrantPermissionResponse'(Rest,
								  Key bsr 3, 0,
								  F@_1,
								  TrUserData);
	    5 ->
		'skip_32_Etcd.AuthRoleGrantPermissionResponse'(Rest, 0,
							       0, F@_1,
							       TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AuthRoleGrantPermissionResponse'(<<>>,
							 0, 0, F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.AuthRoleGrantPermissionResponse_header'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthRoleGrantPermissionResponse_header'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, TrUserData);
'd_field_Etcd.AuthRoleGrantPermissionResponse_header'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, Prev,
						      TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthRoleGrantPermissionResponse'(RestF,
							      0, 0,
							      if Prev ==
								   '$undef' ->
								     NewFValue;
								 true ->
								     'merge_msg_Etcd.ResponseHeader'(Prev,
												     NewFValue,
												     TrUserData)
							      end,
							      TrUserData).

'skip_varint_Etcd.AuthRoleGrantPermissionResponse'(<<1:1,
						     _:7, Rest/binary>>,
						   Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.AuthRoleGrantPermissionResponse'(Rest,
						       Z1, Z2, F@_1,
						       TrUserData);
'skip_varint_Etcd.AuthRoleGrantPermissionResponse'(<<0:1,
						     _:7, Rest/binary>>,
						   Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleGrantPermissionResponse'(Rest,
							      Z1, Z2, F@_1,
							      TrUserData).

'skip_length_delimited_Etcd.AuthRoleGrantPermissionResponse'(<<1:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1,
							     TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthRoleGrantPermissionResponse'(Rest,
								 N + 7,
								 X bsl N + Acc,
								 F@_1,
								 TrUserData);
'skip_length_delimited_Etcd.AuthRoleGrantPermissionResponse'(<<0:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1,
							     TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthRoleGrantPermissionResponse'(Rest2,
							      0, 0, F@_1,
							      TrUserData).

'skip_group_Etcd.AuthRoleGrantPermissionResponse'(Bin,
						  FNum, Z2, F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthRoleGrantPermissionResponse'(Rest,
							      0, Z2, F@_1,
							      TrUserData).

'skip_32_Etcd.AuthRoleGrantPermissionResponse'(<<_:32,
						 Rest/binary>>,
					       Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleGrantPermissionResponse'(Rest,
							      Z1, Z2, F@_1,
							      TrUserData).

'skip_64_Etcd.AuthRoleGrantPermissionResponse'(<<_:64,
						 Rest/binary>>,
					       Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleGrantPermissionResponse'(Rest,
							      Z1, Z2, F@_1,
							      TrUserData).

'decode_msg_Etcd.AuthRoleRevokePermissionResponse'(Bin,
						   TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleRevokePermissionResponse'(Bin,
							       0, 0,
							       id('$undef',
								  TrUserData),
							       TrUserData).

'dfp_read_field_def_Etcd.AuthRoleRevokePermissionResponse'(<<10,
							     Rest/binary>>,
							   Z1, Z2, F@_1,
							   TrUserData) ->
    'd_field_Etcd.AuthRoleRevokePermissionResponse_header'(Rest,
							   Z1, Z2, F@_1,
							   TrUserData);
'dfp_read_field_def_Etcd.AuthRoleRevokePermissionResponse'(<<>>,
							   0, 0, F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.AuthRoleRevokePermissionResponse'(Other,
							   Z1, Z2, F@_1,
							   TrUserData) ->
    'dg_read_field_def_Etcd.AuthRoleRevokePermissionResponse'(Other,
							      Z1, Z2, F@_1,
							      TrUserData).

'dg_read_field_def_Etcd.AuthRoleRevokePermissionResponse'(<<1:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1,
							  TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.AuthRoleRevokePermissionResponse'(Rest,
							      N + 7,
							      X bsl N + Acc,
							      F@_1, TrUserData);
'dg_read_field_def_Etcd.AuthRoleRevokePermissionResponse'(<<0:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1,
							  TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.AuthRoleRevokePermissionResponse_header'(Rest,
								 0, 0, F@_1,
								 TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.AuthRoleRevokePermissionResponse'(Rest,
								    0, 0, F@_1,
								    TrUserData);
	    1 ->
		'skip_64_Etcd.AuthRoleRevokePermissionResponse'(Rest, 0,
								0, F@_1,
								TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.AuthRoleRevokePermissionResponse'(Rest,
									      0,
									      0,
									      F@_1,
									      TrUserData);
	    3 ->
		'skip_group_Etcd.AuthRoleRevokePermissionResponse'(Rest,
								   Key bsr 3, 0,
								   F@_1,
								   TrUserData);
	    5 ->
		'skip_32_Etcd.AuthRoleRevokePermissionResponse'(Rest, 0,
								0, F@_1,
								TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.AuthRoleRevokePermissionResponse'(<<>>,
							  0, 0, F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.AuthRoleRevokePermissionResponse_header'(<<1:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.AuthRoleRevokePermissionResponse_header'(Rest,
							   N + 7, X bsl N + Acc,
							   F@_1, TrUserData);
'd_field_Etcd.AuthRoleRevokePermissionResponse_header'(<<0:1,
							 X:7, Rest/binary>>,
						       N, Acc, Prev,
						       TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.AuthRoleRevokePermissionResponse'(RestF,
							       0, 0,
							       if Prev ==
								    '$undef' ->
								      NewFValue;
								  true ->
								      'merge_msg_Etcd.ResponseHeader'(Prev,
												      NewFValue,
												      TrUserData)
							       end,
							       TrUserData).

'skip_varint_Etcd.AuthRoleRevokePermissionResponse'(<<1:1,
						      _:7, Rest/binary>>,
						    Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.AuthRoleRevokePermissionResponse'(Rest,
							Z1, Z2, F@_1,
							TrUserData);
'skip_varint_Etcd.AuthRoleRevokePermissionResponse'(<<0:1,
						      _:7, Rest/binary>>,
						    Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleRevokePermissionResponse'(Rest,
							       Z1, Z2, F@_1,
							       TrUserData).

'skip_length_delimited_Etcd.AuthRoleRevokePermissionResponse'(<<1:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.AuthRoleRevokePermissionResponse'(Rest,
								  N + 7,
								  X bsl N + Acc,
								  F@_1,
								  TrUserData);
'skip_length_delimited_Etcd.AuthRoleRevokePermissionResponse'(<<0:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.AuthRoleRevokePermissionResponse'(Rest2,
							       0, 0, F@_1,
							       TrUserData).

'skip_group_Etcd.AuthRoleRevokePermissionResponse'(Bin,
						   FNum, Z2, F@_1,
						   TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.AuthRoleRevokePermissionResponse'(Rest,
							       0, Z2, F@_1,
							       TrUserData).

'skip_32_Etcd.AuthRoleRevokePermissionResponse'(<<_:32,
						  Rest/binary>>,
						Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleRevokePermissionResponse'(Rest,
							       Z1, Z2, F@_1,
							       TrUserData).

'skip_64_Etcd.AuthRoleRevokePermissionResponse'(<<_:64,
						  Rest/binary>>,
						Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.AuthRoleRevokePermissionResponse'(Rest,
							       Z1, Z2, F@_1,
							       TrUserData).

'decode_msg_Etcd.HealthCheckRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.HealthCheckRequest'(Bin, 0, 0,
						 id(<<>>, TrUserData),
						 TrUserData).

'dfp_read_field_def_Etcd.HealthCheckRequest'(<<10,
					       Rest/binary>>,
					     Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.HealthCheckRequest_service'(Rest, Z1, Z2,
					      F@_1, TrUserData);
'dfp_read_field_def_Etcd.HealthCheckRequest'(<<>>, 0, 0,
					     F@_1, _) ->
    #{service => F@_1};
'dfp_read_field_def_Etcd.HealthCheckRequest'(Other, Z1,
					     Z2, F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.HealthCheckRequest'(Other, Z1,
						Z2, F@_1, TrUserData).

'dg_read_field_def_Etcd.HealthCheckRequest'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.HealthCheckRequest'(Rest, N + 7,
						X bsl N + Acc, F@_1,
						TrUserData);
'dg_read_field_def_Etcd.HealthCheckRequest'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.HealthCheckRequest_service'(Rest, 0, 0,
						    F@_1, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.HealthCheckRequest'(Rest, 0, 0, F@_1,
						      TrUserData);
	    1 ->
		'skip_64_Etcd.HealthCheckRequest'(Rest, 0, 0, F@_1,
						  TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.HealthCheckRequest'(Rest, 0,
								0, F@_1,
								TrUserData);
	    3 ->
		'skip_group_Etcd.HealthCheckRequest'(Rest, Key bsr 3, 0,
						     F@_1, TrUserData);
	    5 ->
		'skip_32_Etcd.HealthCheckRequest'(Rest, 0, 0, F@_1,
						  TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.HealthCheckRequest'(<<>>, 0, 0,
					    F@_1, _) ->
    #{service => F@_1}.

'd_field_Etcd.HealthCheckRequest_service'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.HealthCheckRequest_service'(Rest, N + 7,
					      X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.HealthCheckRequest_service'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, _, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.HealthCheckRequest'(RestF, 0,
						 0, NewFValue, TrUserData).

'skip_varint_Etcd.HealthCheckRequest'(<<1:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.HealthCheckRequest'(Rest, Z1, Z2,
					  F@_1, TrUserData);
'skip_varint_Etcd.HealthCheckRequest'(<<0:1, _:7,
					Rest/binary>>,
				      Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.HealthCheckRequest'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'skip_length_delimited_Etcd.HealthCheckRequest'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.HealthCheckRequest'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    TrUserData);
'skip_length_delimited_Etcd.HealthCheckRequest'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.HealthCheckRequest'(Rest2, 0,
						 0, F@_1, TrUserData).

'skip_group_Etcd.HealthCheckRequest'(Bin, FNum, Z2,
				     F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.HealthCheckRequest'(Rest, 0,
						 Z2, F@_1, TrUserData).

'skip_32_Etcd.HealthCheckRequest'(<<_:32, Rest/binary>>,
				  Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.HealthCheckRequest'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'skip_64_Etcd.HealthCheckRequest'(<<_:64, Rest/binary>>,
				  Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.HealthCheckRequest'(Rest, Z1,
						 Z2, F@_1, TrUserData).

'decode_msg_Etcd.HealthCheckResponse'(Bin,
				      TrUserData) ->
    'dfp_read_field_def_Etcd.HealthCheckResponse'(Bin, 0, 0,
						  id('UNKNOWN', TrUserData),
						  TrUserData).

'dfp_read_field_def_Etcd.HealthCheckResponse'(<<8,
						Rest/binary>>,
					      Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.HealthCheckResponse_status'(Rest, Z1, Z2,
					      F@_1, TrUserData);
'dfp_read_field_def_Etcd.HealthCheckResponse'(<<>>, 0,
					      0, F@_1, _) ->
    #{status => F@_1};
'dfp_read_field_def_Etcd.HealthCheckResponse'(Other, Z1,
					      Z2, F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.HealthCheckResponse'(Other, Z1,
						 Z2, F@_1, TrUserData).

'dg_read_field_def_Etcd.HealthCheckResponse'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.HealthCheckResponse'(Rest,
						 N + 7, X bsl N + Acc, F@_1,
						 TrUserData);
'dg_read_field_def_Etcd.HealthCheckResponse'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_Etcd.HealthCheckResponse_status'(Rest, 0, 0,
						    F@_1, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.HealthCheckResponse'(Rest, 0, 0, F@_1,
						       TrUserData);
	    1 ->
		'skip_64_Etcd.HealthCheckResponse'(Rest, 0, 0, F@_1,
						   TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.HealthCheckResponse'(Rest,
								 0, 0, F@_1,
								 TrUserData);
	    3 ->
		'skip_group_Etcd.HealthCheckResponse'(Rest, Key bsr 3,
						      0, F@_1, TrUserData);
	    5 ->
		'skip_32_Etcd.HealthCheckResponse'(Rest, 0, 0, F@_1,
						   TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.HealthCheckResponse'(<<>>, 0, 0,
					     F@_1, _) ->
    #{status => F@_1}.

'd_field_Etcd.HealthCheckResponse_status'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.HealthCheckResponse_status'(Rest, N + 7,
					      X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.HealthCheckResponse_status'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, _, TrUserData) ->
    {NewFValue, RestF} =
	{id('d_enum_Etcd.HealthCheckResponse.ServingStatus'(begin
							      <<Res:32/signed-native>> =
								  <<(X bsl N +
								       Acc):32/unsigned-native>>,
							      id(Res,
								 TrUserData)
							    end),
	    TrUserData),
	 Rest},
    'dfp_read_field_def_Etcd.HealthCheckResponse'(RestF, 0,
						  0, NewFValue, TrUserData).

'skip_varint_Etcd.HealthCheckResponse'(<<1:1, _:7,
					 Rest/binary>>,
				       Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.HealthCheckResponse'(Rest, Z1, Z2,
					   F@_1, TrUserData);
'skip_varint_Etcd.HealthCheckResponse'(<<0:1, _:7,
					 Rest/binary>>,
				       Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.HealthCheckResponse'(Rest, Z1,
						  Z2, F@_1, TrUserData).

'skip_length_delimited_Etcd.HealthCheckResponse'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.HealthCheckResponse'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     TrUserData);
'skip_length_delimited_Etcd.HealthCheckResponse'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.HealthCheckResponse'(Rest2, 0,
						  0, F@_1, TrUserData).

'skip_group_Etcd.HealthCheckResponse'(Bin, FNum, Z2,
				      F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.HealthCheckResponse'(Rest, 0,
						  Z2, F@_1, TrUserData).

'skip_32_Etcd.HealthCheckResponse'(<<_:32,
				     Rest/binary>>,
				   Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.HealthCheckResponse'(Rest, Z1,
						  Z2, F@_1, TrUserData).

'skip_64_Etcd.HealthCheckResponse'(<<_:64,
				     Rest/binary>>,
				   Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.HealthCheckResponse'(Rest, Z1,
						  Z2, F@_1, TrUserData).

'decode_msg_Etcd.LockRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.LockRequest'(Bin, 0, 0,
					  id(<<>>, TrUserData),
					  id(0, TrUserData), TrUserData).

'dfp_read_field_def_Etcd.LockRequest'(<<10,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.LockRequest_name'(Rest, Z1, Z2, F@_1,
				    F@_2, TrUserData);
'dfp_read_field_def_Etcd.LockRequest'(<<16,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.LockRequest_lease'(Rest, Z1, Z2, F@_1,
				     F@_2, TrUserData);
'dfp_read_field_def_Etcd.LockRequest'(<<>>, 0, 0, F@_1,
				      F@_2, _) ->
    #{name => F@_1, lease => F@_2};
'dfp_read_field_def_Etcd.LockRequest'(Other, Z1, Z2,
				      F@_1, F@_2, TrUserData) ->
    'dg_read_field_def_Etcd.LockRequest'(Other, Z1, Z2,
					 F@_1, F@_2, TrUserData).

'dg_read_field_def_Etcd.LockRequest'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.LockRequest'(Rest, N + 7,
					 X bsl N + Acc, F@_1, F@_2, TrUserData);
'dg_read_field_def_Etcd.LockRequest'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.LockRequest_name'(Rest, 0, 0, F@_1, F@_2,
					  TrUserData);
      16 ->
	  'd_field_Etcd.LockRequest_lease'(Rest, 0, 0, F@_1, F@_2,
					   TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.LockRequest'(Rest, 0, 0, F@_1, F@_2,
					       TrUserData);
	    1 ->
		'skip_64_Etcd.LockRequest'(Rest, 0, 0, F@_1, F@_2,
					   TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.LockRequest'(Rest, 0, 0,
							 F@_1, F@_2,
							 TrUserData);
	    3 ->
		'skip_group_Etcd.LockRequest'(Rest, Key bsr 3, 0, F@_1,
					      F@_2, TrUserData);
	    5 ->
		'skip_32_Etcd.LockRequest'(Rest, 0, 0, F@_1, F@_2,
					   TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.LockRequest'(<<>>, 0, 0, F@_1,
				     F@_2, _) ->
    #{name => F@_1, lease => F@_2}.

'd_field_Etcd.LockRequest_name'(<<1:1, X:7,
				  Rest/binary>>,
				N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LockRequest_name'(Rest, N + 7,
				    X bsl N + Acc, F@_1, F@_2, TrUserData);
'd_field_Etcd.LockRequest_name'(<<0:1, X:7,
				  Rest/binary>>,
				N, Acc, _, F@_2, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.LockRequest'(RestF, 0, 0,
					  NewFValue, F@_2, TrUserData).

'd_field_Etcd.LockRequest_lease'(<<1:1, X:7,
				   Rest/binary>>,
				 N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LockRequest_lease'(Rest, N + 7,
				     X bsl N + Acc, F@_1, F@_2, TrUserData);
'd_field_Etcd.LockRequest_lease'(<<0:1, X:7,
				   Rest/binary>>,
				 N, Acc, F@_1, _, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.LockRequest'(RestF, 0, 0, F@_1,
					  NewFValue, TrUserData).

'skip_varint_Etcd.LockRequest'(<<1:1, _:7,
				 Rest/binary>>,
			       Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_Etcd.LockRequest'(Rest, Z1, Z2, F@_1, F@_2,
				   TrUserData);
'skip_varint_Etcd.LockRequest'(<<0:1, _:7,
				 Rest/binary>>,
			       Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.LockRequest'(Rest, Z1, Z2,
					  F@_1, F@_2, TrUserData).

'skip_length_delimited_Etcd.LockRequest'(<<1:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.LockRequest'(Rest, N + 7,
					     X bsl N + Acc, F@_1, F@_2,
					     TrUserData);
'skip_length_delimited_Etcd.LockRequest'(<<0:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, F@_2, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.LockRequest'(Rest2, 0, 0, F@_1,
					  F@_2, TrUserData).

'skip_group_Etcd.LockRequest'(Bin, FNum, Z2, F@_1, F@_2,
			      TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.LockRequest'(Rest, 0, Z2, F@_1,
					  F@_2, TrUserData).

'skip_32_Etcd.LockRequest'(<<_:32, Rest/binary>>, Z1,
			   Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.LockRequest'(Rest, Z1, Z2,
					  F@_1, F@_2, TrUserData).

'skip_64_Etcd.LockRequest'(<<_:64, Rest/binary>>, Z1,
			   Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.LockRequest'(Rest, Z1, Z2,
					  F@_1, F@_2, TrUserData).

'decode_msg_Etcd.LockResponse'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.LockResponse'(Bin, 0, 0,
					   id('$undef', TrUserData),
					   id(<<>>, TrUserData), TrUserData).

'dfp_read_field_def_Etcd.LockResponse'(<<10,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.LockResponse_header'(Rest, Z1, Z2, F@_1,
				       F@_2, TrUserData);
'dfp_read_field_def_Etcd.LockResponse'(<<18,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.LockResponse_key'(Rest, Z1, Z2, F@_1,
				    F@_2, TrUserData);
'dfp_read_field_def_Etcd.LockResponse'(<<>>, 0, 0, F@_1,
				       F@_2, _) ->
    S1 = #{key => F@_2},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.LockResponse'(Other, Z1, Z2,
				       F@_1, F@_2, TrUserData) ->
    'dg_read_field_def_Etcd.LockResponse'(Other, Z1, Z2,
					  F@_1, F@_2, TrUserData).

'dg_read_field_def_Etcd.LockResponse'(<<1:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, F@_2, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.LockResponse'(Rest, N + 7,
					  X bsl N + Acc, F@_1, F@_2,
					  TrUserData);
'dg_read_field_def_Etcd.LockResponse'(<<0:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, F@_2, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.LockResponse_header'(Rest, 0, 0, F@_1,
					     F@_2, TrUserData);
      18 ->
	  'd_field_Etcd.LockResponse_key'(Rest, 0, 0, F@_1, F@_2,
					  TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.LockResponse'(Rest, 0, 0, F@_1, F@_2,
						TrUserData);
	    1 ->
		'skip_64_Etcd.LockResponse'(Rest, 0, 0, F@_1, F@_2,
					    TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.LockResponse'(Rest, 0, 0,
							  F@_1, F@_2,
							  TrUserData);
	    3 ->
		'skip_group_Etcd.LockResponse'(Rest, Key bsr 3, 0, F@_1,
					       F@_2, TrUserData);
	    5 ->
		'skip_32_Etcd.LockResponse'(Rest, 0, 0, F@_1, F@_2,
					    TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.LockResponse'(<<>>, 0, 0, F@_1,
				      F@_2, _) ->
    S1 = #{key => F@_2},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.LockResponse_header'(<<1:1, X:7,
				     Rest/binary>>,
				   N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LockResponse_header'(Rest, N + 7,
				       X bsl N + Acc, F@_1, F@_2, TrUserData);
'd_field_Etcd.LockResponse_header'(<<0:1, X:7,
				     Rest/binary>>,
				   N, Acc, Prev, F@_2, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.LockResponse'(RestF, 0, 0,
					   if Prev == '$undef' -> NewFValue;
					      true ->
						  'merge_msg_Etcd.ResponseHeader'(Prev,
										  NewFValue,
										  TrUserData)
					   end,
					   F@_2, TrUserData).

'd_field_Etcd.LockResponse_key'(<<1:1, X:7,
				  Rest/binary>>,
				N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LockResponse_key'(Rest, N + 7,
				    X bsl N + Acc, F@_1, F@_2, TrUserData);
'd_field_Etcd.LockResponse_key'(<<0:1, X:7,
				  Rest/binary>>,
				N, Acc, F@_1, _, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.LockResponse'(RestF, 0, 0,
					   F@_1, NewFValue, TrUserData).

'skip_varint_Etcd.LockResponse'(<<1:1, _:7,
				  Rest/binary>>,
				Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_Etcd.LockResponse'(Rest, Z1, Z2, F@_1,
				    F@_2, TrUserData);
'skip_varint_Etcd.LockResponse'(<<0:1, _:7,
				  Rest/binary>>,
				Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.LockResponse'(Rest, Z1, Z2,
					   F@_1, F@_2, TrUserData).

'skip_length_delimited_Etcd.LockResponse'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.LockResponse'(Rest, N + 7,
					      X bsl N + Acc, F@_1, F@_2,
					      TrUserData);
'skip_length_delimited_Etcd.LockResponse'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.LockResponse'(Rest2, 0, 0,
					   F@_1, F@_2, TrUserData).

'skip_group_Etcd.LockResponse'(Bin, FNum, Z2, F@_1,
			       F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.LockResponse'(Rest, 0, Z2,
					   F@_1, F@_2, TrUserData).

'skip_32_Etcd.LockResponse'(<<_:32, Rest/binary>>, Z1,
			    Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.LockResponse'(Rest, Z1, Z2,
					   F@_1, F@_2, TrUserData).

'skip_64_Etcd.LockResponse'(<<_:64, Rest/binary>>, Z1,
			    Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.LockResponse'(Rest, Z1, Z2,
					   F@_1, F@_2, TrUserData).

'decode_msg_Etcd.UnlockRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.UnlockRequest'(Bin, 0, 0,
					    id(<<>>, TrUserData), TrUserData).

'dfp_read_field_def_Etcd.UnlockRequest'(<<10,
					  Rest/binary>>,
					Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.UnlockRequest_key'(Rest, Z1, Z2, F@_1,
				     TrUserData);
'dfp_read_field_def_Etcd.UnlockRequest'(<<>>, 0, 0,
					F@_1, _) ->
    #{key => F@_1};
'dfp_read_field_def_Etcd.UnlockRequest'(Other, Z1, Z2,
					F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.UnlockRequest'(Other, Z1, Z2,
					   F@_1, TrUserData).

'dg_read_field_def_Etcd.UnlockRequest'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.UnlockRequest'(Rest, N + 7,
					   X bsl N + Acc, F@_1, TrUserData);
'dg_read_field_def_Etcd.UnlockRequest'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.UnlockRequest_key'(Rest, 0, 0, F@_1,
					   TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.UnlockRequest'(Rest, 0, 0, F@_1,
						 TrUserData);
	    1 ->
		'skip_64_Etcd.UnlockRequest'(Rest, 0, 0, F@_1,
					     TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.UnlockRequest'(Rest, 0, 0,
							   F@_1, TrUserData);
	    3 ->
		'skip_group_Etcd.UnlockRequest'(Rest, Key bsr 3, 0,
						F@_1, TrUserData);
	    5 ->
		'skip_32_Etcd.UnlockRequest'(Rest, 0, 0, F@_1,
					     TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.UnlockRequest'(<<>>, 0, 0, F@_1,
				       _) ->
    #{key => F@_1}.

'd_field_Etcd.UnlockRequest_key'(<<1:1, X:7,
				   Rest/binary>>,
				 N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.UnlockRequest_key'(Rest, N + 7,
				     X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.UnlockRequest_key'(<<0:1, X:7,
				   Rest/binary>>,
				 N, Acc, _, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.UnlockRequest'(RestF, 0, 0,
					    NewFValue, TrUserData).

'skip_varint_Etcd.UnlockRequest'(<<1:1, _:7,
				   Rest/binary>>,
				 Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.UnlockRequest'(Rest, Z1, Z2, F@_1,
				     TrUserData);
'skip_varint_Etcd.UnlockRequest'(<<0:1, _:7,
				   Rest/binary>>,
				 Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.UnlockRequest'(Rest, Z1, Z2,
					    F@_1, TrUserData).

'skip_length_delimited_Etcd.UnlockRequest'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.UnlockRequest'(Rest, N + 7,
					       X bsl N + Acc, F@_1, TrUserData);
'skip_length_delimited_Etcd.UnlockRequest'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.UnlockRequest'(Rest2, 0, 0,
					    F@_1, TrUserData).

'skip_group_Etcd.UnlockRequest'(Bin, FNum, Z2, F@_1,
				TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.UnlockRequest'(Rest, 0, Z2,
					    F@_1, TrUserData).

'skip_32_Etcd.UnlockRequest'(<<_:32, Rest/binary>>, Z1,
			     Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.UnlockRequest'(Rest, Z1, Z2,
					    F@_1, TrUserData).

'skip_64_Etcd.UnlockRequest'(<<_:64, Rest/binary>>, Z1,
			     Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.UnlockRequest'(Rest, Z1, Z2,
					    F@_1, TrUserData).

'decode_msg_Etcd.UnlockResponse'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.UnlockResponse'(Bin, 0, 0,
					     id('$undef', TrUserData),
					     TrUserData).

'dfp_read_field_def_Etcd.UnlockResponse'(<<10,
					   Rest/binary>>,
					 Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.UnlockResponse_header'(Rest, Z1, Z2, F@_1,
					 TrUserData);
'dfp_read_field_def_Etcd.UnlockResponse'(<<>>, 0, 0,
					 F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.UnlockResponse'(Other, Z1, Z2,
					 F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.UnlockResponse'(Other, Z1, Z2,
					    F@_1, TrUserData).

'dg_read_field_def_Etcd.UnlockResponse'(<<1:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.UnlockResponse'(Rest, N + 7,
					    X bsl N + Acc, F@_1, TrUserData);
'dg_read_field_def_Etcd.UnlockResponse'(<<0:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.UnlockResponse_header'(Rest, 0, 0, F@_1,
					       TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.UnlockResponse'(Rest, 0, 0, F@_1,
						  TrUserData);
	    1 ->
		'skip_64_Etcd.UnlockResponse'(Rest, 0, 0, F@_1,
					      TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.UnlockResponse'(Rest, 0, 0,
							    F@_1, TrUserData);
	    3 ->
		'skip_group_Etcd.UnlockResponse'(Rest, Key bsr 3, 0,
						 F@_1, TrUserData);
	    5 ->
		'skip_32_Etcd.UnlockResponse'(Rest, 0, 0, F@_1,
					      TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.UnlockResponse'(<<>>, 0, 0,
					F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.UnlockResponse_header'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.UnlockResponse_header'(Rest, N + 7,
					 X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.UnlockResponse_header'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.UnlockResponse'(RestF, 0, 0,
					     if Prev == '$undef' -> NewFValue;
						true ->
						    'merge_msg_Etcd.ResponseHeader'(Prev,
										    NewFValue,
										    TrUserData)
					     end,
					     TrUserData).

'skip_varint_Etcd.UnlockResponse'(<<1:1, _:7,
				    Rest/binary>>,
				  Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.UnlockResponse'(Rest, Z1, Z2, F@_1,
				      TrUserData);
'skip_varint_Etcd.UnlockResponse'(<<0:1, _:7,
				    Rest/binary>>,
				  Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.UnlockResponse'(Rest, Z1, Z2,
					     F@_1, TrUserData).

'skip_length_delimited_Etcd.UnlockResponse'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.UnlockResponse'(Rest, N + 7,
						X bsl N + Acc, F@_1,
						TrUserData);
'skip_length_delimited_Etcd.UnlockResponse'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.UnlockResponse'(Rest2, 0, 0,
					     F@_1, TrUserData).

'skip_group_Etcd.UnlockResponse'(Bin, FNum, Z2, F@_1,
				 TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.UnlockResponse'(Rest, 0, Z2,
					     F@_1, TrUserData).

'skip_32_Etcd.UnlockResponse'(<<_:32, Rest/binary>>, Z1,
			      Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.UnlockResponse'(Rest, Z1, Z2,
					     F@_1, TrUserData).

'skip_64_Etcd.UnlockResponse'(<<_:64, Rest/binary>>, Z1,
			      Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.UnlockResponse'(Rest, Z1, Z2,
					     F@_1, TrUserData).

'decode_msg_Etcd.CampaignRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.CampaignRequest'(Bin, 0, 0,
					      id(<<>>, TrUserData),
					      id(0, TrUserData),
					      id(<<>>, TrUserData), TrUserData).

'dfp_read_field_def_Etcd.CampaignRequest'(<<10,
					    Rest/binary>>,
					  Z1, Z2, F@_1, F@_2, F@_3,
					  TrUserData) ->
    'd_field_Etcd.CampaignRequest_name'(Rest, Z1, Z2, F@_1,
					F@_2, F@_3, TrUserData);
'dfp_read_field_def_Etcd.CampaignRequest'(<<16,
					    Rest/binary>>,
					  Z1, Z2, F@_1, F@_2, F@_3,
					  TrUserData) ->
    'd_field_Etcd.CampaignRequest_lease'(Rest, Z1, Z2, F@_1,
					 F@_2, F@_3, TrUserData);
'dfp_read_field_def_Etcd.CampaignRequest'(<<26,
					    Rest/binary>>,
					  Z1, Z2, F@_1, F@_2, F@_3,
					  TrUserData) ->
    'd_field_Etcd.CampaignRequest_value'(Rest, Z1, Z2, F@_1,
					 F@_2, F@_3, TrUserData);
'dfp_read_field_def_Etcd.CampaignRequest'(<<>>, 0, 0,
					  F@_1, F@_2, F@_3, _) ->
    #{name => F@_1, lease => F@_2, value => F@_3};
'dfp_read_field_def_Etcd.CampaignRequest'(Other, Z1, Z2,
					  F@_1, F@_2, F@_3, TrUserData) ->
    'dg_read_field_def_Etcd.CampaignRequest'(Other, Z1, Z2,
					     F@_1, F@_2, F@_3, TrUserData).

'dg_read_field_def_Etcd.CampaignRequest'(<<1:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.CampaignRequest'(Rest, N + 7,
					     X bsl N + Acc, F@_1, F@_2, F@_3,
					     TrUserData);
'dg_read_field_def_Etcd.CampaignRequest'(<<0:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, F@_2, F@_3,
					 TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.CampaignRequest_name'(Rest, 0, 0, F@_1,
					      F@_2, F@_3, TrUserData);
      16 ->
	  'd_field_Etcd.CampaignRequest_lease'(Rest, 0, 0, F@_1,
					       F@_2, F@_3, TrUserData);
      26 ->
	  'd_field_Etcd.CampaignRequest_value'(Rest, 0, 0, F@_1,
					       F@_2, F@_3, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.CampaignRequest'(Rest, 0, 0, F@_1,
						   F@_2, F@_3, TrUserData);
	    1 ->
		'skip_64_Etcd.CampaignRequest'(Rest, 0, 0, F@_1, F@_2,
					       F@_3, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.CampaignRequest'(Rest, 0, 0,
							     F@_1, F@_2, F@_3,
							     TrUserData);
	    3 ->
		'skip_group_Etcd.CampaignRequest'(Rest, Key bsr 3, 0,
						  F@_1, F@_2, F@_3, TrUserData);
	    5 ->
		'skip_32_Etcd.CampaignRequest'(Rest, 0, 0, F@_1, F@_2,
					       F@_3, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.CampaignRequest'(<<>>, 0, 0,
					 F@_1, F@_2, F@_3, _) ->
    #{name => F@_1, lease => F@_2, value => F@_3}.

'd_field_Etcd.CampaignRequest_name'(<<1:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_Etcd.CampaignRequest_name'(Rest, N + 7,
					X bsl N + Acc, F@_1, F@_2, F@_3,
					TrUserData);
'd_field_Etcd.CampaignRequest_name'(<<0:1, X:7,
				      Rest/binary>>,
				    N, Acc, _, F@_2, F@_3, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.CampaignRequest'(RestF, 0, 0,
					      NewFValue, F@_2, F@_3,
					      TrUserData).

'd_field_Etcd.CampaignRequest_lease'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_Etcd.CampaignRequest_lease'(Rest, N + 7,
					 X bsl N + Acc, F@_1, F@_2, F@_3,
					 TrUserData);
'd_field_Etcd.CampaignRequest_lease'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, _, F@_3, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.CampaignRequest'(RestF, 0, 0,
					      F@_1, NewFValue, F@_3,
					      TrUserData).

'd_field_Etcd.CampaignRequest_value'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_Etcd.CampaignRequest_value'(Rest, N + 7,
					 X bsl N + Acc, F@_1, F@_2, F@_3,
					 TrUserData);
'd_field_Etcd.CampaignRequest_value'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, _, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.CampaignRequest'(RestF, 0, 0,
					      F@_1, F@_2, NewFValue,
					      TrUserData).

'skip_varint_Etcd.CampaignRequest'(<<1:1, _:7,
				     Rest/binary>>,
				   Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'skip_varint_Etcd.CampaignRequest'(Rest, Z1, Z2, F@_1,
				       F@_2, F@_3, TrUserData);
'skip_varint_Etcd.CampaignRequest'(<<0:1, _:7,
				     Rest/binary>>,
				   Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.CampaignRequest'(Rest, Z1, Z2,
					      F@_1, F@_2, F@_3, TrUserData).

'skip_length_delimited_Etcd.CampaignRequest'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, F@_3,
					     TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.CampaignRequest'(Rest,
						 N + 7, X bsl N + Acc, F@_1,
						 F@_2, F@_3, TrUserData);
'skip_length_delimited_Etcd.CampaignRequest'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, F@_3,
					     TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.CampaignRequest'(Rest2, 0, 0,
					      F@_1, F@_2, F@_3, TrUserData).

'skip_group_Etcd.CampaignRequest'(Bin, FNum, Z2, F@_1,
				  F@_2, F@_3, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.CampaignRequest'(Rest, 0, Z2,
					      F@_1, F@_2, F@_3, TrUserData).

'skip_32_Etcd.CampaignRequest'(<<_:32, Rest/binary>>,
			       Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.CampaignRequest'(Rest, Z1, Z2,
					      F@_1, F@_2, F@_3, TrUserData).

'skip_64_Etcd.CampaignRequest'(<<_:64, Rest/binary>>,
			       Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_Etcd.CampaignRequest'(Rest, Z1, Z2,
					      F@_1, F@_2, F@_3, TrUserData).

'decode_msg_Etcd.CampaignResponse'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.CampaignResponse'(Bin, 0, 0,
					       id('$undef', TrUserData),
					       id('$undef', TrUserData),
					       TrUserData).

'dfp_read_field_def_Etcd.CampaignResponse'(<<10,
					     Rest/binary>>,
					   Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.CampaignResponse_header'(Rest, Z1, Z2,
					   F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.CampaignResponse'(<<18,
					     Rest/binary>>,
					   Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.CampaignResponse_leader'(Rest, Z1, Z2,
					   F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.CampaignResponse'(<<>>, 0, 0,
					   F@_1, F@_2, _) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    if F@_2 == '$undef' -> S2;
       true -> S2#{leader => F@_2}
    end;
'dfp_read_field_def_Etcd.CampaignResponse'(Other, Z1,
					   Z2, F@_1, F@_2, TrUserData) ->
    'dg_read_field_def_Etcd.CampaignResponse'(Other, Z1, Z2,
					      F@_1, F@_2, TrUserData).

'dg_read_field_def_Etcd.CampaignResponse'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.CampaignResponse'(Rest, N + 7,
					      X bsl N + Acc, F@_1, F@_2,
					      TrUserData);
'dg_read_field_def_Etcd.CampaignResponse'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.CampaignResponse_header'(Rest, 0, 0, F@_1,
						 F@_2, TrUserData);
      18 ->
	  'd_field_Etcd.CampaignResponse_leader'(Rest, 0, 0, F@_1,
						 F@_2, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.CampaignResponse'(Rest, 0, 0, F@_1,
						    F@_2, TrUserData);
	    1 ->
		'skip_64_Etcd.CampaignResponse'(Rest, 0, 0, F@_1, F@_2,
						TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.CampaignResponse'(Rest, 0,
							      0, F@_1, F@_2,
							      TrUserData);
	    3 ->
		'skip_group_Etcd.CampaignResponse'(Rest, Key bsr 3, 0,
						   F@_1, F@_2, TrUserData);
	    5 ->
		'skip_32_Etcd.CampaignResponse'(Rest, 0, 0, F@_1, F@_2,
						TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.CampaignResponse'(<<>>, 0, 0,
					  F@_1, F@_2, _) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    if F@_2 == '$undef' -> S2;
       true -> S2#{leader => F@_2}
    end.

'd_field_Etcd.CampaignResponse_header'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.CampaignResponse_header'(Rest, N + 7,
					   X bsl N + Acc, F@_1, F@_2,
					   TrUserData);
'd_field_Etcd.CampaignResponse_header'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, Prev, F@_2, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.CampaignResponse'(RestF, 0, 0,
					       if Prev == '$undef' -> NewFValue;
						  true ->
						      'merge_msg_Etcd.ResponseHeader'(Prev,
										      NewFValue,
										      TrUserData)
					       end,
					       F@_2, TrUserData).

'd_field_Etcd.CampaignResponse_leader'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.CampaignResponse_leader'(Rest, N + 7,
					   X bsl N + Acc, F@_1, F@_2,
					   TrUserData);
'd_field_Etcd.CampaignResponse_leader'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.LeaderKey'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.CampaignResponse'(RestF, 0, 0,
					       F@_1,
					       if Prev == '$undef' -> NewFValue;
						  true ->
						      'merge_msg_Etcd.LeaderKey'(Prev,
										 NewFValue,
										 TrUserData)
					       end,
					       TrUserData).

'skip_varint_Etcd.CampaignResponse'(<<1:1, _:7,
				      Rest/binary>>,
				    Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_Etcd.CampaignResponse'(Rest, Z1, Z2, F@_1,
					F@_2, TrUserData);
'skip_varint_Etcd.CampaignResponse'(<<0:1, _:7,
				      Rest/binary>>,
				    Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.CampaignResponse'(Rest, Z1, Z2,
					       F@_1, F@_2, TrUserData).

'skip_length_delimited_Etcd.CampaignResponse'(<<1:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.CampaignResponse'(Rest,
						  N + 7, X bsl N + Acc, F@_1,
						  F@_2, TrUserData);
'skip_length_delimited_Etcd.CampaignResponse'(<<0:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.CampaignResponse'(Rest2, 0, 0,
					       F@_1, F@_2, TrUserData).

'skip_group_Etcd.CampaignResponse'(Bin, FNum, Z2, F@_1,
				   F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.CampaignResponse'(Rest, 0, Z2,
					       F@_1, F@_2, TrUserData).

'skip_32_Etcd.CampaignResponse'(<<_:32, Rest/binary>>,
				Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.CampaignResponse'(Rest, Z1, Z2,
					       F@_1, F@_2, TrUserData).

'skip_64_Etcd.CampaignResponse'(<<_:64, Rest/binary>>,
				Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.CampaignResponse'(Rest, Z1, Z2,
					       F@_1, F@_2, TrUserData).

'decode_msg_Etcd.LeaderKey'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaderKey'(Bin, 0, 0,
					id(<<>>, TrUserData),
					id(<<>>, TrUserData), id(0, TrUserData),
					id(0, TrUserData), TrUserData).

'dfp_read_field_def_Etcd.LeaderKey'(<<10, Rest/binary>>,
				    Z1, Z2, F@_1, F@_2, F@_3, F@_4,
				    TrUserData) ->
    'd_field_Etcd.LeaderKey_name'(Rest, Z1, Z2, F@_1, F@_2,
				  F@_3, F@_4, TrUserData);
'dfp_read_field_def_Etcd.LeaderKey'(<<18, Rest/binary>>,
				    Z1, Z2, F@_1, F@_2, F@_3, F@_4,
				    TrUserData) ->
    'd_field_Etcd.LeaderKey_key'(Rest, Z1, Z2, F@_1, F@_2,
				 F@_3, F@_4, TrUserData);
'dfp_read_field_def_Etcd.LeaderKey'(<<24, Rest/binary>>,
				    Z1, Z2, F@_1, F@_2, F@_3, F@_4,
				    TrUserData) ->
    'd_field_Etcd.LeaderKey_rev'(Rest, Z1, Z2, F@_1, F@_2,
				 F@_3, F@_4, TrUserData);
'dfp_read_field_def_Etcd.LeaderKey'(<<32, Rest/binary>>,
				    Z1, Z2, F@_1, F@_2, F@_3, F@_4,
				    TrUserData) ->
    'd_field_Etcd.LeaderKey_lease'(Rest, Z1, Z2, F@_1, F@_2,
				   F@_3, F@_4, TrUserData);
'dfp_read_field_def_Etcd.LeaderKey'(<<>>, 0, 0, F@_1,
				    F@_2, F@_3, F@_4, _) ->
    #{name => F@_1, key => F@_2, rev => F@_3,
      lease => F@_4};
'dfp_read_field_def_Etcd.LeaderKey'(Other, Z1, Z2, F@_1,
				    F@_2, F@_3, F@_4, TrUserData) ->
    'dg_read_field_def_Etcd.LeaderKey'(Other, Z1, Z2, F@_1,
				       F@_2, F@_3, F@_4, TrUserData).

'dg_read_field_def_Etcd.LeaderKey'(<<1:1, X:7,
				     Rest/binary>>,
				   N, Acc, F@_1, F@_2, F@_3, F@_4, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.LeaderKey'(Rest, N + 7,
				       X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
				       TrUserData);
'dg_read_field_def_Etcd.LeaderKey'(<<0:1, X:7,
				     Rest/binary>>,
				   N, Acc, F@_1, F@_2, F@_3, F@_4,
				   TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.LeaderKey_name'(Rest, 0, 0, F@_1, F@_2,
					F@_3, F@_4, TrUserData);
      18 ->
	  'd_field_Etcd.LeaderKey_key'(Rest, 0, 0, F@_1, F@_2,
				       F@_3, F@_4, TrUserData);
      24 ->
	  'd_field_Etcd.LeaderKey_rev'(Rest, 0, 0, F@_1, F@_2,
				       F@_3, F@_4, TrUserData);
      32 ->
	  'd_field_Etcd.LeaderKey_lease'(Rest, 0, 0, F@_1, F@_2,
					 F@_3, F@_4, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.LeaderKey'(Rest, 0, 0, F@_1, F@_2,
					     F@_3, F@_4, TrUserData);
	    1 ->
		'skip_64_Etcd.LeaderKey'(Rest, 0, 0, F@_1, F@_2, F@_3,
					 F@_4, TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.LeaderKey'(Rest, 0, 0, F@_1,
						       F@_2, F@_3, F@_4,
						       TrUserData);
	    3 ->
		'skip_group_Etcd.LeaderKey'(Rest, Key bsr 3, 0, F@_1,
					    F@_2, F@_3, F@_4, TrUserData);
	    5 ->
		'skip_32_Etcd.LeaderKey'(Rest, 0, 0, F@_1, F@_2, F@_3,
					 F@_4, TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.LeaderKey'(<<>>, 0, 0, F@_1,
				   F@_2, F@_3, F@_4, _) ->
    #{name => F@_1, key => F@_2, rev => F@_3,
      lease => F@_4}.

'd_field_Etcd.LeaderKey_name'(<<1:1, X:7, Rest/binary>>,
			      N, Acc, F@_1, F@_2, F@_3, F@_4, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaderKey_name'(Rest, N + 7,
				  X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
				  TrUserData);
'd_field_Etcd.LeaderKey_name'(<<0:1, X:7, Rest/binary>>,
			      N, Acc, _, F@_2, F@_3, F@_4, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.LeaderKey'(RestF, 0, 0,
					NewFValue, F@_2, F@_3, F@_4,
					TrUserData).

'd_field_Etcd.LeaderKey_key'(<<1:1, X:7, Rest/binary>>,
			     N, Acc, F@_1, F@_2, F@_3, F@_4, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaderKey_key'(Rest, N + 7, X bsl N + Acc,
				 F@_1, F@_2, F@_3, F@_4, TrUserData);
'd_field_Etcd.LeaderKey_key'(<<0:1, X:7, Rest/binary>>,
			     N, Acc, F@_1, _, F@_3, F@_4, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.LeaderKey'(RestF, 0, 0, F@_1,
					NewFValue, F@_3, F@_4, TrUserData).

'd_field_Etcd.LeaderKey_rev'(<<1:1, X:7, Rest/binary>>,
			     N, Acc, F@_1, F@_2, F@_3, F@_4, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaderKey_rev'(Rest, N + 7, X bsl N + Acc,
				 F@_1, F@_2, F@_3, F@_4, TrUserData);
'd_field_Etcd.LeaderKey_rev'(<<0:1, X:7, Rest/binary>>,
			     N, Acc, F@_1, F@_2, _, F@_4, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.LeaderKey'(RestF, 0, 0, F@_1,
					F@_2, NewFValue, F@_4, TrUserData).

'd_field_Etcd.LeaderKey_lease'(<<1:1, X:7,
				 Rest/binary>>,
			       N, Acc, F@_1, F@_2, F@_3, F@_4, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaderKey_lease'(Rest, N + 7,
				   X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
				   TrUserData);
'd_field_Etcd.LeaderKey_lease'(<<0:1, X:7,
				 Rest/binary>>,
			       N, Acc, F@_1, F@_2, F@_3, _, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_Etcd.LeaderKey'(RestF, 0, 0, F@_1,
					F@_2, F@_3, NewFValue, TrUserData).

'skip_varint_Etcd.LeaderKey'(<<1:1, _:7, Rest/binary>>,
			     Z1, Z2, F@_1, F@_2, F@_3, F@_4, TrUserData) ->
    'skip_varint_Etcd.LeaderKey'(Rest, Z1, Z2, F@_1, F@_2,
				 F@_3, F@_4, TrUserData);
'skip_varint_Etcd.LeaderKey'(<<0:1, _:7, Rest/binary>>,
			     Z1, Z2, F@_1, F@_2, F@_3, F@_4, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaderKey'(Rest, Z1, Z2, F@_1,
					F@_2, F@_3, F@_4, TrUserData).

'skip_length_delimited_Etcd.LeaderKey'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, F@_2, F@_3, F@_4,
				       TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.LeaderKey'(Rest, N + 7,
					   X bsl N + Acc, F@_1, F@_2, F@_3,
					   F@_4, TrUserData);
'skip_length_delimited_Etcd.LeaderKey'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, F@_2, F@_3, F@_4,
				       TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.LeaderKey'(Rest2, 0, 0, F@_1,
					F@_2, F@_3, F@_4, TrUserData).

'skip_group_Etcd.LeaderKey'(Bin, FNum, Z2, F@_1, F@_2,
			    F@_3, F@_4, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.LeaderKey'(Rest, 0, Z2, F@_1,
					F@_2, F@_3, F@_4, TrUserData).

'skip_32_Etcd.LeaderKey'(<<_:32, Rest/binary>>, Z1, Z2,
			 F@_1, F@_2, F@_3, F@_4, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaderKey'(Rest, Z1, Z2, F@_1,
					F@_2, F@_3, F@_4, TrUserData).

'skip_64_Etcd.LeaderKey'(<<_:64, Rest/binary>>, Z1, Z2,
			 F@_1, F@_2, F@_3, F@_4, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaderKey'(Rest, Z1, Z2, F@_1,
					F@_2, F@_3, F@_4, TrUserData).

'decode_msg_Etcd.LeaderRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaderRequest'(Bin, 0, 0,
					    id(<<>>, TrUserData), TrUserData).

'dfp_read_field_def_Etcd.LeaderRequest'(<<10,
					  Rest/binary>>,
					Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.LeaderRequest_name'(Rest, Z1, Z2, F@_1,
				      TrUserData);
'dfp_read_field_def_Etcd.LeaderRequest'(<<>>, 0, 0,
					F@_1, _) ->
    #{name => F@_1};
'dfp_read_field_def_Etcd.LeaderRequest'(Other, Z1, Z2,
					F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.LeaderRequest'(Other, Z1, Z2,
					   F@_1, TrUserData).

'dg_read_field_def_Etcd.LeaderRequest'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.LeaderRequest'(Rest, N + 7,
					   X bsl N + Acc, F@_1, TrUserData);
'dg_read_field_def_Etcd.LeaderRequest'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.LeaderRequest_name'(Rest, 0, 0, F@_1,
					    TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.LeaderRequest'(Rest, 0, 0, F@_1,
						 TrUserData);
	    1 ->
		'skip_64_Etcd.LeaderRequest'(Rest, 0, 0, F@_1,
					     TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.LeaderRequest'(Rest, 0, 0,
							   F@_1, TrUserData);
	    3 ->
		'skip_group_Etcd.LeaderRequest'(Rest, Key bsr 3, 0,
						F@_1, TrUserData);
	    5 ->
		'skip_32_Etcd.LeaderRequest'(Rest, 0, 0, F@_1,
					     TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.LeaderRequest'(<<>>, 0, 0, F@_1,
				       _) ->
    #{name => F@_1}.

'd_field_Etcd.LeaderRequest_name'(<<1:1, X:7,
				    Rest/binary>>,
				  N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaderRequest_name'(Rest, N + 7,
				      X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.LeaderRequest_name'(<<0:1, X:7,
				    Rest/binary>>,
				  N, Acc, _, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.LeaderRequest'(RestF, 0, 0,
					    NewFValue, TrUserData).

'skip_varint_Etcd.LeaderRequest'(<<1:1, _:7,
				   Rest/binary>>,
				 Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.LeaderRequest'(Rest, Z1, Z2, F@_1,
				     TrUserData);
'skip_varint_Etcd.LeaderRequest'(<<0:1, _:7,
				   Rest/binary>>,
				 Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaderRequest'(Rest, Z1, Z2,
					    F@_1, TrUserData).

'skip_length_delimited_Etcd.LeaderRequest'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.LeaderRequest'(Rest, N + 7,
					       X bsl N + Acc, F@_1, TrUserData);
'skip_length_delimited_Etcd.LeaderRequest'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.LeaderRequest'(Rest2, 0, 0,
					    F@_1, TrUserData).

'skip_group_Etcd.LeaderRequest'(Bin, FNum, Z2, F@_1,
				TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.LeaderRequest'(Rest, 0, Z2,
					    F@_1, TrUserData).

'skip_32_Etcd.LeaderRequest'(<<_:32, Rest/binary>>, Z1,
			     Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaderRequest'(Rest, Z1, Z2,
					    F@_1, TrUserData).

'skip_64_Etcd.LeaderRequest'(<<_:64, Rest/binary>>, Z1,
			     Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaderRequest'(Rest, Z1, Z2,
					    F@_1, TrUserData).

'decode_msg_Etcd.LeaderResponse'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaderResponse'(Bin, 0, 0,
					     id('$undef', TrUserData),
					     id('$undef', TrUserData),
					     TrUserData).

'dfp_read_field_def_Etcd.LeaderResponse'(<<10,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.LeaderResponse_header'(Rest, Z1, Z2, F@_1,
					 F@_2, TrUserData);
'dfp_read_field_def_Etcd.LeaderResponse'(<<18,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.LeaderResponse_kv'(Rest, Z1, Z2, F@_1,
				     F@_2, TrUserData);
'dfp_read_field_def_Etcd.LeaderResponse'(<<>>, 0, 0,
					 F@_1, F@_2, _) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    if F@_2 == '$undef' -> S2;
       true -> S2#{kv => F@_2}
    end;
'dfp_read_field_def_Etcd.LeaderResponse'(Other, Z1, Z2,
					 F@_1, F@_2, TrUserData) ->
    'dg_read_field_def_Etcd.LeaderResponse'(Other, Z1, Z2,
					    F@_1, F@_2, TrUserData).

'dg_read_field_def_Etcd.LeaderResponse'(<<1:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, F@_2, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.LeaderResponse'(Rest, N + 7,
					    X bsl N + Acc, F@_1, F@_2,
					    TrUserData);
'dg_read_field_def_Etcd.LeaderResponse'(<<0:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, F@_2, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.LeaderResponse_header'(Rest, 0, 0, F@_1,
					       F@_2, TrUserData);
      18 ->
	  'd_field_Etcd.LeaderResponse_kv'(Rest, 0, 0, F@_1, F@_2,
					   TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.LeaderResponse'(Rest, 0, 0, F@_1,
						  F@_2, TrUserData);
	    1 ->
		'skip_64_Etcd.LeaderResponse'(Rest, 0, 0, F@_1, F@_2,
					      TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.LeaderResponse'(Rest, 0, 0,
							    F@_1, F@_2,
							    TrUserData);
	    3 ->
		'skip_group_Etcd.LeaderResponse'(Rest, Key bsr 3, 0,
						 F@_1, F@_2, TrUserData);
	    5 ->
		'skip_32_Etcd.LeaderResponse'(Rest, 0, 0, F@_1, F@_2,
					      TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.LeaderResponse'(<<>>, 0, 0,
					F@_1, F@_2, _) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{header => F@_1}
	 end,
    if F@_2 == '$undef' -> S2;
       true -> S2#{kv => F@_2}
    end.

'd_field_Etcd.LeaderResponse_header'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaderResponse_header'(Rest, N + 7,
					 X bsl N + Acc, F@_1, F@_2, TrUserData);
'd_field_Etcd.LeaderResponse_header'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, Prev, F@_2, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.LeaderResponse'(RestF, 0, 0,
					     if Prev == '$undef' -> NewFValue;
						true ->
						    'merge_msg_Etcd.ResponseHeader'(Prev,
										    NewFValue,
										    TrUserData)
					     end,
					     F@_2, TrUserData).

'd_field_Etcd.LeaderResponse_kv'(<<1:1, X:7,
				   Rest/binary>>,
				 N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.LeaderResponse_kv'(Rest, N + 7,
				     X bsl N + Acc, F@_1, F@_2, TrUserData);
'd_field_Etcd.LeaderResponse_kv'(<<0:1, X:7,
				   Rest/binary>>,
				 N, Acc, F@_1, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_mvccpb.KeyValue'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.LeaderResponse'(RestF, 0, 0,
					     F@_1,
					     if Prev == '$undef' -> NewFValue;
						true ->
						    'merge_msg_mvccpb.KeyValue'(Prev,
										NewFValue,
										TrUserData)
					     end,
					     TrUserData).

'skip_varint_Etcd.LeaderResponse'(<<1:1, _:7,
				    Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_Etcd.LeaderResponse'(Rest, Z1, Z2, F@_1,
				      F@_2, TrUserData);
'skip_varint_Etcd.LeaderResponse'(<<0:1, _:7,
				    Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaderResponse'(Rest, Z1, Z2,
					     F@_1, F@_2, TrUserData).

'skip_length_delimited_Etcd.LeaderResponse'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.LeaderResponse'(Rest, N + 7,
						X bsl N + Acc, F@_1, F@_2,
						TrUserData);
'skip_length_delimited_Etcd.LeaderResponse'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.LeaderResponse'(Rest2, 0, 0,
					     F@_1, F@_2, TrUserData).

'skip_group_Etcd.LeaderResponse'(Bin, FNum, Z2, F@_1,
				 F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.LeaderResponse'(Rest, 0, Z2,
					     F@_1, F@_2, TrUserData).

'skip_32_Etcd.LeaderResponse'(<<_:32, Rest/binary>>, Z1,
			      Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaderResponse'(Rest, Z1, Z2,
					     F@_1, F@_2, TrUserData).

'skip_64_Etcd.LeaderResponse'(<<_:64, Rest/binary>>, Z1,
			      Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.LeaderResponse'(Rest, Z1, Z2,
					     F@_1, F@_2, TrUserData).

'decode_msg_Etcd.ResignRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.ResignRequest'(Bin, 0, 0,
					    id('$undef', TrUserData),
					    TrUserData).

'dfp_read_field_def_Etcd.ResignRequest'(<<10,
					  Rest/binary>>,
					Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.ResignRequest_leader'(Rest, Z1, Z2, F@_1,
					TrUserData);
'dfp_read_field_def_Etcd.ResignRequest'(<<>>, 0, 0,
					F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{leader => F@_1}
    end;
'dfp_read_field_def_Etcd.ResignRequest'(Other, Z1, Z2,
					F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.ResignRequest'(Other, Z1, Z2,
					   F@_1, TrUserData).

'dg_read_field_def_Etcd.ResignRequest'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.ResignRequest'(Rest, N + 7,
					   X bsl N + Acc, F@_1, TrUserData);
'dg_read_field_def_Etcd.ResignRequest'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.ResignRequest_leader'(Rest, 0, 0, F@_1,
					      TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.ResignRequest'(Rest, 0, 0, F@_1,
						 TrUserData);
	    1 ->
		'skip_64_Etcd.ResignRequest'(Rest, 0, 0, F@_1,
					     TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.ResignRequest'(Rest, 0, 0,
							   F@_1, TrUserData);
	    3 ->
		'skip_group_Etcd.ResignRequest'(Rest, Key bsr 3, 0,
						F@_1, TrUserData);
	    5 ->
		'skip_32_Etcd.ResignRequest'(Rest, 0, 0, F@_1,
					     TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.ResignRequest'(<<>>, 0, 0, F@_1,
				       _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{leader => F@_1}
    end.

'd_field_Etcd.ResignRequest_leader'(<<1:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.ResignRequest_leader'(Rest, N + 7,
					X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.ResignRequest_leader'(<<0:1, X:7,
				      Rest/binary>>,
				    N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.LeaderKey'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.ResignRequest'(RestF, 0, 0,
					    if Prev == '$undef' -> NewFValue;
					       true ->
						   'merge_msg_Etcd.LeaderKey'(Prev,
									      NewFValue,
									      TrUserData)
					    end,
					    TrUserData).

'skip_varint_Etcd.ResignRequest'(<<1:1, _:7,
				   Rest/binary>>,
				 Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.ResignRequest'(Rest, Z1, Z2, F@_1,
				     TrUserData);
'skip_varint_Etcd.ResignRequest'(<<0:1, _:7,
				   Rest/binary>>,
				 Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.ResignRequest'(Rest, Z1, Z2,
					    F@_1, TrUserData).

'skip_length_delimited_Etcd.ResignRequest'(<<1:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.ResignRequest'(Rest, N + 7,
					       X bsl N + Acc, F@_1, TrUserData);
'skip_length_delimited_Etcd.ResignRequest'(<<0:1, X:7,
					     Rest/binary>>,
					   N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.ResignRequest'(Rest2, 0, 0,
					    F@_1, TrUserData).

'skip_group_Etcd.ResignRequest'(Bin, FNum, Z2, F@_1,
				TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.ResignRequest'(Rest, 0, Z2,
					    F@_1, TrUserData).

'skip_32_Etcd.ResignRequest'(<<_:32, Rest/binary>>, Z1,
			     Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.ResignRequest'(Rest, Z1, Z2,
					    F@_1, TrUserData).

'skip_64_Etcd.ResignRequest'(<<_:64, Rest/binary>>, Z1,
			     Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.ResignRequest'(Rest, Z1, Z2,
					    F@_1, TrUserData).

'decode_msg_Etcd.ResignResponse'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.ResignResponse'(Bin, 0, 0,
					     id('$undef', TrUserData),
					     TrUserData).

'dfp_read_field_def_Etcd.ResignResponse'(<<10,
					   Rest/binary>>,
					 Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.ResignResponse_header'(Rest, Z1, Z2, F@_1,
					 TrUserData);
'dfp_read_field_def_Etcd.ResignResponse'(<<>>, 0, 0,
					 F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.ResignResponse'(Other, Z1, Z2,
					 F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.ResignResponse'(Other, Z1, Z2,
					    F@_1, TrUserData).

'dg_read_field_def_Etcd.ResignResponse'(<<1:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.ResignResponse'(Rest, N + 7,
					    X bsl N + Acc, F@_1, TrUserData);
'dg_read_field_def_Etcd.ResignResponse'(<<0:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.ResignResponse_header'(Rest, 0, 0, F@_1,
					       TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.ResignResponse'(Rest, 0, 0, F@_1,
						  TrUserData);
	    1 ->
		'skip_64_Etcd.ResignResponse'(Rest, 0, 0, F@_1,
					      TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.ResignResponse'(Rest, 0, 0,
							    F@_1, TrUserData);
	    3 ->
		'skip_group_Etcd.ResignResponse'(Rest, Key bsr 3, 0,
						 F@_1, TrUserData);
	    5 ->
		'skip_32_Etcd.ResignResponse'(Rest, 0, 0, F@_1,
					      TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.ResignResponse'(<<>>, 0, 0,
					F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.ResignResponse_header'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.ResignResponse_header'(Rest, N + 7,
					 X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.ResignResponse_header'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.ResignResponse'(RestF, 0, 0,
					     if Prev == '$undef' -> NewFValue;
						true ->
						    'merge_msg_Etcd.ResponseHeader'(Prev,
										    NewFValue,
										    TrUserData)
					     end,
					     TrUserData).

'skip_varint_Etcd.ResignResponse'(<<1:1, _:7,
				    Rest/binary>>,
				  Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.ResignResponse'(Rest, Z1, Z2, F@_1,
				      TrUserData);
'skip_varint_Etcd.ResignResponse'(<<0:1, _:7,
				    Rest/binary>>,
				  Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.ResignResponse'(Rest, Z1, Z2,
					     F@_1, TrUserData).

'skip_length_delimited_Etcd.ResignResponse'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.ResignResponse'(Rest, N + 7,
						X bsl N + Acc, F@_1,
						TrUserData);
'skip_length_delimited_Etcd.ResignResponse'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.ResignResponse'(Rest2, 0, 0,
					     F@_1, TrUserData).

'skip_group_Etcd.ResignResponse'(Bin, FNum, Z2, F@_1,
				 TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.ResignResponse'(Rest, 0, Z2,
					     F@_1, TrUserData).

'skip_32_Etcd.ResignResponse'(<<_:32, Rest/binary>>, Z1,
			      Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.ResignResponse'(Rest, Z1, Z2,
					     F@_1, TrUserData).

'skip_64_Etcd.ResignResponse'(<<_:64, Rest/binary>>, Z1,
			      Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.ResignResponse'(Rest, Z1, Z2,
					     F@_1, TrUserData).

'decode_msg_Etcd.ProclaimRequest'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.ProclaimRequest'(Bin, 0, 0,
					      id('$undef', TrUserData),
					      id(<<>>, TrUserData), TrUserData).

'dfp_read_field_def_Etcd.ProclaimRequest'(<<10,
					    Rest/binary>>,
					  Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.ProclaimRequest_leader'(Rest, Z1, Z2,
					  F@_1, F@_2, TrUserData);
'dfp_read_field_def_Etcd.ProclaimRequest'(<<18,
					    Rest/binary>>,
					  Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_Etcd.ProclaimRequest_value'(Rest, Z1, Z2, F@_1,
					 F@_2, TrUserData);
'dfp_read_field_def_Etcd.ProclaimRequest'(<<>>, 0, 0,
					  F@_1, F@_2, _) ->
    S1 = #{value => F@_2},
    if F@_1 == '$undef' -> S1;
       true -> S1#{leader => F@_1}
    end;
'dfp_read_field_def_Etcd.ProclaimRequest'(Other, Z1, Z2,
					  F@_1, F@_2, TrUserData) ->
    'dg_read_field_def_Etcd.ProclaimRequest'(Other, Z1, Z2,
					     F@_1, F@_2, TrUserData).

'dg_read_field_def_Etcd.ProclaimRequest'(<<1:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, F@_2, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.ProclaimRequest'(Rest, N + 7,
					     X bsl N + Acc, F@_1, F@_2,
					     TrUserData);
'dg_read_field_def_Etcd.ProclaimRequest'(<<0:1, X:7,
					   Rest/binary>>,
					 N, Acc, F@_1, F@_2, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.ProclaimRequest_leader'(Rest, 0, 0, F@_1,
						F@_2, TrUserData);
      18 ->
	  'd_field_Etcd.ProclaimRequest_value'(Rest, 0, 0, F@_1,
					       F@_2, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.ProclaimRequest'(Rest, 0, 0, F@_1,
						   F@_2, TrUserData);
	    1 ->
		'skip_64_Etcd.ProclaimRequest'(Rest, 0, 0, F@_1, F@_2,
					       TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.ProclaimRequest'(Rest, 0, 0,
							     F@_1, F@_2,
							     TrUserData);
	    3 ->
		'skip_group_Etcd.ProclaimRequest'(Rest, Key bsr 3, 0,
						  F@_1, F@_2, TrUserData);
	    5 ->
		'skip_32_Etcd.ProclaimRequest'(Rest, 0, 0, F@_1, F@_2,
					       TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.ProclaimRequest'(<<>>, 0, 0,
					 F@_1, F@_2, _) ->
    S1 = #{value => F@_2},
    if F@_1 == '$undef' -> S1;
       true -> S1#{leader => F@_1}
    end.

'd_field_Etcd.ProclaimRequest_leader'(<<1:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.ProclaimRequest_leader'(Rest, N + 7,
					  X bsl N + Acc, F@_1, F@_2,
					  TrUserData);
'd_field_Etcd.ProclaimRequest_leader'(<<0:1, X:7,
					Rest/binary>>,
				      N, Acc, Prev, F@_2, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.LeaderKey'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.ProclaimRequest'(RestF, 0, 0,
					      if Prev == '$undef' -> NewFValue;
						 true ->
						     'merge_msg_Etcd.LeaderKey'(Prev,
										NewFValue,
										TrUserData)
					      end,
					      F@_2, TrUserData).

'd_field_Etcd.ProclaimRequest_value'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_Etcd.ProclaimRequest_value'(Rest, N + 7,
					 X bsl N + Acc, F@_1, F@_2, TrUserData);
'd_field_Etcd.ProclaimRequest_value'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, _, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_Etcd.ProclaimRequest'(RestF, 0, 0,
					      F@_1, NewFValue, TrUserData).

'skip_varint_Etcd.ProclaimRequest'(<<1:1, _:7,
				     Rest/binary>>,
				   Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_Etcd.ProclaimRequest'(Rest, Z1, Z2, F@_1,
				       F@_2, TrUserData);
'skip_varint_Etcd.ProclaimRequest'(<<0:1, _:7,
				     Rest/binary>>,
				   Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.ProclaimRequest'(Rest, Z1, Z2,
					      F@_1, F@_2, TrUserData).

'skip_length_delimited_Etcd.ProclaimRequest'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.ProclaimRequest'(Rest,
						 N + 7, X bsl N + Acc, F@_1,
						 F@_2, TrUserData);
'skip_length_delimited_Etcd.ProclaimRequest'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.ProclaimRequest'(Rest2, 0, 0,
					      F@_1, F@_2, TrUserData).

'skip_group_Etcd.ProclaimRequest'(Bin, FNum, Z2, F@_1,
				  F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.ProclaimRequest'(Rest, 0, Z2,
					      F@_1, F@_2, TrUserData).

'skip_32_Etcd.ProclaimRequest'(<<_:32, Rest/binary>>,
			       Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.ProclaimRequest'(Rest, Z1, Z2,
					      F@_1, F@_2, TrUserData).

'skip_64_Etcd.ProclaimRequest'(<<_:64, Rest/binary>>,
			       Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_Etcd.ProclaimRequest'(Rest, Z1, Z2,
					      F@_1, F@_2, TrUserData).

'decode_msg_Etcd.ProclaimResponse'(Bin, TrUserData) ->
    'dfp_read_field_def_Etcd.ProclaimResponse'(Bin, 0, 0,
					       id('$undef', TrUserData),
					       TrUserData).

'dfp_read_field_def_Etcd.ProclaimResponse'(<<10,
					     Rest/binary>>,
					   Z1, Z2, F@_1, TrUserData) ->
    'd_field_Etcd.ProclaimResponse_header'(Rest, Z1, Z2,
					   F@_1, TrUserData);
'dfp_read_field_def_Etcd.ProclaimResponse'(<<>>, 0, 0,
					   F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end;
'dfp_read_field_def_Etcd.ProclaimResponse'(Other, Z1,
					   Z2, F@_1, TrUserData) ->
    'dg_read_field_def_Etcd.ProclaimResponse'(Other, Z1, Z2,
					      F@_1, TrUserData).

'dg_read_field_def_Etcd.ProclaimResponse'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_Etcd.ProclaimResponse'(Rest, N + 7,
					      X bsl N + Acc, F@_1, TrUserData);
'dg_read_field_def_Etcd.ProclaimResponse'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_Etcd.ProclaimResponse_header'(Rest, 0, 0, F@_1,
						 TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_Etcd.ProclaimResponse'(Rest, 0, 0, F@_1,
						    TrUserData);
	    1 ->
		'skip_64_Etcd.ProclaimResponse'(Rest, 0, 0, F@_1,
						TrUserData);
	    2 ->
		'skip_length_delimited_Etcd.ProclaimResponse'(Rest, 0,
							      0, F@_1,
							      TrUserData);
	    3 ->
		'skip_group_Etcd.ProclaimResponse'(Rest, Key bsr 3, 0,
						   F@_1, TrUserData);
	    5 ->
		'skip_32_Etcd.ProclaimResponse'(Rest, 0, 0, F@_1,
						TrUserData)
	  end
    end;
'dg_read_field_def_Etcd.ProclaimResponse'(<<>>, 0, 0,
					  F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{header => F@_1}
    end.

'd_field_Etcd.ProclaimResponse_header'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_Etcd.ProclaimResponse_header'(Rest, N + 7,
					   X bsl N + Acc, F@_1, TrUserData);
'd_field_Etcd.ProclaimResponse_header'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_Etcd.ResponseHeader'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_Etcd.ProclaimResponse'(RestF, 0, 0,
					       if Prev == '$undef' -> NewFValue;
						  true ->
						      'merge_msg_Etcd.ResponseHeader'(Prev,
										      NewFValue,
										      TrUserData)
					       end,
					       TrUserData).

'skip_varint_Etcd.ProclaimResponse'(<<1:1, _:7,
				      Rest/binary>>,
				    Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_Etcd.ProclaimResponse'(Rest, Z1, Z2, F@_1,
					TrUserData);
'skip_varint_Etcd.ProclaimResponse'(<<0:1, _:7,
				      Rest/binary>>,
				    Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.ProclaimResponse'(Rest, Z1, Z2,
					       F@_1, TrUserData).

'skip_length_delimited_Etcd.ProclaimResponse'(<<1:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_Etcd.ProclaimResponse'(Rest,
						  N + 7, X bsl N + Acc, F@_1,
						  TrUserData);
'skip_length_delimited_Etcd.ProclaimResponse'(<<0:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_Etcd.ProclaimResponse'(Rest2, 0, 0,
					       F@_1, TrUserData).

'skip_group_Etcd.ProclaimResponse'(Bin, FNum, Z2, F@_1,
				   TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_Etcd.ProclaimResponse'(Rest, 0, Z2,
					       F@_1, TrUserData).

'skip_32_Etcd.ProclaimResponse'(<<_:32, Rest/binary>>,
				Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.ProclaimResponse'(Rest, Z1, Z2,
					       F@_1, TrUserData).

'skip_64_Etcd.ProclaimResponse'(<<_:64, Rest/binary>>,
				Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_Etcd.ProclaimResponse'(Rest, Z1, Z2,
					       F@_1, TrUserData).

'decode_msg_google.protobuf.FileDescriptorSet'(Bin,
					       TrUserData) ->
    'dfp_read_field_def_google.protobuf.FileDescriptorSet'(Bin,
							   0, 0,
							   id([], TrUserData),
							   TrUserData).

'dfp_read_field_def_google.protobuf.FileDescriptorSet'(<<10,
							 Rest/binary>>,
						       Z1, Z2, F@_1,
						       TrUserData) ->
    'd_field_google.protobuf.FileDescriptorSet_file'(Rest,
						     Z1, Z2, F@_1, TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorSet'(<<>>,
						       0, 0, R1, TrUserData) ->
    S1 = #{},
    if R1 == '$undef' -> S1;
       true -> S1#{file => lists_reverse(R1, TrUserData)}
    end;
'dfp_read_field_def_google.protobuf.FileDescriptorSet'(Other,
						       Z1, Z2, F@_1,
						       TrUserData) ->
    'dg_read_field_def_google.protobuf.FileDescriptorSet'(Other,
							  Z1, Z2, F@_1,
							  TrUserData).

'dg_read_field_def_google.protobuf.FileDescriptorSet'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.FileDescriptorSet'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, TrUserData);
'dg_read_field_def_google.protobuf.FileDescriptorSet'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1,
						      TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_google.protobuf.FileDescriptorSet_file'(Rest,
							   0, 0, F@_1,
							   TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.FileDescriptorSet'(Rest, 0,
								0, F@_1,
								TrUserData);
	    1 ->
		'skip_64_google.protobuf.FileDescriptorSet'(Rest, 0, 0,
							    F@_1, TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.FileDescriptorSet'(Rest,
									  0, 0,
									  F@_1,
									  TrUserData);
	    3 ->
		'skip_group_google.protobuf.FileDescriptorSet'(Rest,
							       Key bsr 3, 0,
							       F@_1,
							       TrUserData);
	    5 ->
		'skip_32_google.protobuf.FileDescriptorSet'(Rest, 0, 0,
							    F@_1, TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.FileDescriptorSet'(<<>>,
						      0, 0, R1, TrUserData) ->
    S1 = #{},
    if R1 == '$undef' -> S1;
       true -> S1#{file => lists_reverse(R1, TrUserData)}
    end.

'd_field_google.protobuf.FileDescriptorSet_file'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileDescriptorSet_file'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     TrUserData);
'd_field_google.protobuf.FileDescriptorSet_file'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.FileDescriptorProto'(Bs,
										TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileDescriptorSet'(RestF,
							   0, 0,
							   cons(NewFValue, Prev,
								TrUserData),
							   TrUserData).

'skip_varint_google.protobuf.FileDescriptorSet'(<<1:1,
						  _:7, Rest/binary>>,
						Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_google.protobuf.FileDescriptorSet'(Rest,
						    Z1, Z2, F@_1, TrUserData);
'skip_varint_google.protobuf.FileDescriptorSet'(<<0:1,
						  _:7, Rest/binary>>,
						Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_google.protobuf.FileDescriptorSet'(Rest,
							   Z1, Z2, F@_1,
							   TrUserData).

'skip_length_delimited_google.protobuf.FileDescriptorSet'(<<1:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1,
							  TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.FileDescriptorSet'(Rest,
							      N + 7,
							      X bsl N + Acc,
							      F@_1, TrUserData);
'skip_length_delimited_google.protobuf.FileDescriptorSet'(<<0:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1,
							  TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.FileDescriptorSet'(Rest2,
							   0, 0, F@_1,
							   TrUserData).

'skip_group_google.protobuf.FileDescriptorSet'(Bin,
					       FNum, Z2, F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.FileDescriptorSet'(Rest,
							   0, Z2, F@_1,
							   TrUserData).

'skip_32_google.protobuf.FileDescriptorSet'(<<_:32,
					      Rest/binary>>,
					    Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_google.protobuf.FileDescriptorSet'(Rest,
							   Z1, Z2, F@_1,
							   TrUserData).

'skip_64_google.protobuf.FileDescriptorSet'(<<_:64,
					      Rest/binary>>,
					    Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_google.protobuf.FileDescriptorSet'(Rest,
							   Z1, Z2, F@_1,
							   TrUserData).

'decode_msg_google.protobuf.FileDescriptorProto'(Bin,
						 TrUserData) ->
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(Bin,
							     0, 0,
							     id('$undef',
								TrUserData),
							     id('$undef',
								TrUserData),
							     id([], TrUserData),
							     id([], TrUserData),
							     id([], TrUserData),
							     id([], TrUserData),
							     id([], TrUserData),
							     id([], TrUserData),
							     id([], TrUserData),
							     id('$undef',
								TrUserData),
							     id('$undef',
								TrUserData),
							     id('$undef',
								TrUserData),
							     TrUserData).

'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<10,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'd_field_google.protobuf.FileDescriptorProto_name'(Rest,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<18,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'd_field_google.protobuf.FileDescriptorProto_package'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<26,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'd_field_google.protobuf.FileDescriptorProto_dependency'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<82,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'd_pfield_google.protobuf.FileDescriptorProto_public_dependency'(Rest,
								     Z1, Z2,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     F@_5, F@_6,
								     F@_7, F@_8,
								     F@_9,
								     F@_10,
								     F@_11,
								     F@_12,
								     TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<80,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'd_field_google.protobuf.FileDescriptorProto_public_dependency'(Rest,
								    Z1, Z2,
								    F@_1, F@_2,
								    F@_3, F@_4,
								    F@_5, F@_6,
								    F@_7, F@_8,
								    F@_9, F@_10,
								    F@_11,
								    F@_12,
								    TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<90,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'd_pfield_google.protobuf.FileDescriptorProto_weak_dependency'(Rest,
								   Z1, Z2, F@_1,
								   F@_2, F@_3,
								   F@_4, F@_5,
								   F@_6, F@_7,
								   F@_8, F@_9,
								   F@_10, F@_11,
								   F@_12,
								   TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<88,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'd_field_google.protobuf.FileDescriptorProto_weak_dependency'(Rest,
								  Z1, Z2, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6, F@_7,
								  F@_8, F@_9,
								  F@_10, F@_11,
								  F@_12,
								  TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<34,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'd_field_google.protobuf.FileDescriptorProto_message_type'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12,
							       TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<42,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'd_field_google.protobuf.FileDescriptorProto_enum_type'(Rest,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<50,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'd_field_google.protobuf.FileDescriptorProto_service'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<58,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'd_field_google.protobuf.FileDescriptorProto_extension'(Rest,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<66,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'd_field_google.protobuf.FileDescriptorProto_options'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<74,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'd_field_google.protobuf.FileDescriptorProto_source_code_info'(Rest,
								   Z1, Z2, F@_1,
								   F@_2, F@_3,
								   F@_4, F@_5,
								   F@_6, F@_7,
								   F@_8, F@_9,
								   F@_10, F@_11,
								   F@_12,
								   TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<98,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'd_field_google.protobuf.FileDescriptorProto_syntax'(Rest,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData);
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(<<>>,
							 0, 0, F@_1, F@_2, R1,
							 R2, R3, R4, R5, R6, R7,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    S1 = #{dependency => lists_reverse(R1, TrUserData),
	   public_dependency => lists_reverse(R2, TrUserData),
	   weak_dependency => lists_reverse(R3, TrUserData)},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{name => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{package => F@_2}
	 end,
    S4 = if R4 == '$undef' -> S3;
	    true ->
		S3#{message_type => lists_reverse(R4, TrUserData)}
	 end,
    S5 = if R5 == '$undef' -> S4;
	    true -> S4#{enum_type => lists_reverse(R5, TrUserData)}
	 end,
    S6 = if R6 == '$undef' -> S5;
	    true -> S5#{service => lists_reverse(R6, TrUserData)}
	 end,
    S7 = if R7 == '$undef' -> S6;
	    true -> S6#{extension => lists_reverse(R7, TrUserData)}
	 end,
    S8 = if F@_10 == '$undef' -> S7;
	    true -> S7#{options => F@_10}
	 end,
    S9 = if F@_11 == '$undef' -> S8;
	    true -> S8#{source_code_info => F@_11}
	 end,
    if F@_12 == '$undef' -> S9;
       true -> S9#{syntax => F@_12}
    end;
'dfp_read_field_def_google.protobuf.FileDescriptorProto'(Other,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    'dg_read_field_def_google.protobuf.FileDescriptorProto'(Other,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, TrUserData).

'dg_read_field_def_google.protobuf.FileDescriptorProto'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12,
							TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.FileDescriptorProto'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3, F@_4,
							    F@_5, F@_6, F@_7,
							    F@_8, F@_9, F@_10,
							    F@_11, F@_12,
							    TrUserData);
'dg_read_field_def_google.protobuf.FileDescriptorProto'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12,
							TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_google.protobuf.FileDescriptorProto_name'(Rest,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, TrUserData);
      18 ->
	  'd_field_google.protobuf.FileDescriptorProto_package'(Rest,
								0, 0, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10, F@_11,
								F@_12,
								TrUserData);
      26 ->
	  'd_field_google.protobuf.FileDescriptorProto_dependency'(Rest,
								   0, 0, F@_1,
								   F@_2, F@_3,
								   F@_4, F@_5,
								   F@_6, F@_7,
								   F@_8, F@_9,
								   F@_10, F@_11,
								   F@_12,
								   TrUserData);
      82 ->
	  'd_pfield_google.protobuf.FileDescriptorProto_public_dependency'(Rest,
									   0, 0,
									   F@_1,
									   F@_2,
									   F@_3,
									   F@_4,
									   F@_5,
									   F@_6,
									   F@_7,
									   F@_8,
									   F@_9,
									   F@_10,
									   F@_11,
									   F@_12,
									   TrUserData);
      80 ->
	  'd_field_google.protobuf.FileDescriptorProto_public_dependency'(Rest,
									  0, 0,
									  F@_1,
									  F@_2,
									  F@_3,
									  F@_4,
									  F@_5,
									  F@_6,
									  F@_7,
									  F@_8,
									  F@_9,
									  F@_10,
									  F@_11,
									  F@_12,
									  TrUserData);
      90 ->
	  'd_pfield_google.protobuf.FileDescriptorProto_weak_dependency'(Rest,
									 0, 0,
									 F@_1,
									 F@_2,
									 F@_3,
									 F@_4,
									 F@_5,
									 F@_6,
									 F@_7,
									 F@_8,
									 F@_9,
									 F@_10,
									 F@_11,
									 F@_12,
									 TrUserData);
      88 ->
	  'd_field_google.protobuf.FileDescriptorProto_weak_dependency'(Rest,
									0, 0,
									F@_1,
									F@_2,
									F@_3,
									F@_4,
									F@_5,
									F@_6,
									F@_7,
									F@_8,
									F@_9,
									F@_10,
									F@_11,
									F@_12,
									TrUserData);
      34 ->
	  'd_field_google.protobuf.FileDescriptorProto_message_type'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     F@_4, F@_5,
								     F@_6, F@_7,
								     F@_8, F@_9,
								     F@_10,
								     F@_11,
								     F@_12,
								     TrUserData);
      42 ->
	  'd_field_google.protobuf.FileDescriptorProto_enum_type'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6, F@_7,
								  F@_8, F@_9,
								  F@_10, F@_11,
								  F@_12,
								  TrUserData);
      50 ->
	  'd_field_google.protobuf.FileDescriptorProto_service'(Rest,
								0, 0, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10, F@_11,
								F@_12,
								TrUserData);
      58 ->
	  'd_field_google.protobuf.FileDescriptorProto_extension'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6, F@_7,
								  F@_8, F@_9,
								  F@_10, F@_11,
								  F@_12,
								  TrUserData);
      66 ->
	  'd_field_google.protobuf.FileDescriptorProto_options'(Rest,
								0, 0, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10, F@_11,
								F@_12,
								TrUserData);
      74 ->
	  'd_field_google.protobuf.FileDescriptorProto_source_code_info'(Rest,
									 0, 0,
									 F@_1,
									 F@_2,
									 F@_3,
									 F@_4,
									 F@_5,
									 F@_6,
									 F@_7,
									 F@_8,
									 F@_9,
									 F@_10,
									 F@_11,
									 F@_12,
									 TrUserData);
      98 ->
	  'd_field_google.protobuf.FileDescriptorProto_syntax'(Rest,
							       0, 0, F@_1, F@_2,
							       F@_3, F@_4, F@_5,
							       F@_6, F@_7, F@_8,
							       F@_9, F@_10,
							       F@_11, F@_12,
							       TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.FileDescriptorProto'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6, F@_7,
								  F@_8, F@_9,
								  F@_10, F@_11,
								  F@_12,
								  TrUserData);
	    1 ->
		'skip_64_google.protobuf.FileDescriptorProto'(Rest, 0,
							      0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7, F@_8,
							      F@_9, F@_10,
							      F@_11, F@_12,
							      TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.FileDescriptorProto'(Rest,
									    0,
									    0,
									    F@_1,
									    F@_2,
									    F@_3,
									    F@_4,
									    F@_5,
									    F@_6,
									    F@_7,
									    F@_8,
									    F@_9,
									    F@_10,
									    F@_11,
									    F@_12,
									    TrUserData);
	    3 ->
		'skip_group_google.protobuf.FileDescriptorProto'(Rest,
								 Key bsr 3, 0,
								 F@_1, F@_2,
								 F@_3, F@_4,
								 F@_5, F@_6,
								 F@_7, F@_8,
								 F@_9, F@_10,
								 F@_11, F@_12,
								 TrUserData);
	    5 ->
		'skip_32_google.protobuf.FileDescriptorProto'(Rest, 0,
							      0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7, F@_8,
							      F@_9, F@_10,
							      F@_11, F@_12,
							      TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.FileDescriptorProto'(<<>>,
							0, 0, F@_1, F@_2, R1,
							R2, R3, R4, R5, R6, R7,
							F@_10, F@_11, F@_12,
							TrUserData) ->
    S1 = #{dependency => lists_reverse(R1, TrUserData),
	   public_dependency => lists_reverse(R2, TrUserData),
	   weak_dependency => lists_reverse(R3, TrUserData)},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{name => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{package => F@_2}
	 end,
    S4 = if R4 == '$undef' -> S3;
	    true ->
		S3#{message_type => lists_reverse(R4, TrUserData)}
	 end,
    S5 = if R5 == '$undef' -> S4;
	    true -> S4#{enum_type => lists_reverse(R5, TrUserData)}
	 end,
    S6 = if R6 == '$undef' -> S5;
	    true -> S5#{service => lists_reverse(R6, TrUserData)}
	 end,
    S7 = if R7 == '$undef' -> S6;
	    true -> S6#{extension => lists_reverse(R7, TrUserData)}
	 end,
    S8 = if F@_10 == '$undef' -> S7;
	    true -> S7#{options => F@_10}
	 end,
    S9 = if F@_11 == '$undef' -> S8;
	    true -> S8#{source_code_info => F@_11}
	 end,
    if F@_12 == '$undef' -> S9;
       true -> S9#{syntax => F@_12}
    end.

'd_field_google.protobuf.FileDescriptorProto_name'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileDescriptorProto_name'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7, F@_8,
						       F@_9, F@_10, F@_11,
						       F@_12, TrUserData);
'd_field_google.protobuf.FileDescriptorProto_name'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, _, F@_2, F@_3, F@_4,
						   F@_5, F@_6, F@_7, F@_8, F@_9,
						   F@_10, F@_11, F@_12,
						   TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(RestF,
							     0, 0, NewFValue,
							     F@_2, F@_3, F@_4,
							     F@_5, F@_6, F@_7,
							     F@_8, F@_9, F@_10,
							     F@_11, F@_12,
							     TrUserData).

'd_field_google.protobuf.FileDescriptorProto_package'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileDescriptorProto_package'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, F@_11, F@_12,
							  TrUserData);
'd_field_google.protobuf.FileDescriptorProto_package'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, _, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(RestF,
							     0, 0, F@_1,
							     NewFValue, F@_3,
							     F@_4, F@_5, F@_6,
							     F@_7, F@_8, F@_9,
							     F@_10, F@_11,
							     F@_12, TrUserData).

'd_field_google.protobuf.FileDescriptorProto_dependency'(<<1:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileDescriptorProto_dependency'(Rest,
							     N + 7,
							     X bsl N + Acc,
							     F@_1, F@_2, F@_3,
							     F@_4, F@_5, F@_6,
							     F@_7, F@_8, F@_9,
							     F@_10, F@_11,
							     F@_12, TrUserData);
'd_field_google.protobuf.FileDescriptorProto_dependency'(<<0:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 Prev, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(RestF,
							     0, 0, F@_1, F@_2,
							     cons(NewFValue,
								  Prev,
								  TrUserData),
							     F@_4, F@_5, F@_6,
							     F@_7, F@_8, F@_9,
							     F@_10, F@_11,
							     F@_12, TrUserData).

'd_field_google.protobuf.FileDescriptorProto_public_dependency'(<<1:1,
								  X:7,
								  Rest/binary>>,
								N, Acc, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10, F@_11,
								F@_12,
								TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileDescriptorProto_public_dependency'(Rest,
								    N + 7,
								    X bsl N +
								      Acc,
								    F@_1, F@_2,
								    F@_3, F@_4,
								    F@_5, F@_6,
								    F@_7, F@_8,
								    F@_9, F@_10,
								    F@_11,
								    F@_12,
								    TrUserData);
'd_field_google.protobuf.FileDescriptorProto_public_dependency'(<<0:1,
								  X:7,
								  Rest/binary>>,
								N, Acc, F@_1,
								F@_2, F@_3,
								Prev, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10, F@_11,
								F@_12,
								TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(RestF,
							     0, 0, F@_1, F@_2,
							     F@_3,
							     cons(NewFValue,
								  Prev,
								  TrUserData),
							     F@_5, F@_6, F@_7,
							     F@_8, F@_9, F@_10,
							     F@_11, F@_12,
							     TrUserData).

'd_pfield_google.protobuf.FileDescriptorProto_public_dependency'(<<1:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 F@_8, F@_9,
								 F@_10, F@_11,
								 F@_12,
								 TrUserData)
    when N < 57 ->
    'd_pfield_google.protobuf.FileDescriptorProto_public_dependency'(Rest,
								     N + 7,
								     X bsl N +
								       Acc,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     F@_5, F@_6,
								     F@_7, F@_8,
								     F@_9,
								     F@_10,
								     F@_11,
								     F@_12,
								     TrUserData);
'd_pfield_google.protobuf.FileDescriptorProto_public_dependency'(<<0:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3, E,
								 F@_5, F@_6,
								 F@_7, F@_8,
								 F@_9, F@_10,
								 F@_11, F@_12,
								 TrUserData) ->
    Len = X bsl N + Acc,
    <<PackedBytes:Len/binary, Rest2/binary>> = Rest,
    NewSeq =
	'd_packed_field_google.protobuf.FileDescriptorProto_public_dependency'(PackedBytes,
									       0,
									       0,
									       E,
									       TrUserData),
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(Rest2,
							     0, 0, F@_1, F@_2,
							     F@_3, NewSeq, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, TrUserData).

'd_packed_field_google.protobuf.FileDescriptorProto_public_dependency'(<<1:1,
									 X:7,
									 Rest/binary>>,
								       N, Acc,
								       AccSeq,
								       TrUserData)
    when N < 57 ->
    'd_packed_field_google.protobuf.FileDescriptorProto_public_dependency'(Rest,
									   N +
									     7,
									   X bsl
									     N
									     +
									     Acc,
									   AccSeq,
									   TrUserData);
'd_packed_field_google.protobuf.FileDescriptorProto_public_dependency'(<<0:1,
									 X:7,
									 Rest/binary>>,
								       N, Acc,
								       AccSeq,
								       TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'd_packed_field_google.protobuf.FileDescriptorProto_public_dependency'(RestF,
									   0, 0,
									   [NewFValue
									    | AccSeq],
									   TrUserData);
'd_packed_field_google.protobuf.FileDescriptorProto_public_dependency'(<<>>,
								       0, 0,
								       AccSeq,
								       _) ->
    AccSeq.

'd_field_google.protobuf.FileDescriptorProto_weak_dependency'(<<1:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileDescriptorProto_weak_dependency'(Rest,
								  N + 7,
								  X bsl N + Acc,
								  F@_1, F@_2,
								  F@_3, F@_4,
								  F@_5, F@_6,
								  F@_7, F@_8,
								  F@_9, F@_10,
								  F@_11, F@_12,
								  TrUserData);
'd_field_google.protobuf.FileDescriptorProto_weak_dependency'(<<0:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      F@_2, F@_3, F@_4,
							      Prev, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(RestF,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4,
							     cons(NewFValue,
								  Prev,
								  TrUserData),
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, TrUserData).

'd_pfield_google.protobuf.FileDescriptorProto_weak_dependency'(<<1:1,
								 X:7,
								 Rest/binary>>,
							       N, Acc, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12,
							       TrUserData)
    when N < 57 ->
    'd_pfield_google.protobuf.FileDescriptorProto_weak_dependency'(Rest,
								   N + 7,
								   X bsl N +
								     Acc,
								   F@_1, F@_2,
								   F@_3, F@_4,
								   F@_5, F@_6,
								   F@_7, F@_8,
								   F@_9, F@_10,
								   F@_11, F@_12,
								   TrUserData);
'd_pfield_google.protobuf.FileDescriptorProto_weak_dependency'(<<0:1,
								 X:7,
								 Rest/binary>>,
							       N, Acc, F@_1,
							       F@_2, F@_3, F@_4,
							       E, F@_6, F@_7,
							       F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12,
							       TrUserData) ->
    Len = X bsl N + Acc,
    <<PackedBytes:Len/binary, Rest2/binary>> = Rest,
    NewSeq =
	'd_packed_field_google.protobuf.FileDescriptorProto_weak_dependency'(PackedBytes,
									     0,
									     0,
									     E,
									     TrUserData),
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(Rest2,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, NewSeq,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, TrUserData).

'd_packed_field_google.protobuf.FileDescriptorProto_weak_dependency'(<<1:1,
								       X:7,
								       Rest/binary>>,
								     N, Acc,
								     AccSeq,
								     TrUserData)
    when N < 57 ->
    'd_packed_field_google.protobuf.FileDescriptorProto_weak_dependency'(Rest,
									 N + 7,
									 X bsl N
									   +
									   Acc,
									 AccSeq,
									 TrUserData);
'd_packed_field_google.protobuf.FileDescriptorProto_weak_dependency'(<<0:1,
								       X:7,
								       Rest/binary>>,
								     N, Acc,
								     AccSeq,
								     TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'd_packed_field_google.protobuf.FileDescriptorProto_weak_dependency'(RestF,
									 0, 0,
									 [NewFValue
									  | AccSeq],
									 TrUserData);
'd_packed_field_google.protobuf.FileDescriptorProto_weak_dependency'(<<>>,
								     0, 0,
								     AccSeq,
								     _) ->
    AccSeq.

'd_field_google.protobuf.FileDescriptorProto_message_type'(<<1:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileDescriptorProto_message_type'(Rest,
							       N + 7,
							       X bsl N + Acc,
							       F@_1, F@_2, F@_3,
							       F@_4, F@_5, F@_6,
							       F@_7, F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12,
							       TrUserData);
'd_field_google.protobuf.FileDescriptorProto_message_type'(<<0:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   Prev, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.DescriptorProto'(Bs,
									    TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(RestF,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     cons(NewFValue,
								  Prev,
								  TrUserData),
							     F@_7, F@_8, F@_9,
							     F@_10, F@_11,
							     F@_12, TrUserData).

'd_field_google.protobuf.FileDescriptorProto_enum_type'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12,
							TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileDescriptorProto_enum_type'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3, F@_4,
							    F@_5, F@_6, F@_7,
							    F@_8, F@_9, F@_10,
							    F@_11, F@_12,
							    TrUserData);
'd_field_google.protobuf.FileDescriptorProto_enum_type'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							Prev, F@_8, F@_9, F@_10,
							F@_11, F@_12,
							TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.EnumDescriptorProto'(Bs,
										TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(RestF,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6,
							     cons(NewFValue,
								  Prev,
								  TrUserData),
							     F@_8, F@_9, F@_10,
							     F@_11, F@_12,
							     TrUserData).

'd_field_google.protobuf.FileDescriptorProto_service'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileDescriptorProto_service'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, F@_11, F@_12,
							  TrUserData);
'd_field_google.protobuf.FileDescriptorProto_service'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      Prev, F@_9, F@_10, F@_11,
						      F@_12, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.ServiceDescriptorProto'(Bs,
										   TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(RestF,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7,
							     cons(NewFValue,
								  Prev,
								  TrUserData),
							     F@_9, F@_10, F@_11,
							     F@_12, TrUserData).

'd_field_google.protobuf.FileDescriptorProto_extension'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12,
							TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileDescriptorProto_extension'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3, F@_4,
							    F@_5, F@_6, F@_7,
							    F@_8, F@_9, F@_10,
							    F@_11, F@_12,
							    TrUserData);
'd_field_google.protobuf.FileDescriptorProto_extension'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, Prev, F@_10,
							F@_11, F@_12,
							TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.FieldDescriptorProto'(Bs,
										 TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(RestF,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     cons(NewFValue,
								  Prev,
								  TrUserData),
							     F@_10, F@_11,
							     F@_12, TrUserData).

'd_field_google.protobuf.FileDescriptorProto_options'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileDescriptorProto_options'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, F@_11, F@_12,
							  TrUserData);
'd_field_google.protobuf.FileDescriptorProto_options'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, Prev, F@_11,
						      F@_12, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.FileOptions'(Bs,
									TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(RestF,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9,
							     if Prev ==
								  '$undef' ->
								    NewFValue;
								true ->
								    'merge_msg_google.protobuf.FileOptions'(Prev,
													    NewFValue,
													    TrUserData)
							     end,
							     F@_11, F@_12,
							     TrUserData).

'd_field_google.protobuf.FileDescriptorProto_source_code_info'(<<1:1,
								 X:7,
								 Rest/binary>>,
							       N, Acc, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12,
							       TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileDescriptorProto_source_code_info'(Rest,
								   N + 7,
								   X bsl N +
								     Acc,
								   F@_1, F@_2,
								   F@_3, F@_4,
								   F@_5, F@_6,
								   F@_7, F@_8,
								   F@_9, F@_10,
								   F@_11, F@_12,
								   TrUserData);
'd_field_google.protobuf.FileDescriptorProto_source_code_info'(<<0:1,
								 X:7,
								 Rest/binary>>,
							       N, Acc, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       F@_8, F@_9,
							       F@_10, Prev,
							       F@_12,
							       TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.SourceCodeInfo'(Bs,
									   TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(RestF,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10,
							     if Prev ==
								  '$undef' ->
								    NewFValue;
								true ->
								    'merge_msg_google.protobuf.SourceCodeInfo'(Prev,
													       NewFValue,
													       TrUserData)
							     end,
							     F@_12, TrUserData).

'd_field_google.protobuf.FileDescriptorProto_syntax'(<<1:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileDescriptorProto_syntax'(Rest,
							 N + 7, X bsl N + Acc,
							 F@_1, F@_2, F@_3, F@_4,
							 F@_5, F@_6, F@_7, F@_8,
							 F@_9, F@_10, F@_11,
							 F@_12, TrUserData);
'd_field_google.protobuf.FileDescriptorProto_syntax'(<<0:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     _, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(RestF,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     NewFValue,
							     TrUserData).

'skip_varint_google.protobuf.FileDescriptorProto'(<<1:1,
						    _:7, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  TrUserData) ->
    'skip_varint_google.protobuf.FileDescriptorProto'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, TrUserData);
'skip_varint_google.protobuf.FileDescriptorProto'(<<0:1,
						    _:7, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  TrUserData) ->
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, TrUserData).

'skip_length_delimited_google.protobuf.FileDescriptorProto'(<<1:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.FileDescriptorProto'(Rest,
								N + 7,
								X bsl N + Acc,
								F@_1, F@_2,
								F@_3, F@_4,
								F@_5, F@_6,
								F@_7, F@_8,
								F@_9, F@_10,
								F@_11, F@_12,
								TrUserData);
'skip_length_delimited_google.protobuf.FileDescriptorProto'(<<0:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12,
							    TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(Rest2,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, TrUserData).

'skip_group_google.protobuf.FileDescriptorProto'(Bin,
						 FNum, Z2, F@_1, F@_2, F@_3,
						 F@_4, F@_5, F@_6, F@_7, F@_8,
						 F@_9, F@_10, F@_11, F@_12,
						 TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(Rest,
							     0, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, TrUserData).

'skip_32_google.protobuf.FileDescriptorProto'(<<_:32,
						Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					      F@_5, F@_6, F@_7, F@_8, F@_9,
					      F@_10, F@_11, F@_12,
					      TrUserData) ->
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, TrUserData).

'skip_64_google.protobuf.FileDescriptorProto'(<<_:64,
						Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					      F@_5, F@_6, F@_7, F@_8, F@_9,
					      F@_10, F@_11, F@_12,
					      TrUserData) ->
    'dfp_read_field_def_google.protobuf.FileDescriptorProto'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, TrUserData).

'decode_msg_google.protobuf.DescriptorProto.ExtensionRange'(Bin,
							    TrUserData) ->
    'dfp_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(Bin,
									0, 0,
									id('$undef',
									   TrUserData),
									id('$undef',
									   TrUserData),
									TrUserData).

'dfp_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(<<8,
								      Rest/binary>>,
								    Z1, Z2,
								    F@_1, F@_2,
								    TrUserData) ->
    'd_field_google.protobuf.DescriptorProto.ExtensionRange_start'(Rest,
								   Z1, Z2, F@_1,
								   F@_2,
								   TrUserData);
'dfp_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(<<16,
								      Rest/binary>>,
								    Z1, Z2,
								    F@_1, F@_2,
								    TrUserData) ->
    'd_field_google.protobuf.DescriptorProto.ExtensionRange_end'(Rest,
								 Z1, Z2, F@_1,
								 F@_2,
								 TrUserData);
'dfp_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(<<>>,
								    0, 0, F@_1,
								    F@_2, _) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{start => F@_1}
	 end,
    if F@_2 == '$undef' -> S2;
       true -> S2#{'end' => F@_2}
    end;
'dfp_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(Other,
								    Z1, Z2,
								    F@_1, F@_2,
								    TrUserData) ->
    'dg_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(Other,
								       Z1, Z2,
								       F@_1,
								       F@_2,
								       TrUserData).

'dg_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(<<1:1,
								     X:7,
								     Rest/binary>>,
								   N, Acc, F@_1,
								   F@_2,
								   TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(Rest,
								       N + 7,
								       X bsl N +
									 Acc,
								       F@_1,
								       F@_2,
								       TrUserData);
'dg_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(<<0:1,
								     X:7,
								     Rest/binary>>,
								   N, Acc, F@_1,
								   F@_2,
								   TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_google.protobuf.DescriptorProto.ExtensionRange_start'(Rest,
									 0, 0,
									 F@_1,
									 F@_2,
									 TrUserData);
      16 ->
	  'd_field_google.protobuf.DescriptorProto.ExtensionRange_end'(Rest,
								       0, 0,
								       F@_1,
								       F@_2,
								       TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.DescriptorProto.ExtensionRange'(Rest,
									     0,
									     0,
									     F@_1,
									     F@_2,
									     TrUserData);
	    1 ->
		'skip_64_google.protobuf.DescriptorProto.ExtensionRange'(Rest,
									 0, 0,
									 F@_1,
									 F@_2,
									 TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.DescriptorProto.ExtensionRange'(Rest,
										       0,
										       0,
										       F@_1,
										       F@_2,
										       TrUserData);
	    3 ->
		'skip_group_google.protobuf.DescriptorProto.ExtensionRange'(Rest,
									    Key
									      bsr
									      3,
									    0,
									    F@_1,
									    F@_2,
									    TrUserData);
	    5 ->
		'skip_32_google.protobuf.DescriptorProto.ExtensionRange'(Rest,
									 0, 0,
									 F@_1,
									 F@_2,
									 TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(<<>>,
								   0, 0, F@_1,
								   F@_2, _) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{start => F@_1}
	 end,
    if F@_2 == '$undef' -> S2;
       true -> S2#{'end' => F@_2}
    end.

'd_field_google.protobuf.DescriptorProto.ExtensionRange_start'(<<1:1,
								 X:7,
								 Rest/binary>>,
							       N, Acc, F@_1,
							       F@_2, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.DescriptorProto.ExtensionRange_start'(Rest,
								   N + 7,
								   X bsl N +
								     Acc,
								   F@_1, F@_2,
								   TrUserData);
'd_field_google.protobuf.DescriptorProto.ExtensionRange_start'(<<0:1,
								 X:7,
								 Rest/binary>>,
							       N, Acc, _, F@_2,
							       TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(RestF,
									0, 0,
									NewFValue,
									F@_2,
									TrUserData).

'd_field_google.protobuf.DescriptorProto.ExtensionRange_end'(<<1:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.DescriptorProto.ExtensionRange_end'(Rest,
								 N + 7,
								 X bsl N + Acc,
								 F@_1, F@_2,
								 TrUserData);
'd_field_google.protobuf.DescriptorProto.ExtensionRange_end'(<<0:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, _,
							     TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(RestF,
									0, 0,
									F@_1,
									NewFValue,
									TrUserData).

'skip_varint_google.protobuf.DescriptorProto.ExtensionRange'(<<1:1,
							       _:7,
							       Rest/binary>>,
							     Z1, Z2, F@_1, F@_2,
							     TrUserData) ->
    'skip_varint_google.protobuf.DescriptorProto.ExtensionRange'(Rest,
								 Z1, Z2, F@_1,
								 F@_2,
								 TrUserData);
'skip_varint_google.protobuf.DescriptorProto.ExtensionRange'(<<0:1,
							       _:7,
							       Rest/binary>>,
							     Z1, Z2, F@_1, F@_2,
							     TrUserData) ->
    'dfp_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(Rest,
									Z1, Z2,
									F@_1,
									F@_2,
									TrUserData).

'skip_length_delimited_google.protobuf.DescriptorProto.ExtensionRange'(<<1:1,
									 X:7,
									 Rest/binary>>,
								       N, Acc,
								       F@_1,
								       F@_2,
								       TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.DescriptorProto.ExtensionRange'(Rest,
									   N +
									     7,
									   X bsl
									     N
									     +
									     Acc,
									   F@_1,
									   F@_2,
									   TrUserData);
'skip_length_delimited_google.protobuf.DescriptorProto.ExtensionRange'(<<0:1,
									 X:7,
									 Rest/binary>>,
								       N, Acc,
								       F@_1,
								       F@_2,
								       TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(Rest2,
									0, 0,
									F@_1,
									F@_2,
									TrUserData).

'skip_group_google.protobuf.DescriptorProto.ExtensionRange'(Bin,
							    FNum, Z2, F@_1,
							    F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(Rest,
									0, Z2,
									F@_1,
									F@_2,
									TrUserData).

'skip_32_google.protobuf.DescriptorProto.ExtensionRange'(<<_:32,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 TrUserData) ->
    'dfp_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(Rest,
									Z1, Z2,
									F@_1,
									F@_2,
									TrUserData).

'skip_64_google.protobuf.DescriptorProto.ExtensionRange'(<<_:64,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 TrUserData) ->
    'dfp_read_field_def_google.protobuf.DescriptorProto.ExtensionRange'(Rest,
									Z1, Z2,
									F@_1,
									F@_2,
									TrUserData).

'decode_msg_google.protobuf.DescriptorProto.ReservedRange'(Bin,
							   TrUserData) ->
    'dfp_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(Bin,
								       0, 0,
								       id('$undef',
									  TrUserData),
								       id('$undef',
									  TrUserData),
								       TrUserData).

'dfp_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(<<8,
								     Rest/binary>>,
								   Z1, Z2, F@_1,
								   F@_2,
								   TrUserData) ->
    'd_field_google.protobuf.DescriptorProto.ReservedRange_start'(Rest,
								  Z1, Z2, F@_1,
								  F@_2,
								  TrUserData);
'dfp_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(<<16,
								     Rest/binary>>,
								   Z1, Z2, F@_1,
								   F@_2,
								   TrUserData) ->
    'd_field_google.protobuf.DescriptorProto.ReservedRange_end'(Rest,
								Z1, Z2, F@_1,
								F@_2,
								TrUserData);
'dfp_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(<<>>,
								   0, 0, F@_1,
								   F@_2, _) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{start => F@_1}
	 end,
    if F@_2 == '$undef' -> S2;
       true -> S2#{'end' => F@_2}
    end;
'dfp_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(Other,
								   Z1, Z2, F@_1,
								   F@_2,
								   TrUserData) ->
    'dg_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(Other,
								      Z1, Z2,
								      F@_1,
								      F@_2,
								      TrUserData).

'dg_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(<<1:1,
								    X:7,
								    Rest/binary>>,
								  N, Acc, F@_1,
								  F@_2,
								  TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(Rest,
								      N + 7,
								      X bsl N +
									Acc,
								      F@_1,
								      F@_2,
								      TrUserData);
'dg_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(<<0:1,
								    X:7,
								    Rest/binary>>,
								  N, Acc, F@_1,
								  F@_2,
								  TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_google.protobuf.DescriptorProto.ReservedRange_start'(Rest,
									0, 0,
									F@_1,
									F@_2,
									TrUserData);
      16 ->
	  'd_field_google.protobuf.DescriptorProto.ReservedRange_end'(Rest,
								      0, 0,
								      F@_1,
								      F@_2,
								      TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.DescriptorProto.ReservedRange'(Rest,
									    0,
									    0,
									    F@_1,
									    F@_2,
									    TrUserData);
	    1 ->
		'skip_64_google.protobuf.DescriptorProto.ReservedRange'(Rest,
									0, 0,
									F@_1,
									F@_2,
									TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.DescriptorProto.ReservedRange'(Rest,
										      0,
										      0,
										      F@_1,
										      F@_2,
										      TrUserData);
	    3 ->
		'skip_group_google.protobuf.DescriptorProto.ReservedRange'(Rest,
									   Key
									     bsr
									     3,
									   0,
									   F@_1,
									   F@_2,
									   TrUserData);
	    5 ->
		'skip_32_google.protobuf.DescriptorProto.ReservedRange'(Rest,
									0, 0,
									F@_1,
									F@_2,
									TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(<<>>,
								  0, 0, F@_1,
								  F@_2, _) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{start => F@_1}
	 end,
    if F@_2 == '$undef' -> S2;
       true -> S2#{'end' => F@_2}
    end.

'd_field_google.protobuf.DescriptorProto.ReservedRange_start'(<<1:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      F@_2, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.DescriptorProto.ReservedRange_start'(Rest,
								  N + 7,
								  X bsl N + Acc,
								  F@_1, F@_2,
								  TrUserData);
'd_field_google.protobuf.DescriptorProto.ReservedRange_start'(<<0:1,
								X:7,
								Rest/binary>>,
							      N, Acc, _, F@_2,
							      TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(RestF,
								       0, 0,
								       NewFValue,
								       F@_2,
								       TrUserData).

'd_field_google.protobuf.DescriptorProto.ReservedRange_end'(<<1:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.DescriptorProto.ReservedRange_end'(Rest,
								N + 7,
								X bsl N + Acc,
								F@_1, F@_2,
								TrUserData);
'd_field_google.protobuf.DescriptorProto.ReservedRange_end'(<<0:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, _,
							    TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(RestF,
								       0, 0,
								       F@_1,
								       NewFValue,
								       TrUserData).

'skip_varint_google.protobuf.DescriptorProto.ReservedRange'(<<1:1,
							      _:7,
							      Rest/binary>>,
							    Z1, Z2, F@_1, F@_2,
							    TrUserData) ->
    'skip_varint_google.protobuf.DescriptorProto.ReservedRange'(Rest,
								Z1, Z2, F@_1,
								F@_2,
								TrUserData);
'skip_varint_google.protobuf.DescriptorProto.ReservedRange'(<<0:1,
							      _:7,
							      Rest/binary>>,
							    Z1, Z2, F@_1, F@_2,
							    TrUserData) ->
    'dfp_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(Rest,
								       Z1, Z2,
								       F@_1,
								       F@_2,
								       TrUserData).

'skip_length_delimited_google.protobuf.DescriptorProto.ReservedRange'(<<1:1,
									X:7,
									Rest/binary>>,
								      N, Acc,
								      F@_1,
								      F@_2,
								      TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.DescriptorProto.ReservedRange'(Rest,
									  N + 7,
									  X bsl
									    N
									    +
									    Acc,
									  F@_1,
									  F@_2,
									  TrUserData);
'skip_length_delimited_google.protobuf.DescriptorProto.ReservedRange'(<<0:1,
									X:7,
									Rest/binary>>,
								      N, Acc,
								      F@_1,
								      F@_2,
								      TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(Rest2,
								       0, 0,
								       F@_1,
								       F@_2,
								       TrUserData).

'skip_group_google.protobuf.DescriptorProto.ReservedRange'(Bin,
							   FNum, Z2, F@_1, F@_2,
							   TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(Rest,
								       0, Z2,
								       F@_1,
								       F@_2,
								       TrUserData).

'skip_32_google.protobuf.DescriptorProto.ReservedRange'(<<_:32,
							  Rest/binary>>,
							Z1, Z2, F@_1, F@_2,
							TrUserData) ->
    'dfp_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(Rest,
								       Z1, Z2,
								       F@_1,
								       F@_2,
								       TrUserData).

'skip_64_google.protobuf.DescriptorProto.ReservedRange'(<<_:64,
							  Rest/binary>>,
							Z1, Z2, F@_1, F@_2,
							TrUserData) ->
    'dfp_read_field_def_google.protobuf.DescriptorProto.ReservedRange'(Rest,
								       Z1, Z2,
								       F@_1,
								       F@_2,
								       TrUserData).

'decode_msg_google.protobuf.DescriptorProto'(Bin,
					     TrUserData) ->
    'dfp_read_field_def_google.protobuf.DescriptorProto'(Bin,
							 0, 0,
							 id('$undef',
							    TrUserData),
							 id([], TrUserData),
							 id([], TrUserData),
							 id([], TrUserData),
							 id([], TrUserData),
							 id([], TrUserData),
							 id([], TrUserData),
							 id('$undef',
							    TrUserData),
							 id([], TrUserData),
							 id([], TrUserData),
							 TrUserData).

'dfp_read_field_def_google.protobuf.DescriptorProto'(<<10,
						       Rest/binary>>,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     TrUserData) ->
    'd_field_google.protobuf.DescriptorProto_name'(Rest, Z1,
						   Z2, F@_1, F@_2, F@_3, F@_4,
						   F@_5, F@_6, F@_7, F@_8, F@_9,
						   F@_10, TrUserData);
'dfp_read_field_def_google.protobuf.DescriptorProto'(<<18,
						       Rest/binary>>,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     TrUserData) ->
    'd_field_google.protobuf.DescriptorProto_field'(Rest,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10,
						    TrUserData);
'dfp_read_field_def_google.protobuf.DescriptorProto'(<<50,
						       Rest/binary>>,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     TrUserData) ->
    'd_field_google.protobuf.DescriptorProto_extension'(Rest,
							Z1, Z2, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							TrUserData);
'dfp_read_field_def_google.protobuf.DescriptorProto'(<<26,
						       Rest/binary>>,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     TrUserData) ->
    'd_field_google.protobuf.DescriptorProto_nested_type'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData);
'dfp_read_field_def_google.protobuf.DescriptorProto'(<<34,
						       Rest/binary>>,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     TrUserData) ->
    'd_field_google.protobuf.DescriptorProto_enum_type'(Rest,
							Z1, Z2, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							TrUserData);
'dfp_read_field_def_google.protobuf.DescriptorProto'(<<42,
						       Rest/binary>>,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     TrUserData) ->
    'd_field_google.protobuf.DescriptorProto_extension_range'(Rest,
							      Z1, Z2, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      TrUserData);
'dfp_read_field_def_google.protobuf.DescriptorProto'(<<66,
						       Rest/binary>>,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     TrUserData) ->
    'd_field_google.protobuf.DescriptorProto_oneof_decl'(Rest,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData);
'dfp_read_field_def_google.protobuf.DescriptorProto'(<<58,
						       Rest/binary>>,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     TrUserData) ->
    'd_field_google.protobuf.DescriptorProto_options'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10,
						      TrUserData);
'dfp_read_field_def_google.protobuf.DescriptorProto'(<<74,
						       Rest/binary>>,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     TrUserData) ->
    'd_field_google.protobuf.DescriptorProto_reserved_range'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10,
							     TrUserData);
'dfp_read_field_def_google.protobuf.DescriptorProto'(<<82,
						       Rest/binary>>,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     TrUserData) ->
    'd_field_google.protobuf.DescriptorProto_reserved_name'(Rest,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10,
							    TrUserData);
'dfp_read_field_def_google.protobuf.DescriptorProto'(<<>>,
						     0, 0, F@_1, R1, R2, R3, R4,
						     R5, R6, F@_8, R7, R8,
						     TrUserData) ->
    S1 = #{reserved_name => lists_reverse(R8, TrUserData)},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{name => F@_1}
	 end,
    S3 = if R1 == '$undef' -> S2;
	    true -> S2#{field => lists_reverse(R1, TrUserData)}
	 end,
    S4 = if R2 == '$undef' -> S3;
	    true -> S3#{extension => lists_reverse(R2, TrUserData)}
	 end,
    S5 = if R3 == '$undef' -> S4;
	    true ->
		S4#{nested_type => lists_reverse(R3, TrUserData)}
	 end,
    S6 = if R4 == '$undef' -> S5;
	    true -> S5#{enum_type => lists_reverse(R4, TrUserData)}
	 end,
    S7 = if R5 == '$undef' -> S6;
	    true ->
		S6#{extension_range => lists_reverse(R5, TrUserData)}
	 end,
    S8 = if R6 == '$undef' -> S7;
	    true -> S7#{oneof_decl => lists_reverse(R6, TrUserData)}
	 end,
    S9 = if F@_8 == '$undef' -> S8;
	    true -> S8#{options => F@_8}
	 end,
    if R7 == '$undef' -> S9;
       true ->
	   S9#{reserved_range => lists_reverse(R7, TrUserData)}
    end;
'dfp_read_field_def_google.protobuf.DescriptorProto'(Other,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     TrUserData) ->
    'dg_read_field_def_google.protobuf.DescriptorProto'(Other,
							Z1, Z2, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							TrUserData).

'dg_read_field_def_google.protobuf.DescriptorProto'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10,
						    TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.DescriptorProto'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, F@_2, F@_3, F@_4,
							F@_5, F@_6, F@_7, F@_8,
							F@_9, F@_10,
							TrUserData);
'dg_read_field_def_google.protobuf.DescriptorProto'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10,
						    TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_google.protobuf.DescriptorProto_name'(Rest, 0,
							 0, F@_1, F@_2, F@_3,
							 F@_4, F@_5, F@_6, F@_7,
							 F@_8, F@_9, F@_10,
							 TrUserData);
      18 ->
	  'd_field_google.protobuf.DescriptorProto_field'(Rest, 0,
							  0, F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, TrUserData);
      50 ->
	  'd_field_google.protobuf.DescriptorProto_extension'(Rest,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7, F@_8,
							      F@_9, F@_10,
							      TrUserData);
      26 ->
	  'd_field_google.protobuf.DescriptorProto_nested_type'(Rest,
								0, 0, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10,
								TrUserData);
      34 ->
	  'd_field_google.protobuf.DescriptorProto_enum_type'(Rest,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7, F@_8,
							      F@_9, F@_10,
							      TrUserData);
      42 ->
	  'd_field_google.protobuf.DescriptorProto_extension_range'(Rest,
								    0, 0, F@_1,
								    F@_2, F@_3,
								    F@_4, F@_5,
								    F@_6, F@_7,
								    F@_8, F@_9,
								    F@_10,
								    TrUserData);
      66 ->
	  'd_field_google.protobuf.DescriptorProto_oneof_decl'(Rest,
							       0, 0, F@_1, F@_2,
							       F@_3, F@_4, F@_5,
							       F@_6, F@_7, F@_8,
							       F@_9, F@_10,
							       TrUserData);
      58 ->
	  'd_field_google.protobuf.DescriptorProto_options'(Rest,
							    0, 0, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10,
							    TrUserData);
      74 ->
	  'd_field_google.protobuf.DescriptorProto_reserved_range'(Rest,
								   0, 0, F@_1,
								   F@_2, F@_3,
								   F@_4, F@_5,
								   F@_6, F@_7,
								   F@_8, F@_9,
								   F@_10,
								   TrUserData);
      82 ->
	  'd_field_google.protobuf.DescriptorProto_reserved_name'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6, F@_7,
								  F@_8, F@_9,
								  F@_10,
								  TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.DescriptorProto'(Rest, 0,
							      0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7, F@_8,
							      F@_9, F@_10,
							      TrUserData);
	    1 ->
		'skip_64_google.protobuf.DescriptorProto'(Rest, 0, 0,
							  F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.DescriptorProto'(Rest,
									0, 0,
									F@_1,
									F@_2,
									F@_3,
									F@_4,
									F@_5,
									F@_6,
									F@_7,
									F@_8,
									F@_9,
									F@_10,
									TrUserData);
	    3 ->
		'skip_group_google.protobuf.DescriptorProto'(Rest,
							     Key bsr 3, 0, F@_1,
							     F@_2, F@_3, F@_4,
							     F@_5, F@_6, F@_7,
							     F@_8, F@_9, F@_10,
							     TrUserData);
	    5 ->
		'skip_32_google.protobuf.DescriptorProto'(Rest, 0, 0,
							  F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.DescriptorProto'(<<>>,
						    0, 0, F@_1, R1, R2, R3, R4,
						    R5, R6, F@_8, R7, R8,
						    TrUserData) ->
    S1 = #{reserved_name => lists_reverse(R8, TrUserData)},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{name => F@_1}
	 end,
    S3 = if R1 == '$undef' -> S2;
	    true -> S2#{field => lists_reverse(R1, TrUserData)}
	 end,
    S4 = if R2 == '$undef' -> S3;
	    true -> S3#{extension => lists_reverse(R2, TrUserData)}
	 end,
    S5 = if R3 == '$undef' -> S4;
	    true ->
		S4#{nested_type => lists_reverse(R3, TrUserData)}
	 end,
    S6 = if R4 == '$undef' -> S5;
	    true -> S5#{enum_type => lists_reverse(R4, TrUserData)}
	 end,
    S7 = if R5 == '$undef' -> S6;
	    true ->
		S6#{extension_range => lists_reverse(R5, TrUserData)}
	 end,
    S8 = if R6 == '$undef' -> S7;
	    true -> S7#{oneof_decl => lists_reverse(R6, TrUserData)}
	 end,
    S9 = if F@_8 == '$undef' -> S8;
	    true -> S8#{options => F@_8}
	 end,
    if R7 == '$undef' -> S9;
       true ->
	   S9#{reserved_range => lists_reverse(R7, TrUserData)}
    end.

'd_field_google.protobuf.DescriptorProto_name'(<<1:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.DescriptorProto_name'(Rest,
						   N + 7, X bsl N + Acc, F@_1,
						   F@_2, F@_3, F@_4, F@_5, F@_6,
						   F@_7, F@_8, F@_9, F@_10,
						   TrUserData);
'd_field_google.protobuf.DescriptorProto_name'(<<0:1,
						 X:7, Rest/binary>>,
					       N, Acc, _, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.DescriptorProto'(RestF,
							 0, 0, NewFValue, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData).

'd_field_google.protobuf.DescriptorProto_field'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.DescriptorProto_field'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    F@_2, F@_3, F@_4, F@_5,
						    F@_6, F@_7, F@_8, F@_9,
						    F@_10, TrUserData);
'd_field_google.protobuf.DescriptorProto_field'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, Prev, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.FieldDescriptorProto'(Bs,
										 TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.DescriptorProto'(RestF,
							 0, 0, F@_1,
							 cons(NewFValue, Prev,
							      TrUserData),
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData).

'd_field_google.protobuf.DescriptorProto_extension'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10,
						    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.DescriptorProto_extension'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, F@_2, F@_3, F@_4,
							F@_5, F@_6, F@_7, F@_8,
							F@_9, F@_10,
							TrUserData);
'd_field_google.protobuf.DescriptorProto_extension'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, Prev,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10,
						    TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.FieldDescriptorProto'(Bs,
										 TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.DescriptorProto'(RestF,
							 0, 0, F@_1, F@_2,
							 cons(NewFValue, Prev,
							      TrUserData),
							 F@_4, F@_5, F@_6, F@_7,
							 F@_8, F@_9, F@_10,
							 TrUserData).

'd_field_google.protobuf.DescriptorProto_nested_type'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10,
						      TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.DescriptorProto_nested_type'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, TrUserData);
'd_field_google.protobuf.DescriptorProto_nested_type'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      Prev, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10,
						      TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.DescriptorProto'(Bs,
									    TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.DescriptorProto'(RestF,
							 0, 0, F@_1, F@_2, F@_3,
							 cons(NewFValue, Prev,
							      TrUserData),
							 F@_5, F@_6, F@_7, F@_8,
							 F@_9, F@_10,
							 TrUserData).

'd_field_google.protobuf.DescriptorProto_enum_type'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10,
						    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.DescriptorProto_enum_type'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, F@_2, F@_3, F@_4,
							F@_5, F@_6, F@_7, F@_8,
							F@_9, F@_10,
							TrUserData);
'd_field_google.protobuf.DescriptorProto_enum_type'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, Prev, F@_6, F@_7,
						    F@_8, F@_9, F@_10,
						    TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.EnumDescriptorProto'(Bs,
										TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.DescriptorProto'(RestF,
							 0, 0, F@_1, F@_2, F@_3,
							 F@_4,
							 cons(NewFValue, Prev,
							      TrUserData),
							 F@_6, F@_7, F@_8, F@_9,
							 F@_10, TrUserData).

'd_field_google.protobuf.DescriptorProto_extension_range'(<<1:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.DescriptorProto_extension_range'(Rest,
							      N + 7,
							      X bsl N + Acc,
							      F@_1, F@_2, F@_3,
							      F@_4, F@_5, F@_6,
							      F@_7, F@_8, F@_9,
							      F@_10,
							      TrUserData);
'd_field_google.protobuf.DescriptorProto_extension_range'(<<0:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  Prev, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.DescriptorProto.ExtensionRange'(Bs,
											   TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.DescriptorProto'(RestF,
							 0, 0, F@_1, F@_2, F@_3,
							 F@_4, F@_5,
							 cons(NewFValue, Prev,
							      TrUserData),
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData).

'd_field_google.protobuf.DescriptorProto_oneof_decl'(<<1:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.DescriptorProto_oneof_decl'(Rest,
							 N + 7, X bsl N + Acc,
							 F@_1, F@_2, F@_3, F@_4,
							 F@_5, F@_6, F@_7, F@_8,
							 F@_9, F@_10,
							 TrUserData);
'd_field_google.protobuf.DescriptorProto_oneof_decl'(<<0:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, Prev,
						     F@_8, F@_9, F@_10,
						     TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.OneofDescriptorProto'(Bs,
										 TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.DescriptorProto'(RestF,
							 0, 0, F@_1, F@_2, F@_3,
							 F@_4, F@_5, F@_6,
							 cons(NewFValue, Prev,
							      TrUserData),
							 F@_8, F@_9, F@_10,
							 TrUserData).

'd_field_google.protobuf.DescriptorProto_options'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.DescriptorProto_options'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7, F@_8,
						      F@_9, F@_10, TrUserData);
'd_field_google.protobuf.DescriptorProto_options'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, Prev,
						  F@_9, F@_10, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.MessageOptions'(Bs,
									   TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.DescriptorProto'(RestF,
							 0, 0, F@_1, F@_2, F@_3,
							 F@_4, F@_5, F@_6, F@_7,
							 if Prev == '$undef' ->
								NewFValue;
							    true ->
								'merge_msg_google.protobuf.MessageOptions'(Prev,
													   NewFValue,
													   TrUserData)
							 end,
							 F@_9, F@_10,
							 TrUserData).

'd_field_google.protobuf.DescriptorProto_reserved_range'(<<1:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.DescriptorProto_reserved_range'(Rest,
							     N + 7,
							     X bsl N + Acc,
							     F@_1, F@_2, F@_3,
							     F@_4, F@_5, F@_6,
							     F@_7, F@_8, F@_9,
							     F@_10, TrUserData);
'd_field_google.protobuf.DescriptorProto_reserved_range'(<<0:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, Prev,
							 F@_10, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.DescriptorProto.ReservedRange'(Bs,
											  TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.DescriptorProto'(RestF,
							 0, 0, F@_1, F@_2, F@_3,
							 F@_4, F@_5, F@_6, F@_7,
							 F@_8,
							 cons(NewFValue, Prev,
							      TrUserData),
							 F@_10, TrUserData).

'd_field_google.protobuf.DescriptorProto_reserved_name'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.DescriptorProto_reserved_name'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3, F@_4,
							    F@_5, F@_6, F@_7,
							    F@_8, F@_9, F@_10,
							    TrUserData);
'd_field_google.protobuf.DescriptorProto_reserved_name'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, Prev,
							TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.DescriptorProto'(RestF,
							 0, 0, F@_1, F@_2, F@_3,
							 F@_4, F@_5, F@_6, F@_7,
							 F@_8, F@_9,
							 cons(NewFValue, Prev,
							      TrUserData),
							 TrUserData).

'skip_varint_google.protobuf.DescriptorProto'(<<1:1,
						_:7, Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					      F@_5, F@_6, F@_7, F@_8, F@_9,
					      F@_10, TrUserData) ->
    'skip_varint_google.protobuf.DescriptorProto'(Rest, Z1,
						  Z2, F@_1, F@_2, F@_3, F@_4,
						  F@_5, F@_6, F@_7, F@_8, F@_9,
						  F@_10, TrUserData);
'skip_varint_google.protobuf.DescriptorProto'(<<0:1,
						_:7, Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					      F@_5, F@_6, F@_7, F@_8, F@_9,
					      F@_10, TrUserData) ->
    'dfp_read_field_def_google.protobuf.DescriptorProto'(Rest,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData).

'skip_length_delimited_google.protobuf.DescriptorProto'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.DescriptorProto'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3, F@_4,
							    F@_5, F@_6, F@_7,
							    F@_8, F@_9, F@_10,
							    TrUserData);
'skip_length_delimited_google.protobuf.DescriptorProto'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.DescriptorProto'(Rest2,
							 0, 0, F@_1, F@_2, F@_3,
							 F@_4, F@_5, F@_6, F@_7,
							 F@_8, F@_9, F@_10,
							 TrUserData).

'skip_group_google.protobuf.DescriptorProto'(Bin, FNum,
					     Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					     F@_6, F@_7, F@_8, F@_9, F@_10,
					     TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.DescriptorProto'(Rest,
							 0, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData).

'skip_32_google.protobuf.DescriptorProto'(<<_:32,
					    Rest/binary>>,
					  Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					  F@_6, F@_7, F@_8, F@_9, F@_10,
					  TrUserData) ->
    'dfp_read_field_def_google.protobuf.DescriptorProto'(Rest,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData).

'skip_64_google.protobuf.DescriptorProto'(<<_:64,
					    Rest/binary>>,
					  Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					  F@_6, F@_7, F@_8, F@_9, F@_10,
					  TrUserData) ->
    'dfp_read_field_def_google.protobuf.DescriptorProto'(Rest,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData).

'decode_msg_google.protobuf.FieldDescriptorProto'(Bin,
						  TrUserData) ->
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(Bin,
							      0, 0,
							      id('$undef',
								 TrUserData),
							      id('$undef',
								 TrUserData),
							      id('$undef',
								 TrUserData),
							      id('$undef',
								 TrUserData),
							      id('$undef',
								 TrUserData),
							      id('$undef',
								 TrUserData),
							      id('$undef',
								 TrUserData),
							      id('$undef',
								 TrUserData),
							      id('$undef',
								 TrUserData),
							      id('$undef',
								 TrUserData),
							      TrUserData).

'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(<<10,
							    Rest/binary>>,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData) ->
    'd_field_google.protobuf.FieldDescriptorProto_name'(Rest,
							Z1, Z2, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							TrUserData);
'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(<<24,
							    Rest/binary>>,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData) ->
    'd_field_google.protobuf.FieldDescriptorProto_number'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData);
'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(<<32,
							    Rest/binary>>,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData) ->
    'd_field_google.protobuf.FieldDescriptorProto_label'(Rest,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData);
'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(<<40,
							    Rest/binary>>,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData) ->
    'd_field_google.protobuf.FieldDescriptorProto_type'(Rest,
							Z1, Z2, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							TrUserData);
'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(<<50,
							    Rest/binary>>,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData) ->
    'd_field_google.protobuf.FieldDescriptorProto_type_name'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10,
							     TrUserData);
'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(<<18,
							    Rest/binary>>,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData) ->
    'd_field_google.protobuf.FieldDescriptorProto_extendee'(Rest,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10,
							    TrUserData);
'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(<<58,
							    Rest/binary>>,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData) ->
    'd_field_google.protobuf.FieldDescriptorProto_default_value'(Rest,
								 Z1, Z2, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 F@_8, F@_9,
								 F@_10,
								 TrUserData);
'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(<<72,
							    Rest/binary>>,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData) ->
    'd_field_google.protobuf.FieldDescriptorProto_oneof_index'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       F@_8, F@_9,
							       F@_10,
							       TrUserData);
'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(<<82,
							    Rest/binary>>,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData) ->
    'd_field_google.protobuf.FieldDescriptorProto_json_name'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10,
							     TrUserData);
'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(<<66,
							    Rest/binary>>,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData) ->
    'd_field_google.protobuf.FieldDescriptorProto_options'(Rest,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10,
							   TrUserData);
'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(<<>>,
							  0, 0, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, _) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{name => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{number => F@_2}
	 end,
    S4 = if F@_3 == '$undef' -> S3;
	    true -> S3#{label => F@_3}
	 end,
    S5 = if F@_4 == '$undef' -> S4;
	    true -> S4#{type => F@_4}
	 end,
    S6 = if F@_5 == '$undef' -> S5;
	    true -> S5#{type_name => F@_5}
	 end,
    S7 = if F@_6 == '$undef' -> S6;
	    true -> S6#{extendee => F@_6}
	 end,
    S8 = if F@_7 == '$undef' -> S7;
	    true -> S7#{default_value => F@_7}
	 end,
    S9 = if F@_8 == '$undef' -> S8;
	    true -> S8#{oneof_index => F@_8}
	 end,
    S10 = if F@_9 == '$undef' -> S9;
	     true -> S9#{json_name => F@_9}
	  end,
    if F@_10 == '$undef' -> S10;
       true -> S10#{options => F@_10}
    end;
'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(Other,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10,
							  TrUserData) ->
    'dg_read_field_def_google.protobuf.FieldDescriptorProto'(Other,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10,
							     TrUserData).

'dg_read_field_def_google.protobuf.FieldDescriptorProto'(<<1:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.FieldDescriptorProto'(Rest,
							     N + 7,
							     X bsl N + Acc,
							     F@_1, F@_2, F@_3,
							     F@_4, F@_5, F@_6,
							     F@_7, F@_8, F@_9,
							     F@_10, TrUserData);
'dg_read_field_def_google.protobuf.FieldDescriptorProto'(<<0:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_google.protobuf.FieldDescriptorProto_name'(Rest,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7, F@_8,
							      F@_9, F@_10,
							      TrUserData);
      24 ->
	  'd_field_google.protobuf.FieldDescriptorProto_number'(Rest,
								0, 0, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10,
								TrUserData);
      32 ->
	  'd_field_google.protobuf.FieldDescriptorProto_label'(Rest,
							       0, 0, F@_1, F@_2,
							       F@_3, F@_4, F@_5,
							       F@_6, F@_7, F@_8,
							       F@_9, F@_10,
							       TrUserData);
      40 ->
	  'd_field_google.protobuf.FieldDescriptorProto_type'(Rest,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7, F@_8,
							      F@_9, F@_10,
							      TrUserData);
      50 ->
	  'd_field_google.protobuf.FieldDescriptorProto_type_name'(Rest,
								   0, 0, F@_1,
								   F@_2, F@_3,
								   F@_4, F@_5,
								   F@_6, F@_7,
								   F@_8, F@_9,
								   F@_10,
								   TrUserData);
      18 ->
	  'd_field_google.protobuf.FieldDescriptorProto_extendee'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6, F@_7,
								  F@_8, F@_9,
								  F@_10,
								  TrUserData);
      58 ->
	  'd_field_google.protobuf.FieldDescriptorProto_default_value'(Rest,
								       0, 0,
								       F@_1,
								       F@_2,
								       F@_3,
								       F@_4,
								       F@_5,
								       F@_6,
								       F@_7,
								       F@_8,
								       F@_9,
								       F@_10,
								       TrUserData);
      72 ->
	  'd_field_google.protobuf.FieldDescriptorProto_oneof_index'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     F@_4, F@_5,
								     F@_6, F@_7,
								     F@_8, F@_9,
								     F@_10,
								     TrUserData);
      82 ->
	  'd_field_google.protobuf.FieldDescriptorProto_json_name'(Rest,
								   0, 0, F@_1,
								   F@_2, F@_3,
								   F@_4, F@_5,
								   F@_6, F@_7,
								   F@_8, F@_9,
								   F@_10,
								   TrUserData);
      66 ->
	  'd_field_google.protobuf.FieldDescriptorProto_options'(Rest,
								 0, 0, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 F@_8, F@_9,
								 F@_10,
								 TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.FieldDescriptorProto'(Rest,
								   0, 0, F@_1,
								   F@_2, F@_3,
								   F@_4, F@_5,
								   F@_6, F@_7,
								   F@_8, F@_9,
								   F@_10,
								   TrUserData);
	    1 ->
		'skip_64_google.protobuf.FieldDescriptorProto'(Rest, 0,
							       0, F@_1, F@_2,
							       F@_3, F@_4, F@_5,
							       F@_6, F@_7, F@_8,
							       F@_9, F@_10,
							       TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.FieldDescriptorProto'(Rest,
									     0,
									     0,
									     F@_1,
									     F@_2,
									     F@_3,
									     F@_4,
									     F@_5,
									     F@_6,
									     F@_7,
									     F@_8,
									     F@_9,
									     F@_10,
									     TrUserData);
	    3 ->
		'skip_group_google.protobuf.FieldDescriptorProto'(Rest,
								  Key bsr 3, 0,
								  F@_1, F@_2,
								  F@_3, F@_4,
								  F@_5, F@_6,
								  F@_7, F@_8,
								  F@_9, F@_10,
								  TrUserData);
	    5 ->
		'skip_32_google.protobuf.FieldDescriptorProto'(Rest, 0,
							       0, F@_1, F@_2,
							       F@_3, F@_4, F@_5,
							       F@_6, F@_7, F@_8,
							       F@_9, F@_10,
							       TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.FieldDescriptorProto'(<<>>,
							 0, 0, F@_1, F@_2, F@_3,
							 F@_4, F@_5, F@_6, F@_7,
							 F@_8, F@_9, F@_10,
							 _) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{name => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{number => F@_2}
	 end,
    S4 = if F@_3 == '$undef' -> S3;
	    true -> S3#{label => F@_3}
	 end,
    S5 = if F@_4 == '$undef' -> S4;
	    true -> S4#{type => F@_4}
	 end,
    S6 = if F@_5 == '$undef' -> S5;
	    true -> S5#{type_name => F@_5}
	 end,
    S7 = if F@_6 == '$undef' -> S6;
	    true -> S6#{extendee => F@_6}
	 end,
    S8 = if F@_7 == '$undef' -> S7;
	    true -> S7#{default_value => F@_7}
	 end,
    S9 = if F@_8 == '$undef' -> S8;
	    true -> S8#{oneof_index => F@_8}
	 end,
    S10 = if F@_9 == '$undef' -> S9;
	     true -> S9#{json_name => F@_9}
	  end,
    if F@_10 == '$undef' -> S10;
       true -> S10#{options => F@_10}
    end.

'd_field_google.protobuf.FieldDescriptorProto_name'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10,
						    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldDescriptorProto_name'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, F@_2, F@_3, F@_4,
							F@_5, F@_6, F@_7, F@_8,
							F@_9, F@_10,
							TrUserData);
'd_field_google.protobuf.FieldDescriptorProto_name'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, _, F@_2, F@_3, F@_4,
						    F@_5, F@_6, F@_7, F@_8,
						    F@_9, F@_10, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(RestF,
							      0, 0, NewFValue,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      TrUserData).

'd_field_google.protobuf.FieldDescriptorProto_number'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10,
						      TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldDescriptorProto_number'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, TrUserData);
'd_field_google.protobuf.FieldDescriptorProto_number'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, _, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10,
						      TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(RestF,
							      0, 0, F@_1,
							      NewFValue, F@_3,
							      F@_4, F@_5, F@_6,
							      F@_7, F@_8, F@_9,
							      F@_10,
							      TrUserData).

'd_field_google.protobuf.FieldDescriptorProto_label'(<<1:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldDescriptorProto_label'(Rest,
							 N + 7, X bsl N + Acc,
							 F@_1, F@_2, F@_3, F@_4,
							 F@_5, F@_6, F@_7, F@_8,
							 F@_9, F@_10,
							 TrUserData);
'd_field_google.protobuf.FieldDescriptorProto_label'(<<0:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, _,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     TrUserData) ->
    {NewFValue, RestF} =
	{id('d_enum_google.protobuf.FieldDescriptorProto.Label'(begin
								  <<Res:32/signed-native>> =
								      <<(X bsl N
									   +
									   Acc):32/unsigned-native>>,
								  id(Res,
								     TrUserData)
								end),
	    TrUserData),
	 Rest},
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(RestF,
							      0, 0, F@_1, F@_2,
							      NewFValue, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      TrUserData).

'd_field_google.protobuf.FieldDescriptorProto_type'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10,
						    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldDescriptorProto_type'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, F@_2, F@_3, F@_4,
							F@_5, F@_6, F@_7, F@_8,
							F@_9, F@_10,
							TrUserData);
'd_field_google.protobuf.FieldDescriptorProto_type'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3, _,
						    F@_5, F@_6, F@_7, F@_8,
						    F@_9, F@_10, TrUserData) ->
    {NewFValue, RestF} =
	{id('d_enum_google.protobuf.FieldDescriptorProto.Type'(begin
								 <<Res:32/signed-native>> =
								     <<(X bsl N
									  +
									  Acc):32/unsigned-native>>,
								 id(Res,
								    TrUserData)
							       end),
	    TrUserData),
	 Rest},
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(RestF,
							      0, 0, F@_1, F@_2,
							      F@_3, NewFValue,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      TrUserData).

'd_field_google.protobuf.FieldDescriptorProto_type_name'(<<1:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldDescriptorProto_type_name'(Rest,
							     N + 7,
							     X bsl N + Acc,
							     F@_1, F@_2, F@_3,
							     F@_4, F@_5, F@_6,
							     F@_7, F@_8, F@_9,
							     F@_10, TrUserData);
'd_field_google.protobuf.FieldDescriptorProto_type_name'(<<0:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, F@_4, _, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(RestF,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4,
							      NewFValue, F@_6,
							      F@_7, F@_8, F@_9,
							      F@_10,
							      TrUserData).

'd_field_google.protobuf.FieldDescriptorProto_extendee'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldDescriptorProto_extendee'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3, F@_4,
							    F@_5, F@_6, F@_7,
							    F@_8, F@_9, F@_10,
							    TrUserData);
'd_field_google.protobuf.FieldDescriptorProto_extendee'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, _,
							F@_7, F@_8, F@_9, F@_10,
							TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(RestF,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      NewFValue, F@_7,
							      F@_8, F@_9, F@_10,
							      TrUserData).

'd_field_google.protobuf.FieldDescriptorProto_default_value'(<<1:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10,
							     TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldDescriptorProto_default_value'(Rest,
								 N + 7,
								 X bsl N + Acc,
								 F@_1, F@_2,
								 F@_3, F@_4,
								 F@_5, F@_6,
								 F@_7, F@_8,
								 F@_9, F@_10,
								 TrUserData);
'd_field_google.protobuf.FieldDescriptorProto_default_value'(<<0:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, _, F@_8,
							     F@_9, F@_10,
							     TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(RestF,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, NewFValue,
							      F@_8, F@_9, F@_10,
							      TrUserData).

'd_field_google.protobuf.FieldDescriptorProto_oneof_index'(<<1:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10,
							   TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldDescriptorProto_oneof_index'(Rest,
							       N + 7,
							       X bsl N + Acc,
							       F@_1, F@_2, F@_3,
							       F@_4, F@_5, F@_6,
							       F@_7, F@_8, F@_9,
							       F@_10,
							       TrUserData);
'd_field_google.protobuf.FieldDescriptorProto_oneof_index'(<<0:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, _, F@_9,
							   F@_10, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(RestF,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7,
							      NewFValue, F@_9,
							      F@_10,
							      TrUserData).

'd_field_google.protobuf.FieldDescriptorProto_json_name'(<<1:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldDescriptorProto_json_name'(Rest,
							     N + 7,
							     X bsl N + Acc,
							     F@_1, F@_2, F@_3,
							     F@_4, F@_5, F@_6,
							     F@_7, F@_8, F@_9,
							     F@_10, TrUserData);
'd_field_google.protobuf.FieldDescriptorProto_json_name'(<<0:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, _, F@_10,
							 TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(RestF,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7, F@_8,
							      NewFValue, F@_10,
							      TrUserData).

'd_field_google.protobuf.FieldDescriptorProto_options'(<<1:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10,
						       TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldDescriptorProto_options'(Rest,
							   N + 7, X bsl N + Acc,
							   F@_1, F@_2, F@_3,
							   F@_4, F@_5, F@_6,
							   F@_7, F@_8, F@_9,
							   F@_10, TrUserData);
'd_field_google.protobuf.FieldDescriptorProto_options'(<<0:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, Prev,
						       TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.FieldOptions'(Bs,
									 TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(RestF,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7, F@_8,
							      F@_9,
							      if Prev ==
								   '$undef' ->
								     NewFValue;
								 true ->
								     'merge_msg_google.protobuf.FieldOptions'(Prev,
													      NewFValue,
													      TrUserData)
							      end,
							      TrUserData).

'skip_varint_google.protobuf.FieldDescriptorProto'(<<1:1,
						     _:7, Rest/binary>>,
						   Z1, Z2, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, TrUserData) ->
    'skip_varint_google.protobuf.FieldDescriptorProto'(Rest,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10,
						       TrUserData);
'skip_varint_google.protobuf.FieldDescriptorProto'(<<0:1,
						     _:7, Rest/binary>>,
						   Z1, Z2, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, TrUserData) ->
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(Rest,
							      Z1, Z2, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      TrUserData).

'skip_length_delimited_google.protobuf.FieldDescriptorProto'(<<1:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10,
							     TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.FieldDescriptorProto'(Rest,
								 N + 7,
								 X bsl N + Acc,
								 F@_1, F@_2,
								 F@_3, F@_4,
								 F@_5, F@_6,
								 F@_7, F@_8,
								 F@_9, F@_10,
								 TrUserData);
'skip_length_delimited_google.protobuf.FieldDescriptorProto'(<<0:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10,
							     TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(Rest2,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7, F@_8,
							      F@_9, F@_10,
							      TrUserData).

'skip_group_google.protobuf.FieldDescriptorProto'(Bin,
						  FNum, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(Rest,
							      0, Z2, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7, F@_8,
							      F@_9, F@_10,
							      TrUserData).

'skip_32_google.protobuf.FieldDescriptorProto'(<<_:32,
						 Rest/binary>>,
					       Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, TrUserData) ->
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(Rest,
							      Z1, Z2, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      TrUserData).

'skip_64_google.protobuf.FieldDescriptorProto'(<<_:64,
						 Rest/binary>>,
					       Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, TrUserData) ->
    'dfp_read_field_def_google.protobuf.FieldDescriptorProto'(Rest,
							      Z1, Z2, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      TrUserData).

'decode_msg_google.protobuf.OneofDescriptorProto'(Bin,
						  TrUserData) ->
    'dfp_read_field_def_google.protobuf.OneofDescriptorProto'(Bin,
							      0, 0,
							      id('$undef',
								 TrUserData),
							      TrUserData).

'dfp_read_field_def_google.protobuf.OneofDescriptorProto'(<<10,
							    Rest/binary>>,
							  Z1, Z2, F@_1,
							  TrUserData) ->
    'd_field_google.protobuf.OneofDescriptorProto_name'(Rest,
							Z1, Z2, F@_1,
							TrUserData);
'dfp_read_field_def_google.protobuf.OneofDescriptorProto'(<<>>,
							  0, 0, F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{name => F@_1}
    end;
'dfp_read_field_def_google.protobuf.OneofDescriptorProto'(Other,
							  Z1, Z2, F@_1,
							  TrUserData) ->
    'dg_read_field_def_google.protobuf.OneofDescriptorProto'(Other,
							     Z1, Z2, F@_1,
							     TrUserData).

'dg_read_field_def_google.protobuf.OneofDescriptorProto'(<<1:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1,
							 TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.OneofDescriptorProto'(Rest,
							     N + 7,
							     X bsl N + Acc,
							     F@_1, TrUserData);
'dg_read_field_def_google.protobuf.OneofDescriptorProto'(<<0:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1,
							 TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_google.protobuf.OneofDescriptorProto_name'(Rest,
							      0, 0, F@_1,
							      TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.OneofDescriptorProto'(Rest,
								   0, 0, F@_1,
								   TrUserData);
	    1 ->
		'skip_64_google.protobuf.OneofDescriptorProto'(Rest, 0,
							       0, F@_1,
							       TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.OneofDescriptorProto'(Rest,
									     0,
									     0,
									     F@_1,
									     TrUserData);
	    3 ->
		'skip_group_google.protobuf.OneofDescriptorProto'(Rest,
								  Key bsr 3, 0,
								  F@_1,
								  TrUserData);
	    5 ->
		'skip_32_google.protobuf.OneofDescriptorProto'(Rest, 0,
							       0, F@_1,
							       TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.OneofDescriptorProto'(<<>>,
							 0, 0, F@_1, _) ->
    S1 = #{},
    if F@_1 == '$undef' -> S1;
       true -> S1#{name => F@_1}
    end.

'd_field_google.protobuf.OneofDescriptorProto_name'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.OneofDescriptorProto_name'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, TrUserData);
'd_field_google.protobuf.OneofDescriptorProto_name'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, _, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.OneofDescriptorProto'(RestF,
							      0, 0, NewFValue,
							      TrUserData).

'skip_varint_google.protobuf.OneofDescriptorProto'(<<1:1,
						     _:7, Rest/binary>>,
						   Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_google.protobuf.OneofDescriptorProto'(Rest,
						       Z1, Z2, F@_1,
						       TrUserData);
'skip_varint_google.protobuf.OneofDescriptorProto'(<<0:1,
						     _:7, Rest/binary>>,
						   Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_google.protobuf.OneofDescriptorProto'(Rest,
							      Z1, Z2, F@_1,
							      TrUserData).

'skip_length_delimited_google.protobuf.OneofDescriptorProto'(<<1:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1,
							     TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.OneofDescriptorProto'(Rest,
								 N + 7,
								 X bsl N + Acc,
								 F@_1,
								 TrUserData);
'skip_length_delimited_google.protobuf.OneofDescriptorProto'(<<0:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1,
							     TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.OneofDescriptorProto'(Rest2,
							      0, 0, F@_1,
							      TrUserData).

'skip_group_google.protobuf.OneofDescriptorProto'(Bin,
						  FNum, Z2, F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.OneofDescriptorProto'(Rest,
							      0, Z2, F@_1,
							      TrUserData).

'skip_32_google.protobuf.OneofDescriptorProto'(<<_:32,
						 Rest/binary>>,
					       Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_google.protobuf.OneofDescriptorProto'(Rest,
							      Z1, Z2, F@_1,
							      TrUserData).

'skip_64_google.protobuf.OneofDescriptorProto'(<<_:64,
						 Rest/binary>>,
					       Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_google.protobuf.OneofDescriptorProto'(Rest,
							      Z1, Z2, F@_1,
							      TrUserData).

'decode_msg_google.protobuf.EnumDescriptorProto'(Bin,
						 TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumDescriptorProto'(Bin,
							     0, 0,
							     id('$undef',
								TrUserData),
							     id([], TrUserData),
							     id('$undef',
								TrUserData),
							     TrUserData).

'dfp_read_field_def_google.protobuf.EnumDescriptorProto'(<<10,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, TrUserData) ->
    'd_field_google.protobuf.EnumDescriptorProto_name'(Rest,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       TrUserData);
'dfp_read_field_def_google.protobuf.EnumDescriptorProto'(<<18,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, TrUserData) ->
    'd_field_google.protobuf.EnumDescriptorProto_value'(Rest,
							Z1, Z2, F@_1, F@_2,
							F@_3, TrUserData);
'dfp_read_field_def_google.protobuf.EnumDescriptorProto'(<<26,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, TrUserData) ->
    'd_field_google.protobuf.EnumDescriptorProto_options'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, TrUserData);
'dfp_read_field_def_google.protobuf.EnumDescriptorProto'(<<>>,
							 0, 0, F@_1, R1, F@_3,
							 TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{name => F@_1}
	 end,
    S3 = if R1 == '$undef' -> S2;
	    true -> S2#{value => lists_reverse(R1, TrUserData)}
	 end,
    if F@_3 == '$undef' -> S3;
       true -> S3#{options => F@_3}
    end;
'dfp_read_field_def_google.protobuf.EnumDescriptorProto'(Other,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, TrUserData) ->
    'dg_read_field_def_google.protobuf.EnumDescriptorProto'(Other,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, TrUserData).

'dg_read_field_def_google.protobuf.EnumDescriptorProto'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.EnumDescriptorProto'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3,
							    TrUserData);
'dg_read_field_def_google.protobuf.EnumDescriptorProto'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_google.protobuf.EnumDescriptorProto_name'(Rest,
							     0, 0, F@_1, F@_2,
							     F@_3, TrUserData);
      18 ->
	  'd_field_google.protobuf.EnumDescriptorProto_value'(Rest,
							      0, 0, F@_1, F@_2,
							      F@_3, TrUserData);
      26 ->
	  'd_field_google.protobuf.EnumDescriptorProto_options'(Rest,
								0, 0, F@_1,
								F@_2, F@_3,
								TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.EnumDescriptorProto'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  TrUserData);
	    1 ->
		'skip_64_google.protobuf.EnumDescriptorProto'(Rest, 0,
							      0, F@_1, F@_2,
							      F@_3, TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.EnumDescriptorProto'(Rest,
									    0,
									    0,
									    F@_1,
									    F@_2,
									    F@_3,
									    TrUserData);
	    3 ->
		'skip_group_google.protobuf.EnumDescriptorProto'(Rest,
								 Key bsr 3, 0,
								 F@_1, F@_2,
								 F@_3,
								 TrUserData);
	    5 ->
		'skip_32_google.protobuf.EnumDescriptorProto'(Rest, 0,
							      0, F@_1, F@_2,
							      F@_3, TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.EnumDescriptorProto'(<<>>,
							0, 0, F@_1, R1, F@_3,
							TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{name => F@_1}
	 end,
    S3 = if R1 == '$undef' -> S2;
	    true -> S2#{value => lists_reverse(R1, TrUserData)}
	 end,
    if F@_3 == '$undef' -> S3;
       true -> S3#{options => F@_3}
    end.

'd_field_google.protobuf.EnumDescriptorProto_name'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumDescriptorProto_name'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, F@_3,
						       TrUserData);
'd_field_google.protobuf.EnumDescriptorProto_name'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, _, F@_2, F@_3,
						   TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.EnumDescriptorProto'(RestF,
							     0, 0, NewFValue,
							     F@_2, F@_3,
							     TrUserData).

'd_field_google.protobuf.EnumDescriptorProto_value'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumDescriptorProto_value'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, F@_2, F@_3,
							TrUserData);
'd_field_google.protobuf.EnumDescriptorProto_value'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, Prev, F@_3,
						    TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.EnumValueDescriptorProto'(Bs,
										     TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.EnumDescriptorProto'(RestF,
							     0, 0, F@_1,
							     cons(NewFValue,
								  Prev,
								  TrUserData),
							     F@_3, TrUserData).

'd_field_google.protobuf.EnumDescriptorProto_options'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumDescriptorProto_options'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, F@_2, F@_3,
							  TrUserData);
'd_field_google.protobuf.EnumDescriptorProto_options'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, Prev,
						      TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.EnumOptions'(Bs,
									TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.EnumDescriptorProto'(RestF,
							     0, 0, F@_1, F@_2,
							     if Prev ==
								  '$undef' ->
								    NewFValue;
								true ->
								    'merge_msg_google.protobuf.EnumOptions'(Prev,
													    NewFValue,
													    TrUserData)
							     end,
							     TrUserData).

'skip_varint_google.protobuf.EnumDescriptorProto'(<<1:1,
						    _:7, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  TrUserData) ->
    'skip_varint_google.protobuf.EnumDescriptorProto'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      TrUserData);
'skip_varint_google.protobuf.EnumDescriptorProto'(<<0:1,
						    _:7, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumDescriptorProto'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, TrUserData).

'skip_length_delimited_google.protobuf.EnumDescriptorProto'(<<1:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.EnumDescriptorProto'(Rest,
								N + 7,
								X bsl N + Acc,
								F@_1, F@_2,
								F@_3,
								TrUserData);
'skip_length_delimited_google.protobuf.EnumDescriptorProto'(<<0:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.EnumDescriptorProto'(Rest2,
							     0, 0, F@_1, F@_2,
							     F@_3, TrUserData).

'skip_group_google.protobuf.EnumDescriptorProto'(Bin,
						 FNum, Z2, F@_1, F@_2, F@_3,
						 TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.EnumDescriptorProto'(Rest,
							     0, Z2, F@_1, F@_2,
							     F@_3, TrUserData).

'skip_32_google.protobuf.EnumDescriptorProto'(<<_:32,
						Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, F@_3,
					      TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumDescriptorProto'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, TrUserData).

'skip_64_google.protobuf.EnumDescriptorProto'(<<_:64,
						Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, F@_3,
					      TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumDescriptorProto'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, TrUserData).

'decode_msg_google.protobuf.EnumValueDescriptorProto'(Bin,
						      TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumValueDescriptorProto'(Bin,
								  0, 0,
								  id('$undef',
								     TrUserData),
								  id('$undef',
								     TrUserData),
								  id('$undef',
								     TrUserData),
								  TrUserData).

'dfp_read_field_def_google.protobuf.EnumValueDescriptorProto'(<<10,
								Rest/binary>>,
							      Z1, Z2, F@_1,
							      F@_2, F@_3,
							      TrUserData) ->
    'd_field_google.protobuf.EnumValueDescriptorProto_name'(Rest,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, TrUserData);
'dfp_read_field_def_google.protobuf.EnumValueDescriptorProto'(<<16,
								Rest/binary>>,
							      Z1, Z2, F@_1,
							      F@_2, F@_3,
							      TrUserData) ->
    'd_field_google.protobuf.EnumValueDescriptorProto_number'(Rest,
							      Z1, Z2, F@_1,
							      F@_2, F@_3,
							      TrUserData);
'dfp_read_field_def_google.protobuf.EnumValueDescriptorProto'(<<26,
								Rest/binary>>,
							      Z1, Z2, F@_1,
							      F@_2, F@_3,
							      TrUserData) ->
    'd_field_google.protobuf.EnumValueDescriptorProto_options'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3,
							       TrUserData);
'dfp_read_field_def_google.protobuf.EnumValueDescriptorProto'(<<>>,
							      0, 0, F@_1, F@_2,
							      F@_3, _) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{name => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{number => F@_2}
	 end,
    if F@_3 == '$undef' -> S3;
       true -> S3#{options => F@_3}
    end;
'dfp_read_field_def_google.protobuf.EnumValueDescriptorProto'(Other,
							      Z1, Z2, F@_1,
							      F@_2, F@_3,
							      TrUserData) ->
    'dg_read_field_def_google.protobuf.EnumValueDescriptorProto'(Other,
								 Z1, Z2, F@_1,
								 F@_2, F@_3,
								 TrUserData).

'dg_read_field_def_google.protobuf.EnumValueDescriptorProto'(<<1:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     F@_3, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.EnumValueDescriptorProto'(Rest,
								 N + 7,
								 X bsl N + Acc,
								 F@_1, F@_2,
								 F@_3,
								 TrUserData);
'dg_read_field_def_google.protobuf.EnumValueDescriptorProto'(<<0:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     F@_3,
							     TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_google.protobuf.EnumValueDescriptorProto_name'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  TrUserData);
      16 ->
	  'd_field_google.protobuf.EnumValueDescriptorProto_number'(Rest,
								    0, 0, F@_1,
								    F@_2, F@_3,
								    TrUserData);
      26 ->
	  'd_field_google.protobuf.EnumValueDescriptorProto_options'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.EnumValueDescriptorProto'(Rest,
								       0, 0,
								       F@_1,
								       F@_2,
								       F@_3,
								       TrUserData);
	    1 ->
		'skip_64_google.protobuf.EnumValueDescriptorProto'(Rest,
								   0, 0, F@_1,
								   F@_2, F@_3,
								   TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.EnumValueDescriptorProto'(Rest,
										 0,
										 0,
										 F@_1,
										 F@_2,
										 F@_3,
										 TrUserData);
	    3 ->
		'skip_group_google.protobuf.EnumValueDescriptorProto'(Rest,
								      Key bsr 3,
								      0, F@_1,
								      F@_2,
								      F@_3,
								      TrUserData);
	    5 ->
		'skip_32_google.protobuf.EnumValueDescriptorProto'(Rest,
								   0, 0, F@_1,
								   F@_2, F@_3,
								   TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.EnumValueDescriptorProto'(<<>>,
							     0, 0, F@_1, F@_2,
							     F@_3, _) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{name => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{number => F@_2}
	 end,
    if F@_3 == '$undef' -> S3;
       true -> S3#{options => F@_3}
    end.

'd_field_google.protobuf.EnumValueDescriptorProto_name'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumValueDescriptorProto_name'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3,
							    TrUserData);
'd_field_google.protobuf.EnumValueDescriptorProto_name'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, _, F@_2, F@_3,
							TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.EnumValueDescriptorProto'(RestF,
								  0, 0,
								  NewFValue,
								  F@_2, F@_3,
								  TrUserData).

'd_field_google.protobuf.EnumValueDescriptorProto_number'(<<1:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumValueDescriptorProto_number'(Rest,
							      N + 7,
							      X bsl N + Acc,
							      F@_1, F@_2, F@_3,
							      TrUserData);
'd_field_google.protobuf.EnumValueDescriptorProto_number'(<<0:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, _, F@_3,
							  TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.EnumValueDescriptorProto'(RestF,
								  0, 0, F@_1,
								  NewFValue,
								  F@_3,
								  TrUserData).

'd_field_google.protobuf.EnumValueDescriptorProto_options'(<<1:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumValueDescriptorProto_options'(Rest,
							       N + 7,
							       X bsl N + Acc,
							       F@_1, F@_2, F@_3,
							       TrUserData);
'd_field_google.protobuf.EnumValueDescriptorProto_options'(<<0:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.EnumValueOptions'(Bs,
									     TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.EnumValueDescriptorProto'(RestF,
								  0, 0, F@_1,
								  F@_2,
								  if Prev ==
								       '$undef' ->
									 NewFValue;
								     true ->
									 'merge_msg_google.protobuf.EnumValueOptions'(Prev,
														      NewFValue,
														      TrUserData)
								  end,
								  TrUserData).

'skip_varint_google.protobuf.EnumValueDescriptorProto'(<<1:1,
							 _:7, Rest/binary>>,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       TrUserData) ->
    'skip_varint_google.protobuf.EnumValueDescriptorProto'(Rest,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, TrUserData);
'skip_varint_google.protobuf.EnumValueDescriptorProto'(<<0:1,
							 _:7, Rest/binary>>,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumValueDescriptorProto'(Rest,
								  Z1, Z2, F@_1,
								  F@_2, F@_3,
								  TrUserData).

'skip_length_delimited_google.protobuf.EnumValueDescriptorProto'(<<1:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3,
								 TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.EnumValueDescriptorProto'(Rest,
								     N + 7,
								     X bsl N +
								       Acc,
								     F@_1, F@_2,
								     F@_3,
								     TrUserData);
'skip_length_delimited_google.protobuf.EnumValueDescriptorProto'(<<0:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3,
								 TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.EnumValueDescriptorProto'(Rest2,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  TrUserData).

'skip_group_google.protobuf.EnumValueDescriptorProto'(Bin,
						      FNum, Z2, F@_1, F@_2,
						      F@_3, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.EnumValueDescriptorProto'(Rest,
								  0, Z2, F@_1,
								  F@_2, F@_3,
								  TrUserData).

'skip_32_google.protobuf.EnumValueDescriptorProto'(<<_:32,
						     Rest/binary>>,
						   Z1, Z2, F@_1, F@_2, F@_3,
						   TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumValueDescriptorProto'(Rest,
								  Z1, Z2, F@_1,
								  F@_2, F@_3,
								  TrUserData).

'skip_64_google.protobuf.EnumValueDescriptorProto'(<<_:64,
						     Rest/binary>>,
						   Z1, Z2, F@_1, F@_2, F@_3,
						   TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumValueDescriptorProto'(Rest,
								  Z1, Z2, F@_1,
								  F@_2, F@_3,
								  TrUserData).

'decode_msg_google.protobuf.ServiceDescriptorProto'(Bin,
						    TrUserData) ->
    'dfp_read_field_def_google.protobuf.ServiceDescriptorProto'(Bin,
								0, 0,
								id('$undef',
								   TrUserData),
								id([],
								   TrUserData),
								id('$undef',
								   TrUserData),
								TrUserData).

'dfp_read_field_def_google.protobuf.ServiceDescriptorProto'(<<10,
							      Rest/binary>>,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, TrUserData) ->
    'd_field_google.protobuf.ServiceDescriptorProto_name'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, TrUserData);
'dfp_read_field_def_google.protobuf.ServiceDescriptorProto'(<<18,
							      Rest/binary>>,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, TrUserData) ->
    'd_field_google.protobuf.ServiceDescriptorProto_method'(Rest,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, TrUserData);
'dfp_read_field_def_google.protobuf.ServiceDescriptorProto'(<<26,
							      Rest/binary>>,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, TrUserData) ->
    'd_field_google.protobuf.ServiceDescriptorProto_options'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, TrUserData);
'dfp_read_field_def_google.protobuf.ServiceDescriptorProto'(<<>>,
							    0, 0, F@_1, R1,
							    F@_3, TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{name => F@_1}
	 end,
    S3 = if R1 == '$undef' -> S2;
	    true -> S2#{method => lists_reverse(R1, TrUserData)}
	 end,
    if F@_3 == '$undef' -> S3;
       true -> S3#{options => F@_3}
    end;
'dfp_read_field_def_google.protobuf.ServiceDescriptorProto'(Other,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, TrUserData) ->
    'dg_read_field_def_google.protobuf.ServiceDescriptorProto'(Other,
							       Z1, Z2, F@_1,
							       F@_2, F@_3,
							       TrUserData).

'dg_read_field_def_google.protobuf.ServiceDescriptorProto'(<<1:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.ServiceDescriptorProto'(Rest,
							       N + 7,
							       X bsl N + Acc,
							       F@_1, F@_2, F@_3,
							       TrUserData);
'dg_read_field_def_google.protobuf.ServiceDescriptorProto'(<<0:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_google.protobuf.ServiceDescriptorProto_name'(Rest,
								0, 0, F@_1,
								F@_2, F@_3,
								TrUserData);
      18 ->
	  'd_field_google.protobuf.ServiceDescriptorProto_method'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  TrUserData);
      26 ->
	  'd_field_google.protobuf.ServiceDescriptorProto_options'(Rest,
								   0, 0, F@_1,
								   F@_2, F@_3,
								   TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.ServiceDescriptorProto'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     TrUserData);
	    1 ->
		'skip_64_google.protobuf.ServiceDescriptorProto'(Rest,
								 0, 0, F@_1,
								 F@_2, F@_3,
								 TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.ServiceDescriptorProto'(Rest,
									       0,
									       0,
									       F@_1,
									       F@_2,
									       F@_3,
									       TrUserData);
	    3 ->
		'skip_group_google.protobuf.ServiceDescriptorProto'(Rest,
								    Key bsr 3,
								    0, F@_1,
								    F@_2, F@_3,
								    TrUserData);
	    5 ->
		'skip_32_google.protobuf.ServiceDescriptorProto'(Rest,
								 0, 0, F@_1,
								 F@_2, F@_3,
								 TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.ServiceDescriptorProto'(<<>>,
							   0, 0, F@_1, R1, F@_3,
							   TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{name => F@_1}
	 end,
    S3 = if R1 == '$undef' -> S2;
	    true -> S2#{method => lists_reverse(R1, TrUserData)}
	 end,
    if F@_3 == '$undef' -> S3;
       true -> S3#{options => F@_3}
    end.

'd_field_google.protobuf.ServiceDescriptorProto_name'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.ServiceDescriptorProto_name'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, F@_2, F@_3,
							  TrUserData);
'd_field_google.protobuf.ServiceDescriptorProto_name'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, _, F@_2, F@_3,
						      TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.ServiceDescriptorProto'(RestF,
								0, 0, NewFValue,
								F@_2, F@_3,
								TrUserData).

'd_field_google.protobuf.ServiceDescriptorProto_method'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.ServiceDescriptorProto_method'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3,
							    TrUserData);
'd_field_google.protobuf.ServiceDescriptorProto_method'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, Prev,
							F@_3, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.MethodDescriptorProto'(Bs,
										  TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.ServiceDescriptorProto'(RestF,
								0, 0, F@_1,
								cons(NewFValue,
								     Prev,
								     TrUserData),
								F@_3,
								TrUserData).

'd_field_google.protobuf.ServiceDescriptorProto_options'(<<1:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.ServiceDescriptorProto_options'(Rest,
							     N + 7,
							     X bsl N + Acc,
							     F@_1, F@_2, F@_3,
							     TrUserData);
'd_field_google.protobuf.ServiceDescriptorProto_options'(<<0:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.ServiceOptions'(Bs,
									   TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.ServiceDescriptorProto'(RestF,
								0, 0, F@_1,
								F@_2,
								if Prev ==
								     '$undef' ->
								       NewFValue;
								   true ->
								       'merge_msg_google.protobuf.ServiceOptions'(Prev,
														  NewFValue,
														  TrUserData)
								end,
								TrUserData).

'skip_varint_google.protobuf.ServiceDescriptorProto'(<<1:1,
						       _:7, Rest/binary>>,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     TrUserData) ->
    'skip_varint_google.protobuf.ServiceDescriptorProto'(Rest,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, TrUserData);
'skip_varint_google.protobuf.ServiceDescriptorProto'(<<0:1,
						       _:7, Rest/binary>>,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     TrUserData) ->
    'dfp_read_field_def_google.protobuf.ServiceDescriptorProto'(Rest,
								Z1, Z2, F@_1,
								F@_2, F@_3,
								TrUserData).

'skip_length_delimited_google.protobuf.ServiceDescriptorProto'(<<1:1,
								 X:7,
								 Rest/binary>>,
							       N, Acc, F@_1,
							       F@_2, F@_3,
							       TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.ServiceDescriptorProto'(Rest,
								   N + 7,
								   X bsl N +
								     Acc,
								   F@_1, F@_2,
								   F@_3,
								   TrUserData);
'skip_length_delimited_google.protobuf.ServiceDescriptorProto'(<<0:1,
								 X:7,
								 Rest/binary>>,
							       N, Acc, F@_1,
							       F@_2, F@_3,
							       TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.ServiceDescriptorProto'(Rest2,
								0, 0, F@_1,
								F@_2, F@_3,
								TrUserData).

'skip_group_google.protobuf.ServiceDescriptorProto'(Bin,
						    FNum, Z2, F@_1, F@_2, F@_3,
						    TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.ServiceDescriptorProto'(Rest,
								0, Z2, F@_1,
								F@_2, F@_3,
								TrUserData).

'skip_32_google.protobuf.ServiceDescriptorProto'(<<_:32,
						   Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3,
						 TrUserData) ->
    'dfp_read_field_def_google.protobuf.ServiceDescriptorProto'(Rest,
								Z1, Z2, F@_1,
								F@_2, F@_3,
								TrUserData).

'skip_64_google.protobuf.ServiceDescriptorProto'(<<_:64,
						   Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3,
						 TrUserData) ->
    'dfp_read_field_def_google.protobuf.ServiceDescriptorProto'(Rest,
								Z1, Z2, F@_1,
								F@_2, F@_3,
								TrUserData).

'decode_msg_google.protobuf.MethodDescriptorProto'(Bin,
						   TrUserData) ->
    'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(Bin,
							       0, 0,
							       id('$undef',
								  TrUserData),
							       id('$undef',
								  TrUserData),
							       id('$undef',
								  TrUserData),
							       id('$undef',
								  TrUserData),
							       id('$undef',
								  TrUserData),
							       id('$undef',
								  TrUserData),
							       TrUserData).

'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(<<10,
							     Rest/binary>>,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, TrUserData) ->
    'd_field_google.protobuf.MethodDescriptorProto_name'(Rest,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 TrUserData);
'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(<<18,
							     Rest/binary>>,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, TrUserData) ->
    'd_field_google.protobuf.MethodDescriptorProto_input_type'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6,
							       TrUserData);
'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(<<26,
							     Rest/binary>>,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, TrUserData) ->
    'd_field_google.protobuf.MethodDescriptorProto_output_type'(Rest,
								Z1, Z2, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6,
								TrUserData);
'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(<<34,
							     Rest/binary>>,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, TrUserData) ->
    'd_field_google.protobuf.MethodDescriptorProto_options'(Rest,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, TrUserData);
'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(<<40,
							     Rest/binary>>,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, TrUserData) ->
    'd_field_google.protobuf.MethodDescriptorProto_client_streaming'(Rest,
								     Z1, Z2,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     F@_5, F@_6,
								     TrUserData);
'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(<<48,
							     Rest/binary>>,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, TrUserData) ->
    'd_field_google.protobuf.MethodDescriptorProto_server_streaming'(Rest,
								     Z1, Z2,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     F@_5, F@_6,
								     TrUserData);
'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(<<>>,
							   0, 0, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, _) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{name => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{input_type => F@_2}
	 end,
    S4 = if F@_3 == '$undef' -> S3;
	    true -> S3#{output_type => F@_3}
	 end,
    S5 = if F@_4 == '$undef' -> S4;
	    true -> S4#{options => F@_4}
	 end,
    S6 = if F@_5 == '$undef' -> S5;
	    true -> S5#{client_streaming => F@_5}
	 end,
    if F@_6 == '$undef' -> S6;
       true -> S6#{server_streaming => F@_6}
    end;
'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(Other,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, TrUserData) ->
    'dg_read_field_def_google.protobuf.MethodDescriptorProto'(Other,
							      Z1, Z2, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6,
							      TrUserData).

'dg_read_field_def_google.protobuf.MethodDescriptorProto'(<<1:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.MethodDescriptorProto'(Rest,
							      N + 7,
							      X bsl N + Acc,
							      F@_1, F@_2, F@_3,
							      F@_4, F@_5, F@_6,
							      TrUserData);
'dg_read_field_def_google.protobuf.MethodDescriptorProto'(<<0:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_google.protobuf.MethodDescriptorProto_name'(Rest,
							       0, 0, F@_1, F@_2,
							       F@_3, F@_4, F@_5,
							       F@_6,
							       TrUserData);
      18 ->
	  'd_field_google.protobuf.MethodDescriptorProto_input_type'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     F@_4, F@_5,
								     F@_6,
								     TrUserData);
      26 ->
	  'd_field_google.protobuf.MethodDescriptorProto_output_type'(Rest,
								      0, 0,
								      F@_1,
								      F@_2,
								      F@_3,
								      F@_4,
								      F@_5,
								      F@_6,
								      TrUserData);
      34 ->
	  'd_field_google.protobuf.MethodDescriptorProto_options'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6,
								  TrUserData);
      40 ->
	  'd_field_google.protobuf.MethodDescriptorProto_client_streaming'(Rest,
									   0, 0,
									   F@_1,
									   F@_2,
									   F@_3,
									   F@_4,
									   F@_5,
									   F@_6,
									   TrUserData);
      48 ->
	  'd_field_google.protobuf.MethodDescriptorProto_server_streaming'(Rest,
									   0, 0,
									   F@_1,
									   F@_2,
									   F@_3,
									   F@_4,
									   F@_5,
									   F@_6,
									   TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.MethodDescriptorProto'(Rest,
								    0, 0, F@_1,
								    F@_2, F@_3,
								    F@_4, F@_5,
								    F@_6,
								    TrUserData);
	    1 ->
		'skip_64_google.protobuf.MethodDescriptorProto'(Rest, 0,
								0, F@_1, F@_2,
								F@_3, F@_4,
								F@_5, F@_6,
								TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.MethodDescriptorProto'(Rest,
									      0,
									      0,
									      F@_1,
									      F@_2,
									      F@_3,
									      F@_4,
									      F@_5,
									      F@_6,
									      TrUserData);
	    3 ->
		'skip_group_google.protobuf.MethodDescriptorProto'(Rest,
								   Key bsr 3, 0,
								   F@_1, F@_2,
								   F@_3, F@_4,
								   F@_5, F@_6,
								   TrUserData);
	    5 ->
		'skip_32_google.protobuf.MethodDescriptorProto'(Rest, 0,
								0, F@_1, F@_2,
								F@_3, F@_4,
								F@_5, F@_6,
								TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.MethodDescriptorProto'(<<>>,
							  0, 0, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, _) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{name => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{input_type => F@_2}
	 end,
    S4 = if F@_3 == '$undef' -> S3;
	    true -> S3#{output_type => F@_3}
	 end,
    S5 = if F@_4 == '$undef' -> S4;
	    true -> S4#{options => F@_4}
	 end,
    S6 = if F@_5 == '$undef' -> S5;
	    true -> S5#{client_streaming => F@_5}
	 end,
    if F@_6 == '$undef' -> S6;
       true -> S6#{server_streaming => F@_6}
    end.

'd_field_google.protobuf.MethodDescriptorProto_name'(<<1:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6,
						     TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MethodDescriptorProto_name'(Rest,
							 N + 7, X bsl N + Acc,
							 F@_1, F@_2, F@_3, F@_4,
							 F@_5, F@_6,
							 TrUserData);
'd_field_google.protobuf.MethodDescriptorProto_name'(<<0:1,
						       X:7, Rest/binary>>,
						     N, Acc, _, F@_2, F@_3,
						     F@_4, F@_5, F@_6,
						     TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(RestF,
							       0, 0, NewFValue,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6,
							       TrUserData).

'd_field_google.protobuf.MethodDescriptorProto_input_type'(<<1:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MethodDescriptorProto_input_type'(Rest,
							       N + 7,
							       X bsl N + Acc,
							       F@_1, F@_2, F@_3,
							       F@_4, F@_5, F@_6,
							       TrUserData);
'd_field_google.protobuf.MethodDescriptorProto_input_type'(<<0:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, _,
							   F@_3, F@_4, F@_5,
							   F@_6, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(RestF,
							       0, 0, F@_1,
							       NewFValue, F@_3,
							       F@_4, F@_5, F@_6,
							       TrUserData).

'd_field_google.protobuf.MethodDescriptorProto_output_type'(<<1:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MethodDescriptorProto_output_type'(Rest,
								N + 7,
								X bsl N + Acc,
								F@_1, F@_2,
								F@_3, F@_4,
								F@_5, F@_6,
								TrUserData);
'd_field_google.protobuf.MethodDescriptorProto_output_type'(<<0:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    _, F@_4, F@_5, F@_6,
							    TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(RestF,
							       0, 0, F@_1, F@_2,
							       NewFValue, F@_4,
							       F@_5, F@_6,
							       TrUserData).

'd_field_google.protobuf.MethodDescriptorProto_options'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MethodDescriptorProto_options'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3, F@_4,
							    F@_5, F@_6,
							    TrUserData);
'd_field_google.protobuf.MethodDescriptorProto_options'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, Prev, F@_5, F@_6,
							TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.MethodOptions'(Bs,
									  TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(RestF,
							       0, 0, F@_1, F@_2,
							       F@_3,
							       if Prev ==
								    '$undef' ->
								      NewFValue;
								  true ->
								      'merge_msg_google.protobuf.MethodOptions'(Prev,
														NewFValue,
														TrUserData)
							       end,
							       F@_5, F@_6,
							       TrUserData).

'd_field_google.protobuf.MethodDescriptorProto_client_streaming'(<<1:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6,
								 TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MethodDescriptorProto_client_streaming'(Rest,
								     N + 7,
								     X bsl N +
								       Acc,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     F@_5, F@_6,
								     TrUserData);
'd_field_google.protobuf.MethodDescriptorProto_client_streaming'(<<0:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3,
								 F@_4, _, F@_6,
								 TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(RestF,
							       0, 0, F@_1, F@_2,
							       F@_3, F@_4,
							       NewFValue, F@_6,
							       TrUserData).

'd_field_google.protobuf.MethodDescriptorProto_server_streaming'(<<1:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6,
								 TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MethodDescriptorProto_server_streaming'(Rest,
								     N + 7,
								     X bsl N +
								       Acc,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     F@_5, F@_6,
								     TrUserData);
'd_field_google.protobuf.MethodDescriptorProto_server_streaming'(<<0:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5, _,
								 TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(RestF,
							       0, 0, F@_1, F@_2,
							       F@_3, F@_4, F@_5,
							       NewFValue,
							       TrUserData).

'skip_varint_google.protobuf.MethodDescriptorProto'(<<1:1,
						      _:7, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6,
						    TrUserData) ->
    'skip_varint_google.protobuf.MethodDescriptorProto'(Rest,
							Z1, Z2, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							TrUserData);
'skip_varint_google.protobuf.MethodDescriptorProto'(<<0:1,
						      _:7, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6,
						    TrUserData) ->
    'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6,
							       TrUserData).

'skip_length_delimited_google.protobuf.MethodDescriptorProto'(<<1:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6,
							      TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.MethodDescriptorProto'(Rest,
								  N + 7,
								  X bsl N + Acc,
								  F@_1, F@_2,
								  F@_3, F@_4,
								  F@_5, F@_6,
								  TrUserData);
'skip_length_delimited_google.protobuf.MethodDescriptorProto'(<<0:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6,
							      TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(Rest2,
							       0, 0, F@_1, F@_2,
							       F@_3, F@_4, F@_5,
							       F@_6,
							       TrUserData).

'skip_group_google.protobuf.MethodDescriptorProto'(Bin,
						   FNum, Z2, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6,
						   TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(Rest,
							       0, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6,
							       TrUserData).

'skip_32_google.protobuf.MethodDescriptorProto'(<<_:32,
						  Rest/binary>>,
						Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, TrUserData) ->
    'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6,
							       TrUserData).

'skip_64_google.protobuf.MethodDescriptorProto'(<<_:64,
						  Rest/binary>>,
						Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, TrUserData) ->
    'dfp_read_field_def_google.protobuf.MethodDescriptorProto'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6,
							       TrUserData).

'decode_msg_google.protobuf.FileOptions'(Bin,
					 TrUserData) ->
    'dfp_read_field_def_google.protobuf.FileOptions'(Bin, 0,
						     0,
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id([], TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     TrUserData).

'dfp_read_field_def_google.protobuf.FileOptions'(<<10,
						   Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_java_package'(Rest,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<66,
						   Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_java_outer_classname'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12, F@_13,
							       F@_14, F@_15,
							       F@_16, F@_17,
							       F@_18, F@_19,
							       F@_20, F@_21,
							       F@_22, F@_23,
							       F@_24, F@_25,
							       F@_26, F@_27,
							       F@_28, F@_29,
							       F@_30, F@_31,
							       F@_32, F@_33,
							       F@_34, F@_35,
							       F@_36, F@_37,
							       F@_38, F@_39,
							       F@_40, F@_41,
							       F@_42,
							       TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<80,
						   Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_java_multiple_files'(Rest,
							      Z1, Z2, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24,
							      F@_25, F@_26,
							      F@_27, F@_28,
							      F@_29, F@_30,
							      F@_31, F@_32,
							      F@_33, F@_34,
							      F@_35, F@_36,
							      F@_37, F@_38,
							      F@_39, F@_40,
							      F@_41, F@_42,
							      TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<160,
						   1, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_java_generate_equals_and_hash'(Rest,
									Z1, Z2,
									F@_1,
									F@_2,
									F@_3,
									F@_4,
									F@_5,
									F@_6,
									F@_7,
									F@_8,
									F@_9,
									F@_10,
									F@_11,
									F@_12,
									F@_13,
									F@_14,
									F@_15,
									F@_16,
									F@_17,
									F@_18,
									F@_19,
									F@_20,
									F@_21,
									F@_22,
									F@_23,
									F@_24,
									F@_25,
									F@_26,
									F@_27,
									F@_28,
									F@_29,
									F@_30,
									F@_31,
									F@_32,
									F@_33,
									F@_34,
									F@_35,
									F@_36,
									F@_37,
									F@_38,
									F@_39,
									F@_40,
									F@_41,
									F@_42,
									TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<216,
						   1, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_java_string_check_utf8'(Rest,
								 Z1, Z2, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 F@_8, F@_9,
								 F@_10, F@_11,
								 F@_12, F@_13,
								 F@_14, F@_15,
								 F@_16, F@_17,
								 F@_18, F@_19,
								 F@_20, F@_21,
								 F@_22, F@_23,
								 F@_24, F@_25,
								 F@_26, F@_27,
								 F@_28, F@_29,
								 F@_30, F@_31,
								 F@_32, F@_33,
								 F@_34, F@_35,
								 F@_36, F@_37,
								 F@_38, F@_39,
								 F@_40, F@_41,
								 F@_42,
								 TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<72,
						   Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_optimize_for'(Rest,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<90,
						   Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_go_package'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, F@_37, F@_38, F@_39,
						     F@_40, F@_41, F@_42,
						     TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<128,
						   1, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_cc_generic_services'(Rest,
							      Z1, Z2, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24,
							      F@_25, F@_26,
							      F@_27, F@_28,
							      F@_29, F@_30,
							      F@_31, F@_32,
							      F@_33, F@_34,
							      F@_35, F@_36,
							      F@_37, F@_38,
							      F@_39, F@_40,
							      F@_41, F@_42,
							      TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<136,
						   1, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_java_generic_services'(Rest,
								Z1, Z2, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10, F@_11,
								F@_12, F@_13,
								F@_14, F@_15,
								F@_16, F@_17,
								F@_18, F@_19,
								F@_20, F@_21,
								F@_22, F@_23,
								F@_24, F@_25,
								F@_26, F@_27,
								F@_28, F@_29,
								F@_30, F@_31,
								F@_32, F@_33,
								F@_34, F@_35,
								F@_36, F@_37,
								F@_38, F@_39,
								F@_40, F@_41,
								F@_42,
								TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<144,
						   1, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_py_generic_services'(Rest,
							      Z1, Z2, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24,
							      F@_25, F@_26,
							      F@_27, F@_28,
							      F@_29, F@_30,
							      F@_31, F@_32,
							      F@_33, F@_34,
							      F@_35, F@_36,
							      F@_37, F@_38,
							      F@_39, F@_40,
							      F@_41, F@_42,
							      TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<184,
						   1, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_deprecated'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, F@_37, F@_38, F@_39,
						     F@_40, F@_41, F@_42,
						     TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<248,
						   1, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_cc_enable_arenas'(Rest,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, F@_32,
							   F@_33, F@_34, F@_35,
							   F@_36, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<162,
						   2, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_objc_class_prefix'(Rest,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, F@_19, F@_20,
							    F@_21, F@_22, F@_23,
							    F@_24, F@_25, F@_26,
							    F@_27, F@_28, F@_29,
							    F@_30, F@_31, F@_32,
							    F@_33, F@_34, F@_35,
							    F@_36, F@_37, F@_38,
							    F@_39, F@_40, F@_41,
							    F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<170,
						   2, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_csharp_namespace'(Rest,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, F@_32,
							   F@_33, F@_34, F@_35,
							   F@_36, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<176,
						   2, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_javanano_use_deprecated_package'(Rest,
									  Z1,
									  Z2,
									  F@_1,
									  F@_2,
									  F@_3,
									  F@_4,
									  F@_5,
									  F@_6,
									  F@_7,
									  F@_8,
									  F@_9,
									  F@_10,
									  F@_11,
									  F@_12,
									  F@_13,
									  F@_14,
									  F@_15,
									  F@_16,
									  F@_17,
									  F@_18,
									  F@_19,
									  F@_20,
									  F@_21,
									  F@_22,
									  F@_23,
									  F@_24,
									  F@_25,
									  F@_26,
									  F@_27,
									  F@_28,
									  F@_29,
									  F@_30,
									  F@_31,
									  F@_32,
									  F@_33,
									  F@_34,
									  F@_35,
									  F@_36,
									  F@_37,
									  F@_38,
									  F@_39,
									  F@_40,
									  F@_41,
									  F@_42,
									  TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<186,
						   62, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_uninterpreted_option'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12, F@_13,
							       F@_14, F@_15,
							       F@_16, F@_17,
							       F@_18, F@_19,
							       F@_20, F@_21,
							       F@_22, F@_23,
							       F@_24, F@_25,
							       F@_26, F@_27,
							       F@_28, F@_29,
							       F@_30, F@_31,
							       F@_32, F@_33,
							       F@_34, F@_35,
							       F@_36, F@_37,
							       F@_38, F@_39,
							       F@_40, F@_41,
							       F@_42,
							       TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<200,
						   225, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_goproto_getters_all'(Rest,
							      Z1, Z2, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24,
							      F@_25, F@_26,
							      F@_27, F@_28,
							      F@_29, F@_30,
							      F@_31, F@_32,
							      F@_33, F@_34,
							      F@_35, F@_36,
							      F@_37, F@_38,
							      F@_39, F@_40,
							      F@_41, F@_42,
							      TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<208,
						   225, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_goproto_enum_prefix_all'(Rest,
								  Z1, Z2, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6, F@_7,
								  F@_8, F@_9,
								  F@_10, F@_11,
								  F@_12, F@_13,
								  F@_14, F@_15,
								  F@_16, F@_17,
								  F@_18, F@_19,
								  F@_20, F@_21,
								  F@_22, F@_23,
								  F@_24, F@_25,
								  F@_26, F@_27,
								  F@_28, F@_29,
								  F@_30, F@_31,
								  F@_32, F@_33,
								  F@_34, F@_35,
								  F@_36, F@_37,
								  F@_38, F@_39,
								  F@_40, F@_41,
								  F@_42,
								  TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<216,
						   225, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_goproto_stringer_all'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12, F@_13,
							       F@_14, F@_15,
							       F@_16, F@_17,
							       F@_18, F@_19,
							       F@_20, F@_21,
							       F@_22, F@_23,
							       F@_24, F@_25,
							       F@_26, F@_27,
							       F@_28, F@_29,
							       F@_30, F@_31,
							       F@_32, F@_33,
							       F@_34, F@_35,
							       F@_36, F@_37,
							       F@_38, F@_39,
							       F@_40, F@_41,
							       F@_42,
							       TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<224,
						   225, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_verbose_equal_all'(Rest,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, F@_19, F@_20,
							    F@_21, F@_22, F@_23,
							    F@_24, F@_25, F@_26,
							    F@_27, F@_28, F@_29,
							    F@_30, F@_31, F@_32,
							    F@_33, F@_34, F@_35,
							    F@_36, F@_37, F@_38,
							    F@_39, F@_40, F@_41,
							    F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<232,
						   225, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_face_all'(Rest, Z1,
						   Z2, F@_1, F@_2, F@_3, F@_4,
						   F@_5, F@_6, F@_7, F@_8, F@_9,
						   F@_10, F@_11, F@_12, F@_13,
						   F@_14, F@_15, F@_16, F@_17,
						   F@_18, F@_19, F@_20, F@_21,
						   F@_22, F@_23, F@_24, F@_25,
						   F@_26, F@_27, F@_28, F@_29,
						   F@_30, F@_31, F@_32, F@_33,
						   F@_34, F@_35, F@_36, F@_37,
						   F@_38, F@_39, F@_40, F@_41,
						   F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<240,
						   225, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_gostring_all'(Rest,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<248,
						   225, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_populate_all'(Rest,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<128,
						   226, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_stringer_all'(Rest,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<136,
						   226, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_onlyone_all'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, F@_19, F@_20,
						      F@_21, F@_22, F@_23,
						      F@_24, F@_25, F@_26,
						      F@_27, F@_28, F@_29,
						      F@_30, F@_31, F@_32,
						      F@_33, F@_34, F@_35,
						      F@_36, F@_37, F@_38,
						      F@_39, F@_40, F@_41,
						      F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<168,
						   226, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_equal_all'(Rest,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    F@_28, F@_29, F@_30, F@_31,
						    F@_32, F@_33, F@_34, F@_35,
						    F@_36, F@_37, F@_38, F@_39,
						    F@_40, F@_41, F@_42,
						    TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<176,
						   226, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_description_all'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, F@_13, F@_14,
							  F@_15, F@_16, F@_17,
							  F@_18, F@_19, F@_20,
							  F@_21, F@_22, F@_23,
							  F@_24, F@_25, F@_26,
							  F@_27, F@_28, F@_29,
							  F@_30, F@_31, F@_32,
							  F@_33, F@_34, F@_35,
							  F@_36, F@_37, F@_38,
							  F@_39, F@_40, F@_41,
							  F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<184,
						   226, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_testgen_all'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, F@_19, F@_20,
						      F@_21, F@_22, F@_23,
						      F@_24, F@_25, F@_26,
						      F@_27, F@_28, F@_29,
						      F@_30, F@_31, F@_32,
						      F@_33, F@_34, F@_35,
						      F@_36, F@_37, F@_38,
						      F@_39, F@_40, F@_41,
						      F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<192,
						   226, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_benchgen_all'(Rest,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<200,
						   226, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_marshaler_all'(Rest,
							Z1, Z2, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27, F@_28,
							F@_29, F@_30, F@_31,
							F@_32, F@_33, F@_34,
							F@_35, F@_36, F@_37,
							F@_38, F@_39, F@_40,
							F@_41, F@_42,
							TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<208,
						   226, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_unmarshaler_all'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, F@_13, F@_14,
							  F@_15, F@_16, F@_17,
							  F@_18, F@_19, F@_20,
							  F@_21, F@_22, F@_23,
							  F@_24, F@_25, F@_26,
							  F@_27, F@_28, F@_29,
							  F@_30, F@_31, F@_32,
							  F@_33, F@_34, F@_35,
							  F@_36, F@_37, F@_38,
							  F@_39, F@_40, F@_41,
							  F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<216,
						   226, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_stable_marshaler_all'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12, F@_13,
							       F@_14, F@_15,
							       F@_16, F@_17,
							       F@_18, F@_19,
							       F@_20, F@_21,
							       F@_22, F@_23,
							       F@_24, F@_25,
							       F@_26, F@_27,
							       F@_28, F@_29,
							       F@_30, F@_31,
							       F@_32, F@_33,
							       F@_34, F@_35,
							       F@_36, F@_37,
							       F@_38, F@_39,
							       F@_40, F@_41,
							       F@_42,
							       TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<224,
						   226, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_sizer_all'(Rest,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    F@_28, F@_29, F@_30, F@_31,
						    F@_32, F@_33, F@_34, F@_35,
						    F@_36, F@_37, F@_38, F@_39,
						    F@_40, F@_41, F@_42,
						    TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<232,
						   226, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_goproto_enum_stringer_all'(Rest,
								    Z1, Z2,
								    F@_1, F@_2,
								    F@_3, F@_4,
								    F@_5, F@_6,
								    F@_7, F@_8,
								    F@_9, F@_10,
								    F@_11,
								    F@_12,
								    F@_13,
								    F@_14,
								    F@_15,
								    F@_16,
								    F@_17,
								    F@_18,
								    F@_19,
								    F@_20,
								    F@_21,
								    F@_22,
								    F@_23,
								    F@_24,
								    F@_25,
								    F@_26,
								    F@_27,
								    F@_28,
								    F@_29,
								    F@_30,
								    F@_31,
								    F@_32,
								    F@_33,
								    F@_34,
								    F@_35,
								    F@_36,
								    F@_37,
								    F@_38,
								    F@_39,
								    F@_40,
								    F@_41,
								    F@_42,
								    TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<240,
						   226, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_enum_stringer_all'(Rest,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, F@_19, F@_20,
							    F@_21, F@_22, F@_23,
							    F@_24, F@_25, F@_26,
							    F@_27, F@_28, F@_29,
							    F@_30, F@_31, F@_32,
							    F@_33, F@_34, F@_35,
							    F@_36, F@_37, F@_38,
							    F@_39, F@_40, F@_41,
							    F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<248,
						   226, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_unsafe_marshaler_all'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12, F@_13,
							       F@_14, F@_15,
							       F@_16, F@_17,
							       F@_18, F@_19,
							       F@_20, F@_21,
							       F@_22, F@_23,
							       F@_24, F@_25,
							       F@_26, F@_27,
							       F@_28, F@_29,
							       F@_30, F@_31,
							       F@_32, F@_33,
							       F@_34, F@_35,
							       F@_36, F@_37,
							       F@_38, F@_39,
							       F@_40, F@_41,
							       F@_42,
							       TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<128,
						   227, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_unsafe_unmarshaler_all'(Rest,
								 Z1, Z2, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 F@_8, F@_9,
								 F@_10, F@_11,
								 F@_12, F@_13,
								 F@_14, F@_15,
								 F@_16, F@_17,
								 F@_18, F@_19,
								 F@_20, F@_21,
								 F@_22, F@_23,
								 F@_24, F@_25,
								 F@_26, F@_27,
								 F@_28, F@_29,
								 F@_30, F@_31,
								 F@_32, F@_33,
								 F@_34, F@_35,
								 F@_36, F@_37,
								 F@_38, F@_39,
								 F@_40, F@_41,
								 F@_42,
								 TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<136,
						   227, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_goproto_extensions_map_all'(Rest,
								     Z1, Z2,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     F@_5, F@_6,
								     F@_7, F@_8,
								     F@_9,
								     F@_10,
								     F@_11,
								     F@_12,
								     F@_13,
								     F@_14,
								     F@_15,
								     F@_16,
								     F@_17,
								     F@_18,
								     F@_19,
								     F@_20,
								     F@_21,
								     F@_22,
								     F@_23,
								     F@_24,
								     F@_25,
								     F@_26,
								     F@_27,
								     F@_28,
								     F@_29,
								     F@_30,
								     F@_31,
								     F@_32,
								     F@_33,
								     F@_34,
								     F@_35,
								     F@_36,
								     F@_37,
								     F@_38,
								     F@_39,
								     F@_40,
								     F@_41,
								     F@_42,
								     TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<144,
						   227, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_goproto_unrecognized_all'(Rest,
								   Z1, Z2, F@_1,
								   F@_2, F@_3,
								   F@_4, F@_5,
								   F@_6, F@_7,
								   F@_8, F@_9,
								   F@_10, F@_11,
								   F@_12, F@_13,
								   F@_14, F@_15,
								   F@_16, F@_17,
								   F@_18, F@_19,
								   F@_20, F@_21,
								   F@_22, F@_23,
								   F@_24, F@_25,
								   F@_26, F@_27,
								   F@_28, F@_29,
								   F@_30, F@_31,
								   F@_32, F@_33,
								   F@_34, F@_35,
								   F@_36, F@_37,
								   F@_38, F@_39,
								   F@_40, F@_41,
								   F@_42,
								   TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<152,
						   227, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_gogoproto_import'(Rest,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, F@_32,
							   F@_33, F@_34, F@_35,
							   F@_36, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<160,
						   227, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_protosizer_all'(Rest,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 F@_13, F@_14, F@_15,
							 F@_16, F@_17, F@_18,
							 F@_19, F@_20, F@_21,
							 F@_22, F@_23, F@_24,
							 F@_25, F@_26, F@_27,
							 F@_28, F@_29, F@_30,
							 F@_31, F@_32, F@_33,
							 F@_34, F@_35, F@_36,
							 F@_37, F@_38, F@_39,
							 F@_40, F@_41, F@_42,
							 TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<168,
						   227, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'd_field_google.protobuf.FileOptions_compare_all'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, F@_19, F@_20,
						      F@_21, F@_22, F@_23,
						      F@_24, F@_25, F@_26,
						      F@_27, F@_28, F@_29,
						      F@_30, F@_31, F@_32,
						      F@_33, F@_34, F@_35,
						      F@_36, F@_37, F@_38,
						      F@_39, F@_40, F@_41,
						      F@_42, TrUserData);
'dfp_read_field_def_google.protobuf.FileOptions'(<<>>,
						 0, 0, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, R1, F@_17, F@_18,
						 F@_19, F@_20, F@_21, F@_22,
						 F@_23, F@_24, F@_25, F@_26,
						 F@_27, F@_28, F@_29, F@_30,
						 F@_31, F@_32, F@_33, F@_34,
						 F@_35, F@_36, F@_37, F@_38,
						 F@_39, F@_40, F@_41, F@_42,
						 TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{java_package => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{java_outer_classname => F@_2}
	 end,
    S4 = if F@_3 == '$undef' -> S3;
	    true -> S3#{java_multiple_files => F@_3}
	 end,
    S5 = if F@_4 == '$undef' -> S4;
	    true -> S4#{java_generate_equals_and_hash => F@_4}
	 end,
    S6 = if F@_5 == '$undef' -> S5;
	    true -> S5#{java_string_check_utf8 => F@_5}
	 end,
    S7 = if F@_6 == '$undef' -> S6;
	    true -> S6#{optimize_for => F@_6}
	 end,
    S8 = if F@_7 == '$undef' -> S7;
	    true -> S7#{go_package => F@_7}
	 end,
    S9 = if F@_8 == '$undef' -> S8;
	    true -> S8#{cc_generic_services => F@_8}
	 end,
    S10 = if F@_9 == '$undef' -> S9;
	     true -> S9#{java_generic_services => F@_9}
	  end,
    S11 = if F@_10 == '$undef' -> S10;
	     true -> S10#{py_generic_services => F@_10}
	  end,
    S12 = if F@_11 == '$undef' -> S11;
	     true -> S11#{deprecated => F@_11}
	  end,
    S13 = if F@_12 == '$undef' -> S12;
	     true -> S12#{cc_enable_arenas => F@_12}
	  end,
    S14 = if F@_13 == '$undef' -> S13;
	     true -> S13#{objc_class_prefix => F@_13}
	  end,
    S15 = if F@_14 == '$undef' -> S14;
	     true -> S14#{csharp_namespace => F@_14}
	  end,
    S16 = if F@_15 == '$undef' -> S15;
	     true -> S15#{javanano_use_deprecated_package => F@_15}
	  end,
    S17 = if R1 == '$undef' -> S16;
	     true ->
		 S16#{uninterpreted_option =>
			  lists_reverse(R1, TrUserData)}
	  end,
    S18 = if F@_17 == '$undef' -> S17;
	     true -> S17#{goproto_getters_all => F@_17}
	  end,
    S19 = if F@_18 == '$undef' -> S18;
	     true -> S18#{goproto_enum_prefix_all => F@_18}
	  end,
    S20 = if F@_19 == '$undef' -> S19;
	     true -> S19#{goproto_stringer_all => F@_19}
	  end,
    S21 = if F@_20 == '$undef' -> S20;
	     true -> S20#{verbose_equal_all => F@_20}
	  end,
    S22 = if F@_21 == '$undef' -> S21;
	     true -> S21#{face_all => F@_21}
	  end,
    S23 = if F@_22 == '$undef' -> S22;
	     true -> S22#{gostring_all => F@_22}
	  end,
    S24 = if F@_23 == '$undef' -> S23;
	     true -> S23#{populate_all => F@_23}
	  end,
    S25 = if F@_24 == '$undef' -> S24;
	     true -> S24#{stringer_all => F@_24}
	  end,
    S26 = if F@_25 == '$undef' -> S25;
	     true -> S25#{onlyone_all => F@_25}
	  end,
    S27 = if F@_26 == '$undef' -> S26;
	     true -> S26#{equal_all => F@_26}
	  end,
    S28 = if F@_27 == '$undef' -> S27;
	     true -> S27#{description_all => F@_27}
	  end,
    S29 = if F@_28 == '$undef' -> S28;
	     true -> S28#{testgen_all => F@_28}
	  end,
    S30 = if F@_29 == '$undef' -> S29;
	     true -> S29#{benchgen_all => F@_29}
	  end,
    S31 = if F@_30 == '$undef' -> S30;
	     true -> S30#{marshaler_all => F@_30}
	  end,
    S32 = if F@_31 == '$undef' -> S31;
	     true -> S31#{unmarshaler_all => F@_31}
	  end,
    S33 = if F@_32 == '$undef' -> S32;
	     true -> S32#{stable_marshaler_all => F@_32}
	  end,
    S34 = if F@_33 == '$undef' -> S33;
	     true -> S33#{sizer_all => F@_33}
	  end,
    S35 = if F@_34 == '$undef' -> S34;
	     true -> S34#{goproto_enum_stringer_all => F@_34}
	  end,
    S36 = if F@_35 == '$undef' -> S35;
	     true -> S35#{enum_stringer_all => F@_35}
	  end,
    S37 = if F@_36 == '$undef' -> S36;
	     true -> S36#{unsafe_marshaler_all => F@_36}
	  end,
    S38 = if F@_37 == '$undef' -> S37;
	     true -> S37#{unsafe_unmarshaler_all => F@_37}
	  end,
    S39 = if F@_38 == '$undef' -> S38;
	     true -> S38#{goproto_extensions_map_all => F@_38}
	  end,
    S40 = if F@_39 == '$undef' -> S39;
	     true -> S39#{goproto_unrecognized_all => F@_39}
	  end,
    S41 = if F@_40 == '$undef' -> S40;
	     true -> S40#{gogoproto_import => F@_40}
	  end,
    S42 = if F@_41 == '$undef' -> S41;
	     true -> S41#{protosizer_all => F@_41}
	  end,
    if F@_42 == '$undef' -> S42;
       true -> S42#{compare_all => F@_42}
    end;
'dfp_read_field_def_google.protobuf.FileOptions'(Other,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    'dg_read_field_def_google.protobuf.FileOptions'(Other,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    F@_28, F@_29, F@_30, F@_31,
						    F@_32, F@_33, F@_34, F@_35,
						    F@_36, F@_37, F@_38, F@_39,
						    F@_40, F@_41, F@_42,
						    TrUserData).

'dg_read_field_def_google.protobuf.FileOptions'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, F@_12, F@_13,
						F@_14, F@_15, F@_16, F@_17,
						F@_18, F@_19, F@_20, F@_21,
						F@_22, F@_23, F@_24, F@_25,
						F@_26, F@_27, F@_28, F@_29,
						F@_30, F@_31, F@_32, F@_33,
						F@_34, F@_35, F@_36, F@_37,
						F@_38, F@_39, F@_40, F@_41,
						F@_42, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.FileOptions'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    F@_2, F@_3, F@_4, F@_5,
						    F@_6, F@_7, F@_8, F@_9,
						    F@_10, F@_11, F@_12, F@_13,
						    F@_14, F@_15, F@_16, F@_17,
						    F@_18, F@_19, F@_20, F@_21,
						    F@_22, F@_23, F@_24, F@_25,
						    F@_26, F@_27, F@_28, F@_29,
						    F@_30, F@_31, F@_32, F@_33,
						    F@_34, F@_35, F@_36, F@_37,
						    F@_38, F@_39, F@_40, F@_41,
						    F@_42, TrUserData);
'dg_read_field_def_google.protobuf.FileOptions'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, F@_12, F@_13,
						F@_14, F@_15, F@_16, F@_17,
						F@_18, F@_19, F@_20, F@_21,
						F@_22, F@_23, F@_24, F@_25,
						F@_26, F@_27, F@_28, F@_29,
						F@_30, F@_31, F@_32, F@_33,
						F@_34, F@_35, F@_36, F@_37,
						F@_38, F@_39, F@_40, F@_41,
						F@_42, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_google.protobuf.FileOptions_java_package'(Rest,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     F@_28, F@_29,
							     F@_30, F@_31,
							     F@_32, F@_33,
							     F@_34, F@_35,
							     F@_36, F@_37,
							     F@_38, F@_39,
							     F@_40, F@_41,
							     F@_42, TrUserData);
      66 ->
	  'd_field_google.protobuf.FileOptions_java_outer_classname'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     F@_4, F@_5,
								     F@_6, F@_7,
								     F@_8, F@_9,
								     F@_10,
								     F@_11,
								     F@_12,
								     F@_13,
								     F@_14,
								     F@_15,
								     F@_16,
								     F@_17,
								     F@_18,
								     F@_19,
								     F@_20,
								     F@_21,
								     F@_22,
								     F@_23,
								     F@_24,
								     F@_25,
								     F@_26,
								     F@_27,
								     F@_28,
								     F@_29,
								     F@_30,
								     F@_31,
								     F@_32,
								     F@_33,
								     F@_34,
								     F@_35,
								     F@_36,
								     F@_37,
								     F@_38,
								     F@_39,
								     F@_40,
								     F@_41,
								     F@_42,
								     TrUserData);
      80 ->
	  'd_field_google.protobuf.FileOptions_java_multiple_files'(Rest,
								    0, 0, F@_1,
								    F@_2, F@_3,
								    F@_4, F@_5,
								    F@_6, F@_7,
								    F@_8, F@_9,
								    F@_10,
								    F@_11,
								    F@_12,
								    F@_13,
								    F@_14,
								    F@_15,
								    F@_16,
								    F@_17,
								    F@_18,
								    F@_19,
								    F@_20,
								    F@_21,
								    F@_22,
								    F@_23,
								    F@_24,
								    F@_25,
								    F@_26,
								    F@_27,
								    F@_28,
								    F@_29,
								    F@_30,
								    F@_31,
								    F@_32,
								    F@_33,
								    F@_34,
								    F@_35,
								    F@_36,
								    F@_37,
								    F@_38,
								    F@_39,
								    F@_40,
								    F@_41,
								    F@_42,
								    TrUserData);
      160 ->
	  'd_field_google.protobuf.FileOptions_java_generate_equals_and_hash'(Rest,
									      0,
									      0,
									      F@_1,
									      F@_2,
									      F@_3,
									      F@_4,
									      F@_5,
									      F@_6,
									      F@_7,
									      F@_8,
									      F@_9,
									      F@_10,
									      F@_11,
									      F@_12,
									      F@_13,
									      F@_14,
									      F@_15,
									      F@_16,
									      F@_17,
									      F@_18,
									      F@_19,
									      F@_20,
									      F@_21,
									      F@_22,
									      F@_23,
									      F@_24,
									      F@_25,
									      F@_26,
									      F@_27,
									      F@_28,
									      F@_29,
									      F@_30,
									      F@_31,
									      F@_32,
									      F@_33,
									      F@_34,
									      F@_35,
									      F@_36,
									      F@_37,
									      F@_38,
									      F@_39,
									      F@_40,
									      F@_41,
									      F@_42,
									      TrUserData);
      216 ->
	  'd_field_google.protobuf.FileOptions_java_string_check_utf8'(Rest,
								       0, 0,
								       F@_1,
								       F@_2,
								       F@_3,
								       F@_4,
								       F@_5,
								       F@_6,
								       F@_7,
								       F@_8,
								       F@_9,
								       F@_10,
								       F@_11,
								       F@_12,
								       F@_13,
								       F@_14,
								       F@_15,
								       F@_16,
								       F@_17,
								       F@_18,
								       F@_19,
								       F@_20,
								       F@_21,
								       F@_22,
								       F@_23,
								       F@_24,
								       F@_25,
								       F@_26,
								       F@_27,
								       F@_28,
								       F@_29,
								       F@_30,
								       F@_31,
								       F@_32,
								       F@_33,
								       F@_34,
								       F@_35,
								       F@_36,
								       F@_37,
								       F@_38,
								       F@_39,
								       F@_40,
								       F@_41,
								       F@_42,
								       TrUserData);
      72 ->
	  'd_field_google.protobuf.FileOptions_optimize_for'(Rest,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     F@_28, F@_29,
							     F@_30, F@_31,
							     F@_32, F@_33,
							     F@_34, F@_35,
							     F@_36, F@_37,
							     F@_38, F@_39,
							     F@_40, F@_41,
							     F@_42, TrUserData);
      90 ->
	  'd_field_google.protobuf.FileOptions_go_package'(Rest,
							   0, 0, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, F@_32,
							   F@_33, F@_34, F@_35,
							   F@_36, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData);
      128 ->
	  'd_field_google.protobuf.FileOptions_cc_generic_services'(Rest,
								    0, 0, F@_1,
								    F@_2, F@_3,
								    F@_4, F@_5,
								    F@_6, F@_7,
								    F@_8, F@_9,
								    F@_10,
								    F@_11,
								    F@_12,
								    F@_13,
								    F@_14,
								    F@_15,
								    F@_16,
								    F@_17,
								    F@_18,
								    F@_19,
								    F@_20,
								    F@_21,
								    F@_22,
								    F@_23,
								    F@_24,
								    F@_25,
								    F@_26,
								    F@_27,
								    F@_28,
								    F@_29,
								    F@_30,
								    F@_31,
								    F@_32,
								    F@_33,
								    F@_34,
								    F@_35,
								    F@_36,
								    F@_37,
								    F@_38,
								    F@_39,
								    F@_40,
								    F@_41,
								    F@_42,
								    TrUserData);
      136 ->
	  'd_field_google.protobuf.FileOptions_java_generic_services'(Rest,
								      0, 0,
								      F@_1,
								      F@_2,
								      F@_3,
								      F@_4,
								      F@_5,
								      F@_6,
								      F@_7,
								      F@_8,
								      F@_9,
								      F@_10,
								      F@_11,
								      F@_12,
								      F@_13,
								      F@_14,
								      F@_15,
								      F@_16,
								      F@_17,
								      F@_18,
								      F@_19,
								      F@_20,
								      F@_21,
								      F@_22,
								      F@_23,
								      F@_24,
								      F@_25,
								      F@_26,
								      F@_27,
								      F@_28,
								      F@_29,
								      F@_30,
								      F@_31,
								      F@_32,
								      F@_33,
								      F@_34,
								      F@_35,
								      F@_36,
								      F@_37,
								      F@_38,
								      F@_39,
								      F@_40,
								      F@_41,
								      F@_42,
								      TrUserData);
      144 ->
	  'd_field_google.protobuf.FileOptions_py_generic_services'(Rest,
								    0, 0, F@_1,
								    F@_2, F@_3,
								    F@_4, F@_5,
								    F@_6, F@_7,
								    F@_8, F@_9,
								    F@_10,
								    F@_11,
								    F@_12,
								    F@_13,
								    F@_14,
								    F@_15,
								    F@_16,
								    F@_17,
								    F@_18,
								    F@_19,
								    F@_20,
								    F@_21,
								    F@_22,
								    F@_23,
								    F@_24,
								    F@_25,
								    F@_26,
								    F@_27,
								    F@_28,
								    F@_29,
								    F@_30,
								    F@_31,
								    F@_32,
								    F@_33,
								    F@_34,
								    F@_35,
								    F@_36,
								    F@_37,
								    F@_38,
								    F@_39,
								    F@_40,
								    F@_41,
								    F@_42,
								    TrUserData);
      184 ->
	  'd_field_google.protobuf.FileOptions_deprecated'(Rest,
							   0, 0, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, F@_32,
							   F@_33, F@_34, F@_35,
							   F@_36, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData);
      248 ->
	  'd_field_google.protobuf.FileOptions_cc_enable_arenas'(Rest,
								 0, 0, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 F@_8, F@_9,
								 F@_10, F@_11,
								 F@_12, F@_13,
								 F@_14, F@_15,
								 F@_16, F@_17,
								 F@_18, F@_19,
								 F@_20, F@_21,
								 F@_22, F@_23,
								 F@_24, F@_25,
								 F@_26, F@_27,
								 F@_28, F@_29,
								 F@_30, F@_31,
								 F@_32, F@_33,
								 F@_34, F@_35,
								 F@_36, F@_37,
								 F@_38, F@_39,
								 F@_40, F@_41,
								 F@_42,
								 TrUserData);
      290 ->
	  'd_field_google.protobuf.FileOptions_objc_class_prefix'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6, F@_7,
								  F@_8, F@_9,
								  F@_10, F@_11,
								  F@_12, F@_13,
								  F@_14, F@_15,
								  F@_16, F@_17,
								  F@_18, F@_19,
								  F@_20, F@_21,
								  F@_22, F@_23,
								  F@_24, F@_25,
								  F@_26, F@_27,
								  F@_28, F@_29,
								  F@_30, F@_31,
								  F@_32, F@_33,
								  F@_34, F@_35,
								  F@_36, F@_37,
								  F@_38, F@_39,
								  F@_40, F@_41,
								  F@_42,
								  TrUserData);
      298 ->
	  'd_field_google.protobuf.FileOptions_csharp_namespace'(Rest,
								 0, 0, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 F@_8, F@_9,
								 F@_10, F@_11,
								 F@_12, F@_13,
								 F@_14, F@_15,
								 F@_16, F@_17,
								 F@_18, F@_19,
								 F@_20, F@_21,
								 F@_22, F@_23,
								 F@_24, F@_25,
								 F@_26, F@_27,
								 F@_28, F@_29,
								 F@_30, F@_31,
								 F@_32, F@_33,
								 F@_34, F@_35,
								 F@_36, F@_37,
								 F@_38, F@_39,
								 F@_40, F@_41,
								 F@_42,
								 TrUserData);
      304 ->
	  'd_field_google.protobuf.FileOptions_javanano_use_deprecated_package'(Rest,
										0,
										0,
										F@_1,
										F@_2,
										F@_3,
										F@_4,
										F@_5,
										F@_6,
										F@_7,
										F@_8,
										F@_9,
										F@_10,
										F@_11,
										F@_12,
										F@_13,
										F@_14,
										F@_15,
										F@_16,
										F@_17,
										F@_18,
										F@_19,
										F@_20,
										F@_21,
										F@_22,
										F@_23,
										F@_24,
										F@_25,
										F@_26,
										F@_27,
										F@_28,
										F@_29,
										F@_30,
										F@_31,
										F@_32,
										F@_33,
										F@_34,
										F@_35,
										F@_36,
										F@_37,
										F@_38,
										F@_39,
										F@_40,
										F@_41,
										F@_42,
										TrUserData);
      7994 ->
	  'd_field_google.protobuf.FileOptions_uninterpreted_option'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     F@_4, F@_5,
								     F@_6, F@_7,
								     F@_8, F@_9,
								     F@_10,
								     F@_11,
								     F@_12,
								     F@_13,
								     F@_14,
								     F@_15,
								     F@_16,
								     F@_17,
								     F@_18,
								     F@_19,
								     F@_20,
								     F@_21,
								     F@_22,
								     F@_23,
								     F@_24,
								     F@_25,
								     F@_26,
								     F@_27,
								     F@_28,
								     F@_29,
								     F@_30,
								     F@_31,
								     F@_32,
								     F@_33,
								     F@_34,
								     F@_35,
								     F@_36,
								     F@_37,
								     F@_38,
								     F@_39,
								     F@_40,
								     F@_41,
								     F@_42,
								     TrUserData);
      504008 ->
	  'd_field_google.protobuf.FileOptions_goproto_getters_all'(Rest,
								    0, 0, F@_1,
								    F@_2, F@_3,
								    F@_4, F@_5,
								    F@_6, F@_7,
								    F@_8, F@_9,
								    F@_10,
								    F@_11,
								    F@_12,
								    F@_13,
								    F@_14,
								    F@_15,
								    F@_16,
								    F@_17,
								    F@_18,
								    F@_19,
								    F@_20,
								    F@_21,
								    F@_22,
								    F@_23,
								    F@_24,
								    F@_25,
								    F@_26,
								    F@_27,
								    F@_28,
								    F@_29,
								    F@_30,
								    F@_31,
								    F@_32,
								    F@_33,
								    F@_34,
								    F@_35,
								    F@_36,
								    F@_37,
								    F@_38,
								    F@_39,
								    F@_40,
								    F@_41,
								    F@_42,
								    TrUserData);
      504016 ->
	  'd_field_google.protobuf.FileOptions_goproto_enum_prefix_all'(Rest,
									0, 0,
									F@_1,
									F@_2,
									F@_3,
									F@_4,
									F@_5,
									F@_6,
									F@_7,
									F@_8,
									F@_9,
									F@_10,
									F@_11,
									F@_12,
									F@_13,
									F@_14,
									F@_15,
									F@_16,
									F@_17,
									F@_18,
									F@_19,
									F@_20,
									F@_21,
									F@_22,
									F@_23,
									F@_24,
									F@_25,
									F@_26,
									F@_27,
									F@_28,
									F@_29,
									F@_30,
									F@_31,
									F@_32,
									F@_33,
									F@_34,
									F@_35,
									F@_36,
									F@_37,
									F@_38,
									F@_39,
									F@_40,
									F@_41,
									F@_42,
									TrUserData);
      504024 ->
	  'd_field_google.protobuf.FileOptions_goproto_stringer_all'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     F@_4, F@_5,
								     F@_6, F@_7,
								     F@_8, F@_9,
								     F@_10,
								     F@_11,
								     F@_12,
								     F@_13,
								     F@_14,
								     F@_15,
								     F@_16,
								     F@_17,
								     F@_18,
								     F@_19,
								     F@_20,
								     F@_21,
								     F@_22,
								     F@_23,
								     F@_24,
								     F@_25,
								     F@_26,
								     F@_27,
								     F@_28,
								     F@_29,
								     F@_30,
								     F@_31,
								     F@_32,
								     F@_33,
								     F@_34,
								     F@_35,
								     F@_36,
								     F@_37,
								     F@_38,
								     F@_39,
								     F@_40,
								     F@_41,
								     F@_42,
								     TrUserData);
      504032 ->
	  'd_field_google.protobuf.FileOptions_verbose_equal_all'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6, F@_7,
								  F@_8, F@_9,
								  F@_10, F@_11,
								  F@_12, F@_13,
								  F@_14, F@_15,
								  F@_16, F@_17,
								  F@_18, F@_19,
								  F@_20, F@_21,
								  F@_22, F@_23,
								  F@_24, F@_25,
								  F@_26, F@_27,
								  F@_28, F@_29,
								  F@_30, F@_31,
								  F@_32, F@_33,
								  F@_34, F@_35,
								  F@_36, F@_37,
								  F@_38, F@_39,
								  F@_40, F@_41,
								  F@_42,
								  TrUserData);
      504040 ->
	  'd_field_google.protobuf.FileOptions_face_all'(Rest, 0,
							 0, F@_1, F@_2, F@_3,
							 F@_4, F@_5, F@_6, F@_7,
							 F@_8, F@_9, F@_10,
							 F@_11, F@_12, F@_13,
							 F@_14, F@_15, F@_16,
							 F@_17, F@_18, F@_19,
							 F@_20, F@_21, F@_22,
							 F@_23, F@_24, F@_25,
							 F@_26, F@_27, F@_28,
							 F@_29, F@_30, F@_31,
							 F@_32, F@_33, F@_34,
							 F@_35, F@_36, F@_37,
							 F@_38, F@_39, F@_40,
							 F@_41, F@_42,
							 TrUserData);
      504048 ->
	  'd_field_google.protobuf.FileOptions_gostring_all'(Rest,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     F@_28, F@_29,
							     F@_30, F@_31,
							     F@_32, F@_33,
							     F@_34, F@_35,
							     F@_36, F@_37,
							     F@_38, F@_39,
							     F@_40, F@_41,
							     F@_42, TrUserData);
      504056 ->
	  'd_field_google.protobuf.FileOptions_populate_all'(Rest,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     F@_28, F@_29,
							     F@_30, F@_31,
							     F@_32, F@_33,
							     F@_34, F@_35,
							     F@_36, F@_37,
							     F@_38, F@_39,
							     F@_40, F@_41,
							     F@_42, TrUserData);
      504064 ->
	  'd_field_google.protobuf.FileOptions_stringer_all'(Rest,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     F@_28, F@_29,
							     F@_30, F@_31,
							     F@_32, F@_33,
							     F@_34, F@_35,
							     F@_36, F@_37,
							     F@_38, F@_39,
							     F@_40, F@_41,
							     F@_42, TrUserData);
      504072 ->
	  'd_field_google.protobuf.FileOptions_onlyone_all'(Rest,
							    0, 0, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, F@_19, F@_20,
							    F@_21, F@_22, F@_23,
							    F@_24, F@_25, F@_26,
							    F@_27, F@_28, F@_29,
							    F@_30, F@_31, F@_32,
							    F@_33, F@_34, F@_35,
							    F@_36, F@_37, F@_38,
							    F@_39, F@_40, F@_41,
							    F@_42, TrUserData);
      504104 ->
	  'd_field_google.protobuf.FileOptions_equal_all'(Rest, 0,
							  0, F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, F@_11, F@_12,
							  F@_13, F@_14, F@_15,
							  F@_16, F@_17, F@_18,
							  F@_19, F@_20, F@_21,
							  F@_22, F@_23, F@_24,
							  F@_25, F@_26, F@_27,
							  F@_28, F@_29, F@_30,
							  F@_31, F@_32, F@_33,
							  F@_34, F@_35, F@_36,
							  F@_37, F@_38, F@_39,
							  F@_40, F@_41, F@_42,
							  TrUserData);
      504112 ->
	  'd_field_google.protobuf.FileOptions_description_all'(Rest,
								0, 0, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10, F@_11,
								F@_12, F@_13,
								F@_14, F@_15,
								F@_16, F@_17,
								F@_18, F@_19,
								F@_20, F@_21,
								F@_22, F@_23,
								F@_24, F@_25,
								F@_26, F@_27,
								F@_28, F@_29,
								F@_30, F@_31,
								F@_32, F@_33,
								F@_34, F@_35,
								F@_36, F@_37,
								F@_38, F@_39,
								F@_40, F@_41,
								F@_42,
								TrUserData);
      504120 ->
	  'd_field_google.protobuf.FileOptions_testgen_all'(Rest,
							    0, 0, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, F@_19, F@_20,
							    F@_21, F@_22, F@_23,
							    F@_24, F@_25, F@_26,
							    F@_27, F@_28, F@_29,
							    F@_30, F@_31, F@_32,
							    F@_33, F@_34, F@_35,
							    F@_36, F@_37, F@_38,
							    F@_39, F@_40, F@_41,
							    F@_42, TrUserData);
      504128 ->
	  'd_field_google.protobuf.FileOptions_benchgen_all'(Rest,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     F@_28, F@_29,
							     F@_30, F@_31,
							     F@_32, F@_33,
							     F@_34, F@_35,
							     F@_36, F@_37,
							     F@_38, F@_39,
							     F@_40, F@_41,
							     F@_42, TrUserData);
      504136 ->
	  'd_field_google.protobuf.FileOptions_marshaler_all'(Rest,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7, F@_8,
							      F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24,
							      F@_25, F@_26,
							      F@_27, F@_28,
							      F@_29, F@_30,
							      F@_31, F@_32,
							      F@_33, F@_34,
							      F@_35, F@_36,
							      F@_37, F@_38,
							      F@_39, F@_40,
							      F@_41, F@_42,
							      TrUserData);
      504144 ->
	  'd_field_google.protobuf.FileOptions_unmarshaler_all'(Rest,
								0, 0, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10, F@_11,
								F@_12, F@_13,
								F@_14, F@_15,
								F@_16, F@_17,
								F@_18, F@_19,
								F@_20, F@_21,
								F@_22, F@_23,
								F@_24, F@_25,
								F@_26, F@_27,
								F@_28, F@_29,
								F@_30, F@_31,
								F@_32, F@_33,
								F@_34, F@_35,
								F@_36, F@_37,
								F@_38, F@_39,
								F@_40, F@_41,
								F@_42,
								TrUserData);
      504152 ->
	  'd_field_google.protobuf.FileOptions_stable_marshaler_all'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     F@_4, F@_5,
								     F@_6, F@_7,
								     F@_8, F@_9,
								     F@_10,
								     F@_11,
								     F@_12,
								     F@_13,
								     F@_14,
								     F@_15,
								     F@_16,
								     F@_17,
								     F@_18,
								     F@_19,
								     F@_20,
								     F@_21,
								     F@_22,
								     F@_23,
								     F@_24,
								     F@_25,
								     F@_26,
								     F@_27,
								     F@_28,
								     F@_29,
								     F@_30,
								     F@_31,
								     F@_32,
								     F@_33,
								     F@_34,
								     F@_35,
								     F@_36,
								     F@_37,
								     F@_38,
								     F@_39,
								     F@_40,
								     F@_41,
								     F@_42,
								     TrUserData);
      504160 ->
	  'd_field_google.protobuf.FileOptions_sizer_all'(Rest, 0,
							  0, F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, F@_11, F@_12,
							  F@_13, F@_14, F@_15,
							  F@_16, F@_17, F@_18,
							  F@_19, F@_20, F@_21,
							  F@_22, F@_23, F@_24,
							  F@_25, F@_26, F@_27,
							  F@_28, F@_29, F@_30,
							  F@_31, F@_32, F@_33,
							  F@_34, F@_35, F@_36,
							  F@_37, F@_38, F@_39,
							  F@_40, F@_41, F@_42,
							  TrUserData);
      504168 ->
	  'd_field_google.protobuf.FileOptions_goproto_enum_stringer_all'(Rest,
									  0, 0,
									  F@_1,
									  F@_2,
									  F@_3,
									  F@_4,
									  F@_5,
									  F@_6,
									  F@_7,
									  F@_8,
									  F@_9,
									  F@_10,
									  F@_11,
									  F@_12,
									  F@_13,
									  F@_14,
									  F@_15,
									  F@_16,
									  F@_17,
									  F@_18,
									  F@_19,
									  F@_20,
									  F@_21,
									  F@_22,
									  F@_23,
									  F@_24,
									  F@_25,
									  F@_26,
									  F@_27,
									  F@_28,
									  F@_29,
									  F@_30,
									  F@_31,
									  F@_32,
									  F@_33,
									  F@_34,
									  F@_35,
									  F@_36,
									  F@_37,
									  F@_38,
									  F@_39,
									  F@_40,
									  F@_41,
									  F@_42,
									  TrUserData);
      504176 ->
	  'd_field_google.protobuf.FileOptions_enum_stringer_all'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6, F@_7,
								  F@_8, F@_9,
								  F@_10, F@_11,
								  F@_12, F@_13,
								  F@_14, F@_15,
								  F@_16, F@_17,
								  F@_18, F@_19,
								  F@_20, F@_21,
								  F@_22, F@_23,
								  F@_24, F@_25,
								  F@_26, F@_27,
								  F@_28, F@_29,
								  F@_30, F@_31,
								  F@_32, F@_33,
								  F@_34, F@_35,
								  F@_36, F@_37,
								  F@_38, F@_39,
								  F@_40, F@_41,
								  F@_42,
								  TrUserData);
      504184 ->
	  'd_field_google.protobuf.FileOptions_unsafe_marshaler_all'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     F@_4, F@_5,
								     F@_6, F@_7,
								     F@_8, F@_9,
								     F@_10,
								     F@_11,
								     F@_12,
								     F@_13,
								     F@_14,
								     F@_15,
								     F@_16,
								     F@_17,
								     F@_18,
								     F@_19,
								     F@_20,
								     F@_21,
								     F@_22,
								     F@_23,
								     F@_24,
								     F@_25,
								     F@_26,
								     F@_27,
								     F@_28,
								     F@_29,
								     F@_30,
								     F@_31,
								     F@_32,
								     F@_33,
								     F@_34,
								     F@_35,
								     F@_36,
								     F@_37,
								     F@_38,
								     F@_39,
								     F@_40,
								     F@_41,
								     F@_42,
								     TrUserData);
      504192 ->
	  'd_field_google.protobuf.FileOptions_unsafe_unmarshaler_all'(Rest,
								       0, 0,
								       F@_1,
								       F@_2,
								       F@_3,
								       F@_4,
								       F@_5,
								       F@_6,
								       F@_7,
								       F@_8,
								       F@_9,
								       F@_10,
								       F@_11,
								       F@_12,
								       F@_13,
								       F@_14,
								       F@_15,
								       F@_16,
								       F@_17,
								       F@_18,
								       F@_19,
								       F@_20,
								       F@_21,
								       F@_22,
								       F@_23,
								       F@_24,
								       F@_25,
								       F@_26,
								       F@_27,
								       F@_28,
								       F@_29,
								       F@_30,
								       F@_31,
								       F@_32,
								       F@_33,
								       F@_34,
								       F@_35,
								       F@_36,
								       F@_37,
								       F@_38,
								       F@_39,
								       F@_40,
								       F@_41,
								       F@_42,
								       TrUserData);
      504200 ->
	  'd_field_google.protobuf.FileOptions_goproto_extensions_map_all'(Rest,
									   0, 0,
									   F@_1,
									   F@_2,
									   F@_3,
									   F@_4,
									   F@_5,
									   F@_6,
									   F@_7,
									   F@_8,
									   F@_9,
									   F@_10,
									   F@_11,
									   F@_12,
									   F@_13,
									   F@_14,
									   F@_15,
									   F@_16,
									   F@_17,
									   F@_18,
									   F@_19,
									   F@_20,
									   F@_21,
									   F@_22,
									   F@_23,
									   F@_24,
									   F@_25,
									   F@_26,
									   F@_27,
									   F@_28,
									   F@_29,
									   F@_30,
									   F@_31,
									   F@_32,
									   F@_33,
									   F@_34,
									   F@_35,
									   F@_36,
									   F@_37,
									   F@_38,
									   F@_39,
									   F@_40,
									   F@_41,
									   F@_42,
									   TrUserData);
      504208 ->
	  'd_field_google.protobuf.FileOptions_goproto_unrecognized_all'(Rest,
									 0, 0,
									 F@_1,
									 F@_2,
									 F@_3,
									 F@_4,
									 F@_5,
									 F@_6,
									 F@_7,
									 F@_8,
									 F@_9,
									 F@_10,
									 F@_11,
									 F@_12,
									 F@_13,
									 F@_14,
									 F@_15,
									 F@_16,
									 F@_17,
									 F@_18,
									 F@_19,
									 F@_20,
									 F@_21,
									 F@_22,
									 F@_23,
									 F@_24,
									 F@_25,
									 F@_26,
									 F@_27,
									 F@_28,
									 F@_29,
									 F@_30,
									 F@_31,
									 F@_32,
									 F@_33,
									 F@_34,
									 F@_35,
									 F@_36,
									 F@_37,
									 F@_38,
									 F@_39,
									 F@_40,
									 F@_41,
									 F@_42,
									 TrUserData);
      504216 ->
	  'd_field_google.protobuf.FileOptions_gogoproto_import'(Rest,
								 0, 0, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 F@_8, F@_9,
								 F@_10, F@_11,
								 F@_12, F@_13,
								 F@_14, F@_15,
								 F@_16, F@_17,
								 F@_18, F@_19,
								 F@_20, F@_21,
								 F@_22, F@_23,
								 F@_24, F@_25,
								 F@_26, F@_27,
								 F@_28, F@_29,
								 F@_30, F@_31,
								 F@_32, F@_33,
								 F@_34, F@_35,
								 F@_36, F@_37,
								 F@_38, F@_39,
								 F@_40, F@_41,
								 F@_42,
								 TrUserData);
      504224 ->
	  'd_field_google.protobuf.FileOptions_protosizer_all'(Rest,
							       0, 0, F@_1, F@_2,
							       F@_3, F@_4, F@_5,
							       F@_6, F@_7, F@_8,
							       F@_9, F@_10,
							       F@_11, F@_12,
							       F@_13, F@_14,
							       F@_15, F@_16,
							       F@_17, F@_18,
							       F@_19, F@_20,
							       F@_21, F@_22,
							       F@_23, F@_24,
							       F@_25, F@_26,
							       F@_27, F@_28,
							       F@_29, F@_30,
							       F@_31, F@_32,
							       F@_33, F@_34,
							       F@_35, F@_36,
							       F@_37, F@_38,
							       F@_39, F@_40,
							       F@_41, F@_42,
							       TrUserData);
      504232 ->
	  'd_field_google.protobuf.FileOptions_compare_all'(Rest,
							    0, 0, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, F@_19, F@_20,
							    F@_21, F@_22, F@_23,
							    F@_24, F@_25, F@_26,
							    F@_27, F@_28, F@_29,
							    F@_30, F@_31, F@_32,
							    F@_33, F@_34, F@_35,
							    F@_36, F@_37, F@_38,
							    F@_39, F@_40, F@_41,
							    F@_42, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.FileOptions'(Rest, 0, 0,
							  F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, F@_11, F@_12,
							  F@_13, F@_14, F@_15,
							  F@_16, F@_17, F@_18,
							  F@_19, F@_20, F@_21,
							  F@_22, F@_23, F@_24,
							  F@_25, F@_26, F@_27,
							  F@_28, F@_29, F@_30,
							  F@_31, F@_32, F@_33,
							  F@_34, F@_35, F@_36,
							  F@_37, F@_38, F@_39,
							  F@_40, F@_41, F@_42,
							  TrUserData);
	    1 ->
		'skip_64_google.protobuf.FileOptions'(Rest, 0, 0, F@_1,
						      F@_2, F@_3, F@_4, F@_5,
						      F@_6, F@_7, F@_8, F@_9,
						      F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      F@_19, F@_20, F@_21,
						      F@_22, F@_23, F@_24,
						      F@_25, F@_26, F@_27,
						      F@_28, F@_29, F@_30,
						      F@_31, F@_32, F@_33,
						      F@_34, F@_35, F@_36,
						      F@_37, F@_38, F@_39,
						      F@_40, F@_41, F@_42,
						      TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.FileOptions'(Rest,
								    0, 0, F@_1,
								    F@_2, F@_3,
								    F@_4, F@_5,
								    F@_6, F@_7,
								    F@_8, F@_9,
								    F@_10,
								    F@_11,
								    F@_12,
								    F@_13,
								    F@_14,
								    F@_15,
								    F@_16,
								    F@_17,
								    F@_18,
								    F@_19,
								    F@_20,
								    F@_21,
								    F@_22,
								    F@_23,
								    F@_24,
								    F@_25,
								    F@_26,
								    F@_27,
								    F@_28,
								    F@_29,
								    F@_30,
								    F@_31,
								    F@_32,
								    F@_33,
								    F@_34,
								    F@_35,
								    F@_36,
								    F@_37,
								    F@_38,
								    F@_39,
								    F@_40,
								    F@_41,
								    F@_42,
								    TrUserData);
	    3 ->
		'skip_group_google.protobuf.FileOptions'(Rest,
							 Key bsr 3, 0, F@_1,
							 F@_2, F@_3, F@_4, F@_5,
							 F@_6, F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 F@_13, F@_14, F@_15,
							 F@_16, F@_17, F@_18,
							 F@_19, F@_20, F@_21,
							 F@_22, F@_23, F@_24,
							 F@_25, F@_26, F@_27,
							 F@_28, F@_29, F@_30,
							 F@_31, F@_32, F@_33,
							 F@_34, F@_35, F@_36,
							 F@_37, F@_38, F@_39,
							 F@_40, F@_41, F@_42,
							 TrUserData);
	    5 ->
		'skip_32_google.protobuf.FileOptions'(Rest, 0, 0, F@_1,
						      F@_2, F@_3, F@_4, F@_5,
						      F@_6, F@_7, F@_8, F@_9,
						      F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      F@_19, F@_20, F@_21,
						      F@_22, F@_23, F@_24,
						      F@_25, F@_26, F@_27,
						      F@_28, F@_29, F@_30,
						      F@_31, F@_32, F@_33,
						      F@_34, F@_35, F@_36,
						      F@_37, F@_38, F@_39,
						      F@_40, F@_41, F@_42,
						      TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.FileOptions'(<<>>, 0,
						0, F@_1, F@_2, F@_3, F@_4, F@_5,
						F@_6, F@_7, F@_8, F@_9, F@_10,
						F@_11, F@_12, F@_13, F@_14,
						F@_15, R1, F@_17, F@_18, F@_19,
						F@_20, F@_21, F@_22, F@_23,
						F@_24, F@_25, F@_26, F@_27,
						F@_28, F@_29, F@_30, F@_31,
						F@_32, F@_33, F@_34, F@_35,
						F@_36, F@_37, F@_38, F@_39,
						F@_40, F@_41, F@_42,
						TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{java_package => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{java_outer_classname => F@_2}
	 end,
    S4 = if F@_3 == '$undef' -> S3;
	    true -> S3#{java_multiple_files => F@_3}
	 end,
    S5 = if F@_4 == '$undef' -> S4;
	    true -> S4#{java_generate_equals_and_hash => F@_4}
	 end,
    S6 = if F@_5 == '$undef' -> S5;
	    true -> S5#{java_string_check_utf8 => F@_5}
	 end,
    S7 = if F@_6 == '$undef' -> S6;
	    true -> S6#{optimize_for => F@_6}
	 end,
    S8 = if F@_7 == '$undef' -> S7;
	    true -> S7#{go_package => F@_7}
	 end,
    S9 = if F@_8 == '$undef' -> S8;
	    true -> S8#{cc_generic_services => F@_8}
	 end,
    S10 = if F@_9 == '$undef' -> S9;
	     true -> S9#{java_generic_services => F@_9}
	  end,
    S11 = if F@_10 == '$undef' -> S10;
	     true -> S10#{py_generic_services => F@_10}
	  end,
    S12 = if F@_11 == '$undef' -> S11;
	     true -> S11#{deprecated => F@_11}
	  end,
    S13 = if F@_12 == '$undef' -> S12;
	     true -> S12#{cc_enable_arenas => F@_12}
	  end,
    S14 = if F@_13 == '$undef' -> S13;
	     true -> S13#{objc_class_prefix => F@_13}
	  end,
    S15 = if F@_14 == '$undef' -> S14;
	     true -> S14#{csharp_namespace => F@_14}
	  end,
    S16 = if F@_15 == '$undef' -> S15;
	     true -> S15#{javanano_use_deprecated_package => F@_15}
	  end,
    S17 = if R1 == '$undef' -> S16;
	     true ->
		 S16#{uninterpreted_option =>
			  lists_reverse(R1, TrUserData)}
	  end,
    S18 = if F@_17 == '$undef' -> S17;
	     true -> S17#{goproto_getters_all => F@_17}
	  end,
    S19 = if F@_18 == '$undef' -> S18;
	     true -> S18#{goproto_enum_prefix_all => F@_18}
	  end,
    S20 = if F@_19 == '$undef' -> S19;
	     true -> S19#{goproto_stringer_all => F@_19}
	  end,
    S21 = if F@_20 == '$undef' -> S20;
	     true -> S20#{verbose_equal_all => F@_20}
	  end,
    S22 = if F@_21 == '$undef' -> S21;
	     true -> S21#{face_all => F@_21}
	  end,
    S23 = if F@_22 == '$undef' -> S22;
	     true -> S22#{gostring_all => F@_22}
	  end,
    S24 = if F@_23 == '$undef' -> S23;
	     true -> S23#{populate_all => F@_23}
	  end,
    S25 = if F@_24 == '$undef' -> S24;
	     true -> S24#{stringer_all => F@_24}
	  end,
    S26 = if F@_25 == '$undef' -> S25;
	     true -> S25#{onlyone_all => F@_25}
	  end,
    S27 = if F@_26 == '$undef' -> S26;
	     true -> S26#{equal_all => F@_26}
	  end,
    S28 = if F@_27 == '$undef' -> S27;
	     true -> S27#{description_all => F@_27}
	  end,
    S29 = if F@_28 == '$undef' -> S28;
	     true -> S28#{testgen_all => F@_28}
	  end,
    S30 = if F@_29 == '$undef' -> S29;
	     true -> S29#{benchgen_all => F@_29}
	  end,
    S31 = if F@_30 == '$undef' -> S30;
	     true -> S30#{marshaler_all => F@_30}
	  end,
    S32 = if F@_31 == '$undef' -> S31;
	     true -> S31#{unmarshaler_all => F@_31}
	  end,
    S33 = if F@_32 == '$undef' -> S32;
	     true -> S32#{stable_marshaler_all => F@_32}
	  end,
    S34 = if F@_33 == '$undef' -> S33;
	     true -> S33#{sizer_all => F@_33}
	  end,
    S35 = if F@_34 == '$undef' -> S34;
	     true -> S34#{goproto_enum_stringer_all => F@_34}
	  end,
    S36 = if F@_35 == '$undef' -> S35;
	     true -> S35#{enum_stringer_all => F@_35}
	  end,
    S37 = if F@_36 == '$undef' -> S36;
	     true -> S36#{unsafe_marshaler_all => F@_36}
	  end,
    S38 = if F@_37 == '$undef' -> S37;
	     true -> S37#{unsafe_unmarshaler_all => F@_37}
	  end,
    S39 = if F@_38 == '$undef' -> S38;
	     true -> S38#{goproto_extensions_map_all => F@_38}
	  end,
    S40 = if F@_39 == '$undef' -> S39;
	     true -> S39#{goproto_unrecognized_all => F@_39}
	  end,
    S41 = if F@_40 == '$undef' -> S40;
	     true -> S40#{gogoproto_import => F@_40}
	  end,
    S42 = if F@_41 == '$undef' -> S41;
	     true -> S41#{protosizer_all => F@_41}
	  end,
    if F@_42 == '$undef' -> S42;
       true -> S42#{compare_all => F@_42}
    end.

'd_field_google.protobuf.FileOptions_java_package'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, F@_22, F@_23, F@_24,
						   F@_25, F@_26, F@_27, F@_28,
						   F@_29, F@_30, F@_31, F@_32,
						   F@_33, F@_34, F@_35, F@_36,
						   F@_37, F@_38, F@_39, F@_40,
						   F@_41, F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_java_package'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7, F@_8,
						       F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData);
'd_field_google.protobuf.FileOptions_java_package'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, _, F@_2, F@_3, F@_4,
						   F@_5, F@_6, F@_7, F@_8, F@_9,
						   F@_10, F@_11, F@_12, F@_13,
						   F@_14, F@_15, F@_16, F@_17,
						   F@_18, F@_19, F@_20, F@_21,
						   F@_22, F@_23, F@_24, F@_25,
						   F@_26, F@_27, F@_28, F@_29,
						   F@_30, F@_31, F@_32, F@_33,
						   F@_34, F@_35, F@_36, F@_37,
						   F@_38, F@_39, F@_40, F@_41,
						   F@_42, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, NewFValue, F@_2,
						     F@_3, F@_4, F@_5, F@_6,
						     F@_7, F@_8, F@_9, F@_10,
						     F@_11, F@_12, F@_13, F@_14,
						     F@_15, F@_16, F@_17, F@_18,
						     F@_19, F@_20, F@_21, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_java_outer_classname'(<<1:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, F@_32,
							   F@_33, F@_34, F@_35,
							   F@_36, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_java_outer_classname'(Rest,
							       N + 7,
							       X bsl N + Acc,
							       F@_1, F@_2, F@_3,
							       F@_4, F@_5, F@_6,
							       F@_7, F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12, F@_13,
							       F@_14, F@_15,
							       F@_16, F@_17,
							       F@_18, F@_19,
							       F@_20, F@_21,
							       F@_22, F@_23,
							       F@_24, F@_25,
							       F@_26, F@_27,
							       F@_28, F@_29,
							       F@_30, F@_31,
							       F@_32, F@_33,
							       F@_34, F@_35,
							       F@_36, F@_37,
							       F@_38, F@_39,
							       F@_40, F@_41,
							       F@_42,
							       TrUserData);
'd_field_google.protobuf.FileOptions_java_outer_classname'(<<0:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, _,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, F@_32,
							   F@_33, F@_34, F@_35,
							   F@_36, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, NewFValue,
						     F@_3, F@_4, F@_5, F@_6,
						     F@_7, F@_8, F@_9, F@_10,
						     F@_11, F@_12, F@_13, F@_14,
						     F@_15, F@_16, F@_17, F@_18,
						     F@_19, F@_20, F@_21, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_java_multiple_files'(<<1:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, F@_13, F@_14,
							  F@_15, F@_16, F@_17,
							  F@_18, F@_19, F@_20,
							  F@_21, F@_22, F@_23,
							  F@_24, F@_25, F@_26,
							  F@_27, F@_28, F@_29,
							  F@_30, F@_31, F@_32,
							  F@_33, F@_34, F@_35,
							  F@_36, F@_37, F@_38,
							  F@_39, F@_40, F@_41,
							  F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_java_multiple_files'(Rest,
							      N + 7,
							      X bsl N + Acc,
							      F@_1, F@_2, F@_3,
							      F@_4, F@_5, F@_6,
							      F@_7, F@_8, F@_9,
							      F@_10, F@_11,
							      F@_12, F@_13,
							      F@_14, F@_15,
							      F@_16, F@_17,
							      F@_18, F@_19,
							      F@_20, F@_21,
							      F@_22, F@_23,
							      F@_24, F@_25,
							      F@_26, F@_27,
							      F@_28, F@_29,
							      F@_30, F@_31,
							      F@_32, F@_33,
							      F@_34, F@_35,
							      F@_36, F@_37,
							      F@_38, F@_39,
							      F@_40, F@_41,
							      F@_42,
							      TrUserData);
'd_field_google.protobuf.FileOptions_java_multiple_files'(<<0:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2, _,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, F@_11, F@_12,
							  F@_13, F@_14, F@_15,
							  F@_16, F@_17, F@_18,
							  F@_19, F@_20, F@_21,
							  F@_22, F@_23, F@_24,
							  F@_25, F@_26, F@_27,
							  F@_28, F@_29, F@_30,
							  F@_31, F@_32, F@_33,
							  F@_34, F@_35, F@_36,
							  F@_37, F@_38, F@_39,
							  F@_40, F@_41, F@_42,
							  TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2,
						     NewFValue, F@_4, F@_5,
						     F@_6, F@_7, F@_8, F@_9,
						     F@_10, F@_11, F@_12, F@_13,
						     F@_14, F@_15, F@_16, F@_17,
						     F@_18, F@_19, F@_20, F@_21,
						     F@_22, F@_23, F@_24, F@_25,
						     F@_26, F@_27, F@_28, F@_29,
						     F@_30, F@_31, F@_32, F@_33,
						     F@_34, F@_35, F@_36, F@_37,
						     F@_38, F@_39, F@_40, F@_41,
						     F@_42, TrUserData).

'd_field_google.protobuf.FileOptions_java_generate_equals_and_hash'(<<1:1,
								      X:7,
								      Rest/binary>>,
								    N, Acc,
								    F@_1, F@_2,
								    F@_3, F@_4,
								    F@_5, F@_6,
								    F@_7, F@_8,
								    F@_9, F@_10,
								    F@_11,
								    F@_12,
								    F@_13,
								    F@_14,
								    F@_15,
								    F@_16,
								    F@_17,
								    F@_18,
								    F@_19,
								    F@_20,
								    F@_21,
								    F@_22,
								    F@_23,
								    F@_24,
								    F@_25,
								    F@_26,
								    F@_27,
								    F@_28,
								    F@_29,
								    F@_30,
								    F@_31,
								    F@_32,
								    F@_33,
								    F@_34,
								    F@_35,
								    F@_36,
								    F@_37,
								    F@_38,
								    F@_39,
								    F@_40,
								    F@_41,
								    F@_42,
								    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_java_generate_equals_and_hash'(Rest,
									N + 7,
									X bsl N
									  + Acc,
									F@_1,
									F@_2,
									F@_3,
									F@_4,
									F@_5,
									F@_6,
									F@_7,
									F@_8,
									F@_9,
									F@_10,
									F@_11,
									F@_12,
									F@_13,
									F@_14,
									F@_15,
									F@_16,
									F@_17,
									F@_18,
									F@_19,
									F@_20,
									F@_21,
									F@_22,
									F@_23,
									F@_24,
									F@_25,
									F@_26,
									F@_27,
									F@_28,
									F@_29,
									F@_30,
									F@_31,
									F@_32,
									F@_33,
									F@_34,
									F@_35,
									F@_36,
									F@_37,
									F@_38,
									F@_39,
									F@_40,
									F@_41,
									F@_42,
									TrUserData);
'd_field_google.protobuf.FileOptions_java_generate_equals_and_hash'(<<0:1,
								      X:7,
								      Rest/binary>>,
								    N, Acc,
								    F@_1, F@_2,
								    F@_3, _,
								    F@_5, F@_6,
								    F@_7, F@_8,
								    F@_9, F@_10,
								    F@_11,
								    F@_12,
								    F@_13,
								    F@_14,
								    F@_15,
								    F@_16,
								    F@_17,
								    F@_18,
								    F@_19,
								    F@_20,
								    F@_21,
								    F@_22,
								    F@_23,
								    F@_24,
								    F@_25,
								    F@_26,
								    F@_27,
								    F@_28,
								    F@_29,
								    F@_30,
								    F@_31,
								    F@_32,
								    F@_33,
								    F@_34,
								    F@_35,
								    F@_36,
								    F@_37,
								    F@_38,
								    F@_39,
								    F@_40,
								    F@_41,
								    F@_42,
								    TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     NewFValue, F@_5, F@_6,
						     F@_7, F@_8, F@_9, F@_10,
						     F@_11, F@_12, F@_13, F@_14,
						     F@_15, F@_16, F@_17, F@_18,
						     F@_19, F@_20, F@_21, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_java_string_check_utf8'(<<1:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     F@_28, F@_29,
							     F@_30, F@_31,
							     F@_32, F@_33,
							     F@_34, F@_35,
							     F@_36, F@_37,
							     F@_38, F@_39,
							     F@_40, F@_41,
							     F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_java_string_check_utf8'(Rest,
								 N + 7,
								 X bsl N + Acc,
								 F@_1, F@_2,
								 F@_3, F@_4,
								 F@_5, F@_6,
								 F@_7, F@_8,
								 F@_9, F@_10,
								 F@_11, F@_12,
								 F@_13, F@_14,
								 F@_15, F@_16,
								 F@_17, F@_18,
								 F@_19, F@_20,
								 F@_21, F@_22,
								 F@_23, F@_24,
								 F@_25, F@_26,
								 F@_27, F@_28,
								 F@_29, F@_30,
								 F@_31, F@_32,
								 F@_33, F@_34,
								 F@_35, F@_36,
								 F@_37, F@_38,
								 F@_39, F@_40,
								 F@_41, F@_42,
								 TrUserData);
'd_field_google.protobuf.FileOptions_java_string_check_utf8'(<<0:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     F@_3, F@_4, _,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     F@_28, F@_29,
							     F@_30, F@_31,
							     F@_32, F@_33,
							     F@_34, F@_35,
							     F@_36, F@_37,
							     F@_38, F@_39,
							     F@_40, F@_41,
							     F@_42,
							     TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, NewFValue, F@_6,
						     F@_7, F@_8, F@_9, F@_10,
						     F@_11, F@_12, F@_13, F@_14,
						     F@_15, F@_16, F@_17, F@_18,
						     F@_19, F@_20, F@_21, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_optimize_for'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, F@_22, F@_23, F@_24,
						   F@_25, F@_26, F@_27, F@_28,
						   F@_29, F@_30, F@_31, F@_32,
						   F@_33, F@_34, F@_35, F@_36,
						   F@_37, F@_38, F@_39, F@_40,
						   F@_41, F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_optimize_for'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7, F@_8,
						       F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData);
'd_field_google.protobuf.FileOptions_optimize_for'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, _, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, F@_22, F@_23, F@_24,
						   F@_25, F@_26, F@_27, F@_28,
						   F@_29, F@_30, F@_31, F@_32,
						   F@_33, F@_34, F@_35, F@_36,
						   F@_37, F@_38, F@_39, F@_40,
						   F@_41, F@_42, TrUserData) ->
    {NewFValue, RestF} =
	{id('d_enum_google.protobuf.FileOptions.OptimizeMode'(begin
								<<Res:32/signed-native>> =
								    <<(X bsl N +
									 Acc):32/unsigned-native>>,
								id(Res,
								   TrUserData)
							      end),
	    TrUserData),
	 Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, NewFValue,
						     F@_7, F@_8, F@_9, F@_10,
						     F@_11, F@_12, F@_13, F@_14,
						     F@_15, F@_16, F@_17, F@_18,
						     F@_19, F@_20, F@_21, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_go_package'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_go_package'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     F@_2, F@_3, F@_4, F@_5,
						     F@_6, F@_7, F@_8, F@_9,
						     F@_10, F@_11, F@_12, F@_13,
						     F@_14, F@_15, F@_16, F@_17,
						     F@_18, F@_19, F@_20, F@_21,
						     F@_22, F@_23, F@_24, F@_25,
						     F@_26, F@_27, F@_28, F@_29,
						     F@_30, F@_31, F@_32, F@_33,
						     F@_34, F@_35, F@_36, F@_37,
						     F@_38, F@_39, F@_40, F@_41,
						     F@_42, TrUserData);
'd_field_google.protobuf.FileOptions_go_package'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, _, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6,
						     NewFValue, F@_8, F@_9,
						     F@_10, F@_11, F@_12, F@_13,
						     F@_14, F@_15, F@_16, F@_17,
						     F@_18, F@_19, F@_20, F@_21,
						     F@_22, F@_23, F@_24, F@_25,
						     F@_26, F@_27, F@_28, F@_29,
						     F@_30, F@_31, F@_32, F@_33,
						     F@_34, F@_35, F@_36, F@_37,
						     F@_38, F@_39, F@_40, F@_41,
						     F@_42, TrUserData).

'd_field_google.protobuf.FileOptions_cc_generic_services'(<<1:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, F@_13, F@_14,
							  F@_15, F@_16, F@_17,
							  F@_18, F@_19, F@_20,
							  F@_21, F@_22, F@_23,
							  F@_24, F@_25, F@_26,
							  F@_27, F@_28, F@_29,
							  F@_30, F@_31, F@_32,
							  F@_33, F@_34, F@_35,
							  F@_36, F@_37, F@_38,
							  F@_39, F@_40, F@_41,
							  F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_cc_generic_services'(Rest,
							      N + 7,
							      X bsl N + Acc,
							      F@_1, F@_2, F@_3,
							      F@_4, F@_5, F@_6,
							      F@_7, F@_8, F@_9,
							      F@_10, F@_11,
							      F@_12, F@_13,
							      F@_14, F@_15,
							      F@_16, F@_17,
							      F@_18, F@_19,
							      F@_20, F@_21,
							      F@_22, F@_23,
							      F@_24, F@_25,
							      F@_26, F@_27,
							      F@_28, F@_29,
							      F@_30, F@_31,
							      F@_32, F@_33,
							      F@_34, F@_35,
							      F@_36, F@_37,
							      F@_38, F@_39,
							      F@_40, F@_41,
							      F@_42,
							      TrUserData);
'd_field_google.protobuf.FileOptions_cc_generic_services'(<<0:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, _, F@_9,
							  F@_10, F@_11, F@_12,
							  F@_13, F@_14, F@_15,
							  F@_16, F@_17, F@_18,
							  F@_19, F@_20, F@_21,
							  F@_22, F@_23, F@_24,
							  F@_25, F@_26, F@_27,
							  F@_28, F@_29, F@_30,
							  F@_31, F@_32, F@_33,
							  F@_34, F@_35, F@_36,
							  F@_37, F@_38, F@_39,
							  F@_40, F@_41, F@_42,
							  TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     NewFValue, F@_9, F@_10,
						     F@_11, F@_12, F@_13, F@_14,
						     F@_15, F@_16, F@_17, F@_18,
						     F@_19, F@_20, F@_21, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_java_generic_services'(<<1:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, F@_19, F@_20,
							    F@_21, F@_22, F@_23,
							    F@_24, F@_25, F@_26,
							    F@_27, F@_28, F@_29,
							    F@_30, F@_31, F@_32,
							    F@_33, F@_34, F@_35,
							    F@_36, F@_37, F@_38,
							    F@_39, F@_40, F@_41,
							    F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_java_generic_services'(Rest,
								N + 7,
								X bsl N + Acc,
								F@_1, F@_2,
								F@_3, F@_4,
								F@_5, F@_6,
								F@_7, F@_8,
								F@_9, F@_10,
								F@_11, F@_12,
								F@_13, F@_14,
								F@_15, F@_16,
								F@_17, F@_18,
								F@_19, F@_20,
								F@_21, F@_22,
								F@_23, F@_24,
								F@_25, F@_26,
								F@_27, F@_28,
								F@_29, F@_30,
								F@_31, F@_32,
								F@_33, F@_34,
								F@_35, F@_36,
								F@_37, F@_38,
								F@_39, F@_40,
								F@_41, F@_42,
								TrUserData);
'd_field_google.protobuf.FileOptions_java_generic_services'(<<0:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8, _,
							    F@_10, F@_11, F@_12,
							    F@_13, F@_14, F@_15,
							    F@_16, F@_17, F@_18,
							    F@_19, F@_20, F@_21,
							    F@_22, F@_23, F@_24,
							    F@_25, F@_26, F@_27,
							    F@_28, F@_29, F@_30,
							    F@_31, F@_32, F@_33,
							    F@_34, F@_35, F@_36,
							    F@_37, F@_38, F@_39,
							    F@_40, F@_41, F@_42,
							    TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, NewFValue, F@_10,
						     F@_11, F@_12, F@_13, F@_14,
						     F@_15, F@_16, F@_17, F@_18,
						     F@_19, F@_20, F@_21, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_py_generic_services'(<<1:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, F@_13, F@_14,
							  F@_15, F@_16, F@_17,
							  F@_18, F@_19, F@_20,
							  F@_21, F@_22, F@_23,
							  F@_24, F@_25, F@_26,
							  F@_27, F@_28, F@_29,
							  F@_30, F@_31, F@_32,
							  F@_33, F@_34, F@_35,
							  F@_36, F@_37, F@_38,
							  F@_39, F@_40, F@_41,
							  F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_py_generic_services'(Rest,
							      N + 7,
							      X bsl N + Acc,
							      F@_1, F@_2, F@_3,
							      F@_4, F@_5, F@_6,
							      F@_7, F@_8, F@_9,
							      F@_10, F@_11,
							      F@_12, F@_13,
							      F@_14, F@_15,
							      F@_16, F@_17,
							      F@_18, F@_19,
							      F@_20, F@_21,
							      F@_22, F@_23,
							      F@_24, F@_25,
							      F@_26, F@_27,
							      F@_28, F@_29,
							      F@_30, F@_31,
							      F@_32, F@_33,
							      F@_34, F@_35,
							      F@_36, F@_37,
							      F@_38, F@_39,
							      F@_40, F@_41,
							      F@_42,
							      TrUserData);
'd_field_google.protobuf.FileOptions_py_generic_services'(<<0:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, _, F@_11, F@_12,
							  F@_13, F@_14, F@_15,
							  F@_16, F@_17, F@_18,
							  F@_19, F@_20, F@_21,
							  F@_22, F@_23, F@_24,
							  F@_25, F@_26, F@_27,
							  F@_28, F@_29, F@_30,
							  F@_31, F@_32, F@_33,
							  F@_34, F@_35, F@_36,
							  F@_37, F@_38, F@_39,
							  F@_40, F@_41, F@_42,
							  TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, NewFValue,
						     F@_11, F@_12, F@_13, F@_14,
						     F@_15, F@_16, F@_17, F@_18,
						     F@_19, F@_20, F@_21, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_deprecated'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, F@_28, F@_29,
						 F@_30, F@_31, F@_32, F@_33,
						 F@_34, F@_35, F@_36, F@_37,
						 F@_38, F@_39, F@_40, F@_41,
						 F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_deprecated'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     F@_2, F@_3, F@_4, F@_5,
						     F@_6, F@_7, F@_8, F@_9,
						     F@_10, F@_11, F@_12, F@_13,
						     F@_14, F@_15, F@_16, F@_17,
						     F@_18, F@_19, F@_20, F@_21,
						     F@_22, F@_23, F@_24, F@_25,
						     F@_26, F@_27, F@_28, F@_29,
						     F@_30, F@_31, F@_32, F@_33,
						     F@_34, F@_35, F@_36, F@_37,
						     F@_38, F@_39, F@_40, F@_41,
						     F@_42, TrUserData);
'd_field_google.protobuf.FileOptions_deprecated'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, _, F@_12, F@_13, F@_14,
						 F@_15, F@_16, F@_17, F@_18,
						 F@_19, F@_20, F@_21, F@_22,
						 F@_23, F@_24, F@_25, F@_26,
						 F@_27, F@_28, F@_29, F@_30,
						 F@_31, F@_32, F@_33, F@_34,
						 F@_35, F@_36, F@_37, F@_38,
						 F@_39, F@_40, F@_41, F@_42,
						 TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10,
						     NewFValue, F@_12, F@_13,
						     F@_14, F@_15, F@_16, F@_17,
						     F@_18, F@_19, F@_20, F@_21,
						     F@_22, F@_23, F@_24, F@_25,
						     F@_26, F@_27, F@_28, F@_29,
						     F@_30, F@_31, F@_32, F@_33,
						     F@_34, F@_35, F@_36, F@_37,
						     F@_38, F@_39, F@_40, F@_41,
						     F@_42, TrUserData).

'd_field_google.protobuf.FileOptions_cc_enable_arenas'(<<1:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_cc_enable_arenas'(Rest,
							   N + 7, X bsl N + Acc,
							   F@_1, F@_2, F@_3,
							   F@_4, F@_5, F@_6,
							   F@_7, F@_8, F@_9,
							   F@_10, F@_11, F@_12,
							   F@_13, F@_14, F@_15,
							   F@_16, F@_17, F@_18,
							   F@_19, F@_20, F@_21,
							   F@_22, F@_23, F@_24,
							   F@_25, F@_26, F@_27,
							   F@_28, F@_29, F@_30,
							   F@_31, F@_32, F@_33,
							   F@_34, F@_35, F@_36,
							   F@_37, F@_38, F@_39,
							   F@_40, F@_41, F@_42,
							   TrUserData);
'd_field_google.protobuf.FileOptions_cc_enable_arenas'(<<0:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       _, F@_13, F@_14, F@_15,
						       F@_16, F@_17, F@_18,
						       F@_19, F@_20, F@_21,
						       F@_22, F@_23, F@_24,
						       F@_25, F@_26, F@_27,
						       F@_28, F@_29, F@_30,
						       F@_31, F@_32, F@_33,
						       F@_34, F@_35, F@_36,
						       F@_37, F@_38, F@_39,
						       F@_40, F@_41, F@_42,
						       TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     NewFValue, F@_13, F@_14,
						     F@_15, F@_16, F@_17, F@_18,
						     F@_19, F@_20, F@_21, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_objc_class_prefix'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27, F@_28,
							F@_29, F@_30, F@_31,
							F@_32, F@_33, F@_34,
							F@_35, F@_36, F@_37,
							F@_38, F@_39, F@_40,
							F@_41, F@_42,
							TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_objc_class_prefix'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3, F@_4,
							    F@_5, F@_6, F@_7,
							    F@_8, F@_9, F@_10,
							    F@_11, F@_12, F@_13,
							    F@_14, F@_15, F@_16,
							    F@_17, F@_18, F@_19,
							    F@_20, F@_21, F@_22,
							    F@_23, F@_24, F@_25,
							    F@_26, F@_27, F@_28,
							    F@_29, F@_30, F@_31,
							    F@_32, F@_33, F@_34,
							    F@_35, F@_36, F@_37,
							    F@_38, F@_39, F@_40,
							    F@_41, F@_42,
							    TrUserData);
'd_field_google.protobuf.FileOptions_objc_class_prefix'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, _, F@_14,
							F@_15, F@_16, F@_17,
							F@_18, F@_19, F@_20,
							F@_21, F@_22, F@_23,
							F@_24, F@_25, F@_26,
							F@_27, F@_28, F@_29,
							F@_30, F@_31, F@_32,
							F@_33, F@_34, F@_35,
							F@_36, F@_37, F@_38,
							F@_39, F@_40, F@_41,
							F@_42, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, NewFValue, F@_14,
						     F@_15, F@_16, F@_17, F@_18,
						     F@_19, F@_20, F@_21, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_csharp_namespace'(<<1:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_csharp_namespace'(Rest,
							   N + 7, X bsl N + Acc,
							   F@_1, F@_2, F@_3,
							   F@_4, F@_5, F@_6,
							   F@_7, F@_8, F@_9,
							   F@_10, F@_11, F@_12,
							   F@_13, F@_14, F@_15,
							   F@_16, F@_17, F@_18,
							   F@_19, F@_20, F@_21,
							   F@_22, F@_23, F@_24,
							   F@_25, F@_26, F@_27,
							   F@_28, F@_29, F@_30,
							   F@_31, F@_32, F@_33,
							   F@_34, F@_35, F@_36,
							   F@_37, F@_38, F@_39,
							   F@_40, F@_41, F@_42,
							   TrUserData);
'd_field_google.protobuf.FileOptions_csharp_namespace'(<<0:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, _, F@_15,
						       F@_16, F@_17, F@_18,
						       F@_19, F@_20, F@_21,
						       F@_22, F@_23, F@_24,
						       F@_25, F@_26, F@_27,
						       F@_28, F@_29, F@_30,
						       F@_31, F@_32, F@_33,
						       F@_34, F@_35, F@_36,
						       F@_37, F@_38, F@_39,
						       F@_40, F@_41, F@_42,
						       TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, NewFValue,
						     F@_15, F@_16, F@_17, F@_18,
						     F@_19, F@_20, F@_21, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_javanano_use_deprecated_package'(<<1:1,
									X:7,
									Rest/binary>>,
								      N, Acc,
								      F@_1,
								      F@_2,
								      F@_3,
								      F@_4,
								      F@_5,
								      F@_6,
								      F@_7,
								      F@_8,
								      F@_9,
								      F@_10,
								      F@_11,
								      F@_12,
								      F@_13,
								      F@_14,
								      F@_15,
								      F@_16,
								      F@_17,
								      F@_18,
								      F@_19,
								      F@_20,
								      F@_21,
								      F@_22,
								      F@_23,
								      F@_24,
								      F@_25,
								      F@_26,
								      F@_27,
								      F@_28,
								      F@_29,
								      F@_30,
								      F@_31,
								      F@_32,
								      F@_33,
								      F@_34,
								      F@_35,
								      F@_36,
								      F@_37,
								      F@_38,
								      F@_39,
								      F@_40,
								      F@_41,
								      F@_42,
								      TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_javanano_use_deprecated_package'(Rest,
									  N + 7,
									  X bsl
									    N
									    +
									    Acc,
									  F@_1,
									  F@_2,
									  F@_3,
									  F@_4,
									  F@_5,
									  F@_6,
									  F@_7,
									  F@_8,
									  F@_9,
									  F@_10,
									  F@_11,
									  F@_12,
									  F@_13,
									  F@_14,
									  F@_15,
									  F@_16,
									  F@_17,
									  F@_18,
									  F@_19,
									  F@_20,
									  F@_21,
									  F@_22,
									  F@_23,
									  F@_24,
									  F@_25,
									  F@_26,
									  F@_27,
									  F@_28,
									  F@_29,
									  F@_30,
									  F@_31,
									  F@_32,
									  F@_33,
									  F@_34,
									  F@_35,
									  F@_36,
									  F@_37,
									  F@_38,
									  F@_39,
									  F@_40,
									  F@_41,
									  F@_42,
									  TrUserData);
'd_field_google.protobuf.FileOptions_javanano_use_deprecated_package'(<<0:1,
									X:7,
									Rest/binary>>,
								      N, Acc,
								      F@_1,
								      F@_2,
								      F@_3,
								      F@_4,
								      F@_5,
								      F@_6,
								      F@_7,
								      F@_8,
								      F@_9,
								      F@_10,
								      F@_11,
								      F@_12,
								      F@_13,
								      F@_14, _,
								      F@_16,
								      F@_17,
								      F@_18,
								      F@_19,
								      F@_20,
								      F@_21,
								      F@_22,
								      F@_23,
								      F@_24,
								      F@_25,
								      F@_26,
								      F@_27,
								      F@_28,
								      F@_29,
								      F@_30,
								      F@_31,
								      F@_32,
								      F@_33,
								      F@_34,
								      F@_35,
								      F@_36,
								      F@_37,
								      F@_38,
								      F@_39,
								      F@_40,
								      F@_41,
								      F@_42,
								      TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14,
						     NewFValue, F@_16, F@_17,
						     F@_18, F@_19, F@_20, F@_21,
						     F@_22, F@_23, F@_24, F@_25,
						     F@_26, F@_27, F@_28, F@_29,
						     F@_30, F@_31, F@_32, F@_33,
						     F@_34, F@_35, F@_36, F@_37,
						     F@_38, F@_39, F@_40, F@_41,
						     F@_42, TrUserData).

'd_field_google.protobuf.FileOptions_uninterpreted_option'(<<1:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, F@_32,
							   F@_33, F@_34, F@_35,
							   F@_36, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_uninterpreted_option'(Rest,
							       N + 7,
							       X bsl N + Acc,
							       F@_1, F@_2, F@_3,
							       F@_4, F@_5, F@_6,
							       F@_7, F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12, F@_13,
							       F@_14, F@_15,
							       F@_16, F@_17,
							       F@_18, F@_19,
							       F@_20, F@_21,
							       F@_22, F@_23,
							       F@_24, F@_25,
							       F@_26, F@_27,
							       F@_28, F@_29,
							       F@_30, F@_31,
							       F@_32, F@_33,
							       F@_34, F@_35,
							       F@_36, F@_37,
							       F@_38, F@_39,
							       F@_40, F@_41,
							       F@_42,
							       TrUserData);
'd_field_google.protobuf.FileOptions_uninterpreted_option'(<<0:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, Prev, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, F@_32,
							   F@_33, F@_34, F@_35,
							   F@_36, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.UninterpretedOption'(Bs,
										TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     cons(NewFValue, Prev,
							  TrUserData),
						     F@_17, F@_18, F@_19, F@_20,
						     F@_21, F@_22, F@_23, F@_24,
						     F@_25, F@_26, F@_27, F@_28,
						     F@_29, F@_30, F@_31, F@_32,
						     F@_33, F@_34, F@_35, F@_36,
						     F@_37, F@_38, F@_39, F@_40,
						     F@_41, F@_42, TrUserData).

'd_field_google.protobuf.FileOptions_goproto_getters_all'(<<1:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, F@_13, F@_14,
							  F@_15, F@_16, F@_17,
							  F@_18, F@_19, F@_20,
							  F@_21, F@_22, F@_23,
							  F@_24, F@_25, F@_26,
							  F@_27, F@_28, F@_29,
							  F@_30, F@_31, F@_32,
							  F@_33, F@_34, F@_35,
							  F@_36, F@_37, F@_38,
							  F@_39, F@_40, F@_41,
							  F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_goproto_getters_all'(Rest,
							      N + 7,
							      X bsl N + Acc,
							      F@_1, F@_2, F@_3,
							      F@_4, F@_5, F@_6,
							      F@_7, F@_8, F@_9,
							      F@_10, F@_11,
							      F@_12, F@_13,
							      F@_14, F@_15,
							      F@_16, F@_17,
							      F@_18, F@_19,
							      F@_20, F@_21,
							      F@_22, F@_23,
							      F@_24, F@_25,
							      F@_26, F@_27,
							      F@_28, F@_29,
							      F@_30, F@_31,
							      F@_32, F@_33,
							      F@_34, F@_35,
							      F@_36, F@_37,
							      F@_38, F@_39,
							      F@_40, F@_41,
							      F@_42,
							      TrUserData);
'd_field_google.protobuf.FileOptions_goproto_getters_all'(<<0:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, F@_13, F@_14,
							  F@_15, F@_16, _,
							  F@_18, F@_19, F@_20,
							  F@_21, F@_22, F@_23,
							  F@_24, F@_25, F@_26,
							  F@_27, F@_28, F@_29,
							  F@_30, F@_31, F@_32,
							  F@_33, F@_34, F@_35,
							  F@_36, F@_37, F@_38,
							  F@_39, F@_40, F@_41,
							  F@_42, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, NewFValue, F@_18,
						     F@_19, F@_20, F@_21, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_goproto_enum_prefix_all'(<<1:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24,
							      F@_25, F@_26,
							      F@_27, F@_28,
							      F@_29, F@_30,
							      F@_31, F@_32,
							      F@_33, F@_34,
							      F@_35, F@_36,
							      F@_37, F@_38,
							      F@_39, F@_40,
							      F@_41, F@_42,
							      TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_goproto_enum_prefix_all'(Rest,
								  N + 7,
								  X bsl N + Acc,
								  F@_1, F@_2,
								  F@_3, F@_4,
								  F@_5, F@_6,
								  F@_7, F@_8,
								  F@_9, F@_10,
								  F@_11, F@_12,
								  F@_13, F@_14,
								  F@_15, F@_16,
								  F@_17, F@_18,
								  F@_19, F@_20,
								  F@_21, F@_22,
								  F@_23, F@_24,
								  F@_25, F@_26,
								  F@_27, F@_28,
								  F@_29, F@_30,
								  F@_31, F@_32,
								  F@_33, F@_34,
								  F@_35, F@_36,
								  F@_37, F@_38,
								  F@_39, F@_40,
								  F@_41, F@_42,
								  TrUserData);
'd_field_google.protobuf.FileOptions_goproto_enum_prefix_all'(<<0:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, _, F@_19,
							      F@_20, F@_21,
							      F@_22, F@_23,
							      F@_24, F@_25,
							      F@_26, F@_27,
							      F@_28, F@_29,
							      F@_30, F@_31,
							      F@_32, F@_33,
							      F@_34, F@_35,
							      F@_36, F@_37,
							      F@_38, F@_39,
							      F@_40, F@_41,
							      F@_42,
							      TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, NewFValue,
						     F@_19, F@_20, F@_21, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_goproto_stringer_all'(<<1:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, F@_32,
							   F@_33, F@_34, F@_35,
							   F@_36, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_goproto_stringer_all'(Rest,
							       N + 7,
							       X bsl N + Acc,
							       F@_1, F@_2, F@_3,
							       F@_4, F@_5, F@_6,
							       F@_7, F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12, F@_13,
							       F@_14, F@_15,
							       F@_16, F@_17,
							       F@_18, F@_19,
							       F@_20, F@_21,
							       F@_22, F@_23,
							       F@_24, F@_25,
							       F@_26, F@_27,
							       F@_28, F@_29,
							       F@_30, F@_31,
							       F@_32, F@_33,
							       F@_34, F@_35,
							       F@_36, F@_37,
							       F@_38, F@_39,
							       F@_40, F@_41,
							       F@_42,
							       TrUserData);
'd_field_google.protobuf.FileOptions_goproto_stringer_all'(<<0:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, _, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, F@_32,
							   F@_33, F@_34, F@_35,
							   F@_36, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18,
						     NewFValue, F@_20, F@_21,
						     F@_22, F@_23, F@_24, F@_25,
						     F@_26, F@_27, F@_28, F@_29,
						     F@_30, F@_31, F@_32, F@_33,
						     F@_34, F@_35, F@_36, F@_37,
						     F@_38, F@_39, F@_40, F@_41,
						     F@_42, TrUserData).

'd_field_google.protobuf.FileOptions_verbose_equal_all'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27, F@_28,
							F@_29, F@_30, F@_31,
							F@_32, F@_33, F@_34,
							F@_35, F@_36, F@_37,
							F@_38, F@_39, F@_40,
							F@_41, F@_42,
							TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_verbose_equal_all'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3, F@_4,
							    F@_5, F@_6, F@_7,
							    F@_8, F@_9, F@_10,
							    F@_11, F@_12, F@_13,
							    F@_14, F@_15, F@_16,
							    F@_17, F@_18, F@_19,
							    F@_20, F@_21, F@_22,
							    F@_23, F@_24, F@_25,
							    F@_26, F@_27, F@_28,
							    F@_29, F@_30, F@_31,
							    F@_32, F@_33, F@_34,
							    F@_35, F@_36, F@_37,
							    F@_38, F@_39, F@_40,
							    F@_41, F@_42,
							    TrUserData);
'd_field_google.protobuf.FileOptions_verbose_equal_all'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19, _,
							F@_21, F@_22, F@_23,
							F@_24, F@_25, F@_26,
							F@_27, F@_28, F@_29,
							F@_30, F@_31, F@_32,
							F@_33, F@_34, F@_35,
							F@_36, F@_37, F@_38,
							F@_39, F@_40, F@_41,
							F@_42, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     NewFValue, F@_21, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_face_all'(<<1:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, F@_11, F@_12, F@_13,
					       F@_14, F@_15, F@_16, F@_17,
					       F@_18, F@_19, F@_20, F@_21,
					       F@_22, F@_23, F@_24, F@_25,
					       F@_26, F@_27, F@_28, F@_29,
					       F@_30, F@_31, F@_32, F@_33,
					       F@_34, F@_35, F@_36, F@_37,
					       F@_38, F@_39, F@_40, F@_41,
					       F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_face_all'(Rest,
						   N + 7, X bsl N + Acc, F@_1,
						   F@_2, F@_3, F@_4, F@_5, F@_6,
						   F@_7, F@_8, F@_9, F@_10,
						   F@_11, F@_12, F@_13, F@_14,
						   F@_15, F@_16, F@_17, F@_18,
						   F@_19, F@_20, F@_21, F@_22,
						   F@_23, F@_24, F@_25, F@_26,
						   F@_27, F@_28, F@_29, F@_30,
						   F@_31, F@_32, F@_33, F@_34,
						   F@_35, F@_36, F@_37, F@_38,
						   F@_39, F@_40, F@_41, F@_42,
						   TrUserData);
'd_field_google.protobuf.FileOptions_face_all'(<<0:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, F@_11, F@_12, F@_13,
					       F@_14, F@_15, F@_16, F@_17,
					       F@_18, F@_19, F@_20, _, F@_22,
					       F@_23, F@_24, F@_25, F@_26,
					       F@_27, F@_28, F@_29, F@_30,
					       F@_31, F@_32, F@_33, F@_34,
					       F@_35, F@_36, F@_37, F@_38,
					       F@_39, F@_40, F@_41, F@_42,
					       TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, NewFValue, F@_22,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_gostring_all'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, F@_22, F@_23, F@_24,
						   F@_25, F@_26, F@_27, F@_28,
						   F@_29, F@_30, F@_31, F@_32,
						   F@_33, F@_34, F@_35, F@_36,
						   F@_37, F@_38, F@_39, F@_40,
						   F@_41, F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_gostring_all'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7, F@_8,
						       F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData);
'd_field_google.protobuf.FileOptions_gostring_all'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, _, F@_23, F@_24,
						   F@_25, F@_26, F@_27, F@_28,
						   F@_29, F@_30, F@_31, F@_32,
						   F@_33, F@_34, F@_35, F@_36,
						   F@_37, F@_38, F@_39, F@_40,
						   F@_41, F@_42, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, NewFValue,
						     F@_23, F@_24, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_populate_all'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, F@_22, F@_23, F@_24,
						   F@_25, F@_26, F@_27, F@_28,
						   F@_29, F@_30, F@_31, F@_32,
						   F@_33, F@_34, F@_35, F@_36,
						   F@_37, F@_38, F@_39, F@_40,
						   F@_41, F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_populate_all'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7, F@_8,
						       F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData);
'd_field_google.protobuf.FileOptions_populate_all'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, F@_22, _, F@_24,
						   F@_25, F@_26, F@_27, F@_28,
						   F@_29, F@_30, F@_31, F@_32,
						   F@_33, F@_34, F@_35, F@_36,
						   F@_37, F@_38, F@_39, F@_40,
						   F@_41, F@_42, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22,
						     NewFValue, F@_24, F@_25,
						     F@_26, F@_27, F@_28, F@_29,
						     F@_30, F@_31, F@_32, F@_33,
						     F@_34, F@_35, F@_36, F@_37,
						     F@_38, F@_39, F@_40, F@_41,
						     F@_42, TrUserData).

'd_field_google.protobuf.FileOptions_stringer_all'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, F@_22, F@_23, F@_24,
						   F@_25, F@_26, F@_27, F@_28,
						   F@_29, F@_30, F@_31, F@_32,
						   F@_33, F@_34, F@_35, F@_36,
						   F@_37, F@_38, F@_39, F@_40,
						   F@_41, F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_stringer_all'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7, F@_8,
						       F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData);
'd_field_google.protobuf.FileOptions_stringer_all'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, F@_22, F@_23, _,
						   F@_25, F@_26, F@_27, F@_28,
						   F@_29, F@_30, F@_31, F@_32,
						   F@_33, F@_34, F@_35, F@_36,
						   F@_37, F@_38, F@_39, F@_40,
						   F@_41, F@_42, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     NewFValue, F@_25, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_onlyone_all'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, F@_19, F@_20,
						  F@_21, F@_22, F@_23, F@_24,
						  F@_25, F@_26, F@_27, F@_28,
						  F@_29, F@_30, F@_31, F@_32,
						  F@_33, F@_34, F@_35, F@_36,
						  F@_37, F@_38, F@_39, F@_40,
						  F@_41, F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_onlyone_all'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7, F@_8,
						      F@_9, F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      F@_19, F@_20, F@_21,
						      F@_22, F@_23, F@_24,
						      F@_25, F@_26, F@_27,
						      F@_28, F@_29, F@_30,
						      F@_31, F@_32, F@_33,
						      F@_34, F@_35, F@_36,
						      F@_37, F@_38, F@_39,
						      F@_40, F@_41, F@_42,
						      TrUserData);
'd_field_google.protobuf.FileOptions_onlyone_all'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, F@_19, F@_20,
						  F@_21, F@_22, F@_23, F@_24, _,
						  F@_26, F@_27, F@_28, F@_29,
						  F@_30, F@_31, F@_32, F@_33,
						  F@_34, F@_35, F@_36, F@_37,
						  F@_38, F@_39, F@_40, F@_41,
						  F@_42, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, NewFValue, F@_26,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_equal_all'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, F@_12, F@_13,
						F@_14, F@_15, F@_16, F@_17,
						F@_18, F@_19, F@_20, F@_21,
						F@_22, F@_23, F@_24, F@_25,
						F@_26, F@_27, F@_28, F@_29,
						F@_30, F@_31, F@_32, F@_33,
						F@_34, F@_35, F@_36, F@_37,
						F@_38, F@_39, F@_40, F@_41,
						F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_equal_all'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    F@_2, F@_3, F@_4, F@_5,
						    F@_6, F@_7, F@_8, F@_9,
						    F@_10, F@_11, F@_12, F@_13,
						    F@_14, F@_15, F@_16, F@_17,
						    F@_18, F@_19, F@_20, F@_21,
						    F@_22, F@_23, F@_24, F@_25,
						    F@_26, F@_27, F@_28, F@_29,
						    F@_30, F@_31, F@_32, F@_33,
						    F@_34, F@_35, F@_36, F@_37,
						    F@_38, F@_39, F@_40, F@_41,
						    F@_42, TrUserData);
'd_field_google.protobuf.FileOptions_equal_all'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, F@_12, F@_13,
						F@_14, F@_15, F@_16, F@_17,
						F@_18, F@_19, F@_20, F@_21,
						F@_22, F@_23, F@_24, F@_25, _,
						F@_27, F@_28, F@_29, F@_30,
						F@_31, F@_32, F@_33, F@_34,
						F@_35, F@_36, F@_37, F@_38,
						F@_39, F@_40, F@_41, F@_42,
						TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, NewFValue,
						     F@_27, F@_28, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_description_all'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, F@_19, F@_20,
						      F@_21, F@_22, F@_23,
						      F@_24, F@_25, F@_26,
						      F@_27, F@_28, F@_29,
						      F@_30, F@_31, F@_32,
						      F@_33, F@_34, F@_35,
						      F@_36, F@_37, F@_38,
						      F@_39, F@_40, F@_41,
						      F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_description_all'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, F@_11, F@_12,
							  F@_13, F@_14, F@_15,
							  F@_16, F@_17, F@_18,
							  F@_19, F@_20, F@_21,
							  F@_22, F@_23, F@_24,
							  F@_25, F@_26, F@_27,
							  F@_28, F@_29, F@_30,
							  F@_31, F@_32, F@_33,
							  F@_34, F@_35, F@_36,
							  F@_37, F@_38, F@_39,
							  F@_40, F@_41, F@_42,
							  TrUserData);
'd_field_google.protobuf.FileOptions_description_all'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, F@_19, F@_20,
						      F@_21, F@_22, F@_23,
						      F@_24, F@_25, F@_26, _,
						      F@_28, F@_29, F@_30,
						      F@_31, F@_32, F@_33,
						      F@_34, F@_35, F@_36,
						      F@_37, F@_38, F@_39,
						      F@_40, F@_41, F@_42,
						      TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26,
						     NewFValue, F@_28, F@_29,
						     F@_30, F@_31, F@_32, F@_33,
						     F@_34, F@_35, F@_36, F@_37,
						     F@_38, F@_39, F@_40, F@_41,
						     F@_42, TrUserData).

'd_field_google.protobuf.FileOptions_testgen_all'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, F@_19, F@_20,
						  F@_21, F@_22, F@_23, F@_24,
						  F@_25, F@_26, F@_27, F@_28,
						  F@_29, F@_30, F@_31, F@_32,
						  F@_33, F@_34, F@_35, F@_36,
						  F@_37, F@_38, F@_39, F@_40,
						  F@_41, F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_testgen_all'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7, F@_8,
						      F@_9, F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      F@_19, F@_20, F@_21,
						      F@_22, F@_23, F@_24,
						      F@_25, F@_26, F@_27,
						      F@_28, F@_29, F@_30,
						      F@_31, F@_32, F@_33,
						      F@_34, F@_35, F@_36,
						      F@_37, F@_38, F@_39,
						      F@_40, F@_41, F@_42,
						      TrUserData);
'd_field_google.protobuf.FileOptions_testgen_all'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, F@_19, F@_20,
						  F@_21, F@_22, F@_23, F@_24,
						  F@_25, F@_26, F@_27, _, F@_29,
						  F@_30, F@_31, F@_32, F@_33,
						  F@_34, F@_35, F@_36, F@_37,
						  F@_38, F@_39, F@_40, F@_41,
						  F@_42, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     NewFValue, F@_29, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_benchgen_all'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, F@_22, F@_23, F@_24,
						   F@_25, F@_26, F@_27, F@_28,
						   F@_29, F@_30, F@_31, F@_32,
						   F@_33, F@_34, F@_35, F@_36,
						   F@_37, F@_38, F@_39, F@_40,
						   F@_41, F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_benchgen_all'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7, F@_8,
						       F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData);
'd_field_google.protobuf.FileOptions_benchgen_all'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, F@_22, F@_23, F@_24,
						   F@_25, F@_26, F@_27, F@_28,
						   _, F@_30, F@_31, F@_32,
						   F@_33, F@_34, F@_35, F@_36,
						   F@_37, F@_38, F@_39, F@_40,
						   F@_41, F@_42, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, NewFValue, F@_30,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_marshaler_all'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    F@_28, F@_29, F@_30, F@_31,
						    F@_32, F@_33, F@_34, F@_35,
						    F@_36, F@_37, F@_38, F@_39,
						    F@_40, F@_41, F@_42,
						    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_marshaler_all'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, F@_2, F@_3, F@_4,
							F@_5, F@_6, F@_7, F@_8,
							F@_9, F@_10, F@_11,
							F@_12, F@_13, F@_14,
							F@_15, F@_16, F@_17,
							F@_18, F@_19, F@_20,
							F@_21, F@_22, F@_23,
							F@_24, F@_25, F@_26,
							F@_27, F@_28, F@_29,
							F@_30, F@_31, F@_32,
							F@_33, F@_34, F@_35,
							F@_36, F@_37, F@_38,
							F@_39, F@_40, F@_41,
							F@_42, TrUserData);
'd_field_google.protobuf.FileOptions_marshaler_all'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    F@_28, F@_29, _, F@_31,
						    F@_32, F@_33, F@_34, F@_35,
						    F@_36, F@_37, F@_38, F@_39,
						    F@_40, F@_41, F@_42,
						    TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, NewFValue,
						     F@_31, F@_32, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_unmarshaler_all'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, F@_19, F@_20,
						      F@_21, F@_22, F@_23,
						      F@_24, F@_25, F@_26,
						      F@_27, F@_28, F@_29,
						      F@_30, F@_31, F@_32,
						      F@_33, F@_34, F@_35,
						      F@_36, F@_37, F@_38,
						      F@_39, F@_40, F@_41,
						      F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_unmarshaler_all'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, F@_11, F@_12,
							  F@_13, F@_14, F@_15,
							  F@_16, F@_17, F@_18,
							  F@_19, F@_20, F@_21,
							  F@_22, F@_23, F@_24,
							  F@_25, F@_26, F@_27,
							  F@_28, F@_29, F@_30,
							  F@_31, F@_32, F@_33,
							  F@_34, F@_35, F@_36,
							  F@_37, F@_38, F@_39,
							  F@_40, F@_41, F@_42,
							  TrUserData);
'd_field_google.protobuf.FileOptions_unmarshaler_all'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, F@_19, F@_20,
						      F@_21, F@_22, F@_23,
						      F@_24, F@_25, F@_26,
						      F@_27, F@_28, F@_29,
						      F@_30, _, F@_32, F@_33,
						      F@_34, F@_35, F@_36,
						      F@_37, F@_38, F@_39,
						      F@_40, F@_41, F@_42,
						      TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30,
						     NewFValue, F@_32, F@_33,
						     F@_34, F@_35, F@_36, F@_37,
						     F@_38, F@_39, F@_40, F@_41,
						     F@_42, TrUserData).

'd_field_google.protobuf.FileOptions_stable_marshaler_all'(<<1:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, F@_32,
							   F@_33, F@_34, F@_35,
							   F@_36, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_stable_marshaler_all'(Rest,
							       N + 7,
							       X bsl N + Acc,
							       F@_1, F@_2, F@_3,
							       F@_4, F@_5, F@_6,
							       F@_7, F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12, F@_13,
							       F@_14, F@_15,
							       F@_16, F@_17,
							       F@_18, F@_19,
							       F@_20, F@_21,
							       F@_22, F@_23,
							       F@_24, F@_25,
							       F@_26, F@_27,
							       F@_28, F@_29,
							       F@_30, F@_31,
							       F@_32, F@_33,
							       F@_34, F@_35,
							       F@_36, F@_37,
							       F@_38, F@_39,
							       F@_40, F@_41,
							       F@_42,
							       TrUserData);
'd_field_google.protobuf.FileOptions_stable_marshaler_all'(<<0:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, _,
							   F@_33, F@_34, F@_35,
							   F@_36, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     NewFValue, F@_33, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_sizer_all'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, F@_12, F@_13,
						F@_14, F@_15, F@_16, F@_17,
						F@_18, F@_19, F@_20, F@_21,
						F@_22, F@_23, F@_24, F@_25,
						F@_26, F@_27, F@_28, F@_29,
						F@_30, F@_31, F@_32, F@_33,
						F@_34, F@_35, F@_36, F@_37,
						F@_38, F@_39, F@_40, F@_41,
						F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_sizer_all'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    F@_2, F@_3, F@_4, F@_5,
						    F@_6, F@_7, F@_8, F@_9,
						    F@_10, F@_11, F@_12, F@_13,
						    F@_14, F@_15, F@_16, F@_17,
						    F@_18, F@_19, F@_20, F@_21,
						    F@_22, F@_23, F@_24, F@_25,
						    F@_26, F@_27, F@_28, F@_29,
						    F@_30, F@_31, F@_32, F@_33,
						    F@_34, F@_35, F@_36, F@_37,
						    F@_38, F@_39, F@_40, F@_41,
						    F@_42, TrUserData);
'd_field_google.protobuf.FileOptions_sizer_all'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, F@_12, F@_13,
						F@_14, F@_15, F@_16, F@_17,
						F@_18, F@_19, F@_20, F@_21,
						F@_22, F@_23, F@_24, F@_25,
						F@_26, F@_27, F@_28, F@_29,
						F@_30, F@_31, F@_32, _, F@_34,
						F@_35, F@_36, F@_37, F@_38,
						F@_39, F@_40, F@_41, F@_42,
						TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, NewFValue, F@_34,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_goproto_enum_stringer_all'(<<1:1,
								  X:7,
								  Rest/binary>>,
								N, Acc, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10, F@_11,
								F@_12, F@_13,
								F@_14, F@_15,
								F@_16, F@_17,
								F@_18, F@_19,
								F@_20, F@_21,
								F@_22, F@_23,
								F@_24, F@_25,
								F@_26, F@_27,
								F@_28, F@_29,
								F@_30, F@_31,
								F@_32, F@_33,
								F@_34, F@_35,
								F@_36, F@_37,
								F@_38, F@_39,
								F@_40, F@_41,
								F@_42,
								TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_goproto_enum_stringer_all'(Rest,
								    N + 7,
								    X bsl N +
								      Acc,
								    F@_1, F@_2,
								    F@_3, F@_4,
								    F@_5, F@_6,
								    F@_7, F@_8,
								    F@_9, F@_10,
								    F@_11,
								    F@_12,
								    F@_13,
								    F@_14,
								    F@_15,
								    F@_16,
								    F@_17,
								    F@_18,
								    F@_19,
								    F@_20,
								    F@_21,
								    F@_22,
								    F@_23,
								    F@_24,
								    F@_25,
								    F@_26,
								    F@_27,
								    F@_28,
								    F@_29,
								    F@_30,
								    F@_31,
								    F@_32,
								    F@_33,
								    F@_34,
								    F@_35,
								    F@_36,
								    F@_37,
								    F@_38,
								    F@_39,
								    F@_40,
								    F@_41,
								    F@_42,
								    TrUserData);
'd_field_google.protobuf.FileOptions_goproto_enum_stringer_all'(<<0:1,
								  X:7,
								  Rest/binary>>,
								N, Acc, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10, F@_11,
								F@_12, F@_13,
								F@_14, F@_15,
								F@_16, F@_17,
								F@_18, F@_19,
								F@_20, F@_21,
								F@_22, F@_23,
								F@_24, F@_25,
								F@_26, F@_27,
								F@_28, F@_29,
								F@_30, F@_31,
								F@_32, F@_33, _,
								F@_35, F@_36,
								F@_37, F@_38,
								F@_39, F@_40,
								F@_41, F@_42,
								TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, NewFValue,
						     F@_35, F@_36, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_enum_stringer_all'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27, F@_28,
							F@_29, F@_30, F@_31,
							F@_32, F@_33, F@_34,
							F@_35, F@_36, F@_37,
							F@_38, F@_39, F@_40,
							F@_41, F@_42,
							TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_enum_stringer_all'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3, F@_4,
							    F@_5, F@_6, F@_7,
							    F@_8, F@_9, F@_10,
							    F@_11, F@_12, F@_13,
							    F@_14, F@_15, F@_16,
							    F@_17, F@_18, F@_19,
							    F@_20, F@_21, F@_22,
							    F@_23, F@_24, F@_25,
							    F@_26, F@_27, F@_28,
							    F@_29, F@_30, F@_31,
							    F@_32, F@_33, F@_34,
							    F@_35, F@_36, F@_37,
							    F@_38, F@_39, F@_40,
							    F@_41, F@_42,
							    TrUserData);
'd_field_google.protobuf.FileOptions_enum_stringer_all'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27, F@_28,
							F@_29, F@_30, F@_31,
							F@_32, F@_33, F@_34, _,
							F@_36, F@_37, F@_38,
							F@_39, F@_40, F@_41,
							F@_42, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34,
						     NewFValue, F@_36, F@_37,
						     F@_38, F@_39, F@_40, F@_41,
						     F@_42, TrUserData).

'd_field_google.protobuf.FileOptions_unsafe_marshaler_all'(<<1:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, F@_32,
							   F@_33, F@_34, F@_35,
							   F@_36, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_unsafe_marshaler_all'(Rest,
							       N + 7,
							       X bsl N + Acc,
							       F@_1, F@_2, F@_3,
							       F@_4, F@_5, F@_6,
							       F@_7, F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12, F@_13,
							       F@_14, F@_15,
							       F@_16, F@_17,
							       F@_18, F@_19,
							       F@_20, F@_21,
							       F@_22, F@_23,
							       F@_24, F@_25,
							       F@_26, F@_27,
							       F@_28, F@_29,
							       F@_30, F@_31,
							       F@_32, F@_33,
							       F@_34, F@_35,
							       F@_36, F@_37,
							       F@_38, F@_39,
							       F@_40, F@_41,
							       F@_42,
							       TrUserData);
'd_field_google.protobuf.FileOptions_unsafe_marshaler_all'(<<0:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, F@_28, F@_29,
							   F@_30, F@_31, F@_32,
							   F@_33, F@_34, F@_35,
							   _, F@_37, F@_38,
							   F@_39, F@_40, F@_41,
							   F@_42, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     NewFValue, F@_37, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_unsafe_unmarshaler_all'(<<1:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     F@_28, F@_29,
							     F@_30, F@_31,
							     F@_32, F@_33,
							     F@_34, F@_35,
							     F@_36, F@_37,
							     F@_38, F@_39,
							     F@_40, F@_41,
							     F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_unsafe_unmarshaler_all'(Rest,
								 N + 7,
								 X bsl N + Acc,
								 F@_1, F@_2,
								 F@_3, F@_4,
								 F@_5, F@_6,
								 F@_7, F@_8,
								 F@_9, F@_10,
								 F@_11, F@_12,
								 F@_13, F@_14,
								 F@_15, F@_16,
								 F@_17, F@_18,
								 F@_19, F@_20,
								 F@_21, F@_22,
								 F@_23, F@_24,
								 F@_25, F@_26,
								 F@_27, F@_28,
								 F@_29, F@_30,
								 F@_31, F@_32,
								 F@_33, F@_34,
								 F@_35, F@_36,
								 F@_37, F@_38,
								 F@_39, F@_40,
								 F@_41, F@_42,
								 TrUserData);
'd_field_google.protobuf.FileOptions_unsafe_unmarshaler_all'(<<0:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     F@_28, F@_29,
							     F@_30, F@_31,
							     F@_32, F@_33,
							     F@_34, F@_35,
							     F@_36, _, F@_38,
							     F@_39, F@_40,
							     F@_41, F@_42,
							     TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, NewFValue, F@_38,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_goproto_extensions_map_all'(<<1:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 F@_8, F@_9,
								 F@_10, F@_11,
								 F@_12, F@_13,
								 F@_14, F@_15,
								 F@_16, F@_17,
								 F@_18, F@_19,
								 F@_20, F@_21,
								 F@_22, F@_23,
								 F@_24, F@_25,
								 F@_26, F@_27,
								 F@_28, F@_29,
								 F@_30, F@_31,
								 F@_32, F@_33,
								 F@_34, F@_35,
								 F@_36, F@_37,
								 F@_38, F@_39,
								 F@_40, F@_41,
								 F@_42,
								 TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_goproto_extensions_map_all'(Rest,
								     N + 7,
								     X bsl N +
								       Acc,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     F@_5, F@_6,
								     F@_7, F@_8,
								     F@_9,
								     F@_10,
								     F@_11,
								     F@_12,
								     F@_13,
								     F@_14,
								     F@_15,
								     F@_16,
								     F@_17,
								     F@_18,
								     F@_19,
								     F@_20,
								     F@_21,
								     F@_22,
								     F@_23,
								     F@_24,
								     F@_25,
								     F@_26,
								     F@_27,
								     F@_28,
								     F@_29,
								     F@_30,
								     F@_31,
								     F@_32,
								     F@_33,
								     F@_34,
								     F@_35,
								     F@_36,
								     F@_37,
								     F@_38,
								     F@_39,
								     F@_40,
								     F@_41,
								     F@_42,
								     TrUserData);
'd_field_google.protobuf.FileOptions_goproto_extensions_map_all'(<<0:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 F@_8, F@_9,
								 F@_10, F@_11,
								 F@_12, F@_13,
								 F@_14, F@_15,
								 F@_16, F@_17,
								 F@_18, F@_19,
								 F@_20, F@_21,
								 F@_22, F@_23,
								 F@_24, F@_25,
								 F@_26, F@_27,
								 F@_28, F@_29,
								 F@_30, F@_31,
								 F@_32, F@_33,
								 F@_34, F@_35,
								 F@_36, F@_37,
								 _, F@_39,
								 F@_40, F@_41,
								 F@_42,
								 TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, F@_37, NewFValue,
						     F@_39, F@_40, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_goproto_unrecognized_all'(<<1:1,
								 X:7,
								 Rest/binary>>,
							       N, Acc, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12, F@_13,
							       F@_14, F@_15,
							       F@_16, F@_17,
							       F@_18, F@_19,
							       F@_20, F@_21,
							       F@_22, F@_23,
							       F@_24, F@_25,
							       F@_26, F@_27,
							       F@_28, F@_29,
							       F@_30, F@_31,
							       F@_32, F@_33,
							       F@_34, F@_35,
							       F@_36, F@_37,
							       F@_38, F@_39,
							       F@_40, F@_41,
							       F@_42,
							       TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_goproto_unrecognized_all'(Rest,
								   N + 7,
								   X bsl N +
								     Acc,
								   F@_1, F@_2,
								   F@_3, F@_4,
								   F@_5, F@_6,
								   F@_7, F@_8,
								   F@_9, F@_10,
								   F@_11, F@_12,
								   F@_13, F@_14,
								   F@_15, F@_16,
								   F@_17, F@_18,
								   F@_19, F@_20,
								   F@_21, F@_22,
								   F@_23, F@_24,
								   F@_25, F@_26,
								   F@_27, F@_28,
								   F@_29, F@_30,
								   F@_31, F@_32,
								   F@_33, F@_34,
								   F@_35, F@_36,
								   F@_37, F@_38,
								   F@_39, F@_40,
								   F@_41, F@_42,
								   TrUserData);
'd_field_google.protobuf.FileOptions_goproto_unrecognized_all'(<<0:1,
								 X:7,
								 Rest/binary>>,
							       N, Acc, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       F@_8, F@_9,
							       F@_10, F@_11,
							       F@_12, F@_13,
							       F@_14, F@_15,
							       F@_16, F@_17,
							       F@_18, F@_19,
							       F@_20, F@_21,
							       F@_22, F@_23,
							       F@_24, F@_25,
							       F@_26, F@_27,
							       F@_28, F@_29,
							       F@_30, F@_31,
							       F@_32, F@_33,
							       F@_34, F@_35,
							       F@_36, F@_37,
							       F@_38, _, F@_40,
							       F@_41, F@_42,
							       TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, F@_37, F@_38,
						     NewFValue, F@_40, F@_41,
						     F@_42, TrUserData).

'd_field_google.protobuf.FileOptions_gogoproto_import'(<<1:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, F@_40, F@_41,
						       F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_gogoproto_import'(Rest,
							   N + 7, X bsl N + Acc,
							   F@_1, F@_2, F@_3,
							   F@_4, F@_5, F@_6,
							   F@_7, F@_8, F@_9,
							   F@_10, F@_11, F@_12,
							   F@_13, F@_14, F@_15,
							   F@_16, F@_17, F@_18,
							   F@_19, F@_20, F@_21,
							   F@_22, F@_23, F@_24,
							   F@_25, F@_26, F@_27,
							   F@_28, F@_29, F@_30,
							   F@_31, F@_32, F@_33,
							   F@_34, F@_35, F@_36,
							   F@_37, F@_38, F@_39,
							   F@_40, F@_41, F@_42,
							   TrUserData);
'd_field_google.protobuf.FileOptions_gogoproto_import'(<<0:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, F@_28, F@_29,
						       F@_30, F@_31, F@_32,
						       F@_33, F@_34, F@_35,
						       F@_36, F@_37, F@_38,
						       F@_39, _, F@_41, F@_42,
						       TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, F@_37, F@_38, F@_39,
						     NewFValue, F@_41, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_protosizer_all'(<<1:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, F@_37, F@_38, F@_39,
						     F@_40, F@_41, F@_42,
						     TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_protosizer_all'(Rest,
							 N + 7, X bsl N + Acc,
							 F@_1, F@_2, F@_3, F@_4,
							 F@_5, F@_6, F@_7, F@_8,
							 F@_9, F@_10, F@_11,
							 F@_12, F@_13, F@_14,
							 F@_15, F@_16, F@_17,
							 F@_18, F@_19, F@_20,
							 F@_21, F@_22, F@_23,
							 F@_24, F@_25, F@_26,
							 F@_27, F@_28, F@_29,
							 F@_30, F@_31, F@_32,
							 F@_33, F@_34, F@_35,
							 F@_36, F@_37, F@_38,
							 F@_39, F@_40, F@_41,
							 F@_42, TrUserData);
'd_field_google.protobuf.FileOptions_protosizer_all'(<<0:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, F@_37, F@_38, F@_39,
						     F@_40, _, F@_42,
						     TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, F@_37, F@_38, F@_39,
						     F@_40, NewFValue, F@_42,
						     TrUserData).

'd_field_google.protobuf.FileOptions_compare_all'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, F@_19, F@_20,
						  F@_21, F@_22, F@_23, F@_24,
						  F@_25, F@_26, F@_27, F@_28,
						  F@_29, F@_30, F@_31, F@_32,
						  F@_33, F@_34, F@_35, F@_36,
						  F@_37, F@_38, F@_39, F@_40,
						  F@_41, F@_42, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FileOptions_compare_all'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7, F@_8,
						      F@_9, F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      F@_19, F@_20, F@_21,
						      F@_22, F@_23, F@_24,
						      F@_25, F@_26, F@_27,
						      F@_28, F@_29, F@_30,
						      F@_31, F@_32, F@_33,
						      F@_34, F@_35, F@_36,
						      F@_37, F@_38, F@_39,
						      F@_40, F@_41, F@_42,
						      TrUserData);
'd_field_google.protobuf.FileOptions_compare_all'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, F@_19, F@_20,
						  F@_21, F@_22, F@_23, F@_24,
						  F@_25, F@_26, F@_27, F@_28,
						  F@_29, F@_30, F@_31, F@_32,
						  F@_33, F@_34, F@_35, F@_36,
						  F@_37, F@_38, F@_39, F@_40,
						  F@_41, _, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FileOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, F@_37, F@_38, F@_39,
						     F@_40, F@_41, NewFValue,
						     TrUserData).

'skip_varint_google.protobuf.FileOptions'(<<1:1, _:7,
					    Rest/binary>>,
					  Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					  F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
					  F@_12, F@_13, F@_14, F@_15, F@_16,
					  F@_17, F@_18, F@_19, F@_20, F@_21,
					  F@_22, F@_23, F@_24, F@_25, F@_26,
					  F@_27, F@_28, F@_29, F@_30, F@_31,
					  F@_32, F@_33, F@_34, F@_35, F@_36,
					  F@_37, F@_38, F@_39, F@_40, F@_41,
					  F@_42, TrUserData) ->
    'skip_varint_google.protobuf.FileOptions'(Rest, Z1, Z2,
					      F@_1, F@_2, F@_3, F@_4, F@_5,
					      F@_6, F@_7, F@_8, F@_9, F@_10,
					      F@_11, F@_12, F@_13, F@_14, F@_15,
					      F@_16, F@_17, F@_18, F@_19, F@_20,
					      F@_21, F@_22, F@_23, F@_24, F@_25,
					      F@_26, F@_27, F@_28, F@_29, F@_30,
					      F@_31, F@_32, F@_33, F@_34, F@_35,
					      F@_36, F@_37, F@_38, F@_39, F@_40,
					      F@_41, F@_42, TrUserData);
'skip_varint_google.protobuf.FileOptions'(<<0:1, _:7,
					    Rest/binary>>,
					  Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					  F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
					  F@_12, F@_13, F@_14, F@_15, F@_16,
					  F@_17, F@_18, F@_19, F@_20, F@_21,
					  F@_22, F@_23, F@_24, F@_25, F@_26,
					  F@_27, F@_28, F@_29, F@_30, F@_31,
					  F@_32, F@_33, F@_34, F@_35, F@_36,
					  F@_37, F@_38, F@_39, F@_40, F@_41,
					  F@_42, TrUserData) ->
    'dfp_read_field_def_google.protobuf.FileOptions'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, F@_37, F@_38, F@_39,
						     F@_40, F@_41, F@_42,
						     TrUserData).

'skip_length_delimited_google.protobuf.FileOptions'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    F@_28, F@_29, F@_30, F@_31,
						    F@_32, F@_33, F@_34, F@_35,
						    F@_36, F@_37, F@_38, F@_39,
						    F@_40, F@_41, F@_42,
						    TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.FileOptions'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, F@_2, F@_3, F@_4,
							F@_5, F@_6, F@_7, F@_8,
							F@_9, F@_10, F@_11,
							F@_12, F@_13, F@_14,
							F@_15, F@_16, F@_17,
							F@_18, F@_19, F@_20,
							F@_21, F@_22, F@_23,
							F@_24, F@_25, F@_26,
							F@_27, F@_28, F@_29,
							F@_30, F@_31, F@_32,
							F@_33, F@_34, F@_35,
							F@_36, F@_37, F@_38,
							F@_39, F@_40, F@_41,
							F@_42, TrUserData);
'skip_length_delimited_google.protobuf.FileOptions'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    F@_28, F@_29, F@_30, F@_31,
						    F@_32, F@_33, F@_34, F@_35,
						    F@_36, F@_37, F@_38, F@_39,
						    F@_40, F@_41, F@_42,
						    TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.FileOptions'(Rest2,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, F@_37, F@_38, F@_39,
						     F@_40, F@_41, F@_42,
						     TrUserData).

'skip_group_google.protobuf.FileOptions'(Bin, FNum, Z2,
					 F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					 F@_7, F@_8, F@_9, F@_10, F@_11, F@_12,
					 F@_13, F@_14, F@_15, F@_16, F@_17,
					 F@_18, F@_19, F@_20, F@_21, F@_22,
					 F@_23, F@_24, F@_25, F@_26, F@_27,
					 F@_28, F@_29, F@_30, F@_31, F@_32,
					 F@_33, F@_34, F@_35, F@_36, F@_37,
					 F@_38, F@_39, F@_40, F@_41, F@_42,
					 TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.FileOptions'(Rest,
						     0, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, F@_37, F@_38, F@_39,
						     F@_40, F@_41, F@_42,
						     TrUserData).

'skip_32_google.protobuf.FileOptions'(<<_:32,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				      F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
				      F@_12, F@_13, F@_14, F@_15, F@_16, F@_17,
				      F@_18, F@_19, F@_20, F@_21, F@_22, F@_23,
				      F@_24, F@_25, F@_26, F@_27, F@_28, F@_29,
				      F@_30, F@_31, F@_32, F@_33, F@_34, F@_35,
				      F@_36, F@_37, F@_38, F@_39, F@_40, F@_41,
				      F@_42, TrUserData) ->
    'dfp_read_field_def_google.protobuf.FileOptions'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, F@_37, F@_38, F@_39,
						     F@_40, F@_41, F@_42,
						     TrUserData).

'skip_64_google.protobuf.FileOptions'(<<_:64,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				      F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
				      F@_12, F@_13, F@_14, F@_15, F@_16, F@_17,
				      F@_18, F@_19, F@_20, F@_21, F@_22, F@_23,
				      F@_24, F@_25, F@_26, F@_27, F@_28, F@_29,
				      F@_30, F@_31, F@_32, F@_33, F@_34, F@_35,
				      F@_36, F@_37, F@_38, F@_39, F@_40, F@_41,
				      F@_42, TrUserData) ->
    'dfp_read_field_def_google.protobuf.FileOptions'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     F@_28, F@_29, F@_30, F@_31,
						     F@_32, F@_33, F@_34, F@_35,
						     F@_36, F@_37, F@_38, F@_39,
						     F@_40, F@_41, F@_42,
						     TrUserData).

'decode_msg_google.protobuf.MessageOptions'(Bin,
					    TrUserData) ->
    'dfp_read_field_def_google.protobuf.MessageOptions'(Bin,
							0, 0,
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id([], TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							id('$undef',
							   TrUserData),
							TrUserData).

'dfp_read_field_def_google.protobuf.MessageOptions'(<<8,
						      Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_message_set_wire_format'(Rest,
								     Z1, Z2,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     F@_5, F@_6,
								     F@_7, F@_8,
								     F@_9,
								     F@_10,
								     F@_11,
								     F@_12,
								     F@_13,
								     F@_14,
								     F@_15,
								     F@_16,
								     F@_17,
								     F@_18,
								     F@_19,
								     F@_20,
								     F@_21,
								     F@_22,
								     F@_23,
								     F@_24,
								     F@_25,
								     F@_26,
								     F@_27,
								     TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<16,
						      Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_no_standard_descriptor_accessor'(Rest,
									     Z1,
									     Z2,
									     F@_1,
									     F@_2,
									     F@_3,
									     F@_4,
									     F@_5,
									     F@_6,
									     F@_7,
									     F@_8,
									     F@_9,
									     F@_10,
									     F@_11,
									     F@_12,
									     F@_13,
									     F@_14,
									     F@_15,
									     F@_16,
									     F@_17,
									     F@_18,
									     F@_19,
									     F@_20,
									     F@_21,
									     F@_22,
									     F@_23,
									     F@_24,
									     F@_25,
									     F@_26,
									     F@_27,
									     TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<24,
						      Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_deprecated'(Rest,
							Z1, Z2, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<56,
						      Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_map_entry'(Rest,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<186,
						      62, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_uninterpreted_option'(Rest,
								  Z1, Z2, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6, F@_7,
								  F@_8, F@_9,
								  F@_10, F@_11,
								  F@_12, F@_13,
								  F@_14, F@_15,
								  F@_16, F@_17,
								  F@_18, F@_19,
								  F@_20, F@_21,
								  F@_22, F@_23,
								  F@_24, F@_25,
								  F@_26, F@_27,
								  TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<136,
						      160, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_goproto_getters'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<152,
						      160, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_goproto_stringer'(Rest,
							      Z1, Z2, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24,
							      F@_25, F@_26,
							      F@_27,
							      TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<160,
						      160, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_verbose_equal'(Rest,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<168,
						      160, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_face'(Rest, Z1,
						  Z2, F@_1, F@_2, F@_3, F@_4,
						  F@_5, F@_6, F@_7, F@_8, F@_9,
						  F@_10, F@_11, F@_12, F@_13,
						  F@_14, F@_15, F@_16, F@_17,
						  F@_18, F@_19, F@_20, F@_21,
						  F@_22, F@_23, F@_24, F@_25,
						  F@_26, F@_27, TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<176,
						      160, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_gostring'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, F@_19, F@_20,
						      F@_21, F@_22, F@_23,
						      F@_24, F@_25, F@_26,
						      F@_27, TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<184,
						      160, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_populate'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, F@_19, F@_20,
						      F@_21, F@_22, F@_23,
						      F@_24, F@_25, F@_26,
						      F@_27, TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<128,
						      220, 32, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_stringer'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, F@_19, F@_20,
						      F@_21, F@_22, F@_23,
						      F@_24, F@_25, F@_26,
						      F@_27, TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<200,
						      160, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_onlyone'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<232,
						      160, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_equal'(Rest, Z1,
						   Z2, F@_1, F@_2, F@_3, F@_4,
						   F@_5, F@_6, F@_7, F@_8, F@_9,
						   F@_10, F@_11, F@_12, F@_13,
						   F@_14, F@_15, F@_16, F@_17,
						   F@_18, F@_19, F@_20, F@_21,
						   F@_22, F@_23, F@_24, F@_25,
						   F@_26, F@_27, TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<240,
						      160, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_description'(Rest,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 F@_13, F@_14, F@_15,
							 F@_16, F@_17, F@_18,
							 F@_19, F@_20, F@_21,
							 F@_22, F@_23, F@_24,
							 F@_25, F@_26, F@_27,
							 TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<248,
						      160, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_testgen'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<128,
						      161, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_benchgen'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, F@_19, F@_20,
						      F@_21, F@_22, F@_23,
						      F@_24, F@_25, F@_26,
						      F@_27, TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<136,
						      161, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_marshaler'(Rest,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<144,
						      161, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_unmarshaler'(Rest,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 F@_13, F@_14, F@_15,
							 F@_16, F@_17, F@_18,
							 F@_19, F@_20, F@_21,
							 F@_22, F@_23, F@_24,
							 F@_25, F@_26, F@_27,
							 TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<152,
						      161, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_stable_marshaler'(Rest,
							      Z1, Z2, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24,
							      F@_25, F@_26,
							      F@_27,
							      TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<160,
						      161, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_sizer'(Rest, Z1,
						   Z2, F@_1, F@_2, F@_3, F@_4,
						   F@_5, F@_6, F@_7, F@_8, F@_9,
						   F@_10, F@_11, F@_12, F@_13,
						   F@_14, F@_15, F@_16, F@_17,
						   F@_18, F@_19, F@_20, F@_21,
						   F@_22, F@_23, F@_24, F@_25,
						   F@_26, F@_27, TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<184,
						      161, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_unsafe_marshaler'(Rest,
							      Z1, Z2, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24,
							      F@_25, F@_26,
							      F@_27,
							      TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<192,
						      161, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_unsafe_unmarshaler'(Rest,
								Z1, Z2, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10, F@_11,
								F@_12, F@_13,
								F@_14, F@_15,
								F@_16, F@_17,
								F@_18, F@_19,
								F@_20, F@_21,
								F@_22, F@_23,
								F@_24, F@_25,
								F@_26, F@_27,
								TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<200,
						      161, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_goproto_extensions_map'(Rest,
								    Z1, Z2,
								    F@_1, F@_2,
								    F@_3, F@_4,
								    F@_5, F@_6,
								    F@_7, F@_8,
								    F@_9, F@_10,
								    F@_11,
								    F@_12,
								    F@_13,
								    F@_14,
								    F@_15,
								    F@_16,
								    F@_17,
								    F@_18,
								    F@_19,
								    F@_20,
								    F@_21,
								    F@_22,
								    F@_23,
								    F@_24,
								    F@_25,
								    F@_26,
								    F@_27,
								    TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<208,
						      161, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_goproto_unrecognized'(Rest,
								  Z1, Z2, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6, F@_7,
								  F@_8, F@_9,
								  F@_10, F@_11,
								  F@_12, F@_13,
								  F@_14, F@_15,
								  F@_16, F@_17,
								  F@_18, F@_19,
								  F@_20, F@_21,
								  F@_22, F@_23,
								  F@_24, F@_25,
								  F@_26, F@_27,
								  TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<224,
						      161, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_protosizer'(Rest,
							Z1, Z2, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<232,
						      161, 31, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'd_field_google.protobuf.MessageOptions_compare'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     TrUserData);
'dfp_read_field_def_google.protobuf.MessageOptions'(<<>>,
						    0, 0, F@_1, F@_2, F@_3,
						    F@_4, R1, F@_6, F@_7, F@_8,
						    F@_9, F@_10, F@_11, F@_12,
						    F@_13, F@_14, F@_15, F@_16,
						    F@_17, F@_18, F@_19, F@_20,
						    F@_21, F@_22, F@_23, F@_24,
						    F@_25, F@_26, F@_27,
						    TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{message_set_wire_format => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{no_standard_descriptor_accessor => F@_2}
	 end,
    S4 = if F@_3 == '$undef' -> S3;
	    true -> S3#{deprecated => F@_3}
	 end,
    S5 = if F@_4 == '$undef' -> S4;
	    true -> S4#{map_entry => F@_4}
	 end,
    S6 = if R1 == '$undef' -> S5;
	    true ->
		S5#{uninterpreted_option =>
			lists_reverse(R1, TrUserData)}
	 end,
    S7 = if F@_6 == '$undef' -> S6;
	    true -> S6#{goproto_getters => F@_6}
	 end,
    S8 = if F@_7 == '$undef' -> S7;
	    true -> S7#{goproto_stringer => F@_7}
	 end,
    S9 = if F@_8 == '$undef' -> S8;
	    true -> S8#{verbose_equal => F@_8}
	 end,
    S10 = if F@_9 == '$undef' -> S9;
	     true -> S9#{face => F@_9}
	  end,
    S11 = if F@_10 == '$undef' -> S10;
	     true -> S10#{gostring => F@_10}
	  end,
    S12 = if F@_11 == '$undef' -> S11;
	     true -> S11#{populate => F@_11}
	  end,
    S13 = if F@_12 == '$undef' -> S12;
	     true -> S12#{stringer => F@_12}
	  end,
    S14 = if F@_13 == '$undef' -> S13;
	     true -> S13#{onlyone => F@_13}
	  end,
    S15 = if F@_14 == '$undef' -> S14;
	     true -> S14#{equal => F@_14}
	  end,
    S16 = if F@_15 == '$undef' -> S15;
	     true -> S15#{description => F@_15}
	  end,
    S17 = if F@_16 == '$undef' -> S16;
	     true -> S16#{testgen => F@_16}
	  end,
    S18 = if F@_17 == '$undef' -> S17;
	     true -> S17#{benchgen => F@_17}
	  end,
    S19 = if F@_18 == '$undef' -> S18;
	     true -> S18#{marshaler => F@_18}
	  end,
    S20 = if F@_19 == '$undef' -> S19;
	     true -> S19#{unmarshaler => F@_19}
	  end,
    S21 = if F@_20 == '$undef' -> S20;
	     true -> S20#{stable_marshaler => F@_20}
	  end,
    S22 = if F@_21 == '$undef' -> S21;
	     true -> S21#{sizer => F@_21}
	  end,
    S23 = if F@_22 == '$undef' -> S22;
	     true -> S22#{unsafe_marshaler => F@_22}
	  end,
    S24 = if F@_23 == '$undef' -> S23;
	     true -> S23#{unsafe_unmarshaler => F@_23}
	  end,
    S25 = if F@_24 == '$undef' -> S24;
	     true -> S24#{goproto_extensions_map => F@_24}
	  end,
    S26 = if F@_25 == '$undef' -> S25;
	     true -> S25#{goproto_unrecognized => F@_25}
	  end,
    S27 = if F@_26 == '$undef' -> S26;
	     true -> S26#{protosizer => F@_26}
	  end,
    if F@_27 == '$undef' -> S27;
       true -> S27#{compare => F@_27}
    end;
'dfp_read_field_def_google.protobuf.MessageOptions'(Other,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData) ->
    'dg_read_field_def_google.protobuf.MessageOptions'(Other,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, TrUserData).

'dg_read_field_def_google.protobuf.MessageOptions'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, F@_22, F@_23, F@_24,
						   F@_25, F@_26, F@_27,
						   TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.MessageOptions'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7, F@_8,
						       F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, TrUserData);
'dg_read_field_def_google.protobuf.MessageOptions'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, F@_22, F@_23, F@_24,
						   F@_25, F@_26, F@_27,
						   TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_google.protobuf.MessageOptions_message_set_wire_format'(Rest,
									   0, 0,
									   F@_1,
									   F@_2,
									   F@_3,
									   F@_4,
									   F@_5,
									   F@_6,
									   F@_7,
									   F@_8,
									   F@_9,
									   F@_10,
									   F@_11,
									   F@_12,
									   F@_13,
									   F@_14,
									   F@_15,
									   F@_16,
									   F@_17,
									   F@_18,
									   F@_19,
									   F@_20,
									   F@_21,
									   F@_22,
									   F@_23,
									   F@_24,
									   F@_25,
									   F@_26,
									   F@_27,
									   TrUserData);
      16 ->
	  'd_field_google.protobuf.MessageOptions_no_standard_descriptor_accessor'(Rest,
										   0,
										   0,
										   F@_1,
										   F@_2,
										   F@_3,
										   F@_4,
										   F@_5,
										   F@_6,
										   F@_7,
										   F@_8,
										   F@_9,
										   F@_10,
										   F@_11,
										   F@_12,
										   F@_13,
										   F@_14,
										   F@_15,
										   F@_16,
										   F@_17,
										   F@_18,
										   F@_19,
										   F@_20,
										   F@_21,
										   F@_22,
										   F@_23,
										   F@_24,
										   F@_25,
										   F@_26,
										   F@_27,
										   TrUserData);
      24 ->
	  'd_field_google.protobuf.MessageOptions_deprecated'(Rest,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7, F@_8,
							      F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24,
							      F@_25, F@_26,
							      F@_27,
							      TrUserData);
      56 ->
	  'd_field_google.protobuf.MessageOptions_map_entry'(Rest,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     TrUserData);
      7994 ->
	  'd_field_google.protobuf.MessageOptions_uninterpreted_option'(Rest,
									0, 0,
									F@_1,
									F@_2,
									F@_3,
									F@_4,
									F@_5,
									F@_6,
									F@_7,
									F@_8,
									F@_9,
									F@_10,
									F@_11,
									F@_12,
									F@_13,
									F@_14,
									F@_15,
									F@_16,
									F@_17,
									F@_18,
									F@_19,
									F@_20,
									F@_21,
									F@_22,
									F@_23,
									F@_24,
									F@_25,
									F@_26,
									F@_27,
									TrUserData);
      512008 ->
	  'd_field_google.protobuf.MessageOptions_goproto_getters'(Rest,
								   0, 0, F@_1,
								   F@_2, F@_3,
								   F@_4, F@_5,
								   F@_6, F@_7,
								   F@_8, F@_9,
								   F@_10, F@_11,
								   F@_12, F@_13,
								   F@_14, F@_15,
								   F@_16, F@_17,
								   F@_18, F@_19,
								   F@_20, F@_21,
								   F@_22, F@_23,
								   F@_24, F@_25,
								   F@_26, F@_27,
								   TrUserData);
      512024 ->
	  'd_field_google.protobuf.MessageOptions_goproto_stringer'(Rest,
								    0, 0, F@_1,
								    F@_2, F@_3,
								    F@_4, F@_5,
								    F@_6, F@_7,
								    F@_8, F@_9,
								    F@_10,
								    F@_11,
								    F@_12,
								    F@_13,
								    F@_14,
								    F@_15,
								    F@_16,
								    F@_17,
								    F@_18,
								    F@_19,
								    F@_20,
								    F@_21,
								    F@_22,
								    F@_23,
								    F@_24,
								    F@_25,
								    F@_26,
								    F@_27,
								    TrUserData);
      512032 ->
	  'd_field_google.protobuf.MessageOptions_verbose_equal'(Rest,
								 0, 0, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 F@_8, F@_9,
								 F@_10, F@_11,
								 F@_12, F@_13,
								 F@_14, F@_15,
								 F@_16, F@_17,
								 F@_18, F@_19,
								 F@_20, F@_21,
								 F@_22, F@_23,
								 F@_24, F@_25,
								 F@_26, F@_27,
								 TrUserData);
      512040 ->
	  'd_field_google.protobuf.MessageOptions_face'(Rest, 0,
							0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData);
      512048 ->
	  'd_field_google.protobuf.MessageOptions_gostring'(Rest,
							    0, 0, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, F@_19, F@_20,
							    F@_21, F@_22, F@_23,
							    F@_24, F@_25, F@_26,
							    F@_27, TrUserData);
      512056 ->
	  'd_field_google.protobuf.MessageOptions_populate'(Rest,
							    0, 0, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, F@_19, F@_20,
							    F@_21, F@_22, F@_23,
							    F@_24, F@_25, F@_26,
							    F@_27, TrUserData);
      536064 ->
	  'd_field_google.protobuf.MessageOptions_stringer'(Rest,
							    0, 0, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, F@_19, F@_20,
							    F@_21, F@_22, F@_23,
							    F@_24, F@_25, F@_26,
							    F@_27, TrUserData);
      512072 ->
	  'd_field_google.protobuf.MessageOptions_onlyone'(Rest,
							   0, 0, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, TrUserData);
      512104 ->
	  'd_field_google.protobuf.MessageOptions_equal'(Rest, 0,
							 0, F@_1, F@_2, F@_3,
							 F@_4, F@_5, F@_6, F@_7,
							 F@_8, F@_9, F@_10,
							 F@_11, F@_12, F@_13,
							 F@_14, F@_15, F@_16,
							 F@_17, F@_18, F@_19,
							 F@_20, F@_21, F@_22,
							 F@_23, F@_24, F@_25,
							 F@_26, F@_27,
							 TrUserData);
      512112 ->
	  'd_field_google.protobuf.MessageOptions_description'(Rest,
							       0, 0, F@_1, F@_2,
							       F@_3, F@_4, F@_5,
							       F@_6, F@_7, F@_8,
							       F@_9, F@_10,
							       F@_11, F@_12,
							       F@_13, F@_14,
							       F@_15, F@_16,
							       F@_17, F@_18,
							       F@_19, F@_20,
							       F@_21, F@_22,
							       F@_23, F@_24,
							       F@_25, F@_26,
							       F@_27,
							       TrUserData);
      512120 ->
	  'd_field_google.protobuf.MessageOptions_testgen'(Rest,
							   0, 0, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, TrUserData);
      512128 ->
	  'd_field_google.protobuf.MessageOptions_benchgen'(Rest,
							    0, 0, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, F@_19, F@_20,
							    F@_21, F@_22, F@_23,
							    F@_24, F@_25, F@_26,
							    F@_27, TrUserData);
      512136 ->
	  'd_field_google.protobuf.MessageOptions_marshaler'(Rest,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     TrUserData);
      512144 ->
	  'd_field_google.protobuf.MessageOptions_unmarshaler'(Rest,
							       0, 0, F@_1, F@_2,
							       F@_3, F@_4, F@_5,
							       F@_6, F@_7, F@_8,
							       F@_9, F@_10,
							       F@_11, F@_12,
							       F@_13, F@_14,
							       F@_15, F@_16,
							       F@_17, F@_18,
							       F@_19, F@_20,
							       F@_21, F@_22,
							       F@_23, F@_24,
							       F@_25, F@_26,
							       F@_27,
							       TrUserData);
      512152 ->
	  'd_field_google.protobuf.MessageOptions_stable_marshaler'(Rest,
								    0, 0, F@_1,
								    F@_2, F@_3,
								    F@_4, F@_5,
								    F@_6, F@_7,
								    F@_8, F@_9,
								    F@_10,
								    F@_11,
								    F@_12,
								    F@_13,
								    F@_14,
								    F@_15,
								    F@_16,
								    F@_17,
								    F@_18,
								    F@_19,
								    F@_20,
								    F@_21,
								    F@_22,
								    F@_23,
								    F@_24,
								    F@_25,
								    F@_26,
								    F@_27,
								    TrUserData);
      512160 ->
	  'd_field_google.protobuf.MessageOptions_sizer'(Rest, 0,
							 0, F@_1, F@_2, F@_3,
							 F@_4, F@_5, F@_6, F@_7,
							 F@_8, F@_9, F@_10,
							 F@_11, F@_12, F@_13,
							 F@_14, F@_15, F@_16,
							 F@_17, F@_18, F@_19,
							 F@_20, F@_21, F@_22,
							 F@_23, F@_24, F@_25,
							 F@_26, F@_27,
							 TrUserData);
      512184 ->
	  'd_field_google.protobuf.MessageOptions_unsafe_marshaler'(Rest,
								    0, 0, F@_1,
								    F@_2, F@_3,
								    F@_4, F@_5,
								    F@_6, F@_7,
								    F@_8, F@_9,
								    F@_10,
								    F@_11,
								    F@_12,
								    F@_13,
								    F@_14,
								    F@_15,
								    F@_16,
								    F@_17,
								    F@_18,
								    F@_19,
								    F@_20,
								    F@_21,
								    F@_22,
								    F@_23,
								    F@_24,
								    F@_25,
								    F@_26,
								    F@_27,
								    TrUserData);
      512192 ->
	  'd_field_google.protobuf.MessageOptions_unsafe_unmarshaler'(Rest,
								      0, 0,
								      F@_1,
								      F@_2,
								      F@_3,
								      F@_4,
								      F@_5,
								      F@_6,
								      F@_7,
								      F@_8,
								      F@_9,
								      F@_10,
								      F@_11,
								      F@_12,
								      F@_13,
								      F@_14,
								      F@_15,
								      F@_16,
								      F@_17,
								      F@_18,
								      F@_19,
								      F@_20,
								      F@_21,
								      F@_22,
								      F@_23,
								      F@_24,
								      F@_25,
								      F@_26,
								      F@_27,
								      TrUserData);
      512200 ->
	  'd_field_google.protobuf.MessageOptions_goproto_extensions_map'(Rest,
									  0, 0,
									  F@_1,
									  F@_2,
									  F@_3,
									  F@_4,
									  F@_5,
									  F@_6,
									  F@_7,
									  F@_8,
									  F@_9,
									  F@_10,
									  F@_11,
									  F@_12,
									  F@_13,
									  F@_14,
									  F@_15,
									  F@_16,
									  F@_17,
									  F@_18,
									  F@_19,
									  F@_20,
									  F@_21,
									  F@_22,
									  F@_23,
									  F@_24,
									  F@_25,
									  F@_26,
									  F@_27,
									  TrUserData);
      512208 ->
	  'd_field_google.protobuf.MessageOptions_goproto_unrecognized'(Rest,
									0, 0,
									F@_1,
									F@_2,
									F@_3,
									F@_4,
									F@_5,
									F@_6,
									F@_7,
									F@_8,
									F@_9,
									F@_10,
									F@_11,
									F@_12,
									F@_13,
									F@_14,
									F@_15,
									F@_16,
									F@_17,
									F@_18,
									F@_19,
									F@_20,
									F@_21,
									F@_22,
									F@_23,
									F@_24,
									F@_25,
									F@_26,
									F@_27,
									TrUserData);
      512224 ->
	  'd_field_google.protobuf.MessageOptions_protosizer'(Rest,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7, F@_8,
							      F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24,
							      F@_25, F@_26,
							      F@_27,
							      TrUserData);
      512232 ->
	  'd_field_google.protobuf.MessageOptions_compare'(Rest,
							   0, 0, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, F@_19, F@_20,
							   F@_21, F@_22, F@_23,
							   F@_24, F@_25, F@_26,
							   F@_27, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.MessageOptions'(Rest, 0, 0,
							     F@_1, F@_2, F@_3,
							     F@_4, F@_5, F@_6,
							     F@_7, F@_8, F@_9,
							     F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     TrUserData);
	    1 ->
		'skip_64_google.protobuf.MessageOptions'(Rest, 0, 0,
							 F@_1, F@_2, F@_3, F@_4,
							 F@_5, F@_6, F@_7, F@_8,
							 F@_9, F@_10, F@_11,
							 F@_12, F@_13, F@_14,
							 F@_15, F@_16, F@_17,
							 F@_18, F@_19, F@_20,
							 F@_21, F@_22, F@_23,
							 F@_24, F@_25, F@_26,
							 F@_27, TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.MessageOptions'(Rest,
								       0, 0,
								       F@_1,
								       F@_2,
								       F@_3,
								       F@_4,
								       F@_5,
								       F@_6,
								       F@_7,
								       F@_8,
								       F@_9,
								       F@_10,
								       F@_11,
								       F@_12,
								       F@_13,
								       F@_14,
								       F@_15,
								       F@_16,
								       F@_17,
								       F@_18,
								       F@_19,
								       F@_20,
								       F@_21,
								       F@_22,
								       F@_23,
								       F@_24,
								       F@_25,
								       F@_26,
								       F@_27,
								       TrUserData);
	    3 ->
		'skip_group_google.protobuf.MessageOptions'(Rest,
							    Key bsr 3, 0, F@_1,
							    F@_2, F@_3, F@_4,
							    F@_5, F@_6, F@_7,
							    F@_8, F@_9, F@_10,
							    F@_11, F@_12, F@_13,
							    F@_14, F@_15, F@_16,
							    F@_17, F@_18, F@_19,
							    F@_20, F@_21, F@_22,
							    F@_23, F@_24, F@_25,
							    F@_26, F@_27,
							    TrUserData);
	    5 ->
		'skip_32_google.protobuf.MessageOptions'(Rest, 0, 0,
							 F@_1, F@_2, F@_3, F@_4,
							 F@_5, F@_6, F@_7, F@_8,
							 F@_9, F@_10, F@_11,
							 F@_12, F@_13, F@_14,
							 F@_15, F@_16, F@_17,
							 F@_18, F@_19, F@_20,
							 F@_21, F@_22, F@_23,
							 F@_24, F@_25, F@_26,
							 F@_27, TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.MessageOptions'(<<>>,
						   0, 0, F@_1, F@_2, F@_3, F@_4,
						   R1, F@_6, F@_7, F@_8, F@_9,
						   F@_10, F@_11, F@_12, F@_13,
						   F@_14, F@_15, F@_16, F@_17,
						   F@_18, F@_19, F@_20, F@_21,
						   F@_22, F@_23, F@_24, F@_25,
						   F@_26, F@_27, TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{message_set_wire_format => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{no_standard_descriptor_accessor => F@_2}
	 end,
    S4 = if F@_3 == '$undef' -> S3;
	    true -> S3#{deprecated => F@_3}
	 end,
    S5 = if F@_4 == '$undef' -> S4;
	    true -> S4#{map_entry => F@_4}
	 end,
    S6 = if R1 == '$undef' -> S5;
	    true ->
		S5#{uninterpreted_option =>
			lists_reverse(R1, TrUserData)}
	 end,
    S7 = if F@_6 == '$undef' -> S6;
	    true -> S6#{goproto_getters => F@_6}
	 end,
    S8 = if F@_7 == '$undef' -> S7;
	    true -> S7#{goproto_stringer => F@_7}
	 end,
    S9 = if F@_8 == '$undef' -> S8;
	    true -> S8#{verbose_equal => F@_8}
	 end,
    S10 = if F@_9 == '$undef' -> S9;
	     true -> S9#{face => F@_9}
	  end,
    S11 = if F@_10 == '$undef' -> S10;
	     true -> S10#{gostring => F@_10}
	  end,
    S12 = if F@_11 == '$undef' -> S11;
	     true -> S11#{populate => F@_11}
	  end,
    S13 = if F@_12 == '$undef' -> S12;
	     true -> S12#{stringer => F@_12}
	  end,
    S14 = if F@_13 == '$undef' -> S13;
	     true -> S13#{onlyone => F@_13}
	  end,
    S15 = if F@_14 == '$undef' -> S14;
	     true -> S14#{equal => F@_14}
	  end,
    S16 = if F@_15 == '$undef' -> S15;
	     true -> S15#{description => F@_15}
	  end,
    S17 = if F@_16 == '$undef' -> S16;
	     true -> S16#{testgen => F@_16}
	  end,
    S18 = if F@_17 == '$undef' -> S17;
	     true -> S17#{benchgen => F@_17}
	  end,
    S19 = if F@_18 == '$undef' -> S18;
	     true -> S18#{marshaler => F@_18}
	  end,
    S20 = if F@_19 == '$undef' -> S19;
	     true -> S19#{unmarshaler => F@_19}
	  end,
    S21 = if F@_20 == '$undef' -> S20;
	     true -> S20#{stable_marshaler => F@_20}
	  end,
    S22 = if F@_21 == '$undef' -> S21;
	     true -> S21#{sizer => F@_21}
	  end,
    S23 = if F@_22 == '$undef' -> S22;
	     true -> S22#{unsafe_marshaler => F@_22}
	  end,
    S24 = if F@_23 == '$undef' -> S23;
	     true -> S23#{unsafe_unmarshaler => F@_23}
	  end,
    S25 = if F@_24 == '$undef' -> S24;
	     true -> S24#{goproto_extensions_map => F@_24}
	  end,
    S26 = if F@_25 == '$undef' -> S25;
	     true -> S25#{goproto_unrecognized => F@_25}
	  end,
    S27 = if F@_26 == '$undef' -> S26;
	     true -> S26#{protosizer => F@_26}
	  end,
    if F@_27 == '$undef' -> S27;
       true -> S27#{compare => F@_27}
    end.

'd_field_google.protobuf.MessageOptions_message_set_wire_format'(<<1:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 F@_8, F@_9,
								 F@_10, F@_11,
								 F@_12, F@_13,
								 F@_14, F@_15,
								 F@_16, F@_17,
								 F@_18, F@_19,
								 F@_20, F@_21,
								 F@_22, F@_23,
								 F@_24, F@_25,
								 F@_26, F@_27,
								 TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_message_set_wire_format'(Rest,
								     N + 7,
								     X bsl N +
								       Acc,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     F@_5, F@_6,
								     F@_7, F@_8,
								     F@_9,
								     F@_10,
								     F@_11,
								     F@_12,
								     F@_13,
								     F@_14,
								     F@_15,
								     F@_16,
								     F@_17,
								     F@_18,
								     F@_19,
								     F@_20,
								     F@_21,
								     F@_22,
								     F@_23,
								     F@_24,
								     F@_25,
								     F@_26,
								     F@_27,
								     TrUserData);
'd_field_google.protobuf.MessageOptions_message_set_wire_format'(<<0:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, _,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 F@_8, F@_9,
								 F@_10, F@_11,
								 F@_12, F@_13,
								 F@_14, F@_15,
								 F@_16, F@_17,
								 F@_18, F@_19,
								 F@_20, F@_21,
								 F@_22, F@_23,
								 F@_24, F@_25,
								 F@_26, F@_27,
								 TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, NewFValue, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_no_standard_descriptor_accessor'(<<1:1,
									   X:7,
									   Rest/binary>>,
									 N, Acc,
									 F@_1,
									 F@_2,
									 F@_3,
									 F@_4,
									 F@_5,
									 F@_6,
									 F@_7,
									 F@_8,
									 F@_9,
									 F@_10,
									 F@_11,
									 F@_12,
									 F@_13,
									 F@_14,
									 F@_15,
									 F@_16,
									 F@_17,
									 F@_18,
									 F@_19,
									 F@_20,
									 F@_21,
									 F@_22,
									 F@_23,
									 F@_24,
									 F@_25,
									 F@_26,
									 F@_27,
									 TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_no_standard_descriptor_accessor'(Rest,
									     N +
									       7,
									     X
									       bsl
									       N
									       +
									       Acc,
									     F@_1,
									     F@_2,
									     F@_3,
									     F@_4,
									     F@_5,
									     F@_6,
									     F@_7,
									     F@_8,
									     F@_9,
									     F@_10,
									     F@_11,
									     F@_12,
									     F@_13,
									     F@_14,
									     F@_15,
									     F@_16,
									     F@_17,
									     F@_18,
									     F@_19,
									     F@_20,
									     F@_21,
									     F@_22,
									     F@_23,
									     F@_24,
									     F@_25,
									     F@_26,
									     F@_27,
									     TrUserData);
'd_field_google.protobuf.MessageOptions_no_standard_descriptor_accessor'(<<0:1,
									   X:7,
									   Rest/binary>>,
									 N, Acc,
									 F@_1,
									 _,
									 F@_3,
									 F@_4,
									 F@_5,
									 F@_6,
									 F@_7,
									 F@_8,
									 F@_9,
									 F@_10,
									 F@_11,
									 F@_12,
									 F@_13,
									 F@_14,
									 F@_15,
									 F@_16,
									 F@_17,
									 F@_18,
									 F@_19,
									 F@_20,
									 F@_21,
									 F@_22,
									 F@_23,
									 F@_24,
									 F@_25,
									 F@_26,
									 F@_27,
									 TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, NewFValue,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_deprecated'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_deprecated'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, F@_2, F@_3, F@_4,
							F@_5, F@_6, F@_7, F@_8,
							F@_9, F@_10, F@_11,
							F@_12, F@_13, F@_14,
							F@_15, F@_16, F@_17,
							F@_18, F@_19, F@_20,
							F@_21, F@_22, F@_23,
							F@_24, F@_25, F@_26,
							F@_27, TrUserData);
'd_field_google.protobuf.MessageOptions_deprecated'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, _, F@_4,
						    F@_5, F@_6, F@_7, F@_8,
						    F@_9, F@_10, F@_11, F@_12,
						    F@_13, F@_14, F@_15, F@_16,
						    F@_17, F@_18, F@_19, F@_20,
						    F@_21, F@_22, F@_23, F@_24,
						    F@_25, F@_26, F@_27,
						    TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2,
							NewFValue, F@_4, F@_5,
							F@_6, F@_7, F@_8, F@_9,
							F@_10, F@_11, F@_12,
							F@_13, F@_14, F@_15,
							F@_16, F@_17, F@_18,
							F@_19, F@_20, F@_21,
							F@_22, F@_23, F@_24,
							F@_25, F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_map_entry'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, F@_22, F@_23, F@_24,
						   F@_25, F@_26, F@_27,
						   TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_map_entry'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7, F@_8,
						       F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, TrUserData);
'd_field_google.protobuf.MessageOptions_map_entry'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3, _,
						   F@_5, F@_6, F@_7, F@_8, F@_9,
						   F@_10, F@_11, F@_12, F@_13,
						   F@_14, F@_15, F@_16, F@_17,
						   F@_18, F@_19, F@_20, F@_21,
						   F@_22, F@_23, F@_24, F@_25,
						   F@_26, F@_27, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							NewFValue, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_uninterpreted_option'(<<1:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24,
							      F@_25, F@_26,
							      F@_27, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_uninterpreted_option'(Rest,
								  N + 7,
								  X bsl N + Acc,
								  F@_1, F@_2,
								  F@_3, F@_4,
								  F@_5, F@_6,
								  F@_7, F@_8,
								  F@_9, F@_10,
								  F@_11, F@_12,
								  F@_13, F@_14,
								  F@_15, F@_16,
								  F@_17, F@_18,
								  F@_19, F@_20,
								  F@_21, F@_22,
								  F@_23, F@_24,
								  F@_25, F@_26,
								  F@_27,
								  TrUserData);
'd_field_google.protobuf.MessageOptions_uninterpreted_option'(<<0:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      F@_2, F@_3, F@_4,
							      Prev, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24,
							      F@_25, F@_26,
							      F@_27,
							      TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.UninterpretedOption'(Bs,
										TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4,
							cons(NewFValue, Prev,
							     TrUserData),
							F@_6, F@_7, F@_8, F@_9,
							F@_10, F@_11, F@_12,
							F@_13, F@_14, F@_15,
							F@_16, F@_17, F@_18,
							F@_19, F@_20, F@_21,
							F@_22, F@_23, F@_24,
							F@_25, F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_goproto_getters'(<<1:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 F@_13, F@_14, F@_15,
							 F@_16, F@_17, F@_18,
							 F@_19, F@_20, F@_21,
							 F@_22, F@_23, F@_24,
							 F@_25, F@_26, F@_27,
							 TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_goproto_getters'(Rest,
							     N + 7,
							     X bsl N + Acc,
							     F@_1, F@_2, F@_3,
							     F@_4, F@_5, F@_6,
							     F@_7, F@_8, F@_9,
							     F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, F@_19,
							     F@_20, F@_21,
							     F@_22, F@_23,
							     F@_24, F@_25,
							     F@_26, F@_27,
							     TrUserData);
'd_field_google.protobuf.MessageOptions_goproto_getters'(<<0:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, F@_4, F@_5, _,
							 F@_7, F@_8, F@_9,
							 F@_10, F@_11, F@_12,
							 F@_13, F@_14, F@_15,
							 F@_16, F@_17, F@_18,
							 F@_19, F@_20, F@_21,
							 F@_22, F@_23, F@_24,
							 F@_25, F@_26, F@_27,
							 TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, NewFValue,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_goproto_stringer'(<<1:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, F@_13, F@_14,
							  F@_15, F@_16, F@_17,
							  F@_18, F@_19, F@_20,
							  F@_21, F@_22, F@_23,
							  F@_24, F@_25, F@_26,
							  F@_27, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_goproto_stringer'(Rest,
							      N + 7,
							      X bsl N + Acc,
							      F@_1, F@_2, F@_3,
							      F@_4, F@_5, F@_6,
							      F@_7, F@_8, F@_9,
							      F@_10, F@_11,
							      F@_12, F@_13,
							      F@_14, F@_15,
							      F@_16, F@_17,
							      F@_18, F@_19,
							      F@_20, F@_21,
							      F@_22, F@_23,
							      F@_24, F@_25,
							      F@_26, F@_27,
							      TrUserData);
'd_field_google.protobuf.MessageOptions_goproto_stringer'(<<0:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, _, F@_8, F@_9,
							  F@_10, F@_11, F@_12,
							  F@_13, F@_14, F@_15,
							  F@_16, F@_17, F@_18,
							  F@_19, F@_20, F@_21,
							  F@_22, F@_23, F@_24,
							  F@_25, F@_26, F@_27,
							  TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6,
							NewFValue, F@_8, F@_9,
							F@_10, F@_11, F@_12,
							F@_13, F@_14, F@_15,
							F@_16, F@_17, F@_18,
							F@_19, F@_20, F@_21,
							F@_22, F@_23, F@_24,
							F@_25, F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_verbose_equal'(<<1:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_verbose_equal'(Rest,
							   N + 7, X bsl N + Acc,
							   F@_1, F@_2, F@_3,
							   F@_4, F@_5, F@_6,
							   F@_7, F@_8, F@_9,
							   F@_10, F@_11, F@_12,
							   F@_13, F@_14, F@_15,
							   F@_16, F@_17, F@_18,
							   F@_19, F@_20, F@_21,
							   F@_22, F@_23, F@_24,
							   F@_25, F@_26, F@_27,
							   TrUserData);
'd_field_google.protobuf.MessageOptions_verbose_equal'(<<0:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       _, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							NewFValue, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_face'(<<1:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, F@_3, F@_4,
					      F@_5, F@_6, F@_7, F@_8, F@_9,
					      F@_10, F@_11, F@_12, F@_13, F@_14,
					      F@_15, F@_16, F@_17, F@_18, F@_19,
					      F@_20, F@_21, F@_22, F@_23, F@_24,
					      F@_25, F@_26, F@_27, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_face'(Rest,
						  N + 7, X bsl N + Acc, F@_1,
						  F@_2, F@_3, F@_4, F@_5, F@_6,
						  F@_7, F@_8, F@_9, F@_10,
						  F@_11, F@_12, F@_13, F@_14,
						  F@_15, F@_16, F@_17, F@_18,
						  F@_19, F@_20, F@_21, F@_22,
						  F@_23, F@_24, F@_25, F@_26,
						  F@_27, TrUserData);
'd_field_google.protobuf.MessageOptions_face'(<<0:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, F@_3, F@_4,
					      F@_5, F@_6, F@_7, F@_8, _, F@_10,
					      F@_11, F@_12, F@_13, F@_14, F@_15,
					      F@_16, F@_17, F@_18, F@_19, F@_20,
					      F@_21, F@_22, F@_23, F@_24, F@_25,
					      F@_26, F@_27, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, NewFValue, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_gostring'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, F@_19, F@_20,
						  F@_21, F@_22, F@_23, F@_24,
						  F@_25, F@_26, F@_27,
						  TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_gostring'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7, F@_8,
						      F@_9, F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      F@_19, F@_20, F@_21,
						      F@_22, F@_23, F@_24,
						      F@_25, F@_26, F@_27,
						      TrUserData);
'd_field_google.protobuf.MessageOptions_gostring'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, _, F@_11, F@_12, F@_13,
						  F@_14, F@_15, F@_16, F@_17,
						  F@_18, F@_19, F@_20, F@_21,
						  F@_22, F@_23, F@_24, F@_25,
						  F@_26, F@_27, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, NewFValue,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_populate'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, F@_19, F@_20,
						  F@_21, F@_22, F@_23, F@_24,
						  F@_25, F@_26, F@_27,
						  TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_populate'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7, F@_8,
						      F@_9, F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      F@_19, F@_20, F@_21,
						      F@_22, F@_23, F@_24,
						      F@_25, F@_26, F@_27,
						      TrUserData);
'd_field_google.protobuf.MessageOptions_populate'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, _, F@_12, F@_13,
						  F@_14, F@_15, F@_16, F@_17,
						  F@_18, F@_19, F@_20, F@_21,
						  F@_22, F@_23, F@_24, F@_25,
						  F@_26, F@_27, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							NewFValue, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_stringer'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, F@_19, F@_20,
						  F@_21, F@_22, F@_23, F@_24,
						  F@_25, F@_26, F@_27,
						  TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_stringer'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7, F@_8,
						      F@_9, F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      F@_19, F@_20, F@_21,
						      F@_22, F@_23, F@_24,
						      F@_25, F@_26, F@_27,
						      TrUserData);
'd_field_google.protobuf.MessageOptions_stringer'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, _, F@_13,
						  F@_14, F@_15, F@_16, F@_17,
						  F@_18, F@_19, F@_20, F@_21,
						  F@_22, F@_23, F@_24, F@_25,
						  F@_26, F@_27, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, NewFValue, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_onlyone'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_onlyone'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     F@_2, F@_3, F@_4, F@_5,
						     F@_6, F@_7, F@_8, F@_9,
						     F@_10, F@_11, F@_12, F@_13,
						     F@_14, F@_15, F@_16, F@_17,
						     F@_18, F@_19, F@_20, F@_21,
						     F@_22, F@_23, F@_24, F@_25,
						     F@_26, F@_27, TrUserData);
'd_field_google.protobuf.MessageOptions_onlyone'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, _, F@_14,
						 F@_15, F@_16, F@_17, F@_18,
						 F@_19, F@_20, F@_21, F@_22,
						 F@_23, F@_24, F@_25, F@_26,
						 F@_27, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, NewFValue,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_equal'(<<1:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, F@_11, F@_12, F@_13,
					       F@_14, F@_15, F@_16, F@_17,
					       F@_18, F@_19, F@_20, F@_21,
					       F@_22, F@_23, F@_24, F@_25,
					       F@_26, F@_27, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_equal'(Rest,
						   N + 7, X bsl N + Acc, F@_1,
						   F@_2, F@_3, F@_4, F@_5, F@_6,
						   F@_7, F@_8, F@_9, F@_10,
						   F@_11, F@_12, F@_13, F@_14,
						   F@_15, F@_16, F@_17, F@_18,
						   F@_19, F@_20, F@_21, F@_22,
						   F@_23, F@_24, F@_25, F@_26,
						   F@_27, TrUserData);
'd_field_google.protobuf.MessageOptions_equal'(<<0:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, F@_11, F@_12, F@_13, _,
					       F@_15, F@_16, F@_17, F@_18,
					       F@_19, F@_20, F@_21, F@_22,
					       F@_23, F@_24, F@_25, F@_26,
					       F@_27, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							NewFValue, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_description'(<<1:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_description'(Rest,
							 N + 7, X bsl N + Acc,
							 F@_1, F@_2, F@_3, F@_4,
							 F@_5, F@_6, F@_7, F@_8,
							 F@_9, F@_10, F@_11,
							 F@_12, F@_13, F@_14,
							 F@_15, F@_16, F@_17,
							 F@_18, F@_19, F@_20,
							 F@_21, F@_22, F@_23,
							 F@_24, F@_25, F@_26,
							 F@_27, TrUserData);
'd_field_google.protobuf.MessageOptions_description'(<<0:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, _,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, NewFValue, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_testgen'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_testgen'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     F@_2, F@_3, F@_4, F@_5,
						     F@_6, F@_7, F@_8, F@_9,
						     F@_10, F@_11, F@_12, F@_13,
						     F@_14, F@_15, F@_16, F@_17,
						     F@_18, F@_19, F@_20, F@_21,
						     F@_22, F@_23, F@_24, F@_25,
						     F@_26, F@_27, TrUserData);
'd_field_google.protobuf.MessageOptions_testgen'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, _, F@_17, F@_18,
						 F@_19, F@_20, F@_21, F@_22,
						 F@_23, F@_24, F@_25, F@_26,
						 F@_27, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, NewFValue,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_benchgen'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, F@_19, F@_20,
						  F@_21, F@_22, F@_23, F@_24,
						  F@_25, F@_26, F@_27,
						  TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_benchgen'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7, F@_8,
						      F@_9, F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      F@_19, F@_20, F@_21,
						      F@_22, F@_23, F@_24,
						      F@_25, F@_26, F@_27,
						      TrUserData);
'd_field_google.protobuf.MessageOptions_benchgen'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16, _,
						  F@_18, F@_19, F@_20, F@_21,
						  F@_22, F@_23, F@_24, F@_25,
						  F@_26, F@_27, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							NewFValue, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_marshaler'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, F@_19, F@_20,
						   F@_21, F@_22, F@_23, F@_24,
						   F@_25, F@_26, F@_27,
						   TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_marshaler'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7, F@_8,
						       F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, TrUserData);
'd_field_google.protobuf.MessageOptions_marshaler'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, _, F@_19, F@_20,
						   F@_21, F@_22, F@_23, F@_24,
						   F@_25, F@_26, F@_27,
						   TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, NewFValue, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_unmarshaler'(<<1:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, F@_19,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_unmarshaler'(Rest,
							 N + 7, X bsl N + Acc,
							 F@_1, F@_2, F@_3, F@_4,
							 F@_5, F@_6, F@_7, F@_8,
							 F@_9, F@_10, F@_11,
							 F@_12, F@_13, F@_14,
							 F@_15, F@_16, F@_17,
							 F@_18, F@_19, F@_20,
							 F@_21, F@_22, F@_23,
							 F@_24, F@_25, F@_26,
							 F@_27, TrUserData);
'd_field_google.protobuf.MessageOptions_unmarshaler'(<<0:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18, _,
						     F@_20, F@_21, F@_22, F@_23,
						     F@_24, F@_25, F@_26, F@_27,
						     TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, NewFValue,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_stable_marshaler'(<<1:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, F@_13, F@_14,
							  F@_15, F@_16, F@_17,
							  F@_18, F@_19, F@_20,
							  F@_21, F@_22, F@_23,
							  F@_24, F@_25, F@_26,
							  F@_27, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_stable_marshaler'(Rest,
							      N + 7,
							      X bsl N + Acc,
							      F@_1, F@_2, F@_3,
							      F@_4, F@_5, F@_6,
							      F@_7, F@_8, F@_9,
							      F@_10, F@_11,
							      F@_12, F@_13,
							      F@_14, F@_15,
							      F@_16, F@_17,
							      F@_18, F@_19,
							      F@_20, F@_21,
							      F@_22, F@_23,
							      F@_24, F@_25,
							      F@_26, F@_27,
							      TrUserData);
'd_field_google.protobuf.MessageOptions_stable_marshaler'(<<0:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, F@_13, F@_14,
							  F@_15, F@_16, F@_17,
							  F@_18, F@_19, _,
							  F@_21, F@_22, F@_23,
							  F@_24, F@_25, F@_26,
							  F@_27, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							NewFValue, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_sizer'(<<1:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, F@_11, F@_12, F@_13,
					       F@_14, F@_15, F@_16, F@_17,
					       F@_18, F@_19, F@_20, F@_21,
					       F@_22, F@_23, F@_24, F@_25,
					       F@_26, F@_27, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_sizer'(Rest,
						   N + 7, X bsl N + Acc, F@_1,
						   F@_2, F@_3, F@_4, F@_5, F@_6,
						   F@_7, F@_8, F@_9, F@_10,
						   F@_11, F@_12, F@_13, F@_14,
						   F@_15, F@_16, F@_17, F@_18,
						   F@_19, F@_20, F@_21, F@_22,
						   F@_23, F@_24, F@_25, F@_26,
						   F@_27, TrUserData);
'd_field_google.protobuf.MessageOptions_sizer'(<<0:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, F@_11, F@_12, F@_13,
					       F@_14, F@_15, F@_16, F@_17,
					       F@_18, F@_19, F@_20, _, F@_22,
					       F@_23, F@_24, F@_25, F@_26,
					       F@_27, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, NewFValue, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_unsafe_marshaler'(<<1:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, F@_13, F@_14,
							  F@_15, F@_16, F@_17,
							  F@_18, F@_19, F@_20,
							  F@_21, F@_22, F@_23,
							  F@_24, F@_25, F@_26,
							  F@_27, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_unsafe_marshaler'(Rest,
							      N + 7,
							      X bsl N + Acc,
							      F@_1, F@_2, F@_3,
							      F@_4, F@_5, F@_6,
							      F@_7, F@_8, F@_9,
							      F@_10, F@_11,
							      F@_12, F@_13,
							      F@_14, F@_15,
							      F@_16, F@_17,
							      F@_18, F@_19,
							      F@_20, F@_21,
							      F@_22, F@_23,
							      F@_24, F@_25,
							      F@_26, F@_27,
							      TrUserData);
'd_field_google.protobuf.MessageOptions_unsafe_marshaler'(<<0:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7, F@_8,
							  F@_9, F@_10, F@_11,
							  F@_12, F@_13, F@_14,
							  F@_15, F@_16, F@_17,
							  F@_18, F@_19, F@_20,
							  F@_21, _, F@_23,
							  F@_24, F@_25, F@_26,
							  F@_27, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, NewFValue,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_unsafe_unmarshaler'(<<1:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, F@_19, F@_20,
							    F@_21, F@_22, F@_23,
							    F@_24, F@_25, F@_26,
							    F@_27, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_unsafe_unmarshaler'(Rest,
								N + 7,
								X bsl N + Acc,
								F@_1, F@_2,
								F@_3, F@_4,
								F@_5, F@_6,
								F@_7, F@_8,
								F@_9, F@_10,
								F@_11, F@_12,
								F@_13, F@_14,
								F@_15, F@_16,
								F@_17, F@_18,
								F@_19, F@_20,
								F@_21, F@_22,
								F@_23, F@_24,
								F@_25, F@_26,
								F@_27,
								TrUserData);
'd_field_google.protobuf.MessageOptions_unsafe_unmarshaler'(<<0:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, F@_19, F@_20,
							    F@_21, F@_22, _,
							    F@_24, F@_25, F@_26,
							    F@_27,
							    TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							NewFValue, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_goproto_extensions_map'(<<1:1,
								  X:7,
								  Rest/binary>>,
								N, Acc, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10, F@_11,
								F@_12, F@_13,
								F@_14, F@_15,
								F@_16, F@_17,
								F@_18, F@_19,
								F@_20, F@_21,
								F@_22, F@_23,
								F@_24, F@_25,
								F@_26, F@_27,
								TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_goproto_extensions_map'(Rest,
								    N + 7,
								    X bsl N +
								      Acc,
								    F@_1, F@_2,
								    F@_3, F@_4,
								    F@_5, F@_6,
								    F@_7, F@_8,
								    F@_9, F@_10,
								    F@_11,
								    F@_12,
								    F@_13,
								    F@_14,
								    F@_15,
								    F@_16,
								    F@_17,
								    F@_18,
								    F@_19,
								    F@_20,
								    F@_21,
								    F@_22,
								    F@_23,
								    F@_24,
								    F@_25,
								    F@_26,
								    F@_27,
								    TrUserData);
'd_field_google.protobuf.MessageOptions_goproto_extensions_map'(<<0:1,
								  X:7,
								  Rest/binary>>,
								N, Acc, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10, F@_11,
								F@_12, F@_13,
								F@_14, F@_15,
								F@_16, F@_17,
								F@_18, F@_19,
								F@_20, F@_21,
								F@_22, F@_23, _,
								F@_25, F@_26,
								F@_27,
								TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, NewFValue, F@_25,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_goproto_unrecognized'(<<1:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24,
							      F@_25, F@_26,
							      F@_27, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_goproto_unrecognized'(Rest,
								  N + 7,
								  X bsl N + Acc,
								  F@_1, F@_2,
								  F@_3, F@_4,
								  F@_5, F@_6,
								  F@_7, F@_8,
								  F@_9, F@_10,
								  F@_11, F@_12,
								  F@_13, F@_14,
								  F@_15, F@_16,
								  F@_17, F@_18,
								  F@_19, F@_20,
								  F@_21, F@_22,
								  F@_23, F@_24,
								  F@_25, F@_26,
								  F@_27,
								  TrUserData);
'd_field_google.protobuf.MessageOptions_goproto_unrecognized'(<<0:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      F@_8, F@_9, F@_10,
							      F@_11, F@_12,
							      F@_13, F@_14,
							      F@_15, F@_16,
							      F@_17, F@_18,
							      F@_19, F@_20,
							      F@_21, F@_22,
							      F@_23, F@_24, _,
							      F@_26, F@_27,
							      TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, NewFValue,
							F@_26, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_protosizer'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, F@_26, F@_27,
						    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_protosizer'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, F@_2, F@_3, F@_4,
							F@_5, F@_6, F@_7, F@_8,
							F@_9, F@_10, F@_11,
							F@_12, F@_13, F@_14,
							F@_15, F@_16, F@_17,
							F@_18, F@_19, F@_20,
							F@_21, F@_22, F@_23,
							F@_24, F@_25, F@_26,
							F@_27, TrUserData);
'd_field_google.protobuf.MessageOptions_protosizer'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18, F@_19,
						    F@_20, F@_21, F@_22, F@_23,
						    F@_24, F@_25, _, F@_27,
						    TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							NewFValue, F@_27,
							TrUserData).

'd_field_google.protobuf.MessageOptions_compare'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MessageOptions_compare'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     F@_2, F@_3, F@_4, F@_5,
						     F@_6, F@_7, F@_8, F@_9,
						     F@_10, F@_11, F@_12, F@_13,
						     F@_14, F@_15, F@_16, F@_17,
						     F@_18, F@_19, F@_20, F@_21,
						     F@_22, F@_23, F@_24, F@_25,
						     F@_26, F@_27, TrUserData);
'd_field_google.protobuf.MessageOptions_compare'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, _, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MessageOptions'(RestF,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, NewFValue,
							TrUserData).

'skip_varint_google.protobuf.MessageOptions'(<<1:1, _:7,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					     F@_5, F@_6, F@_7, F@_8, F@_9,
					     F@_10, F@_11, F@_12, F@_13, F@_14,
					     F@_15, F@_16, F@_17, F@_18, F@_19,
					     F@_20, F@_21, F@_22, F@_23, F@_24,
					     F@_25, F@_26, F@_27, TrUserData) ->
    'skip_varint_google.protobuf.MessageOptions'(Rest, Z1,
						 Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, F@_19, F@_20, F@_21,
						 F@_22, F@_23, F@_24, F@_25,
						 F@_26, F@_27, TrUserData);
'skip_varint_google.protobuf.MessageOptions'(<<0:1, _:7,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					     F@_5, F@_6, F@_7, F@_8, F@_9,
					     F@_10, F@_11, F@_12, F@_13, F@_14,
					     F@_15, F@_16, F@_17, F@_18, F@_19,
					     F@_20, F@_21, F@_22, F@_23, F@_24,
					     F@_25, F@_26, F@_27, TrUserData) ->
    'dfp_read_field_def_google.protobuf.MessageOptions'(Rest,
							Z1, Z2, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'skip_length_delimited_google.protobuf.MessageOptions'(<<1:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.MessageOptions'(Rest,
							   N + 7, X bsl N + Acc,
							   F@_1, F@_2, F@_3,
							   F@_4, F@_5, F@_6,
							   F@_7, F@_8, F@_9,
							   F@_10, F@_11, F@_12,
							   F@_13, F@_14, F@_15,
							   F@_16, F@_17, F@_18,
							   F@_19, F@_20, F@_21,
							   F@_22, F@_23, F@_24,
							   F@_25, F@_26, F@_27,
							   TrUserData);
'skip_length_delimited_google.protobuf.MessageOptions'(<<0:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, F@_19, F@_20,
						       F@_21, F@_22, F@_23,
						       F@_24, F@_25, F@_26,
						       F@_27, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.MessageOptions'(Rest2,
							0, 0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'skip_group_google.protobuf.MessageOptions'(Bin, FNum,
					    Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					    F@_6, F@_7, F@_8, F@_9, F@_10,
					    F@_11, F@_12, F@_13, F@_14, F@_15,
					    F@_16, F@_17, F@_18, F@_19, F@_20,
					    F@_21, F@_22, F@_23, F@_24, F@_25,
					    F@_26, F@_27, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.MessageOptions'(Rest,
							0, Z2, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'skip_32_google.protobuf.MessageOptions'(<<_:32,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					 F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
					 F@_12, F@_13, F@_14, F@_15, F@_16,
					 F@_17, F@_18, F@_19, F@_20, F@_21,
					 F@_22, F@_23, F@_24, F@_25, F@_26,
					 F@_27, TrUserData) ->
    'dfp_read_field_def_google.protobuf.MessageOptions'(Rest,
							Z1, Z2, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'skip_64_google.protobuf.MessageOptions'(<<_:64,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					 F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
					 F@_12, F@_13, F@_14, F@_15, F@_16,
					 F@_17, F@_18, F@_19, F@_20, F@_21,
					 F@_22, F@_23, F@_24, F@_25, F@_26,
					 F@_27, TrUserData) ->
    'dfp_read_field_def_google.protobuf.MessageOptions'(Rest,
							Z1, Z2, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18, F@_19,
							F@_20, F@_21, F@_22,
							F@_23, F@_24, F@_25,
							F@_26, F@_27,
							TrUserData).

'decode_msg_google.protobuf.FieldOptions'(Bin,
					  TrUserData) ->
    'dfp_read_field_def_google.protobuf.FieldOptions'(Bin,
						      0, 0,
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      id([], TrUserData),
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      id('$undef', TrUserData),
						      TrUserData).

'dfp_read_field_def_google.protobuf.FieldOptions'(<<8,
						    Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_ctype'(Rest, Z1,
						 Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<16,
						    Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_packed'(Rest, Z1,
						  Z2, F@_1, F@_2, F@_3, F@_4,
						  F@_5, F@_6, F@_7, F@_8, F@_9,
						  F@_10, F@_11, F@_12, F@_13,
						  F@_14, F@_15, F@_16, F@_17,
						  F@_18, TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<48,
						    Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_jstype'(Rest, Z1,
						  Z2, F@_1, F@_2, F@_3, F@_4,
						  F@_5, F@_6, F@_7, F@_8, F@_9,
						  F@_10, F@_11, F@_12, F@_13,
						  F@_14, F@_15, F@_16, F@_17,
						  F@_18, TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<40,
						    Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_lazy'(Rest, Z1,
						Z2, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, F@_12, F@_13,
						F@_14, F@_15, F@_16, F@_17,
						F@_18, TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<24,
						    Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_deprecated'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<80,
						    Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_weak'(Rest, Z1,
						Z2, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, F@_12, F@_13,
						F@_14, F@_15, F@_16, F@_17,
						F@_18, TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<186,
						    62, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_uninterpreted_option'(Rest,
								Z1, Z2, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								F@_8, F@_9,
								F@_10, F@_11,
								F@_12, F@_13,
								F@_14, F@_15,
								F@_16, F@_17,
								F@_18,
								TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<200,
						    222, 31, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_nullable'(Rest,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18,
						    TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<208,
						    222, 31, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_embed'(Rest, Z1,
						 Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<218,
						    222, 31, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_customtype'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<226,
						    222, 31, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_customname'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<234,
						    222, 31, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_jsontag'(Rest, Z1,
						   Z2, F@_1, F@_2, F@_3, F@_4,
						   F@_5, F@_6, F@_7, F@_8, F@_9,
						   F@_10, F@_11, F@_12, F@_13,
						   F@_14, F@_15, F@_16, F@_17,
						   F@_18, TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<242,
						    222, 31, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_moretags'(Rest,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18,
						    TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<250,
						    222, 31, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_casttype'(Rest,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    F@_8, F@_9, F@_10, F@_11,
						    F@_12, F@_13, F@_14, F@_15,
						    F@_16, F@_17, F@_18,
						    TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<130,
						    223, 31, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_castkey'(Rest, Z1,
						   Z2, F@_1, F@_2, F@_3, F@_4,
						   F@_5, F@_6, F@_7, F@_8, F@_9,
						   F@_10, F@_11, F@_12, F@_13,
						   F@_14, F@_15, F@_16, F@_17,
						   F@_18, TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<138,
						    223, 31, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_castvalue'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18,
						     TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<144,
						    223, 31, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_stdtime'(Rest, Z1,
						   Z2, F@_1, F@_2, F@_3, F@_4,
						   F@_5, F@_6, F@_7, F@_8, F@_9,
						   F@_10, F@_11, F@_12, F@_13,
						   F@_14, F@_15, F@_16, F@_17,
						   F@_18, TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<152,
						    223, 31, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'd_field_google.protobuf.FieldOptions_stdduration'(Rest,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       F@_8, F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, TrUserData);
'dfp_read_field_def_google.protobuf.FieldOptions'(<<>>,
						  0, 0, F@_1, F@_2, F@_3, F@_4,
						  F@_5, F@_6, R1, F@_8, F@_9,
						  F@_10, F@_11, F@_12, F@_13,
						  F@_14, F@_15, F@_16, F@_17,
						  F@_18, TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{ctype => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{packed => F@_2}
	 end,
    S4 = if F@_3 == '$undef' -> S3;
	    true -> S3#{jstype => F@_3}
	 end,
    S5 = if F@_4 == '$undef' -> S4;
	    true -> S4#{lazy => F@_4}
	 end,
    S6 = if F@_5 == '$undef' -> S5;
	    true -> S5#{deprecated => F@_5}
	 end,
    S7 = if F@_6 == '$undef' -> S6;
	    true -> S6#{weak => F@_6}
	 end,
    S8 = if R1 == '$undef' -> S7;
	    true ->
		S7#{uninterpreted_option =>
			lists_reverse(R1, TrUserData)}
	 end,
    S9 = if F@_8 == '$undef' -> S8;
	    true -> S8#{nullable => F@_8}
	 end,
    S10 = if F@_9 == '$undef' -> S9;
	     true -> S9#{embed => F@_9}
	  end,
    S11 = if F@_10 == '$undef' -> S10;
	     true -> S10#{customtype => F@_10}
	  end,
    S12 = if F@_11 == '$undef' -> S11;
	     true -> S11#{customname => F@_11}
	  end,
    S13 = if F@_12 == '$undef' -> S12;
	     true -> S12#{jsontag => F@_12}
	  end,
    S14 = if F@_13 == '$undef' -> S13;
	     true -> S13#{moretags => F@_13}
	  end,
    S15 = if F@_14 == '$undef' -> S14;
	     true -> S14#{casttype => F@_14}
	  end,
    S16 = if F@_15 == '$undef' -> S15;
	     true -> S15#{castkey => F@_15}
	  end,
    S17 = if F@_16 == '$undef' -> S16;
	     true -> S16#{castvalue => F@_16}
	  end,
    S18 = if F@_17 == '$undef' -> S17;
	     true -> S17#{stdtime => F@_17}
	  end,
    if F@_18 == '$undef' -> S18;
       true -> S18#{stdduration => F@_18}
    end;
'dfp_read_field_def_google.protobuf.FieldOptions'(Other,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    'dg_read_field_def_google.protobuf.FieldOptions'(Other,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18,
						     TrUserData).

'dg_read_field_def_google.protobuf.FieldOptions'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.FieldOptions'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     F@_2, F@_3, F@_4, F@_5,
						     F@_6, F@_7, F@_8, F@_9,
						     F@_10, F@_11, F@_12, F@_13,
						     F@_14, F@_15, F@_16, F@_17,
						     F@_18, TrUserData);
'dg_read_field_def_google.protobuf.FieldOptions'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_google.protobuf.FieldOptions_ctype'(Rest, 0, 0,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7, F@_8,
						       F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, TrUserData);
      16 ->
	  'd_field_google.protobuf.FieldOptions_packed'(Rest, 0,
							0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18,
							TrUserData);
      48 ->
	  'd_field_google.protobuf.FieldOptions_jstype'(Rest, 0,
							0, F@_1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							F@_8, F@_9, F@_10,
							F@_11, F@_12, F@_13,
							F@_14, F@_15, F@_16,
							F@_17, F@_18,
							TrUserData);
      40 ->
	  'd_field_google.protobuf.FieldOptions_lazy'(Rest, 0, 0,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7, F@_8,
						      F@_9, F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      TrUserData);
      24 ->
	  'd_field_google.protobuf.FieldOptions_deprecated'(Rest,
							    0, 0, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, TrUserData);
      80 ->
	  'd_field_google.protobuf.FieldOptions_weak'(Rest, 0, 0,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7, F@_8,
						      F@_9, F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      TrUserData);
      7994 ->
	  'd_field_google.protobuf.FieldOptions_uninterpreted_option'(Rest,
								      0, 0,
								      F@_1,
								      F@_2,
								      F@_3,
								      F@_4,
								      F@_5,
								      F@_6,
								      F@_7,
								      F@_8,
								      F@_9,
								      F@_10,
								      F@_11,
								      F@_12,
								      F@_13,
								      F@_14,
								      F@_15,
								      F@_16,
								      F@_17,
								      F@_18,
								      TrUserData);
      520008 ->
	  'd_field_google.protobuf.FieldOptions_nullable'(Rest, 0,
							  0, F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, F@_11, F@_12,
							  F@_13, F@_14, F@_15,
							  F@_16, F@_17, F@_18,
							  TrUserData);
      520016 ->
	  'd_field_google.protobuf.FieldOptions_embed'(Rest, 0, 0,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7, F@_8,
						       F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, TrUserData);
      520026 ->
	  'd_field_google.protobuf.FieldOptions_customtype'(Rest,
							    0, 0, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, TrUserData);
      520034 ->
	  'd_field_google.protobuf.FieldOptions_customname'(Rest,
							    0, 0, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, TrUserData);
      520042 ->
	  'd_field_google.protobuf.FieldOptions_jsontag'(Rest, 0,
							 0, F@_1, F@_2, F@_3,
							 F@_4, F@_5, F@_6, F@_7,
							 F@_8, F@_9, F@_10,
							 F@_11, F@_12, F@_13,
							 F@_14, F@_15, F@_16,
							 F@_17, F@_18,
							 TrUserData);
      520050 ->
	  'd_field_google.protobuf.FieldOptions_moretags'(Rest, 0,
							  0, F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, F@_11, F@_12,
							  F@_13, F@_14, F@_15,
							  F@_16, F@_17, F@_18,
							  TrUserData);
      520058 ->
	  'd_field_google.protobuf.FieldOptions_casttype'(Rest, 0,
							  0, F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, F@_8, F@_9,
							  F@_10, F@_11, F@_12,
							  F@_13, F@_14, F@_15,
							  F@_16, F@_17, F@_18,
							  TrUserData);
      520066 ->
	  'd_field_google.protobuf.FieldOptions_castkey'(Rest, 0,
							 0, F@_1, F@_2, F@_3,
							 F@_4, F@_5, F@_6, F@_7,
							 F@_8, F@_9, F@_10,
							 F@_11, F@_12, F@_13,
							 F@_14, F@_15, F@_16,
							 F@_17, F@_18,
							 TrUserData);
      520074 ->
	  'd_field_google.protobuf.FieldOptions_castvalue'(Rest,
							   0, 0, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7, F@_8,
							   F@_9, F@_10, F@_11,
							   F@_12, F@_13, F@_14,
							   F@_15, F@_16, F@_17,
							   F@_18, TrUserData);
      520080 ->
	  'd_field_google.protobuf.FieldOptions_stdtime'(Rest, 0,
							 0, F@_1, F@_2, F@_3,
							 F@_4, F@_5, F@_6, F@_7,
							 F@_8, F@_9, F@_10,
							 F@_11, F@_12, F@_13,
							 F@_14, F@_15, F@_16,
							 F@_17, F@_18,
							 TrUserData);
      520088 ->
	  'd_field_google.protobuf.FieldOptions_stdduration'(Rest,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7, F@_8,
							     F@_9, F@_10, F@_11,
							     F@_12, F@_13,
							     F@_14, F@_15,
							     F@_16, F@_17,
							     F@_18, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.FieldOptions'(Rest, 0, 0,
							   F@_1, F@_2, F@_3,
							   F@_4, F@_5, F@_6,
							   F@_7, F@_8, F@_9,
							   F@_10, F@_11, F@_12,
							   F@_13, F@_14, F@_15,
							   F@_16, F@_17, F@_18,
							   TrUserData);
	    1 ->
		'skip_64_google.protobuf.FieldOptions'(Rest, 0, 0, F@_1,
						       F@_2, F@_3, F@_4, F@_5,
						       F@_6, F@_7, F@_8, F@_9,
						       F@_10, F@_11, F@_12,
						       F@_13, F@_14, F@_15,
						       F@_16, F@_17, F@_18,
						       TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.FieldOptions'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     F@_4, F@_5,
								     F@_6, F@_7,
								     F@_8, F@_9,
								     F@_10,
								     F@_11,
								     F@_12,
								     F@_13,
								     F@_14,
								     F@_15,
								     F@_16,
								     F@_17,
								     F@_18,
								     TrUserData);
	    3 ->
		'skip_group_google.protobuf.FieldOptions'(Rest,
							  Key bsr 3, 0, F@_1,
							  F@_2, F@_3, F@_4,
							  F@_5, F@_6, F@_7,
							  F@_8, F@_9, F@_10,
							  F@_11, F@_12, F@_13,
							  F@_14, F@_15, F@_16,
							  F@_17, F@_18,
							  TrUserData);
	    5 ->
		'skip_32_google.protobuf.FieldOptions'(Rest, 0, 0, F@_1,
						       F@_2, F@_3, F@_4, F@_5,
						       F@_6, F@_7, F@_8, F@_9,
						       F@_10, F@_11, F@_12,
						       F@_13, F@_14, F@_15,
						       F@_16, F@_17, F@_18,
						       TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.FieldOptions'(<<>>,
						 0, 0, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, R1, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{ctype => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{packed => F@_2}
	 end,
    S4 = if F@_3 == '$undef' -> S3;
	    true -> S3#{jstype => F@_3}
	 end,
    S5 = if F@_4 == '$undef' -> S4;
	    true -> S4#{lazy => F@_4}
	 end,
    S6 = if F@_5 == '$undef' -> S5;
	    true -> S5#{deprecated => F@_5}
	 end,
    S7 = if F@_6 == '$undef' -> S6;
	    true -> S6#{weak => F@_6}
	 end,
    S8 = if R1 == '$undef' -> S7;
	    true ->
		S7#{uninterpreted_option =>
			lists_reverse(R1, TrUserData)}
	 end,
    S9 = if F@_8 == '$undef' -> S8;
	    true -> S8#{nullable => F@_8}
	 end,
    S10 = if F@_9 == '$undef' -> S9;
	     true -> S9#{embed => F@_9}
	  end,
    S11 = if F@_10 == '$undef' -> S10;
	     true -> S10#{customtype => F@_10}
	  end,
    S12 = if F@_11 == '$undef' -> S11;
	     true -> S11#{customname => F@_11}
	  end,
    S13 = if F@_12 == '$undef' -> S12;
	     true -> S12#{jsontag => F@_12}
	  end,
    S14 = if F@_13 == '$undef' -> S13;
	     true -> S13#{moretags => F@_13}
	  end,
    S15 = if F@_14 == '$undef' -> S14;
	     true -> S14#{casttype => F@_14}
	  end,
    S16 = if F@_15 == '$undef' -> S15;
	     true -> S15#{castkey => F@_15}
	  end,
    S17 = if F@_16 == '$undef' -> S16;
	     true -> S16#{castvalue => F@_16}
	  end,
    S18 = if F@_17 == '$undef' -> S17;
	     true -> S17#{stdtime => F@_17}
	  end,
    if F@_18 == '$undef' -> S18;
       true -> S18#{stdduration => F@_18}
    end.

'd_field_google.protobuf.FieldOptions_ctype'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, F@_3, F@_4,
					     F@_5, F@_6, F@_7, F@_8, F@_9,
					     F@_10, F@_11, F@_12, F@_13, F@_14,
					     F@_15, F@_16, F@_17, F@_18,
					     TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_ctype'(Rest,
						 N + 7, X bsl N + Acc, F@_1,
						 F@_2, F@_3, F@_4, F@_5, F@_6,
						 F@_7, F@_8, F@_9, F@_10, F@_11,
						 F@_12, F@_13, F@_14, F@_15,
						 F@_16, F@_17, F@_18,
						 TrUserData);
'd_field_google.protobuf.FieldOptions_ctype'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, _, F@_2, F@_3, F@_4, F@_5,
					     F@_6, F@_7, F@_8, F@_9, F@_10,
					     F@_11, F@_12, F@_13, F@_14, F@_15,
					     F@_16, F@_17, F@_18, TrUserData) ->
    {NewFValue, RestF} =
	{id('d_enum_google.protobuf.FieldOptions.CType'(begin
							  <<Res:32/signed-native>> =
							      <<(X bsl N +
								   Acc):32/unsigned-native>>,
							  id(Res, TrUserData)
							end),
	    TrUserData),
	 Rest},
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, NewFValue, F@_2,
						      F@_3, F@_4, F@_5, F@_6,
						      F@_7, F@_8, F@_9, F@_10,
						      F@_11, F@_12, F@_13,
						      F@_14, F@_15, F@_16,
						      F@_17, F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_packed'(<<1:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, F@_3, F@_4,
					      F@_5, F@_6, F@_7, F@_8, F@_9,
					      F@_10, F@_11, F@_12, F@_13, F@_14,
					      F@_15, F@_16, F@_17, F@_18,
					      TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_packed'(Rest,
						  N + 7, X bsl N + Acc, F@_1,
						  F@_2, F@_3, F@_4, F@_5, F@_6,
						  F@_7, F@_8, F@_9, F@_10,
						  F@_11, F@_12, F@_13, F@_14,
						  F@_15, F@_16, F@_17, F@_18,
						  TrUserData);
'd_field_google.protobuf.FieldOptions_packed'(<<0:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, _, F@_3, F@_4, F@_5,
					      F@_6, F@_7, F@_8, F@_9, F@_10,
					      F@_11, F@_12, F@_13, F@_14, F@_15,
					      F@_16, F@_17, F@_18,
					      TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, NewFValue,
						      F@_3, F@_4, F@_5, F@_6,
						      F@_7, F@_8, F@_9, F@_10,
						      F@_11, F@_12, F@_13,
						      F@_14, F@_15, F@_16,
						      F@_17, F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_jstype'(<<1:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, F@_3, F@_4,
					      F@_5, F@_6, F@_7, F@_8, F@_9,
					      F@_10, F@_11, F@_12, F@_13, F@_14,
					      F@_15, F@_16, F@_17, F@_18,
					      TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_jstype'(Rest,
						  N + 7, X bsl N + Acc, F@_1,
						  F@_2, F@_3, F@_4, F@_5, F@_6,
						  F@_7, F@_8, F@_9, F@_10,
						  F@_11, F@_12, F@_13, F@_14,
						  F@_15, F@_16, F@_17, F@_18,
						  TrUserData);
'd_field_google.protobuf.FieldOptions_jstype'(<<0:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, F@_2, _, F@_4, F@_5,
					      F@_6, F@_7, F@_8, F@_9, F@_10,
					      F@_11, F@_12, F@_13, F@_14, F@_15,
					      F@_16, F@_17, F@_18,
					      TrUserData) ->
    {NewFValue, RestF} =
	{id('d_enum_google.protobuf.FieldOptions.JSType'(begin
							   <<Res:32/signed-native>> =
							       <<(X bsl N +
								    Acc):32/unsigned-native>>,
							   id(Res, TrUserData)
							 end),
	    TrUserData),
	 Rest},
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2,
						      NewFValue, F@_4, F@_5,
						      F@_6, F@_7, F@_8, F@_9,
						      F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      TrUserData).

'd_field_google.protobuf.FieldOptions_lazy'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, F@_3, F@_4,
					    F@_5, F@_6, F@_7, F@_8, F@_9, F@_10,
					    F@_11, F@_12, F@_13, F@_14, F@_15,
					    F@_16, F@_17, F@_18, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_lazy'(Rest, N + 7,
						X bsl N + Acc, F@_1, F@_2, F@_3,
						F@_4, F@_5, F@_6, F@_7, F@_8,
						F@_9, F@_10, F@_11, F@_12,
						F@_13, F@_14, F@_15, F@_16,
						F@_17, F@_18, TrUserData);
'd_field_google.protobuf.FieldOptions_lazy'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, F@_3, _, F@_5,
					    F@_6, F@_7, F@_8, F@_9, F@_10,
					    F@_11, F@_12, F@_13, F@_14, F@_15,
					    F@_16, F@_17, F@_18, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      NewFValue, F@_5, F@_6,
						      F@_7, F@_8, F@_9, F@_10,
						      F@_11, F@_12, F@_13,
						      F@_14, F@_15, F@_16,
						      F@_17, F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_deprecated'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_deprecated'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7, F@_8,
						      F@_9, F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      TrUserData);
'd_field_google.protobuf.FieldOptions_deprecated'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, _, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, NewFValue, F@_6,
						      F@_7, F@_8, F@_9, F@_10,
						      F@_11, F@_12, F@_13,
						      F@_14, F@_15, F@_16,
						      F@_17, F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_weak'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, F@_3, F@_4,
					    F@_5, F@_6, F@_7, F@_8, F@_9, F@_10,
					    F@_11, F@_12, F@_13, F@_14, F@_15,
					    F@_16, F@_17, F@_18, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_weak'(Rest, N + 7,
						X bsl N + Acc, F@_1, F@_2, F@_3,
						F@_4, F@_5, F@_6, F@_7, F@_8,
						F@_9, F@_10, F@_11, F@_12,
						F@_13, F@_14, F@_15, F@_16,
						F@_17, F@_18, TrUserData);
'd_field_google.protobuf.FieldOptions_weak'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, F@_2, F@_3, F@_4,
					    F@_5, _, F@_7, F@_8, F@_9, F@_10,
					    F@_11, F@_12, F@_13, F@_14, F@_15,
					    F@_16, F@_17, F@_18, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, F@_5, NewFValue,
						      F@_7, F@_8, F@_9, F@_10,
						      F@_11, F@_12, F@_13,
						      F@_14, F@_15, F@_16,
						      F@_17, F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_uninterpreted_option'(<<1:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_uninterpreted_option'(Rest,
								N + 7,
								X bsl N + Acc,
								F@_1, F@_2,
								F@_3, F@_4,
								F@_5, F@_6,
								F@_7, F@_8,
								F@_9, F@_10,
								F@_11, F@_12,
								F@_13, F@_14,
								F@_15, F@_16,
								F@_17, F@_18,
								TrUserData);
'd_field_google.protobuf.FieldOptions_uninterpreted_option'(<<0:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, Prev, F@_8,
							    F@_9, F@_10, F@_11,
							    F@_12, F@_13, F@_14,
							    F@_15, F@_16, F@_17,
							    F@_18,
							    TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.UninterpretedOption'(Bs,
										TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6,
						      cons(NewFValue, Prev,
							   TrUserData),
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_nullable'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, F@_12, F@_13,
						F@_14, F@_15, F@_16, F@_17,
						F@_18, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_nullable'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    F@_2, F@_3, F@_4, F@_5,
						    F@_6, F@_7, F@_8, F@_9,
						    F@_10, F@_11, F@_12, F@_13,
						    F@_14, F@_15, F@_16, F@_17,
						    F@_18, TrUserData);
'd_field_google.protobuf.FieldOptions_nullable'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, _, F@_9,
						F@_10, F@_11, F@_12, F@_13,
						F@_14, F@_15, F@_16, F@_17,
						F@_18, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      NewFValue, F@_9, F@_10,
						      F@_11, F@_12, F@_13,
						      F@_14, F@_15, F@_16,
						      F@_17, F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_embed'(<<1:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, F@_3, F@_4,
					     F@_5, F@_6, F@_7, F@_8, F@_9,
					     F@_10, F@_11, F@_12, F@_13, F@_14,
					     F@_15, F@_16, F@_17, F@_18,
					     TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_embed'(Rest,
						 N + 7, X bsl N + Acc, F@_1,
						 F@_2, F@_3, F@_4, F@_5, F@_6,
						 F@_7, F@_8, F@_9, F@_10, F@_11,
						 F@_12, F@_13, F@_14, F@_15,
						 F@_16, F@_17, F@_18,
						 TrUserData);
'd_field_google.protobuf.FieldOptions_embed'(<<0:1, X:7,
					       Rest/binary>>,
					     N, Acc, F@_1, F@_2, F@_3, F@_4,
					     F@_5, F@_6, F@_7, F@_8, _, F@_10,
					     F@_11, F@_12, F@_13, F@_14, F@_15,
					     F@_16, F@_17, F@_18, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, NewFValue, F@_10,
						      F@_11, F@_12, F@_13,
						      F@_14, F@_15, F@_16,
						      F@_17, F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_customtype'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_customtype'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7, F@_8,
						      F@_9, F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      TrUserData);
'd_field_google.protobuf.FieldOptions_customtype'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, _, F@_11, F@_12, F@_13,
						  F@_14, F@_15, F@_16, F@_17,
						  F@_18, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, NewFValue,
						      F@_11, F@_12, F@_13,
						      F@_14, F@_15, F@_16,
						      F@_17, F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_customname'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, F@_11, F@_12,
						  F@_13, F@_14, F@_15, F@_16,
						  F@_17, F@_18, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_customname'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7, F@_8,
						      F@_9, F@_10, F@_11, F@_12,
						      F@_13, F@_14, F@_15,
						      F@_16, F@_17, F@_18,
						      TrUserData);
'd_field_google.protobuf.FieldOptions_customname'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7, F@_8,
						  F@_9, F@_10, _, F@_12, F@_13,
						  F@_14, F@_15, F@_16, F@_17,
						  F@_18, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10,
						      NewFValue, F@_12, F@_13,
						      F@_14, F@_15, F@_16,
						      F@_17, F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_jsontag'(<<1:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, F@_11, F@_12, F@_13,
					       F@_14, F@_15, F@_16, F@_17,
					       F@_18, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_jsontag'(Rest,
						   N + 7, X bsl N + Acc, F@_1,
						   F@_2, F@_3, F@_4, F@_5, F@_6,
						   F@_7, F@_8, F@_9, F@_10,
						   F@_11, F@_12, F@_13, F@_14,
						   F@_15, F@_16, F@_17, F@_18,
						   TrUserData);
'd_field_google.protobuf.FieldOptions_jsontag'(<<0:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, F@_11, _, F@_13, F@_14,
					       F@_15, F@_16, F@_17, F@_18,
					       TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      NewFValue, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_moretags'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, F@_12, F@_13,
						F@_14, F@_15, F@_16, F@_17,
						F@_18, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_moretags'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    F@_2, F@_3, F@_4, F@_5,
						    F@_6, F@_7, F@_8, F@_9,
						    F@_10, F@_11, F@_12, F@_13,
						    F@_14, F@_15, F@_16, F@_17,
						    F@_18, TrUserData);
'd_field_google.protobuf.FieldOptions_moretags'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, F@_12, _, F@_14,
						F@_15, F@_16, F@_17, F@_18,
						TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, NewFValue, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_casttype'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, F@_12, F@_13,
						F@_14, F@_15, F@_16, F@_17,
						F@_18, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_casttype'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    F@_2, F@_3, F@_4, F@_5,
						    F@_6, F@_7, F@_8, F@_9,
						    F@_10, F@_11, F@_12, F@_13,
						    F@_14, F@_15, F@_16, F@_17,
						    F@_18, TrUserData);
'd_field_google.protobuf.FieldOptions_casttype'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, F@_8, F@_9,
						F@_10, F@_11, F@_12, F@_13, _,
						F@_15, F@_16, F@_17, F@_18,
						TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, NewFValue,
						      F@_15, F@_16, F@_17,
						      F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_castkey'(<<1:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, F@_11, F@_12, F@_13,
					       F@_14, F@_15, F@_16, F@_17,
					       F@_18, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_castkey'(Rest,
						   N + 7, X bsl N + Acc, F@_1,
						   F@_2, F@_3, F@_4, F@_5, F@_6,
						   F@_7, F@_8, F@_9, F@_10,
						   F@_11, F@_12, F@_13, F@_14,
						   F@_15, F@_16, F@_17, F@_18,
						   TrUserData);
'd_field_google.protobuf.FieldOptions_castkey'(<<0:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, F@_11, F@_12, F@_13,
					       F@_14, _, F@_16, F@_17, F@_18,
					       TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      NewFValue, F@_16, F@_17,
						      F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_castvalue'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, F@_16, F@_17,
						 F@_18, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_castvalue'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     F@_2, F@_3, F@_4, F@_5,
						     F@_6, F@_7, F@_8, F@_9,
						     F@_10, F@_11, F@_12, F@_13,
						     F@_14, F@_15, F@_16, F@_17,
						     F@_18, TrUserData);
'd_field_google.protobuf.FieldOptions_castvalue'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, F@_8, F@_9,
						 F@_10, F@_11, F@_12, F@_13,
						 F@_14, F@_15, _, F@_17, F@_18,
						 TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, NewFValue, F@_17,
						      F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_stdtime'(<<1:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, F@_11, F@_12, F@_13,
					       F@_14, F@_15, F@_16, F@_17,
					       F@_18, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_stdtime'(Rest,
						   N + 7, X bsl N + Acc, F@_1,
						   F@_2, F@_3, F@_4, F@_5, F@_6,
						   F@_7, F@_8, F@_9, F@_10,
						   F@_11, F@_12, F@_13, F@_14,
						   F@_15, F@_16, F@_17, F@_18,
						   TrUserData);
'd_field_google.protobuf.FieldOptions_stdtime'(<<0:1,
						 X:7, Rest/binary>>,
					       N, Acc, F@_1, F@_2, F@_3, F@_4,
					       F@_5, F@_6, F@_7, F@_8, F@_9,
					       F@_10, F@_11, F@_12, F@_13,
					       F@_14, F@_15, F@_16, _, F@_18,
					       TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, NewFValue,
						      F@_18, TrUserData).

'd_field_google.protobuf.FieldOptions_stdduration'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, F@_18, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.FieldOptions_stdduration'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7, F@_8,
						       F@_9, F@_10, F@_11,
						       F@_12, F@_13, F@_14,
						       F@_15, F@_16, F@_17,
						       F@_18, TrUserData);
'd_field_google.protobuf.FieldOptions_stdduration'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7, F@_8,
						   F@_9, F@_10, F@_11, F@_12,
						   F@_13, F@_14, F@_15, F@_16,
						   F@_17, _, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.FieldOptions'(RestF,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      NewFValue, TrUserData).

'skip_varint_google.protobuf.FieldOptions'(<<1:1, _:7,
					     Rest/binary>>,
					   Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					   F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
					   F@_12, F@_13, F@_14, F@_15, F@_16,
					   F@_17, F@_18, TrUserData) ->
    'skip_varint_google.protobuf.FieldOptions'(Rest, Z1, Z2,
					       F@_1, F@_2, F@_3, F@_4, F@_5,
					       F@_6, F@_7, F@_8, F@_9, F@_10,
					       F@_11, F@_12, F@_13, F@_14,
					       F@_15, F@_16, F@_17, F@_18,
					       TrUserData);
'skip_varint_google.protobuf.FieldOptions'(<<0:1, _:7,
					     Rest/binary>>,
					   Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					   F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
					   F@_12, F@_13, F@_14, F@_15, F@_16,
					   F@_17, F@_18, TrUserData) ->
    'dfp_read_field_def_google.protobuf.FieldOptions'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, TrUserData).

'skip_length_delimited_google.protobuf.FieldOptions'(<<1:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18,
						     TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.FieldOptions'(Rest,
							 N + 7, X bsl N + Acc,
							 F@_1, F@_2, F@_3, F@_4,
							 F@_5, F@_6, F@_7, F@_8,
							 F@_9, F@_10, F@_11,
							 F@_12, F@_13, F@_14,
							 F@_15, F@_16, F@_17,
							 F@_18, TrUserData);
'skip_length_delimited_google.protobuf.FieldOptions'(<<0:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     F@_8, F@_9, F@_10, F@_11,
						     F@_12, F@_13, F@_14, F@_15,
						     F@_16, F@_17, F@_18,
						     TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.FieldOptions'(Rest2,
						      0, 0, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, TrUserData).

'skip_group_google.protobuf.FieldOptions'(Bin, FNum, Z2,
					  F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					  F@_7, F@_8, F@_9, F@_10, F@_11, F@_12,
					  F@_13, F@_14, F@_15, F@_16, F@_17,
					  F@_18, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.FieldOptions'(Rest,
						      0, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, TrUserData).

'skip_32_google.protobuf.FieldOptions'(<<_:32,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				       F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
				       F@_12, F@_13, F@_14, F@_15, F@_16, F@_17,
				       F@_18, TrUserData) ->
    'dfp_read_field_def_google.protobuf.FieldOptions'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, TrUserData).

'skip_64_google.protobuf.FieldOptions'(<<_:64,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				       F@_6, F@_7, F@_8, F@_9, F@_10, F@_11,
				       F@_12, F@_13, F@_14, F@_15, F@_16, F@_17,
				       F@_18, TrUserData) ->
    'dfp_read_field_def_google.protobuf.FieldOptions'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      F@_8, F@_9, F@_10, F@_11,
						      F@_12, F@_13, F@_14,
						      F@_15, F@_16, F@_17,
						      F@_18, TrUserData).

'decode_msg_google.protobuf.EnumOptions'(Bin,
					 TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumOptions'(Bin, 0,
						     0,
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id([], TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     id('$undef', TrUserData),
						     TrUserData).

'dfp_read_field_def_google.protobuf.EnumOptions'(<<16,
						   Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7,
						 TrUserData) ->
    'd_field_google.protobuf.EnumOptions_allow_alias'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      TrUserData);
'dfp_read_field_def_google.protobuf.EnumOptions'(<<24,
						   Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7,
						 TrUserData) ->
    'd_field_google.protobuf.EnumOptions_deprecated'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     TrUserData);
'dfp_read_field_def_google.protobuf.EnumOptions'(<<186,
						   62, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7,
						 TrUserData) ->
    'd_field_google.protobuf.EnumOptions_uninterpreted_option'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       TrUserData);
'dfp_read_field_def_google.protobuf.EnumOptions'(<<136,
						   163, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7,
						 TrUserData) ->
    'd_field_google.protobuf.EnumOptions_goproto_enum_prefix'(Rest,
							      Z1, Z2, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      TrUserData);
'dfp_read_field_def_google.protobuf.EnumOptions'(<<168,
						   164, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7,
						 TrUserData) ->
    'd_field_google.protobuf.EnumOptions_goproto_enum_stringer'(Rest,
								Z1, Z2, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								TrUserData);
'dfp_read_field_def_google.protobuf.EnumOptions'(<<176,
						   164, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7,
						 TrUserData) ->
    'd_field_google.protobuf.EnumOptions_enum_stringer'(Rest,
							Z1, Z2, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, TrUserData);
'dfp_read_field_def_google.protobuf.EnumOptions'(<<186,
						   164, 30, Rest/binary>>,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7,
						 TrUserData) ->
    'd_field_google.protobuf.EnumOptions_enum_customname'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7,
							  TrUserData);
'dfp_read_field_def_google.protobuf.EnumOptions'(<<>>,
						 0, 0, F@_1, F@_2, R1, F@_4,
						 F@_5, F@_6, F@_7,
						 TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{allow_alias => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{deprecated => F@_2}
	 end,
    S4 = if R1 == '$undef' -> S3;
	    true ->
		S3#{uninterpreted_option =>
			lists_reverse(R1, TrUserData)}
	 end,
    S5 = if F@_4 == '$undef' -> S4;
	    true -> S4#{goproto_enum_prefix => F@_4}
	 end,
    S6 = if F@_5 == '$undef' -> S5;
	    true -> S5#{goproto_enum_stringer => F@_5}
	 end,
    S7 = if F@_6 == '$undef' -> S6;
	    true -> S6#{enum_stringer => F@_6}
	 end,
    if F@_7 == '$undef' -> S7;
       true -> S7#{enum_customname => F@_7}
    end;
'dfp_read_field_def_google.protobuf.EnumOptions'(Other,
						 Z1, Z2, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7,
						 TrUserData) ->
    'dg_read_field_def_google.protobuf.EnumOptions'(Other,
						    Z1, Z2, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    TrUserData).

'dg_read_field_def_google.protobuf.EnumOptions'(<<1:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.EnumOptions'(Rest,
						    N + 7, X bsl N + Acc, F@_1,
						    F@_2, F@_3, F@_4, F@_5,
						    F@_6, F@_7, TrUserData);
'dg_read_field_def_google.protobuf.EnumOptions'(<<0:1,
						  X:7, Rest/binary>>,
						N, Acc, F@_1, F@_2, F@_3, F@_4,
						F@_5, F@_6, F@_7, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      16 ->
	  'd_field_google.protobuf.EnumOptions_allow_alias'(Rest,
							    0, 0, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7,
							    TrUserData);
      24 ->
	  'd_field_google.protobuf.EnumOptions_deprecated'(Rest,
							   0, 0, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7,
							   TrUserData);
      7994 ->
	  'd_field_google.protobuf.EnumOptions_uninterpreted_option'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     F@_4, F@_5,
								     F@_6, F@_7,
								     TrUserData);
      496008 ->
	  'd_field_google.protobuf.EnumOptions_goproto_enum_prefix'(Rest,
								    0, 0, F@_1,
								    F@_2, F@_3,
								    F@_4, F@_5,
								    F@_6, F@_7,
								    TrUserData);
      496168 ->
	  'd_field_google.protobuf.EnumOptions_goproto_enum_stringer'(Rest,
								      0, 0,
								      F@_1,
								      F@_2,
								      F@_3,
								      F@_4,
								      F@_5,
								      F@_6,
								      F@_7,
								      TrUserData);
      496176 ->
	  'd_field_google.protobuf.EnumOptions_enum_stringer'(Rest,
							      0, 0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7,
							      TrUserData);
      496186 ->
	  'd_field_google.protobuf.EnumOptions_enum_customname'(Rest,
								0, 0, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								F@_6, F@_7,
								TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.EnumOptions'(Rest, 0, 0,
							  F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, TrUserData);
	    1 ->
		'skip_64_google.protobuf.EnumOptions'(Rest, 0, 0, F@_1,
						      F@_2, F@_3, F@_4, F@_5,
						      F@_6, F@_7, TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.EnumOptions'(Rest,
								    0, 0, F@_1,
								    F@_2, F@_3,
								    F@_4, F@_5,
								    F@_6, F@_7,
								    TrUserData);
	    3 ->
		'skip_group_google.protobuf.EnumOptions'(Rest,
							 Key bsr 3, 0, F@_1,
							 F@_2, F@_3, F@_4, F@_5,
							 F@_6, F@_7,
							 TrUserData);
	    5 ->
		'skip_32_google.protobuf.EnumOptions'(Rest, 0, 0, F@_1,
						      F@_2, F@_3, F@_4, F@_5,
						      F@_6, F@_7, TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.EnumOptions'(<<>>, 0,
						0, F@_1, F@_2, R1, F@_4, F@_5,
						F@_6, F@_7, TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{allow_alias => F@_1}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{deprecated => F@_2}
	 end,
    S4 = if R1 == '$undef' -> S3;
	    true ->
		S3#{uninterpreted_option =>
			lists_reverse(R1, TrUserData)}
	 end,
    S5 = if F@_4 == '$undef' -> S4;
	    true -> S4#{goproto_enum_prefix => F@_4}
	 end,
    S6 = if F@_5 == '$undef' -> S5;
	    true -> S5#{goproto_enum_stringer => F@_5}
	 end,
    S7 = if F@_6 == '$undef' -> S6;
	    true -> S6#{enum_stringer => F@_6}
	 end,
    if F@_7 == '$undef' -> S7;
       true -> S7#{enum_customname => F@_7}
    end.

'd_field_google.protobuf.EnumOptions_allow_alias'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7,
						  TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumOptions_allow_alias'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, F@_3, F@_4,
						      F@_5, F@_6, F@_7,
						      TrUserData);
'd_field_google.protobuf.EnumOptions_allow_alias'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, _, F@_2, F@_3, F@_4,
						  F@_5, F@_6, F@_7,
						  TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.EnumOptions'(RestF,
						     0, 0, NewFValue, F@_2,
						     F@_3, F@_4, F@_5, F@_6,
						     F@_7, TrUserData).

'd_field_google.protobuf.EnumOptions_deprecated'(<<1:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, F@_2, F@_3, F@_4,
						 F@_5, F@_6, F@_7, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumOptions_deprecated'(Rest,
						     N + 7, X bsl N + Acc, F@_1,
						     F@_2, F@_3, F@_4, F@_5,
						     F@_6, F@_7, TrUserData);
'd_field_google.protobuf.EnumOptions_deprecated'(<<0:1,
						   X:7, Rest/binary>>,
						 N, Acc, F@_1, _, F@_3, F@_4,
						 F@_5, F@_6, F@_7,
						 TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.EnumOptions'(RestF,
						     0, 0, F@_1, NewFValue,
						     F@_3, F@_4, F@_5, F@_6,
						     F@_7, TrUserData).

'd_field_google.protobuf.EnumOptions_uninterpreted_option'(<<1:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7,
							   TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumOptions_uninterpreted_option'(Rest,
							       N + 7,
							       X bsl N + Acc,
							       F@_1, F@_2, F@_3,
							       F@_4, F@_5, F@_6,
							       F@_7,
							       TrUserData);
'd_field_google.protobuf.EnumOptions_uninterpreted_option'(<<0:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   Prev, F@_4, F@_5,
							   F@_6, F@_7,
							   TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.UninterpretedOption'(Bs,
										TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.EnumOptions'(RestF,
						     0, 0, F@_1, F@_2,
						     cons(NewFValue, Prev,
							  TrUserData),
						     F@_4, F@_5, F@_6, F@_7,
						     TrUserData).

'd_field_google.protobuf.EnumOptions_goproto_enum_prefix'(<<1:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  F@_6, F@_7,
							  TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumOptions_goproto_enum_prefix'(Rest,
							      N + 7,
							      X bsl N + Acc,
							      F@_1, F@_2, F@_3,
							      F@_4, F@_5, F@_6,
							      F@_7, TrUserData);
'd_field_google.protobuf.EnumOptions_goproto_enum_prefix'(<<0:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1, F@_2,
							  F@_3, _, F@_5, F@_6,
							  F@_7, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.EnumOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     NewFValue, F@_5, F@_6,
						     F@_7, TrUserData).

'd_field_google.protobuf.EnumOptions_goproto_enum_stringer'(<<1:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7,
							    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumOptions_goproto_enum_stringer'(Rest,
								N + 7,
								X bsl N + Acc,
								F@_1, F@_2,
								F@_3, F@_4,
								F@_5, F@_6,
								F@_7,
								TrUserData);
'd_field_google.protobuf.EnumOptions_goproto_enum_stringer'(<<0:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, _, F@_6,
							    F@_7, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.EnumOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, NewFValue, F@_6,
						     F@_7, TrUserData).

'd_field_google.protobuf.EnumOptions_enum_stringer'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumOptions_enum_stringer'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, F@_2, F@_3, F@_4,
							F@_5, F@_6, F@_7,
							TrUserData);
'd_field_google.protobuf.EnumOptions_enum_stringer'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, _, F@_7,
						    TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.EnumOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, NewFValue,
						     F@_7, TrUserData).

'd_field_google.protobuf.EnumOptions_enum_customname'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumOptions_enum_customname'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, F@_2, F@_3,
							  F@_4, F@_5, F@_6,
							  F@_7, TrUserData);
'd_field_google.protobuf.EnumOptions_enum_customname'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, _,
						      TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.EnumOptions'(RestF,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6,
						     NewFValue, TrUserData).

'skip_varint_google.protobuf.EnumOptions'(<<1:1, _:7,
					    Rest/binary>>,
					  Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					  F@_6, F@_7, TrUserData) ->
    'skip_varint_google.protobuf.EnumOptions'(Rest, Z1, Z2,
					      F@_1, F@_2, F@_3, F@_4, F@_5,
					      F@_6, F@_7, TrUserData);
'skip_varint_google.protobuf.EnumOptions'(<<0:1, _:7,
					    Rest/binary>>,
					  Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
					  F@_6, F@_7, TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumOptions'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     TrUserData).

'skip_length_delimited_google.protobuf.EnumOptions'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.EnumOptions'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, F@_2, F@_3, F@_4,
							F@_5, F@_6, F@_7,
							TrUserData);
'skip_length_delimited_google.protobuf.EnumOptions'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2, F@_3,
						    F@_4, F@_5, F@_6, F@_7,
						    TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.EnumOptions'(Rest2,
						     0, 0, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     TrUserData).

'skip_group_google.protobuf.EnumOptions'(Bin, FNum, Z2,
					 F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					 F@_7, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.EnumOptions'(Rest,
						     0, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     TrUserData).

'skip_32_google.protobuf.EnumOptions'(<<_:32,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				      F@_6, F@_7, TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumOptions'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     TrUserData).

'skip_64_google.protobuf.EnumOptions'(<<_:64,
					Rest/binary>>,
				      Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5,
				      F@_6, F@_7, TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumOptions'(Rest,
						     Z1, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, F@_6, F@_7,
						     TrUserData).

'decode_msg_google.protobuf.EnumValueOptions'(Bin,
					      TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumValueOptions'(Bin,
							  0, 0,
							  id('$undef',
							     TrUserData),
							  id([], TrUserData),
							  id('$undef',
							     TrUserData),
							  TrUserData).

'dfp_read_field_def_google.protobuf.EnumValueOptions'(<<8,
							Rest/binary>>,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      TrUserData) ->
    'd_field_google.protobuf.EnumValueOptions_deprecated'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, TrUserData);
'dfp_read_field_def_google.protobuf.EnumValueOptions'(<<186,
							62, Rest/binary>>,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      TrUserData) ->
    'd_field_google.protobuf.EnumValueOptions_uninterpreted_option'(Rest,
								    Z1, Z2,
								    F@_1, F@_2,
								    F@_3,
								    TrUserData);
'dfp_read_field_def_google.protobuf.EnumValueOptions'(<<138,
							157, 32, Rest/binary>>,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      TrUserData) ->
    'd_field_google.protobuf.EnumValueOptions_enumvalue_customname'(Rest,
								    Z1, Z2,
								    F@_1, F@_2,
								    F@_3,
								    TrUserData);
'dfp_read_field_def_google.protobuf.EnumValueOptions'(<<>>,
						      0, 0, F@_1, R1, F@_3,
						      TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{deprecated => F@_1}
	 end,
    S3 = if R1 == '$undef' -> S2;
	    true ->
		S2#{uninterpreted_option =>
			lists_reverse(R1, TrUserData)}
	 end,
    if F@_3 == '$undef' -> S3;
       true -> S3#{enumvalue_customname => F@_3}
    end;
'dfp_read_field_def_google.protobuf.EnumValueOptions'(Other,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      TrUserData) ->
    'dg_read_field_def_google.protobuf.EnumValueOptions'(Other,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, TrUserData).

'dg_read_field_def_google.protobuf.EnumValueOptions'(<<1:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.EnumValueOptions'(Rest,
							 N + 7, X bsl N + Acc,
							 F@_1, F@_2, F@_3,
							 TrUserData);
'dg_read_field_def_google.protobuf.EnumValueOptions'(<<0:1,
						       X:7, Rest/binary>>,
						     N, Acc, F@_1, F@_2, F@_3,
						     TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_google.protobuf.EnumValueOptions_deprecated'(Rest,
								0, 0, F@_1,
								F@_2, F@_3,
								TrUserData);
      7994 ->
	  'd_field_google.protobuf.EnumValueOptions_uninterpreted_option'(Rest,
									  0, 0,
									  F@_1,
									  F@_2,
									  F@_3,
									  TrUserData);
      528010 ->
	  'd_field_google.protobuf.EnumValueOptions_enumvalue_customname'(Rest,
									  0, 0,
									  F@_1,
									  F@_2,
									  F@_3,
									  TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.EnumValueOptions'(Rest, 0,
							       0, F@_1, F@_2,
							       F@_3,
							       TrUserData);
	    1 ->
		'skip_64_google.protobuf.EnumValueOptions'(Rest, 0, 0,
							   F@_1, F@_2, F@_3,
							   TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.EnumValueOptions'(Rest,
									 0, 0,
									 F@_1,
									 F@_2,
									 F@_3,
									 TrUserData);
	    3 ->
		'skip_group_google.protobuf.EnumValueOptions'(Rest,
							      Key bsr 3, 0,
							      F@_1, F@_2, F@_3,
							      TrUserData);
	    5 ->
		'skip_32_google.protobuf.EnumValueOptions'(Rest, 0, 0,
							   F@_1, F@_2, F@_3,
							   TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.EnumValueOptions'(<<>>,
						     0, 0, F@_1, R1, F@_3,
						     TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{deprecated => F@_1}
	 end,
    S3 = if R1 == '$undef' -> S2;
	    true ->
		S2#{uninterpreted_option =>
			lists_reverse(R1, TrUserData)}
	 end,
    if F@_3 == '$undef' -> S3;
       true -> S3#{enumvalue_customname => F@_3}
    end.

'd_field_google.protobuf.EnumValueOptions_deprecated'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2, F@_3,
						      TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumValueOptions_deprecated'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, F@_2, F@_3,
							  TrUserData);
'd_field_google.protobuf.EnumValueOptions_deprecated'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, _, F@_2, F@_3,
						      TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.EnumValueOptions'(RestF,
							  0, 0, NewFValue, F@_2,
							  F@_3, TrUserData).

'd_field_google.protobuf.EnumValueOptions_uninterpreted_option'(<<1:1,
								  X:7,
								  Rest/binary>>,
								N, Acc, F@_1,
								F@_2, F@_3,
								TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumValueOptions_uninterpreted_option'(Rest,
								    N + 7,
								    X bsl N +
								      Acc,
								    F@_1, F@_2,
								    F@_3,
								    TrUserData);
'd_field_google.protobuf.EnumValueOptions_uninterpreted_option'(<<0:1,
								  X:7,
								  Rest/binary>>,
								N, Acc, F@_1,
								Prev, F@_3,
								TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.UninterpretedOption'(Bs,
										TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.EnumValueOptions'(RestF,
							  0, 0, F@_1,
							  cons(NewFValue, Prev,
							       TrUserData),
							  F@_3, TrUserData).

'd_field_google.protobuf.EnumValueOptions_enumvalue_customname'(<<1:1,
								  X:7,
								  Rest/binary>>,
								N, Acc, F@_1,
								F@_2, F@_3,
								TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.EnumValueOptions_enumvalue_customname'(Rest,
								    N + 7,
								    X bsl N +
								      Acc,
								    F@_1, F@_2,
								    F@_3,
								    TrUserData);
'd_field_google.protobuf.EnumValueOptions_enumvalue_customname'(<<0:1,
								  X:7,
								  Rest/binary>>,
								N, Acc, F@_1,
								F@_2, _,
								TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.EnumValueOptions'(RestF,
							  0, 0, F@_1, F@_2,
							  NewFValue,
							  TrUserData).

'skip_varint_google.protobuf.EnumValueOptions'(<<1:1,
						 _:7, Rest/binary>>,
					       Z1, Z2, F@_1, F@_2, F@_3,
					       TrUserData) ->
    'skip_varint_google.protobuf.EnumValueOptions'(Rest, Z1,
						   Z2, F@_1, F@_2, F@_3,
						   TrUserData);
'skip_varint_google.protobuf.EnumValueOptions'(<<0:1,
						 _:7, Rest/binary>>,
					       Z1, Z2, F@_1, F@_2, F@_3,
					       TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumValueOptions'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, TrUserData).

'skip_length_delimited_google.protobuf.EnumValueOptions'(<<1:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.EnumValueOptions'(Rest,
							     N + 7,
							     X bsl N + Acc,
							     F@_1, F@_2, F@_3,
							     TrUserData);
'skip_length_delimited_google.protobuf.EnumValueOptions'(<<0:1,
							   X:7, Rest/binary>>,
							 N, Acc, F@_1, F@_2,
							 F@_3, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.EnumValueOptions'(Rest2,
							  0, 0, F@_1, F@_2,
							  F@_3, TrUserData).

'skip_group_google.protobuf.EnumValueOptions'(Bin, FNum,
					      Z2, F@_1, F@_2, F@_3,
					      TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.EnumValueOptions'(Rest,
							  0, Z2, F@_1, F@_2,
							  F@_3, TrUserData).

'skip_32_google.protobuf.EnumValueOptions'(<<_:32,
					     Rest/binary>>,
					   Z1, Z2, F@_1, F@_2, F@_3,
					   TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumValueOptions'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, TrUserData).

'skip_64_google.protobuf.EnumValueOptions'(<<_:64,
					     Rest/binary>>,
					   Z1, Z2, F@_1, F@_2, F@_3,
					   TrUserData) ->
    'dfp_read_field_def_google.protobuf.EnumValueOptions'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, TrUserData).

'decode_msg_google.protobuf.ServiceOptions'(Bin,
					    TrUserData) ->
    'dfp_read_field_def_google.protobuf.ServiceOptions'(Bin,
							0, 0,
							id('$undef',
							   TrUserData),
							id([], TrUserData),
							TrUserData).

'dfp_read_field_def_google.protobuf.ServiceOptions'(<<136,
						      2, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2,
						    TrUserData) ->
    'd_field_google.protobuf.ServiceOptions_deprecated'(Rest,
							Z1, Z2, F@_1, F@_2,
							TrUserData);
'dfp_read_field_def_google.protobuf.ServiceOptions'(<<186,
						      62, Rest/binary>>,
						    Z1, Z2, F@_1, F@_2,
						    TrUserData) ->
    'd_field_google.protobuf.ServiceOptions_uninterpreted_option'(Rest,
								  Z1, Z2, F@_1,
								  F@_2,
								  TrUserData);
'dfp_read_field_def_google.protobuf.ServiceOptions'(<<>>,
						    0, 0, F@_1, R1,
						    TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{deprecated => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true ->
	   S2#{uninterpreted_option =>
		   lists_reverse(R1, TrUserData)}
    end;
'dfp_read_field_def_google.protobuf.ServiceOptions'(Other,
						    Z1, Z2, F@_1, F@_2,
						    TrUserData) ->
    'dg_read_field_def_google.protobuf.ServiceOptions'(Other,
						       Z1, Z2, F@_1, F@_2,
						       TrUserData).

'dg_read_field_def_google.protobuf.ServiceOptions'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2,
						   TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.ServiceOptions'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, TrUserData);
'dg_read_field_def_google.protobuf.ServiceOptions'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2,
						   TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      264 ->
	  'd_field_google.protobuf.ServiceOptions_deprecated'(Rest,
							      0, 0, F@_1, F@_2,
							      TrUserData);
      7994 ->
	  'd_field_google.protobuf.ServiceOptions_uninterpreted_option'(Rest,
									0, 0,
									F@_1,
									F@_2,
									TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.ServiceOptions'(Rest, 0, 0,
							     F@_1, F@_2,
							     TrUserData);
	    1 ->
		'skip_64_google.protobuf.ServiceOptions'(Rest, 0, 0,
							 F@_1, F@_2,
							 TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.ServiceOptions'(Rest,
								       0, 0,
								       F@_1,
								       F@_2,
								       TrUserData);
	    3 ->
		'skip_group_google.protobuf.ServiceOptions'(Rest,
							    Key bsr 3, 0, F@_1,
							    F@_2, TrUserData);
	    5 ->
		'skip_32_google.protobuf.ServiceOptions'(Rest, 0, 0,
							 F@_1, F@_2, TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.ServiceOptions'(<<>>,
						   0, 0, F@_1, R1,
						   TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{deprecated => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true ->
	   S2#{uninterpreted_option =>
		   lists_reverse(R1, TrUserData)}
    end.

'd_field_google.protobuf.ServiceOptions_deprecated'(<<1:1,
						      X:7, Rest/binary>>,
						    N, Acc, F@_1, F@_2,
						    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.ServiceOptions_deprecated'(Rest,
							N + 7, X bsl N + Acc,
							F@_1, F@_2, TrUserData);
'd_field_google.protobuf.ServiceOptions_deprecated'(<<0:1,
						      X:7, Rest/binary>>,
						    N, Acc, _, F@_2,
						    TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.ServiceOptions'(RestF,
							0, 0, NewFValue, F@_2,
							TrUserData).

'd_field_google.protobuf.ServiceOptions_uninterpreted_option'(<<1:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      F@_2, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.ServiceOptions_uninterpreted_option'(Rest,
								  N + 7,
								  X bsl N + Acc,
								  F@_1, F@_2,
								  TrUserData);
'd_field_google.protobuf.ServiceOptions_uninterpreted_option'(<<0:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      Prev,
							      TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.UninterpretedOption'(Bs,
										TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.ServiceOptions'(RestF,
							0, 0, F@_1,
							cons(NewFValue, Prev,
							     TrUserData),
							TrUserData).

'skip_varint_google.protobuf.ServiceOptions'(<<1:1, _:7,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_google.protobuf.ServiceOptions'(Rest, Z1,
						 Z2, F@_1, F@_2, TrUserData);
'skip_varint_google.protobuf.ServiceOptions'(<<0:1, _:7,
					       Rest/binary>>,
					     Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_google.protobuf.ServiceOptions'(Rest,
							Z1, Z2, F@_1, F@_2,
							TrUserData).

'skip_length_delimited_google.protobuf.ServiceOptions'(<<1:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2,
						       TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.ServiceOptions'(Rest,
							   N + 7, X bsl N + Acc,
							   F@_1, F@_2,
							   TrUserData);
'skip_length_delimited_google.protobuf.ServiceOptions'(<<0:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2,
						       TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.ServiceOptions'(Rest2,
							0, 0, F@_1, F@_2,
							TrUserData).

'skip_group_google.protobuf.ServiceOptions'(Bin, FNum,
					    Z2, F@_1, F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.ServiceOptions'(Rest,
							0, Z2, F@_1, F@_2,
							TrUserData).

'skip_32_google.protobuf.ServiceOptions'(<<_:32,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_google.protobuf.ServiceOptions'(Rest,
							Z1, Z2, F@_1, F@_2,
							TrUserData).

'skip_64_google.protobuf.ServiceOptions'(<<_:64,
					   Rest/binary>>,
					 Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_google.protobuf.ServiceOptions'(Rest,
							Z1, Z2, F@_1, F@_2,
							TrUserData).

'decode_msg_google.protobuf.MethodOptions'(Bin,
					   TrUserData) ->
    'dfp_read_field_def_google.protobuf.MethodOptions'(Bin,
						       0, 0,
						       id('$undef', TrUserData),
						       id([], TrUserData),
						       TrUserData).

'dfp_read_field_def_google.protobuf.MethodOptions'(<<136,
						     2, Rest/binary>>,
						   Z1, Z2, F@_1, F@_2,
						   TrUserData) ->
    'd_field_google.protobuf.MethodOptions_deprecated'(Rest,
						       Z1, Z2, F@_1, F@_2,
						       TrUserData);
'dfp_read_field_def_google.protobuf.MethodOptions'(<<186,
						     62, Rest/binary>>,
						   Z1, Z2, F@_1, F@_2,
						   TrUserData) ->
    'd_field_google.protobuf.MethodOptions_uninterpreted_option'(Rest,
								 Z1, Z2, F@_1,
								 F@_2,
								 TrUserData);
'dfp_read_field_def_google.protobuf.MethodOptions'(<<>>,
						   0, 0, F@_1, R1,
						   TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{deprecated => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true ->
	   S2#{uninterpreted_option =>
		   lists_reverse(R1, TrUserData)}
    end;
'dfp_read_field_def_google.protobuf.MethodOptions'(Other,
						   Z1, Z2, F@_1, F@_2,
						   TrUserData) ->
    'dg_read_field_def_google.protobuf.MethodOptions'(Other,
						      Z1, Z2, F@_1, F@_2,
						      TrUserData).

'dg_read_field_def_google.protobuf.MethodOptions'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2,
						  TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.MethodOptions'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, F@_2, TrUserData);
'dg_read_field_def_google.protobuf.MethodOptions'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, F@_2,
						  TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      264 ->
	  'd_field_google.protobuf.MethodOptions_deprecated'(Rest,
							     0, 0, F@_1, F@_2,
							     TrUserData);
      7994 ->
	  'd_field_google.protobuf.MethodOptions_uninterpreted_option'(Rest,
								       0, 0,
								       F@_1,
								       F@_2,
								       TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.MethodOptions'(Rest, 0, 0,
							    F@_1, F@_2,
							    TrUserData);
	    1 ->
		'skip_64_google.protobuf.MethodOptions'(Rest, 0, 0,
							F@_1, F@_2, TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.MethodOptions'(Rest,
								      0, 0,
								      F@_1,
								      F@_2,
								      TrUserData);
	    3 ->
		'skip_group_google.protobuf.MethodOptions'(Rest,
							   Key bsr 3, 0, F@_1,
							   F@_2, TrUserData);
	    5 ->
		'skip_32_google.protobuf.MethodOptions'(Rest, 0, 0,
							F@_1, F@_2, TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.MethodOptions'(<<>>,
						  0, 0, F@_1, R1, TrUserData) ->
    S1 = #{},
    S2 = if F@_1 == '$undef' -> S1;
	    true -> S1#{deprecated => F@_1}
	 end,
    if R1 == '$undef' -> S2;
       true ->
	   S2#{uninterpreted_option =>
		   lists_reverse(R1, TrUserData)}
    end.

'd_field_google.protobuf.MethodOptions_deprecated'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2,
						   TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MethodOptions_deprecated'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, TrUserData);
'd_field_google.protobuf.MethodOptions_deprecated'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, _, F@_2,
						   TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.MethodOptions'(RestF,
						       0, 0, NewFValue, F@_2,
						       TrUserData).

'd_field_google.protobuf.MethodOptions_uninterpreted_option'(<<1:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.MethodOptions_uninterpreted_option'(Rest,
								 N + 7,
								 X bsl N + Acc,
								 F@_1, F@_2,
								 TrUserData);
'd_field_google.protobuf.MethodOptions_uninterpreted_option'(<<0:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, Prev,
							     TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.UninterpretedOption'(Bs,
										TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.MethodOptions'(RestF,
						       0, 0, F@_1,
						       cons(NewFValue, Prev,
							    TrUserData),
						       TrUserData).

'skip_varint_google.protobuf.MethodOptions'(<<1:1, _:7,
					      Rest/binary>>,
					    Z1, Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_google.protobuf.MethodOptions'(Rest, Z1,
						Z2, F@_1, F@_2, TrUserData);
'skip_varint_google.protobuf.MethodOptions'(<<0:1, _:7,
					      Rest/binary>>,
					    Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_google.protobuf.MethodOptions'(Rest,
						       Z1, Z2, F@_1, F@_2,
						       TrUserData).

'skip_length_delimited_google.protobuf.MethodOptions'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2,
						      TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.MethodOptions'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, F@_2,
							  TrUserData);
'skip_length_delimited_google.protobuf.MethodOptions'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, F@_2,
						      TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.MethodOptions'(Rest2,
						       0, 0, F@_1, F@_2,
						       TrUserData).

'skip_group_google.protobuf.MethodOptions'(Bin, FNum,
					   Z2, F@_1, F@_2, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.MethodOptions'(Rest,
						       0, Z2, F@_1, F@_2,
						       TrUserData).

'skip_32_google.protobuf.MethodOptions'(<<_:32,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_google.protobuf.MethodOptions'(Rest,
						       Z1, Z2, F@_1, F@_2,
						       TrUserData).

'skip_64_google.protobuf.MethodOptions'(<<_:64,
					  Rest/binary>>,
					Z1, Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_google.protobuf.MethodOptions'(Rest,
						       Z1, Z2, F@_1, F@_2,
						       TrUserData).

'decode_msg_google.protobuf.UninterpretedOption.NamePart'(Bin,
							  TrUserData) ->
    'dfp_read_field_def_google.protobuf.UninterpretedOption.NamePart'(Bin,
								      0, 0,
								      id('$undef',
									 TrUserData),
								      id('$undef',
									 TrUserData),
								      TrUserData).

'dfp_read_field_def_google.protobuf.UninterpretedOption.NamePart'(<<10,
								    Rest/binary>>,
								  Z1, Z2, F@_1,
								  F@_2,
								  TrUserData) ->
    'd_field_google.protobuf.UninterpretedOption.NamePart_name_part'(Rest,
								     Z1, Z2,
								     F@_1, F@_2,
								     TrUserData);
'dfp_read_field_def_google.protobuf.UninterpretedOption.NamePart'(<<16,
								    Rest/binary>>,
								  Z1, Z2, F@_1,
								  F@_2,
								  TrUserData) ->
    'd_field_google.protobuf.UninterpretedOption.NamePart_is_extension'(Rest,
									Z1, Z2,
									F@_1,
									F@_2,
									TrUserData);
'dfp_read_field_def_google.protobuf.UninterpretedOption.NamePart'(<<>>,
								  0, 0, F@_1,
								  F@_2, _) ->
    #{name_part => F@_1, is_extension => F@_2};
'dfp_read_field_def_google.protobuf.UninterpretedOption.NamePart'(Other,
								  Z1, Z2, F@_1,
								  F@_2,
								  TrUserData) ->
    'dg_read_field_def_google.protobuf.UninterpretedOption.NamePart'(Other,
								     Z1, Z2,
								     F@_1, F@_2,
								     TrUserData).

'dg_read_field_def_google.protobuf.UninterpretedOption.NamePart'(<<1:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2,
								 TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.UninterpretedOption.NamePart'(Rest,
								     N + 7,
								     X bsl N +
								       Acc,
								     F@_1, F@_2,
								     TrUserData);
'dg_read_field_def_google.protobuf.UninterpretedOption.NamePart'(<<0:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2,
								 TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_google.protobuf.UninterpretedOption.NamePart_name_part'(Rest,
									   0, 0,
									   F@_1,
									   F@_2,
									   TrUserData);
      16 ->
	  'd_field_google.protobuf.UninterpretedOption.NamePart_is_extension'(Rest,
									      0,
									      0,
									      F@_1,
									      F@_2,
									      TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.UninterpretedOption.NamePart'(Rest,
									   0, 0,
									   F@_1,
									   F@_2,
									   TrUserData);
	    1 ->
		'skip_64_google.protobuf.UninterpretedOption.NamePart'(Rest,
								       0, 0,
								       F@_1,
								       F@_2,
								       TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.UninterpretedOption.NamePart'(Rest,
										     0,
										     0,
										     F@_1,
										     F@_2,
										     TrUserData);
	    3 ->
		'skip_group_google.protobuf.UninterpretedOption.NamePart'(Rest,
									  Key
									    bsr
									    3,
									  0,
									  F@_1,
									  F@_2,
									  TrUserData);
	    5 ->
		'skip_32_google.protobuf.UninterpretedOption.NamePart'(Rest,
								       0, 0,
								       F@_1,
								       F@_2,
								       TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.UninterpretedOption.NamePart'(<<>>,
								 0, 0, F@_1,
								 F@_2, _) ->
    #{name_part => F@_1, is_extension => F@_2}.

'd_field_google.protobuf.UninterpretedOption.NamePart_name_part'(<<1:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2,
								 TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.UninterpretedOption.NamePart_name_part'(Rest,
								     N + 7,
								     X bsl N +
								       Acc,
								     F@_1, F@_2,
								     TrUserData);
'd_field_google.protobuf.UninterpretedOption.NamePart_name_part'(<<0:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, _,
								 F@_2,
								 TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.UninterpretedOption.NamePart'(RestF,
								      0, 0,
								      NewFValue,
								      F@_2,
								      TrUserData).

'd_field_google.protobuf.UninterpretedOption.NamePart_is_extension'(<<1:1,
								      X:7,
								      Rest/binary>>,
								    N, Acc,
								    F@_1, F@_2,
								    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.UninterpretedOption.NamePart_is_extension'(Rest,
									N + 7,
									X bsl N
									  + Acc,
									F@_1,
									F@_2,
									TrUserData);
'd_field_google.protobuf.UninterpretedOption.NamePart_is_extension'(<<0:1,
								      X:7,
								      Rest/binary>>,
								    N, Acc,
								    F@_1, _,
								    TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.UninterpretedOption.NamePart'(RestF,
								      0, 0,
								      F@_1,
								      NewFValue,
								      TrUserData).

'skip_varint_google.protobuf.UninterpretedOption.NamePart'(<<1:1,
							     _:7, Rest/binary>>,
							   Z1, Z2, F@_1, F@_2,
							   TrUserData) ->
    'skip_varint_google.protobuf.UninterpretedOption.NamePart'(Rest,
							       Z1, Z2, F@_1,
							       F@_2,
							       TrUserData);
'skip_varint_google.protobuf.UninterpretedOption.NamePart'(<<0:1,
							     _:7, Rest/binary>>,
							   Z1, Z2, F@_1, F@_2,
							   TrUserData) ->
    'dfp_read_field_def_google.protobuf.UninterpretedOption.NamePart'(Rest,
								      Z1, Z2,
								      F@_1,
								      F@_2,
								      TrUserData).

'skip_length_delimited_google.protobuf.UninterpretedOption.NamePart'(<<1:1,
								       X:7,
								       Rest/binary>>,
								     N, Acc,
								     F@_1, F@_2,
								     TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.UninterpretedOption.NamePart'(Rest,
									 N + 7,
									 X bsl N
									   +
									   Acc,
									 F@_1,
									 F@_2,
									 TrUserData);
'skip_length_delimited_google.protobuf.UninterpretedOption.NamePart'(<<0:1,
								       X:7,
								       Rest/binary>>,
								     N, Acc,
								     F@_1, F@_2,
								     TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.UninterpretedOption.NamePart'(Rest2,
								      0, 0,
								      F@_1,
								      F@_2,
								      TrUserData).

'skip_group_google.protobuf.UninterpretedOption.NamePart'(Bin,
							  FNum, Z2, F@_1, F@_2,
							  TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.UninterpretedOption.NamePart'(Rest,
								      0, Z2,
								      F@_1,
								      F@_2,
								      TrUserData).

'skip_32_google.protobuf.UninterpretedOption.NamePart'(<<_:32,
							 Rest/binary>>,
						       Z1, Z2, F@_1, F@_2,
						       TrUserData) ->
    'dfp_read_field_def_google.protobuf.UninterpretedOption.NamePart'(Rest,
								      Z1, Z2,
								      F@_1,
								      F@_2,
								      TrUserData).

'skip_64_google.protobuf.UninterpretedOption.NamePart'(<<_:64,
							 Rest/binary>>,
						       Z1, Z2, F@_1, F@_2,
						       TrUserData) ->
    'dfp_read_field_def_google.protobuf.UninterpretedOption.NamePart'(Rest,
								      Z1, Z2,
								      F@_1,
								      F@_2,
								      TrUserData).

'decode_msg_google.protobuf.UninterpretedOption'(Bin,
						 TrUserData) ->
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(Bin,
							     0, 0,
							     id([], TrUserData),
							     id('$undef',
								TrUserData),
							     id('$undef',
								TrUserData),
							     id('$undef',
								TrUserData),
							     id('$undef',
								TrUserData),
							     id('$undef',
								TrUserData),
							     id('$undef',
								TrUserData),
							     TrUserData).

'dfp_read_field_def_google.protobuf.UninterpretedOption'(<<18,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, TrUserData) ->
    'd_field_google.protobuf.UninterpretedOption_name'(Rest,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, F@_5, F@_6, F@_7,
						       TrUserData);
'dfp_read_field_def_google.protobuf.UninterpretedOption'(<<26,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, TrUserData) ->
    'd_field_google.protobuf.UninterpretedOption_identifier_value'(Rest,
								   Z1, Z2, F@_1,
								   F@_2, F@_3,
								   F@_4, F@_5,
								   F@_6, F@_7,
								   TrUserData);
'dfp_read_field_def_google.protobuf.UninterpretedOption'(<<32,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, TrUserData) ->
    'd_field_google.protobuf.UninterpretedOption_positive_int_value'(Rest,
								     Z1, Z2,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     F@_5, F@_6,
								     F@_7,
								     TrUserData);
'dfp_read_field_def_google.protobuf.UninterpretedOption'(<<40,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, TrUserData) ->
    'd_field_google.protobuf.UninterpretedOption_negative_int_value'(Rest,
								     Z1, Z2,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     F@_5, F@_6,
								     F@_7,
								     TrUserData);
'dfp_read_field_def_google.protobuf.UninterpretedOption'(<<49,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, TrUserData) ->
    'd_field_google.protobuf.UninterpretedOption_double_value'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       TrUserData);
'dfp_read_field_def_google.protobuf.UninterpretedOption'(<<58,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, TrUserData) ->
    'd_field_google.protobuf.UninterpretedOption_string_value'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       TrUserData);
'dfp_read_field_def_google.protobuf.UninterpretedOption'(<<66,
							   Rest/binary>>,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, TrUserData) ->
    'd_field_google.protobuf.UninterpretedOption_aggregate_value'(Rest,
								  Z1, Z2, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6, F@_7,
								  TrUserData);
'dfp_read_field_def_google.protobuf.UninterpretedOption'(<<>>,
							 0, 0, R1, F@_2, F@_3,
							 F@_4, F@_5, F@_6, F@_7,
							 TrUserData) ->
    S1 = #{},
    S2 = if R1 == '$undef' -> S1;
	    true -> S1#{name => lists_reverse(R1, TrUserData)}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{identifier_value => F@_2}
	 end,
    S4 = if F@_3 == '$undef' -> S3;
	    true -> S3#{positive_int_value => F@_3}
	 end,
    S5 = if F@_4 == '$undef' -> S4;
	    true -> S4#{negative_int_value => F@_4}
	 end,
    S6 = if F@_5 == '$undef' -> S5;
	    true -> S5#{double_value => F@_5}
	 end,
    S7 = if F@_6 == '$undef' -> S6;
	    true -> S6#{string_value => F@_6}
	 end,
    if F@_7 == '$undef' -> S7;
       true -> S7#{aggregate_value => F@_7}
    end;
'dfp_read_field_def_google.protobuf.UninterpretedOption'(Other,
							 Z1, Z2, F@_1, F@_2,
							 F@_3, F@_4, F@_5, F@_6,
							 F@_7, TrUserData) ->
    'dg_read_field_def_google.protobuf.UninterpretedOption'(Other,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7,
							    TrUserData).

'dg_read_field_def_google.protobuf.UninterpretedOption'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.UninterpretedOption'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3, F@_4,
							    F@_5, F@_6, F@_7,
							    TrUserData);
'dg_read_field_def_google.protobuf.UninterpretedOption'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5, F@_6,
							F@_7, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      18 ->
	  'd_field_google.protobuf.UninterpretedOption_name'(Rest,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7,
							     TrUserData);
      26 ->
	  'd_field_google.protobuf.UninterpretedOption_identifier_value'(Rest,
									 0, 0,
									 F@_1,
									 F@_2,
									 F@_3,
									 F@_4,
									 F@_5,
									 F@_6,
									 F@_7,
									 TrUserData);
      32 ->
	  'd_field_google.protobuf.UninterpretedOption_positive_int_value'(Rest,
									   0, 0,
									   F@_1,
									   F@_2,
									   F@_3,
									   F@_4,
									   F@_5,
									   F@_6,
									   F@_7,
									   TrUserData);
      40 ->
	  'd_field_google.protobuf.UninterpretedOption_negative_int_value'(Rest,
									   0, 0,
									   F@_1,
									   F@_2,
									   F@_3,
									   F@_4,
									   F@_5,
									   F@_6,
									   F@_7,
									   TrUserData);
      49 ->
	  'd_field_google.protobuf.UninterpretedOption_double_value'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     F@_4, F@_5,
								     F@_6, F@_7,
								     TrUserData);
      58 ->
	  'd_field_google.protobuf.UninterpretedOption_string_value'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     F@_4, F@_5,
								     F@_6, F@_7,
								     TrUserData);
      66 ->
	  'd_field_google.protobuf.UninterpretedOption_aggregate_value'(Rest,
									0, 0,
									F@_1,
									F@_2,
									F@_3,
									F@_4,
									F@_5,
									F@_6,
									F@_7,
									TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.UninterpretedOption'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  F@_6, F@_7,
								  TrUserData);
	    1 ->
		'skip_64_google.protobuf.UninterpretedOption'(Rest, 0,
							      0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7,
							      TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.UninterpretedOption'(Rest,
									    0,
									    0,
									    F@_1,
									    F@_2,
									    F@_3,
									    F@_4,
									    F@_5,
									    F@_6,
									    F@_7,
									    TrUserData);
	    3 ->
		'skip_group_google.protobuf.UninterpretedOption'(Rest,
								 Key bsr 3, 0,
								 F@_1, F@_2,
								 F@_3, F@_4,
								 F@_5, F@_6,
								 F@_7,
								 TrUserData);
	    5 ->
		'skip_32_google.protobuf.UninterpretedOption'(Rest, 0,
							      0, F@_1, F@_2,
							      F@_3, F@_4, F@_5,
							      F@_6, F@_7,
							      TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.UninterpretedOption'(<<>>,
							0, 0, R1, F@_2, F@_3,
							F@_4, F@_5, F@_6, F@_7,
							TrUserData) ->
    S1 = #{},
    S2 = if R1 == '$undef' -> S1;
	    true -> S1#{name => lists_reverse(R1, TrUserData)}
	 end,
    S3 = if F@_2 == '$undef' -> S2;
	    true -> S2#{identifier_value => F@_2}
	 end,
    S4 = if F@_3 == '$undef' -> S3;
	    true -> S3#{positive_int_value => F@_3}
	 end,
    S5 = if F@_4 == '$undef' -> S4;
	    true -> S4#{negative_int_value => F@_4}
	 end,
    S6 = if F@_5 == '$undef' -> S5;
	    true -> S5#{double_value => F@_5}
	 end,
    S7 = if F@_6 == '$undef' -> S6;
	    true -> S6#{string_value => F@_6}
	 end,
    if F@_7 == '$undef' -> S7;
       true -> S7#{aggregate_value => F@_7}
    end.

'd_field_google.protobuf.UninterpretedOption_name'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7,
						   TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.UninterpretedOption_name'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, F@_2, F@_3, F@_4,
						       F@_5, F@_6, F@_7,
						       TrUserData);
'd_field_google.protobuf.UninterpretedOption_name'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, Prev, F@_2, F@_3,
						   F@_4, F@_5, F@_6, F@_7,
						   TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.UninterpretedOption.NamePart'(Bs,
											 TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(RestF,
							     0, 0,
							     cons(NewFValue,
								  Prev,
								  TrUserData),
							     F@_2, F@_3, F@_4,
							     F@_5, F@_6, F@_7,
							     TrUserData).

'd_field_google.protobuf.UninterpretedOption_identifier_value'(<<1:1,
								 X:7,
								 Rest/binary>>,
							       N, Acc, F@_1,
							       F@_2, F@_3, F@_4,
							       F@_5, F@_6, F@_7,
							       TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.UninterpretedOption_identifier_value'(Rest,
								   N + 7,
								   X bsl N +
								     Acc,
								   F@_1, F@_2,
								   F@_3, F@_4,
								   F@_5, F@_6,
								   F@_7,
								   TrUserData);
'd_field_google.protobuf.UninterpretedOption_identifier_value'(<<0:1,
								 X:7,
								 Rest/binary>>,
							       N, Acc, F@_1, _,
							       F@_3, F@_4, F@_5,
							       F@_6, F@_7,
							       TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(RestF,
							     0, 0, F@_1,
							     NewFValue, F@_3,
							     F@_4, F@_5, F@_6,
							     F@_7, TrUserData).

'd_field_google.protobuf.UninterpretedOption_positive_int_value'(<<1:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.UninterpretedOption_positive_int_value'(Rest,
								     N + 7,
								     X bsl N +
								       Acc,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     F@_5, F@_6,
								     F@_7,
								     TrUserData);
'd_field_google.protobuf.UninterpretedOption_positive_int_value'(<<0:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, _, F@_4,
								 F@_5, F@_6,
								 F@_7,
								 TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc, TrUserData),
			  Rest},
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(RestF,
							     0, 0, F@_1, F@_2,
							     NewFValue, F@_4,
							     F@_5, F@_6, F@_7,
							     TrUserData).

'd_field_google.protobuf.UninterpretedOption_negative_int_value'(<<1:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 F@_6, F@_7,
								 TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.UninterpretedOption_negative_int_value'(Rest,
								     N + 7,
								     X bsl N +
								       Acc,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     F@_5, F@_6,
								     F@_7,
								     TrUserData);
'd_field_google.protobuf.UninterpretedOption_negative_int_value'(<<0:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3, _,
								 F@_5, F@_6,
								 F@_7,
								 TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(RestF,
							     0, 0, F@_1, F@_2,
							     F@_3, NewFValue,
							     F@_5, F@_6, F@_7,
							     TrUserData).

'd_field_google.protobuf.UninterpretedOption_double_value'(<<0:48,
							     240, 127,
							     Rest/binary>>,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, _, F@_6,
							   F@_7, TrUserData) ->
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4,
							     id(infinity,
								TrUserData),
							     F@_6, F@_7,
							     TrUserData);
'd_field_google.protobuf.UninterpretedOption_double_value'(<<0:48,
							     240, 255,
							     Rest/binary>>,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, _, F@_6,
							   F@_7, TrUserData) ->
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4,
							     id('-infinity',
								TrUserData),
							     F@_6, F@_7,
							     TrUserData);
'd_field_google.protobuf.UninterpretedOption_double_value'(<<_:48,
							     15:4, _:4, _:1,
							     127:7,
							     Rest/binary>>,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, _, F@_6,
							   F@_7, TrUserData) ->
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4,
							     id(nan,
								TrUserData),
							     F@_6, F@_7,
							     TrUserData);
'd_field_google.protobuf.UninterpretedOption_double_value'(<<Value:64/little-float,
							     Rest/binary>>,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, _, F@_6,
							   F@_7, TrUserData) ->
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4,
							     id(Value,
								TrUserData),
							     F@_6, F@_7,
							     TrUserData).

'd_field_google.protobuf.UninterpretedOption_string_value'(<<1:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   F@_6, F@_7,
							   TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.UninterpretedOption_string_value'(Rest,
							       N + 7,
							       X bsl N + Acc,
							       F@_1, F@_2, F@_3,
							       F@_4, F@_5, F@_6,
							       F@_7,
							       TrUserData);
'd_field_google.protobuf.UninterpretedOption_string_value'(<<0:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4, F@_5, _,
							   F@_7, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(RestF,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     NewFValue, F@_7,
							     TrUserData).

'd_field_google.protobuf.UninterpretedOption_aggregate_value'(<<1:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, F@_7,
							      TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.UninterpretedOption_aggregate_value'(Rest,
								  N + 7,
								  X bsl N + Acc,
								  F@_1, F@_2,
								  F@_3, F@_4,
								  F@_5, F@_6,
								  F@_7,
								  TrUserData);
'd_field_google.protobuf.UninterpretedOption_aggregate_value'(<<0:1,
								X:7,
								Rest/binary>>,
							      N, Acc, F@_1,
							      F@_2, F@_3, F@_4,
							      F@_5, F@_6, _,
							      TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(RestF,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, NewFValue,
							     TrUserData).

'skip_varint_google.protobuf.UninterpretedOption'(<<1:1,
						    _:7, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7,
						  TrUserData) ->
    'skip_varint_google.protobuf.UninterpretedOption'(Rest,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, F@_6, F@_7,
						      TrUserData);
'skip_varint_google.protobuf.UninterpretedOption'(<<0:1,
						    _:7, Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, F@_6, F@_7,
						  TrUserData) ->
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7,
							     TrUserData).

'skip_length_delimited_google.protobuf.UninterpretedOption'(<<1:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7,
							    TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.UninterpretedOption'(Rest,
								N + 7,
								X bsl N + Acc,
								F@_1, F@_2,
								F@_3, F@_4,
								F@_5, F@_6,
								F@_7,
								TrUserData);
'skip_length_delimited_google.protobuf.UninterpretedOption'(<<0:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    F@_6, F@_7,
							    TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(Rest2,
							     0, 0, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7,
							     TrUserData).

'skip_group_google.protobuf.UninterpretedOption'(Bin,
						 FNum, Z2, F@_1, F@_2, F@_3,
						 F@_4, F@_5, F@_6, F@_7,
						 TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(Rest,
							     0, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7,
							     TrUserData).

'skip_32_google.protobuf.UninterpretedOption'(<<_:32,
						Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					      F@_5, F@_6, F@_7, TrUserData) ->
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7,
							     TrUserData).

'skip_64_google.protobuf.UninterpretedOption'(<<_:64,
						Rest/binary>>,
					      Z1, Z2, F@_1, F@_2, F@_3, F@_4,
					      F@_5, F@_6, F@_7, TrUserData) ->
    'dfp_read_field_def_google.protobuf.UninterpretedOption'(Rest,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     F@_6, F@_7,
							     TrUserData).

'decode_msg_google.protobuf.SourceCodeInfo.Location'(Bin,
						     TrUserData) ->
    'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(Bin,
								 0, 0,
								 id([],
								    TrUserData),
								 id([],
								    TrUserData),
								 id('$undef',
								    TrUserData),
								 id('$undef',
								    TrUserData),
								 id([],
								    TrUserData),
								 TrUserData).

'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(<<10,
							       Rest/binary>>,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     TrUserData) ->
    'd_pfield_google.protobuf.SourceCodeInfo.Location_path'(Rest,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    TrUserData);
'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(<<8,
							       Rest/binary>>,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     TrUserData) ->
    'd_field_google.protobuf.SourceCodeInfo.Location_path'(Rest,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   TrUserData);
'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(<<18,
							       Rest/binary>>,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     TrUserData) ->
    'd_pfield_google.protobuf.SourceCodeInfo.Location_span'(Rest,
							    Z1, Z2, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    TrUserData);
'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(<<16,
							       Rest/binary>>,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     TrUserData) ->
    'd_field_google.protobuf.SourceCodeInfo.Location_span'(Rest,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4, F@_5,
							   TrUserData);
'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(<<26,
							       Rest/binary>>,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     TrUserData) ->
    'd_field_google.protobuf.SourceCodeInfo.Location_leading_comments'(Rest,
								       Z1, Z2,
								       F@_1,
								       F@_2,
								       F@_3,
								       F@_4,
								       F@_5,
								       TrUserData);
'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(<<34,
							       Rest/binary>>,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     TrUserData) ->
    'd_field_google.protobuf.SourceCodeInfo.Location_trailing_comments'(Rest,
									Z1, Z2,
									F@_1,
									F@_2,
									F@_3,
									F@_4,
									F@_5,
									TrUserData);
'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(<<50,
							       Rest/binary>>,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     TrUserData) ->
    'd_field_google.protobuf.SourceCodeInfo.Location_leading_detached_comments'(Rest,
										Z1,
										Z2,
										F@_1,
										F@_2,
										F@_3,
										F@_4,
										F@_5,
										TrUserData);
'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(<<>>,
							     0, 0, R1, R2, F@_3,
							     F@_4, R3,
							     TrUserData) ->
    S1 = #{path => lists_reverse(R1, TrUserData),
	   span => lists_reverse(R2, TrUserData),
	   leading_detached_comments =>
	       lists_reverse(R3, TrUserData)},
    S2 = if F@_3 == '$undef' -> S1;
	    true -> S1#{leading_comments => F@_3}
	 end,
    if F@_4 == '$undef' -> S2;
       true -> S2#{trailing_comments => F@_4}
    end;
'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(Other,
							     Z1, Z2, F@_1, F@_2,
							     F@_3, F@_4, F@_5,
							     TrUserData) ->
    'dg_read_field_def_google.protobuf.SourceCodeInfo.Location'(Other,
								Z1, Z2, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								TrUserData).

'dg_read_field_def_google.protobuf.SourceCodeInfo.Location'(<<1:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.SourceCodeInfo.Location'(Rest,
								N + 7,
								X bsl N + Acc,
								F@_1, F@_2,
								F@_3, F@_4,
								F@_5,
								TrUserData);
'dg_read_field_def_google.protobuf.SourceCodeInfo.Location'(<<0:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4, F@_5,
							    TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_pfield_google.protobuf.SourceCodeInfo.Location_path'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  TrUserData);
      8 ->
	  'd_field_google.protobuf.SourceCodeInfo.Location_path'(Rest,
								 0, 0, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 TrUserData);
      18 ->
	  'd_pfield_google.protobuf.SourceCodeInfo.Location_span'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  TrUserData);
      16 ->
	  'd_field_google.protobuf.SourceCodeInfo.Location_span'(Rest,
								 0, 0, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 TrUserData);
      26 ->
	  'd_field_google.protobuf.SourceCodeInfo.Location_leading_comments'(Rest,
									     0,
									     0,
									     F@_1,
									     F@_2,
									     F@_3,
									     F@_4,
									     F@_5,
									     TrUserData);
      34 ->
	  'd_field_google.protobuf.SourceCodeInfo.Location_trailing_comments'(Rest,
									      0,
									      0,
									      F@_1,
									      F@_2,
									      F@_3,
									      F@_4,
									      F@_5,
									      TrUserData);
      50 ->
	  'd_field_google.protobuf.SourceCodeInfo.Location_leading_detached_comments'(Rest,
										      0,
										      0,
										      F@_1,
										      F@_2,
										      F@_3,
										      F@_4,
										      F@_5,
										      TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.SourceCodeInfo.Location'(Rest,
								      0, 0,
								      F@_1,
								      F@_2,
								      F@_3,
								      F@_4,
								      F@_5,
								      TrUserData);
	    1 ->
		'skip_64_google.protobuf.SourceCodeInfo.Location'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.SourceCodeInfo.Location'(Rest,
										0,
										0,
										F@_1,
										F@_2,
										F@_3,
										F@_4,
										F@_5,
										TrUserData);
	    3 ->
		'skip_group_google.protobuf.SourceCodeInfo.Location'(Rest,
								     Key bsr 3,
								     0, F@_1,
								     F@_2, F@_3,
								     F@_4, F@_5,
								     TrUserData);
	    5 ->
		'skip_32_google.protobuf.SourceCodeInfo.Location'(Rest,
								  0, 0, F@_1,
								  F@_2, F@_3,
								  F@_4, F@_5,
								  TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.SourceCodeInfo.Location'(<<>>,
							    0, 0, R1, R2, F@_3,
							    F@_4, R3,
							    TrUserData) ->
    S1 = #{path => lists_reverse(R1, TrUserData),
	   span => lists_reverse(R2, TrUserData),
	   leading_detached_comments =>
	       lists_reverse(R3, TrUserData)},
    S2 = if F@_3 == '$undef' -> S1;
	    true -> S1#{leading_comments => F@_3}
	 end,
    if F@_4 == '$undef' -> S2;
       true -> S2#{trailing_comments => F@_4}
    end.

'd_field_google.protobuf.SourceCodeInfo.Location_path'(<<1:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2, F@_3,
						       F@_4, F@_5, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.SourceCodeInfo.Location_path'(Rest,
							   N + 7, X bsl N + Acc,
							   F@_1, F@_2, F@_3,
							   F@_4, F@_5,
							   TrUserData);
'd_field_google.protobuf.SourceCodeInfo.Location_path'(<<0:1,
							 X:7, Rest/binary>>,
						       N, Acc, Prev, F@_2, F@_3,
						       F@_4, F@_5,
						       TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(RestF,
								 0, 0,
								 cons(NewFValue,
								      Prev,
								      TrUserData),
								 F@_2, F@_3,
								 F@_4, F@_5,
								 TrUserData).

'd_pfield_google.protobuf.SourceCodeInfo.Location_path'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5,
							TrUserData)
    when N < 57 ->
    'd_pfield_google.protobuf.SourceCodeInfo.Location_path'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3, F@_4,
							    F@_5, TrUserData);
'd_pfield_google.protobuf.SourceCodeInfo.Location_path'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, E, F@_2, F@_3,
							F@_4, F@_5,
							TrUserData) ->
    Len = X bsl N + Acc,
    <<PackedBytes:Len/binary, Rest2/binary>> = Rest,
    NewSeq =
	'd_packed_field_google.protobuf.SourceCodeInfo.Location_path'(PackedBytes,
								      0, 0, E,
								      TrUserData),
    'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(Rest2,
								 0, 0, NewSeq,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 TrUserData).

'd_packed_field_google.protobuf.SourceCodeInfo.Location_path'(<<1:1,
								X:7,
								Rest/binary>>,
							      N, Acc, AccSeq,
							      TrUserData)
    when N < 57 ->
    'd_packed_field_google.protobuf.SourceCodeInfo.Location_path'(Rest,
								  N + 7,
								  X bsl N + Acc,
								  AccSeq,
								  TrUserData);
'd_packed_field_google.protobuf.SourceCodeInfo.Location_path'(<<0:1,
								X:7,
								Rest/binary>>,
							      N, Acc, AccSeq,
							      TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'd_packed_field_google.protobuf.SourceCodeInfo.Location_path'(RestF,
								  0, 0,
								  [NewFValue
								   | AccSeq],
								  TrUserData);
'd_packed_field_google.protobuf.SourceCodeInfo.Location_path'(<<>>,
							      0, 0, AccSeq,
							      _) ->
    AccSeq.

'd_field_google.protobuf.SourceCodeInfo.Location_span'(<<1:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, F@_2, F@_3,
						       F@_4, F@_5, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.SourceCodeInfo.Location_span'(Rest,
							   N + 7, X bsl N + Acc,
							   F@_1, F@_2, F@_3,
							   F@_4, F@_5,
							   TrUserData);
'd_field_google.protobuf.SourceCodeInfo.Location_span'(<<0:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, Prev, F@_3,
						       F@_4, F@_5,
						       TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(RestF,
								 0, 0, F@_1,
								 cons(NewFValue,
								      Prev,
								      TrUserData),
								 F@_3, F@_4,
								 F@_5,
								 TrUserData).

'd_pfield_google.protobuf.SourceCodeInfo.Location_span'(<<1:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, F@_2,
							F@_3, F@_4, F@_5,
							TrUserData)
    when N < 57 ->
    'd_pfield_google.protobuf.SourceCodeInfo.Location_span'(Rest,
							    N + 7,
							    X bsl N + Acc, F@_1,
							    F@_2, F@_3, F@_4,
							    F@_5, TrUserData);
'd_pfield_google.protobuf.SourceCodeInfo.Location_span'(<<0:1,
							  X:7, Rest/binary>>,
							N, Acc, F@_1, E, F@_3,
							F@_4, F@_5,
							TrUserData) ->
    Len = X bsl N + Acc,
    <<PackedBytes:Len/binary, Rest2/binary>> = Rest,
    NewSeq =
	'd_packed_field_google.protobuf.SourceCodeInfo.Location_span'(PackedBytes,
								      0, 0, E,
								      TrUserData),
    'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(Rest2,
								 0, 0, F@_1,
								 NewSeq, F@_3,
								 F@_4, F@_5,
								 TrUserData).

'd_packed_field_google.protobuf.SourceCodeInfo.Location_span'(<<1:1,
								X:7,
								Rest/binary>>,
							      N, Acc, AccSeq,
							      TrUserData)
    when N < 57 ->
    'd_packed_field_google.protobuf.SourceCodeInfo.Location_span'(Rest,
								  N + 7,
								  X bsl N + Acc,
								  AccSeq,
								  TrUserData);
'd_packed_field_google.protobuf.SourceCodeInfo.Location_span'(<<0:1,
								X:7,
								Rest/binary>>,
							      N, Acc, AccSeq,
							      TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'd_packed_field_google.protobuf.SourceCodeInfo.Location_span'(RestF,
								  0, 0,
								  [NewFValue
								   | AccSeq],
								  TrUserData);
'd_packed_field_google.protobuf.SourceCodeInfo.Location_span'(<<>>,
							      0, 0, AccSeq,
							      _) ->
    AccSeq.

'd_field_google.protobuf.SourceCodeInfo.Location_leading_comments'(<<1:1,
								     X:7,
								     Rest/binary>>,
								   N, Acc, F@_1,
								   F@_2, F@_3,
								   F@_4, F@_5,
								   TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.SourceCodeInfo.Location_leading_comments'(Rest,
								       N + 7,
								       X bsl N +
									 Acc,
								       F@_1,
								       F@_2,
								       F@_3,
								       F@_4,
								       F@_5,
								       TrUserData);
'd_field_google.protobuf.SourceCodeInfo.Location_leading_comments'(<<0:1,
								     X:7,
								     Rest/binary>>,
								   N, Acc, F@_1,
								   F@_2, _,
								   F@_4, F@_5,
								   TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(RestF,
								 0, 0, F@_1,
								 F@_2,
								 NewFValue,
								 F@_4, F@_5,
								 TrUserData).

'd_field_google.protobuf.SourceCodeInfo.Location_trailing_comments'(<<1:1,
								      X:7,
								      Rest/binary>>,
								    N, Acc,
								    F@_1, F@_2,
								    F@_3, F@_4,
								    F@_5,
								    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.SourceCodeInfo.Location_trailing_comments'(Rest,
									N + 7,
									X bsl N
									  + Acc,
									F@_1,
									F@_2,
									F@_3,
									F@_4,
									F@_5,
									TrUserData);
'd_field_google.protobuf.SourceCodeInfo.Location_trailing_comments'(<<0:1,
								      X:7,
								      Rest/binary>>,
								    N, Acc,
								    F@_1, F@_2,
								    F@_3, _,
								    F@_5,
								    TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(RestF,
								 0, 0, F@_1,
								 F@_2, F@_3,
								 NewFValue,
								 F@_5,
								 TrUserData).

'd_field_google.protobuf.SourceCodeInfo.Location_leading_detached_comments'(<<1:1,
									      X:7,
									      Rest/binary>>,
									    N,
									    Acc,
									    F@_1,
									    F@_2,
									    F@_3,
									    F@_4,
									    F@_5,
									    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.SourceCodeInfo.Location_leading_detached_comments'(Rest,
										N
										  +
										  7,
										X
										  bsl
										  N
										  +
										  Acc,
										F@_1,
										F@_2,
										F@_3,
										F@_4,
										F@_5,
										TrUserData);
'd_field_google.protobuf.SourceCodeInfo.Location_leading_detached_comments'(<<0:1,
									      X:7,
									      Rest/binary>>,
									    N,
									    Acc,
									    F@_1,
									    F@_2,
									    F@_3,
									    F@_4,
									    Prev,
									    TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(RestF,
								 0, 0, F@_1,
								 F@_2, F@_3,
								 F@_4,
								 cons(NewFValue,
								      Prev,
								      TrUserData),
								 TrUserData).

'skip_varint_google.protobuf.SourceCodeInfo.Location'(<<1:1,
							_:7, Rest/binary>>,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, TrUserData) ->
    'skip_varint_google.protobuf.SourceCodeInfo.Location'(Rest,
							  Z1, Z2, F@_1, F@_2,
							  F@_3, F@_4, F@_5,
							  TrUserData);
'skip_varint_google.protobuf.SourceCodeInfo.Location'(<<0:1,
							_:7, Rest/binary>>,
						      Z1, Z2, F@_1, F@_2, F@_3,
						      F@_4, F@_5, TrUserData) ->
    'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(Rest,
								 Z1, Z2, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 TrUserData).

'skip_length_delimited_google.protobuf.SourceCodeInfo.Location'(<<1:1,
								  X:7,
								  Rest/binary>>,
								N, Acc, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.SourceCodeInfo.Location'(Rest,
								    N + 7,
								    X bsl N +
								      Acc,
								    F@_1, F@_2,
								    F@_3, F@_4,
								    F@_5,
								    TrUserData);
'skip_length_delimited_google.protobuf.SourceCodeInfo.Location'(<<0:1,
								  X:7,
								  Rest/binary>>,
								N, Acc, F@_1,
								F@_2, F@_3,
								F@_4, F@_5,
								TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(Rest2,
								 0, 0, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 TrUserData).

'skip_group_google.protobuf.SourceCodeInfo.Location'(Bin,
						     FNum, Z2, F@_1, F@_2, F@_3,
						     F@_4, F@_5, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(Rest,
								 0, Z2, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 TrUserData).

'skip_32_google.protobuf.SourceCodeInfo.Location'(<<_:32,
						    Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, TrUserData) ->
    'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(Rest,
								 Z1, Z2, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 TrUserData).

'skip_64_google.protobuf.SourceCodeInfo.Location'(<<_:64,
						    Rest/binary>>,
						  Z1, Z2, F@_1, F@_2, F@_3,
						  F@_4, F@_5, TrUserData) ->
    'dfp_read_field_def_google.protobuf.SourceCodeInfo.Location'(Rest,
								 Z1, Z2, F@_1,
								 F@_2, F@_3,
								 F@_4, F@_5,
								 TrUserData).

'decode_msg_google.protobuf.SourceCodeInfo'(Bin,
					    TrUserData) ->
    'dfp_read_field_def_google.protobuf.SourceCodeInfo'(Bin,
							0, 0,
							id([], TrUserData),
							TrUserData).

'dfp_read_field_def_google.protobuf.SourceCodeInfo'(<<10,
						      Rest/binary>>,
						    Z1, Z2, F@_1, TrUserData) ->
    'd_field_google.protobuf.SourceCodeInfo_location'(Rest,
						      Z1, Z2, F@_1, TrUserData);
'dfp_read_field_def_google.protobuf.SourceCodeInfo'(<<>>,
						    0, 0, R1, TrUserData) ->
    S1 = #{},
    if R1 == '$undef' -> S1;
       true -> S1#{location => lists_reverse(R1, TrUserData)}
    end;
'dfp_read_field_def_google.protobuf.SourceCodeInfo'(Other,
						    Z1, Z2, F@_1, TrUserData) ->
    'dg_read_field_def_google.protobuf.SourceCodeInfo'(Other,
						       Z1, Z2, F@_1,
						       TrUserData).

'dg_read_field_def_google.protobuf.SourceCodeInfo'(<<1:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.SourceCodeInfo'(Rest,
						       N + 7, X bsl N + Acc,
						       F@_1, TrUserData);
'dg_read_field_def_google.protobuf.SourceCodeInfo'(<<0:1,
						     X:7, Rest/binary>>,
						   N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_google.protobuf.SourceCodeInfo_location'(Rest,
							    0, 0, F@_1,
							    TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.SourceCodeInfo'(Rest, 0, 0,
							     F@_1, TrUserData);
	    1 ->
		'skip_64_google.protobuf.SourceCodeInfo'(Rest, 0, 0,
							 F@_1, TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.SourceCodeInfo'(Rest,
								       0, 0,
								       F@_1,
								       TrUserData);
	    3 ->
		'skip_group_google.protobuf.SourceCodeInfo'(Rest,
							    Key bsr 3, 0, F@_1,
							    TrUserData);
	    5 ->
		'skip_32_google.protobuf.SourceCodeInfo'(Rest, 0, 0,
							 F@_1, TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.SourceCodeInfo'(<<>>,
						   0, 0, R1, TrUserData) ->
    S1 = #{},
    if R1 == '$undef' -> S1;
       true -> S1#{location => lists_reverse(R1, TrUserData)}
    end.

'd_field_google.protobuf.SourceCodeInfo_location'(<<1:1,
						    X:7, Rest/binary>>,
						  N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.SourceCodeInfo_location'(Rest,
						      N + 7, X bsl N + Acc,
						      F@_1, TrUserData);
'd_field_google.protobuf.SourceCodeInfo_location'(<<0:1,
						    X:7, Rest/binary>>,
						  N, Acc, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.SourceCodeInfo.Location'(Bs,
										    TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.SourceCodeInfo'(RestF,
							0, 0,
							cons(NewFValue, Prev,
							     TrUserData),
							TrUserData).

'skip_varint_google.protobuf.SourceCodeInfo'(<<1:1, _:7,
					       Rest/binary>>,
					     Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_google.protobuf.SourceCodeInfo'(Rest, Z1,
						 Z2, F@_1, TrUserData);
'skip_varint_google.protobuf.SourceCodeInfo'(<<0:1, _:7,
					       Rest/binary>>,
					     Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_google.protobuf.SourceCodeInfo'(Rest,
							Z1, Z2, F@_1,
							TrUserData).

'skip_length_delimited_google.protobuf.SourceCodeInfo'(<<1:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.SourceCodeInfo'(Rest,
							   N + 7, X bsl N + Acc,
							   F@_1, TrUserData);
'skip_length_delimited_google.protobuf.SourceCodeInfo'(<<0:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1,
						       TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.SourceCodeInfo'(Rest2,
							0, 0, F@_1, TrUserData).

'skip_group_google.protobuf.SourceCodeInfo'(Bin, FNum,
					    Z2, F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.SourceCodeInfo'(Rest,
							0, Z2, F@_1,
							TrUserData).

'skip_32_google.protobuf.SourceCodeInfo'(<<_:32,
					   Rest/binary>>,
					 Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_google.protobuf.SourceCodeInfo'(Rest,
							Z1, Z2, F@_1,
							TrUserData).

'skip_64_google.protobuf.SourceCodeInfo'(<<_:64,
					   Rest/binary>>,
					 Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_google.protobuf.SourceCodeInfo'(Rest,
							Z1, Z2, F@_1,
							TrUserData).

'decode_msg_google.protobuf.GeneratedCodeInfo.Annotation'(Bin,
							  TrUserData) ->
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(Bin,
								      0, 0,
								      id([],
									 TrUserData),
								      id('$undef',
									 TrUserData),
								      id('$undef',
									 TrUserData),
								      id('$undef',
									 TrUserData),
								      TrUserData).

'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(<<10,
								    Rest/binary>>,
								  Z1, Z2, F@_1,
								  F@_2, F@_3,
								  F@_4,
								  TrUserData) ->
    'd_pfield_google.protobuf.GeneratedCodeInfo.Annotation_path'(Rest,
								 Z1, Z2, F@_1,
								 F@_2, F@_3,
								 F@_4,
								 TrUserData);
'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(<<8,
								    Rest/binary>>,
								  Z1, Z2, F@_1,
								  F@_2, F@_3,
								  F@_4,
								  TrUserData) ->
    'd_field_google.protobuf.GeneratedCodeInfo.Annotation_path'(Rest,
								Z1, Z2, F@_1,
								F@_2, F@_3,
								F@_4,
								TrUserData);
'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(<<18,
								    Rest/binary>>,
								  Z1, Z2, F@_1,
								  F@_2, F@_3,
								  F@_4,
								  TrUserData) ->
    'd_field_google.protobuf.GeneratedCodeInfo.Annotation_source_file'(Rest,
								       Z1, Z2,
								       F@_1,
								       F@_2,
								       F@_3,
								       F@_4,
								       TrUserData);
'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(<<24,
								    Rest/binary>>,
								  Z1, Z2, F@_1,
								  F@_2, F@_3,
								  F@_4,
								  TrUserData) ->
    'd_field_google.protobuf.GeneratedCodeInfo.Annotation_begin'(Rest,
								 Z1, Z2, F@_1,
								 F@_2, F@_3,
								 F@_4,
								 TrUserData);
'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(<<32,
								    Rest/binary>>,
								  Z1, Z2, F@_1,
								  F@_2, F@_3,
								  F@_4,
								  TrUserData) ->
    'd_field_google.protobuf.GeneratedCodeInfo.Annotation_end'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       TrUserData);
'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(<<>>,
								  0, 0, R1,
								  F@_2, F@_3,
								  F@_4,
								  TrUserData) ->
    S1 = #{path => lists_reverse(R1, TrUserData)},
    S2 = if F@_2 == '$undef' -> S1;
	    true -> S1#{source_file => F@_2}
	 end,
    S3 = if F@_3 == '$undef' -> S2;
	    true -> S2#{'begin' => F@_3}
	 end,
    if F@_4 == '$undef' -> S3;
       true -> S3#{'end' => F@_4}
    end;
'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(Other,
								  Z1, Z2, F@_1,
								  F@_2, F@_3,
								  F@_4,
								  TrUserData) ->
    'dg_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(Other,
								     Z1, Z2,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     TrUserData).

'dg_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(<<1:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3,
								 F@_4,
								 TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(Rest,
								     N + 7,
								     X bsl N +
								       Acc,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     TrUserData);
'dg_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(<<0:1,
								   X:7,
								   Rest/binary>>,
								 N, Acc, F@_1,
								 F@_2, F@_3,
								 F@_4,
								 TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_pfield_google.protobuf.GeneratedCodeInfo.Annotation_path'(Rest,
								       0, 0,
								       F@_1,
								       F@_2,
								       F@_3,
								       F@_4,
								       TrUserData);
      8 ->
	  'd_field_google.protobuf.GeneratedCodeInfo.Annotation_path'(Rest,
								      0, 0,
								      F@_1,
								      F@_2,
								      F@_3,
								      F@_4,
								      TrUserData);
      18 ->
	  'd_field_google.protobuf.GeneratedCodeInfo.Annotation_source_file'(Rest,
									     0,
									     0,
									     F@_1,
									     F@_2,
									     F@_3,
									     F@_4,
									     TrUserData);
      24 ->
	  'd_field_google.protobuf.GeneratedCodeInfo.Annotation_begin'(Rest,
								       0, 0,
								       F@_1,
								       F@_2,
								       F@_3,
								       F@_4,
								       TrUserData);
      32 ->
	  'd_field_google.protobuf.GeneratedCodeInfo.Annotation_end'(Rest,
								     0, 0, F@_1,
								     F@_2, F@_3,
								     F@_4,
								     TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.GeneratedCodeInfo.Annotation'(Rest,
									   0, 0,
									   F@_1,
									   F@_2,
									   F@_3,
									   F@_4,
									   TrUserData);
	    1 ->
		'skip_64_google.protobuf.GeneratedCodeInfo.Annotation'(Rest,
								       0, 0,
								       F@_1,
								       F@_2,
								       F@_3,
								       F@_4,
								       TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.GeneratedCodeInfo.Annotation'(Rest,
										     0,
										     0,
										     F@_1,
										     F@_2,
										     F@_3,
										     F@_4,
										     TrUserData);
	    3 ->
		'skip_group_google.protobuf.GeneratedCodeInfo.Annotation'(Rest,
									  Key
									    bsr
									    3,
									  0,
									  F@_1,
									  F@_2,
									  F@_3,
									  F@_4,
									  TrUserData);
	    5 ->
		'skip_32_google.protobuf.GeneratedCodeInfo.Annotation'(Rest,
								       0, 0,
								       F@_1,
								       F@_2,
								       F@_3,
								       F@_4,
								       TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(<<>>,
								 0, 0, R1, F@_2,
								 F@_3, F@_4,
								 TrUserData) ->
    S1 = #{path => lists_reverse(R1, TrUserData)},
    S2 = if F@_2 == '$undef' -> S1;
	    true -> S1#{source_file => F@_2}
	 end,
    S3 = if F@_3 == '$undef' -> S2;
	    true -> S2#{'begin' => F@_3}
	 end,
    if F@_4 == '$undef' -> S3;
       true -> S3#{'end' => F@_4}
    end.

'd_field_google.protobuf.GeneratedCodeInfo.Annotation_path'(<<1:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, F@_1, F@_2,
							    F@_3, F@_4,
							    TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.GeneratedCodeInfo.Annotation_path'(Rest,
								N + 7,
								X bsl N + Acc,
								F@_1, F@_2,
								F@_3, F@_4,
								TrUserData);
'd_field_google.protobuf.GeneratedCodeInfo.Annotation_path'(<<0:1,
							      X:7,
							      Rest/binary>>,
							    N, Acc, Prev, F@_2,
							    F@_3, F@_4,
							    TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(RestF,
								      0, 0,
								      cons(NewFValue,
									   Prev,
									   TrUserData),
								      F@_2,
								      F@_3,
								      F@_4,
								      TrUserData).

'd_pfield_google.protobuf.GeneratedCodeInfo.Annotation_path'(<<1:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     F@_3, F@_4,
							     TrUserData)
    when N < 57 ->
    'd_pfield_google.protobuf.GeneratedCodeInfo.Annotation_path'(Rest,
								 N + 7,
								 X bsl N + Acc,
								 F@_1, F@_2,
								 F@_3, F@_4,
								 TrUserData);
'd_pfield_google.protobuf.GeneratedCodeInfo.Annotation_path'(<<0:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, E, F@_2,
							     F@_3, F@_4,
							     TrUserData) ->
    Len = X bsl N + Acc,
    <<PackedBytes:Len/binary, Rest2/binary>> = Rest,
    NewSeq =
	'd_packed_field_google.protobuf.GeneratedCodeInfo.Annotation_path'(PackedBytes,
									   0, 0,
									   E,
									   TrUserData),
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(Rest2,
								      0, 0,
								      NewSeq,
								      F@_2,
								      F@_3,
								      F@_4,
								      TrUserData).

'd_packed_field_google.protobuf.GeneratedCodeInfo.Annotation_path'(<<1:1,
								     X:7,
								     Rest/binary>>,
								   N, Acc,
								   AccSeq,
								   TrUserData)
    when N < 57 ->
    'd_packed_field_google.protobuf.GeneratedCodeInfo.Annotation_path'(Rest,
								       N + 7,
								       X bsl N +
									 Acc,
								       AccSeq,
								       TrUserData);
'd_packed_field_google.protobuf.GeneratedCodeInfo.Annotation_path'(<<0:1,
								     X:7,
								     Rest/binary>>,
								   N, Acc,
								   AccSeq,
								   TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'd_packed_field_google.protobuf.GeneratedCodeInfo.Annotation_path'(RestF,
								       0, 0,
								       [NewFValue
									| AccSeq],
								       TrUserData);
'd_packed_field_google.protobuf.GeneratedCodeInfo.Annotation_path'(<<>>,
								   0, 0, AccSeq,
								   _) ->
    AccSeq.

'd_field_google.protobuf.GeneratedCodeInfo.Annotation_source_file'(<<1:1,
								     X:7,
								     Rest/binary>>,
								   N, Acc, F@_1,
								   F@_2, F@_3,
								   F@_4,
								   TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.GeneratedCodeInfo.Annotation_source_file'(Rest,
								       N + 7,
								       X bsl N +
									 Acc,
								       F@_1,
								       F@_2,
								       F@_3,
								       F@_4,
								       TrUserData);
'd_field_google.protobuf.GeneratedCodeInfo.Annotation_source_file'(<<0:1,
								     X:7,
								     Rest/binary>>,
								   N, Acc, F@_1,
								   _, F@_3,
								   F@_4,
								   TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(RestF,
								      0, 0,
								      F@_1,
								      NewFValue,
								      F@_3,
								      F@_4,
								      TrUserData).

'd_field_google.protobuf.GeneratedCodeInfo.Annotation_begin'(<<1:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     F@_3, F@_4,
							     TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.GeneratedCodeInfo.Annotation_begin'(Rest,
								 N + 7,
								 X bsl N + Acc,
								 F@_1, F@_2,
								 F@_3, F@_4,
								 TrUserData);
'd_field_google.protobuf.GeneratedCodeInfo.Annotation_begin'(<<0:1,
							       X:7,
							       Rest/binary>>,
							     N, Acc, F@_1, F@_2,
							     _, F@_4,
							     TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(RestF,
								      0, 0,
								      F@_1,
								      F@_2,
								      NewFValue,
								      F@_4,
								      TrUserData).

'd_field_google.protobuf.GeneratedCodeInfo.Annotation_end'(<<1:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, F@_4,
							   TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.GeneratedCodeInfo.Annotation_end'(Rest,
							       N + 7,
							       X bsl N + Acc,
							       F@_1, F@_2, F@_3,
							       F@_4,
							       TrUserData);
'd_field_google.protobuf.GeneratedCodeInfo.Annotation_end'(<<0:1,
							     X:7, Rest/binary>>,
							   N, Acc, F@_1, F@_2,
							   F@_3, _,
							   TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:32/signed-native>> = <<(X bsl N +
							    Acc):32/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(RestF,
								      0, 0,
								      F@_1,
								      F@_2,
								      F@_3,
								      NewFValue,
								      TrUserData).

'skip_varint_google.protobuf.GeneratedCodeInfo.Annotation'(<<1:1,
							     _:7, Rest/binary>>,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4,
							   TrUserData) ->
    'skip_varint_google.protobuf.GeneratedCodeInfo.Annotation'(Rest,
							       Z1, Z2, F@_1,
							       F@_2, F@_3, F@_4,
							       TrUserData);
'skip_varint_google.protobuf.GeneratedCodeInfo.Annotation'(<<0:1,
							     _:7, Rest/binary>>,
							   Z1, Z2, F@_1, F@_2,
							   F@_3, F@_4,
							   TrUserData) ->
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(Rest,
								      Z1, Z2,
								      F@_1,
								      F@_2,
								      F@_3,
								      F@_4,
								      TrUserData).

'skip_length_delimited_google.protobuf.GeneratedCodeInfo.Annotation'(<<1:1,
								       X:7,
								       Rest/binary>>,
								     N, Acc,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.GeneratedCodeInfo.Annotation'(Rest,
									 N + 7,
									 X bsl N
									   +
									   Acc,
									 F@_1,
									 F@_2,
									 F@_3,
									 F@_4,
									 TrUserData);
'skip_length_delimited_google.protobuf.GeneratedCodeInfo.Annotation'(<<0:1,
								       X:7,
								       Rest/binary>>,
								     N, Acc,
								     F@_1, F@_2,
								     F@_3, F@_4,
								     TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(Rest2,
								      0, 0,
								      F@_1,
								      F@_2,
								      F@_3,
								      F@_4,
								      TrUserData).

'skip_group_google.protobuf.GeneratedCodeInfo.Annotation'(Bin,
							  FNum, Z2, F@_1, F@_2,
							  F@_3, F@_4,
							  TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(Rest,
								      0, Z2,
								      F@_1,
								      F@_2,
								      F@_3,
								      F@_4,
								      TrUserData).

'skip_32_google.protobuf.GeneratedCodeInfo.Annotation'(<<_:32,
							 Rest/binary>>,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, TrUserData) ->
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(Rest,
								      Z1, Z2,
								      F@_1,
								      F@_2,
								      F@_3,
								      F@_4,
								      TrUserData).

'skip_64_google.protobuf.GeneratedCodeInfo.Annotation'(<<_:64,
							 Rest/binary>>,
						       Z1, Z2, F@_1, F@_2, F@_3,
						       F@_4, TrUserData) ->
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo.Annotation'(Rest,
								      Z1, Z2,
								      F@_1,
								      F@_2,
								      F@_3,
								      F@_4,
								      TrUserData).

'decode_msg_google.protobuf.GeneratedCodeInfo'(Bin,
					       TrUserData) ->
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo'(Bin,
							   0, 0,
							   id([], TrUserData),
							   TrUserData).

'dfp_read_field_def_google.protobuf.GeneratedCodeInfo'(<<10,
							 Rest/binary>>,
						       Z1, Z2, F@_1,
						       TrUserData) ->
    'd_field_google.protobuf.GeneratedCodeInfo_annotation'(Rest,
							   Z1, Z2, F@_1,
							   TrUserData);
'dfp_read_field_def_google.protobuf.GeneratedCodeInfo'(<<>>,
						       0, 0, R1, TrUserData) ->
    S1 = #{},
    if R1 == '$undef' -> S1;
       true -> S1#{annotation => lists_reverse(R1, TrUserData)}
    end;
'dfp_read_field_def_google.protobuf.GeneratedCodeInfo'(Other,
						       Z1, Z2, F@_1,
						       TrUserData) ->
    'dg_read_field_def_google.protobuf.GeneratedCodeInfo'(Other,
							  Z1, Z2, F@_1,
							  TrUserData).

'dg_read_field_def_google.protobuf.GeneratedCodeInfo'(<<1:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_google.protobuf.GeneratedCodeInfo'(Rest,
							  N + 7, X bsl N + Acc,
							  F@_1, TrUserData);
'dg_read_field_def_google.protobuf.GeneratedCodeInfo'(<<0:1,
							X:7, Rest/binary>>,
						      N, Acc, F@_1,
						      TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_google.protobuf.GeneratedCodeInfo_annotation'(Rest,
								 0, 0, F@_1,
								 TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_google.protobuf.GeneratedCodeInfo'(Rest, 0,
								0, F@_1,
								TrUserData);
	    1 ->
		'skip_64_google.protobuf.GeneratedCodeInfo'(Rest, 0, 0,
							    F@_1, TrUserData);
	    2 ->
		'skip_length_delimited_google.protobuf.GeneratedCodeInfo'(Rest,
									  0, 0,
									  F@_1,
									  TrUserData);
	    3 ->
		'skip_group_google.protobuf.GeneratedCodeInfo'(Rest,
							       Key bsr 3, 0,
							       F@_1,
							       TrUserData);
	    5 ->
		'skip_32_google.protobuf.GeneratedCodeInfo'(Rest, 0, 0,
							    F@_1, TrUserData)
	  end
    end;
'dg_read_field_def_google.protobuf.GeneratedCodeInfo'(<<>>,
						      0, 0, R1, TrUserData) ->
    S1 = #{},
    if R1 == '$undef' -> S1;
       true -> S1#{annotation => lists_reverse(R1, TrUserData)}
    end.

'd_field_google.protobuf.GeneratedCodeInfo_annotation'(<<1:1,
							 X:7, Rest/binary>>,
						       N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_google.protobuf.GeneratedCodeInfo_annotation'(Rest,
							   N + 7, X bsl N + Acc,
							   F@_1, TrUserData);
'd_field_google.protobuf.GeneratedCodeInfo_annotation'(<<0:1,
							 X:7, Rest/binary>>,
						       N, Acc, Prev,
						       TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_google.protobuf.GeneratedCodeInfo.Annotation'(Bs,
											 TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo'(RestF,
							   0, 0,
							   cons(NewFValue, Prev,
								TrUserData),
							   TrUserData).

'skip_varint_google.protobuf.GeneratedCodeInfo'(<<1:1,
						  _:7, Rest/binary>>,
						Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_google.protobuf.GeneratedCodeInfo'(Rest,
						    Z1, Z2, F@_1, TrUserData);
'skip_varint_google.protobuf.GeneratedCodeInfo'(<<0:1,
						  _:7, Rest/binary>>,
						Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo'(Rest,
							   Z1, Z2, F@_1,
							   TrUserData).

'skip_length_delimited_google.protobuf.GeneratedCodeInfo'(<<1:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1,
							  TrUserData)
    when N < 57 ->
    'skip_length_delimited_google.protobuf.GeneratedCodeInfo'(Rest,
							      N + 7,
							      X bsl N + Acc,
							      F@_1, TrUserData);
'skip_length_delimited_google.protobuf.GeneratedCodeInfo'(<<0:1,
							    X:7, Rest/binary>>,
							  N, Acc, F@_1,
							  TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo'(Rest2,
							   0, 0, F@_1,
							   TrUserData).

'skip_group_google.protobuf.GeneratedCodeInfo'(Bin,
					       FNum, Z2, F@_1, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo'(Rest,
							   0, Z2, F@_1,
							   TrUserData).

'skip_32_google.protobuf.GeneratedCodeInfo'(<<_:32,
					      Rest/binary>>,
					    Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo'(Rest,
							   Z1, Z2, F@_1,
							   TrUserData).

'skip_64_google.protobuf.GeneratedCodeInfo'(<<_:64,
					      Rest/binary>>,
					    Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_google.protobuf.GeneratedCodeInfo'(Rest,
							   Z1, Z2, F@_1,
							   TrUserData).

'decode_msg_mvccpb.KeyValue'(Bin, TrUserData) ->
    'dfp_read_field_def_mvccpb.KeyValue'(Bin, 0, 0,
					 id(<<>>, TrUserData),
					 id(0, TrUserData), id(0, TrUserData),
					 id(0, TrUserData),
					 id(<<>>, TrUserData),
					 id(0, TrUserData), TrUserData).

'dfp_read_field_def_mvccpb.KeyValue'(<<10,
				       Rest/binary>>,
				     Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				     TrUserData) ->
    'd_field_mvccpb.KeyValue_key'(Rest, Z1, Z2, F@_1, F@_2,
				  F@_3, F@_4, F@_5, F@_6, TrUserData);
'dfp_read_field_def_mvccpb.KeyValue'(<<16,
				       Rest/binary>>,
				     Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				     TrUserData) ->
    'd_field_mvccpb.KeyValue_create_revision'(Rest, Z1, Z2,
					      F@_1, F@_2, F@_3, F@_4, F@_5,
					      F@_6, TrUserData);
'dfp_read_field_def_mvccpb.KeyValue'(<<24,
				       Rest/binary>>,
				     Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				     TrUserData) ->
    'd_field_mvccpb.KeyValue_mod_revision'(Rest, Z1, Z2,
					   F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
					   TrUserData);
'dfp_read_field_def_mvccpb.KeyValue'(<<32,
				       Rest/binary>>,
				     Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				     TrUserData) ->
    'd_field_mvccpb.KeyValue_version'(Rest, Z1, Z2, F@_1,
				      F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData);
'dfp_read_field_def_mvccpb.KeyValue'(<<42,
				       Rest/binary>>,
				     Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				     TrUserData) ->
    'd_field_mvccpb.KeyValue_value'(Rest, Z1, Z2, F@_1,
				    F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData);
'dfp_read_field_def_mvccpb.KeyValue'(<<48,
				       Rest/binary>>,
				     Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				     TrUserData) ->
    'd_field_mvccpb.KeyValue_lease'(Rest, Z1, Z2, F@_1,
				    F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData);
'dfp_read_field_def_mvccpb.KeyValue'(<<>>, 0, 0, F@_1,
				     F@_2, F@_3, F@_4, F@_5, F@_6, _) ->
    #{key => F@_1, create_revision => F@_2,
      mod_revision => F@_3, version => F@_4, value => F@_5,
      lease => F@_6};
'dfp_read_field_def_mvccpb.KeyValue'(Other, Z1, Z2,
				     F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				     TrUserData) ->
    'dg_read_field_def_mvccpb.KeyValue'(Other, Z1, Z2, F@_1,
					F@_2, F@_3, F@_4, F@_5, F@_6,
					TrUserData).

'dg_read_field_def_mvccpb.KeyValue'(<<1:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				    TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_mvccpb.KeyValue'(Rest, N + 7,
					X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
					F@_5, F@_6, TrUserData);
'dg_read_field_def_mvccpb.KeyValue'(<<0:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				    TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_mvccpb.KeyValue_key'(Rest, 0, 0, F@_1, F@_2,
					F@_3, F@_4, F@_5, F@_6, TrUserData);
      16 ->
	  'd_field_mvccpb.KeyValue_create_revision'(Rest, 0, 0,
						    F@_1, F@_2, F@_3, F@_4,
						    F@_5, F@_6, TrUserData);
      24 ->
	  'd_field_mvccpb.KeyValue_mod_revision'(Rest, 0, 0, F@_1,
						 F@_2, F@_3, F@_4, F@_5, F@_6,
						 TrUserData);
      32 ->
	  'd_field_mvccpb.KeyValue_version'(Rest, 0, 0, F@_1,
					    F@_2, F@_3, F@_4, F@_5, F@_6,
					    TrUserData);
      42 ->
	  'd_field_mvccpb.KeyValue_value'(Rest, 0, 0, F@_1, F@_2,
					  F@_3, F@_4, F@_5, F@_6, TrUserData);
      48 ->
	  'd_field_mvccpb.KeyValue_lease'(Rest, 0, 0, F@_1, F@_2,
					  F@_3, F@_4, F@_5, F@_6, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_mvccpb.KeyValue'(Rest, 0, 0, F@_1, F@_2,
					      F@_3, F@_4, F@_5, F@_6,
					      TrUserData);
	    1 ->
		'skip_64_mvccpb.KeyValue'(Rest, 0, 0, F@_1, F@_2, F@_3,
					  F@_4, F@_5, F@_6, TrUserData);
	    2 ->
		'skip_length_delimited_mvccpb.KeyValue'(Rest, 0, 0,
							F@_1, F@_2, F@_3, F@_4,
							F@_5, F@_6, TrUserData);
	    3 ->
		'skip_group_mvccpb.KeyValue'(Rest, Key bsr 3, 0, F@_1,
					     F@_2, F@_3, F@_4, F@_5, F@_6,
					     TrUserData);
	    5 ->
		'skip_32_mvccpb.KeyValue'(Rest, 0, 0, F@_1, F@_2, F@_3,
					  F@_4, F@_5, F@_6, TrUserData)
	  end
    end;
'dg_read_field_def_mvccpb.KeyValue'(<<>>, 0, 0, F@_1,
				    F@_2, F@_3, F@_4, F@_5, F@_6, _) ->
    #{key => F@_1, create_revision => F@_2,
      mod_revision => F@_3, version => F@_4, value => F@_5,
      lease => F@_6}.

'd_field_mvccpb.KeyValue_key'(<<1:1, X:7, Rest/binary>>,
			      N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
			      TrUserData)
    when N < 57 ->
    'd_field_mvccpb.KeyValue_key'(Rest, N + 7,
				  X bsl N + Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				  F@_6, TrUserData);
'd_field_mvccpb.KeyValue_key'(<<0:1, X:7, Rest/binary>>,
			      N, Acc, _, F@_2, F@_3, F@_4, F@_5, F@_6,
			      TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_mvccpb.KeyValue'(RestF, 0, 0,
					 NewFValue, F@_2, F@_3, F@_4, F@_5,
					 F@_6, TrUserData).

'd_field_mvccpb.KeyValue_create_revision'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					  F@_6, TrUserData)
    when N < 57 ->
    'd_field_mvccpb.KeyValue_create_revision'(Rest, N + 7,
					      X bsl N + Acc, F@_1, F@_2, F@_3,
					      F@_4, F@_5, F@_6, TrUserData);
'd_field_mvccpb.KeyValue_create_revision'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, _, F@_3, F@_4, F@_5,
					  F@_6, TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_mvccpb.KeyValue'(RestF, 0, 0, F@_1,
					 NewFValue, F@_3, F@_4, F@_5, F@_6,
					 TrUserData).

'd_field_mvccpb.KeyValue_mod_revision'(<<1:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				       F@_6, TrUserData)
    when N < 57 ->
    'd_field_mvccpb.KeyValue_mod_revision'(Rest, N + 7,
					   X bsl N + Acc, F@_1, F@_2, F@_3,
					   F@_4, F@_5, F@_6, TrUserData);
'd_field_mvccpb.KeyValue_mod_revision'(<<0:1, X:7,
					 Rest/binary>>,
				       N, Acc, F@_1, F@_2, _, F@_4, F@_5, F@_6,
				       TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_mvccpb.KeyValue'(RestF, 0, 0, F@_1,
					 F@_2, NewFValue, F@_4, F@_5, F@_6,
					 TrUserData).

'd_field_mvccpb.KeyValue_version'(<<1:1, X:7,
				    Rest/binary>>,
				  N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				  TrUserData)
    when N < 57 ->
    'd_field_mvccpb.KeyValue_version'(Rest, N + 7,
				      X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
				      F@_5, F@_6, TrUserData);
'd_field_mvccpb.KeyValue_version'(<<0:1, X:7,
				    Rest/binary>>,
				  N, Acc, F@_1, F@_2, F@_3, _, F@_5, F@_6,
				  TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_mvccpb.KeyValue'(RestF, 0, 0, F@_1,
					 F@_2, F@_3, NewFValue, F@_5, F@_6,
					 TrUserData).

'd_field_mvccpb.KeyValue_value'(<<1:1, X:7,
				  Rest/binary>>,
				N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				TrUserData)
    when N < 57 ->
    'd_field_mvccpb.KeyValue_value'(Rest, N + 7,
				    X bsl N + Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				    F@_6, TrUserData);
'd_field_mvccpb.KeyValue_value'(<<0:1, X:7,
				  Rest/binary>>,
				N, Acc, F@_1, F@_2, F@_3, F@_4, _, F@_6,
				TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_mvccpb.KeyValue'(RestF, 0, 0, F@_1,
					 F@_2, F@_3, F@_4, NewFValue, F@_6,
					 TrUserData).

'd_field_mvccpb.KeyValue_lease'(<<1:1, X:7,
				  Rest/binary>>,
				N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
				TrUserData)
    when N < 57 ->
    'd_field_mvccpb.KeyValue_lease'(Rest, N + 7,
				    X bsl N + Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
				    F@_6, TrUserData);
'd_field_mvccpb.KeyValue_lease'(<<0:1, X:7,
				  Rest/binary>>,
				N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5, _,
				TrUserData) ->
    {NewFValue, RestF} = {begin
			    <<Res:64/signed-native>> = <<(X bsl N +
							    Acc):64/unsigned-native>>,
			    id(Res, TrUserData)
			  end,
			  Rest},
    'dfp_read_field_def_mvccpb.KeyValue'(RestF, 0, 0, F@_1,
					 F@_2, F@_3, F@_4, F@_5, NewFValue,
					 TrUserData).

'skip_varint_mvccpb.KeyValue'(<<1:1, _:7, Rest/binary>>,
			      Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
			      TrUserData) ->
    'skip_varint_mvccpb.KeyValue'(Rest, Z1, Z2, F@_1, F@_2,
				  F@_3, F@_4, F@_5, F@_6, TrUserData);
'skip_varint_mvccpb.KeyValue'(<<0:1, _:7, Rest/binary>>,
			      Z1, Z2, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6,
			      TrUserData) ->
    'dfp_read_field_def_mvccpb.KeyValue'(Rest, Z1, Z2, F@_1,
					 F@_2, F@_3, F@_4, F@_5, F@_6,
					 TrUserData).

'skip_length_delimited_mvccpb.KeyValue'(<<1:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					F@_6, TrUserData)
    when N < 57 ->
    'skip_length_delimited_mvccpb.KeyValue'(Rest, N + 7,
					    X bsl N + Acc, F@_1, F@_2, F@_3,
					    F@_4, F@_5, F@_6, TrUserData);
'skip_length_delimited_mvccpb.KeyValue'(<<0:1, X:7,
					  Rest/binary>>,
					N, Acc, F@_1, F@_2, F@_3, F@_4, F@_5,
					F@_6, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_mvccpb.KeyValue'(Rest2, 0, 0, F@_1,
					 F@_2, F@_3, F@_4, F@_5, F@_6,
					 TrUserData).

'skip_group_mvccpb.KeyValue'(Bin, FNum, Z2, F@_1, F@_2,
			     F@_3, F@_4, F@_5, F@_6, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_mvccpb.KeyValue'(Rest, 0, Z2, F@_1,
					 F@_2, F@_3, F@_4, F@_5, F@_6,
					 TrUserData).

'skip_32_mvccpb.KeyValue'(<<_:32, Rest/binary>>, Z1, Z2,
			  F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) ->
    'dfp_read_field_def_mvccpb.KeyValue'(Rest, Z1, Z2, F@_1,
					 F@_2, F@_3, F@_4, F@_5, F@_6,
					 TrUserData).

'skip_64_mvccpb.KeyValue'(<<_:64, Rest/binary>>, Z1, Z2,
			  F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) ->
    'dfp_read_field_def_mvccpb.KeyValue'(Rest, Z1, Z2, F@_1,
					 F@_2, F@_3, F@_4, F@_5, F@_6,
					 TrUserData).

'decode_msg_mvccpb.Event'(Bin, TrUserData) ->
    'dfp_read_field_def_mvccpb.Event'(Bin, 0, 0,
				      id('PUT', TrUserData),
				      id('$undef', TrUserData),
				      id('$undef', TrUserData), TrUserData).

'dfp_read_field_def_mvccpb.Event'(<<8, Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'd_field_mvccpb.Event_type'(Rest, Z1, Z2, F@_1, F@_2,
				F@_3, TrUserData);
'dfp_read_field_def_mvccpb.Event'(<<18, Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'd_field_mvccpb.Event_kv'(Rest, Z1, Z2, F@_1, F@_2,
			      F@_3, TrUserData);
'dfp_read_field_def_mvccpb.Event'(<<26, Rest/binary>>,
				  Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'd_field_mvccpb.Event_prev_kv'(Rest, Z1, Z2, F@_1, F@_2,
				   F@_3, TrUserData);
'dfp_read_field_def_mvccpb.Event'(<<>>, 0, 0, F@_1,
				  F@_2, F@_3, _) ->
    S1 = #{type => F@_1},
    S2 = if F@_2 == '$undef' -> S1;
	    true -> S1#{kv => F@_2}
	 end,
    if F@_3 == '$undef' -> S2;
       true -> S2#{prev_kv => F@_3}
    end;
'dfp_read_field_def_mvccpb.Event'(Other, Z1, Z2, F@_1,
				  F@_2, F@_3, TrUserData) ->
    'dg_read_field_def_mvccpb.Event'(Other, Z1, Z2, F@_1,
				     F@_2, F@_3, TrUserData).

'dg_read_field_def_mvccpb.Event'(<<1:1, X:7,
				   Rest/binary>>,
				 N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_mvccpb.Event'(Rest, N + 7,
				     X bsl N + Acc, F@_1, F@_2, F@_3,
				     TrUserData);
'dg_read_field_def_mvccpb.Event'(<<0:1, X:7,
				   Rest/binary>>,
				 N, Acc, F@_1, F@_2, F@_3, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_mvccpb.Event_type'(Rest, 0, 0, F@_1, F@_2,
				      F@_3, TrUserData);
      18 ->
	  'd_field_mvccpb.Event_kv'(Rest, 0, 0, F@_1, F@_2, F@_3,
				    TrUserData);
      26 ->
	  'd_field_mvccpb.Event_prev_kv'(Rest, 0, 0, F@_1, F@_2,
					 F@_3, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_mvccpb.Event'(Rest, 0, 0, F@_1, F@_2, F@_3,
					   TrUserData);
	    1 ->
		'skip_64_mvccpb.Event'(Rest, 0, 0, F@_1, F@_2, F@_3,
				       TrUserData);
	    2 ->
		'skip_length_delimited_mvccpb.Event'(Rest, 0, 0, F@_1,
						     F@_2, F@_3, TrUserData);
	    3 ->
		'skip_group_mvccpb.Event'(Rest, Key bsr 3, 0, F@_1,
					  F@_2, F@_3, TrUserData);
	    5 ->
		'skip_32_mvccpb.Event'(Rest, 0, 0, F@_1, F@_2, F@_3,
				       TrUserData)
	  end
    end;
'dg_read_field_def_mvccpb.Event'(<<>>, 0, 0, F@_1, F@_2,
				 F@_3, _) ->
    S1 = #{type => F@_1},
    S2 = if F@_2 == '$undef' -> S1;
	    true -> S1#{kv => F@_2}
	 end,
    if F@_3 == '$undef' -> S2;
       true -> S2#{prev_kv => F@_3}
    end.

'd_field_mvccpb.Event_type'(<<1:1, X:7, Rest/binary>>,
			    N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_mvccpb.Event_type'(Rest, N + 7, X bsl N + Acc,
				F@_1, F@_2, F@_3, TrUserData);
'd_field_mvccpb.Event_type'(<<0:1, X:7, Rest/binary>>,
			    N, Acc, _, F@_2, F@_3, TrUserData) ->
    {NewFValue, RestF} =
	{id('d_enum_mvccpb.Event.EventType'(begin
					      <<Res:32/signed-native>> = <<(X
									      bsl
									      N
									      +
									      Acc):32/unsigned-native>>,
					      id(Res, TrUserData)
					    end),
	    TrUserData),
	 Rest},
    'dfp_read_field_def_mvccpb.Event'(RestF, 0, 0,
				      NewFValue, F@_2, F@_3, TrUserData).

'd_field_mvccpb.Event_kv'(<<1:1, X:7, Rest/binary>>, N,
			  Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_mvccpb.Event_kv'(Rest, N + 7, X bsl N + Acc,
			      F@_1, F@_2, F@_3, TrUserData);
'd_field_mvccpb.Event_kv'(<<0:1, X:7, Rest/binary>>, N,
			  Acc, F@_1, Prev, F@_3, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_mvccpb.KeyValue'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_mvccpb.Event'(RestF, 0, 0, F@_1,
				      if Prev == '$undef' -> NewFValue;
					 true ->
					     'merge_msg_mvccpb.KeyValue'(Prev,
									 NewFValue,
									 TrUserData)
				      end,
				      F@_3, TrUserData).

'd_field_mvccpb.Event_prev_kv'(<<1:1, X:7,
				 Rest/binary>>,
			       N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_mvccpb.Event_prev_kv'(Rest, N + 7,
				   X bsl N + Acc, F@_1, F@_2, F@_3, TrUserData);
'd_field_mvccpb.Event_prev_kv'(<<0:1, X:7,
				 Rest/binary>>,
			       N, Acc, F@_1, F@_2, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_mvccpb.KeyValue'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_mvccpb.Event'(RestF, 0, 0, F@_1,
				      F@_2,
				      if Prev == '$undef' -> NewFValue;
					 true ->
					     'merge_msg_mvccpb.KeyValue'(Prev,
									 NewFValue,
									 TrUserData)
				      end,
				      TrUserData).

'skip_varint_mvccpb.Event'(<<1:1, _:7, Rest/binary>>,
			   Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'skip_varint_mvccpb.Event'(Rest, Z1, Z2, F@_1, F@_2,
			       F@_3, TrUserData);
'skip_varint_mvccpb.Event'(<<0:1, _:7, Rest/binary>>,
			   Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_mvccpb.Event'(Rest, Z1, Z2, F@_1,
				      F@_2, F@_3, TrUserData).

'skip_length_delimited_mvccpb.Event'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'skip_length_delimited_mvccpb.Event'(Rest, N + 7,
					 X bsl N + Acc, F@_1, F@_2, F@_3,
					 TrUserData);
'skip_length_delimited_mvccpb.Event'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, F@_3, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_mvccpb.Event'(Rest2, 0, 0, F@_1,
				      F@_2, F@_3, TrUserData).

'skip_group_mvccpb.Event'(Bin, FNum, Z2, F@_1, F@_2,
			  F@_3, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_mvccpb.Event'(Rest, 0, Z2, F@_1,
				      F@_2, F@_3, TrUserData).

'skip_32_mvccpb.Event'(<<_:32, Rest/binary>>, Z1, Z2,
		       F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_mvccpb.Event'(Rest, Z1, Z2, F@_1,
				      F@_2, F@_3, TrUserData).

'skip_64_mvccpb.Event'(<<_:64, Rest/binary>>, Z1, Z2,
		       F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_mvccpb.Event'(Rest, Z1, Z2, F@_1,
				      F@_2, F@_3, TrUserData).

'decode_msg_authpb.UserAddOptions'(Bin, TrUserData) ->
    'dfp_read_field_def_authpb.UserAddOptions'(Bin, 0, 0,
					       id(false, TrUserData),
					       TrUserData).

'dfp_read_field_def_authpb.UserAddOptions'(<<8,
					     Rest/binary>>,
					   Z1, Z2, F@_1, TrUserData) ->
    'd_field_authpb.UserAddOptions_no_password'(Rest, Z1,
						Z2, F@_1, TrUserData);
'dfp_read_field_def_authpb.UserAddOptions'(<<>>, 0, 0,
					   F@_1, _) ->
    #{no_password => F@_1};
'dfp_read_field_def_authpb.UserAddOptions'(Other, Z1,
					   Z2, F@_1, TrUserData) ->
    'dg_read_field_def_authpb.UserAddOptions'(Other, Z1, Z2,
					      F@_1, TrUserData).

'dg_read_field_def_authpb.UserAddOptions'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_authpb.UserAddOptions'(Rest, N + 7,
					      X bsl N + Acc, F@_1, TrUserData);
'dg_read_field_def_authpb.UserAddOptions'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_authpb.UserAddOptions_no_password'(Rest, 0, 0,
						      F@_1, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_authpb.UserAddOptions'(Rest, 0, 0, F@_1,
						    TrUserData);
	    1 ->
		'skip_64_authpb.UserAddOptions'(Rest, 0, 0, F@_1,
						TrUserData);
	    2 ->
		'skip_length_delimited_authpb.UserAddOptions'(Rest, 0,
							      0, F@_1,
							      TrUserData);
	    3 ->
		'skip_group_authpb.UserAddOptions'(Rest, Key bsr 3, 0,
						   F@_1, TrUserData);
	    5 ->
		'skip_32_authpb.UserAddOptions'(Rest, 0, 0, F@_1,
						TrUserData)
	  end
    end;
'dg_read_field_def_authpb.UserAddOptions'(<<>>, 0, 0,
					  F@_1, _) ->
    #{no_password => F@_1}.

'd_field_authpb.UserAddOptions_no_password'(<<1:1, X:7,
					      Rest/binary>>,
					    N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'd_field_authpb.UserAddOptions_no_password'(Rest, N + 7,
						X bsl N + Acc, F@_1,
						TrUserData);
'd_field_authpb.UserAddOptions_no_password'(<<0:1, X:7,
					      Rest/binary>>,
					    N, Acc, _, TrUserData) ->
    {NewFValue, RestF} = {id(X bsl N + Acc =/= 0,
			     TrUserData),
			  Rest},
    'dfp_read_field_def_authpb.UserAddOptions'(RestF, 0, 0,
					       NewFValue, TrUserData).

'skip_varint_authpb.UserAddOptions'(<<1:1, _:7,
				      Rest/binary>>,
				    Z1, Z2, F@_1, TrUserData) ->
    'skip_varint_authpb.UserAddOptions'(Rest, Z1, Z2, F@_1,
					TrUserData);
'skip_varint_authpb.UserAddOptions'(<<0:1, _:7,
				      Rest/binary>>,
				    Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_authpb.UserAddOptions'(Rest, Z1, Z2,
					       F@_1, TrUserData).

'skip_length_delimited_authpb.UserAddOptions'(<<1:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, TrUserData)
    when N < 57 ->
    'skip_length_delimited_authpb.UserAddOptions'(Rest,
						  N + 7, X bsl N + Acc, F@_1,
						  TrUserData);
'skip_length_delimited_authpb.UserAddOptions'(<<0:1,
						X:7, Rest/binary>>,
					      N, Acc, F@_1, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_authpb.UserAddOptions'(Rest2, 0, 0,
					       F@_1, TrUserData).

'skip_group_authpb.UserAddOptions'(Bin, FNum, Z2, F@_1,
				   TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_authpb.UserAddOptions'(Rest, 0, Z2,
					       F@_1, TrUserData).

'skip_32_authpb.UserAddOptions'(<<_:32, Rest/binary>>,
				Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_authpb.UserAddOptions'(Rest, Z1, Z2,
					       F@_1, TrUserData).

'skip_64_authpb.UserAddOptions'(<<_:64, Rest/binary>>,
				Z1, Z2, F@_1, TrUserData) ->
    'dfp_read_field_def_authpb.UserAddOptions'(Rest, Z1, Z2,
					       F@_1, TrUserData).

'decode_msg_authpb.User'(Bin, TrUserData) ->
    'dfp_read_field_def_authpb.User'(Bin, 0, 0,
				     id(<<>>, TrUserData), id(<<>>, TrUserData),
				     id([], TrUserData),
				     id('$undef', TrUserData), TrUserData).

'dfp_read_field_def_authpb.User'(<<10, Rest/binary>>,
				 Z1, Z2, F@_1, F@_2, F@_3, F@_4, TrUserData) ->
    'd_field_authpb.User_name'(Rest, Z1, Z2, F@_1, F@_2,
			       F@_3, F@_4, TrUserData);
'dfp_read_field_def_authpb.User'(<<18, Rest/binary>>,
				 Z1, Z2, F@_1, F@_2, F@_3, F@_4, TrUserData) ->
    'd_field_authpb.User_password'(Rest, Z1, Z2, F@_1, F@_2,
				   F@_3, F@_4, TrUserData);
'dfp_read_field_def_authpb.User'(<<26, Rest/binary>>,
				 Z1, Z2, F@_1, F@_2, F@_3, F@_4, TrUserData) ->
    'd_field_authpb.User_roles'(Rest, Z1, Z2, F@_1, F@_2,
				F@_3, F@_4, TrUserData);
'dfp_read_field_def_authpb.User'(<<34, Rest/binary>>,
				 Z1, Z2, F@_1, F@_2, F@_3, F@_4, TrUserData) ->
    'd_field_authpb.User_options'(Rest, Z1, Z2, F@_1, F@_2,
				  F@_3, F@_4, TrUserData);
'dfp_read_field_def_authpb.User'(<<>>, 0, 0, F@_1, F@_2,
				 R1, F@_4, TrUserData) ->
    S1 = #{name => F@_1, password => F@_2,
	   roles => lists_reverse(R1, TrUserData)},
    if F@_4 == '$undef' -> S1;
       true -> S1#{options => F@_4}
    end;
'dfp_read_field_def_authpb.User'(Other, Z1, Z2, F@_1,
				 F@_2, F@_3, F@_4, TrUserData) ->
    'dg_read_field_def_authpb.User'(Other, Z1, Z2, F@_1,
				    F@_2, F@_3, F@_4, TrUserData).

'dg_read_field_def_authpb.User'(<<1:1, X:7,
				  Rest/binary>>,
				N, Acc, F@_1, F@_2, F@_3, F@_4, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_authpb.User'(Rest, N + 7,
				    X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
				    TrUserData);
'dg_read_field_def_authpb.User'(<<0:1, X:7,
				  Rest/binary>>,
				N, Acc, F@_1, F@_2, F@_3, F@_4, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_authpb.User_name'(Rest, 0, 0, F@_1, F@_2, F@_3,
				     F@_4, TrUserData);
      18 ->
	  'd_field_authpb.User_password'(Rest, 0, 0, F@_1, F@_2,
					 F@_3, F@_4, TrUserData);
      26 ->
	  'd_field_authpb.User_roles'(Rest, 0, 0, F@_1, F@_2,
				      F@_3, F@_4, TrUserData);
      34 ->
	  'd_field_authpb.User_options'(Rest, 0, 0, F@_1, F@_2,
					F@_3, F@_4, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_authpb.User'(Rest, 0, 0, F@_1, F@_2, F@_3,
					  F@_4, TrUserData);
	    1 ->
		'skip_64_authpb.User'(Rest, 0, 0, F@_1, F@_2, F@_3,
				      F@_4, TrUserData);
	    2 ->
		'skip_length_delimited_authpb.User'(Rest, 0, 0, F@_1,
						    F@_2, F@_3, F@_4,
						    TrUserData);
	    3 ->
		'skip_group_authpb.User'(Rest, Key bsr 3, 0, F@_1, F@_2,
					 F@_3, F@_4, TrUserData);
	    5 ->
		'skip_32_authpb.User'(Rest, 0, 0, F@_1, F@_2, F@_3,
				      F@_4, TrUserData)
	  end
    end;
'dg_read_field_def_authpb.User'(<<>>, 0, 0, F@_1, F@_2,
				R1, F@_4, TrUserData) ->
    S1 = #{name => F@_1, password => F@_2,
	   roles => lists_reverse(R1, TrUserData)},
    if F@_4 == '$undef' -> S1;
       true -> S1#{options => F@_4}
    end.

'd_field_authpb.User_name'(<<1:1, X:7, Rest/binary>>, N,
			   Acc, F@_1, F@_2, F@_3, F@_4, TrUserData)
    when N < 57 ->
    'd_field_authpb.User_name'(Rest, N + 7, X bsl N + Acc,
			       F@_1, F@_2, F@_3, F@_4, TrUserData);
'd_field_authpb.User_name'(<<0:1, X:7, Rest/binary>>, N,
			   Acc, _, F@_2, F@_3, F@_4, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_authpb.User'(RestF, 0, 0, NewFValue,
				     F@_2, F@_3, F@_4, TrUserData).

'd_field_authpb.User_password'(<<1:1, X:7,
				 Rest/binary>>,
			       N, Acc, F@_1, F@_2, F@_3, F@_4, TrUserData)
    when N < 57 ->
    'd_field_authpb.User_password'(Rest, N + 7,
				   X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
				   TrUserData);
'd_field_authpb.User_password'(<<0:1, X:7,
				 Rest/binary>>,
			       N, Acc, F@_1, _, F@_3, F@_4, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_authpb.User'(RestF, 0, 0, F@_1,
				     NewFValue, F@_3, F@_4, TrUserData).

'd_field_authpb.User_roles'(<<1:1, X:7, Rest/binary>>,
			    N, Acc, F@_1, F@_2, F@_3, F@_4, TrUserData)
    when N < 57 ->
    'd_field_authpb.User_roles'(Rest, N + 7, X bsl N + Acc,
				F@_1, F@_2, F@_3, F@_4, TrUserData);
'd_field_authpb.User_roles'(<<0:1, X:7, Rest/binary>>,
			    N, Acc, F@_1, F@_2, Prev, F@_4, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_authpb.User'(RestF, 0, 0, F@_1,
				     F@_2, cons(NewFValue, Prev, TrUserData),
				     F@_4, TrUserData).

'd_field_authpb.User_options'(<<1:1, X:7, Rest/binary>>,
			      N, Acc, F@_1, F@_2, F@_3, F@_4, TrUserData)
    when N < 57 ->
    'd_field_authpb.User_options'(Rest, N + 7,
				  X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
				  TrUserData);
'd_field_authpb.User_options'(<<0:1, X:7, Rest/binary>>,
			      N, Acc, F@_1, F@_2, F@_3, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_authpb.UserAddOptions'(Bs,
								  TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_authpb.User'(RestF, 0, 0, F@_1,
				     F@_2, F@_3,
				     if Prev == '$undef' -> NewFValue;
					true ->
					    'merge_msg_authpb.UserAddOptions'(Prev,
									      NewFValue,
									      TrUserData)
				     end,
				     TrUserData).

'skip_varint_authpb.User'(<<1:1, _:7, Rest/binary>>, Z1,
			  Z2, F@_1, F@_2, F@_3, F@_4, TrUserData) ->
    'skip_varint_authpb.User'(Rest, Z1, Z2, F@_1, F@_2,
			      F@_3, F@_4, TrUserData);
'skip_varint_authpb.User'(<<0:1, _:7, Rest/binary>>, Z1,
			  Z2, F@_1, F@_2, F@_3, F@_4, TrUserData) ->
    'dfp_read_field_def_authpb.User'(Rest, Z1, Z2, F@_1,
				     F@_2, F@_3, F@_4, TrUserData).

'skip_length_delimited_authpb.User'(<<1:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, F@_2, F@_3, F@_4, TrUserData)
    when N < 57 ->
    'skip_length_delimited_authpb.User'(Rest, N + 7,
					X bsl N + Acc, F@_1, F@_2, F@_3, F@_4,
					TrUserData);
'skip_length_delimited_authpb.User'(<<0:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, F@_2, F@_3, F@_4,
				    TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_authpb.User'(Rest2, 0, 0, F@_1,
				     F@_2, F@_3, F@_4, TrUserData).

'skip_group_authpb.User'(Bin, FNum, Z2, F@_1, F@_2,
			 F@_3, F@_4, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_authpb.User'(Rest, 0, Z2, F@_1,
				     F@_2, F@_3, F@_4, TrUserData).

'skip_32_authpb.User'(<<_:32, Rest/binary>>, Z1, Z2,
		      F@_1, F@_2, F@_3, F@_4, TrUserData) ->
    'dfp_read_field_def_authpb.User'(Rest, Z1, Z2, F@_1,
				     F@_2, F@_3, F@_4, TrUserData).

'skip_64_authpb.User'(<<_:64, Rest/binary>>, Z1, Z2,
		      F@_1, F@_2, F@_3, F@_4, TrUserData) ->
    'dfp_read_field_def_authpb.User'(Rest, Z1, Z2, F@_1,
				     F@_2, F@_3, F@_4, TrUserData).

'decode_msg_authpb.Permission'(Bin, TrUserData) ->
    'dfp_read_field_def_authpb.Permission'(Bin, 0, 0,
					   id('READ', TrUserData),
					   id(<<>>, TrUserData),
					   id(<<>>, TrUserData), TrUserData).

'dfp_read_field_def_authpb.Permission'(<<8,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'd_field_authpb.Permission_permType'(Rest, Z1, Z2, F@_1,
					 F@_2, F@_3, TrUserData);
'dfp_read_field_def_authpb.Permission'(<<18,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'd_field_authpb.Permission_key'(Rest, Z1, Z2, F@_1,
				    F@_2, F@_3, TrUserData);
'dfp_read_field_def_authpb.Permission'(<<26,
					 Rest/binary>>,
				       Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'd_field_authpb.Permission_range_end'(Rest, Z1, Z2,
					  F@_1, F@_2, F@_3, TrUserData);
'dfp_read_field_def_authpb.Permission'(<<>>, 0, 0, F@_1,
				       F@_2, F@_3, _) ->
    #{permType => F@_1, key => F@_2, range_end => F@_3};
'dfp_read_field_def_authpb.Permission'(Other, Z1, Z2,
				       F@_1, F@_2, F@_3, TrUserData) ->
    'dg_read_field_def_authpb.Permission'(Other, Z1, Z2,
					  F@_1, F@_2, F@_3, TrUserData).

'dg_read_field_def_authpb.Permission'(<<1:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_authpb.Permission'(Rest, N + 7,
					  X bsl N + Acc, F@_1, F@_2, F@_3,
					  TrUserData);
'dg_read_field_def_authpb.Permission'(<<0:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, F@_2, F@_3, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      8 ->
	  'd_field_authpb.Permission_permType'(Rest, 0, 0, F@_1,
					       F@_2, F@_3, TrUserData);
      18 ->
	  'd_field_authpb.Permission_key'(Rest, 0, 0, F@_1, F@_2,
					  F@_3, TrUserData);
      26 ->
	  'd_field_authpb.Permission_range_end'(Rest, 0, 0, F@_1,
						F@_2, F@_3, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_authpb.Permission'(Rest, 0, 0, F@_1, F@_2,
						F@_3, TrUserData);
	    1 ->
		'skip_64_authpb.Permission'(Rest, 0, 0, F@_1, F@_2,
					    F@_3, TrUserData);
	    2 ->
		'skip_length_delimited_authpb.Permission'(Rest, 0, 0,
							  F@_1, F@_2, F@_3,
							  TrUserData);
	    3 ->
		'skip_group_authpb.Permission'(Rest, Key bsr 3, 0, F@_1,
					       F@_2, F@_3, TrUserData);
	    5 ->
		'skip_32_authpb.Permission'(Rest, 0, 0, F@_1, F@_2,
					    F@_3, TrUserData)
	  end
    end;
'dg_read_field_def_authpb.Permission'(<<>>, 0, 0, F@_1,
				      F@_2, F@_3, _) ->
    #{permType => F@_1, key => F@_2, range_end => F@_3}.

'd_field_authpb.Permission_permType'(<<1:1, X:7,
				       Rest/binary>>,
				     N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_authpb.Permission_permType'(Rest, N + 7,
					 X bsl N + Acc, F@_1, F@_2, F@_3,
					 TrUserData);
'd_field_authpb.Permission_permType'(<<0:1, X:7,
				       Rest/binary>>,
				     N, Acc, _, F@_2, F@_3, TrUserData) ->
    {NewFValue, RestF} =
	{id('d_enum_authpb.Permission.Type'(begin
					      <<Res:32/signed-native>> = <<(X
									      bsl
									      N
									      +
									      Acc):32/unsigned-native>>,
					      id(Res, TrUserData)
					    end),
	    TrUserData),
	 Rest},
    'dfp_read_field_def_authpb.Permission'(RestF, 0, 0,
					   NewFValue, F@_2, F@_3, TrUserData).

'd_field_authpb.Permission_key'(<<1:1, X:7,
				  Rest/binary>>,
				N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_authpb.Permission_key'(Rest, N + 7,
				    X bsl N + Acc, F@_1, F@_2, F@_3,
				    TrUserData);
'd_field_authpb.Permission_key'(<<0:1, X:7,
				  Rest/binary>>,
				N, Acc, F@_1, _, F@_3, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_authpb.Permission'(RestF, 0, 0,
					   F@_1, NewFValue, F@_3, TrUserData).

'd_field_authpb.Permission_range_end'(<<1:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'd_field_authpb.Permission_range_end'(Rest, N + 7,
					  X bsl N + Acc, F@_1, F@_2, F@_3,
					  TrUserData);
'd_field_authpb.Permission_range_end'(<<0:1, X:7,
					Rest/binary>>,
				      N, Acc, F@_1, F@_2, _, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_authpb.Permission'(RestF, 0, 0,
					   F@_1, F@_2, NewFValue, TrUserData).

'skip_varint_authpb.Permission'(<<1:1, _:7,
				  Rest/binary>>,
				Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'skip_varint_authpb.Permission'(Rest, Z1, Z2, F@_1,
				    F@_2, F@_3, TrUserData);
'skip_varint_authpb.Permission'(<<0:1, _:7,
				  Rest/binary>>,
				Z1, Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_authpb.Permission'(Rest, Z1, Z2,
					   F@_1, F@_2, F@_3, TrUserData).

'skip_length_delimited_authpb.Permission'(<<1:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, F@_3, TrUserData)
    when N < 57 ->
    'skip_length_delimited_authpb.Permission'(Rest, N + 7,
					      X bsl N + Acc, F@_1, F@_2, F@_3,
					      TrUserData);
'skip_length_delimited_authpb.Permission'(<<0:1, X:7,
					    Rest/binary>>,
					  N, Acc, F@_1, F@_2, F@_3,
					  TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_authpb.Permission'(Rest2, 0, 0,
					   F@_1, F@_2, F@_3, TrUserData).

'skip_group_authpb.Permission'(Bin, FNum, Z2, F@_1,
			       F@_2, F@_3, TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_authpb.Permission'(Rest, 0, Z2,
					   F@_1, F@_2, F@_3, TrUserData).

'skip_32_authpb.Permission'(<<_:32, Rest/binary>>, Z1,
			    Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_authpb.Permission'(Rest, Z1, Z2,
					   F@_1, F@_2, F@_3, TrUserData).

'skip_64_authpb.Permission'(<<_:64, Rest/binary>>, Z1,
			    Z2, F@_1, F@_2, F@_3, TrUserData) ->
    'dfp_read_field_def_authpb.Permission'(Rest, Z1, Z2,
					   F@_1, F@_2, F@_3, TrUserData).

'decode_msg_authpb.Role'(Bin, TrUserData) ->
    'dfp_read_field_def_authpb.Role'(Bin, 0, 0,
				     id(<<>>, TrUserData), id([], TrUserData),
				     TrUserData).

'dfp_read_field_def_authpb.Role'(<<10, Rest/binary>>,
				 Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_authpb.Role_name'(Rest, Z1, Z2, F@_1, F@_2,
			       TrUserData);
'dfp_read_field_def_authpb.Role'(<<18, Rest/binary>>,
				 Z1, Z2, F@_1, F@_2, TrUserData) ->
    'd_field_authpb.Role_keyPermission'(Rest, Z1, Z2, F@_1,
					F@_2, TrUserData);
'dfp_read_field_def_authpb.Role'(<<>>, 0, 0, F@_1, R1,
				 TrUserData) ->
    S1 = #{name => F@_1},
    if R1 == '$undef' -> S1;
       true ->
	   S1#{keyPermission => lists_reverse(R1, TrUserData)}
    end;
'dfp_read_field_def_authpb.Role'(Other, Z1, Z2, F@_1,
				 F@_2, TrUserData) ->
    'dg_read_field_def_authpb.Role'(Other, Z1, Z2, F@_1,
				    F@_2, TrUserData).

'dg_read_field_def_authpb.Role'(<<1:1, X:7,
				  Rest/binary>>,
				N, Acc, F@_1, F@_2, TrUserData)
    when N < 32 - 7 ->
    'dg_read_field_def_authpb.Role'(Rest, N + 7,
				    X bsl N + Acc, F@_1, F@_2, TrUserData);
'dg_read_field_def_authpb.Role'(<<0:1, X:7,
				  Rest/binary>>,
				N, Acc, F@_1, F@_2, TrUserData) ->
    Key = X bsl N + Acc,
    case Key of
      10 ->
	  'd_field_authpb.Role_name'(Rest, 0, 0, F@_1, F@_2,
				     TrUserData);
      18 ->
	  'd_field_authpb.Role_keyPermission'(Rest, 0, 0, F@_1,
					      F@_2, TrUserData);
      _ ->
	  case Key band 7 of
	    0 ->
		'skip_varint_authpb.Role'(Rest, 0, 0, F@_1, F@_2,
					  TrUserData);
	    1 ->
		'skip_64_authpb.Role'(Rest, 0, 0, F@_1, F@_2,
				      TrUserData);
	    2 ->
		'skip_length_delimited_authpb.Role'(Rest, 0, 0, F@_1,
						    F@_2, TrUserData);
	    3 ->
		'skip_group_authpb.Role'(Rest, Key bsr 3, 0, F@_1, F@_2,
					 TrUserData);
	    5 ->
		'skip_32_authpb.Role'(Rest, 0, 0, F@_1, F@_2,
				      TrUserData)
	  end
    end;
'dg_read_field_def_authpb.Role'(<<>>, 0, 0, F@_1, R1,
				TrUserData) ->
    S1 = #{name => F@_1},
    if R1 == '$undef' -> S1;
       true ->
	   S1#{keyPermission => lists_reverse(R1, TrUserData)}
    end.

'd_field_authpb.Role_name'(<<1:1, X:7, Rest/binary>>, N,
			   Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_authpb.Role_name'(Rest, N + 7, X bsl N + Acc,
			       F@_1, F@_2, TrUserData);
'd_field_authpb.Role_name'(<<0:1, X:7, Rest/binary>>, N,
			   Acc, _, F@_2, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bytes:Len/binary, Rest2/binary>> = Rest,
			   {id(binary:copy(Bytes), TrUserData), Rest2}
			 end,
    'dfp_read_field_def_authpb.Role'(RestF, 0, 0, NewFValue,
				     F@_2, TrUserData).

'd_field_authpb.Role_keyPermission'(<<1:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'd_field_authpb.Role_keyPermission'(Rest, N + 7,
					X bsl N + Acc, F@_1, F@_2, TrUserData);
'd_field_authpb.Role_keyPermission'(<<0:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, Prev, TrUserData) ->
    {NewFValue, RestF} = begin
			   Len = X bsl N + Acc,
			   <<Bs:Len/binary, Rest2/binary>> = Rest,
			   {id('decode_msg_authpb.Permission'(Bs, TrUserData),
			       TrUserData),
			    Rest2}
			 end,
    'dfp_read_field_def_authpb.Role'(RestF, 0, 0, F@_1,
				     cons(NewFValue, Prev, TrUserData),
				     TrUserData).

'skip_varint_authpb.Role'(<<1:1, _:7, Rest/binary>>, Z1,
			  Z2, F@_1, F@_2, TrUserData) ->
    'skip_varint_authpb.Role'(Rest, Z1, Z2, F@_1, F@_2,
			      TrUserData);
'skip_varint_authpb.Role'(<<0:1, _:7, Rest/binary>>, Z1,
			  Z2, F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_authpb.Role'(Rest, Z1, Z2, F@_1,
				     F@_2, TrUserData).

'skip_length_delimited_authpb.Role'(<<1:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, F@_2, TrUserData)
    when N < 57 ->
    'skip_length_delimited_authpb.Role'(Rest, N + 7,
					X bsl N + Acc, F@_1, F@_2, TrUserData);
'skip_length_delimited_authpb.Role'(<<0:1, X:7,
				      Rest/binary>>,
				    N, Acc, F@_1, F@_2, TrUserData) ->
    Length = X bsl N + Acc,
    <<_:Length/binary, Rest2/binary>> = Rest,
    'dfp_read_field_def_authpb.Role'(Rest2, 0, 0, F@_1,
				     F@_2, TrUserData).

'skip_group_authpb.Role'(Bin, FNum, Z2, F@_1, F@_2,
			 TrUserData) ->
    {_, Rest} = read_group(Bin, FNum),
    'dfp_read_field_def_authpb.Role'(Rest, 0, Z2, F@_1,
				     F@_2, TrUserData).

'skip_32_authpb.Role'(<<_:32, Rest/binary>>, Z1, Z2,
		      F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_authpb.Role'(Rest, Z1, Z2, F@_1,
				     F@_2, TrUserData).

'skip_64_authpb.Role'(<<_:64, Rest/binary>>, Z1, Z2,
		      F@_1, F@_2, TrUserData) ->
    'dfp_read_field_def_authpb.Role'(Rest, Z1, Z2, F@_1,
				     F@_2, TrUserData).

'd_enum_Etcd.RangeRequest.SortOrder'(0) -> 'NONE';
'd_enum_Etcd.RangeRequest.SortOrder'(1) -> 'ASCEND';
'd_enum_Etcd.RangeRequest.SortOrder'(2) -> 'DESCEND';
'd_enum_Etcd.RangeRequest.SortOrder'(V) -> V.

'd_enum_Etcd.RangeRequest.SortTarget'(0) -> 'KEY';
'd_enum_Etcd.RangeRequest.SortTarget'(1) -> 'VERSION';
'd_enum_Etcd.RangeRequest.SortTarget'(2) -> 'CREATE';
'd_enum_Etcd.RangeRequest.SortTarget'(3) -> 'MOD';
'd_enum_Etcd.RangeRequest.SortTarget'(4) -> 'VALUE';
'd_enum_Etcd.RangeRequest.SortTarget'(V) -> V.

'd_enum_Etcd.Compare.CompareResult'(0) -> 'EQUAL';
'd_enum_Etcd.Compare.CompareResult'(1) -> 'GREATER';
'd_enum_Etcd.Compare.CompareResult'(2) -> 'LESS';
'd_enum_Etcd.Compare.CompareResult'(3) -> 'NOT_EQUAL';
'd_enum_Etcd.Compare.CompareResult'(V) -> V.

'd_enum_Etcd.Compare.CompareTarget'(0) -> 'VERSION';
'd_enum_Etcd.Compare.CompareTarget'(1) -> 'CREATE';
'd_enum_Etcd.Compare.CompareTarget'(2) -> 'MOD';
'd_enum_Etcd.Compare.CompareTarget'(3) -> 'VALUE';
'd_enum_Etcd.Compare.CompareTarget'(4) -> 'LEASE';
'd_enum_Etcd.Compare.CompareTarget'(V) -> V.

'd_enum_Etcd.WatchCreateRequest.FilterType'(0) ->
    'NOPUT';
'd_enum_Etcd.WatchCreateRequest.FilterType'(1) ->
    'NODELETE';
'd_enum_Etcd.WatchCreateRequest.FilterType'(V) -> V.

'd_enum_Etcd.AlarmType'(0) -> 'NONE';
'd_enum_Etcd.AlarmType'(1) -> 'NOSPACE';
'd_enum_Etcd.AlarmType'(2) -> 'CORRUPT';
'd_enum_Etcd.AlarmType'(V) -> V.

'd_enum_Etcd.AlarmRequest.AlarmAction'(0) -> 'GET';
'd_enum_Etcd.AlarmRequest.AlarmAction'(1) -> 'ACTIVATE';
'd_enum_Etcd.AlarmRequest.AlarmAction'(2) ->
    'DEACTIVATE';
'd_enum_Etcd.AlarmRequest.AlarmAction'(V) -> V.

'd_enum_Etcd.HealthCheckResponse.ServingStatus'(0) ->
    'UNKNOWN';
'd_enum_Etcd.HealthCheckResponse.ServingStatus'(1) ->
    'SERVING';
'd_enum_Etcd.HealthCheckResponse.ServingStatus'(2) ->
    'NOT_SERVING';
'd_enum_Etcd.HealthCheckResponse.ServingStatus'(3) ->
    'SERVICE_UNKNOWN';
'd_enum_Etcd.HealthCheckResponse.ServingStatus'(V) -> V.

'd_enum_google.protobuf.FieldDescriptorProto.Type'(1) ->
    'TYPE_DOUBLE';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(2) ->
    'TYPE_FLOAT';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(3) ->
    'TYPE_INT64';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(4) ->
    'TYPE_UINT64';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(5) ->
    'TYPE_INT32';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(6) ->
    'TYPE_FIXED64';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(7) ->
    'TYPE_FIXED32';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(8) ->
    'TYPE_BOOL';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(9) ->
    'TYPE_STRING';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(10) ->
    'TYPE_GROUP';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(11) ->
    'TYPE_MESSAGE';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(12) ->
    'TYPE_BYTES';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(13) ->
    'TYPE_UINT32';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(14) ->
    'TYPE_ENUM';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(15) ->
    'TYPE_SFIXED32';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(16) ->
    'TYPE_SFIXED64';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(17) ->
    'TYPE_SINT32';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(18) ->
    'TYPE_SINT64';
'd_enum_google.protobuf.FieldDescriptorProto.Type'(V) ->
    V.

'd_enum_google.protobuf.FieldDescriptorProto.Label'(1) ->
    'LABEL_OPTIONAL';
'd_enum_google.protobuf.FieldDescriptorProto.Label'(2) ->
    'LABEL_REQUIRED';
'd_enum_google.protobuf.FieldDescriptorProto.Label'(3) ->
    'LABEL_REPEATED';
'd_enum_google.protobuf.FieldDescriptorProto.Label'(V) ->
    V.

'd_enum_google.protobuf.FileOptions.OptimizeMode'(1) ->
    'SPEED';
'd_enum_google.protobuf.FileOptions.OptimizeMode'(2) ->
    'CODE_SIZE';
'd_enum_google.protobuf.FileOptions.OptimizeMode'(3) ->
    'LITE_RUNTIME';
'd_enum_google.protobuf.FileOptions.OptimizeMode'(V) ->
    V.

'd_enum_google.protobuf.FieldOptions.CType'(0) ->
    'STRING';
'd_enum_google.protobuf.FieldOptions.CType'(1) ->
    'CORD';
'd_enum_google.protobuf.FieldOptions.CType'(2) ->
    'STRING_PIECE';
'd_enum_google.protobuf.FieldOptions.CType'(V) -> V.

'd_enum_google.protobuf.FieldOptions.JSType'(0) ->
    'JS_NORMAL';
'd_enum_google.protobuf.FieldOptions.JSType'(1) ->
    'JS_STRING';
'd_enum_google.protobuf.FieldOptions.JSType'(2) ->
    'JS_NUMBER';
'd_enum_google.protobuf.FieldOptions.JSType'(V) -> V.

'd_enum_mvccpb.Event.EventType'(0) -> 'PUT';
'd_enum_mvccpb.Event.EventType'(1) -> 'DELETE';
'd_enum_mvccpb.Event.EventType'(V) -> V.

'd_enum_authpb.Permission.Type'(0) -> 'READ';
'd_enum_authpb.Permission.Type'(1) -> 'WRITE';
'd_enum_authpb.Permission.Type'(2) -> 'READWRITE';
'd_enum_authpb.Permission.Type'(V) -> V.

read_group(Bin, FieldNum) ->
    {NumBytes, EndTagLen} = read_gr_b(Bin, 0, 0, 0, 0, FieldNum),
    <<Group:NumBytes/binary, _:EndTagLen/binary, Rest/binary>> = Bin,
    {Group, Rest}.

%% Like skipping over fields, but record the total length,
%% Each field is <(FieldNum bsl 3) bor FieldType> ++ <FieldValue>
%% Record the length because varints may be non-optimally encoded.
%%
%% Groups can be nested, but assume the same FieldNum cannot be nested
%% because group field numbers are shared with the rest of the fields
%% numbers. Thus we can search just for an group-end with the same
%% field number.
%%
%% (The only time the same group field number could occur would
%% be in a nested sub message, but then it would be inside a
%% length-delimited entry, which we skip-read by length.)
read_gr_b(<<1:1, X:7, Tl/binary>>, N, Acc, NumBytes, TagLen, FieldNum)
  when N < (32-7) ->
    read_gr_b(Tl, N+7, X bsl N + Acc, NumBytes, TagLen+1, FieldNum);
read_gr_b(<<0:1, X:7, Tl/binary>>, N, Acc, NumBytes, TagLen,
          FieldNum) ->
    Key = X bsl N + Acc,
    TagLen1 = TagLen + 1,
    case {Key bsr 3, Key band 7} of
        {FieldNum, 4} -> % 4 = group_end
            {NumBytes, TagLen1};
        {_, 0} -> % 0 = varint
            read_gr_vi(Tl, 0, NumBytes + TagLen1, FieldNum);
        {_, 1} -> % 1 = bits64
            <<_:64, Tl2/binary>> = Tl,
            read_gr_b(Tl2, 0, 0, NumBytes + TagLen1 + 8, 0, FieldNum);
        {_, 2} -> % 2 = length_delimited
            read_gr_ld(Tl, 0, 0, NumBytes + TagLen1, FieldNum);
        {_, 3} -> % 3 = group_start
            read_gr_b(Tl, 0, 0, NumBytes + TagLen1, 0, FieldNum);
        {_, 4} -> % 4 = group_end
            read_gr_b(Tl, 0, 0, NumBytes + TagLen1, 0, FieldNum);
        {_, 5} -> % 5 = bits32
            <<_:32, Tl2/binary>> = Tl,
            read_gr_b(Tl2, 0, 0, NumBytes + TagLen1 + 4, 0, FieldNum)
    end.

read_gr_vi(<<1:1, _:7, Tl/binary>>, N, NumBytes, FieldNum)
  when N < (64-7) ->
    read_gr_vi(Tl, N+7, NumBytes+1, FieldNum);
read_gr_vi(<<0:1, _:7, Tl/binary>>, _, NumBytes, FieldNum) ->
    read_gr_b(Tl, 0, 0, NumBytes+1, 0, FieldNum).

read_gr_ld(<<1:1, X:7, Tl/binary>>, N, Acc, NumBytes, FieldNum)
  when N < (64-7) ->
    read_gr_ld(Tl, N+7, X bsl N + Acc, NumBytes+1, FieldNum);
read_gr_ld(<<0:1, X:7, Tl/binary>>, N, Acc, NumBytes, FieldNum) ->
    Len = X bsl N + Acc,
    NumBytes1 = NumBytes + 1,
    <<_:Len/binary, Tl2/binary>> = Tl,
    read_gr_b(Tl2, 0, 0, NumBytes1 + Len, 0, FieldNum).

merge_msgs(Prev, New, MsgName) when is_atom(MsgName) ->
    merge_msgs(Prev, New, MsgName, []).

merge_msgs(Prev, New, MsgName, Opts) ->
    TrUserData = proplists:get_value(user_data, Opts),
    case MsgName of
      'Etcd.ResponseHeader' ->
	  'merge_msg_Etcd.ResponseHeader'(Prev, New, TrUserData);
      'Etcd.RangeRequest' ->
	  'merge_msg_Etcd.RangeRequest'(Prev, New, TrUserData);
      'Etcd.RangeResponse' ->
	  'merge_msg_Etcd.RangeResponse'(Prev, New, TrUserData);
      'Etcd.PutRequest' ->
	  'merge_msg_Etcd.PutRequest'(Prev, New, TrUserData);
      'Etcd.PutResponse' ->
	  'merge_msg_Etcd.PutResponse'(Prev, New, TrUserData);
      'Etcd.DeleteRangeRequest' ->
	  'merge_msg_Etcd.DeleteRangeRequest'(Prev, New,
					      TrUserData);
      'Etcd.DeleteRangeResponse' ->
	  'merge_msg_Etcd.DeleteRangeResponse'(Prev, New,
					       TrUserData);
      'Etcd.RequestOp' ->
	  'merge_msg_Etcd.RequestOp'(Prev, New, TrUserData);
      'Etcd.ResponseOp' ->
	  'merge_msg_Etcd.ResponseOp'(Prev, New, TrUserData);
      'Etcd.Compare' ->
	  'merge_msg_Etcd.Compare'(Prev, New, TrUserData);
      'Etcd.TxnRequest' ->
	  'merge_msg_Etcd.TxnRequest'(Prev, New, TrUserData);
      'Etcd.TxnResponse' ->
	  'merge_msg_Etcd.TxnResponse'(Prev, New, TrUserData);
      'Etcd.CompactionRequest' ->
	  'merge_msg_Etcd.CompactionRequest'(Prev, New,
					     TrUserData);
      'Etcd.CompactionResponse' ->
	  'merge_msg_Etcd.CompactionResponse'(Prev, New,
					      TrUserData);
      'Etcd.HashRequest' ->
	  'merge_msg_Etcd.HashRequest'(Prev, New, TrUserData);
      'Etcd.HashKVRequest' ->
	  'merge_msg_Etcd.HashKVRequest'(Prev, New, TrUserData);
      'Etcd.HashKVResponse' ->
	  'merge_msg_Etcd.HashKVResponse'(Prev, New, TrUserData);
      'Etcd.HashResponse' ->
	  'merge_msg_Etcd.HashResponse'(Prev, New, TrUserData);
      'Etcd.SnapshotRequest' ->
	  'merge_msg_Etcd.SnapshotRequest'(Prev, New, TrUserData);
      'Etcd.SnapshotResponse' ->
	  'merge_msg_Etcd.SnapshotResponse'(Prev, New,
					    TrUserData);
      'Etcd.WatchRequest' ->
	  'merge_msg_Etcd.WatchRequest'(Prev, New, TrUserData);
      'Etcd.WatchCreateRequest' ->
	  'merge_msg_Etcd.WatchCreateRequest'(Prev, New,
					      TrUserData);
      'Etcd.WatchCancelRequest' ->
	  'merge_msg_Etcd.WatchCancelRequest'(Prev, New,
					      TrUserData);
      'Etcd.WatchProgressRequest' ->
	  'merge_msg_Etcd.WatchProgressRequest'(Prev, New,
						TrUserData);
      'Etcd.WatchResponse' ->
	  'merge_msg_Etcd.WatchResponse'(Prev, New, TrUserData);
      'Etcd.LeaseGrantRequest' ->
	  'merge_msg_Etcd.LeaseGrantRequest'(Prev, New,
					     TrUserData);
      'Etcd.LeaseGrantResponse' ->
	  'merge_msg_Etcd.LeaseGrantResponse'(Prev, New,
					      TrUserData);
      'Etcd.LeaseRevokeRequest' ->
	  'merge_msg_Etcd.LeaseRevokeRequest'(Prev, New,
					      TrUserData);
      'Etcd.LeaseRevokeResponse' ->
	  'merge_msg_Etcd.LeaseRevokeResponse'(Prev, New,
					       TrUserData);
      'Etcd.LeaseCheckpoint' ->
	  'merge_msg_Etcd.LeaseCheckpoint'(Prev, New, TrUserData);
      'Etcd.LeaseCheckpointRequest' ->
	  'merge_msg_Etcd.LeaseCheckpointRequest'(Prev, New,
						  TrUserData);
      'Etcd.LeaseCheckpointResponse' ->
	  'merge_msg_Etcd.LeaseCheckpointResponse'(Prev, New,
						   TrUserData);
      'Etcd.LeaseKeepAliveRequest' ->
	  'merge_msg_Etcd.LeaseKeepAliveRequest'(Prev, New,
						 TrUserData);
      'Etcd.LeaseKeepAliveResponse' ->
	  'merge_msg_Etcd.LeaseKeepAliveResponse'(Prev, New,
						  TrUserData);
      'Etcd.LeaseTimeToLiveRequest' ->
	  'merge_msg_Etcd.LeaseTimeToLiveRequest'(Prev, New,
						  TrUserData);
      'Etcd.LeaseTimeToLiveResponse' ->
	  'merge_msg_Etcd.LeaseTimeToLiveResponse'(Prev, New,
						   TrUserData);
      'Etcd.LeaseLeasesRequest' ->
	  'merge_msg_Etcd.LeaseLeasesRequest'(Prev, New,
					      TrUserData);
      'Etcd.LeaseStatus' ->
	  'merge_msg_Etcd.LeaseStatus'(Prev, New, TrUserData);
      'Etcd.LeaseLeasesResponse' ->
	  'merge_msg_Etcd.LeaseLeasesResponse'(Prev, New,
					       TrUserData);
      'Etcd.Member' ->
	  'merge_msg_Etcd.Member'(Prev, New, TrUserData);
      'Etcd.MemberAddRequest' ->
	  'merge_msg_Etcd.MemberAddRequest'(Prev, New,
					    TrUserData);
      'Etcd.MemberAddResponse' ->
	  'merge_msg_Etcd.MemberAddResponse'(Prev, New,
					     TrUserData);
      'Etcd.MemberRemoveRequest' ->
	  'merge_msg_Etcd.MemberRemoveRequest'(Prev, New,
					       TrUserData);
      'Etcd.MemberRemoveResponse' ->
	  'merge_msg_Etcd.MemberRemoveResponse'(Prev, New,
						TrUserData);
      'Etcd.MemberUpdateRequest' ->
	  'merge_msg_Etcd.MemberUpdateRequest'(Prev, New,
					       TrUserData);
      'Etcd.MemberUpdateResponse' ->
	  'merge_msg_Etcd.MemberUpdateResponse'(Prev, New,
						TrUserData);
      'Etcd.MemberListRequest' ->
	  'merge_msg_Etcd.MemberListRequest'(Prev, New,
					     TrUserData);
      'Etcd.MemberListResponse' ->
	  'merge_msg_Etcd.MemberListResponse'(Prev, New,
					      TrUserData);
      'Etcd.MemberPromoteRequest' ->
	  'merge_msg_Etcd.MemberPromoteRequest'(Prev, New,
						TrUserData);
      'Etcd.MemberPromoteResponse' ->
	  'merge_msg_Etcd.MemberPromoteResponse'(Prev, New,
						 TrUserData);
      'Etcd.DefragmentRequest' ->
	  'merge_msg_Etcd.DefragmentRequest'(Prev, New,
					     TrUserData);
      'Etcd.DefragmentResponse' ->
	  'merge_msg_Etcd.DefragmentResponse'(Prev, New,
					      TrUserData);
      'Etcd.MoveLeaderRequest' ->
	  'merge_msg_Etcd.MoveLeaderRequest'(Prev, New,
					     TrUserData);
      'Etcd.MoveLeaderResponse' ->
	  'merge_msg_Etcd.MoveLeaderResponse'(Prev, New,
					      TrUserData);
      'Etcd.AlarmRequest' ->
	  'merge_msg_Etcd.AlarmRequest'(Prev, New, TrUserData);
      'Etcd.AlarmMember' ->
	  'merge_msg_Etcd.AlarmMember'(Prev, New, TrUserData);
      'Etcd.AlarmResponse' ->
	  'merge_msg_Etcd.AlarmResponse'(Prev, New, TrUserData);
      'Etcd.StatusRequest' ->
	  'merge_msg_Etcd.StatusRequest'(Prev, New, TrUserData);
      'Etcd.StatusResponse' ->
	  'merge_msg_Etcd.StatusResponse'(Prev, New, TrUserData);
      'Etcd.AuthEnableRequest' ->
	  'merge_msg_Etcd.AuthEnableRequest'(Prev, New,
					     TrUserData);
      'Etcd.AuthDisableRequest' ->
	  'merge_msg_Etcd.AuthDisableRequest'(Prev, New,
					      TrUserData);
      'Etcd.AuthenticateRequest' ->
	  'merge_msg_Etcd.AuthenticateRequest'(Prev, New,
					       TrUserData);
      'Etcd.AuthUserAddRequest' ->
	  'merge_msg_Etcd.AuthUserAddRequest'(Prev, New,
					      TrUserData);
      'Etcd.AuthUserGetRequest' ->
	  'merge_msg_Etcd.AuthUserGetRequest'(Prev, New,
					      TrUserData);
      'Etcd.AuthUserDeleteRequest' ->
	  'merge_msg_Etcd.AuthUserDeleteRequest'(Prev, New,
						 TrUserData);
      'Etcd.AuthUserChangePasswordRequest' ->
	  'merge_msg_Etcd.AuthUserChangePasswordRequest'(Prev,
							 New, TrUserData);
      'Etcd.AuthUserGrantRoleRequest' ->
	  'merge_msg_Etcd.AuthUserGrantRoleRequest'(Prev, New,
						    TrUserData);
      'Etcd.AuthUserRevokeRoleRequest' ->
	  'merge_msg_Etcd.AuthUserRevokeRoleRequest'(Prev, New,
						     TrUserData);
      'Etcd.AuthRoleAddRequest' ->
	  'merge_msg_Etcd.AuthRoleAddRequest'(Prev, New,
					      TrUserData);
      'Etcd.AuthRoleGetRequest' ->
	  'merge_msg_Etcd.AuthRoleGetRequest'(Prev, New,
					      TrUserData);
      'Etcd.AuthUserListRequest' ->
	  'merge_msg_Etcd.AuthUserListRequest'(Prev, New,
					       TrUserData);
      'Etcd.AuthRoleListRequest' ->
	  'merge_msg_Etcd.AuthRoleListRequest'(Prev, New,
					       TrUserData);
      'Etcd.AuthRoleDeleteRequest' ->
	  'merge_msg_Etcd.AuthRoleDeleteRequest'(Prev, New,
						 TrUserData);
      'Etcd.AuthRoleGrantPermissionRequest' ->
	  'merge_msg_Etcd.AuthRoleGrantPermissionRequest'(Prev,
							  New, TrUserData);
      'Etcd.AuthRoleRevokePermissionRequest' ->
	  'merge_msg_Etcd.AuthRoleRevokePermissionRequest'(Prev,
							   New, TrUserData);
      'Etcd.AuthEnableResponse' ->
	  'merge_msg_Etcd.AuthEnableResponse'(Prev, New,
					      TrUserData);
      'Etcd.AuthDisableResponse' ->
	  'merge_msg_Etcd.AuthDisableResponse'(Prev, New,
					       TrUserData);
      'Etcd.AuthenticateResponse' ->
	  'merge_msg_Etcd.AuthenticateResponse'(Prev, New,
						TrUserData);
      'Etcd.AuthUserAddResponse' ->
	  'merge_msg_Etcd.AuthUserAddResponse'(Prev, New,
					       TrUserData);
      'Etcd.AuthUserGetResponse' ->
	  'merge_msg_Etcd.AuthUserGetResponse'(Prev, New,
					       TrUserData);
      'Etcd.AuthUserDeleteResponse' ->
	  'merge_msg_Etcd.AuthUserDeleteResponse'(Prev, New,
						  TrUserData);
      'Etcd.AuthUserChangePasswordResponse' ->
	  'merge_msg_Etcd.AuthUserChangePasswordResponse'(Prev,
							  New, TrUserData);
      'Etcd.AuthUserGrantRoleResponse' ->
	  'merge_msg_Etcd.AuthUserGrantRoleResponse'(Prev, New,
						     TrUserData);
      'Etcd.AuthUserRevokeRoleResponse' ->
	  'merge_msg_Etcd.AuthUserRevokeRoleResponse'(Prev, New,
						      TrUserData);
      'Etcd.AuthRoleAddResponse' ->
	  'merge_msg_Etcd.AuthRoleAddResponse'(Prev, New,
					       TrUserData);
      'Etcd.AuthRoleGetResponse' ->
	  'merge_msg_Etcd.AuthRoleGetResponse'(Prev, New,
					       TrUserData);
      'Etcd.AuthRoleListResponse' ->
	  'merge_msg_Etcd.AuthRoleListResponse'(Prev, New,
						TrUserData);
      'Etcd.AuthUserListResponse' ->
	  'merge_msg_Etcd.AuthUserListResponse'(Prev, New,
						TrUserData);
      'Etcd.AuthRoleDeleteResponse' ->
	  'merge_msg_Etcd.AuthRoleDeleteResponse'(Prev, New,
						  TrUserData);
      'Etcd.AuthRoleGrantPermissionResponse' ->
	  'merge_msg_Etcd.AuthRoleGrantPermissionResponse'(Prev,
							   New, TrUserData);
      'Etcd.AuthRoleRevokePermissionResponse' ->
	  'merge_msg_Etcd.AuthRoleRevokePermissionResponse'(Prev,
							    New, TrUserData);
      'Etcd.HealthCheckRequest' ->
	  'merge_msg_Etcd.HealthCheckRequest'(Prev, New,
					      TrUserData);
      'Etcd.HealthCheckResponse' ->
	  'merge_msg_Etcd.HealthCheckResponse'(Prev, New,
					       TrUserData);
      'Etcd.LockRequest' ->
	  'merge_msg_Etcd.LockRequest'(Prev, New, TrUserData);
      'Etcd.LockResponse' ->
	  'merge_msg_Etcd.LockResponse'(Prev, New, TrUserData);
      'Etcd.UnlockRequest' ->
	  'merge_msg_Etcd.UnlockRequest'(Prev, New, TrUserData);
      'Etcd.UnlockResponse' ->
	  'merge_msg_Etcd.UnlockResponse'(Prev, New, TrUserData);
      'Etcd.CampaignRequest' ->
	  'merge_msg_Etcd.CampaignRequest'(Prev, New, TrUserData);
      'Etcd.CampaignResponse' ->
	  'merge_msg_Etcd.CampaignResponse'(Prev, New,
					    TrUserData);
      'Etcd.LeaderKey' ->
	  'merge_msg_Etcd.LeaderKey'(Prev, New, TrUserData);
      'Etcd.LeaderRequest' ->
	  'merge_msg_Etcd.LeaderRequest'(Prev, New, TrUserData);
      'Etcd.LeaderResponse' ->
	  'merge_msg_Etcd.LeaderResponse'(Prev, New, TrUserData);
      'Etcd.ResignRequest' ->
	  'merge_msg_Etcd.ResignRequest'(Prev, New, TrUserData);
      'Etcd.ResignResponse' ->
	  'merge_msg_Etcd.ResignResponse'(Prev, New, TrUserData);
      'Etcd.ProclaimRequest' ->
	  'merge_msg_Etcd.ProclaimRequest'(Prev, New, TrUserData);
      'Etcd.ProclaimResponse' ->
	  'merge_msg_Etcd.ProclaimResponse'(Prev, New,
					    TrUserData);
      'google.protobuf.FileDescriptorSet' ->
	  'merge_msg_google.protobuf.FileDescriptorSet'(Prev, New,
							TrUserData);
      'google.protobuf.FileDescriptorProto' ->
	  'merge_msg_google.protobuf.FileDescriptorProto'(Prev,
							  New, TrUserData);
      'google.protobuf.DescriptorProto.ExtensionRange' ->
	  'merge_msg_google.protobuf.DescriptorProto.ExtensionRange'(Prev,
								     New,
								     TrUserData);
      'google.protobuf.DescriptorProto.ReservedRange' ->
	  'merge_msg_google.protobuf.DescriptorProto.ReservedRange'(Prev,
								    New,
								    TrUserData);
      'google.protobuf.DescriptorProto' ->
	  'merge_msg_google.protobuf.DescriptorProto'(Prev, New,
						      TrUserData);
      'google.protobuf.FieldDescriptorProto' ->
	  'merge_msg_google.protobuf.FieldDescriptorProto'(Prev,
							   New, TrUserData);
      'google.protobuf.OneofDescriptorProto' ->
	  'merge_msg_google.protobuf.OneofDescriptorProto'(Prev,
							   New, TrUserData);
      'google.protobuf.EnumDescriptorProto' ->
	  'merge_msg_google.protobuf.EnumDescriptorProto'(Prev,
							  New, TrUserData);
      'google.protobuf.EnumValueDescriptorProto' ->
	  'merge_msg_google.protobuf.EnumValueDescriptorProto'(Prev,
							       New, TrUserData);
      'google.protobuf.ServiceDescriptorProto' ->
	  'merge_msg_google.protobuf.ServiceDescriptorProto'(Prev,
							     New, TrUserData);
      'google.protobuf.MethodDescriptorProto' ->
	  'merge_msg_google.protobuf.MethodDescriptorProto'(Prev,
							    New, TrUserData);
      'google.protobuf.FileOptions' ->
	  'merge_msg_google.protobuf.FileOptions'(Prev, New,
						  TrUserData);
      'google.protobuf.MessageOptions' ->
	  'merge_msg_google.protobuf.MessageOptions'(Prev, New,
						     TrUserData);
      'google.protobuf.FieldOptions' ->
	  'merge_msg_google.protobuf.FieldOptions'(Prev, New,
						   TrUserData);
      'google.protobuf.EnumOptions' ->
	  'merge_msg_google.protobuf.EnumOptions'(Prev, New,
						  TrUserData);
      'google.protobuf.EnumValueOptions' ->
	  'merge_msg_google.protobuf.EnumValueOptions'(Prev, New,
						       TrUserData);
      'google.protobuf.ServiceOptions' ->
	  'merge_msg_google.protobuf.ServiceOptions'(Prev, New,
						     TrUserData);
      'google.protobuf.MethodOptions' ->
	  'merge_msg_google.protobuf.MethodOptions'(Prev, New,
						    TrUserData);
      'google.protobuf.UninterpretedOption.NamePart' ->
	  'merge_msg_google.protobuf.UninterpretedOption.NamePart'(Prev,
								   New,
								   TrUserData);
      'google.protobuf.UninterpretedOption' ->
	  'merge_msg_google.protobuf.UninterpretedOption'(Prev,
							  New, TrUserData);
      'google.protobuf.SourceCodeInfo.Location' ->
	  'merge_msg_google.protobuf.SourceCodeInfo.Location'(Prev,
							      New, TrUserData);
      'google.protobuf.SourceCodeInfo' ->
	  'merge_msg_google.protobuf.SourceCodeInfo'(Prev, New,
						     TrUserData);
      'google.protobuf.GeneratedCodeInfo.Annotation' ->
	  'merge_msg_google.protobuf.GeneratedCodeInfo.Annotation'(Prev,
								   New,
								   TrUserData);
      'google.protobuf.GeneratedCodeInfo' ->
	  'merge_msg_google.protobuf.GeneratedCodeInfo'(Prev, New,
							TrUserData);
      'mvccpb.KeyValue' ->
	  'merge_msg_mvccpb.KeyValue'(Prev, New, TrUserData);
      'mvccpb.Event' ->
	  'merge_msg_mvccpb.Event'(Prev, New, TrUserData);
      'authpb.UserAddOptions' ->
	  'merge_msg_authpb.UserAddOptions'(Prev, New,
					    TrUserData);
      'authpb.User' ->
	  'merge_msg_authpb.User'(Prev, New, TrUserData);
      'authpb.Permission' ->
	  'merge_msg_authpb.Permission'(Prev, New, TrUserData);
      'authpb.Role' ->
	  'merge_msg_authpb.Role'(Prev, New, TrUserData)
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.ResponseHeader'/3}).
'merge_msg_Etcd.ResponseHeader'(PMsg, NMsg, _) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{cluster_id := NFcluster_id}} ->
	       S1#{cluster_id => NFcluster_id};
	   {#{cluster_id := PFcluster_id}, _} ->
	       S1#{cluster_id => PFcluster_id};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{member_id := NFmember_id}} ->
	       S2#{member_id => NFmember_id};
	   {#{member_id := PFmember_id}, _} ->
	       S2#{member_id => PFmember_id};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {_, #{revision := NFrevision}} ->
	       S3#{revision => NFrevision};
	   {#{revision := PFrevision}, _} ->
	       S3#{revision => PFrevision};
	   _ -> S3
	 end,
    case {PMsg, NMsg} of
      {_, #{raft_term := NFraft_term}} ->
	  S4#{raft_term => NFraft_term};
      {#{raft_term := PFraft_term}, _} ->
	  S4#{raft_term => PFraft_term};
      _ -> S4
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.RangeRequest'/3}).
'merge_msg_Etcd.RangeRequest'(PMsg, NMsg, _) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{key := NFkey}} -> S1#{key => NFkey};
	   {#{key := PFkey}, _} -> S1#{key => PFkey};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{range_end := NFrange_end}} ->
	       S2#{range_end => NFrange_end};
	   {#{range_end := PFrange_end}, _} ->
	       S2#{range_end => PFrange_end};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {_, #{limit := NFlimit}} -> S3#{limit => NFlimit};
	   {#{limit := PFlimit}, _} -> S3#{limit => PFlimit};
	   _ -> S3
	 end,
    S5 = case {PMsg, NMsg} of
	   {_, #{revision := NFrevision}} ->
	       S4#{revision => NFrevision};
	   {#{revision := PFrevision}, _} ->
	       S4#{revision => PFrevision};
	   _ -> S4
	 end,
    S6 = case {PMsg, NMsg} of
	   {_, #{sort_order := NFsort_order}} ->
	       S5#{sort_order => NFsort_order};
	   {#{sort_order := PFsort_order}, _} ->
	       S5#{sort_order => PFsort_order};
	   _ -> S5
	 end,
    S7 = case {PMsg, NMsg} of
	   {_, #{sort_target := NFsort_target}} ->
	       S6#{sort_target => NFsort_target};
	   {#{sort_target := PFsort_target}, _} ->
	       S6#{sort_target => PFsort_target};
	   _ -> S6
	 end,
    S8 = case {PMsg, NMsg} of
	   {_, #{serializable := NFserializable}} ->
	       S7#{serializable => NFserializable};
	   {#{serializable := PFserializable}, _} ->
	       S7#{serializable => PFserializable};
	   _ -> S7
	 end,
    S9 = case {PMsg, NMsg} of
	   {_, #{keys_only := NFkeys_only}} ->
	       S8#{keys_only => NFkeys_only};
	   {#{keys_only := PFkeys_only}, _} ->
	       S8#{keys_only => PFkeys_only};
	   _ -> S8
	 end,
    S10 = case {PMsg, NMsg} of
	    {_, #{count_only := NFcount_only}} ->
		S9#{count_only => NFcount_only};
	    {#{count_only := PFcount_only}, _} ->
		S9#{count_only => PFcount_only};
	    _ -> S9
	  end,
    S11 = case {PMsg, NMsg} of
	    {_, #{min_mod_revision := NFmin_mod_revision}} ->
		S10#{min_mod_revision => NFmin_mod_revision};
	    {#{min_mod_revision := PFmin_mod_revision}, _} ->
		S10#{min_mod_revision => PFmin_mod_revision};
	    _ -> S10
	  end,
    S12 = case {PMsg, NMsg} of
	    {_, #{max_mod_revision := NFmax_mod_revision}} ->
		S11#{max_mod_revision => NFmax_mod_revision};
	    {#{max_mod_revision := PFmax_mod_revision}, _} ->
		S11#{max_mod_revision => PFmax_mod_revision};
	    _ -> S11
	  end,
    S13 = case {PMsg, NMsg} of
	    {_, #{min_create_revision := NFmin_create_revision}} ->
		S12#{min_create_revision => NFmin_create_revision};
	    {#{min_create_revision := PFmin_create_revision}, _} ->
		S12#{min_create_revision => PFmin_create_revision};
	    _ -> S12
	  end,
    case {PMsg, NMsg} of
      {_, #{max_create_revision := NFmax_create_revision}} ->
	  S13#{max_create_revision => NFmax_create_revision};
      {#{max_create_revision := PFmax_create_revision}, _} ->
	  S13#{max_create_revision => PFmax_create_revision};
      _ -> S13
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.RangeResponse'/3}).
'merge_msg_Etcd.RangeResponse'(PMsg, NMsg,
			       TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{header := PFheader}, #{header := NFheader}} ->
	       S1#{header =>
		       'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						       TrUserData)};
	   {_, #{header := NFheader}} -> S1#{header => NFheader};
	   {#{header := PFheader}, _} -> S1#{header => PFheader};
	   {_, _} -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {#{kvs := PFkvs}, #{kvs := NFkvs}} ->
	       S2#{kvs => 'erlang_++'(PFkvs, NFkvs, TrUserData)};
	   {_, #{kvs := NFkvs}} -> S2#{kvs => NFkvs};
	   {#{kvs := PFkvs}, _} -> S2#{kvs => PFkvs};
	   {_, _} -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {_, #{more := NFmore}} -> S3#{more => NFmore};
	   {#{more := PFmore}, _} -> S3#{more => PFmore};
	   _ -> S3
	 end,
    case {PMsg, NMsg} of
      {_, #{count := NFcount}} -> S4#{count => NFcount};
      {#{count := PFcount}, _} -> S4#{count => PFcount};
      _ -> S4
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.PutRequest'/3}).
'merge_msg_Etcd.PutRequest'(PMsg, NMsg, _) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{key := NFkey}} -> S1#{key => NFkey};
	   {#{key := PFkey}, _} -> S1#{key => PFkey};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{value := NFvalue}} -> S2#{value => NFvalue};
	   {#{value := PFvalue}, _} -> S2#{value => PFvalue};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {_, #{lease := NFlease}} -> S3#{lease => NFlease};
	   {#{lease := PFlease}, _} -> S3#{lease => PFlease};
	   _ -> S3
	 end,
    S5 = case {PMsg, NMsg} of
	   {_, #{prev_kv := NFprev_kv}} ->
	       S4#{prev_kv => NFprev_kv};
	   {#{prev_kv := PFprev_kv}, _} ->
	       S4#{prev_kv => PFprev_kv};
	   _ -> S4
	 end,
    S6 = case {PMsg, NMsg} of
	   {_, #{ignore_value := NFignore_value}} ->
	       S5#{ignore_value => NFignore_value};
	   {#{ignore_value := PFignore_value}, _} ->
	       S5#{ignore_value => PFignore_value};
	   _ -> S5
	 end,
    case {PMsg, NMsg} of
      {_, #{ignore_lease := NFignore_lease}} ->
	  S6#{ignore_lease => NFignore_lease};
      {#{ignore_lease := PFignore_lease}, _} ->
	  S6#{ignore_lease => PFignore_lease};
      _ -> S6
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.PutResponse'/3}).
'merge_msg_Etcd.PutResponse'(PMsg, NMsg, TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{header := PFheader}, #{header := NFheader}} ->
	       S1#{header =>
		       'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						       TrUserData)};
	   {_, #{header := NFheader}} -> S1#{header => NFheader};
	   {#{header := PFheader}, _} -> S1#{header => PFheader};
	   {_, _} -> S1
	 end,
    case {PMsg, NMsg} of
      {#{prev_kv := PFprev_kv}, #{prev_kv := NFprev_kv}} ->
	  S2#{prev_kv =>
		  'merge_msg_mvccpb.KeyValue'(PFprev_kv, NFprev_kv,
					      TrUserData)};
      {_, #{prev_kv := NFprev_kv}} ->
	  S2#{prev_kv => NFprev_kv};
      {#{prev_kv := PFprev_kv}, _} ->
	  S2#{prev_kv => PFprev_kv};
      {_, _} -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.DeleteRangeRequest'/3}).
'merge_msg_Etcd.DeleteRangeRequest'(PMsg, NMsg, _) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{key := NFkey}} -> S1#{key => NFkey};
	   {#{key := PFkey}, _} -> S1#{key => PFkey};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{range_end := NFrange_end}} ->
	       S2#{range_end => NFrange_end};
	   {#{range_end := PFrange_end}, _} ->
	       S2#{range_end => PFrange_end};
	   _ -> S2
	 end,
    case {PMsg, NMsg} of
      {_, #{prev_kv := NFprev_kv}} ->
	  S3#{prev_kv => NFprev_kv};
      {#{prev_kv := PFprev_kv}, _} ->
	  S3#{prev_kv => PFprev_kv};
      _ -> S3
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.DeleteRangeResponse'/3}).
'merge_msg_Etcd.DeleteRangeResponse'(PMsg, NMsg,
				     TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{header := PFheader}, #{header := NFheader}} ->
	       S1#{header =>
		       'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						       TrUserData)};
	   {_, #{header := NFheader}} -> S1#{header => NFheader};
	   {#{header := PFheader}, _} -> S1#{header => PFheader};
	   {_, _} -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{deleted := NFdeleted}} ->
	       S2#{deleted => NFdeleted};
	   {#{deleted := PFdeleted}, _} ->
	       S2#{deleted => PFdeleted};
	   _ -> S2
	 end,
    case {PMsg, NMsg} of
      {#{prev_kvs := PFprev_kvs},
       #{prev_kvs := NFprev_kvs}} ->
	  S3#{prev_kvs =>
		  'erlang_++'(PFprev_kvs, NFprev_kvs, TrUserData)};
      {_, #{prev_kvs := NFprev_kvs}} ->
	  S3#{prev_kvs => NFprev_kvs};
      {#{prev_kvs := PFprev_kvs}, _} ->
	  S3#{prev_kvs => PFprev_kvs};
      {_, _} -> S3
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.RequestOp'/3}).
'merge_msg_Etcd.RequestOp'(PMsg, NMsg, TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{request := {request_range, OPFrequest}},
       #{request := {request_range, ONFrequest}}} ->
	  S1#{request =>
		  {request_range,
		   'merge_msg_Etcd.RangeRequest'(OPFrequest, ONFrequest,
						 TrUserData)}};
      {#{request := {request_put, OPFrequest}},
       #{request := {request_put, ONFrequest}}} ->
	  S1#{request =>
		  {request_put,
		   'merge_msg_Etcd.PutRequest'(OPFrequest, ONFrequest,
					       TrUserData)}};
      {#{request := {request_delete_range, OPFrequest}},
       #{request := {request_delete_range, ONFrequest}}} ->
	  S1#{request =>
		  {request_delete_range,
		   'merge_msg_Etcd.DeleteRangeRequest'(OPFrequest,
						       ONFrequest,
						       TrUserData)}};
      {#{request := {request_txn, OPFrequest}},
       #{request := {request_txn, ONFrequest}}} ->
	  S1#{request =>
		  {request_txn,
		   'merge_msg_Etcd.TxnRequest'(OPFrequest, ONFrequest,
					       TrUserData)}};
      {_, #{request := NFrequest}} ->
	  S1#{request => NFrequest};
      {#{request := PFrequest}, _} ->
	  S1#{request => PFrequest};
      {_, _} -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.ResponseOp'/3}).
'merge_msg_Etcd.ResponseOp'(PMsg, NMsg, TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{response := {response_range, OPFresponse}},
       #{response := {response_range, ONFresponse}}} ->
	  S1#{response =>
		  {response_range,
		   'merge_msg_Etcd.RangeResponse'(OPFresponse, ONFresponse,
						  TrUserData)}};
      {#{response := {response_put, OPFresponse}},
       #{response := {response_put, ONFresponse}}} ->
	  S1#{response =>
		  {response_put,
		   'merge_msg_Etcd.PutResponse'(OPFresponse, ONFresponse,
						TrUserData)}};
      {#{response := {response_delete_range, OPFresponse}},
       #{response := {response_delete_range, ONFresponse}}} ->
	  S1#{response =>
		  {response_delete_range,
		   'merge_msg_Etcd.DeleteRangeResponse'(OPFresponse,
							ONFresponse,
							TrUserData)}};
      {#{response := {response_txn, OPFresponse}},
       #{response := {response_txn, ONFresponse}}} ->
	  S1#{response =>
		  {response_txn,
		   'merge_msg_Etcd.TxnResponse'(OPFresponse, ONFresponse,
						TrUserData)}};
      {_, #{response := NFresponse}} ->
	  S1#{response => NFresponse};
      {#{response := PFresponse}, _} ->
	  S1#{response => PFresponse};
      {_, _} -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.Compare'/3}).
'merge_msg_Etcd.Compare'(PMsg, NMsg, _) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{result := NFresult}} -> S1#{result => NFresult};
	   {#{result := PFresult}, _} -> S1#{result => PFresult};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{target := NFtarget}} -> S2#{target => NFtarget};
	   {#{target := PFtarget}, _} -> S2#{target => PFtarget};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {_, #{key := NFkey}} -> S3#{key => NFkey};
	   {#{key := PFkey}, _} -> S3#{key => PFkey};
	   _ -> S3
	 end,
    S5 = case {PMsg, NMsg} of
	   {_, #{target_union := NFtarget_union}} ->
	       S4#{target_union => NFtarget_union};
	   {#{target_union := PFtarget_union}, _} ->
	       S4#{target_union => PFtarget_union};
	   _ -> S4
	 end,
    case {PMsg, NMsg} of
      {_, #{range_end := NFrange_end}} ->
	  S5#{range_end => NFrange_end};
      {#{range_end := PFrange_end}, _} ->
	  S5#{range_end => PFrange_end};
      _ -> S5
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.TxnRequest'/3}).
'merge_msg_Etcd.TxnRequest'(PMsg, NMsg, TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{compare := PFcompare}, #{compare := NFcompare}} ->
	       S1#{compare =>
		       'erlang_++'(PFcompare, NFcompare, TrUserData)};
	   {_, #{compare := NFcompare}} ->
	       S1#{compare => NFcompare};
	   {#{compare := PFcompare}, _} ->
	       S1#{compare => PFcompare};
	   {_, _} -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {#{success := PFsuccess}, #{success := NFsuccess}} ->
	       S2#{success =>
		       'erlang_++'(PFsuccess, NFsuccess, TrUserData)};
	   {_, #{success := NFsuccess}} ->
	       S2#{success => NFsuccess};
	   {#{success := PFsuccess}, _} ->
	       S2#{success => PFsuccess};
	   {_, _} -> S2
	 end,
    case {PMsg, NMsg} of
      {#{failure := PFfailure}, #{failure := NFfailure}} ->
	  S3#{failure =>
		  'erlang_++'(PFfailure, NFfailure, TrUserData)};
      {_, #{failure := NFfailure}} ->
	  S3#{failure => NFfailure};
      {#{failure := PFfailure}, _} ->
	  S3#{failure => PFfailure};
      {_, _} -> S3
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.TxnResponse'/3}).
'merge_msg_Etcd.TxnResponse'(PMsg, NMsg, TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{header := PFheader}, #{header := NFheader}} ->
	       S1#{header =>
		       'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						       TrUserData)};
	   {_, #{header := NFheader}} -> S1#{header => NFheader};
	   {#{header := PFheader}, _} -> S1#{header => PFheader};
	   {_, _} -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{succeeded := NFsucceeded}} ->
	       S2#{succeeded => NFsucceeded};
	   {#{succeeded := PFsucceeded}, _} ->
	       S2#{succeeded => PFsucceeded};
	   _ -> S2
	 end,
    case {PMsg, NMsg} of
      {#{responses := PFresponses},
       #{responses := NFresponses}} ->
	  S3#{responses =>
		  'erlang_++'(PFresponses, NFresponses, TrUserData)};
      {_, #{responses := NFresponses}} ->
	  S3#{responses => NFresponses};
      {#{responses := PFresponses}, _} ->
	  S3#{responses => PFresponses};
      {_, _} -> S3
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.CompactionRequest'/3}).
'merge_msg_Etcd.CompactionRequest'(PMsg, NMsg, _) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{revision := NFrevision}} ->
	       S1#{revision => NFrevision};
	   {#{revision := PFrevision}, _} ->
	       S1#{revision => PFrevision};
	   _ -> S1
	 end,
    case {PMsg, NMsg} of
      {_, #{physical := NFphysical}} ->
	  S2#{physical => NFphysical};
      {#{physical := PFphysical}, _} ->
	  S2#{physical => PFphysical};
      _ -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.CompactionResponse'/3}).
'merge_msg_Etcd.CompactionResponse'(PMsg, NMsg,
				    TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{header := PFheader}, #{header := NFheader}} ->
	  S1#{header =>
		  'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						  TrUserData)};
      {_, #{header := NFheader}} -> S1#{header => NFheader};
      {#{header := PFheader}, _} -> S1#{header => PFheader};
      {_, _} -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.HashRequest'/3}).
'merge_msg_Etcd.HashRequest'(_Prev, New, _TrUserData) ->
    New.

-compile({nowarn_unused_function,'merge_msg_Etcd.HashKVRequest'/3}).
'merge_msg_Etcd.HashKVRequest'(PMsg, NMsg, _) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {_, #{revision := NFrevision}} ->
	  S1#{revision => NFrevision};
      {#{revision := PFrevision}, _} ->
	  S1#{revision => PFrevision};
      _ -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.HashKVResponse'/3}).
'merge_msg_Etcd.HashKVResponse'(PMsg, NMsg,
				TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{header := PFheader}, #{header := NFheader}} ->
	       S1#{header =>
		       'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						       TrUserData)};
	   {_, #{header := NFheader}} -> S1#{header => NFheader};
	   {#{header := PFheader}, _} -> S1#{header => PFheader};
	   {_, _} -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{hash := NFhash}} -> S2#{hash => NFhash};
	   {#{hash := PFhash}, _} -> S2#{hash => PFhash};
	   _ -> S2
	 end,
    case {PMsg, NMsg} of
      {_, #{compact_revision := NFcompact_revision}} ->
	  S3#{compact_revision => NFcompact_revision};
      {#{compact_revision := PFcompact_revision}, _} ->
	  S3#{compact_revision => PFcompact_revision};
      _ -> S3
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.HashResponse'/3}).
'merge_msg_Etcd.HashResponse'(PMsg, NMsg, TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{header := PFheader}, #{header := NFheader}} ->
	       S1#{header =>
		       'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						       TrUserData)};
	   {_, #{header := NFheader}} -> S1#{header => NFheader};
	   {#{header := PFheader}, _} -> S1#{header => PFheader};
	   {_, _} -> S1
	 end,
    case {PMsg, NMsg} of
      {_, #{hash := NFhash}} -> S2#{hash => NFhash};
      {#{hash := PFhash}, _} -> S2#{hash => PFhash};
      _ -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.SnapshotRequest'/3}).
'merge_msg_Etcd.SnapshotRequest'(_Prev, New,
				 _TrUserData) ->
    New.

-compile({nowarn_unused_function,'merge_msg_Etcd.SnapshotResponse'/3}).
'merge_msg_Etcd.SnapshotResponse'(PMsg, NMsg,
				  TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{header := PFheader}, #{header := NFheader}} ->
	       S1#{header =>
		       'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						       TrUserData)};
	   {_, #{header := NFheader}} -> S1#{header => NFheader};
	   {#{header := PFheader}, _} -> S1#{header => PFheader};
	   {_, _} -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{remaining_bytes := NFremaining_bytes}} ->
	       S2#{remaining_bytes => NFremaining_bytes};
	   {#{remaining_bytes := PFremaining_bytes}, _} ->
	       S2#{remaining_bytes => PFremaining_bytes};
	   _ -> S2
	 end,
    case {PMsg, NMsg} of
      {_, #{blob := NFblob}} -> S3#{blob => NFblob};
      {#{blob := PFblob}, _} -> S3#{blob => PFblob};
      _ -> S3
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.WatchRequest'/3}).
'merge_msg_Etcd.WatchRequest'(PMsg, NMsg, TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{request_union := {create_request, OPFrequest_union}},
       #{request_union :=
	     {create_request, ONFrequest_union}}} ->
	  S1#{request_union =>
		  {create_request,
		   'merge_msg_Etcd.WatchCreateRequest'(OPFrequest_union,
						       ONFrequest_union,
						       TrUserData)}};
      {#{request_union := {cancel_request, OPFrequest_union}},
       #{request_union :=
	     {cancel_request, ONFrequest_union}}} ->
	  S1#{request_union =>
		  {cancel_request,
		   'merge_msg_Etcd.WatchCancelRequest'(OPFrequest_union,
						       ONFrequest_union,
						       TrUserData)}};
      {#{request_union :=
	     {progress_request, OPFrequest_union}},
       #{request_union :=
	     {progress_request, ONFrequest_union}}} ->
	  S1#{request_union =>
		  {progress_request,
		   'merge_msg_Etcd.WatchProgressRequest'(OPFrequest_union,
							 ONFrequest_union,
							 TrUserData)}};
      {_, #{request_union := NFrequest_union}} ->
	  S1#{request_union => NFrequest_union};
      {#{request_union := PFrequest_union}, _} ->
	  S1#{request_union => PFrequest_union};
      {_, _} -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.WatchCreateRequest'/3}).
'merge_msg_Etcd.WatchCreateRequest'(PMsg, NMsg,
				    TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{key := NFkey}} -> S1#{key => NFkey};
	   {#{key := PFkey}, _} -> S1#{key => PFkey};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{range_end := NFrange_end}} ->
	       S2#{range_end => NFrange_end};
	   {#{range_end := PFrange_end}, _} ->
	       S2#{range_end => PFrange_end};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {_, #{start_revision := NFstart_revision}} ->
	       S3#{start_revision => NFstart_revision};
	   {#{start_revision := PFstart_revision}, _} ->
	       S3#{start_revision => PFstart_revision};
	   _ -> S3
	 end,
    S5 = case {PMsg, NMsg} of
	   {_, #{progress_notify := NFprogress_notify}} ->
	       S4#{progress_notify => NFprogress_notify};
	   {#{progress_notify := PFprogress_notify}, _} ->
	       S4#{progress_notify => PFprogress_notify};
	   _ -> S4
	 end,
    S6 = case {PMsg, NMsg} of
	   {#{filters := PFfilters}, #{filters := NFfilters}} ->
	       S5#{filters =>
		       'erlang_++'(PFfilters, NFfilters, TrUserData)};
	   {_, #{filters := NFfilters}} ->
	       S5#{filters => NFfilters};
	   {#{filters := PFfilters}, _} ->
	       S5#{filters => PFfilters};
	   {_, _} -> S5
	 end,
    S7 = case {PMsg, NMsg} of
	   {_, #{prev_kv := NFprev_kv}} ->
	       S6#{prev_kv => NFprev_kv};
	   {#{prev_kv := PFprev_kv}, _} ->
	       S6#{prev_kv => PFprev_kv};
	   _ -> S6
	 end,
    S8 = case {PMsg, NMsg} of
	   {_, #{watch_id := NFwatch_id}} ->
	       S7#{watch_id => NFwatch_id};
	   {#{watch_id := PFwatch_id}, _} ->
	       S7#{watch_id => PFwatch_id};
	   _ -> S7
	 end,
    case {PMsg, NMsg} of
      {_, #{fragment := NFfragment}} ->
	  S8#{fragment => NFfragment};
      {#{fragment := PFfragment}, _} ->
	  S8#{fragment => PFfragment};
      _ -> S8
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.WatchCancelRequest'/3}).
'merge_msg_Etcd.WatchCancelRequest'(PMsg, NMsg, _) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {_, #{watch_id := NFwatch_id}} ->
	  S1#{watch_id => NFwatch_id};
      {#{watch_id := PFwatch_id}, _} ->
	  S1#{watch_id => PFwatch_id};
      _ -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.WatchProgressRequest'/3}).
'merge_msg_Etcd.WatchProgressRequest'(_Prev, New,
				      _TrUserData) ->
    New.

-compile({nowarn_unused_function,'merge_msg_Etcd.WatchResponse'/3}).
'merge_msg_Etcd.WatchResponse'(PMsg, NMsg,
			       TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{header := PFheader}, #{header := NFheader}} ->
	       S1#{header =>
		       'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						       TrUserData)};
	   {_, #{header := NFheader}} -> S1#{header => NFheader};
	   {#{header := PFheader}, _} -> S1#{header => PFheader};
	   {_, _} -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{watch_id := NFwatch_id}} ->
	       S2#{watch_id => NFwatch_id};
	   {#{watch_id := PFwatch_id}, _} ->
	       S2#{watch_id => PFwatch_id};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {_, #{created := NFcreated}} ->
	       S3#{created => NFcreated};
	   {#{created := PFcreated}, _} ->
	       S3#{created => PFcreated};
	   _ -> S3
	 end,
    S5 = case {PMsg, NMsg} of
	   {_, #{canceled := NFcanceled}} ->
	       S4#{canceled => NFcanceled};
	   {#{canceled := PFcanceled}, _} ->
	       S4#{canceled => PFcanceled};
	   _ -> S4
	 end,
    S6 = case {PMsg, NMsg} of
	   {_, #{compact_revision := NFcompact_revision}} ->
	       S5#{compact_revision => NFcompact_revision};
	   {#{compact_revision := PFcompact_revision}, _} ->
	       S5#{compact_revision => PFcompact_revision};
	   _ -> S5
	 end,
    S7 = case {PMsg, NMsg} of
	   {_, #{cancel_reason := NFcancel_reason}} ->
	       S6#{cancel_reason => NFcancel_reason};
	   {#{cancel_reason := PFcancel_reason}, _} ->
	       S6#{cancel_reason => PFcancel_reason};
	   _ -> S6
	 end,
    S8 = case {PMsg, NMsg} of
	   {_, #{fragment := NFfragment}} ->
	       S7#{fragment => NFfragment};
	   {#{fragment := PFfragment}, _} ->
	       S7#{fragment => PFfragment};
	   _ -> S7
	 end,
    case {PMsg, NMsg} of
      {#{events := PFevents}, #{events := NFevents}} ->
	  S8#{events =>
		  'erlang_++'(PFevents, NFevents, TrUserData)};
      {_, #{events := NFevents}} -> S8#{events => NFevents};
      {#{events := PFevents}, _} -> S8#{events => PFevents};
      {_, _} -> S8
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.LeaseGrantRequest'/3}).
'merge_msg_Etcd.LeaseGrantRequest'(PMsg, NMsg, _) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{'TTL' := NFTTL}} -> S1#{'TTL' => NFTTL};
	   {#{'TTL' := PFTTL}, _} -> S1#{'TTL' => PFTTL};
	   _ -> S1
	 end,
    case {PMsg, NMsg} of
      {_, #{'ID' := NFID}} -> S2#{'ID' => NFID};
      {#{'ID' := PFID}, _} -> S2#{'ID' => PFID};
      _ -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.LeaseGrantResponse'/3}).
'merge_msg_Etcd.LeaseGrantResponse'(PMsg, NMsg,
				    TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{header := PFheader}, #{header := NFheader}} ->
	       S1#{header =>
		       'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						       TrUserData)};
	   {_, #{header := NFheader}} -> S1#{header => NFheader};
	   {#{header := PFheader}, _} -> S1#{header => PFheader};
	   {_, _} -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{'ID' := NFID}} -> S2#{'ID' => NFID};
	   {#{'ID' := PFID}, _} -> S2#{'ID' => PFID};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {_, #{'TTL' := NFTTL}} -> S3#{'TTL' => NFTTL};
	   {#{'TTL' := PFTTL}, _} -> S3#{'TTL' => PFTTL};
	   _ -> S3
	 end,
    case {PMsg, NMsg} of
      {_, #{error := NFerror}} -> S4#{error => NFerror};
      {#{error := PFerror}, _} -> S4#{error => PFerror};
      _ -> S4
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.LeaseRevokeRequest'/3}).
'merge_msg_Etcd.LeaseRevokeRequest'(PMsg, NMsg, _) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {_, #{'ID' := NFID}} -> S1#{'ID' => NFID};
      {#{'ID' := PFID}, _} -> S1#{'ID' => PFID};
      _ -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.LeaseRevokeResponse'/3}).
'merge_msg_Etcd.LeaseRevokeResponse'(PMsg, NMsg,
				     TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{header := PFheader}, #{header := NFheader}} ->
	  S1#{header =>
		  'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						  TrUserData)};
      {_, #{header := NFheader}} -> S1#{header => NFheader};
      {#{header := PFheader}, _} -> S1#{header => PFheader};
      {_, _} -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.LeaseCheckpoint'/3}).
'merge_msg_Etcd.LeaseCheckpoint'(PMsg, NMsg, _) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{'ID' := NFID}} -> S1#{'ID' => NFID};
	   {#{'ID' := PFID}, _} -> S1#{'ID' => PFID};
	   _ -> S1
	 end,
    case {PMsg, NMsg} of
      {_, #{remaining_TTL := NFremaining_TTL}} ->
	  S2#{remaining_TTL => NFremaining_TTL};
      {#{remaining_TTL := PFremaining_TTL}, _} ->
	  S2#{remaining_TTL => PFremaining_TTL};
      _ -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.LeaseCheckpointRequest'/3}).
'merge_msg_Etcd.LeaseCheckpointRequest'(PMsg, NMsg,
					TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{checkpoints := PFcheckpoints},
       #{checkpoints := NFcheckpoints}} ->
	  S1#{checkpoints =>
		  'erlang_++'(PFcheckpoints, NFcheckpoints, TrUserData)};
      {_, #{checkpoints := NFcheckpoints}} ->
	  S1#{checkpoints => NFcheckpoints};
      {#{checkpoints := PFcheckpoints}, _} ->
	  S1#{checkpoints => PFcheckpoints};
      {_, _} -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.LeaseCheckpointResponse'/3}).
'merge_msg_Etcd.LeaseCheckpointResponse'(PMsg, NMsg,
					 TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{header := PFheader}, #{header := NFheader}} ->
	  S1#{header =>
		  'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						  TrUserData)};
      {_, #{header := NFheader}} -> S1#{header => NFheader};
      {#{header := PFheader}, _} -> S1#{header => PFheader};
      {_, _} -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.LeaseKeepAliveRequest'/3}).
'merge_msg_Etcd.LeaseKeepAliveRequest'(PMsg, NMsg, _) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {_, #{'ID' := NFID}} -> S1#{'ID' => NFID};
      {#{'ID' := PFID}, _} -> S1#{'ID' => PFID};
      _ -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.LeaseKeepAliveResponse'/3}).
'merge_msg_Etcd.LeaseKeepAliveResponse'(PMsg, NMsg,
					TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{header := PFheader}, #{header := NFheader}} ->
	       S1#{header =>
		       'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						       TrUserData)};
	   {_, #{header := NFheader}} -> S1#{header => NFheader};
	   {#{header := PFheader}, _} -> S1#{header => PFheader};
	   {_, _} -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{'ID' := NFID}} -> S2#{'ID' => NFID};
	   {#{'ID' := PFID}, _} -> S2#{'ID' => PFID};
	   _ -> S2
	 end,
    case {PMsg, NMsg} of
      {_, #{'TTL' := NFTTL}} -> S3#{'TTL' => NFTTL};
      {#{'TTL' := PFTTL}, _} -> S3#{'TTL' => PFTTL};
      _ -> S3
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.LeaseTimeToLiveRequest'/3}).
'merge_msg_Etcd.LeaseTimeToLiveRequest'(PMsg, NMsg,
					_) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{'ID' := NFID}} -> S1#{'ID' => NFID};
	   {#{'ID' := PFID}, _} -> S1#{'ID' => PFID};
	   _ -> S1
	 end,
    case {PMsg, NMsg} of
      {_, #{keys := NFkeys}} -> S2#{keys => NFkeys};
      {#{keys := PFkeys}, _} -> S2#{keys => PFkeys};
      _ -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.LeaseTimeToLiveResponse'/3}).
'merge_msg_Etcd.LeaseTimeToLiveResponse'(PMsg, NMsg,
					 TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{header := PFheader}, #{header := NFheader}} ->
	       S1#{header =>
		       'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						       TrUserData)};
	   {_, #{header := NFheader}} -> S1#{header => NFheader};
	   {#{header := PFheader}, _} -> S1#{header => PFheader};
	   {_, _} -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{'ID' := NFID}} -> S2#{'ID' => NFID};
	   {#{'ID' := PFID}, _} -> S2#{'ID' => PFID};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {_, #{'TTL' := NFTTL}} -> S3#{'TTL' => NFTTL};
	   {#{'TTL' := PFTTL}, _} -> S3#{'TTL' => PFTTL};
	   _ -> S3
	 end,
    S5 = case {PMsg, NMsg} of
	   {_, #{grantedTTL := NFgrantedTTL}} ->
	       S4#{grantedTTL => NFgrantedTTL};
	   {#{grantedTTL := PFgrantedTTL}, _} ->
	       S4#{grantedTTL => PFgrantedTTL};
	   _ -> S4
	 end,
    case {PMsg, NMsg} of
      {#{keys := PFkeys}, #{keys := NFkeys}} ->
	  S5#{keys => 'erlang_++'(PFkeys, NFkeys, TrUserData)};
      {_, #{keys := NFkeys}} -> S5#{keys => NFkeys};
      {#{keys := PFkeys}, _} -> S5#{keys => PFkeys};
      {_, _} -> S5
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.LeaseLeasesRequest'/3}).
'merge_msg_Etcd.LeaseLeasesRequest'(_Prev, New,
				    _TrUserData) ->
    New.

-compile({nowarn_unused_function,'merge_msg_Etcd.LeaseStatus'/3}).
'merge_msg_Etcd.LeaseStatus'(PMsg, NMsg, _) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {_, #{'ID' := NFID}} -> S1#{'ID' => NFID};
      {#{'ID' := PFID}, _} -> S1#{'ID' => PFID};
      _ -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.LeaseLeasesResponse'/3}).
'merge_msg_Etcd.LeaseLeasesResponse'(PMsg, NMsg,
				     TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{header := PFheader}, #{header := NFheader}} ->
	       S1#{header =>
		       'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						       TrUserData)};
	   {_, #{header := NFheader}} -> S1#{header => NFheader};
	   {#{header := PFheader}, _} -> S1#{header => PFheader};
	   {_, _} -> S1
	 end,
    case {PMsg, NMsg} of
      {#{leases := PFleases}, #{leases := NFleases}} ->
	  S2#{leases =>
		  'erlang_++'(PFleases, NFleases, TrUserData)};
      {_, #{leases := NFleases}} -> S2#{leases => NFleases};
      {#{leases := PFleases}, _} -> S2#{leases => PFleases};
      {_, _} -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.Member'/3}).
'merge_msg_Etcd.Member'(PMsg, NMsg, TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{'ID' := NFID}} -> S1#{'ID' => NFID};
	   {#{'ID' := PFID}, _} -> S1#{'ID' => PFID};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{name := NFname}} -> S2#{name => NFname};
	   {#{name := PFname}, _} -> S2#{name => PFname};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {#{peerURLs := PFpeerURLs},
	    #{peerURLs := NFpeerURLs}} ->
	       S3#{peerURLs =>
		       'erlang_++'(PFpeerURLs, NFpeerURLs, TrUserData)};
	   {_, #{peerURLs := NFpeerURLs}} ->
	       S3#{peerURLs => NFpeerURLs};
	   {#{peerURLs := PFpeerURLs}, _} ->
	       S3#{peerURLs => PFpeerURLs};
	   {_, _} -> S3
	 end,
    S5 = case {PMsg, NMsg} of
	   {#{clientURLs := PFclientURLs},
	    #{clientURLs := NFclientURLs}} ->
	       S4#{clientURLs =>
		       'erlang_++'(PFclientURLs, NFclientURLs, TrUserData)};
	   {_, #{clientURLs := NFclientURLs}} ->
	       S4#{clientURLs => NFclientURLs};
	   {#{clientURLs := PFclientURLs}, _} ->
	       S4#{clientURLs => PFclientURLs};
	   {_, _} -> S4
	 end,
    case {PMsg, NMsg} of
      {_, #{isLearner := NFisLearner}} ->
	  S5#{isLearner => NFisLearner};
      {#{isLearner := PFisLearner}, _} ->
	  S5#{isLearner => PFisLearner};
      _ -> S5
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.MemberAddRequest'/3}).
'merge_msg_Etcd.MemberAddRequest'(PMsg, NMsg,
				  TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{peerURLs := PFpeerURLs},
	    #{peerURLs := NFpeerURLs}} ->
	       S1#{peerURLs =>
		       'erlang_++'(PFpeerURLs, NFpeerURLs, TrUserData)};
	   {_, #{peerURLs := NFpeerURLs}} ->
	       S1#{peerURLs => NFpeerURLs};
	   {#{peerURLs := PFpeerURLs}, _} ->
	       S1#{peerURLs => PFpeerURLs};
	   {_, _} -> S1
	 end,
    case {PMsg, NMsg} of
      {_, #{isLearner := NFisLearner}} ->
	  S2#{isLearner => NFisLearner};
      {#{isLearner := PFisLearner}, _} ->
	  S2#{isLearner => PFisLearner};
      _ -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.MemberAddResponse'/3}).
'merge_msg_Etcd.MemberAddResponse'(PMsg, NMsg,
				   TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{header := PFheader}, #{header := NFheader}} ->
	       S1#{header =>
		       'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						       TrUserData)};
	   {_, #{header := NFheader}} -> S1#{header => NFheader};
	   {#{header := PFheader}, _} -> S1#{header => PFheader};
	   {_, _} -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {#{member := PFmember}, #{member := NFmember}} ->
	       S2#{member =>
		       'merge_msg_Etcd.Member'(PFmember, NFmember,
					       TrUserData)};
	   {_, #{member := NFmember}} -> S2#{member => NFmember};
	   {#{member := PFmember}, _} -> S2#{member => PFmember};
	   {_, _} -> S2
	 end,
    case {PMsg, NMsg} of
      {#{members := PFmembers}, #{members := NFmembers}} ->
	  S3#{members =>
		  'erlang_++'(PFmembers, NFmembers, TrUserData)};
      {_, #{members := NFmembers}} ->
	  S3#{members => NFmembers};
      {#{members := PFmembers}, _} ->
	  S3#{members => PFmembers};
      {_, _} -> S3
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.MemberRemoveRequest'/3}).
'merge_msg_Etcd.MemberRemoveRequest'(PMsg, NMsg, _) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {_, #{'ID' := NFID}} -> S1#{'ID' => NFID};
      {#{'ID' := PFID}, _} -> S1#{'ID' => PFID};
      _ -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.MemberRemoveResponse'/3}).
'merge_msg_Etcd.MemberRemoveResponse'(PMsg, NMsg,
				      TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{header := PFheader}, #{header := NFheader}} ->
	       S1#{header =>
		       'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						       TrUserData)};
	   {_, #{header := NFheader}} -> S1#{header => NFheader};
	   {#{header := PFheader}, _} -> S1#{header => PFheader};
	   {_, _} -> S1
	 end,
    case {PMsg, NMsg} of
      {#{members := PFmembers}, #{members := NFmembers}} ->
	  S2#{members =>
		  'erlang_++'(PFmembers, NFmembers, TrUserData)};
      {_, #{members := NFmembers}} ->
	  S2#{members => NFmembers};
      {#{members := PFmembers}, _} ->
	  S2#{members => PFmembers};
      {_, _} -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.MemberUpdateRequest'/3}).
'merge_msg_Etcd.MemberUpdateRequest'(PMsg, NMsg,
				     TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{'ID' := NFID}} -> S1#{'ID' => NFID};
	   {#{'ID' := PFID}, _} -> S1#{'ID' => PFID};
	   _ -> S1
	 end,
    case {PMsg, NMsg} of
      {#{peerURLs := PFpeerURLs},
       #{peerURLs := NFpeerURLs}} ->
	  S2#{peerURLs =>
		  'erlang_++'(PFpeerURLs, NFpeerURLs, TrUserData)};
      {_, #{peerURLs := NFpeerURLs}} ->
	  S2#{peerURLs => NFpeerURLs};
      {#{peerURLs := PFpeerURLs}, _} ->
	  S2#{peerURLs => PFpeerURLs};
      {_, _} -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.MemberUpdateResponse'/3}).
'merge_msg_Etcd.MemberUpdateResponse'(PMsg, NMsg,
				      TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{header := PFheader}, #{header := NFheader}} ->
	       S1#{header =>
		       'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						       TrUserData)};
	   {_, #{header := NFheader}} -> S1#{header => NFheader};
	   {#{header := PFheader}, _} -> S1#{header => PFheader};
	   {_, _} -> S1
	 end,
    case {PMsg, NMsg} of
      {#{members := PFmembers}, #{members := NFmembers}} ->
	  S2#{members =>
		  'erlang_++'(PFmembers, NFmembers, TrUserData)};
      {_, #{members := NFmembers}} ->
	  S2#{members => NFmembers};
      {#{members := PFmembers}, _} ->
	  S2#{members => PFmembers};
      {_, _} -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.MemberListRequest'/3}).
'merge_msg_Etcd.MemberListRequest'(_Prev, New,
				   _TrUserData) ->
    New.

-compile({nowarn_unused_function,'merge_msg_Etcd.MemberListResponse'/3}).
'merge_msg_Etcd.MemberListResponse'(PMsg, NMsg,
				    TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{header := PFheader}, #{header := NFheader}} ->
	       S1#{header =>
		       'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						       TrUserData)};
	   {_, #{header := NFheader}} -> S1#{header => NFheader};
	   {#{header := PFheader}, _} -> S1#{header => PFheader};
	   {_, _} -> S1
	 end,
    case {PMsg, NMsg} of
      {#{members := PFmembers}, #{members := NFmembers}} ->
	  S2#{members =>
		  'erlang_++'(PFmembers, NFmembers, TrUserData)};
      {_, #{members := NFmembers}} ->
	  S2#{members => NFmembers};
      {#{members := PFmembers}, _} ->
	  S2#{members => PFmembers};
      {_, _} -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.MemberPromoteRequest'/3}).
'merge_msg_Etcd.MemberPromoteRequest'(PMsg, NMsg, _) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {_, #{'ID' := NFID}} -> S1#{'ID' => NFID};
      {#{'ID' := PFID}, _} -> S1#{'ID' => PFID};
      _ -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.MemberPromoteResponse'/3}).
'merge_msg_Etcd.MemberPromoteResponse'(PMsg, NMsg,
				       TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{header := PFheader}, #{header := NFheader}} ->
	       S1#{header =>
		       'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						       TrUserData)};
	   {_, #{header := NFheader}} -> S1#{header => NFheader};
	   {#{header := PFheader}, _} -> S1#{header => PFheader};
	   {_, _} -> S1
	 end,
    case {PMsg, NMsg} of
      {#{members := PFmembers}, #{members := NFmembers}} ->
	  S2#{members =>
		  'erlang_++'(PFmembers, NFmembers, TrUserData)};
      {_, #{members := NFmembers}} ->
	  S2#{members => NFmembers};
      {#{members := PFmembers}, _} ->
	  S2#{members => PFmembers};
      {_, _} -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.DefragmentRequest'/3}).
'merge_msg_Etcd.DefragmentRequest'(_Prev, New,
				   _TrUserData) ->
    New.

-compile({nowarn_unused_function,'merge_msg_Etcd.DefragmentResponse'/3}).
'merge_msg_Etcd.DefragmentResponse'(PMsg, NMsg,
				    TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{header := PFheader}, #{header := NFheader}} ->
	  S1#{header =>
		  'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						  TrUserData)};
      {_, #{header := NFheader}} -> S1#{header => NFheader};
      {#{header := PFheader}, _} -> S1#{header => PFheader};
      {_, _} -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.MoveLeaderRequest'/3}).
'merge_msg_Etcd.MoveLeaderRequest'(PMsg, NMsg, _) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {_, #{targetID := NFtargetID}} ->
	  S1#{targetID => NFtargetID};
      {#{targetID := PFtargetID}, _} ->
	  S1#{targetID => PFtargetID};
      _ -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.MoveLeaderResponse'/3}).
'merge_msg_Etcd.MoveLeaderResponse'(PMsg, NMsg,
				    TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{header := PFheader}, #{header := NFheader}} ->
	  S1#{header =>
		  'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						  TrUserData)};
      {_, #{header := NFheader}} -> S1#{header => NFheader};
      {#{header := PFheader}, _} -> S1#{header => PFheader};
      {_, _} -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AlarmRequest'/3}).
'merge_msg_Etcd.AlarmRequest'(PMsg, NMsg, _) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{action := NFaction}} -> S1#{action => NFaction};
	   {#{action := PFaction}, _} -> S1#{action => PFaction};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{memberID := NFmemberID}} ->
	       S2#{memberID => NFmemberID};
	   {#{memberID := PFmemberID}, _} ->
	       S2#{memberID => PFmemberID};
	   _ -> S2
	 end,
    case {PMsg, NMsg} of
      {_, #{alarm := NFalarm}} -> S3#{alarm => NFalarm};
      {#{alarm := PFalarm}, _} -> S3#{alarm => PFalarm};
      _ -> S3
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AlarmMember'/3}).
'merge_msg_Etcd.AlarmMember'(PMsg, NMsg, _) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{memberID := NFmemberID}} ->
	       S1#{memberID => NFmemberID};
	   {#{memberID := PFmemberID}, _} ->
	       S1#{memberID => PFmemberID};
	   _ -> S1
	 end,
    case {PMsg, NMsg} of
      {_, #{alarm := NFalarm}} -> S2#{alarm => NFalarm};
      {#{alarm := PFalarm}, _} -> S2#{alarm => PFalarm};
      _ -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AlarmResponse'/3}).
'merge_msg_Etcd.AlarmResponse'(PMsg, NMsg,
			       TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{header := PFheader}, #{header := NFheader}} ->
	       S1#{header =>
		       'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						       TrUserData)};
	   {_, #{header := NFheader}} -> S1#{header => NFheader};
	   {#{header := PFheader}, _} -> S1#{header => PFheader};
	   {_, _} -> S1
	 end,
    case {PMsg, NMsg} of
      {#{alarms := PFalarms}, #{alarms := NFalarms}} ->
	  S2#{alarms =>
		  'erlang_++'(PFalarms, NFalarms, TrUserData)};
      {_, #{alarms := NFalarms}} -> S2#{alarms => NFalarms};
      {#{alarms := PFalarms}, _} -> S2#{alarms => PFalarms};
      {_, _} -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.StatusRequest'/3}).
'merge_msg_Etcd.StatusRequest'(_Prev, New,
			       _TrUserData) ->
    New.

-compile({nowarn_unused_function,'merge_msg_Etcd.StatusResponse'/3}).
'merge_msg_Etcd.StatusResponse'(PMsg, NMsg,
				TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{header := PFheader}, #{header := NFheader}} ->
	       S1#{header =>
		       'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						       TrUserData)};
	   {_, #{header := NFheader}} -> S1#{header => NFheader};
	   {#{header := PFheader}, _} -> S1#{header => PFheader};
	   {_, _} -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{version := NFversion}} ->
	       S2#{version => NFversion};
	   {#{version := PFversion}, _} ->
	       S2#{version => PFversion};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {_, #{dbSize := NFdbSize}} -> S3#{dbSize => NFdbSize};
	   {#{dbSize := PFdbSize}, _} -> S3#{dbSize => PFdbSize};
	   _ -> S3
	 end,
    S5 = case {PMsg, NMsg} of
	   {_, #{leader := NFleader}} -> S4#{leader => NFleader};
	   {#{leader := PFleader}, _} -> S4#{leader => PFleader};
	   _ -> S4
	 end,
    S6 = case {PMsg, NMsg} of
	   {_, #{raftIndex := NFraftIndex}} ->
	       S5#{raftIndex => NFraftIndex};
	   {#{raftIndex := PFraftIndex}, _} ->
	       S5#{raftIndex => PFraftIndex};
	   _ -> S5
	 end,
    S7 = case {PMsg, NMsg} of
	   {_, #{raftTerm := NFraftTerm}} ->
	       S6#{raftTerm => NFraftTerm};
	   {#{raftTerm := PFraftTerm}, _} ->
	       S6#{raftTerm => PFraftTerm};
	   _ -> S6
	 end,
    S8 = case {PMsg, NMsg} of
	   {_, #{raftAppliedIndex := NFraftAppliedIndex}} ->
	       S7#{raftAppliedIndex => NFraftAppliedIndex};
	   {#{raftAppliedIndex := PFraftAppliedIndex}, _} ->
	       S7#{raftAppliedIndex => PFraftAppliedIndex};
	   _ -> S7
	 end,
    S9 = case {PMsg, NMsg} of
	   {#{errors := PFerrors}, #{errors := NFerrors}} ->
	       S8#{errors =>
		       'erlang_++'(PFerrors, NFerrors, TrUserData)};
	   {_, #{errors := NFerrors}} -> S8#{errors => NFerrors};
	   {#{errors := PFerrors}, _} -> S8#{errors => PFerrors};
	   {_, _} -> S8
	 end,
    S10 = case {PMsg, NMsg} of
	    {_, #{dbSizeInUse := NFdbSizeInUse}} ->
		S9#{dbSizeInUse => NFdbSizeInUse};
	    {#{dbSizeInUse := PFdbSizeInUse}, _} ->
		S9#{dbSizeInUse => PFdbSizeInUse};
	    _ -> S9
	  end,
    case {PMsg, NMsg} of
      {_, #{isLearner := NFisLearner}} ->
	  S10#{isLearner => NFisLearner};
      {#{isLearner := PFisLearner}, _} ->
	  S10#{isLearner => PFisLearner};
      _ -> S10
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthEnableRequest'/3}).
'merge_msg_Etcd.AuthEnableRequest'(_Prev, New,
				   _TrUserData) ->
    New.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthDisableRequest'/3}).
'merge_msg_Etcd.AuthDisableRequest'(_Prev, New,
				    _TrUserData) ->
    New.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthenticateRequest'/3}).
'merge_msg_Etcd.AuthenticateRequest'(PMsg, NMsg, _) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{name := NFname}} -> S1#{name => NFname};
	   {#{name := PFname}, _} -> S1#{name => PFname};
	   _ -> S1
	 end,
    case {PMsg, NMsg} of
      {_, #{password := NFpassword}} ->
	  S2#{password => NFpassword};
      {#{password := PFpassword}, _} ->
	  S2#{password => PFpassword};
      _ -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthUserAddRequest'/3}).
'merge_msg_Etcd.AuthUserAddRequest'(PMsg, NMsg,
				    TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{name := NFname}} -> S1#{name => NFname};
	   {#{name := PFname}, _} -> S1#{name => PFname};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{password := NFpassword}} ->
	       S2#{password => NFpassword};
	   {#{password := PFpassword}, _} ->
	       S2#{password => PFpassword};
	   _ -> S2
	 end,
    case {PMsg, NMsg} of
      {#{options := PFoptions}, #{options := NFoptions}} ->
	  S3#{options =>
		  'merge_msg_authpb.UserAddOptions'(PFoptions, NFoptions,
						    TrUserData)};
      {_, #{options := NFoptions}} ->
	  S3#{options => NFoptions};
      {#{options := PFoptions}, _} ->
	  S3#{options => PFoptions};
      {_, _} -> S3
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthUserGetRequest'/3}).
'merge_msg_Etcd.AuthUserGetRequest'(PMsg, NMsg, _) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {_, #{name := NFname}} -> S1#{name => NFname};
      {#{name := PFname}, _} -> S1#{name => PFname};
      _ -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthUserDeleteRequest'/3}).
'merge_msg_Etcd.AuthUserDeleteRequest'(PMsg, NMsg, _) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {_, #{name := NFname}} -> S1#{name => NFname};
      {#{name := PFname}, _} -> S1#{name => PFname};
      _ -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthUserChangePasswordRequest'/3}).
'merge_msg_Etcd.AuthUserChangePasswordRequest'(PMsg,
					       NMsg, _) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{name := NFname}} -> S1#{name => NFname};
	   {#{name := PFname}, _} -> S1#{name => PFname};
	   _ -> S1
	 end,
    case {PMsg, NMsg} of
      {_, #{password := NFpassword}} ->
	  S2#{password => NFpassword};
      {#{password := PFpassword}, _} ->
	  S2#{password => PFpassword};
      _ -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthUserGrantRoleRequest'/3}).
'merge_msg_Etcd.AuthUserGrantRoleRequest'(PMsg, NMsg,
					  _) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{user := NFuser}} -> S1#{user => NFuser};
	   {#{user := PFuser}, _} -> S1#{user => PFuser};
	   _ -> S1
	 end,
    case {PMsg, NMsg} of
      {_, #{role := NFrole}} -> S2#{role => NFrole};
      {#{role := PFrole}, _} -> S2#{role => PFrole};
      _ -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthUserRevokeRoleRequest'/3}).
'merge_msg_Etcd.AuthUserRevokeRoleRequest'(PMsg, NMsg,
					   _) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{name := NFname}} -> S1#{name => NFname};
	   {#{name := PFname}, _} -> S1#{name => PFname};
	   _ -> S1
	 end,
    case {PMsg, NMsg} of
      {_, #{role := NFrole}} -> S2#{role => NFrole};
      {#{role := PFrole}, _} -> S2#{role => PFrole};
      _ -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthRoleAddRequest'/3}).
'merge_msg_Etcd.AuthRoleAddRequest'(PMsg, NMsg, _) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {_, #{name := NFname}} -> S1#{name => NFname};
      {#{name := PFname}, _} -> S1#{name => PFname};
      _ -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthRoleGetRequest'/3}).
'merge_msg_Etcd.AuthRoleGetRequest'(PMsg, NMsg, _) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {_, #{role := NFrole}} -> S1#{role => NFrole};
      {#{role := PFrole}, _} -> S1#{role => PFrole};
      _ -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthUserListRequest'/3}).
'merge_msg_Etcd.AuthUserListRequest'(_Prev, New,
				     _TrUserData) ->
    New.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthRoleListRequest'/3}).
'merge_msg_Etcd.AuthRoleListRequest'(_Prev, New,
				     _TrUserData) ->
    New.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthRoleDeleteRequest'/3}).
'merge_msg_Etcd.AuthRoleDeleteRequest'(PMsg, NMsg, _) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {_, #{role := NFrole}} -> S1#{role => NFrole};
      {#{role := PFrole}, _} -> S1#{role => PFrole};
      _ -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthRoleGrantPermissionRequest'/3}).
'merge_msg_Etcd.AuthRoleGrantPermissionRequest'(PMsg,
						NMsg, TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{name := NFname}} -> S1#{name => NFname};
	   {#{name := PFname}, _} -> S1#{name => PFname};
	   _ -> S1
	 end,
    case {PMsg, NMsg} of
      {#{perm := PFperm}, #{perm := NFperm}} ->
	  S2#{perm =>
		  'merge_msg_authpb.Permission'(PFperm, NFperm,
						TrUserData)};
      {_, #{perm := NFperm}} -> S2#{perm => NFperm};
      {#{perm := PFperm}, _} -> S2#{perm => PFperm};
      {_, _} -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthRoleRevokePermissionRequest'/3}).
'merge_msg_Etcd.AuthRoleRevokePermissionRequest'(PMsg,
						 NMsg, _) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{role := NFrole}} -> S1#{role => NFrole};
	   {#{role := PFrole}, _} -> S1#{role => PFrole};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{key := NFkey}} -> S2#{key => NFkey};
	   {#{key := PFkey}, _} -> S2#{key => PFkey};
	   _ -> S2
	 end,
    case {PMsg, NMsg} of
      {_, #{range_end := NFrange_end}} ->
	  S3#{range_end => NFrange_end};
      {#{range_end := PFrange_end}, _} ->
	  S3#{range_end => PFrange_end};
      _ -> S3
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthEnableResponse'/3}).
'merge_msg_Etcd.AuthEnableResponse'(PMsg, NMsg,
				    TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{header := PFheader}, #{header := NFheader}} ->
	  S1#{header =>
		  'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						  TrUserData)};
      {_, #{header := NFheader}} -> S1#{header => NFheader};
      {#{header := PFheader}, _} -> S1#{header => PFheader};
      {_, _} -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthDisableResponse'/3}).
'merge_msg_Etcd.AuthDisableResponse'(PMsg, NMsg,
				     TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{header := PFheader}, #{header := NFheader}} ->
	  S1#{header =>
		  'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						  TrUserData)};
      {_, #{header := NFheader}} -> S1#{header => NFheader};
      {#{header := PFheader}, _} -> S1#{header => PFheader};
      {_, _} -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthenticateResponse'/3}).
'merge_msg_Etcd.AuthenticateResponse'(PMsg, NMsg,
				      TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{header := PFheader}, #{header := NFheader}} ->
	       S1#{header =>
		       'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						       TrUserData)};
	   {_, #{header := NFheader}} -> S1#{header => NFheader};
	   {#{header := PFheader}, _} -> S1#{header => PFheader};
	   {_, _} -> S1
	 end,
    case {PMsg, NMsg} of
      {_, #{token := NFtoken}} -> S2#{token => NFtoken};
      {#{token := PFtoken}, _} -> S2#{token => PFtoken};
      _ -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthUserAddResponse'/3}).
'merge_msg_Etcd.AuthUserAddResponse'(PMsg, NMsg,
				     TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{header := PFheader}, #{header := NFheader}} ->
	  S1#{header =>
		  'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						  TrUserData)};
      {_, #{header := NFheader}} -> S1#{header => NFheader};
      {#{header := PFheader}, _} -> S1#{header => PFheader};
      {_, _} -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthUserGetResponse'/3}).
'merge_msg_Etcd.AuthUserGetResponse'(PMsg, NMsg,
				     TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{header := PFheader}, #{header := NFheader}} ->
	       S1#{header =>
		       'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						       TrUserData)};
	   {_, #{header := NFheader}} -> S1#{header => NFheader};
	   {#{header := PFheader}, _} -> S1#{header => PFheader};
	   {_, _} -> S1
	 end,
    case {PMsg, NMsg} of
      {#{roles := PFroles}, #{roles := NFroles}} ->
	  S2#{roles => 'erlang_++'(PFroles, NFroles, TrUserData)};
      {_, #{roles := NFroles}} -> S2#{roles => NFroles};
      {#{roles := PFroles}, _} -> S2#{roles => PFroles};
      {_, _} -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthUserDeleteResponse'/3}).
'merge_msg_Etcd.AuthUserDeleteResponse'(PMsg, NMsg,
					TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{header := PFheader}, #{header := NFheader}} ->
	  S1#{header =>
		  'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						  TrUserData)};
      {_, #{header := NFheader}} -> S1#{header => NFheader};
      {#{header := PFheader}, _} -> S1#{header => PFheader};
      {_, _} -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthUserChangePasswordResponse'/3}).
'merge_msg_Etcd.AuthUserChangePasswordResponse'(PMsg,
						NMsg, TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{header := PFheader}, #{header := NFheader}} ->
	  S1#{header =>
		  'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						  TrUserData)};
      {_, #{header := NFheader}} -> S1#{header => NFheader};
      {#{header := PFheader}, _} -> S1#{header => PFheader};
      {_, _} -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthUserGrantRoleResponse'/3}).
'merge_msg_Etcd.AuthUserGrantRoleResponse'(PMsg, NMsg,
					   TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{header := PFheader}, #{header := NFheader}} ->
	  S1#{header =>
		  'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						  TrUserData)};
      {_, #{header := NFheader}} -> S1#{header => NFheader};
      {#{header := PFheader}, _} -> S1#{header => PFheader};
      {_, _} -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthUserRevokeRoleResponse'/3}).
'merge_msg_Etcd.AuthUserRevokeRoleResponse'(PMsg, NMsg,
					    TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{header := PFheader}, #{header := NFheader}} ->
	  S1#{header =>
		  'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						  TrUserData)};
      {_, #{header := NFheader}} -> S1#{header => NFheader};
      {#{header := PFheader}, _} -> S1#{header => PFheader};
      {_, _} -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthRoleAddResponse'/3}).
'merge_msg_Etcd.AuthRoleAddResponse'(PMsg, NMsg,
				     TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{header := PFheader}, #{header := NFheader}} ->
	  S1#{header =>
		  'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						  TrUserData)};
      {_, #{header := NFheader}} -> S1#{header => NFheader};
      {#{header := PFheader}, _} -> S1#{header => PFheader};
      {_, _} -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthRoleGetResponse'/3}).
'merge_msg_Etcd.AuthRoleGetResponse'(PMsg, NMsg,
				     TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{header := PFheader}, #{header := NFheader}} ->
	       S1#{header =>
		       'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						       TrUserData)};
	   {_, #{header := NFheader}} -> S1#{header => NFheader};
	   {#{header := PFheader}, _} -> S1#{header => PFheader};
	   {_, _} -> S1
	 end,
    case {PMsg, NMsg} of
      {#{perm := PFperm}, #{perm := NFperm}} ->
	  S2#{perm => 'erlang_++'(PFperm, NFperm, TrUserData)};
      {_, #{perm := NFperm}} -> S2#{perm => NFperm};
      {#{perm := PFperm}, _} -> S2#{perm => PFperm};
      {_, _} -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthRoleListResponse'/3}).
'merge_msg_Etcd.AuthRoleListResponse'(PMsg, NMsg,
				      TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{header := PFheader}, #{header := NFheader}} ->
	       S1#{header =>
		       'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						       TrUserData)};
	   {_, #{header := NFheader}} -> S1#{header => NFheader};
	   {#{header := PFheader}, _} -> S1#{header => PFheader};
	   {_, _} -> S1
	 end,
    case {PMsg, NMsg} of
      {#{roles := PFroles}, #{roles := NFroles}} ->
	  S2#{roles => 'erlang_++'(PFroles, NFroles, TrUserData)};
      {_, #{roles := NFroles}} -> S2#{roles => NFroles};
      {#{roles := PFroles}, _} -> S2#{roles => PFroles};
      {_, _} -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthUserListResponse'/3}).
'merge_msg_Etcd.AuthUserListResponse'(PMsg, NMsg,
				      TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{header := PFheader}, #{header := NFheader}} ->
	       S1#{header =>
		       'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						       TrUserData)};
	   {_, #{header := NFheader}} -> S1#{header => NFheader};
	   {#{header := PFheader}, _} -> S1#{header => PFheader};
	   {_, _} -> S1
	 end,
    case {PMsg, NMsg} of
      {#{users := PFusers}, #{users := NFusers}} ->
	  S2#{users => 'erlang_++'(PFusers, NFusers, TrUserData)};
      {_, #{users := NFusers}} -> S2#{users => NFusers};
      {#{users := PFusers}, _} -> S2#{users => PFusers};
      {_, _} -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthRoleDeleteResponse'/3}).
'merge_msg_Etcd.AuthRoleDeleteResponse'(PMsg, NMsg,
					TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{header := PFheader}, #{header := NFheader}} ->
	  S1#{header =>
		  'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						  TrUserData)};
      {_, #{header := NFheader}} -> S1#{header => NFheader};
      {#{header := PFheader}, _} -> S1#{header => PFheader};
      {_, _} -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthRoleGrantPermissionResponse'/3}).
'merge_msg_Etcd.AuthRoleGrantPermissionResponse'(PMsg,
						 NMsg, TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{header := PFheader}, #{header := NFheader}} ->
	  S1#{header =>
		  'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						  TrUserData)};
      {_, #{header := NFheader}} -> S1#{header => NFheader};
      {#{header := PFheader}, _} -> S1#{header => PFheader};
      {_, _} -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.AuthRoleRevokePermissionResponse'/3}).
'merge_msg_Etcd.AuthRoleRevokePermissionResponse'(PMsg,
						  NMsg, TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{header := PFheader}, #{header := NFheader}} ->
	  S1#{header =>
		  'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						  TrUserData)};
      {_, #{header := NFheader}} -> S1#{header => NFheader};
      {#{header := PFheader}, _} -> S1#{header => PFheader};
      {_, _} -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.HealthCheckRequest'/3}).
'merge_msg_Etcd.HealthCheckRequest'(PMsg, NMsg, _) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {_, #{service := NFservice}} ->
	  S1#{service => NFservice};
      {#{service := PFservice}, _} ->
	  S1#{service => PFservice};
      _ -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.HealthCheckResponse'/3}).
'merge_msg_Etcd.HealthCheckResponse'(PMsg, NMsg, _) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {_, #{status := NFstatus}} -> S1#{status => NFstatus};
      {#{status := PFstatus}, _} -> S1#{status => PFstatus};
      _ -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.LockRequest'/3}).
'merge_msg_Etcd.LockRequest'(PMsg, NMsg, _) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{name := NFname}} -> S1#{name => NFname};
	   {#{name := PFname}, _} -> S1#{name => PFname};
	   _ -> S1
	 end,
    case {PMsg, NMsg} of
      {_, #{lease := NFlease}} -> S2#{lease => NFlease};
      {#{lease := PFlease}, _} -> S2#{lease => PFlease};
      _ -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.LockResponse'/3}).
'merge_msg_Etcd.LockResponse'(PMsg, NMsg, TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{header := PFheader}, #{header := NFheader}} ->
	       S1#{header =>
		       'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						       TrUserData)};
	   {_, #{header := NFheader}} -> S1#{header => NFheader};
	   {#{header := PFheader}, _} -> S1#{header => PFheader};
	   {_, _} -> S1
	 end,
    case {PMsg, NMsg} of
      {_, #{key := NFkey}} -> S2#{key => NFkey};
      {#{key := PFkey}, _} -> S2#{key => PFkey};
      _ -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.UnlockRequest'/3}).
'merge_msg_Etcd.UnlockRequest'(PMsg, NMsg, _) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {_, #{key := NFkey}} -> S1#{key => NFkey};
      {#{key := PFkey}, _} -> S1#{key => PFkey};
      _ -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.UnlockResponse'/3}).
'merge_msg_Etcd.UnlockResponse'(PMsg, NMsg,
				TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{header := PFheader}, #{header := NFheader}} ->
	  S1#{header =>
		  'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						  TrUserData)};
      {_, #{header := NFheader}} -> S1#{header => NFheader};
      {#{header := PFheader}, _} -> S1#{header => PFheader};
      {_, _} -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.CampaignRequest'/3}).
'merge_msg_Etcd.CampaignRequest'(PMsg, NMsg, _) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{name := NFname}} -> S1#{name => NFname};
	   {#{name := PFname}, _} -> S1#{name => PFname};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{lease := NFlease}} -> S2#{lease => NFlease};
	   {#{lease := PFlease}, _} -> S2#{lease => PFlease};
	   _ -> S2
	 end,
    case {PMsg, NMsg} of
      {_, #{value := NFvalue}} -> S3#{value => NFvalue};
      {#{value := PFvalue}, _} -> S3#{value => PFvalue};
      _ -> S3
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.CampaignResponse'/3}).
'merge_msg_Etcd.CampaignResponse'(PMsg, NMsg,
				  TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{header := PFheader}, #{header := NFheader}} ->
	       S1#{header =>
		       'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						       TrUserData)};
	   {_, #{header := NFheader}} -> S1#{header => NFheader};
	   {#{header := PFheader}, _} -> S1#{header => PFheader};
	   {_, _} -> S1
	 end,
    case {PMsg, NMsg} of
      {#{leader := PFleader}, #{leader := NFleader}} ->
	  S2#{leader =>
		  'merge_msg_Etcd.LeaderKey'(PFleader, NFleader,
					     TrUserData)};
      {_, #{leader := NFleader}} -> S2#{leader => NFleader};
      {#{leader := PFleader}, _} -> S2#{leader => PFleader};
      {_, _} -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.LeaderKey'/3}).
'merge_msg_Etcd.LeaderKey'(PMsg, NMsg, _) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{name := NFname}} -> S1#{name => NFname};
	   {#{name := PFname}, _} -> S1#{name => PFname};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{key := NFkey}} -> S2#{key => NFkey};
	   {#{key := PFkey}, _} -> S2#{key => PFkey};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {_, #{rev := NFrev}} -> S3#{rev => NFrev};
	   {#{rev := PFrev}, _} -> S3#{rev => PFrev};
	   _ -> S3
	 end,
    case {PMsg, NMsg} of
      {_, #{lease := NFlease}} -> S4#{lease => NFlease};
      {#{lease := PFlease}, _} -> S4#{lease => PFlease};
      _ -> S4
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.LeaderRequest'/3}).
'merge_msg_Etcd.LeaderRequest'(PMsg, NMsg, _) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {_, #{name := NFname}} -> S1#{name => NFname};
      {#{name := PFname}, _} -> S1#{name => PFname};
      _ -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.LeaderResponse'/3}).
'merge_msg_Etcd.LeaderResponse'(PMsg, NMsg,
				TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{header := PFheader}, #{header := NFheader}} ->
	       S1#{header =>
		       'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						       TrUserData)};
	   {_, #{header := NFheader}} -> S1#{header => NFheader};
	   {#{header := PFheader}, _} -> S1#{header => PFheader};
	   {_, _} -> S1
	 end,
    case {PMsg, NMsg} of
      {#{kv := PFkv}, #{kv := NFkv}} ->
	  S2#{kv =>
		  'merge_msg_mvccpb.KeyValue'(PFkv, NFkv, TrUserData)};
      {_, #{kv := NFkv}} -> S2#{kv => NFkv};
      {#{kv := PFkv}, _} -> S2#{kv => PFkv};
      {_, _} -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.ResignRequest'/3}).
'merge_msg_Etcd.ResignRequest'(PMsg, NMsg,
			       TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{leader := PFleader}, #{leader := NFleader}} ->
	  S1#{leader =>
		  'merge_msg_Etcd.LeaderKey'(PFleader, NFleader,
					     TrUserData)};
      {_, #{leader := NFleader}} -> S1#{leader => NFleader};
      {#{leader := PFleader}, _} -> S1#{leader => PFleader};
      {_, _} -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.ResignResponse'/3}).
'merge_msg_Etcd.ResignResponse'(PMsg, NMsg,
				TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{header := PFheader}, #{header := NFheader}} ->
	  S1#{header =>
		  'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						  TrUserData)};
      {_, #{header := NFheader}} -> S1#{header => NFheader};
      {#{header := PFheader}, _} -> S1#{header => PFheader};
      {_, _} -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.ProclaimRequest'/3}).
'merge_msg_Etcd.ProclaimRequest'(PMsg, NMsg,
				 TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{leader := PFleader}, #{leader := NFleader}} ->
	       S1#{leader =>
		       'merge_msg_Etcd.LeaderKey'(PFleader, NFleader,
						  TrUserData)};
	   {_, #{leader := NFleader}} -> S1#{leader => NFleader};
	   {#{leader := PFleader}, _} -> S1#{leader => PFleader};
	   {_, _} -> S1
	 end,
    case {PMsg, NMsg} of
      {_, #{value := NFvalue}} -> S2#{value => NFvalue};
      {#{value := PFvalue}, _} -> S2#{value => PFvalue};
      _ -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_Etcd.ProclaimResponse'/3}).
'merge_msg_Etcd.ProclaimResponse'(PMsg, NMsg,
				  TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{header := PFheader}, #{header := NFheader}} ->
	  S1#{header =>
		  'merge_msg_Etcd.ResponseHeader'(PFheader, NFheader,
						  TrUserData)};
      {_, #{header := NFheader}} -> S1#{header => NFheader};
      {#{header := PFheader}, _} -> S1#{header => PFheader};
      {_, _} -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.FileDescriptorSet'/3}).
'merge_msg_google.protobuf.FileDescriptorSet'(PMsg,
					      NMsg, TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{file := PFfile}, #{file := NFfile}} ->
	  S1#{file => 'erlang_++'(PFfile, NFfile, TrUserData)};
      {_, #{file := NFfile}} -> S1#{file => NFfile};
      {#{file := PFfile}, _} -> S1#{file => PFfile};
      {_, _} -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.FileDescriptorProto'/3}).
'merge_msg_google.protobuf.FileDescriptorProto'(PMsg,
						NMsg, TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{name := NFname}} -> S1#{name => NFname};
	   {#{name := PFname}, _} -> S1#{name => PFname};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{package := NFpackage}} ->
	       S2#{package => NFpackage};
	   {#{package := PFpackage}, _} ->
	       S2#{package => PFpackage};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {#{dependency := PFdependency},
	    #{dependency := NFdependency}} ->
	       S3#{dependency =>
		       'erlang_++'(PFdependency, NFdependency, TrUserData)};
	   {_, #{dependency := NFdependency}} ->
	       S3#{dependency => NFdependency};
	   {#{dependency := PFdependency}, _} ->
	       S3#{dependency => PFdependency};
	   {_, _} -> S3
	 end,
    S5 = case {PMsg, NMsg} of
	   {#{public_dependency := PFpublic_dependency},
	    #{public_dependency := NFpublic_dependency}} ->
	       S4#{public_dependency =>
		       'erlang_++'(PFpublic_dependency, NFpublic_dependency,
				   TrUserData)};
	   {_, #{public_dependency := NFpublic_dependency}} ->
	       S4#{public_dependency => NFpublic_dependency};
	   {#{public_dependency := PFpublic_dependency}, _} ->
	       S4#{public_dependency => PFpublic_dependency};
	   {_, _} -> S4
	 end,
    S6 = case {PMsg, NMsg} of
	   {#{weak_dependency := PFweak_dependency},
	    #{weak_dependency := NFweak_dependency}} ->
	       S5#{weak_dependency =>
		       'erlang_++'(PFweak_dependency, NFweak_dependency,
				   TrUserData)};
	   {_, #{weak_dependency := NFweak_dependency}} ->
	       S5#{weak_dependency => NFweak_dependency};
	   {#{weak_dependency := PFweak_dependency}, _} ->
	       S5#{weak_dependency => PFweak_dependency};
	   {_, _} -> S5
	 end,
    S7 = case {PMsg, NMsg} of
	   {#{message_type := PFmessage_type},
	    #{message_type := NFmessage_type}} ->
	       S6#{message_type =>
		       'erlang_++'(PFmessage_type, NFmessage_type,
				   TrUserData)};
	   {_, #{message_type := NFmessage_type}} ->
	       S6#{message_type => NFmessage_type};
	   {#{message_type := PFmessage_type}, _} ->
	       S6#{message_type => PFmessage_type};
	   {_, _} -> S6
	 end,
    S8 = case {PMsg, NMsg} of
	   {#{enum_type := PFenum_type},
	    #{enum_type := NFenum_type}} ->
	       S7#{enum_type =>
		       'erlang_++'(PFenum_type, NFenum_type, TrUserData)};
	   {_, #{enum_type := NFenum_type}} ->
	       S7#{enum_type => NFenum_type};
	   {#{enum_type := PFenum_type}, _} ->
	       S7#{enum_type => PFenum_type};
	   {_, _} -> S7
	 end,
    S9 = case {PMsg, NMsg} of
	   {#{service := PFservice}, #{service := NFservice}} ->
	       S8#{service =>
		       'erlang_++'(PFservice, NFservice, TrUserData)};
	   {_, #{service := NFservice}} ->
	       S8#{service => NFservice};
	   {#{service := PFservice}, _} ->
	       S8#{service => PFservice};
	   {_, _} -> S8
	 end,
    S10 = case {PMsg, NMsg} of
	    {#{extension := PFextension},
	     #{extension := NFextension}} ->
		S9#{extension =>
			'erlang_++'(PFextension, NFextension, TrUserData)};
	    {_, #{extension := NFextension}} ->
		S9#{extension => NFextension};
	    {#{extension := PFextension}, _} ->
		S9#{extension => PFextension};
	    {_, _} -> S9
	  end,
    S11 = case {PMsg, NMsg} of
	    {#{options := PFoptions}, #{options := NFoptions}} ->
		S10#{options =>
			 'merge_msg_google.protobuf.FileOptions'(PFoptions,
								 NFoptions,
								 TrUserData)};
	    {_, #{options := NFoptions}} ->
		S10#{options => NFoptions};
	    {#{options := PFoptions}, _} ->
		S10#{options => PFoptions};
	    {_, _} -> S10
	  end,
    S12 = case {PMsg, NMsg} of
	    {#{source_code_info := PFsource_code_info},
	     #{source_code_info := NFsource_code_info}} ->
		S11#{source_code_info =>
			 'merge_msg_google.protobuf.SourceCodeInfo'(PFsource_code_info,
								    NFsource_code_info,
								    TrUserData)};
	    {_, #{source_code_info := NFsource_code_info}} ->
		S11#{source_code_info => NFsource_code_info};
	    {#{source_code_info := PFsource_code_info}, _} ->
		S11#{source_code_info => PFsource_code_info};
	    {_, _} -> S11
	  end,
    case {PMsg, NMsg} of
      {_, #{syntax := NFsyntax}} -> S12#{syntax => NFsyntax};
      {#{syntax := PFsyntax}, _} -> S12#{syntax => PFsyntax};
      _ -> S12
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.DescriptorProto.ExtensionRange'/3}).
'merge_msg_google.protobuf.DescriptorProto.ExtensionRange'(PMsg,
							   NMsg, _) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{start := NFstart}} -> S1#{start => NFstart};
	   {#{start := PFstart}, _} -> S1#{start => PFstart};
	   _ -> S1
	 end,
    case {PMsg, NMsg} of
      {_, #{'end' := NFend}} -> S2#{'end' => NFend};
      {#{'end' := PFend}, _} -> S2#{'end' => PFend};
      _ -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.DescriptorProto.ReservedRange'/3}).
'merge_msg_google.protobuf.DescriptorProto.ReservedRange'(PMsg,
							  NMsg, _) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{start := NFstart}} -> S1#{start => NFstart};
	   {#{start := PFstart}, _} -> S1#{start => PFstart};
	   _ -> S1
	 end,
    case {PMsg, NMsg} of
      {_, #{'end' := NFend}} -> S2#{'end' => NFend};
      {#{'end' := PFend}, _} -> S2#{'end' => PFend};
      _ -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.DescriptorProto'/3}).
'merge_msg_google.protobuf.DescriptorProto'(PMsg, NMsg,
					    TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{name := NFname}} -> S1#{name => NFname};
	   {#{name := PFname}, _} -> S1#{name => PFname};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {#{field := PFfield}, #{field := NFfield}} ->
	       S2#{field => 'erlang_++'(PFfield, NFfield, TrUserData)};
	   {_, #{field := NFfield}} -> S2#{field => NFfield};
	   {#{field := PFfield}, _} -> S2#{field => PFfield};
	   {_, _} -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {#{extension := PFextension},
	    #{extension := NFextension}} ->
	       S3#{extension =>
		       'erlang_++'(PFextension, NFextension, TrUserData)};
	   {_, #{extension := NFextension}} ->
	       S3#{extension => NFextension};
	   {#{extension := PFextension}, _} ->
	       S3#{extension => PFextension};
	   {_, _} -> S3
	 end,
    S5 = case {PMsg, NMsg} of
	   {#{nested_type := PFnested_type},
	    #{nested_type := NFnested_type}} ->
	       S4#{nested_type =>
		       'erlang_++'(PFnested_type, NFnested_type, TrUserData)};
	   {_, #{nested_type := NFnested_type}} ->
	       S4#{nested_type => NFnested_type};
	   {#{nested_type := PFnested_type}, _} ->
	       S4#{nested_type => PFnested_type};
	   {_, _} -> S4
	 end,
    S6 = case {PMsg, NMsg} of
	   {#{enum_type := PFenum_type},
	    #{enum_type := NFenum_type}} ->
	       S5#{enum_type =>
		       'erlang_++'(PFenum_type, NFenum_type, TrUserData)};
	   {_, #{enum_type := NFenum_type}} ->
	       S5#{enum_type => NFenum_type};
	   {#{enum_type := PFenum_type}, _} ->
	       S5#{enum_type => PFenum_type};
	   {_, _} -> S5
	 end,
    S7 = case {PMsg, NMsg} of
	   {#{extension_range := PFextension_range},
	    #{extension_range := NFextension_range}} ->
	       S6#{extension_range =>
		       'erlang_++'(PFextension_range, NFextension_range,
				   TrUserData)};
	   {_, #{extension_range := NFextension_range}} ->
	       S6#{extension_range => NFextension_range};
	   {#{extension_range := PFextension_range}, _} ->
	       S6#{extension_range => PFextension_range};
	   {_, _} -> S6
	 end,
    S8 = case {PMsg, NMsg} of
	   {#{oneof_decl := PFoneof_decl},
	    #{oneof_decl := NFoneof_decl}} ->
	       S7#{oneof_decl =>
		       'erlang_++'(PFoneof_decl, NFoneof_decl, TrUserData)};
	   {_, #{oneof_decl := NFoneof_decl}} ->
	       S7#{oneof_decl => NFoneof_decl};
	   {#{oneof_decl := PFoneof_decl}, _} ->
	       S7#{oneof_decl => PFoneof_decl};
	   {_, _} -> S7
	 end,
    S9 = case {PMsg, NMsg} of
	   {#{options := PFoptions}, #{options := NFoptions}} ->
	       S8#{options =>
		       'merge_msg_google.protobuf.MessageOptions'(PFoptions,
								  NFoptions,
								  TrUserData)};
	   {_, #{options := NFoptions}} ->
	       S8#{options => NFoptions};
	   {#{options := PFoptions}, _} ->
	       S8#{options => PFoptions};
	   {_, _} -> S8
	 end,
    S10 = case {PMsg, NMsg} of
	    {#{reserved_range := PFreserved_range},
	     #{reserved_range := NFreserved_range}} ->
		S9#{reserved_range =>
			'erlang_++'(PFreserved_range, NFreserved_range,
				    TrUserData)};
	    {_, #{reserved_range := NFreserved_range}} ->
		S9#{reserved_range => NFreserved_range};
	    {#{reserved_range := PFreserved_range}, _} ->
		S9#{reserved_range => PFreserved_range};
	    {_, _} -> S9
	  end,
    case {PMsg, NMsg} of
      {#{reserved_name := PFreserved_name},
       #{reserved_name := NFreserved_name}} ->
	  S10#{reserved_name =>
		   'erlang_++'(PFreserved_name, NFreserved_name,
			       TrUserData)};
      {_, #{reserved_name := NFreserved_name}} ->
	  S10#{reserved_name => NFreserved_name};
      {#{reserved_name := PFreserved_name}, _} ->
	  S10#{reserved_name => PFreserved_name};
      {_, _} -> S10
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.FieldDescriptorProto'/3}).
'merge_msg_google.protobuf.FieldDescriptorProto'(PMsg,
						 NMsg, TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{name := NFname}} -> S1#{name => NFname};
	   {#{name := PFname}, _} -> S1#{name => PFname};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{number := NFnumber}} -> S2#{number => NFnumber};
	   {#{number := PFnumber}, _} -> S2#{number => PFnumber};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {_, #{label := NFlabel}} -> S3#{label => NFlabel};
	   {#{label := PFlabel}, _} -> S3#{label => PFlabel};
	   _ -> S3
	 end,
    S5 = case {PMsg, NMsg} of
	   {_, #{type := NFtype}} -> S4#{type => NFtype};
	   {#{type := PFtype}, _} -> S4#{type => PFtype};
	   _ -> S4
	 end,
    S6 = case {PMsg, NMsg} of
	   {_, #{type_name := NFtype_name}} ->
	       S5#{type_name => NFtype_name};
	   {#{type_name := PFtype_name}, _} ->
	       S5#{type_name => PFtype_name};
	   _ -> S5
	 end,
    S7 = case {PMsg, NMsg} of
	   {_, #{extendee := NFextendee}} ->
	       S6#{extendee => NFextendee};
	   {#{extendee := PFextendee}, _} ->
	       S6#{extendee => PFextendee};
	   _ -> S6
	 end,
    S8 = case {PMsg, NMsg} of
	   {_, #{default_value := NFdefault_value}} ->
	       S7#{default_value => NFdefault_value};
	   {#{default_value := PFdefault_value}, _} ->
	       S7#{default_value => PFdefault_value};
	   _ -> S7
	 end,
    S9 = case {PMsg, NMsg} of
	   {_, #{oneof_index := NFoneof_index}} ->
	       S8#{oneof_index => NFoneof_index};
	   {#{oneof_index := PFoneof_index}, _} ->
	       S8#{oneof_index => PFoneof_index};
	   _ -> S8
	 end,
    S10 = case {PMsg, NMsg} of
	    {_, #{json_name := NFjson_name}} ->
		S9#{json_name => NFjson_name};
	    {#{json_name := PFjson_name}, _} ->
		S9#{json_name => PFjson_name};
	    _ -> S9
	  end,
    case {PMsg, NMsg} of
      {#{options := PFoptions}, #{options := NFoptions}} ->
	  S10#{options =>
		   'merge_msg_google.protobuf.FieldOptions'(PFoptions,
							    NFoptions,
							    TrUserData)};
      {_, #{options := NFoptions}} ->
	  S10#{options => NFoptions};
      {#{options := PFoptions}, _} ->
	  S10#{options => PFoptions};
      {_, _} -> S10
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.OneofDescriptorProto'/3}).
'merge_msg_google.protobuf.OneofDescriptorProto'(PMsg,
						 NMsg, _) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {_, #{name := NFname}} -> S1#{name => NFname};
      {#{name := PFname}, _} -> S1#{name => PFname};
      _ -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.EnumDescriptorProto'/3}).
'merge_msg_google.protobuf.EnumDescriptorProto'(PMsg,
						NMsg, TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{name := NFname}} -> S1#{name => NFname};
	   {#{name := PFname}, _} -> S1#{name => PFname};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {#{value := PFvalue}, #{value := NFvalue}} ->
	       S2#{value => 'erlang_++'(PFvalue, NFvalue, TrUserData)};
	   {_, #{value := NFvalue}} -> S2#{value => NFvalue};
	   {#{value := PFvalue}, _} -> S2#{value => PFvalue};
	   {_, _} -> S2
	 end,
    case {PMsg, NMsg} of
      {#{options := PFoptions}, #{options := NFoptions}} ->
	  S3#{options =>
		  'merge_msg_google.protobuf.EnumOptions'(PFoptions,
							  NFoptions,
							  TrUserData)};
      {_, #{options := NFoptions}} ->
	  S3#{options => NFoptions};
      {#{options := PFoptions}, _} ->
	  S3#{options => PFoptions};
      {_, _} -> S3
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.EnumValueDescriptorProto'/3}).
'merge_msg_google.protobuf.EnumValueDescriptorProto'(PMsg,
						     NMsg, TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{name := NFname}} -> S1#{name => NFname};
	   {#{name := PFname}, _} -> S1#{name => PFname};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{number := NFnumber}} -> S2#{number => NFnumber};
	   {#{number := PFnumber}, _} -> S2#{number => PFnumber};
	   _ -> S2
	 end,
    case {PMsg, NMsg} of
      {#{options := PFoptions}, #{options := NFoptions}} ->
	  S3#{options =>
		  'merge_msg_google.protobuf.EnumValueOptions'(PFoptions,
							       NFoptions,
							       TrUserData)};
      {_, #{options := NFoptions}} ->
	  S3#{options => NFoptions};
      {#{options := PFoptions}, _} ->
	  S3#{options => PFoptions};
      {_, _} -> S3
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.ServiceDescriptorProto'/3}).
'merge_msg_google.protobuf.ServiceDescriptorProto'(PMsg,
						   NMsg, TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{name := NFname}} -> S1#{name => NFname};
	   {#{name := PFname}, _} -> S1#{name => PFname};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {#{method := PFmethod}, #{method := NFmethod}} ->
	       S2#{method =>
		       'erlang_++'(PFmethod, NFmethod, TrUserData)};
	   {_, #{method := NFmethod}} -> S2#{method => NFmethod};
	   {#{method := PFmethod}, _} -> S2#{method => PFmethod};
	   {_, _} -> S2
	 end,
    case {PMsg, NMsg} of
      {#{options := PFoptions}, #{options := NFoptions}} ->
	  S3#{options =>
		  'merge_msg_google.protobuf.ServiceOptions'(PFoptions,
							     NFoptions,
							     TrUserData)};
      {_, #{options := NFoptions}} ->
	  S3#{options => NFoptions};
      {#{options := PFoptions}, _} ->
	  S3#{options => PFoptions};
      {_, _} -> S3
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.MethodDescriptorProto'/3}).
'merge_msg_google.protobuf.MethodDescriptorProto'(PMsg,
						  NMsg, TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{name := NFname}} -> S1#{name => NFname};
	   {#{name := PFname}, _} -> S1#{name => PFname};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{input_type := NFinput_type}} ->
	       S2#{input_type => NFinput_type};
	   {#{input_type := PFinput_type}, _} ->
	       S2#{input_type => PFinput_type};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {_, #{output_type := NFoutput_type}} ->
	       S3#{output_type => NFoutput_type};
	   {#{output_type := PFoutput_type}, _} ->
	       S3#{output_type => PFoutput_type};
	   _ -> S3
	 end,
    S5 = case {PMsg, NMsg} of
	   {#{options := PFoptions}, #{options := NFoptions}} ->
	       S4#{options =>
		       'merge_msg_google.protobuf.MethodOptions'(PFoptions,
								 NFoptions,
								 TrUserData)};
	   {_, #{options := NFoptions}} ->
	       S4#{options => NFoptions};
	   {#{options := PFoptions}, _} ->
	       S4#{options => PFoptions};
	   {_, _} -> S4
	 end,
    S6 = case {PMsg, NMsg} of
	   {_, #{client_streaming := NFclient_streaming}} ->
	       S5#{client_streaming => NFclient_streaming};
	   {#{client_streaming := PFclient_streaming}, _} ->
	       S5#{client_streaming => PFclient_streaming};
	   _ -> S5
	 end,
    case {PMsg, NMsg} of
      {_, #{server_streaming := NFserver_streaming}} ->
	  S6#{server_streaming => NFserver_streaming};
      {#{server_streaming := PFserver_streaming}, _} ->
	  S6#{server_streaming => PFserver_streaming};
      _ -> S6
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.FileOptions'/3}).
'merge_msg_google.protobuf.FileOptions'(PMsg, NMsg,
					TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{java_package := NFjava_package}} ->
	       S1#{java_package => NFjava_package};
	   {#{java_package := PFjava_package}, _} ->
	       S1#{java_package => PFjava_package};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_,
	    #{java_outer_classname := NFjava_outer_classname}} ->
	       S2#{java_outer_classname => NFjava_outer_classname};
	   {#{java_outer_classname := PFjava_outer_classname},
	    _} ->
	       S2#{java_outer_classname => PFjava_outer_classname};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {_, #{java_multiple_files := NFjava_multiple_files}} ->
	       S3#{java_multiple_files => NFjava_multiple_files};
	   {#{java_multiple_files := PFjava_multiple_files}, _} ->
	       S3#{java_multiple_files => PFjava_multiple_files};
	   _ -> S3
	 end,
    S5 = case {PMsg, NMsg} of
	   {_,
	    #{java_generate_equals_and_hash :=
		  NFjava_generate_equals_and_hash}} ->
	       S4#{java_generate_equals_and_hash =>
		       NFjava_generate_equals_and_hash};
	   {#{java_generate_equals_and_hash :=
		  PFjava_generate_equals_and_hash},
	    _} ->
	       S4#{java_generate_equals_and_hash =>
		       PFjava_generate_equals_and_hash};
	   _ -> S4
	 end,
    S6 = case {PMsg, NMsg} of
	   {_,
	    #{java_string_check_utf8 :=
		  NFjava_string_check_utf8}} ->
	       S5#{java_string_check_utf8 => NFjava_string_check_utf8};
	   {#{java_string_check_utf8 := PFjava_string_check_utf8},
	    _} ->
	       S5#{java_string_check_utf8 => PFjava_string_check_utf8};
	   _ -> S5
	 end,
    S7 = case {PMsg, NMsg} of
	   {_, #{optimize_for := NFoptimize_for}} ->
	       S6#{optimize_for => NFoptimize_for};
	   {#{optimize_for := PFoptimize_for}, _} ->
	       S6#{optimize_for => PFoptimize_for};
	   _ -> S6
	 end,
    S8 = case {PMsg, NMsg} of
	   {_, #{go_package := NFgo_package}} ->
	       S7#{go_package => NFgo_package};
	   {#{go_package := PFgo_package}, _} ->
	       S7#{go_package => PFgo_package};
	   _ -> S7
	 end,
    S9 = case {PMsg, NMsg} of
	   {_, #{cc_generic_services := NFcc_generic_services}} ->
	       S8#{cc_generic_services => NFcc_generic_services};
	   {#{cc_generic_services := PFcc_generic_services}, _} ->
	       S8#{cc_generic_services => PFcc_generic_services};
	   _ -> S8
	 end,
    S10 = case {PMsg, NMsg} of
	    {_,
	     #{java_generic_services := NFjava_generic_services}} ->
		S9#{java_generic_services => NFjava_generic_services};
	    {#{java_generic_services := PFjava_generic_services},
	     _} ->
		S9#{java_generic_services => PFjava_generic_services};
	    _ -> S9
	  end,
    S11 = case {PMsg, NMsg} of
	    {_, #{py_generic_services := NFpy_generic_services}} ->
		S10#{py_generic_services => NFpy_generic_services};
	    {#{py_generic_services := PFpy_generic_services}, _} ->
		S10#{py_generic_services => PFpy_generic_services};
	    _ -> S10
	  end,
    S12 = case {PMsg, NMsg} of
	    {_, #{deprecated := NFdeprecated}} ->
		S11#{deprecated => NFdeprecated};
	    {#{deprecated := PFdeprecated}, _} ->
		S11#{deprecated => PFdeprecated};
	    _ -> S11
	  end,
    S13 = case {PMsg, NMsg} of
	    {_, #{cc_enable_arenas := NFcc_enable_arenas}} ->
		S12#{cc_enable_arenas => NFcc_enable_arenas};
	    {#{cc_enable_arenas := PFcc_enable_arenas}, _} ->
		S12#{cc_enable_arenas => PFcc_enable_arenas};
	    _ -> S12
	  end,
    S14 = case {PMsg, NMsg} of
	    {_, #{objc_class_prefix := NFobjc_class_prefix}} ->
		S13#{objc_class_prefix => NFobjc_class_prefix};
	    {#{objc_class_prefix := PFobjc_class_prefix}, _} ->
		S13#{objc_class_prefix => PFobjc_class_prefix};
	    _ -> S13
	  end,
    S15 = case {PMsg, NMsg} of
	    {_, #{csharp_namespace := NFcsharp_namespace}} ->
		S14#{csharp_namespace => NFcsharp_namespace};
	    {#{csharp_namespace := PFcsharp_namespace}, _} ->
		S14#{csharp_namespace => PFcsharp_namespace};
	    _ -> S14
	  end,
    S16 = case {PMsg, NMsg} of
	    {_,
	     #{javanano_use_deprecated_package :=
		   NFjavanano_use_deprecated_package}} ->
		S15#{javanano_use_deprecated_package =>
			 NFjavanano_use_deprecated_package};
	    {#{javanano_use_deprecated_package :=
		   PFjavanano_use_deprecated_package},
	     _} ->
		S15#{javanano_use_deprecated_package =>
			 PFjavanano_use_deprecated_package};
	    _ -> S15
	  end,
    S17 = case {PMsg, NMsg} of
	    {#{uninterpreted_option := PFuninterpreted_option},
	     #{uninterpreted_option := NFuninterpreted_option}} ->
		S16#{uninterpreted_option =>
			 'erlang_++'(PFuninterpreted_option,
				     NFuninterpreted_option, TrUserData)};
	    {_,
	     #{uninterpreted_option := NFuninterpreted_option}} ->
		S16#{uninterpreted_option => NFuninterpreted_option};
	    {#{uninterpreted_option := PFuninterpreted_option},
	     _} ->
		S16#{uninterpreted_option => PFuninterpreted_option};
	    {_, _} -> S16
	  end,
    S18 = case {PMsg, NMsg} of
	    {_, #{goproto_getters_all := NFgoproto_getters_all}} ->
		S17#{goproto_getters_all => NFgoproto_getters_all};
	    {#{goproto_getters_all := PFgoproto_getters_all}, _} ->
		S17#{goproto_getters_all => PFgoproto_getters_all};
	    _ -> S17
	  end,
    S19 = case {PMsg, NMsg} of
	    {_,
	     #{goproto_enum_prefix_all :=
		   NFgoproto_enum_prefix_all}} ->
		S18#{goproto_enum_prefix_all =>
			 NFgoproto_enum_prefix_all};
	    {#{goproto_enum_prefix_all :=
		   PFgoproto_enum_prefix_all},
	     _} ->
		S18#{goproto_enum_prefix_all =>
			 PFgoproto_enum_prefix_all};
	    _ -> S18
	  end,
    S20 = case {PMsg, NMsg} of
	    {_,
	     #{goproto_stringer_all := NFgoproto_stringer_all}} ->
		S19#{goproto_stringer_all => NFgoproto_stringer_all};
	    {#{goproto_stringer_all := PFgoproto_stringer_all},
	     _} ->
		S19#{goproto_stringer_all => PFgoproto_stringer_all};
	    _ -> S19
	  end,
    S21 = case {PMsg, NMsg} of
	    {_, #{verbose_equal_all := NFverbose_equal_all}} ->
		S20#{verbose_equal_all => NFverbose_equal_all};
	    {#{verbose_equal_all := PFverbose_equal_all}, _} ->
		S20#{verbose_equal_all => PFverbose_equal_all};
	    _ -> S20
	  end,
    S22 = case {PMsg, NMsg} of
	    {_, #{face_all := NFface_all}} ->
		S21#{face_all => NFface_all};
	    {#{face_all := PFface_all}, _} ->
		S21#{face_all => PFface_all};
	    _ -> S21
	  end,
    S23 = case {PMsg, NMsg} of
	    {_, #{gostring_all := NFgostring_all}} ->
		S22#{gostring_all => NFgostring_all};
	    {#{gostring_all := PFgostring_all}, _} ->
		S22#{gostring_all => PFgostring_all};
	    _ -> S22
	  end,
    S24 = case {PMsg, NMsg} of
	    {_, #{populate_all := NFpopulate_all}} ->
		S23#{populate_all => NFpopulate_all};
	    {#{populate_all := PFpopulate_all}, _} ->
		S23#{populate_all => PFpopulate_all};
	    _ -> S23
	  end,
    S25 = case {PMsg, NMsg} of
	    {_, #{stringer_all := NFstringer_all}} ->
		S24#{stringer_all => NFstringer_all};
	    {#{stringer_all := PFstringer_all}, _} ->
		S24#{stringer_all => PFstringer_all};
	    _ -> S24
	  end,
    S26 = case {PMsg, NMsg} of
	    {_, #{onlyone_all := NFonlyone_all}} ->
		S25#{onlyone_all => NFonlyone_all};
	    {#{onlyone_all := PFonlyone_all}, _} ->
		S25#{onlyone_all => PFonlyone_all};
	    _ -> S25
	  end,
    S27 = case {PMsg, NMsg} of
	    {_, #{equal_all := NFequal_all}} ->
		S26#{equal_all => NFequal_all};
	    {#{equal_all := PFequal_all}, _} ->
		S26#{equal_all => PFequal_all};
	    _ -> S26
	  end,
    S28 = case {PMsg, NMsg} of
	    {_, #{description_all := NFdescription_all}} ->
		S27#{description_all => NFdescription_all};
	    {#{description_all := PFdescription_all}, _} ->
		S27#{description_all => PFdescription_all};
	    _ -> S27
	  end,
    S29 = case {PMsg, NMsg} of
	    {_, #{testgen_all := NFtestgen_all}} ->
		S28#{testgen_all => NFtestgen_all};
	    {#{testgen_all := PFtestgen_all}, _} ->
		S28#{testgen_all => PFtestgen_all};
	    _ -> S28
	  end,
    S30 = case {PMsg, NMsg} of
	    {_, #{benchgen_all := NFbenchgen_all}} ->
		S29#{benchgen_all => NFbenchgen_all};
	    {#{benchgen_all := PFbenchgen_all}, _} ->
		S29#{benchgen_all => PFbenchgen_all};
	    _ -> S29
	  end,
    S31 = case {PMsg, NMsg} of
	    {_, #{marshaler_all := NFmarshaler_all}} ->
		S30#{marshaler_all => NFmarshaler_all};
	    {#{marshaler_all := PFmarshaler_all}, _} ->
		S30#{marshaler_all => PFmarshaler_all};
	    _ -> S30
	  end,
    S32 = case {PMsg, NMsg} of
	    {_, #{unmarshaler_all := NFunmarshaler_all}} ->
		S31#{unmarshaler_all => NFunmarshaler_all};
	    {#{unmarshaler_all := PFunmarshaler_all}, _} ->
		S31#{unmarshaler_all => PFunmarshaler_all};
	    _ -> S31
	  end,
    S33 = case {PMsg, NMsg} of
	    {_,
	     #{stable_marshaler_all := NFstable_marshaler_all}} ->
		S32#{stable_marshaler_all => NFstable_marshaler_all};
	    {#{stable_marshaler_all := PFstable_marshaler_all},
	     _} ->
		S32#{stable_marshaler_all => PFstable_marshaler_all};
	    _ -> S32
	  end,
    S34 = case {PMsg, NMsg} of
	    {_, #{sizer_all := NFsizer_all}} ->
		S33#{sizer_all => NFsizer_all};
	    {#{sizer_all := PFsizer_all}, _} ->
		S33#{sizer_all => PFsizer_all};
	    _ -> S33
	  end,
    S35 = case {PMsg, NMsg} of
	    {_,
	     #{goproto_enum_stringer_all :=
		   NFgoproto_enum_stringer_all}} ->
		S34#{goproto_enum_stringer_all =>
			 NFgoproto_enum_stringer_all};
	    {#{goproto_enum_stringer_all :=
		   PFgoproto_enum_stringer_all},
	     _} ->
		S34#{goproto_enum_stringer_all =>
			 PFgoproto_enum_stringer_all};
	    _ -> S34
	  end,
    S36 = case {PMsg, NMsg} of
	    {_, #{enum_stringer_all := NFenum_stringer_all}} ->
		S35#{enum_stringer_all => NFenum_stringer_all};
	    {#{enum_stringer_all := PFenum_stringer_all}, _} ->
		S35#{enum_stringer_all => PFenum_stringer_all};
	    _ -> S35
	  end,
    S37 = case {PMsg, NMsg} of
	    {_,
	     #{unsafe_marshaler_all := NFunsafe_marshaler_all}} ->
		S36#{unsafe_marshaler_all => NFunsafe_marshaler_all};
	    {#{unsafe_marshaler_all := PFunsafe_marshaler_all},
	     _} ->
		S36#{unsafe_marshaler_all => PFunsafe_marshaler_all};
	    _ -> S36
	  end,
    S38 = case {PMsg, NMsg} of
	    {_,
	     #{unsafe_unmarshaler_all :=
		   NFunsafe_unmarshaler_all}} ->
		S37#{unsafe_unmarshaler_all =>
			 NFunsafe_unmarshaler_all};
	    {#{unsafe_unmarshaler_all := PFunsafe_unmarshaler_all},
	     _} ->
		S37#{unsafe_unmarshaler_all =>
			 PFunsafe_unmarshaler_all};
	    _ -> S37
	  end,
    S39 = case {PMsg, NMsg} of
	    {_,
	     #{goproto_extensions_map_all :=
		   NFgoproto_extensions_map_all}} ->
		S38#{goproto_extensions_map_all =>
			 NFgoproto_extensions_map_all};
	    {#{goproto_extensions_map_all :=
		   PFgoproto_extensions_map_all},
	     _} ->
		S38#{goproto_extensions_map_all =>
			 PFgoproto_extensions_map_all};
	    _ -> S38
	  end,
    S40 = case {PMsg, NMsg} of
	    {_,
	     #{goproto_unrecognized_all :=
		   NFgoproto_unrecognized_all}} ->
		S39#{goproto_unrecognized_all =>
			 NFgoproto_unrecognized_all};
	    {#{goproto_unrecognized_all :=
		   PFgoproto_unrecognized_all},
	     _} ->
		S39#{goproto_unrecognized_all =>
			 PFgoproto_unrecognized_all};
	    _ -> S39
	  end,
    S41 = case {PMsg, NMsg} of
	    {_, #{gogoproto_import := NFgogoproto_import}} ->
		S40#{gogoproto_import => NFgogoproto_import};
	    {#{gogoproto_import := PFgogoproto_import}, _} ->
		S40#{gogoproto_import => PFgogoproto_import};
	    _ -> S40
	  end,
    S42 = case {PMsg, NMsg} of
	    {_, #{protosizer_all := NFprotosizer_all}} ->
		S41#{protosizer_all => NFprotosizer_all};
	    {#{protosizer_all := PFprotosizer_all}, _} ->
		S41#{protosizer_all => PFprotosizer_all};
	    _ -> S41
	  end,
    case {PMsg, NMsg} of
      {_, #{compare_all := NFcompare_all}} ->
	  S42#{compare_all => NFcompare_all};
      {#{compare_all := PFcompare_all}, _} ->
	  S42#{compare_all => PFcompare_all};
      _ -> S42
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.MessageOptions'/3}).
'merge_msg_google.protobuf.MessageOptions'(PMsg, NMsg,
					   TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_,
	    #{message_set_wire_format :=
		  NFmessage_set_wire_format}} ->
	       S1#{message_set_wire_format =>
		       NFmessage_set_wire_format};
	   {#{message_set_wire_format :=
		  PFmessage_set_wire_format},
	    _} ->
	       S1#{message_set_wire_format =>
		       PFmessage_set_wire_format};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_,
	    #{no_standard_descriptor_accessor :=
		  NFno_standard_descriptor_accessor}} ->
	       S2#{no_standard_descriptor_accessor =>
		       NFno_standard_descriptor_accessor};
	   {#{no_standard_descriptor_accessor :=
		  PFno_standard_descriptor_accessor},
	    _} ->
	       S2#{no_standard_descriptor_accessor =>
		       PFno_standard_descriptor_accessor};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {_, #{deprecated := NFdeprecated}} ->
	       S3#{deprecated => NFdeprecated};
	   {#{deprecated := PFdeprecated}, _} ->
	       S3#{deprecated => PFdeprecated};
	   _ -> S3
	 end,
    S5 = case {PMsg, NMsg} of
	   {_, #{map_entry := NFmap_entry}} ->
	       S4#{map_entry => NFmap_entry};
	   {#{map_entry := PFmap_entry}, _} ->
	       S4#{map_entry => PFmap_entry};
	   _ -> S4
	 end,
    S6 = case {PMsg, NMsg} of
	   {#{uninterpreted_option := PFuninterpreted_option},
	    #{uninterpreted_option := NFuninterpreted_option}} ->
	       S5#{uninterpreted_option =>
		       'erlang_++'(PFuninterpreted_option,
				   NFuninterpreted_option, TrUserData)};
	   {_,
	    #{uninterpreted_option := NFuninterpreted_option}} ->
	       S5#{uninterpreted_option => NFuninterpreted_option};
	   {#{uninterpreted_option := PFuninterpreted_option},
	    _} ->
	       S5#{uninterpreted_option => PFuninterpreted_option};
	   {_, _} -> S5
	 end,
    S7 = case {PMsg, NMsg} of
	   {_, #{goproto_getters := NFgoproto_getters}} ->
	       S6#{goproto_getters => NFgoproto_getters};
	   {#{goproto_getters := PFgoproto_getters}, _} ->
	       S6#{goproto_getters => PFgoproto_getters};
	   _ -> S6
	 end,
    S8 = case {PMsg, NMsg} of
	   {_, #{goproto_stringer := NFgoproto_stringer}} ->
	       S7#{goproto_stringer => NFgoproto_stringer};
	   {#{goproto_stringer := PFgoproto_stringer}, _} ->
	       S7#{goproto_stringer => PFgoproto_stringer};
	   _ -> S7
	 end,
    S9 = case {PMsg, NMsg} of
	   {_, #{verbose_equal := NFverbose_equal}} ->
	       S8#{verbose_equal => NFverbose_equal};
	   {#{verbose_equal := PFverbose_equal}, _} ->
	       S8#{verbose_equal => PFverbose_equal};
	   _ -> S8
	 end,
    S10 = case {PMsg, NMsg} of
	    {_, #{face := NFface}} -> S9#{face => NFface};
	    {#{face := PFface}, _} -> S9#{face => PFface};
	    _ -> S9
	  end,
    S11 = case {PMsg, NMsg} of
	    {_, #{gostring := NFgostring}} ->
		S10#{gostring => NFgostring};
	    {#{gostring := PFgostring}, _} ->
		S10#{gostring => PFgostring};
	    _ -> S10
	  end,
    S12 = case {PMsg, NMsg} of
	    {_, #{populate := NFpopulate}} ->
		S11#{populate => NFpopulate};
	    {#{populate := PFpopulate}, _} ->
		S11#{populate => PFpopulate};
	    _ -> S11
	  end,
    S13 = case {PMsg, NMsg} of
	    {_, #{stringer := NFstringer}} ->
		S12#{stringer => NFstringer};
	    {#{stringer := PFstringer}, _} ->
		S12#{stringer => PFstringer};
	    _ -> S12
	  end,
    S14 = case {PMsg, NMsg} of
	    {_, #{onlyone := NFonlyone}} ->
		S13#{onlyone => NFonlyone};
	    {#{onlyone := PFonlyone}, _} ->
		S13#{onlyone => PFonlyone};
	    _ -> S13
	  end,
    S15 = case {PMsg, NMsg} of
	    {_, #{equal := NFequal}} -> S14#{equal => NFequal};
	    {#{equal := PFequal}, _} -> S14#{equal => PFequal};
	    _ -> S14
	  end,
    S16 = case {PMsg, NMsg} of
	    {_, #{description := NFdescription}} ->
		S15#{description => NFdescription};
	    {#{description := PFdescription}, _} ->
		S15#{description => PFdescription};
	    _ -> S15
	  end,
    S17 = case {PMsg, NMsg} of
	    {_, #{testgen := NFtestgen}} ->
		S16#{testgen => NFtestgen};
	    {#{testgen := PFtestgen}, _} ->
		S16#{testgen => PFtestgen};
	    _ -> S16
	  end,
    S18 = case {PMsg, NMsg} of
	    {_, #{benchgen := NFbenchgen}} ->
		S17#{benchgen => NFbenchgen};
	    {#{benchgen := PFbenchgen}, _} ->
		S17#{benchgen => PFbenchgen};
	    _ -> S17
	  end,
    S19 = case {PMsg, NMsg} of
	    {_, #{marshaler := NFmarshaler}} ->
		S18#{marshaler => NFmarshaler};
	    {#{marshaler := PFmarshaler}, _} ->
		S18#{marshaler => PFmarshaler};
	    _ -> S18
	  end,
    S20 = case {PMsg, NMsg} of
	    {_, #{unmarshaler := NFunmarshaler}} ->
		S19#{unmarshaler => NFunmarshaler};
	    {#{unmarshaler := PFunmarshaler}, _} ->
		S19#{unmarshaler => PFunmarshaler};
	    _ -> S19
	  end,
    S21 = case {PMsg, NMsg} of
	    {_, #{stable_marshaler := NFstable_marshaler}} ->
		S20#{stable_marshaler => NFstable_marshaler};
	    {#{stable_marshaler := PFstable_marshaler}, _} ->
		S20#{stable_marshaler => PFstable_marshaler};
	    _ -> S20
	  end,
    S22 = case {PMsg, NMsg} of
	    {_, #{sizer := NFsizer}} -> S21#{sizer => NFsizer};
	    {#{sizer := PFsizer}, _} -> S21#{sizer => PFsizer};
	    _ -> S21
	  end,
    S23 = case {PMsg, NMsg} of
	    {_, #{unsafe_marshaler := NFunsafe_marshaler}} ->
		S22#{unsafe_marshaler => NFunsafe_marshaler};
	    {#{unsafe_marshaler := PFunsafe_marshaler}, _} ->
		S22#{unsafe_marshaler => PFunsafe_marshaler};
	    _ -> S22
	  end,
    S24 = case {PMsg, NMsg} of
	    {_, #{unsafe_unmarshaler := NFunsafe_unmarshaler}} ->
		S23#{unsafe_unmarshaler => NFunsafe_unmarshaler};
	    {#{unsafe_unmarshaler := PFunsafe_unmarshaler}, _} ->
		S23#{unsafe_unmarshaler => PFunsafe_unmarshaler};
	    _ -> S23
	  end,
    S25 = case {PMsg, NMsg} of
	    {_,
	     #{goproto_extensions_map :=
		   NFgoproto_extensions_map}} ->
		S24#{goproto_extensions_map =>
			 NFgoproto_extensions_map};
	    {#{goproto_extensions_map := PFgoproto_extensions_map},
	     _} ->
		S24#{goproto_extensions_map =>
			 PFgoproto_extensions_map};
	    _ -> S24
	  end,
    S26 = case {PMsg, NMsg} of
	    {_,
	     #{goproto_unrecognized := NFgoproto_unrecognized}} ->
		S25#{goproto_unrecognized => NFgoproto_unrecognized};
	    {#{goproto_unrecognized := PFgoproto_unrecognized},
	     _} ->
		S25#{goproto_unrecognized => PFgoproto_unrecognized};
	    _ -> S25
	  end,
    S27 = case {PMsg, NMsg} of
	    {_, #{protosizer := NFprotosizer}} ->
		S26#{protosizer => NFprotosizer};
	    {#{protosizer := PFprotosizer}, _} ->
		S26#{protosizer => PFprotosizer};
	    _ -> S26
	  end,
    case {PMsg, NMsg} of
      {_, #{compare := NFcompare}} ->
	  S27#{compare => NFcompare};
      {#{compare := PFcompare}, _} ->
	  S27#{compare => PFcompare};
      _ -> S27
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.FieldOptions'/3}).
'merge_msg_google.protobuf.FieldOptions'(PMsg, NMsg,
					 TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{ctype := NFctype}} -> S1#{ctype => NFctype};
	   {#{ctype := PFctype}, _} -> S1#{ctype => PFctype};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{packed := NFpacked}} -> S2#{packed => NFpacked};
	   {#{packed := PFpacked}, _} -> S2#{packed => PFpacked};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {_, #{jstype := NFjstype}} -> S3#{jstype => NFjstype};
	   {#{jstype := PFjstype}, _} -> S3#{jstype => PFjstype};
	   _ -> S3
	 end,
    S5 = case {PMsg, NMsg} of
	   {_, #{lazy := NFlazy}} -> S4#{lazy => NFlazy};
	   {#{lazy := PFlazy}, _} -> S4#{lazy => PFlazy};
	   _ -> S4
	 end,
    S6 = case {PMsg, NMsg} of
	   {_, #{deprecated := NFdeprecated}} ->
	       S5#{deprecated => NFdeprecated};
	   {#{deprecated := PFdeprecated}, _} ->
	       S5#{deprecated => PFdeprecated};
	   _ -> S5
	 end,
    S7 = case {PMsg, NMsg} of
	   {_, #{weak := NFweak}} -> S6#{weak => NFweak};
	   {#{weak := PFweak}, _} -> S6#{weak => PFweak};
	   _ -> S6
	 end,
    S8 = case {PMsg, NMsg} of
	   {#{uninterpreted_option := PFuninterpreted_option},
	    #{uninterpreted_option := NFuninterpreted_option}} ->
	       S7#{uninterpreted_option =>
		       'erlang_++'(PFuninterpreted_option,
				   NFuninterpreted_option, TrUserData)};
	   {_,
	    #{uninterpreted_option := NFuninterpreted_option}} ->
	       S7#{uninterpreted_option => NFuninterpreted_option};
	   {#{uninterpreted_option := PFuninterpreted_option},
	    _} ->
	       S7#{uninterpreted_option => PFuninterpreted_option};
	   {_, _} -> S7
	 end,
    S9 = case {PMsg, NMsg} of
	   {_, #{nullable := NFnullable}} ->
	       S8#{nullable => NFnullable};
	   {#{nullable := PFnullable}, _} ->
	       S8#{nullable => PFnullable};
	   _ -> S8
	 end,
    S10 = case {PMsg, NMsg} of
	    {_, #{embed := NFembed}} -> S9#{embed => NFembed};
	    {#{embed := PFembed}, _} -> S9#{embed => PFembed};
	    _ -> S9
	  end,
    S11 = case {PMsg, NMsg} of
	    {_, #{customtype := NFcustomtype}} ->
		S10#{customtype => NFcustomtype};
	    {#{customtype := PFcustomtype}, _} ->
		S10#{customtype => PFcustomtype};
	    _ -> S10
	  end,
    S12 = case {PMsg, NMsg} of
	    {_, #{customname := NFcustomname}} ->
		S11#{customname => NFcustomname};
	    {#{customname := PFcustomname}, _} ->
		S11#{customname => PFcustomname};
	    _ -> S11
	  end,
    S13 = case {PMsg, NMsg} of
	    {_, #{jsontag := NFjsontag}} ->
		S12#{jsontag => NFjsontag};
	    {#{jsontag := PFjsontag}, _} ->
		S12#{jsontag => PFjsontag};
	    _ -> S12
	  end,
    S14 = case {PMsg, NMsg} of
	    {_, #{moretags := NFmoretags}} ->
		S13#{moretags => NFmoretags};
	    {#{moretags := PFmoretags}, _} ->
		S13#{moretags => PFmoretags};
	    _ -> S13
	  end,
    S15 = case {PMsg, NMsg} of
	    {_, #{casttype := NFcasttype}} ->
		S14#{casttype => NFcasttype};
	    {#{casttype := PFcasttype}, _} ->
		S14#{casttype => PFcasttype};
	    _ -> S14
	  end,
    S16 = case {PMsg, NMsg} of
	    {_, #{castkey := NFcastkey}} ->
		S15#{castkey => NFcastkey};
	    {#{castkey := PFcastkey}, _} ->
		S15#{castkey => PFcastkey};
	    _ -> S15
	  end,
    S17 = case {PMsg, NMsg} of
	    {_, #{castvalue := NFcastvalue}} ->
		S16#{castvalue => NFcastvalue};
	    {#{castvalue := PFcastvalue}, _} ->
		S16#{castvalue => PFcastvalue};
	    _ -> S16
	  end,
    S18 = case {PMsg, NMsg} of
	    {_, #{stdtime := NFstdtime}} ->
		S17#{stdtime => NFstdtime};
	    {#{stdtime := PFstdtime}, _} ->
		S17#{stdtime => PFstdtime};
	    _ -> S17
	  end,
    case {PMsg, NMsg} of
      {_, #{stdduration := NFstdduration}} ->
	  S18#{stdduration => NFstdduration};
      {#{stdduration := PFstdduration}, _} ->
	  S18#{stdduration => PFstdduration};
      _ -> S18
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.EnumOptions'/3}).
'merge_msg_google.protobuf.EnumOptions'(PMsg, NMsg,
					TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{allow_alias := NFallow_alias}} ->
	       S1#{allow_alias => NFallow_alias};
	   {#{allow_alias := PFallow_alias}, _} ->
	       S1#{allow_alias => PFallow_alias};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{deprecated := NFdeprecated}} ->
	       S2#{deprecated => NFdeprecated};
	   {#{deprecated := PFdeprecated}, _} ->
	       S2#{deprecated => PFdeprecated};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {#{uninterpreted_option := PFuninterpreted_option},
	    #{uninterpreted_option := NFuninterpreted_option}} ->
	       S3#{uninterpreted_option =>
		       'erlang_++'(PFuninterpreted_option,
				   NFuninterpreted_option, TrUserData)};
	   {_,
	    #{uninterpreted_option := NFuninterpreted_option}} ->
	       S3#{uninterpreted_option => NFuninterpreted_option};
	   {#{uninterpreted_option := PFuninterpreted_option},
	    _} ->
	       S3#{uninterpreted_option => PFuninterpreted_option};
	   {_, _} -> S3
	 end,
    S5 = case {PMsg, NMsg} of
	   {_, #{goproto_enum_prefix := NFgoproto_enum_prefix}} ->
	       S4#{goproto_enum_prefix => NFgoproto_enum_prefix};
	   {#{goproto_enum_prefix := PFgoproto_enum_prefix}, _} ->
	       S4#{goproto_enum_prefix => PFgoproto_enum_prefix};
	   _ -> S4
	 end,
    S6 = case {PMsg, NMsg} of
	   {_,
	    #{goproto_enum_stringer := NFgoproto_enum_stringer}} ->
	       S5#{goproto_enum_stringer => NFgoproto_enum_stringer};
	   {#{goproto_enum_stringer := PFgoproto_enum_stringer},
	    _} ->
	       S5#{goproto_enum_stringer => PFgoproto_enum_stringer};
	   _ -> S5
	 end,
    S7 = case {PMsg, NMsg} of
	   {_, #{enum_stringer := NFenum_stringer}} ->
	       S6#{enum_stringer => NFenum_stringer};
	   {#{enum_stringer := PFenum_stringer}, _} ->
	       S6#{enum_stringer => PFenum_stringer};
	   _ -> S6
	 end,
    case {PMsg, NMsg} of
      {_, #{enum_customname := NFenum_customname}} ->
	  S7#{enum_customname => NFenum_customname};
      {#{enum_customname := PFenum_customname}, _} ->
	  S7#{enum_customname => PFenum_customname};
      _ -> S7
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.EnumValueOptions'/3}).
'merge_msg_google.protobuf.EnumValueOptions'(PMsg, NMsg,
					     TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{deprecated := NFdeprecated}} ->
	       S1#{deprecated => NFdeprecated};
	   {#{deprecated := PFdeprecated}, _} ->
	       S1#{deprecated => PFdeprecated};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {#{uninterpreted_option := PFuninterpreted_option},
	    #{uninterpreted_option := NFuninterpreted_option}} ->
	       S2#{uninterpreted_option =>
		       'erlang_++'(PFuninterpreted_option,
				   NFuninterpreted_option, TrUserData)};
	   {_,
	    #{uninterpreted_option := NFuninterpreted_option}} ->
	       S2#{uninterpreted_option => NFuninterpreted_option};
	   {#{uninterpreted_option := PFuninterpreted_option},
	    _} ->
	       S2#{uninterpreted_option => PFuninterpreted_option};
	   {_, _} -> S2
	 end,
    case {PMsg, NMsg} of
      {_,
       #{enumvalue_customname := NFenumvalue_customname}} ->
	  S3#{enumvalue_customname => NFenumvalue_customname};
      {#{enumvalue_customname := PFenumvalue_customname},
       _} ->
	  S3#{enumvalue_customname => PFenumvalue_customname};
      _ -> S3
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.ServiceOptions'/3}).
'merge_msg_google.protobuf.ServiceOptions'(PMsg, NMsg,
					   TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{deprecated := NFdeprecated}} ->
	       S1#{deprecated => NFdeprecated};
	   {#{deprecated := PFdeprecated}, _} ->
	       S1#{deprecated => PFdeprecated};
	   _ -> S1
	 end,
    case {PMsg, NMsg} of
      {#{uninterpreted_option := PFuninterpreted_option},
       #{uninterpreted_option := NFuninterpreted_option}} ->
	  S2#{uninterpreted_option =>
		  'erlang_++'(PFuninterpreted_option,
			      NFuninterpreted_option, TrUserData)};
      {_,
       #{uninterpreted_option := NFuninterpreted_option}} ->
	  S2#{uninterpreted_option => NFuninterpreted_option};
      {#{uninterpreted_option := PFuninterpreted_option},
       _} ->
	  S2#{uninterpreted_option => PFuninterpreted_option};
      {_, _} -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.MethodOptions'/3}).
'merge_msg_google.protobuf.MethodOptions'(PMsg, NMsg,
					  TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{deprecated := NFdeprecated}} ->
	       S1#{deprecated => NFdeprecated};
	   {#{deprecated := PFdeprecated}, _} ->
	       S1#{deprecated => PFdeprecated};
	   _ -> S1
	 end,
    case {PMsg, NMsg} of
      {#{uninterpreted_option := PFuninterpreted_option},
       #{uninterpreted_option := NFuninterpreted_option}} ->
	  S2#{uninterpreted_option =>
		  'erlang_++'(PFuninterpreted_option,
			      NFuninterpreted_option, TrUserData)};
      {_,
       #{uninterpreted_option := NFuninterpreted_option}} ->
	  S2#{uninterpreted_option => NFuninterpreted_option};
      {#{uninterpreted_option := PFuninterpreted_option},
       _} ->
	  S2#{uninterpreted_option => PFuninterpreted_option};
      {_, _} -> S2
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.UninterpretedOption.NamePart'/3}).
'merge_msg_google.protobuf.UninterpretedOption.NamePart'(#{},
							 #{name_part :=
							       NFname_part,
							   is_extension :=
							       NFis_extension},
							 _) ->
    #{name_part => NFname_part,
      is_extension => NFis_extension}.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.UninterpretedOption'/3}).
'merge_msg_google.protobuf.UninterpretedOption'(PMsg,
						NMsg, TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{name := PFname}, #{name := NFname}} ->
	       S1#{name => 'erlang_++'(PFname, NFname, TrUserData)};
	   {_, #{name := NFname}} -> S1#{name => NFname};
	   {#{name := PFname}, _} -> S1#{name => PFname};
	   {_, _} -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{identifier_value := NFidentifier_value}} ->
	       S2#{identifier_value => NFidentifier_value};
	   {#{identifier_value := PFidentifier_value}, _} ->
	       S2#{identifier_value => PFidentifier_value};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {_, #{positive_int_value := NFpositive_int_value}} ->
	       S3#{positive_int_value => NFpositive_int_value};
	   {#{positive_int_value := PFpositive_int_value}, _} ->
	       S3#{positive_int_value => PFpositive_int_value};
	   _ -> S3
	 end,
    S5 = case {PMsg, NMsg} of
	   {_, #{negative_int_value := NFnegative_int_value}} ->
	       S4#{negative_int_value => NFnegative_int_value};
	   {#{negative_int_value := PFnegative_int_value}, _} ->
	       S4#{negative_int_value => PFnegative_int_value};
	   _ -> S4
	 end,
    S6 = case {PMsg, NMsg} of
	   {_, #{double_value := NFdouble_value}} ->
	       S5#{double_value => NFdouble_value};
	   {#{double_value := PFdouble_value}, _} ->
	       S5#{double_value => PFdouble_value};
	   _ -> S5
	 end,
    S7 = case {PMsg, NMsg} of
	   {_, #{string_value := NFstring_value}} ->
	       S6#{string_value => NFstring_value};
	   {#{string_value := PFstring_value}, _} ->
	       S6#{string_value => PFstring_value};
	   _ -> S6
	 end,
    case {PMsg, NMsg} of
      {_, #{aggregate_value := NFaggregate_value}} ->
	  S7#{aggregate_value => NFaggregate_value};
      {#{aggregate_value := PFaggregate_value}, _} ->
	  S7#{aggregate_value => PFaggregate_value};
      _ -> S7
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.SourceCodeInfo.Location'/3}).
'merge_msg_google.protobuf.SourceCodeInfo.Location'(PMsg,
						    NMsg, TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{path := PFpath}, #{path := NFpath}} ->
	       S1#{path => 'erlang_++'(PFpath, NFpath, TrUserData)};
	   {_, #{path := NFpath}} -> S1#{path => NFpath};
	   {#{path := PFpath}, _} -> S1#{path => PFpath};
	   {_, _} -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {#{span := PFspan}, #{span := NFspan}} ->
	       S2#{span => 'erlang_++'(PFspan, NFspan, TrUserData)};
	   {_, #{span := NFspan}} -> S2#{span => NFspan};
	   {#{span := PFspan}, _} -> S2#{span => PFspan};
	   {_, _} -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {_, #{leading_comments := NFleading_comments}} ->
	       S3#{leading_comments => NFleading_comments};
	   {#{leading_comments := PFleading_comments}, _} ->
	       S3#{leading_comments => PFleading_comments};
	   _ -> S3
	 end,
    S5 = case {PMsg, NMsg} of
	   {_, #{trailing_comments := NFtrailing_comments}} ->
	       S4#{trailing_comments => NFtrailing_comments};
	   {#{trailing_comments := PFtrailing_comments}, _} ->
	       S4#{trailing_comments => PFtrailing_comments};
	   _ -> S4
	 end,
    case {PMsg, NMsg} of
      {#{leading_detached_comments :=
	     PFleading_detached_comments},
       #{leading_detached_comments :=
	     NFleading_detached_comments}} ->
	  S5#{leading_detached_comments =>
		  'erlang_++'(PFleading_detached_comments,
			      NFleading_detached_comments, TrUserData)};
      {_,
       #{leading_detached_comments :=
	     NFleading_detached_comments}} ->
	  S5#{leading_detached_comments =>
		  NFleading_detached_comments};
      {#{leading_detached_comments :=
	     PFleading_detached_comments},
       _} ->
	  S5#{leading_detached_comments =>
		  PFleading_detached_comments};
      {_, _} -> S5
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.SourceCodeInfo'/3}).
'merge_msg_google.protobuf.SourceCodeInfo'(PMsg, NMsg,
					   TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{location := PFlocation},
       #{location := NFlocation}} ->
	  S1#{location =>
		  'erlang_++'(PFlocation, NFlocation, TrUserData)};
      {_, #{location := NFlocation}} ->
	  S1#{location => NFlocation};
      {#{location := PFlocation}, _} ->
	  S1#{location => PFlocation};
      {_, _} -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.GeneratedCodeInfo.Annotation'/3}).
'merge_msg_google.protobuf.GeneratedCodeInfo.Annotation'(PMsg,
							 NMsg, TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {#{path := PFpath}, #{path := NFpath}} ->
	       S1#{path => 'erlang_++'(PFpath, NFpath, TrUserData)};
	   {_, #{path := NFpath}} -> S1#{path => NFpath};
	   {#{path := PFpath}, _} -> S1#{path => PFpath};
	   {_, _} -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{source_file := NFsource_file}} ->
	       S2#{source_file => NFsource_file};
	   {#{source_file := PFsource_file}, _} ->
	       S2#{source_file => PFsource_file};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {_, #{'begin' := NFbegin}} -> S3#{'begin' => NFbegin};
	   {#{'begin' := PFbegin}, _} -> S3#{'begin' => PFbegin};
	   _ -> S3
	 end,
    case {PMsg, NMsg} of
      {_, #{'end' := NFend}} -> S4#{'end' => NFend};
      {#{'end' := PFend}, _} -> S4#{'end' => PFend};
      _ -> S4
    end.

-compile({nowarn_unused_function,'merge_msg_google.protobuf.GeneratedCodeInfo'/3}).
'merge_msg_google.protobuf.GeneratedCodeInfo'(PMsg,
					      NMsg, TrUserData) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {#{annotation := PFannotation},
       #{annotation := NFannotation}} ->
	  S1#{annotation =>
		  'erlang_++'(PFannotation, NFannotation, TrUserData)};
      {_, #{annotation := NFannotation}} ->
	  S1#{annotation => NFannotation};
      {#{annotation := PFannotation}, _} ->
	  S1#{annotation => PFannotation};
      {_, _} -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_mvccpb.KeyValue'/3}).
'merge_msg_mvccpb.KeyValue'(PMsg, NMsg, _) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{key := NFkey}} -> S1#{key => NFkey};
	   {#{key := PFkey}, _} -> S1#{key => PFkey};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{create_revision := NFcreate_revision}} ->
	       S2#{create_revision => NFcreate_revision};
	   {#{create_revision := PFcreate_revision}, _} ->
	       S2#{create_revision => PFcreate_revision};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {_, #{mod_revision := NFmod_revision}} ->
	       S3#{mod_revision => NFmod_revision};
	   {#{mod_revision := PFmod_revision}, _} ->
	       S3#{mod_revision => PFmod_revision};
	   _ -> S3
	 end,
    S5 = case {PMsg, NMsg} of
	   {_, #{version := NFversion}} ->
	       S4#{version => NFversion};
	   {#{version := PFversion}, _} ->
	       S4#{version => PFversion};
	   _ -> S4
	 end,
    S6 = case {PMsg, NMsg} of
	   {_, #{value := NFvalue}} -> S5#{value => NFvalue};
	   {#{value := PFvalue}, _} -> S5#{value => PFvalue};
	   _ -> S5
	 end,
    case {PMsg, NMsg} of
      {_, #{lease := NFlease}} -> S6#{lease => NFlease};
      {#{lease := PFlease}, _} -> S6#{lease => PFlease};
      _ -> S6
    end.

-compile({nowarn_unused_function,'merge_msg_mvccpb.Event'/3}).
'merge_msg_mvccpb.Event'(PMsg, NMsg, TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{type := NFtype}} -> S1#{type => NFtype};
	   {#{type := PFtype}, _} -> S1#{type => PFtype};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {#{kv := PFkv}, #{kv := NFkv}} ->
	       S2#{kv =>
		       'merge_msg_mvccpb.KeyValue'(PFkv, NFkv, TrUserData)};
	   {_, #{kv := NFkv}} -> S2#{kv => NFkv};
	   {#{kv := PFkv}, _} -> S2#{kv => PFkv};
	   {_, _} -> S2
	 end,
    case {PMsg, NMsg} of
      {#{prev_kv := PFprev_kv}, #{prev_kv := NFprev_kv}} ->
	  S3#{prev_kv =>
		  'merge_msg_mvccpb.KeyValue'(PFprev_kv, NFprev_kv,
					      TrUserData)};
      {_, #{prev_kv := NFprev_kv}} ->
	  S3#{prev_kv => NFprev_kv};
      {#{prev_kv := PFprev_kv}, _} ->
	  S3#{prev_kv => PFprev_kv};
      {_, _} -> S3
    end.

-compile({nowarn_unused_function,'merge_msg_authpb.UserAddOptions'/3}).
'merge_msg_authpb.UserAddOptions'(PMsg, NMsg, _) ->
    S1 = #{},
    case {PMsg, NMsg} of
      {_, #{no_password := NFno_password}} ->
	  S1#{no_password => NFno_password};
      {#{no_password := PFno_password}, _} ->
	  S1#{no_password => PFno_password};
      _ -> S1
    end.

-compile({nowarn_unused_function,'merge_msg_authpb.User'/3}).
'merge_msg_authpb.User'(PMsg, NMsg, TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{name := NFname}} -> S1#{name => NFname};
	   {#{name := PFname}, _} -> S1#{name => PFname};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{password := NFpassword}} ->
	       S2#{password => NFpassword};
	   {#{password := PFpassword}, _} ->
	       S2#{password => PFpassword};
	   _ -> S2
	 end,
    S4 = case {PMsg, NMsg} of
	   {#{roles := PFroles}, #{roles := NFroles}} ->
	       S3#{roles => 'erlang_++'(PFroles, NFroles, TrUserData)};
	   {_, #{roles := NFroles}} -> S3#{roles => NFroles};
	   {#{roles := PFroles}, _} -> S3#{roles => PFroles};
	   {_, _} -> S3
	 end,
    case {PMsg, NMsg} of
      {#{options := PFoptions}, #{options := NFoptions}} ->
	  S4#{options =>
		  'merge_msg_authpb.UserAddOptions'(PFoptions, NFoptions,
						    TrUserData)};
      {_, #{options := NFoptions}} ->
	  S4#{options => NFoptions};
      {#{options := PFoptions}, _} ->
	  S4#{options => PFoptions};
      {_, _} -> S4
    end.

-compile({nowarn_unused_function,'merge_msg_authpb.Permission'/3}).
'merge_msg_authpb.Permission'(PMsg, NMsg, _) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{permType := NFpermType}} ->
	       S1#{permType => NFpermType};
	   {#{permType := PFpermType}, _} ->
	       S1#{permType => PFpermType};
	   _ -> S1
	 end,
    S3 = case {PMsg, NMsg} of
	   {_, #{key := NFkey}} -> S2#{key => NFkey};
	   {#{key := PFkey}, _} -> S2#{key => PFkey};
	   _ -> S2
	 end,
    case {PMsg, NMsg} of
      {_, #{range_end := NFrange_end}} ->
	  S3#{range_end => NFrange_end};
      {#{range_end := PFrange_end}, _} ->
	  S3#{range_end => PFrange_end};
      _ -> S3
    end.

-compile({nowarn_unused_function,'merge_msg_authpb.Role'/3}).
'merge_msg_authpb.Role'(PMsg, NMsg, TrUserData) ->
    S1 = #{},
    S2 = case {PMsg, NMsg} of
	   {_, #{name := NFname}} -> S1#{name => NFname};
	   {#{name := PFname}, _} -> S1#{name => PFname};
	   _ -> S1
	 end,
    case {PMsg, NMsg} of
      {#{keyPermission := PFkeyPermission},
       #{keyPermission := NFkeyPermission}} ->
	  S2#{keyPermission =>
		  'erlang_++'(PFkeyPermission, NFkeyPermission,
			      TrUserData)};
      {_, #{keyPermission := NFkeyPermission}} ->
	  S2#{keyPermission => NFkeyPermission};
      {#{keyPermission := PFkeyPermission}, _} ->
	  S2#{keyPermission => PFkeyPermission};
      {_, _} -> S2
    end.


verify_msg(Msg, MsgName) when is_atom(MsgName) ->
    verify_msg(Msg, MsgName, []).

verify_msg(Msg, MsgName, Opts) ->
    TrUserData = proplists:get_value(user_data, Opts),
    case MsgName of
      'Etcd.ResponseHeader' ->
	  'v_msg_Etcd.ResponseHeader'(Msg, [MsgName], TrUserData);
      'Etcd.RangeRequest' ->
	  'v_msg_Etcd.RangeRequest'(Msg, [MsgName], TrUserData);
      'Etcd.RangeResponse' ->
	  'v_msg_Etcd.RangeResponse'(Msg, [MsgName], TrUserData);
      'Etcd.PutRequest' ->
	  'v_msg_Etcd.PutRequest'(Msg, [MsgName], TrUserData);
      'Etcd.PutResponse' ->
	  'v_msg_Etcd.PutResponse'(Msg, [MsgName], TrUserData);
      'Etcd.DeleteRangeRequest' ->
	  'v_msg_Etcd.DeleteRangeRequest'(Msg, [MsgName],
					  TrUserData);
      'Etcd.DeleteRangeResponse' ->
	  'v_msg_Etcd.DeleteRangeResponse'(Msg, [MsgName],
					   TrUserData);
      'Etcd.RequestOp' ->
	  'v_msg_Etcd.RequestOp'(Msg, [MsgName], TrUserData);
      'Etcd.ResponseOp' ->
	  'v_msg_Etcd.ResponseOp'(Msg, [MsgName], TrUserData);
      'Etcd.Compare' ->
	  'v_msg_Etcd.Compare'(Msg, [MsgName], TrUserData);
      'Etcd.TxnRequest' ->
	  'v_msg_Etcd.TxnRequest'(Msg, [MsgName], TrUserData);
      'Etcd.TxnResponse' ->
	  'v_msg_Etcd.TxnResponse'(Msg, [MsgName], TrUserData);
      'Etcd.CompactionRequest' ->
	  'v_msg_Etcd.CompactionRequest'(Msg, [MsgName],
					 TrUserData);
      'Etcd.CompactionResponse' ->
	  'v_msg_Etcd.CompactionResponse'(Msg, [MsgName],
					  TrUserData);
      'Etcd.HashRequest' ->
	  'v_msg_Etcd.HashRequest'(Msg, [MsgName], TrUserData);
      'Etcd.HashKVRequest' ->
	  'v_msg_Etcd.HashKVRequest'(Msg, [MsgName], TrUserData);
      'Etcd.HashKVResponse' ->
	  'v_msg_Etcd.HashKVResponse'(Msg, [MsgName], TrUserData);
      'Etcd.HashResponse' ->
	  'v_msg_Etcd.HashResponse'(Msg, [MsgName], TrUserData);
      'Etcd.SnapshotRequest' ->
	  'v_msg_Etcd.SnapshotRequest'(Msg, [MsgName],
				       TrUserData);
      'Etcd.SnapshotResponse' ->
	  'v_msg_Etcd.SnapshotResponse'(Msg, [MsgName],
					TrUserData);
      'Etcd.WatchRequest' ->
	  'v_msg_Etcd.WatchRequest'(Msg, [MsgName], TrUserData);
      'Etcd.WatchCreateRequest' ->
	  'v_msg_Etcd.WatchCreateRequest'(Msg, [MsgName],
					  TrUserData);
      'Etcd.WatchCancelRequest' ->
	  'v_msg_Etcd.WatchCancelRequest'(Msg, [MsgName],
					  TrUserData);
      'Etcd.WatchProgressRequest' ->
	  'v_msg_Etcd.WatchProgressRequest'(Msg, [MsgName],
					    TrUserData);
      'Etcd.WatchResponse' ->
	  'v_msg_Etcd.WatchResponse'(Msg, [MsgName], TrUserData);
      'Etcd.LeaseGrantRequest' ->
	  'v_msg_Etcd.LeaseGrantRequest'(Msg, [MsgName],
					 TrUserData);
      'Etcd.LeaseGrantResponse' ->
	  'v_msg_Etcd.LeaseGrantResponse'(Msg, [MsgName],
					  TrUserData);
      'Etcd.LeaseRevokeRequest' ->
	  'v_msg_Etcd.LeaseRevokeRequest'(Msg, [MsgName],
					  TrUserData);
      'Etcd.LeaseRevokeResponse' ->
	  'v_msg_Etcd.LeaseRevokeResponse'(Msg, [MsgName],
					   TrUserData);
      'Etcd.LeaseCheckpoint' ->
	  'v_msg_Etcd.LeaseCheckpoint'(Msg, [MsgName],
				       TrUserData);
      'Etcd.LeaseCheckpointRequest' ->
	  'v_msg_Etcd.LeaseCheckpointRequest'(Msg, [MsgName],
					      TrUserData);
      'Etcd.LeaseCheckpointResponse' ->
	  'v_msg_Etcd.LeaseCheckpointResponse'(Msg, [MsgName],
					       TrUserData);
      'Etcd.LeaseKeepAliveRequest' ->
	  'v_msg_Etcd.LeaseKeepAliveRequest'(Msg, [MsgName],
					     TrUserData);
      'Etcd.LeaseKeepAliveResponse' ->
	  'v_msg_Etcd.LeaseKeepAliveResponse'(Msg, [MsgName],
					      TrUserData);
      'Etcd.LeaseTimeToLiveRequest' ->
	  'v_msg_Etcd.LeaseTimeToLiveRequest'(Msg, [MsgName],
					      TrUserData);
      'Etcd.LeaseTimeToLiveResponse' ->
	  'v_msg_Etcd.LeaseTimeToLiveResponse'(Msg, [MsgName],
					       TrUserData);
      'Etcd.LeaseLeasesRequest' ->
	  'v_msg_Etcd.LeaseLeasesRequest'(Msg, [MsgName],
					  TrUserData);
      'Etcd.LeaseStatus' ->
	  'v_msg_Etcd.LeaseStatus'(Msg, [MsgName], TrUserData);
      'Etcd.LeaseLeasesResponse' ->
	  'v_msg_Etcd.LeaseLeasesResponse'(Msg, [MsgName],
					   TrUserData);
      'Etcd.Member' ->
	  'v_msg_Etcd.Member'(Msg, [MsgName], TrUserData);
      'Etcd.MemberAddRequest' ->
	  'v_msg_Etcd.MemberAddRequest'(Msg, [MsgName],
					TrUserData);
      'Etcd.MemberAddResponse' ->
	  'v_msg_Etcd.MemberAddResponse'(Msg, [MsgName],
					 TrUserData);
      'Etcd.MemberRemoveRequest' ->
	  'v_msg_Etcd.MemberRemoveRequest'(Msg, [MsgName],
					   TrUserData);
      'Etcd.MemberRemoveResponse' ->
	  'v_msg_Etcd.MemberRemoveResponse'(Msg, [MsgName],
					    TrUserData);
      'Etcd.MemberUpdateRequest' ->
	  'v_msg_Etcd.MemberUpdateRequest'(Msg, [MsgName],
					   TrUserData);
      'Etcd.MemberUpdateResponse' ->
	  'v_msg_Etcd.MemberUpdateResponse'(Msg, [MsgName],
					    TrUserData);
      'Etcd.MemberListRequest' ->
	  'v_msg_Etcd.MemberListRequest'(Msg, [MsgName],
					 TrUserData);
      'Etcd.MemberListResponse' ->
	  'v_msg_Etcd.MemberListResponse'(Msg, [MsgName],
					  TrUserData);
      'Etcd.MemberPromoteRequest' ->
	  'v_msg_Etcd.MemberPromoteRequest'(Msg, [MsgName],
					    TrUserData);
      'Etcd.MemberPromoteResponse' ->
	  'v_msg_Etcd.MemberPromoteResponse'(Msg, [MsgName],
					     TrUserData);
      'Etcd.DefragmentRequest' ->
	  'v_msg_Etcd.DefragmentRequest'(Msg, [MsgName],
					 TrUserData);
      'Etcd.DefragmentResponse' ->
	  'v_msg_Etcd.DefragmentResponse'(Msg, [MsgName],
					  TrUserData);
      'Etcd.MoveLeaderRequest' ->
	  'v_msg_Etcd.MoveLeaderRequest'(Msg, [MsgName],
					 TrUserData);
      'Etcd.MoveLeaderResponse' ->
	  'v_msg_Etcd.MoveLeaderResponse'(Msg, [MsgName],
					  TrUserData);
      'Etcd.AlarmRequest' ->
	  'v_msg_Etcd.AlarmRequest'(Msg, [MsgName], TrUserData);
      'Etcd.AlarmMember' ->
	  'v_msg_Etcd.AlarmMember'(Msg, [MsgName], TrUserData);
      'Etcd.AlarmResponse' ->
	  'v_msg_Etcd.AlarmResponse'(Msg, [MsgName], TrUserData);
      'Etcd.StatusRequest' ->
	  'v_msg_Etcd.StatusRequest'(Msg, [MsgName], TrUserData);
      'Etcd.StatusResponse' ->
	  'v_msg_Etcd.StatusResponse'(Msg, [MsgName], TrUserData);
      'Etcd.AuthEnableRequest' ->
	  'v_msg_Etcd.AuthEnableRequest'(Msg, [MsgName],
					 TrUserData);
      'Etcd.AuthDisableRequest' ->
	  'v_msg_Etcd.AuthDisableRequest'(Msg, [MsgName],
					  TrUserData);
      'Etcd.AuthenticateRequest' ->
	  'v_msg_Etcd.AuthenticateRequest'(Msg, [MsgName],
					   TrUserData);
      'Etcd.AuthUserAddRequest' ->
	  'v_msg_Etcd.AuthUserAddRequest'(Msg, [MsgName],
					  TrUserData);
      'Etcd.AuthUserGetRequest' ->
	  'v_msg_Etcd.AuthUserGetRequest'(Msg, [MsgName],
					  TrUserData);
      'Etcd.AuthUserDeleteRequest' ->
	  'v_msg_Etcd.AuthUserDeleteRequest'(Msg, [MsgName],
					     TrUserData);
      'Etcd.AuthUserChangePasswordRequest' ->
	  'v_msg_Etcd.AuthUserChangePasswordRequest'(Msg,
						     [MsgName], TrUserData);
      'Etcd.AuthUserGrantRoleRequest' ->
	  'v_msg_Etcd.AuthUserGrantRoleRequest'(Msg, [MsgName],
						TrUserData);
      'Etcd.AuthUserRevokeRoleRequest' ->
	  'v_msg_Etcd.AuthUserRevokeRoleRequest'(Msg, [MsgName],
						 TrUserData);
      'Etcd.AuthRoleAddRequest' ->
	  'v_msg_Etcd.AuthRoleAddRequest'(Msg, [MsgName],
					  TrUserData);
      'Etcd.AuthRoleGetRequest' ->
	  'v_msg_Etcd.AuthRoleGetRequest'(Msg, [MsgName],
					  TrUserData);
      'Etcd.AuthUserListRequest' ->
	  'v_msg_Etcd.AuthUserListRequest'(Msg, [MsgName],
					   TrUserData);
      'Etcd.AuthRoleListRequest' ->
	  'v_msg_Etcd.AuthRoleListRequest'(Msg, [MsgName],
					   TrUserData);
      'Etcd.AuthRoleDeleteRequest' ->
	  'v_msg_Etcd.AuthRoleDeleteRequest'(Msg, [MsgName],
					     TrUserData);
      'Etcd.AuthRoleGrantPermissionRequest' ->
	  'v_msg_Etcd.AuthRoleGrantPermissionRequest'(Msg,
						      [MsgName], TrUserData);
      'Etcd.AuthRoleRevokePermissionRequest' ->
	  'v_msg_Etcd.AuthRoleRevokePermissionRequest'(Msg,
						       [MsgName], TrUserData);
      'Etcd.AuthEnableResponse' ->
	  'v_msg_Etcd.AuthEnableResponse'(Msg, [MsgName],
					  TrUserData);
      'Etcd.AuthDisableResponse' ->
	  'v_msg_Etcd.AuthDisableResponse'(Msg, [MsgName],
					   TrUserData);
      'Etcd.AuthenticateResponse' ->
	  'v_msg_Etcd.AuthenticateResponse'(Msg, [MsgName],
					    TrUserData);
      'Etcd.AuthUserAddResponse' ->
	  'v_msg_Etcd.AuthUserAddResponse'(Msg, [MsgName],
					   TrUserData);
      'Etcd.AuthUserGetResponse' ->
	  'v_msg_Etcd.AuthUserGetResponse'(Msg, [MsgName],
					   TrUserData);
      'Etcd.AuthUserDeleteResponse' ->
	  'v_msg_Etcd.AuthUserDeleteResponse'(Msg, [MsgName],
					      TrUserData);
      'Etcd.AuthUserChangePasswordResponse' ->
	  'v_msg_Etcd.AuthUserChangePasswordResponse'(Msg,
						      [MsgName], TrUserData);
      'Etcd.AuthUserGrantRoleResponse' ->
	  'v_msg_Etcd.AuthUserGrantRoleResponse'(Msg, [MsgName],
						 TrUserData);
      'Etcd.AuthUserRevokeRoleResponse' ->
	  'v_msg_Etcd.AuthUserRevokeRoleResponse'(Msg, [MsgName],
						  TrUserData);
      'Etcd.AuthRoleAddResponse' ->
	  'v_msg_Etcd.AuthRoleAddResponse'(Msg, [MsgName],
					   TrUserData);
      'Etcd.AuthRoleGetResponse' ->
	  'v_msg_Etcd.AuthRoleGetResponse'(Msg, [MsgName],
					   TrUserData);
      'Etcd.AuthRoleListResponse' ->
	  'v_msg_Etcd.AuthRoleListResponse'(Msg, [MsgName],
					    TrUserData);
      'Etcd.AuthUserListResponse' ->
	  'v_msg_Etcd.AuthUserListResponse'(Msg, [MsgName],
					    TrUserData);
      'Etcd.AuthRoleDeleteResponse' ->
	  'v_msg_Etcd.AuthRoleDeleteResponse'(Msg, [MsgName],
					      TrUserData);
      'Etcd.AuthRoleGrantPermissionResponse' ->
	  'v_msg_Etcd.AuthRoleGrantPermissionResponse'(Msg,
						       [MsgName], TrUserData);
      'Etcd.AuthRoleRevokePermissionResponse' ->
	  'v_msg_Etcd.AuthRoleRevokePermissionResponse'(Msg,
							[MsgName], TrUserData);
      'Etcd.HealthCheckRequest' ->
	  'v_msg_Etcd.HealthCheckRequest'(Msg, [MsgName],
					  TrUserData);
      'Etcd.HealthCheckResponse' ->
	  'v_msg_Etcd.HealthCheckResponse'(Msg, [MsgName],
					   TrUserData);
      'Etcd.LockRequest' ->
	  'v_msg_Etcd.LockRequest'(Msg, [MsgName], TrUserData);
      'Etcd.LockResponse' ->
	  'v_msg_Etcd.LockResponse'(Msg, [MsgName], TrUserData);
      'Etcd.UnlockRequest' ->
	  'v_msg_Etcd.UnlockRequest'(Msg, [MsgName], TrUserData);
      'Etcd.UnlockResponse' ->
	  'v_msg_Etcd.UnlockResponse'(Msg, [MsgName], TrUserData);
      'Etcd.CampaignRequest' ->
	  'v_msg_Etcd.CampaignRequest'(Msg, [MsgName],
				       TrUserData);
      'Etcd.CampaignResponse' ->
	  'v_msg_Etcd.CampaignResponse'(Msg, [MsgName],
					TrUserData);
      'Etcd.LeaderKey' ->
	  'v_msg_Etcd.LeaderKey'(Msg, [MsgName], TrUserData);
      'Etcd.LeaderRequest' ->
	  'v_msg_Etcd.LeaderRequest'(Msg, [MsgName], TrUserData);
      'Etcd.LeaderResponse' ->
	  'v_msg_Etcd.LeaderResponse'(Msg, [MsgName], TrUserData);
      'Etcd.ResignRequest' ->
	  'v_msg_Etcd.ResignRequest'(Msg, [MsgName], TrUserData);
      'Etcd.ResignResponse' ->
	  'v_msg_Etcd.ResignResponse'(Msg, [MsgName], TrUserData);
      'Etcd.ProclaimRequest' ->
	  'v_msg_Etcd.ProclaimRequest'(Msg, [MsgName],
				       TrUserData);
      'Etcd.ProclaimResponse' ->
	  'v_msg_Etcd.ProclaimResponse'(Msg, [MsgName],
					TrUserData);
      'google.protobuf.FileDescriptorSet' ->
	  'v_msg_google.protobuf.FileDescriptorSet'(Msg,
						    [MsgName], TrUserData);
      'google.protobuf.FileDescriptorProto' ->
	  'v_msg_google.protobuf.FileDescriptorProto'(Msg,
						      [MsgName], TrUserData);
      'google.protobuf.DescriptorProto.ExtensionRange' ->
	  'v_msg_google.protobuf.DescriptorProto.ExtensionRange'(Msg,
								 [MsgName],
								 TrUserData);
      'google.protobuf.DescriptorProto.ReservedRange' ->
	  'v_msg_google.protobuf.DescriptorProto.ReservedRange'(Msg,
								[MsgName],
								TrUserData);
      'google.protobuf.DescriptorProto' ->
	  'v_msg_google.protobuf.DescriptorProto'(Msg, [MsgName],
						  TrUserData);
      'google.protobuf.FieldDescriptorProto' ->
	  'v_msg_google.protobuf.FieldDescriptorProto'(Msg,
						       [MsgName], TrUserData);
      'google.protobuf.OneofDescriptorProto' ->
	  'v_msg_google.protobuf.OneofDescriptorProto'(Msg,
						       [MsgName], TrUserData);
      'google.protobuf.EnumDescriptorProto' ->
	  'v_msg_google.protobuf.EnumDescriptorProto'(Msg,
						      [MsgName], TrUserData);
      'google.protobuf.EnumValueDescriptorProto' ->
	  'v_msg_google.protobuf.EnumValueDescriptorProto'(Msg,
							   [MsgName],
							   TrUserData);
      'google.protobuf.ServiceDescriptorProto' ->
	  'v_msg_google.protobuf.ServiceDescriptorProto'(Msg,
							 [MsgName], TrUserData);
      'google.protobuf.MethodDescriptorProto' ->
	  'v_msg_google.protobuf.MethodDescriptorProto'(Msg,
							[MsgName], TrUserData);
      'google.protobuf.FileOptions' ->
	  'v_msg_google.protobuf.FileOptions'(Msg, [MsgName],
					      TrUserData);
      'google.protobuf.MessageOptions' ->
	  'v_msg_google.protobuf.MessageOptions'(Msg, [MsgName],
						 TrUserData);
      'google.protobuf.FieldOptions' ->
	  'v_msg_google.protobuf.FieldOptions'(Msg, [MsgName],
					       TrUserData);
      'google.protobuf.EnumOptions' ->
	  'v_msg_google.protobuf.EnumOptions'(Msg, [MsgName],
					      TrUserData);
      'google.protobuf.EnumValueOptions' ->
	  'v_msg_google.protobuf.EnumValueOptions'(Msg, [MsgName],
						   TrUserData);
      'google.protobuf.ServiceOptions' ->
	  'v_msg_google.protobuf.ServiceOptions'(Msg, [MsgName],
						 TrUserData);
      'google.protobuf.MethodOptions' ->
	  'v_msg_google.protobuf.MethodOptions'(Msg, [MsgName],
						TrUserData);
      'google.protobuf.UninterpretedOption.NamePart' ->
	  'v_msg_google.protobuf.UninterpretedOption.NamePart'(Msg,
							       [MsgName],
							       TrUserData);
      'google.protobuf.UninterpretedOption' ->
	  'v_msg_google.protobuf.UninterpretedOption'(Msg,
						      [MsgName], TrUserData);
      'google.protobuf.SourceCodeInfo.Location' ->
	  'v_msg_google.protobuf.SourceCodeInfo.Location'(Msg,
							  [MsgName],
							  TrUserData);
      'google.protobuf.SourceCodeInfo' ->
	  'v_msg_google.protobuf.SourceCodeInfo'(Msg, [MsgName],
						 TrUserData);
      'google.protobuf.GeneratedCodeInfo.Annotation' ->
	  'v_msg_google.protobuf.GeneratedCodeInfo.Annotation'(Msg,
							       [MsgName],
							       TrUserData);
      'google.protobuf.GeneratedCodeInfo' ->
	  'v_msg_google.protobuf.GeneratedCodeInfo'(Msg,
						    [MsgName], TrUserData);
      'mvccpb.KeyValue' ->
	  'v_msg_mvccpb.KeyValue'(Msg, [MsgName], TrUserData);
      'mvccpb.Event' ->
	  'v_msg_mvccpb.Event'(Msg, [MsgName], TrUserData);
      'authpb.UserAddOptions' ->
	  'v_msg_authpb.UserAddOptions'(Msg, [MsgName],
					TrUserData);
      'authpb.User' ->
	  'v_msg_authpb.User'(Msg, [MsgName], TrUserData);
      'authpb.Permission' ->
	  'v_msg_authpb.Permission'(Msg, [MsgName], TrUserData);
      'authpb.Role' ->
	  'v_msg_authpb.Role'(Msg, [MsgName], TrUserData);
      _ -> mk_type_error(not_a_known_message, Msg, [])
    end.


-compile({nowarn_unused_function,'v_msg_Etcd.ResponseHeader'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.ResponseHeader'/3}).
'v_msg_Etcd.ResponseHeader'(#{} = M, Path,
			    TrUserData) ->
    case M of
      #{cluster_id := F1} ->
	  v_type_uint64(F1, [cluster_id | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{member_id := F2} ->
	  v_type_uint64(F2, [member_id | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{revision := F3} ->
	  v_type_int64(F3, [revision | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{raft_term := F4} ->
	  v_type_uint64(F4, [raft_term | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (cluster_id) -> ok;
		      (member_id) -> ok;
		      (revision) -> ok;
		      (raft_term) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.ResponseHeader'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.ResponseHeader'},
		  M, Path);
'v_msg_Etcd.ResponseHeader'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.ResponseHeader'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.RangeRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.RangeRequest'/3}).
'v_msg_Etcd.RangeRequest'(#{} = M, Path, TrUserData) ->
    case M of
      #{key := F1} ->
	  v_type_bytes(F1, [key | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{range_end := F2} ->
	  v_type_bytes(F2, [range_end | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{limit := F3} ->
	  v_type_int64(F3, [limit | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{revision := F4} ->
	  v_type_int64(F4, [revision | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{sort_order := F5} ->
	  'v_enum_Etcd.RangeRequest.SortOrder'(F5,
					       [sort_order | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{sort_target := F6} ->
	  'v_enum_Etcd.RangeRequest.SortTarget'(F6,
						[sort_target | Path],
						TrUserData);
      _ -> ok
    end,
    case M of
      #{serializable := F7} ->
	  v_type_bool(F7, [serializable | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{keys_only := F8} ->
	  v_type_bool(F8, [keys_only | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{count_only := F9} ->
	  v_type_bool(F9, [count_only | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{min_mod_revision := F10} ->
	  v_type_int64(F10, [min_mod_revision | Path],
		       TrUserData);
      _ -> ok
    end,
    case M of
      #{max_mod_revision := F11} ->
	  v_type_int64(F11, [max_mod_revision | Path],
		       TrUserData);
      _ -> ok
    end,
    case M of
      #{min_create_revision := F12} ->
	  v_type_int64(F12, [min_create_revision | Path],
		       TrUserData);
      _ -> ok
    end,
    case M of
      #{max_create_revision := F13} ->
	  v_type_int64(F13, [max_create_revision | Path],
		       TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (key) -> ok;
		      (range_end) -> ok;
		      (limit) -> ok;
		      (revision) -> ok;
		      (sort_order) -> ok;
		      (sort_target) -> ok;
		      (serializable) -> ok;
		      (keys_only) -> ok;
		      (count_only) -> ok;
		      (min_mod_revision) -> ok;
		      (max_mod_revision) -> ok;
		      (min_create_revision) -> ok;
		      (max_create_revision) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.RangeRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.RangeRequest'},
		  M, Path);
'v_msg_Etcd.RangeRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.RangeRequest'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.RangeResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.RangeResponse'/3}).
'v_msg_Etcd.RangeResponse'(#{} = M, Path, TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    case M of
      #{kvs := F2} ->
	  if is_list(F2) ->
		 _ = ['v_msg_mvccpb.KeyValue'(Elem, [kvs | Path],
					      TrUserData)
		      || Elem <- F2],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'mvccpb.KeyValue'}},
			       F2, [kvs | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{more := F3} ->
	  v_type_bool(F3, [more | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{count := F4} ->
	  v_type_int64(F4, [count | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (kvs) -> ok;
		      (more) -> ok;
		      (count) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.RangeResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.RangeResponse'},
		  M, Path);
'v_msg_Etcd.RangeResponse'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.RangeResponse'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.PutRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.PutRequest'/3}).
'v_msg_Etcd.PutRequest'(#{} = M, Path, TrUserData) ->
    case M of
      #{key := F1} ->
	  v_type_bytes(F1, [key | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{value := F2} ->
	  v_type_bytes(F2, [value | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{lease := F3} ->
	  v_type_int64(F3, [lease | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{prev_kv := F4} ->
	  v_type_bool(F4, [prev_kv | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{ignore_value := F5} ->
	  v_type_bool(F5, [ignore_value | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{ignore_lease := F6} ->
	  v_type_bool(F6, [ignore_lease | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (key) -> ok;
		      (value) -> ok;
		      (lease) -> ok;
		      (prev_kv) -> ok;
		      (ignore_value) -> ok;
		      (ignore_lease) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.PutRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.PutRequest'},
		  M, Path);
'v_msg_Etcd.PutRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.PutRequest'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.PutResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.PutResponse'/3}).
'v_msg_Etcd.PutResponse'(#{} = M, Path, TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    case M of
      #{prev_kv := F2} ->
	  'v_msg_mvccpb.KeyValue'(F2, [prev_kv | Path],
				  TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (prev_kv) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.PutResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.PutResponse'},
		  M, Path);
'v_msg_Etcd.PutResponse'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.PutResponse'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.DeleteRangeRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.DeleteRangeRequest'/3}).
'v_msg_Etcd.DeleteRangeRequest'(#{} = M, Path,
				TrUserData) ->
    case M of
      #{key := F1} ->
	  v_type_bytes(F1, [key | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{range_end := F2} ->
	  v_type_bytes(F2, [range_end | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{prev_kv := F3} ->
	  v_type_bool(F3, [prev_kv | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (key) -> ok;
		      (range_end) -> ok;
		      (prev_kv) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.DeleteRangeRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.DeleteRangeRequest'},
		  M, Path);
'v_msg_Etcd.DeleteRangeRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.DeleteRangeRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.DeleteRangeResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.DeleteRangeResponse'/3}).
'v_msg_Etcd.DeleteRangeResponse'(#{} = M, Path,
				 TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    case M of
      #{deleted := F2} ->
	  v_type_int64(F2, [deleted | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{prev_kvs := F3} ->
	  if is_list(F3) ->
		 _ = ['v_msg_mvccpb.KeyValue'(Elem, [prev_kvs | Path],
					      TrUserData)
		      || Elem <- F3],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'mvccpb.KeyValue'}},
			       F3, [prev_kvs | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (deleted) -> ok;
		      (prev_kvs) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.DeleteRangeResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.DeleteRangeResponse'},
		  M, Path);
'v_msg_Etcd.DeleteRangeResponse'(X, Path,
				 _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.DeleteRangeResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.RequestOp'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.RequestOp'/3}).
'v_msg_Etcd.RequestOp'(#{} = M, Path, TrUserData) ->
    case M of
      #{request := {request_range, OF1}} ->
	  'v_msg_Etcd.RangeRequest'(OF1,
				    [request_range, request | Path],
				    TrUserData);
      #{request := {request_put, OF1}} ->
	  'v_msg_Etcd.PutRequest'(OF1,
				  [request_put, request | Path], TrUserData);
      #{request := {request_delete_range, OF1}} ->
	  'v_msg_Etcd.DeleteRangeRequest'(OF1,
					  [request_delete_range, request
					   | Path],
					  TrUserData);
      #{request := {request_txn, OF1}} ->
	  'v_msg_Etcd.TxnRequest'(OF1,
				  [request_txn, request | Path], TrUserData);
      #{request := F1} ->
	  mk_type_error(invalid_oneof, F1, [request | Path]);
      _ -> ok
    end,
    lists:foreach(fun (request) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.RequestOp'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.RequestOp'},
		  M, Path);
'v_msg_Etcd.RequestOp'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.RequestOp'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.ResponseOp'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.ResponseOp'/3}).
'v_msg_Etcd.ResponseOp'(#{} = M, Path, TrUserData) ->
    case M of
      #{response := {response_range, OF1}} ->
	  'v_msg_Etcd.RangeResponse'(OF1,
				     [response_range, response | Path],
				     TrUserData);
      #{response := {response_put, OF1}} ->
	  'v_msg_Etcd.PutResponse'(OF1,
				   [response_put, response | Path], TrUserData);
      #{response := {response_delete_range, OF1}} ->
	  'v_msg_Etcd.DeleteRangeResponse'(OF1,
					   [response_delete_range, response
					    | Path],
					   TrUserData);
      #{response := {response_txn, OF1}} ->
	  'v_msg_Etcd.TxnResponse'(OF1,
				   [response_txn, response | Path], TrUserData);
      #{response := F1} ->
	  mk_type_error(invalid_oneof, F1, [response | Path]);
      _ -> ok
    end,
    lists:foreach(fun (response) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.ResponseOp'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.ResponseOp'},
		  M, Path);
'v_msg_Etcd.ResponseOp'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.ResponseOp'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.Compare'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.Compare'/3}).
'v_msg_Etcd.Compare'(#{} = M, Path, TrUserData) ->
    case M of
      #{result := F1} ->
	  'v_enum_Etcd.Compare.CompareResult'(F1, [result | Path],
					      TrUserData);
      _ -> ok
    end,
    case M of
      #{target := F2} ->
	  'v_enum_Etcd.Compare.CompareTarget'(F2, [target | Path],
					      TrUserData);
      _ -> ok
    end,
    case M of
      #{key := F3} ->
	  v_type_bytes(F3, [key | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{target_union := {version, OF4}} ->
	  v_type_int64(OF4, [version, target_union | Path],
		       TrUserData);
      #{target_union := {create_revision, OF4}} ->
	  v_type_int64(OF4,
		       [create_revision, target_union | Path], TrUserData);
      #{target_union := {mod_revision, OF4}} ->
	  v_type_int64(OF4, [mod_revision, target_union | Path],
		       TrUserData);
      #{target_union := {value, OF4}} ->
	  v_type_bytes(OF4, [value, target_union | Path],
		       TrUserData);
      #{target_union := {lease, OF4}} ->
	  v_type_int64(OF4, [lease, target_union | Path],
		       TrUserData);
      #{target_union := F4} ->
	  mk_type_error(invalid_oneof, F4, [target_union | Path]);
      _ -> ok
    end,
    case M of
      #{range_end := F5} ->
	  v_type_bytes(F5, [range_end | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (result) -> ok;
		      (target) -> ok;
		      (key) -> ok;
		      (target_union) -> ok;
		      (range_end) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.Compare'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.Compare'},
		  M, Path);
'v_msg_Etcd.Compare'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.Compare'}, X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.TxnRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.TxnRequest'/3}).
'v_msg_Etcd.TxnRequest'(#{} = M, Path, TrUserData) ->
    case M of
      #{compare := F1} ->
	  if is_list(F1) ->
		 _ = ['v_msg_Etcd.Compare'(Elem, [compare | Path],
					   TrUserData)
		      || Elem <- F1],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, {msg, 'Etcd.Compare'}},
			       F1, [compare | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{success := F2} ->
	  if is_list(F2) ->
		 _ = ['v_msg_Etcd.RequestOp'(Elem, [success | Path],
					     TrUserData)
		      || Elem <- F2],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'Etcd.RequestOp'}},
			       F2, [success | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{failure := F3} ->
	  if is_list(F3) ->
		 _ = ['v_msg_Etcd.RequestOp'(Elem, [failure | Path],
					     TrUserData)
		      || Elem <- F3],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'Etcd.RequestOp'}},
			       F3, [failure | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (compare) -> ok;
		      (success) -> ok;
		      (failure) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.TxnRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.TxnRequest'},
		  M, Path);
'v_msg_Etcd.TxnRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.TxnRequest'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.TxnResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.TxnResponse'/3}).
'v_msg_Etcd.TxnResponse'(#{} = M, Path, TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    case M of
      #{succeeded := F2} ->
	  v_type_bool(F2, [succeeded | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{responses := F3} ->
	  if is_list(F3) ->
		 _ = ['v_msg_Etcd.ResponseOp'(Elem, [responses | Path],
					      TrUserData)
		      || Elem <- F3],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'Etcd.ResponseOp'}},
			       F3, [responses | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (succeeded) -> ok;
		      (responses) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.TxnResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.TxnResponse'},
		  M, Path);
'v_msg_Etcd.TxnResponse'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.TxnResponse'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.CompactionRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.CompactionRequest'/3}).
'v_msg_Etcd.CompactionRequest'(#{} = M, Path,
			       TrUserData) ->
    case M of
      #{revision := F1} ->
	  v_type_int64(F1, [revision | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{physical := F2} ->
	  v_type_bool(F2, [physical | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (revision) -> ok;
		      (physical) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.CompactionRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.CompactionRequest'},
		  M, Path);
'v_msg_Etcd.CompactionRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.CompactionRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.CompactionResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.CompactionResponse'/3}).
'v_msg_Etcd.CompactionResponse'(#{} = M, Path,
				TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.CompactionResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.CompactionResponse'},
		  M, Path);
'v_msg_Etcd.CompactionResponse'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.CompactionResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.HashRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.HashRequest'/3}).
'v_msg_Etcd.HashRequest'(#{} = M, Path, _) ->
    lists:foreach(fun (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.HashRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.HashRequest'},
		  M, Path);
'v_msg_Etcd.HashRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.HashRequest'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.HashKVRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.HashKVRequest'/3}).
'v_msg_Etcd.HashKVRequest'(#{} = M, Path, TrUserData) ->
    case M of
      #{revision := F1} ->
	  v_type_int64(F1, [revision | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (revision) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.HashKVRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.HashKVRequest'},
		  M, Path);
'v_msg_Etcd.HashKVRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.HashKVRequest'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.HashKVResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.HashKVResponse'/3}).
'v_msg_Etcd.HashKVResponse'(#{} = M, Path,
			    TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    case M of
      #{hash := F2} ->
	  v_type_uint32(F2, [hash | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{compact_revision := F3} ->
	  v_type_int64(F3, [compact_revision | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (hash) -> ok;
		      (compact_revision) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.HashKVResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.HashKVResponse'},
		  M, Path);
'v_msg_Etcd.HashKVResponse'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.HashKVResponse'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.HashResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.HashResponse'/3}).
'v_msg_Etcd.HashResponse'(#{} = M, Path, TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    case M of
      #{hash := F2} ->
	  v_type_uint32(F2, [hash | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (hash) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.HashResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.HashResponse'},
		  M, Path);
'v_msg_Etcd.HashResponse'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.HashResponse'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.SnapshotRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.SnapshotRequest'/3}).
'v_msg_Etcd.SnapshotRequest'(#{} = M, Path, _) ->
    lists:foreach(fun (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.SnapshotRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.SnapshotRequest'},
		  M, Path);
'v_msg_Etcd.SnapshotRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.SnapshotRequest'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.SnapshotResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.SnapshotResponse'/3}).
'v_msg_Etcd.SnapshotResponse'(#{} = M, Path,
			      TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    case M of
      #{remaining_bytes := F2} ->
	  v_type_uint64(F2, [remaining_bytes | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{blob := F3} ->
	  v_type_bytes(F3, [blob | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (remaining_bytes) -> ok;
		      (blob) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.SnapshotResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.SnapshotResponse'},
		  M, Path);
'v_msg_Etcd.SnapshotResponse'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.SnapshotResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.WatchRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.WatchRequest'/3}).
'v_msg_Etcd.WatchRequest'(#{} = M, Path, TrUserData) ->
    case M of
      #{request_union := {create_request, OF1}} ->
	  'v_msg_Etcd.WatchCreateRequest'(OF1,
					  [create_request, request_union
					   | Path],
					  TrUserData);
      #{request_union := {cancel_request, OF1}} ->
	  'v_msg_Etcd.WatchCancelRequest'(OF1,
					  [cancel_request, request_union
					   | Path],
					  TrUserData);
      #{request_union := {progress_request, OF1}} ->
	  'v_msg_Etcd.WatchProgressRequest'(OF1,
					    [progress_request, request_union
					     | Path],
					    TrUserData);
      #{request_union := F1} ->
	  mk_type_error(invalid_oneof, F1,
			[request_union | Path]);
      _ -> ok
    end,
    lists:foreach(fun (request_union) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.WatchRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.WatchRequest'},
		  M, Path);
'v_msg_Etcd.WatchRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.WatchRequest'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.WatchCreateRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.WatchCreateRequest'/3}).
'v_msg_Etcd.WatchCreateRequest'(#{} = M, Path,
				TrUserData) ->
    case M of
      #{key := F1} ->
	  v_type_bytes(F1, [key | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{range_end := F2} ->
	  v_type_bytes(F2, [range_end | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{start_revision := F3} ->
	  v_type_int64(F3, [start_revision | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{progress_notify := F4} ->
	  v_type_bool(F4, [progress_notify | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{filters := F5} ->
	  if is_list(F5) ->
		 _ = ['v_enum_Etcd.WatchCreateRequest.FilterType'(Elem,
								  [filters
								   | Path],
								  TrUserData)
		      || Elem <- F5],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{enum, 'Etcd.WatchCreateRequest.FilterType'}},
			       F5, [filters | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{prev_kv := F6} ->
	  v_type_bool(F6, [prev_kv | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{watch_id := F7} ->
	  v_type_int64(F7, [watch_id | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{fragment := F8} ->
	  v_type_bool(F8, [fragment | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (key) -> ok;
		      (range_end) -> ok;
		      (start_revision) -> ok;
		      (progress_notify) -> ok;
		      (filters) -> ok;
		      (prev_kv) -> ok;
		      (watch_id) -> ok;
		      (fragment) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.WatchCreateRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.WatchCreateRequest'},
		  M, Path);
'v_msg_Etcd.WatchCreateRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.WatchCreateRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.WatchCancelRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.WatchCancelRequest'/3}).
'v_msg_Etcd.WatchCancelRequest'(#{} = M, Path,
				TrUserData) ->
    case M of
      #{watch_id := F1} ->
	  v_type_int64(F1, [watch_id | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (watch_id) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.WatchCancelRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.WatchCancelRequest'},
		  M, Path);
'v_msg_Etcd.WatchCancelRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.WatchCancelRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.WatchProgressRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.WatchProgressRequest'/3}).
'v_msg_Etcd.WatchProgressRequest'(#{} = M, Path, _) ->
    lists:foreach(fun (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.WatchProgressRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.WatchProgressRequest'},
		  M, Path);
'v_msg_Etcd.WatchProgressRequest'(X, Path,
				  _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.WatchProgressRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.WatchResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.WatchResponse'/3}).
'v_msg_Etcd.WatchResponse'(#{} = M, Path, TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    case M of
      #{watch_id := F2} ->
	  v_type_int64(F2, [watch_id | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{created := F3} ->
	  v_type_bool(F3, [created | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{canceled := F4} ->
	  v_type_bool(F4, [canceled | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{compact_revision := F5} ->
	  v_type_int64(F5, [compact_revision | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{cancel_reason := F6} ->
	  v_type_string(F6, [cancel_reason | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{fragment := F7} ->
	  v_type_bool(F7, [fragment | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{events := F8} ->
	  if is_list(F8) ->
		 _ = ['v_msg_mvccpb.Event'(Elem, [events | Path],
					   TrUserData)
		      || Elem <- F8],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, {msg, 'mvccpb.Event'}},
			       F8, [events | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (watch_id) -> ok;
		      (created) -> ok;
		      (canceled) -> ok;
		      (compact_revision) -> ok;
		      (cancel_reason) -> ok;
		      (fragment) -> ok;
		      (events) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.WatchResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.WatchResponse'},
		  M, Path);
'v_msg_Etcd.WatchResponse'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.WatchResponse'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.LeaseGrantRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.LeaseGrantRequest'/3}).
'v_msg_Etcd.LeaseGrantRequest'(#{} = M, Path,
			       TrUserData) ->
    case M of
      #{'TTL' := F1} ->
	  v_type_int64(F1, ['TTL' | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{'ID' := F2} ->
	  v_type_int64(F2, ['ID' | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun ('TTL') -> ok;
		      ('ID') -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.LeaseGrantRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.LeaseGrantRequest'},
		  M, Path);
'v_msg_Etcd.LeaseGrantRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.LeaseGrantRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.LeaseGrantResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.LeaseGrantResponse'/3}).
'v_msg_Etcd.LeaseGrantResponse'(#{} = M, Path,
				TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    case M of
      #{'ID' := F2} ->
	  v_type_int64(F2, ['ID' | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{'TTL' := F3} ->
	  v_type_int64(F3, ['TTL' | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{error := F4} ->
	  v_type_string(F4, [error | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      ('ID') -> ok;
		      ('TTL') -> ok;
		      (error) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.LeaseGrantResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.LeaseGrantResponse'},
		  M, Path);
'v_msg_Etcd.LeaseGrantResponse'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.LeaseGrantResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.LeaseRevokeRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.LeaseRevokeRequest'/3}).
'v_msg_Etcd.LeaseRevokeRequest'(#{} = M, Path,
				TrUserData) ->
    case M of
      #{'ID' := F1} ->
	  v_type_int64(F1, ['ID' | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun ('ID') -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.LeaseRevokeRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.LeaseRevokeRequest'},
		  M, Path);
'v_msg_Etcd.LeaseRevokeRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.LeaseRevokeRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.LeaseRevokeResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.LeaseRevokeResponse'/3}).
'v_msg_Etcd.LeaseRevokeResponse'(#{} = M, Path,
				 TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.LeaseRevokeResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.LeaseRevokeResponse'},
		  M, Path);
'v_msg_Etcd.LeaseRevokeResponse'(X, Path,
				 _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.LeaseRevokeResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.LeaseCheckpoint'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.LeaseCheckpoint'/3}).
'v_msg_Etcd.LeaseCheckpoint'(#{} = M, Path,
			     TrUserData) ->
    case M of
      #{'ID' := F1} ->
	  v_type_int64(F1, ['ID' | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{remaining_TTL := F2} ->
	  v_type_int64(F2, [remaining_TTL | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun ('ID') -> ok;
		      (remaining_TTL) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.LeaseCheckpoint'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.LeaseCheckpoint'},
		  M, Path);
'v_msg_Etcd.LeaseCheckpoint'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.LeaseCheckpoint'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.LeaseCheckpointRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.LeaseCheckpointRequest'/3}).
'v_msg_Etcd.LeaseCheckpointRequest'(#{} = M, Path,
				    TrUserData) ->
    case M of
      #{checkpoints := F1} ->
	  if is_list(F1) ->
		 _ = ['v_msg_Etcd.LeaseCheckpoint'(Elem,
						   [checkpoints | Path],
						   TrUserData)
		      || Elem <- F1],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'Etcd.LeaseCheckpoint'}},
			       F1, [checkpoints | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (checkpoints) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.LeaseCheckpointRequest'(M, Path,
				    _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.LeaseCheckpointRequest'},
		  M, Path);
'v_msg_Etcd.LeaseCheckpointRequest'(X, Path,
				    _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.LeaseCheckpointRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.LeaseCheckpointResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.LeaseCheckpointResponse'/3}).
'v_msg_Etcd.LeaseCheckpointResponse'(#{} = M, Path,
				     TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.LeaseCheckpointResponse'(M, Path,
				     _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.LeaseCheckpointResponse'},
		  M, Path);
'v_msg_Etcd.LeaseCheckpointResponse'(X, Path,
				     _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.LeaseCheckpointResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.LeaseKeepAliveRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.LeaseKeepAliveRequest'/3}).
'v_msg_Etcd.LeaseKeepAliveRequest'(#{} = M, Path,
				   TrUserData) ->
    case M of
      #{'ID' := F1} ->
	  v_type_int64(F1, ['ID' | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun ('ID') -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.LeaseKeepAliveRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.LeaseKeepAliveRequest'},
		  M, Path);
'v_msg_Etcd.LeaseKeepAliveRequest'(X, Path,
				   _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.LeaseKeepAliveRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.LeaseKeepAliveResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.LeaseKeepAliveResponse'/3}).
'v_msg_Etcd.LeaseKeepAliveResponse'(#{} = M, Path,
				    TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    case M of
      #{'ID' := F2} ->
	  v_type_int64(F2, ['ID' | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{'TTL' := F3} ->
	  v_type_int64(F3, ['TTL' | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      ('ID') -> ok;
		      ('TTL') -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.LeaseKeepAliveResponse'(M, Path,
				    _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.LeaseKeepAliveResponse'},
		  M, Path);
'v_msg_Etcd.LeaseKeepAliveResponse'(X, Path,
				    _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.LeaseKeepAliveResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.LeaseTimeToLiveRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.LeaseTimeToLiveRequest'/3}).
'v_msg_Etcd.LeaseTimeToLiveRequest'(#{} = M, Path,
				    TrUserData) ->
    case M of
      #{'ID' := F1} ->
	  v_type_int64(F1, ['ID' | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{keys := F2} ->
	  v_type_bool(F2, [keys | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun ('ID') -> ok;
		      (keys) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.LeaseTimeToLiveRequest'(M, Path,
				    _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.LeaseTimeToLiveRequest'},
		  M, Path);
'v_msg_Etcd.LeaseTimeToLiveRequest'(X, Path,
				    _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.LeaseTimeToLiveRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.LeaseTimeToLiveResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.LeaseTimeToLiveResponse'/3}).
'v_msg_Etcd.LeaseTimeToLiveResponse'(#{} = M, Path,
				     TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    case M of
      #{'ID' := F2} ->
	  v_type_int64(F2, ['ID' | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{'TTL' := F3} ->
	  v_type_int64(F3, ['TTL' | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{grantedTTL := F4} ->
	  v_type_int64(F4, [grantedTTL | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{keys := F5} ->
	  if is_list(F5) ->
		 _ = [v_type_bytes(Elem, [keys | Path], TrUserData)
		      || Elem <- F5],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, bytes}, F5,
			       [keys | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      ('ID') -> ok;
		      ('TTL') -> ok;
		      (grantedTTL) -> ok;
		      (keys) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.LeaseTimeToLiveResponse'(M, Path,
				     _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.LeaseTimeToLiveResponse'},
		  M, Path);
'v_msg_Etcd.LeaseTimeToLiveResponse'(X, Path,
				     _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.LeaseTimeToLiveResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.LeaseLeasesRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.LeaseLeasesRequest'/3}).
'v_msg_Etcd.LeaseLeasesRequest'(#{} = M, Path, _) ->
    lists:foreach(fun (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.LeaseLeasesRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.LeaseLeasesRequest'},
		  M, Path);
'v_msg_Etcd.LeaseLeasesRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.LeaseLeasesRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.LeaseStatus'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.LeaseStatus'/3}).
'v_msg_Etcd.LeaseStatus'(#{} = M, Path, TrUserData) ->
    case M of
      #{'ID' := F1} ->
	  v_type_int64(F1, ['ID' | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun ('ID') -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.LeaseStatus'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.LeaseStatus'},
		  M, Path);
'v_msg_Etcd.LeaseStatus'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.LeaseStatus'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.LeaseLeasesResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.LeaseLeasesResponse'/3}).
'v_msg_Etcd.LeaseLeasesResponse'(#{} = M, Path,
				 TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    case M of
      #{leases := F2} ->
	  if is_list(F2) ->
		 _ = ['v_msg_Etcd.LeaseStatus'(Elem, [leases | Path],
					       TrUserData)
		      || Elem <- F2],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'Etcd.LeaseStatus'}},
			       F2, [leases | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (leases) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.LeaseLeasesResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.LeaseLeasesResponse'},
		  M, Path);
'v_msg_Etcd.LeaseLeasesResponse'(X, Path,
				 _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.LeaseLeasesResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.Member'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.Member'/3}).
'v_msg_Etcd.Member'(#{} = M, Path, TrUserData) ->
    case M of
      #{'ID' := F1} ->
	  v_type_uint64(F1, ['ID' | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{name := F2} ->
	  v_type_string(F2, [name | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{peerURLs := F3} ->
	  if is_list(F3) ->
		 _ = [v_type_string(Elem, [peerURLs | Path], TrUserData)
		      || Elem <- F3],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, string}, F3,
			       [peerURLs | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{clientURLs := F4} ->
	  if is_list(F4) ->
		 _ = [v_type_string(Elem, [clientURLs | Path],
				    TrUserData)
		      || Elem <- F4],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, string}, F4,
			       [clientURLs | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{isLearner := F5} ->
	  v_type_bool(F5, [isLearner | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun ('ID') -> ok;
		      (name) -> ok;
		      (peerURLs) -> ok;
		      (clientURLs) -> ok;
		      (isLearner) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.Member'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.Member'},
		  M, Path);
'v_msg_Etcd.Member'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.Member'}, X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.MemberAddRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.MemberAddRequest'/3}).
'v_msg_Etcd.MemberAddRequest'(#{} = M, Path,
			      TrUserData) ->
    case M of
      #{peerURLs := F1} ->
	  if is_list(F1) ->
		 _ = [v_type_string(Elem, [peerURLs | Path], TrUserData)
		      || Elem <- F1],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, string}, F1,
			       [peerURLs | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{isLearner := F2} ->
	  v_type_bool(F2, [isLearner | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (peerURLs) -> ok;
		      (isLearner) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.MemberAddRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.MemberAddRequest'},
		  M, Path);
'v_msg_Etcd.MemberAddRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.MemberAddRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.MemberAddResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.MemberAddResponse'/3}).
'v_msg_Etcd.MemberAddResponse'(#{} = M, Path,
			       TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    case M of
      #{member := F2} ->
	  'v_msg_Etcd.Member'(F2, [member | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{members := F3} ->
	  if is_list(F3) ->
		 _ = ['v_msg_Etcd.Member'(Elem, [members | Path],
					  TrUserData)
		      || Elem <- F3],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, {msg, 'Etcd.Member'}},
			       F3, [members | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (member) -> ok;
		      (members) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.MemberAddResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.MemberAddResponse'},
		  M, Path);
'v_msg_Etcd.MemberAddResponse'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.MemberAddResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.MemberRemoveRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.MemberRemoveRequest'/3}).
'v_msg_Etcd.MemberRemoveRequest'(#{} = M, Path,
				 TrUserData) ->
    case M of
      #{'ID' := F1} ->
	  v_type_uint64(F1, ['ID' | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun ('ID') -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.MemberRemoveRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.MemberRemoveRequest'},
		  M, Path);
'v_msg_Etcd.MemberRemoveRequest'(X, Path,
				 _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.MemberRemoveRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.MemberRemoveResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.MemberRemoveResponse'/3}).
'v_msg_Etcd.MemberRemoveResponse'(#{} = M, Path,
				  TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    case M of
      #{members := F2} ->
	  if is_list(F2) ->
		 _ = ['v_msg_Etcd.Member'(Elem, [members | Path],
					  TrUserData)
		      || Elem <- F2],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, {msg, 'Etcd.Member'}},
			       F2, [members | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (members) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.MemberRemoveResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.MemberRemoveResponse'},
		  M, Path);
'v_msg_Etcd.MemberRemoveResponse'(X, Path,
				  _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.MemberRemoveResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.MemberUpdateRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.MemberUpdateRequest'/3}).
'v_msg_Etcd.MemberUpdateRequest'(#{} = M, Path,
				 TrUserData) ->
    case M of
      #{'ID' := F1} ->
	  v_type_uint64(F1, ['ID' | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{peerURLs := F2} ->
	  if is_list(F2) ->
		 _ = [v_type_string(Elem, [peerURLs | Path], TrUserData)
		      || Elem <- F2],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, string}, F2,
			       [peerURLs | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun ('ID') -> ok;
		      (peerURLs) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.MemberUpdateRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.MemberUpdateRequest'},
		  M, Path);
'v_msg_Etcd.MemberUpdateRequest'(X, Path,
				 _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.MemberUpdateRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.MemberUpdateResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.MemberUpdateResponse'/3}).
'v_msg_Etcd.MemberUpdateResponse'(#{} = M, Path,
				  TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    case M of
      #{members := F2} ->
	  if is_list(F2) ->
		 _ = ['v_msg_Etcd.Member'(Elem, [members | Path],
					  TrUserData)
		      || Elem <- F2],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, {msg, 'Etcd.Member'}},
			       F2, [members | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (members) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.MemberUpdateResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.MemberUpdateResponse'},
		  M, Path);
'v_msg_Etcd.MemberUpdateResponse'(X, Path,
				  _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.MemberUpdateResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.MemberListRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.MemberListRequest'/3}).
'v_msg_Etcd.MemberListRequest'(#{} = M, Path, _) ->
    lists:foreach(fun (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.MemberListRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.MemberListRequest'},
		  M, Path);
'v_msg_Etcd.MemberListRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.MemberListRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.MemberListResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.MemberListResponse'/3}).
'v_msg_Etcd.MemberListResponse'(#{} = M, Path,
				TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    case M of
      #{members := F2} ->
	  if is_list(F2) ->
		 _ = ['v_msg_Etcd.Member'(Elem, [members | Path],
					  TrUserData)
		      || Elem <- F2],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, {msg, 'Etcd.Member'}},
			       F2, [members | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (members) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.MemberListResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.MemberListResponse'},
		  M, Path);
'v_msg_Etcd.MemberListResponse'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.MemberListResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.MemberPromoteRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.MemberPromoteRequest'/3}).
'v_msg_Etcd.MemberPromoteRequest'(#{} = M, Path,
				  TrUserData) ->
    case M of
      #{'ID' := F1} ->
	  v_type_uint64(F1, ['ID' | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun ('ID') -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.MemberPromoteRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.MemberPromoteRequest'},
		  M, Path);
'v_msg_Etcd.MemberPromoteRequest'(X, Path,
				  _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.MemberPromoteRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.MemberPromoteResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.MemberPromoteResponse'/3}).
'v_msg_Etcd.MemberPromoteResponse'(#{} = M, Path,
				   TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    case M of
      #{members := F2} ->
	  if is_list(F2) ->
		 _ = ['v_msg_Etcd.Member'(Elem, [members | Path],
					  TrUserData)
		      || Elem <- F2],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, {msg, 'Etcd.Member'}},
			       F2, [members | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (members) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.MemberPromoteResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.MemberPromoteResponse'},
		  M, Path);
'v_msg_Etcd.MemberPromoteResponse'(X, Path,
				   _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.MemberPromoteResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.DefragmentRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.DefragmentRequest'/3}).
'v_msg_Etcd.DefragmentRequest'(#{} = M, Path, _) ->
    lists:foreach(fun (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.DefragmentRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.DefragmentRequest'},
		  M, Path);
'v_msg_Etcd.DefragmentRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.DefragmentRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.DefragmentResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.DefragmentResponse'/3}).
'v_msg_Etcd.DefragmentResponse'(#{} = M, Path,
				TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.DefragmentResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.DefragmentResponse'},
		  M, Path);
'v_msg_Etcd.DefragmentResponse'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.DefragmentResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.MoveLeaderRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.MoveLeaderRequest'/3}).
'v_msg_Etcd.MoveLeaderRequest'(#{} = M, Path,
			       TrUserData) ->
    case M of
      #{targetID := F1} ->
	  v_type_uint64(F1, [targetID | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (targetID) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.MoveLeaderRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.MoveLeaderRequest'},
		  M, Path);
'v_msg_Etcd.MoveLeaderRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.MoveLeaderRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.MoveLeaderResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.MoveLeaderResponse'/3}).
'v_msg_Etcd.MoveLeaderResponse'(#{} = M, Path,
				TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.MoveLeaderResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.MoveLeaderResponse'},
		  M, Path);
'v_msg_Etcd.MoveLeaderResponse'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.MoveLeaderResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AlarmRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AlarmRequest'/3}).
'v_msg_Etcd.AlarmRequest'(#{} = M, Path, TrUserData) ->
    case M of
      #{action := F1} ->
	  'v_enum_Etcd.AlarmRequest.AlarmAction'(F1,
						 [action | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{memberID := F2} ->
	  v_type_uint64(F2, [memberID | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{alarm := F3} ->
	  'v_enum_Etcd.AlarmType'(F3, [alarm | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (action) -> ok;
		      (memberID) -> ok;
		      (alarm) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AlarmRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AlarmRequest'},
		  M, Path);
'v_msg_Etcd.AlarmRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.AlarmRequest'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AlarmMember'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AlarmMember'/3}).
'v_msg_Etcd.AlarmMember'(#{} = M, Path, TrUserData) ->
    case M of
      #{memberID := F1} ->
	  v_type_uint64(F1, [memberID | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{alarm := F2} ->
	  'v_enum_Etcd.AlarmType'(F2, [alarm | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (memberID) -> ok;
		      (alarm) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AlarmMember'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AlarmMember'},
		  M, Path);
'v_msg_Etcd.AlarmMember'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.AlarmMember'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AlarmResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AlarmResponse'/3}).
'v_msg_Etcd.AlarmResponse'(#{} = M, Path, TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    case M of
      #{alarms := F2} ->
	  if is_list(F2) ->
		 _ = ['v_msg_Etcd.AlarmMember'(Elem, [alarms | Path],
					       TrUserData)
		      || Elem <- F2],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'Etcd.AlarmMember'}},
			       F2, [alarms | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (alarms) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AlarmResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AlarmResponse'},
		  M, Path);
'v_msg_Etcd.AlarmResponse'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.AlarmResponse'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.StatusRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.StatusRequest'/3}).
'v_msg_Etcd.StatusRequest'(#{} = M, Path, _) ->
    lists:foreach(fun (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.StatusRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.StatusRequest'},
		  M, Path);
'v_msg_Etcd.StatusRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.StatusRequest'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.StatusResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.StatusResponse'/3}).
'v_msg_Etcd.StatusResponse'(#{} = M, Path,
			    TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    case M of
      #{version := F2} ->
	  v_type_string(F2, [version | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{dbSize := F3} ->
	  v_type_int64(F3, [dbSize | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{leader := F4} ->
	  v_type_uint64(F4, [leader | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{raftIndex := F5} ->
	  v_type_uint64(F5, [raftIndex | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{raftTerm := F6} ->
	  v_type_uint64(F6, [raftTerm | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{raftAppliedIndex := F7} ->
	  v_type_uint64(F7, [raftAppliedIndex | Path],
			TrUserData);
      _ -> ok
    end,
    case M of
      #{errors := F8} ->
	  if is_list(F8) ->
		 _ = [v_type_string(Elem, [errors | Path], TrUserData)
		      || Elem <- F8],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, string}, F8,
			       [errors | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{dbSizeInUse := F9} ->
	  v_type_int64(F9, [dbSizeInUse | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{isLearner := F10} ->
	  v_type_bool(F10, [isLearner | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (version) -> ok;
		      (dbSize) -> ok;
		      (leader) -> ok;
		      (raftIndex) -> ok;
		      (raftTerm) -> ok;
		      (raftAppliedIndex) -> ok;
		      (errors) -> ok;
		      (dbSizeInUse) -> ok;
		      (isLearner) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.StatusResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.StatusResponse'},
		  M, Path);
'v_msg_Etcd.StatusResponse'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.StatusResponse'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthEnableRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthEnableRequest'/3}).
'v_msg_Etcd.AuthEnableRequest'(#{} = M, Path, _) ->
    lists:foreach(fun (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthEnableRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthEnableRequest'},
		  M, Path);
'v_msg_Etcd.AuthEnableRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.AuthEnableRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthDisableRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthDisableRequest'/3}).
'v_msg_Etcd.AuthDisableRequest'(#{} = M, Path, _) ->
    lists:foreach(fun (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthDisableRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthDisableRequest'},
		  M, Path);
'v_msg_Etcd.AuthDisableRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.AuthDisableRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthenticateRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthenticateRequest'/3}).
'v_msg_Etcd.AuthenticateRequest'(#{} = M, Path,
				 TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_string(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{password := F2} ->
	  v_type_string(F2, [password | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (password) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthenticateRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthenticateRequest'},
		  M, Path);
'v_msg_Etcd.AuthenticateRequest'(X, Path,
				 _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.AuthenticateRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthUserAddRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthUserAddRequest'/3}).
'v_msg_Etcd.AuthUserAddRequest'(#{} = M, Path,
				TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_string(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{password := F2} ->
	  v_type_string(F2, [password | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{options := F3} ->
	  'v_msg_authpb.UserAddOptions'(F3, [options | Path],
					TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (password) -> ok;
		      (options) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthUserAddRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthUserAddRequest'},
		  M, Path);
'v_msg_Etcd.AuthUserAddRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.AuthUserAddRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthUserGetRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthUserGetRequest'/3}).
'v_msg_Etcd.AuthUserGetRequest'(#{} = M, Path,
				TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_string(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthUserGetRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthUserGetRequest'},
		  M, Path);
'v_msg_Etcd.AuthUserGetRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.AuthUserGetRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthUserDeleteRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthUserDeleteRequest'/3}).
'v_msg_Etcd.AuthUserDeleteRequest'(#{} = M, Path,
				   TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_string(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthUserDeleteRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthUserDeleteRequest'},
		  M, Path);
'v_msg_Etcd.AuthUserDeleteRequest'(X, Path,
				   _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.AuthUserDeleteRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthUserChangePasswordRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthUserChangePasswordRequest'/3}).
'v_msg_Etcd.AuthUserChangePasswordRequest'(#{} = M,
					   Path, TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_string(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{password := F2} ->
	  v_type_string(F2, [password | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (password) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthUserChangePasswordRequest'(M, Path,
					   _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthUserChangePasswordRequest'},
		  M, Path);
'v_msg_Etcd.AuthUserChangePasswordRequest'(X, Path,
					   _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.AuthUserChangePasswordRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthUserGrantRoleRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthUserGrantRoleRequest'/3}).
'v_msg_Etcd.AuthUserGrantRoleRequest'(#{} = M, Path,
				      TrUserData) ->
    case M of
      #{user := F1} ->
	  v_type_string(F1, [user | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{role := F2} ->
	  v_type_string(F2, [role | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (user) -> ok;
		      (role) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthUserGrantRoleRequest'(M, Path,
				      _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthUserGrantRoleRequest'},
		  M, Path);
'v_msg_Etcd.AuthUserGrantRoleRequest'(X, Path,
				      _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.AuthUserGrantRoleRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthUserRevokeRoleRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthUserRevokeRoleRequest'/3}).
'v_msg_Etcd.AuthUserRevokeRoleRequest'(#{} = M, Path,
				       TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_string(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{role := F2} ->
	  v_type_string(F2, [role | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (role) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthUserRevokeRoleRequest'(M, Path,
				       _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthUserRevokeRoleRequest'},
		  M, Path);
'v_msg_Etcd.AuthUserRevokeRoleRequest'(X, Path,
				       _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.AuthUserRevokeRoleRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthRoleAddRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthRoleAddRequest'/3}).
'v_msg_Etcd.AuthRoleAddRequest'(#{} = M, Path,
				TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_string(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthRoleAddRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthRoleAddRequest'},
		  M, Path);
'v_msg_Etcd.AuthRoleAddRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.AuthRoleAddRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthRoleGetRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthRoleGetRequest'/3}).
'v_msg_Etcd.AuthRoleGetRequest'(#{} = M, Path,
				TrUserData) ->
    case M of
      #{role := F1} ->
	  v_type_string(F1, [role | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (role) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthRoleGetRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthRoleGetRequest'},
		  M, Path);
'v_msg_Etcd.AuthRoleGetRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.AuthRoleGetRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthUserListRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthUserListRequest'/3}).
'v_msg_Etcd.AuthUserListRequest'(#{} = M, Path, _) ->
    lists:foreach(fun (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthUserListRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthUserListRequest'},
		  M, Path);
'v_msg_Etcd.AuthUserListRequest'(X, Path,
				 _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.AuthUserListRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthRoleListRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthRoleListRequest'/3}).
'v_msg_Etcd.AuthRoleListRequest'(#{} = M, Path, _) ->
    lists:foreach(fun (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthRoleListRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthRoleListRequest'},
		  M, Path);
'v_msg_Etcd.AuthRoleListRequest'(X, Path,
				 _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.AuthRoleListRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthRoleDeleteRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthRoleDeleteRequest'/3}).
'v_msg_Etcd.AuthRoleDeleteRequest'(#{} = M, Path,
				   TrUserData) ->
    case M of
      #{role := F1} ->
	  v_type_string(F1, [role | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (role) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthRoleDeleteRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthRoleDeleteRequest'},
		  M, Path);
'v_msg_Etcd.AuthRoleDeleteRequest'(X, Path,
				   _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.AuthRoleDeleteRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthRoleGrantPermissionRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthRoleGrantPermissionRequest'/3}).
'v_msg_Etcd.AuthRoleGrantPermissionRequest'(#{} = M,
					    Path, TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_string(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{perm := F2} ->
	  'v_msg_authpb.Permission'(F2, [perm | Path],
				    TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (perm) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthRoleGrantPermissionRequest'(M, Path,
					    _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthRoleGrantPermissionRequest'},
		  M, Path);
'v_msg_Etcd.AuthRoleGrantPermissionRequest'(X, Path,
					    _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.AuthRoleGrantPermissionRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthRoleRevokePermissionRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthRoleRevokePermissionRequest'/3}).
'v_msg_Etcd.AuthRoleRevokePermissionRequest'(#{} = M,
					     Path, TrUserData) ->
    case M of
      #{role := F1} ->
	  v_type_string(F1, [role | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{key := F2} ->
	  v_type_bytes(F2, [key | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{range_end := F3} ->
	  v_type_bytes(F3, [range_end | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (role) -> ok;
		      (key) -> ok;
		      (range_end) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthRoleRevokePermissionRequest'(M, Path,
					     _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthRoleRevokePermissionRequest'},
		  M, Path);
'v_msg_Etcd.AuthRoleRevokePermissionRequest'(X, Path,
					     _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.AuthRoleRevokePermissionRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthEnableResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthEnableResponse'/3}).
'v_msg_Etcd.AuthEnableResponse'(#{} = M, Path,
				TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthEnableResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthEnableResponse'},
		  M, Path);
'v_msg_Etcd.AuthEnableResponse'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.AuthEnableResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthDisableResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthDisableResponse'/3}).
'v_msg_Etcd.AuthDisableResponse'(#{} = M, Path,
				 TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthDisableResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthDisableResponse'},
		  M, Path);
'v_msg_Etcd.AuthDisableResponse'(X, Path,
				 _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.AuthDisableResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthenticateResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthenticateResponse'/3}).
'v_msg_Etcd.AuthenticateResponse'(#{} = M, Path,
				  TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    case M of
      #{token := F2} ->
	  v_type_string(F2, [token | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (token) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthenticateResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthenticateResponse'},
		  M, Path);
'v_msg_Etcd.AuthenticateResponse'(X, Path,
				  _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.AuthenticateResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthUserAddResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthUserAddResponse'/3}).
'v_msg_Etcd.AuthUserAddResponse'(#{} = M, Path,
				 TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthUserAddResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthUserAddResponse'},
		  M, Path);
'v_msg_Etcd.AuthUserAddResponse'(X, Path,
				 _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.AuthUserAddResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthUserGetResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthUserGetResponse'/3}).
'v_msg_Etcd.AuthUserGetResponse'(#{} = M, Path,
				 TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    case M of
      #{roles := F2} ->
	  if is_list(F2) ->
		 _ = [v_type_string(Elem, [roles | Path], TrUserData)
		      || Elem <- F2],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, string}, F2,
			       [roles | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (roles) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthUserGetResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthUserGetResponse'},
		  M, Path);
'v_msg_Etcd.AuthUserGetResponse'(X, Path,
				 _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.AuthUserGetResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthUserDeleteResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthUserDeleteResponse'/3}).
'v_msg_Etcd.AuthUserDeleteResponse'(#{} = M, Path,
				    TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthUserDeleteResponse'(M, Path,
				    _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthUserDeleteResponse'},
		  M, Path);
'v_msg_Etcd.AuthUserDeleteResponse'(X, Path,
				    _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.AuthUserDeleteResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthUserChangePasswordResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthUserChangePasswordResponse'/3}).
'v_msg_Etcd.AuthUserChangePasswordResponse'(#{} = M,
					    Path, TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthUserChangePasswordResponse'(M, Path,
					    _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthUserChangePasswordResponse'},
		  M, Path);
'v_msg_Etcd.AuthUserChangePasswordResponse'(X, Path,
					    _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.AuthUserChangePasswordResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthUserGrantRoleResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthUserGrantRoleResponse'/3}).
'v_msg_Etcd.AuthUserGrantRoleResponse'(#{} = M, Path,
				       TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthUserGrantRoleResponse'(M, Path,
				       _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthUserGrantRoleResponse'},
		  M, Path);
'v_msg_Etcd.AuthUserGrantRoleResponse'(X, Path,
				       _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.AuthUserGrantRoleResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthUserRevokeRoleResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthUserRevokeRoleResponse'/3}).
'v_msg_Etcd.AuthUserRevokeRoleResponse'(#{} = M, Path,
					TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthUserRevokeRoleResponse'(M, Path,
					_TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthUserRevokeRoleResponse'},
		  M, Path);
'v_msg_Etcd.AuthUserRevokeRoleResponse'(X, Path,
					_TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.AuthUserRevokeRoleResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthRoleAddResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthRoleAddResponse'/3}).
'v_msg_Etcd.AuthRoleAddResponse'(#{} = M, Path,
				 TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthRoleAddResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthRoleAddResponse'},
		  M, Path);
'v_msg_Etcd.AuthRoleAddResponse'(X, Path,
				 _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.AuthRoleAddResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthRoleGetResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthRoleGetResponse'/3}).
'v_msg_Etcd.AuthRoleGetResponse'(#{} = M, Path,
				 TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    case M of
      #{perm := F2} ->
	  if is_list(F2) ->
		 _ = ['v_msg_authpb.Permission'(Elem, [perm | Path],
						TrUserData)
		      || Elem <- F2],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'authpb.Permission'}},
			       F2, [perm | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (perm) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthRoleGetResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthRoleGetResponse'},
		  M, Path);
'v_msg_Etcd.AuthRoleGetResponse'(X, Path,
				 _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.AuthRoleGetResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthRoleListResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthRoleListResponse'/3}).
'v_msg_Etcd.AuthRoleListResponse'(#{} = M, Path,
				  TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    case M of
      #{roles := F2} ->
	  if is_list(F2) ->
		 _ = [v_type_string(Elem, [roles | Path], TrUserData)
		      || Elem <- F2],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, string}, F2,
			       [roles | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (roles) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthRoleListResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthRoleListResponse'},
		  M, Path);
'v_msg_Etcd.AuthRoleListResponse'(X, Path,
				  _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.AuthRoleListResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthUserListResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthUserListResponse'/3}).
'v_msg_Etcd.AuthUserListResponse'(#{} = M, Path,
				  TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    case M of
      #{users := F2} ->
	  if is_list(F2) ->
		 _ = [v_type_string(Elem, [users | Path], TrUserData)
		      || Elem <- F2],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, string}, F2,
			       [users | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (users) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthUserListResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthUserListResponse'},
		  M, Path);
'v_msg_Etcd.AuthUserListResponse'(X, Path,
				  _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.AuthUserListResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthRoleDeleteResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthRoleDeleteResponse'/3}).
'v_msg_Etcd.AuthRoleDeleteResponse'(#{} = M, Path,
				    TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthRoleDeleteResponse'(M, Path,
				    _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthRoleDeleteResponse'},
		  M, Path);
'v_msg_Etcd.AuthRoleDeleteResponse'(X, Path,
				    _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.AuthRoleDeleteResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthRoleGrantPermissionResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthRoleGrantPermissionResponse'/3}).
'v_msg_Etcd.AuthRoleGrantPermissionResponse'(#{} = M,
					     Path, TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthRoleGrantPermissionResponse'(M, Path,
					     _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthRoleGrantPermissionResponse'},
		  M, Path);
'v_msg_Etcd.AuthRoleGrantPermissionResponse'(X, Path,
					     _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.AuthRoleGrantPermissionResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.AuthRoleRevokePermissionResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.AuthRoleRevokePermissionResponse'/3}).
'v_msg_Etcd.AuthRoleRevokePermissionResponse'(#{} = M,
					      Path, TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.AuthRoleRevokePermissionResponse'(M, Path,
					      _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.AuthRoleRevokePermissionResponse'},
		  M, Path);
'v_msg_Etcd.AuthRoleRevokePermissionResponse'(X, Path,
					      _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.AuthRoleRevokePermissionResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.HealthCheckRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.HealthCheckRequest'/3}).
'v_msg_Etcd.HealthCheckRequest'(#{} = M, Path,
				TrUserData) ->
    case M of
      #{service := F1} ->
	  v_type_string(F1, [service | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (service) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.HealthCheckRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.HealthCheckRequest'},
		  M, Path);
'v_msg_Etcd.HealthCheckRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.HealthCheckRequest'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.HealthCheckResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.HealthCheckResponse'/3}).
'v_msg_Etcd.HealthCheckResponse'(#{} = M, Path,
				 TrUserData) ->
    case M of
      #{status := F1} ->
	  'v_enum_Etcd.HealthCheckResponse.ServingStatus'(F1,
							  [status | Path],
							  TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (status) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.HealthCheckResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.HealthCheckResponse'},
		  M, Path);
'v_msg_Etcd.HealthCheckResponse'(X, Path,
				 _TrUserData) ->
    mk_type_error({expected_msg,
		   'Etcd.HealthCheckResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.LockRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.LockRequest'/3}).
'v_msg_Etcd.LockRequest'(#{} = M, Path, TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_bytes(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{lease := F2} ->
	  v_type_int64(F2, [lease | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (lease) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.LockRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.LockRequest'},
		  M, Path);
'v_msg_Etcd.LockRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.LockRequest'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.LockResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.LockResponse'/3}).
'v_msg_Etcd.LockResponse'(#{} = M, Path, TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    case M of
      #{key := F2} ->
	  v_type_bytes(F2, [key | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (key) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.LockResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.LockResponse'},
		  M, Path);
'v_msg_Etcd.LockResponse'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.LockResponse'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.UnlockRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.UnlockRequest'/3}).
'v_msg_Etcd.UnlockRequest'(#{} = M, Path, TrUserData) ->
    case M of
      #{key := F1} ->
	  v_type_bytes(F1, [key | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (key) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.UnlockRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.UnlockRequest'},
		  M, Path);
'v_msg_Etcd.UnlockRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.UnlockRequest'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.UnlockResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.UnlockResponse'/3}).
'v_msg_Etcd.UnlockResponse'(#{} = M, Path,
			    TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.UnlockResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.UnlockResponse'},
		  M, Path);
'v_msg_Etcd.UnlockResponse'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.UnlockResponse'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.CampaignRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.CampaignRequest'/3}).
'v_msg_Etcd.CampaignRequest'(#{} = M, Path,
			     TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_bytes(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{lease := F2} ->
	  v_type_int64(F2, [lease | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{value := F3} ->
	  v_type_bytes(F3, [value | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (lease) -> ok;
		      (value) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.CampaignRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.CampaignRequest'},
		  M, Path);
'v_msg_Etcd.CampaignRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.CampaignRequest'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.CampaignResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.CampaignResponse'/3}).
'v_msg_Etcd.CampaignResponse'(#{} = M, Path,
			      TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    case M of
      #{leader := F2} ->
	  'v_msg_Etcd.LeaderKey'(F2, [leader | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (leader) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.CampaignResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.CampaignResponse'},
		  M, Path);
'v_msg_Etcd.CampaignResponse'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.CampaignResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_Etcd.LeaderKey'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.LeaderKey'/3}).
'v_msg_Etcd.LeaderKey'(#{} = M, Path, TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_bytes(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{key := F2} ->
	  v_type_bytes(F2, [key | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{rev := F3} ->
	  v_type_int64(F3, [rev | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{lease := F4} ->
	  v_type_int64(F4, [lease | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (key) -> ok;
		      (rev) -> ok;
		      (lease) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.LeaderKey'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.LeaderKey'},
		  M, Path);
'v_msg_Etcd.LeaderKey'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.LeaderKey'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.LeaderRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.LeaderRequest'/3}).
'v_msg_Etcd.LeaderRequest'(#{} = M, Path, TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_bytes(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.LeaderRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.LeaderRequest'},
		  M, Path);
'v_msg_Etcd.LeaderRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.LeaderRequest'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.LeaderResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.LeaderResponse'/3}).
'v_msg_Etcd.LeaderResponse'(#{} = M, Path,
			    TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    case M of
      #{kv := F2} ->
	  'v_msg_mvccpb.KeyValue'(F2, [kv | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (kv) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.LeaderResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.LeaderResponse'},
		  M, Path);
'v_msg_Etcd.LeaderResponse'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.LeaderResponse'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.ResignRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.ResignRequest'/3}).
'v_msg_Etcd.ResignRequest'(#{} = M, Path, TrUserData) ->
    case M of
      #{leader := F1} ->
	  'v_msg_Etcd.LeaderKey'(F1, [leader | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (leader) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.ResignRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.ResignRequest'},
		  M, Path);
'v_msg_Etcd.ResignRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.ResignRequest'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.ResignResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.ResignResponse'/3}).
'v_msg_Etcd.ResignResponse'(#{} = M, Path,
			    TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.ResignResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.ResignResponse'},
		  M, Path);
'v_msg_Etcd.ResignResponse'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.ResignResponse'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.ProclaimRequest'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.ProclaimRequest'/3}).
'v_msg_Etcd.ProclaimRequest'(#{} = M, Path,
			     TrUserData) ->
    case M of
      #{leader := F1} ->
	  'v_msg_Etcd.LeaderKey'(F1, [leader | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{value := F2} ->
	  v_type_bytes(F2, [value | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (leader) -> ok;
		      (value) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.ProclaimRequest'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.ProclaimRequest'},
		  M, Path);
'v_msg_Etcd.ProclaimRequest'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.ProclaimRequest'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_Etcd.ProclaimResponse'/3}).
-dialyzer({nowarn_function,'v_msg_Etcd.ProclaimResponse'/3}).
'v_msg_Etcd.ProclaimResponse'(#{} = M, Path,
			      TrUserData) ->
    case M of
      #{header := F1} ->
	  'v_msg_Etcd.ResponseHeader'(F1, [header | Path],
				      TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (header) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_Etcd.ProclaimResponse'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'Etcd.ProclaimResponse'},
		  M, Path);
'v_msg_Etcd.ProclaimResponse'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'Etcd.ProclaimResponse'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.FileDescriptorSet'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.FileDescriptorSet'/3}).
'v_msg_google.protobuf.FileDescriptorSet'(#{} = M, Path,
					  TrUserData) ->
    case M of
      #{file := F1} ->
	  if is_list(F1) ->
		 _ = ['v_msg_google.protobuf.FileDescriptorProto'(Elem,
								  [file | Path],
								  TrUserData)
		      || Elem <- F1],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.FileDescriptorProto'}},
			       F1, [file | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (file) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.FileDescriptorSet'(M, Path,
					  _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.FileDescriptorSet'},
		  M, Path);
'v_msg_google.protobuf.FileDescriptorSet'(X, Path,
					  _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.FileDescriptorSet'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.FileDescriptorProto'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.FileDescriptorProto'/3}).
'v_msg_google.protobuf.FileDescriptorProto'(#{} = M,
					    Path, TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_string(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{package := F2} ->
	  v_type_string(F2, [package | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{dependency := F3} ->
	  if is_list(F3) ->
		 _ = [v_type_string(Elem, [dependency | Path],
				    TrUserData)
		      || Elem <- F3],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, string}, F3,
			       [dependency | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{public_dependency := F4} ->
	  if is_list(F4) ->
		 _ = [v_type_int32(Elem, [public_dependency | Path],
				   TrUserData)
		      || Elem <- F4],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, int32}, F4,
			       [public_dependency | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{weak_dependency := F5} ->
	  if is_list(F5) ->
		 _ = [v_type_int32(Elem, [weak_dependency | Path],
				   TrUserData)
		      || Elem <- F5],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, int32}, F5,
			       [weak_dependency | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{message_type := F6} ->
	  if is_list(F6) ->
		 _ = ['v_msg_google.protobuf.DescriptorProto'(Elem,
							      [message_type
							       | Path],
							      TrUserData)
		      || Elem <- F6],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.DescriptorProto'}},
			       F6, [message_type | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{enum_type := F7} ->
	  if is_list(F7) ->
		 _ = ['v_msg_google.protobuf.EnumDescriptorProto'(Elem,
								  [enum_type
								   | Path],
								  TrUserData)
		      || Elem <- F7],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.EnumDescriptorProto'}},
			       F7, [enum_type | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{service := F8} ->
	  if is_list(F8) ->
		 _ =
		     ['v_msg_google.protobuf.ServiceDescriptorProto'(Elem,
								     [service
								      | Path],
								     TrUserData)
		      || Elem <- F8],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg,
				 'google.protobuf.ServiceDescriptorProto'}},
			       F8, [service | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{extension := F9} ->
	  if is_list(F9) ->
		 _ = ['v_msg_google.protobuf.FieldDescriptorProto'(Elem,
								   [extension
								    | Path],
								   TrUserData)
		      || Elem <- F9],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.FieldDescriptorProto'}},
			       F9, [extension | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{options := F10} ->
	  'v_msg_google.protobuf.FileOptions'(F10,
					      [options | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{source_code_info := F11} ->
	  'v_msg_google.protobuf.SourceCodeInfo'(F11,
						 [source_code_info | Path],
						 TrUserData);
      _ -> ok
    end,
    case M of
      #{syntax := F12} ->
	  v_type_string(F12, [syntax | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (package) -> ok;
		      (dependency) -> ok;
		      (public_dependency) -> ok;
		      (weak_dependency) -> ok;
		      (message_type) -> ok;
		      (enum_type) -> ok;
		      (service) -> ok;
		      (extension) -> ok;
		      (options) -> ok;
		      (source_code_info) -> ok;
		      (syntax) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.FileDescriptorProto'(M, Path,
					    _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.FileDescriptorProto'},
		  M, Path);
'v_msg_google.protobuf.FileDescriptorProto'(X, Path,
					    _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.FileDescriptorProto'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.DescriptorProto.ExtensionRange'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.DescriptorProto.ExtensionRange'/3}).
'v_msg_google.protobuf.DescriptorProto.ExtensionRange'(#{} =
							   M,
						       Path, TrUserData) ->
    case M of
      #{start := F1} ->
	  v_type_int32(F1, [start | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{'end' := F2} ->
	  v_type_int32(F2, ['end' | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (start) -> ok;
		      ('end') -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.DescriptorProto.ExtensionRange'(M,
						       Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.DescriptorProto.ExtensionRange'},
		  M, Path);
'v_msg_google.protobuf.DescriptorProto.ExtensionRange'(X,
						       Path, _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.DescriptorProto.ExtensionRange'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.DescriptorProto.ReservedRange'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.DescriptorProto.ReservedRange'/3}).
'v_msg_google.protobuf.DescriptorProto.ReservedRange'(#{} =
							  M,
						      Path, TrUserData) ->
    case M of
      #{start := F1} ->
	  v_type_int32(F1, [start | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{'end' := F2} ->
	  v_type_int32(F2, ['end' | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (start) -> ok;
		      ('end') -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.DescriptorProto.ReservedRange'(M,
						      Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.DescriptorProto.ReservedRange'},
		  M, Path);
'v_msg_google.protobuf.DescriptorProto.ReservedRange'(X,
						      Path, _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.DescriptorProto.ReservedRange'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.DescriptorProto'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.DescriptorProto'/3}).
'v_msg_google.protobuf.DescriptorProto'(#{} = M, Path,
					TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_string(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{field := F2} ->
	  if is_list(F2) ->
		 _ = ['v_msg_google.protobuf.FieldDescriptorProto'(Elem,
								   [field
								    | Path],
								   TrUserData)
		      || Elem <- F2],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.FieldDescriptorProto'}},
			       F2, [field | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{extension := F3} ->
	  if is_list(F3) ->
		 _ = ['v_msg_google.protobuf.FieldDescriptorProto'(Elem,
								   [extension
								    | Path],
								   TrUserData)
		      || Elem <- F3],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.FieldDescriptorProto'}},
			       F3, [extension | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{nested_type := F4} ->
	  if is_list(F4) ->
		 _ = ['v_msg_google.protobuf.DescriptorProto'(Elem,
							      [nested_type
							       | Path],
							      TrUserData)
		      || Elem <- F4],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.DescriptorProto'}},
			       F4, [nested_type | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{enum_type := F5} ->
	  if is_list(F5) ->
		 _ = ['v_msg_google.protobuf.EnumDescriptorProto'(Elem,
								  [enum_type
								   | Path],
								  TrUserData)
		      || Elem <- F5],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.EnumDescriptorProto'}},
			       F5, [enum_type | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{extension_range := F6} ->
	  if is_list(F6) ->
		 _ =
		     ['v_msg_google.protobuf.DescriptorProto.ExtensionRange'(Elem,
									     [extension_range
									      | Path],
									     TrUserData)
		      || Elem <- F6],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg,
				 'google.protobuf.DescriptorProto.ExtensionRange'}},
			       F6, [extension_range | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{oneof_decl := F7} ->
	  if is_list(F7) ->
		 _ = ['v_msg_google.protobuf.OneofDescriptorProto'(Elem,
								   [oneof_decl
								    | Path],
								   TrUserData)
		      || Elem <- F7],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.OneofDescriptorProto'}},
			       F7, [oneof_decl | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{options := F8} ->
	  'v_msg_google.protobuf.MessageOptions'(F8,
						 [options | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{reserved_range := F9} ->
	  if is_list(F9) ->
		 _ =
		     ['v_msg_google.protobuf.DescriptorProto.ReservedRange'(Elem,
									    [reserved_range
									     | Path],
									    TrUserData)
		      || Elem <- F9],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg,
				 'google.protobuf.DescriptorProto.ReservedRange'}},
			       F9, [reserved_range | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{reserved_name := F10} ->
	  if is_list(F10) ->
		 _ = [v_type_string(Elem, [reserved_name | Path],
				    TrUserData)
		      || Elem <- F10],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, string}, F10,
			       [reserved_name | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (field) -> ok;
		      (extension) -> ok;
		      (nested_type) -> ok;
		      (enum_type) -> ok;
		      (extension_range) -> ok;
		      (oneof_decl) -> ok;
		      (options) -> ok;
		      (reserved_range) -> ok;
		      (reserved_name) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.DescriptorProto'(M, Path,
					_TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.DescriptorProto'},
		  M, Path);
'v_msg_google.protobuf.DescriptorProto'(X, Path,
					_TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.DescriptorProto'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.FieldDescriptorProto'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.FieldDescriptorProto'/3}).
'v_msg_google.protobuf.FieldDescriptorProto'(#{} = M,
					     Path, TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_string(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{number := F2} ->
	  v_type_int32(F2, [number | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{label := F3} ->
	  'v_enum_google.protobuf.FieldDescriptorProto.Label'(F3,
							      [label | Path],
							      TrUserData);
      _ -> ok
    end,
    case M of
      #{type := F4} ->
	  'v_enum_google.protobuf.FieldDescriptorProto.Type'(F4,
							     [type | Path],
							     TrUserData);
      _ -> ok
    end,
    case M of
      #{type_name := F5} ->
	  v_type_string(F5, [type_name | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{extendee := F6} ->
	  v_type_string(F6, [extendee | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{default_value := F7} ->
	  v_type_string(F7, [default_value | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{oneof_index := F8} ->
	  v_type_int32(F8, [oneof_index | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{json_name := F9} ->
	  v_type_string(F9, [json_name | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{options := F10} ->
	  'v_msg_google.protobuf.FieldOptions'(F10,
					       [options | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (number) -> ok;
		      (label) -> ok;
		      (type) -> ok;
		      (type_name) -> ok;
		      (extendee) -> ok;
		      (default_value) -> ok;
		      (oneof_index) -> ok;
		      (json_name) -> ok;
		      (options) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.FieldDescriptorProto'(M, Path,
					     _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.FieldDescriptorProto'},
		  M, Path);
'v_msg_google.protobuf.FieldDescriptorProto'(X, Path,
					     _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.FieldDescriptorProto'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.OneofDescriptorProto'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.OneofDescriptorProto'/3}).
'v_msg_google.protobuf.OneofDescriptorProto'(#{} = M,
					     Path, TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_string(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.OneofDescriptorProto'(M, Path,
					     _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.OneofDescriptorProto'},
		  M, Path);
'v_msg_google.protobuf.OneofDescriptorProto'(X, Path,
					     _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.OneofDescriptorProto'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.EnumDescriptorProto'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.EnumDescriptorProto'/3}).
'v_msg_google.protobuf.EnumDescriptorProto'(#{} = M,
					    Path, TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_string(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{value := F2} ->
	  if is_list(F2) ->
		 _ =
		     ['v_msg_google.protobuf.EnumValueDescriptorProto'(Elem,
								       [value
									| Path],
								       TrUserData)
		      || Elem <- F2],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg,
				 'google.protobuf.EnumValueDescriptorProto'}},
			       F2, [value | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{options := F3} ->
	  'v_msg_google.protobuf.EnumOptions'(F3,
					      [options | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (value) -> ok;
		      (options) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.EnumDescriptorProto'(M, Path,
					    _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.EnumDescriptorProto'},
		  M, Path);
'v_msg_google.protobuf.EnumDescriptorProto'(X, Path,
					    _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.EnumDescriptorProto'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.EnumValueDescriptorProto'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.EnumValueDescriptorProto'/3}).
'v_msg_google.protobuf.EnumValueDescriptorProto'(#{} =
						     M,
						 Path, TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_string(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{number := F2} ->
	  v_type_int32(F2, [number | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{options := F3} ->
	  'v_msg_google.protobuf.EnumValueOptions'(F3,
						   [options | Path],
						   TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (number) -> ok;
		      (options) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.EnumValueDescriptorProto'(M,
						 Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.EnumValueDescriptorProto'},
		  M, Path);
'v_msg_google.protobuf.EnumValueDescriptorProto'(X,
						 Path, _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.EnumValueDescriptorProto'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.ServiceDescriptorProto'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.ServiceDescriptorProto'/3}).
'v_msg_google.protobuf.ServiceDescriptorProto'(#{} = M,
					       Path, TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_string(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{method := F2} ->
	  if is_list(F2) ->
		 _ = ['v_msg_google.protobuf.MethodDescriptorProto'(Elem,
								    [method
								     | Path],
								    TrUserData)
		      || Elem <- F2],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.MethodDescriptorProto'}},
			       F2, [method | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{options := F3} ->
	  'v_msg_google.protobuf.ServiceOptions'(F3,
						 [options | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (method) -> ok;
		      (options) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.ServiceDescriptorProto'(M, Path,
					       _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.ServiceDescriptorProto'},
		  M, Path);
'v_msg_google.protobuf.ServiceDescriptorProto'(X, Path,
					       _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.ServiceDescriptorProto'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.MethodDescriptorProto'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.MethodDescriptorProto'/3}).
'v_msg_google.protobuf.MethodDescriptorProto'(#{} = M,
					      Path, TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_string(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{input_type := F2} ->
	  v_type_string(F2, [input_type | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{output_type := F3} ->
	  v_type_string(F3, [output_type | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{options := F4} ->
	  'v_msg_google.protobuf.MethodOptions'(F4,
						[options | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{client_streaming := F5} ->
	  v_type_bool(F5, [client_streaming | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{server_streaming := F6} ->
	  v_type_bool(F6, [server_streaming | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (input_type) -> ok;
		      (output_type) -> ok;
		      (options) -> ok;
		      (client_streaming) -> ok;
		      (server_streaming) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.MethodDescriptorProto'(M, Path,
					      _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.MethodDescriptorProto'},
		  M, Path);
'v_msg_google.protobuf.MethodDescriptorProto'(X, Path,
					      _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.MethodDescriptorProto'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.FileOptions'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.FileOptions'/3}).
'v_msg_google.protobuf.FileOptions'(#{} = M, Path,
				    TrUserData) ->
    case M of
      #{java_package := F1} ->
	  v_type_string(F1, [java_package | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{java_outer_classname := F2} ->
	  v_type_string(F2, [java_outer_classname | Path],
			TrUserData);
      _ -> ok
    end,
    case M of
      #{java_multiple_files := F3} ->
	  v_type_bool(F3, [java_multiple_files | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{java_generate_equals_and_hash := F4} ->
	  v_type_bool(F4, [java_generate_equals_and_hash | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{java_string_check_utf8 := F5} ->
	  v_type_bool(F5, [java_string_check_utf8 | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{optimize_for := F6} ->
	  'v_enum_google.protobuf.FileOptions.OptimizeMode'(F6,
							    [optimize_for
							     | Path],
							    TrUserData);
      _ -> ok
    end,
    case M of
      #{go_package := F7} ->
	  v_type_string(F7, [go_package | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{cc_generic_services := F8} ->
	  v_type_bool(F8, [cc_generic_services | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{java_generic_services := F9} ->
	  v_type_bool(F9, [java_generic_services | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{py_generic_services := F10} ->
	  v_type_bool(F10, [py_generic_services | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{deprecated := F11} ->
	  v_type_bool(F11, [deprecated | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{cc_enable_arenas := F12} ->
	  v_type_bool(F12, [cc_enable_arenas | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{objc_class_prefix := F13} ->
	  v_type_string(F13, [objc_class_prefix | Path],
			TrUserData);
      _ -> ok
    end,
    case M of
      #{csharp_namespace := F14} ->
	  v_type_string(F14, [csharp_namespace | Path],
			TrUserData);
      _ -> ok
    end,
    case M of
      #{javanano_use_deprecated_package := F15} ->
	  v_type_bool(F15,
		      [javanano_use_deprecated_package | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{uninterpreted_option := F16} ->
	  if is_list(F16) ->
		 _ = ['v_msg_google.protobuf.UninterpretedOption'(Elem,
								  [uninterpreted_option
								   | Path],
								  TrUserData)
		      || Elem <- F16],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.UninterpretedOption'}},
			       F16, [uninterpreted_option | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{goproto_getters_all := F17} ->
	  v_type_bool(F17, [goproto_getters_all | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{goproto_enum_prefix_all := F18} ->
	  v_type_bool(F18, [goproto_enum_prefix_all | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{goproto_stringer_all := F19} ->
	  v_type_bool(F19, [goproto_stringer_all | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{verbose_equal_all := F20} ->
	  v_type_bool(F20, [verbose_equal_all | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{face_all := F21} ->
	  v_type_bool(F21, [face_all | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{gostring_all := F22} ->
	  v_type_bool(F22, [gostring_all | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{populate_all := F23} ->
	  v_type_bool(F23, [populate_all | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{stringer_all := F24} ->
	  v_type_bool(F24, [stringer_all | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{onlyone_all := F25} ->
	  v_type_bool(F25, [onlyone_all | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{equal_all := F26} ->
	  v_type_bool(F26, [equal_all | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{description_all := F27} ->
	  v_type_bool(F27, [description_all | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{testgen_all := F28} ->
	  v_type_bool(F28, [testgen_all | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{benchgen_all := F29} ->
	  v_type_bool(F29, [benchgen_all | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{marshaler_all := F30} ->
	  v_type_bool(F30, [marshaler_all | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{unmarshaler_all := F31} ->
	  v_type_bool(F31, [unmarshaler_all | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{stable_marshaler_all := F32} ->
	  v_type_bool(F32, [stable_marshaler_all | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{sizer_all := F33} ->
	  v_type_bool(F33, [sizer_all | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{goproto_enum_stringer_all := F34} ->
	  v_type_bool(F34, [goproto_enum_stringer_all | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{enum_stringer_all := F35} ->
	  v_type_bool(F35, [enum_stringer_all | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{unsafe_marshaler_all := F36} ->
	  v_type_bool(F36, [unsafe_marshaler_all | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{unsafe_unmarshaler_all := F37} ->
	  v_type_bool(F37, [unsafe_unmarshaler_all | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{goproto_extensions_map_all := F38} ->
	  v_type_bool(F38, [goproto_extensions_map_all | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{goproto_unrecognized_all := F39} ->
	  v_type_bool(F39, [goproto_unrecognized_all | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{gogoproto_import := F40} ->
	  v_type_bool(F40, [gogoproto_import | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{protosizer_all := F41} ->
	  v_type_bool(F41, [protosizer_all | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{compare_all := F42} ->
	  v_type_bool(F42, [compare_all | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (java_package) -> ok;
		      (java_outer_classname) -> ok;
		      (java_multiple_files) -> ok;
		      (java_generate_equals_and_hash) -> ok;
		      (java_string_check_utf8) -> ok;
		      (optimize_for) -> ok;
		      (go_package) -> ok;
		      (cc_generic_services) -> ok;
		      (java_generic_services) -> ok;
		      (py_generic_services) -> ok;
		      (deprecated) -> ok;
		      (cc_enable_arenas) -> ok;
		      (objc_class_prefix) -> ok;
		      (csharp_namespace) -> ok;
		      (javanano_use_deprecated_package) -> ok;
		      (uninterpreted_option) -> ok;
		      (goproto_getters_all) -> ok;
		      (goproto_enum_prefix_all) -> ok;
		      (goproto_stringer_all) -> ok;
		      (verbose_equal_all) -> ok;
		      (face_all) -> ok;
		      (gostring_all) -> ok;
		      (populate_all) -> ok;
		      (stringer_all) -> ok;
		      (onlyone_all) -> ok;
		      (equal_all) -> ok;
		      (description_all) -> ok;
		      (testgen_all) -> ok;
		      (benchgen_all) -> ok;
		      (marshaler_all) -> ok;
		      (unmarshaler_all) -> ok;
		      (stable_marshaler_all) -> ok;
		      (sizer_all) -> ok;
		      (goproto_enum_stringer_all) -> ok;
		      (enum_stringer_all) -> ok;
		      (unsafe_marshaler_all) -> ok;
		      (unsafe_unmarshaler_all) -> ok;
		      (goproto_extensions_map_all) -> ok;
		      (goproto_unrecognized_all) -> ok;
		      (gogoproto_import) -> ok;
		      (protosizer_all) -> ok;
		      (compare_all) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.FileOptions'(M, Path,
				    _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.FileOptions'},
		  M, Path);
'v_msg_google.protobuf.FileOptions'(X, Path,
				    _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.FileOptions'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.MessageOptions'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.MessageOptions'/3}).
'v_msg_google.protobuf.MessageOptions'(#{} = M, Path,
				       TrUserData) ->
    case M of
      #{message_set_wire_format := F1} ->
	  v_type_bool(F1, [message_set_wire_format | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{no_standard_descriptor_accessor := F2} ->
	  v_type_bool(F2,
		      [no_standard_descriptor_accessor | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{deprecated := F3} ->
	  v_type_bool(F3, [deprecated | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{map_entry := F4} ->
	  v_type_bool(F4, [map_entry | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{uninterpreted_option := F5} ->
	  if is_list(F5) ->
		 _ = ['v_msg_google.protobuf.UninterpretedOption'(Elem,
								  [uninterpreted_option
								   | Path],
								  TrUserData)
		      || Elem <- F5],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.UninterpretedOption'}},
			       F5, [uninterpreted_option | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{goproto_getters := F6} ->
	  v_type_bool(F6, [goproto_getters | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{goproto_stringer := F7} ->
	  v_type_bool(F7, [goproto_stringer | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{verbose_equal := F8} ->
	  v_type_bool(F8, [verbose_equal | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{face := F9} ->
	  v_type_bool(F9, [face | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{gostring := F10} ->
	  v_type_bool(F10, [gostring | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{populate := F11} ->
	  v_type_bool(F11, [populate | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{stringer := F12} ->
	  v_type_bool(F12, [stringer | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{onlyone := F13} ->
	  v_type_bool(F13, [onlyone | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{equal := F14} ->
	  v_type_bool(F14, [equal | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{description := F15} ->
	  v_type_bool(F15, [description | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{testgen := F16} ->
	  v_type_bool(F16, [testgen | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{benchgen := F17} ->
	  v_type_bool(F17, [benchgen | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{marshaler := F18} ->
	  v_type_bool(F18, [marshaler | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{unmarshaler := F19} ->
	  v_type_bool(F19, [unmarshaler | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{stable_marshaler := F20} ->
	  v_type_bool(F20, [stable_marshaler | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{sizer := F21} ->
	  v_type_bool(F21, [sizer | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{unsafe_marshaler := F22} ->
	  v_type_bool(F22, [unsafe_marshaler | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{unsafe_unmarshaler := F23} ->
	  v_type_bool(F23, [unsafe_unmarshaler | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{goproto_extensions_map := F24} ->
	  v_type_bool(F24, [goproto_extensions_map | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{goproto_unrecognized := F25} ->
	  v_type_bool(F25, [goproto_unrecognized | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{protosizer := F26} ->
	  v_type_bool(F26, [protosizer | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{compare := F27} ->
	  v_type_bool(F27, [compare | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (message_set_wire_format) -> ok;
		      (no_standard_descriptor_accessor) -> ok;
		      (deprecated) -> ok;
		      (map_entry) -> ok;
		      (uninterpreted_option) -> ok;
		      (goproto_getters) -> ok;
		      (goproto_stringer) -> ok;
		      (verbose_equal) -> ok;
		      (face) -> ok;
		      (gostring) -> ok;
		      (populate) -> ok;
		      (stringer) -> ok;
		      (onlyone) -> ok;
		      (equal) -> ok;
		      (description) -> ok;
		      (testgen) -> ok;
		      (benchgen) -> ok;
		      (marshaler) -> ok;
		      (unmarshaler) -> ok;
		      (stable_marshaler) -> ok;
		      (sizer) -> ok;
		      (unsafe_marshaler) -> ok;
		      (unsafe_unmarshaler) -> ok;
		      (goproto_extensions_map) -> ok;
		      (goproto_unrecognized) -> ok;
		      (protosizer) -> ok;
		      (compare) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.MessageOptions'(M, Path,
				       _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.MessageOptions'},
		  M, Path);
'v_msg_google.protobuf.MessageOptions'(X, Path,
				       _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.MessageOptions'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.FieldOptions'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.FieldOptions'/3}).
'v_msg_google.protobuf.FieldOptions'(#{} = M, Path,
				     TrUserData) ->
    case M of
      #{ctype := F1} ->
	  'v_enum_google.protobuf.FieldOptions.CType'(F1,
						      [ctype | Path],
						      TrUserData);
      _ -> ok
    end,
    case M of
      #{packed := F2} ->
	  v_type_bool(F2, [packed | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{jstype := F3} ->
	  'v_enum_google.protobuf.FieldOptions.JSType'(F3,
						       [jstype | Path],
						       TrUserData);
      _ -> ok
    end,
    case M of
      #{lazy := F4} ->
	  v_type_bool(F4, [lazy | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{deprecated := F5} ->
	  v_type_bool(F5, [deprecated | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{weak := F6} ->
	  v_type_bool(F6, [weak | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{uninterpreted_option := F7} ->
	  if is_list(F7) ->
		 _ = ['v_msg_google.protobuf.UninterpretedOption'(Elem,
								  [uninterpreted_option
								   | Path],
								  TrUserData)
		      || Elem <- F7],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.UninterpretedOption'}},
			       F7, [uninterpreted_option | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{nullable := F8} ->
	  v_type_bool(F8, [nullable | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{embed := F9} ->
	  v_type_bool(F9, [embed | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{customtype := F10} ->
	  v_type_string(F10, [customtype | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{customname := F11} ->
	  v_type_string(F11, [customname | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{jsontag := F12} ->
	  v_type_string(F12, [jsontag | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{moretags := F13} ->
	  v_type_string(F13, [moretags | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{casttype := F14} ->
	  v_type_string(F14, [casttype | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{castkey := F15} ->
	  v_type_string(F15, [castkey | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{castvalue := F16} ->
	  v_type_string(F16, [castvalue | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{stdtime := F17} ->
	  v_type_bool(F17, [stdtime | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{stdduration := F18} ->
	  v_type_bool(F18, [stdduration | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (ctype) -> ok;
		      (packed) -> ok;
		      (jstype) -> ok;
		      (lazy) -> ok;
		      (deprecated) -> ok;
		      (weak) -> ok;
		      (uninterpreted_option) -> ok;
		      (nullable) -> ok;
		      (embed) -> ok;
		      (customtype) -> ok;
		      (customname) -> ok;
		      (jsontag) -> ok;
		      (moretags) -> ok;
		      (casttype) -> ok;
		      (castkey) -> ok;
		      (castvalue) -> ok;
		      (stdtime) -> ok;
		      (stdduration) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.FieldOptions'(M, Path,
				     _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.FieldOptions'},
		  M, Path);
'v_msg_google.protobuf.FieldOptions'(X, Path,
				     _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.FieldOptions'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.EnumOptions'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.EnumOptions'/3}).
'v_msg_google.protobuf.EnumOptions'(#{} = M, Path,
				    TrUserData) ->
    case M of
      #{allow_alias := F1} ->
	  v_type_bool(F1, [allow_alias | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{deprecated := F2} ->
	  v_type_bool(F2, [deprecated | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{uninterpreted_option := F3} ->
	  if is_list(F3) ->
		 _ = ['v_msg_google.protobuf.UninterpretedOption'(Elem,
								  [uninterpreted_option
								   | Path],
								  TrUserData)
		      || Elem <- F3],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.UninterpretedOption'}},
			       F3, [uninterpreted_option | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{goproto_enum_prefix := F4} ->
	  v_type_bool(F4, [goproto_enum_prefix | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{goproto_enum_stringer := F5} ->
	  v_type_bool(F5, [goproto_enum_stringer | Path],
		      TrUserData);
      _ -> ok
    end,
    case M of
      #{enum_stringer := F6} ->
	  v_type_bool(F6, [enum_stringer | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{enum_customname := F7} ->
	  v_type_string(F7, [enum_customname | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (allow_alias) -> ok;
		      (deprecated) -> ok;
		      (uninterpreted_option) -> ok;
		      (goproto_enum_prefix) -> ok;
		      (goproto_enum_stringer) -> ok;
		      (enum_stringer) -> ok;
		      (enum_customname) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.EnumOptions'(M, Path,
				    _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.EnumOptions'},
		  M, Path);
'v_msg_google.protobuf.EnumOptions'(X, Path,
				    _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.EnumOptions'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.EnumValueOptions'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.EnumValueOptions'/3}).
'v_msg_google.protobuf.EnumValueOptions'(#{} = M, Path,
					 TrUserData) ->
    case M of
      #{deprecated := F1} ->
	  v_type_bool(F1, [deprecated | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{uninterpreted_option := F2} ->
	  if is_list(F2) ->
		 _ = ['v_msg_google.protobuf.UninterpretedOption'(Elem,
								  [uninterpreted_option
								   | Path],
								  TrUserData)
		      || Elem <- F2],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.UninterpretedOption'}},
			       F2, [uninterpreted_option | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{enumvalue_customname := F3} ->
	  v_type_string(F3, [enumvalue_customname | Path],
			TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (deprecated) -> ok;
		      (uninterpreted_option) -> ok;
		      (enumvalue_customname) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.EnumValueOptions'(M, Path,
					 _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.EnumValueOptions'},
		  M, Path);
'v_msg_google.protobuf.EnumValueOptions'(X, Path,
					 _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.EnumValueOptions'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.ServiceOptions'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.ServiceOptions'/3}).
'v_msg_google.protobuf.ServiceOptions'(#{} = M, Path,
				       TrUserData) ->
    case M of
      #{deprecated := F1} ->
	  v_type_bool(F1, [deprecated | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{uninterpreted_option := F2} ->
	  if is_list(F2) ->
		 _ = ['v_msg_google.protobuf.UninterpretedOption'(Elem,
								  [uninterpreted_option
								   | Path],
								  TrUserData)
		      || Elem <- F2],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.UninterpretedOption'}},
			       F2, [uninterpreted_option | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (deprecated) -> ok;
		      (uninterpreted_option) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.ServiceOptions'(M, Path,
				       _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.ServiceOptions'},
		  M, Path);
'v_msg_google.protobuf.ServiceOptions'(X, Path,
				       _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.ServiceOptions'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.MethodOptions'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.MethodOptions'/3}).
'v_msg_google.protobuf.MethodOptions'(#{} = M, Path,
				      TrUserData) ->
    case M of
      #{deprecated := F1} ->
	  v_type_bool(F1, [deprecated | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{uninterpreted_option := F2} ->
	  if is_list(F2) ->
		 _ = ['v_msg_google.protobuf.UninterpretedOption'(Elem,
								  [uninterpreted_option
								   | Path],
								  TrUserData)
		      || Elem <- F2],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'google.protobuf.UninterpretedOption'}},
			       F2, [uninterpreted_option | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (deprecated) -> ok;
		      (uninterpreted_option) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.MethodOptions'(M, Path,
				      _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.MethodOptions'},
		  M, Path);
'v_msg_google.protobuf.MethodOptions'(X, Path,
				      _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.MethodOptions'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.UninterpretedOption.NamePart'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.UninterpretedOption.NamePart'/3}).
'v_msg_google.protobuf.UninterpretedOption.NamePart'(#{name_part
							   := F1,
						       is_extension := F2} =
							 M,
						     Path, TrUserData) ->
    v_type_string(F1, [name_part | Path], TrUserData),
    v_type_bool(F2, [is_extension | Path], TrUserData),
    lists:foreach(fun (name_part) -> ok;
		      (is_extension) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.UninterpretedOption.NamePart'(M,
						     Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields,
		   [name_part, is_extension] -- maps:keys(M),
		   'google.protobuf.UninterpretedOption.NamePart'},
		  M, Path);
'v_msg_google.protobuf.UninterpretedOption.NamePart'(X,
						     Path, _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.UninterpretedOption.NamePart'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.UninterpretedOption'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.UninterpretedOption'/3}).
'v_msg_google.protobuf.UninterpretedOption'(#{} = M,
					    Path, TrUserData) ->
    case M of
      #{name := F1} ->
	  if is_list(F1) ->
		 _ =
		     ['v_msg_google.protobuf.UninterpretedOption.NamePart'(Elem,
									   [name
									    | Path],
									   TrUserData)
		      || Elem <- F1],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg,
				 'google.protobuf.UninterpretedOption.NamePart'}},
			       F1, [name | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{identifier_value := F2} ->
	  v_type_string(F2, [identifier_value | Path],
			TrUserData);
      _ -> ok
    end,
    case M of
      #{positive_int_value := F3} ->
	  v_type_uint64(F3, [positive_int_value | Path],
			TrUserData);
      _ -> ok
    end,
    case M of
      #{negative_int_value := F4} ->
	  v_type_int64(F4, [negative_int_value | Path],
		       TrUserData);
      _ -> ok
    end,
    case M of
      #{double_value := F5} ->
	  v_type_double(F5, [double_value | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{string_value := F6} ->
	  v_type_bytes(F6, [string_value | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{aggregate_value := F7} ->
	  v_type_string(F7, [aggregate_value | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (identifier_value) -> ok;
		      (positive_int_value) -> ok;
		      (negative_int_value) -> ok;
		      (double_value) -> ok;
		      (string_value) -> ok;
		      (aggregate_value) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.UninterpretedOption'(M, Path,
					    _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.UninterpretedOption'},
		  M, Path);
'v_msg_google.protobuf.UninterpretedOption'(X, Path,
					    _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.UninterpretedOption'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.SourceCodeInfo.Location'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.SourceCodeInfo.Location'/3}).
'v_msg_google.protobuf.SourceCodeInfo.Location'(#{} = M,
						Path, TrUserData) ->
    case M of
      #{path := F1} ->
	  if is_list(F1) ->
		 _ = [v_type_int32(Elem, [path | Path], TrUserData)
		      || Elem <- F1],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, int32}, F1,
			       [path | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{span := F2} ->
	  if is_list(F2) ->
		 _ = [v_type_int32(Elem, [span | Path], TrUserData)
		      || Elem <- F2],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, int32}, F2,
			       [span | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{leading_comments := F3} ->
	  v_type_string(F3, [leading_comments | Path],
			TrUserData);
      _ -> ok
    end,
    case M of
      #{trailing_comments := F4} ->
	  v_type_string(F4, [trailing_comments | Path],
			TrUserData);
      _ -> ok
    end,
    case M of
      #{leading_detached_comments := F5} ->
	  if is_list(F5) ->
		 _ = [v_type_string(Elem,
				    [leading_detached_comments | Path],
				    TrUserData)
		      || Elem <- F5],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, string}, F5,
			       [leading_detached_comments | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (path) -> ok;
		      (span) -> ok;
		      (leading_comments) -> ok;
		      (trailing_comments) -> ok;
		      (leading_detached_comments) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.SourceCodeInfo.Location'(M, Path,
						_TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.SourceCodeInfo.Location'},
		  M, Path);
'v_msg_google.protobuf.SourceCodeInfo.Location'(X, Path,
						_TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.SourceCodeInfo.Location'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.SourceCodeInfo'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.SourceCodeInfo'/3}).
'v_msg_google.protobuf.SourceCodeInfo'(#{} = M, Path,
				       TrUserData) ->
    case M of
      #{location := F1} ->
	  if is_list(F1) ->
		 _ =
		     ['v_msg_google.protobuf.SourceCodeInfo.Location'(Elem,
								      [location
								       | Path],
								      TrUserData)
		      || Elem <- F1],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg,
				 'google.protobuf.SourceCodeInfo.Location'}},
			       F1, [location | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (location) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.SourceCodeInfo'(M, Path,
				       _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.SourceCodeInfo'},
		  M, Path);
'v_msg_google.protobuf.SourceCodeInfo'(X, Path,
				       _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.SourceCodeInfo'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.GeneratedCodeInfo.Annotation'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.GeneratedCodeInfo.Annotation'/3}).
'v_msg_google.protobuf.GeneratedCodeInfo.Annotation'(#{} =
							 M,
						     Path, TrUserData) ->
    case M of
      #{path := F1} ->
	  if is_list(F1) ->
		 _ = [v_type_int32(Elem, [path | Path], TrUserData)
		      || Elem <- F1],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, int32}, F1,
			       [path | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{source_file := F2} ->
	  v_type_string(F2, [source_file | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{'begin' := F3} ->
	  v_type_int32(F3, ['begin' | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{'end' := F4} ->
	  v_type_int32(F4, ['end' | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (path) -> ok;
		      (source_file) -> ok;
		      ('begin') -> ok;
		      ('end') -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.GeneratedCodeInfo.Annotation'(M,
						     Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.GeneratedCodeInfo.Annotation'},
		  M, Path);
'v_msg_google.protobuf.GeneratedCodeInfo.Annotation'(X,
						     Path, _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.GeneratedCodeInfo.Annotation'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_google.protobuf.GeneratedCodeInfo'/3}).
-dialyzer({nowarn_function,'v_msg_google.protobuf.GeneratedCodeInfo'/3}).
'v_msg_google.protobuf.GeneratedCodeInfo'(#{} = M, Path,
					  TrUserData) ->
    case M of
      #{annotation := F1} ->
	  if is_list(F1) ->
		 _ =
		     ['v_msg_google.protobuf.GeneratedCodeInfo.Annotation'(Elem,
									   [annotation
									    | Path],
									   TrUserData)
		      || Elem <- F1],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg,
				 'google.protobuf.GeneratedCodeInfo.Annotation'}},
			       F1, [annotation | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (annotation) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_google.protobuf.GeneratedCodeInfo'(M, Path,
					  _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'google.protobuf.GeneratedCodeInfo'},
		  M, Path);
'v_msg_google.protobuf.GeneratedCodeInfo'(X, Path,
					  _TrUserData) ->
    mk_type_error({expected_msg,
		   'google.protobuf.GeneratedCodeInfo'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_mvccpb.KeyValue'/3}).
-dialyzer({nowarn_function,'v_msg_mvccpb.KeyValue'/3}).
'v_msg_mvccpb.KeyValue'(#{} = M, Path, TrUserData) ->
    case M of
      #{key := F1} ->
	  v_type_bytes(F1, [key | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{create_revision := F2} ->
	  v_type_int64(F2, [create_revision | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{mod_revision := F3} ->
	  v_type_int64(F3, [mod_revision | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{version := F4} ->
	  v_type_int64(F4, [version | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{value := F5} ->
	  v_type_bytes(F5, [value | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{lease := F6} ->
	  v_type_int64(F6, [lease | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (key) -> ok;
		      (create_revision) -> ok;
		      (mod_revision) -> ok;
		      (version) -> ok;
		      (value) -> ok;
		      (lease) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_mvccpb.KeyValue'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'mvccpb.KeyValue'},
		  M, Path);
'v_msg_mvccpb.KeyValue'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'mvccpb.KeyValue'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_mvccpb.Event'/3}).
-dialyzer({nowarn_function,'v_msg_mvccpb.Event'/3}).
'v_msg_mvccpb.Event'(#{} = M, Path, TrUserData) ->
    case M of
      #{type := F1} ->
	  'v_enum_mvccpb.Event.EventType'(F1, [type | Path],
					  TrUserData);
      _ -> ok
    end,
    case M of
      #{kv := F2} ->
	  'v_msg_mvccpb.KeyValue'(F2, [kv | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{prev_kv := F3} ->
	  'v_msg_mvccpb.KeyValue'(F3, [prev_kv | Path],
				  TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (type) -> ok;
		      (kv) -> ok;
		      (prev_kv) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_mvccpb.Event'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'mvccpb.Event'},
		  M, Path);
'v_msg_mvccpb.Event'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'mvccpb.Event'}, X, Path).

-compile({nowarn_unused_function,'v_msg_authpb.UserAddOptions'/3}).
-dialyzer({nowarn_function,'v_msg_authpb.UserAddOptions'/3}).
'v_msg_authpb.UserAddOptions'(#{} = M, Path,
			      TrUserData) ->
    case M of
      #{no_password := F1} ->
	  v_type_bool(F1, [no_password | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (no_password) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_authpb.UserAddOptions'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'authpb.UserAddOptions'},
		  M, Path);
'v_msg_authpb.UserAddOptions'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'authpb.UserAddOptions'},
		  X, Path).

-compile({nowarn_unused_function,'v_msg_authpb.User'/3}).
-dialyzer({nowarn_function,'v_msg_authpb.User'/3}).
'v_msg_authpb.User'(#{} = M, Path, TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_bytes(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{password := F2} ->
	  v_type_bytes(F2, [password | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{roles := F3} ->
	  if is_list(F3) ->
		 _ = [v_type_string(Elem, [roles | Path], TrUserData)
		      || Elem <- F3],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of, string}, F3,
			       [roles | Path])
	  end;
      _ -> ok
    end,
    case M of
      #{options := F4} ->
	  'v_msg_authpb.UserAddOptions'(F4, [options | Path],
					TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (password) -> ok;
		      (roles) -> ok;
		      (options) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_authpb.User'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'authpb.User'},
		  M, Path);
'v_msg_authpb.User'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'authpb.User'}, X, Path).

-compile({nowarn_unused_function,'v_msg_authpb.Permission'/3}).
-dialyzer({nowarn_function,'v_msg_authpb.Permission'/3}).
'v_msg_authpb.Permission'(#{} = M, Path, TrUserData) ->
    case M of
      #{permType := F1} ->
	  'v_enum_authpb.Permission.Type'(F1, [permType | Path],
					  TrUserData);
      _ -> ok
    end,
    case M of
      #{key := F2} ->
	  v_type_bytes(F2, [key | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{range_end := F3} ->
	  v_type_bytes(F3, [range_end | Path], TrUserData);
      _ -> ok
    end,
    lists:foreach(fun (permType) -> ok;
		      (key) -> ok;
		      (range_end) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_authpb.Permission'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'authpb.Permission'},
		  M, Path);
'v_msg_authpb.Permission'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'authpb.Permission'}, X,
		  Path).

-compile({nowarn_unused_function,'v_msg_authpb.Role'/3}).
-dialyzer({nowarn_function,'v_msg_authpb.Role'/3}).
'v_msg_authpb.Role'(#{} = M, Path, TrUserData) ->
    case M of
      #{name := F1} ->
	  v_type_bytes(F1, [name | Path], TrUserData);
      _ -> ok
    end,
    case M of
      #{keyPermission := F2} ->
	  if is_list(F2) ->
		 _ = ['v_msg_authpb.Permission'(Elem,
						[keyPermission | Path],
						TrUserData)
		      || Elem <- F2],
		 ok;
	     true ->
		 mk_type_error({invalid_list_of,
				{msg, 'authpb.Permission'}},
			       F2, [keyPermission | Path])
	  end;
      _ -> ok
    end,
    lists:foreach(fun (name) -> ok;
		      (keyPermission) -> ok;
		      (OtherKey) ->
			  mk_type_error({extraneous_key, OtherKey}, M, Path)
		  end,
		  maps:keys(M)),
    ok;
'v_msg_authpb.Role'(M, Path, _TrUserData)
    when is_map(M) ->
    mk_type_error({missing_fields, [] -- maps:keys(M),
		   'authpb.Role'},
		  M, Path);
'v_msg_authpb.Role'(X, Path, _TrUserData) ->
    mk_type_error({expected_msg, 'authpb.Role'}, X, Path).

-compile({nowarn_unused_function,'v_enum_Etcd.RangeRequest.SortOrder'/3}).
-dialyzer({nowarn_function,'v_enum_Etcd.RangeRequest.SortOrder'/3}).
'v_enum_Etcd.RangeRequest.SortOrder'('NONE', _Path,
				     _TrUserData) ->
    ok;
'v_enum_Etcd.RangeRequest.SortOrder'('ASCEND', _Path,
				     _TrUserData) ->
    ok;
'v_enum_Etcd.RangeRequest.SortOrder'('DESCEND', _Path,
				     _TrUserData) ->
    ok;
'v_enum_Etcd.RangeRequest.SortOrder'(V, Path,
				     TrUserData)
    when is_integer(V) ->
    v_type_sint32(V, Path, TrUserData);
'v_enum_Etcd.RangeRequest.SortOrder'(X, Path,
				     _TrUserData) ->
    mk_type_error({invalid_enum,
		   'Etcd.RangeRequest.SortOrder'},
		  X, Path).

-compile({nowarn_unused_function,'v_enum_Etcd.RangeRequest.SortTarget'/3}).
-dialyzer({nowarn_function,'v_enum_Etcd.RangeRequest.SortTarget'/3}).
'v_enum_Etcd.RangeRequest.SortTarget'('KEY', _Path,
				      _TrUserData) ->
    ok;
'v_enum_Etcd.RangeRequest.SortTarget'('VERSION', _Path,
				      _TrUserData) ->
    ok;
'v_enum_Etcd.RangeRequest.SortTarget'('CREATE', _Path,
				      _TrUserData) ->
    ok;
'v_enum_Etcd.RangeRequest.SortTarget'('MOD', _Path,
				      _TrUserData) ->
    ok;
'v_enum_Etcd.RangeRequest.SortTarget'('VALUE', _Path,
				      _TrUserData) ->
    ok;
'v_enum_Etcd.RangeRequest.SortTarget'(V, Path,
				      TrUserData)
    when is_integer(V) ->
    v_type_sint32(V, Path, TrUserData);
'v_enum_Etcd.RangeRequest.SortTarget'(X, Path,
				      _TrUserData) ->
    mk_type_error({invalid_enum,
		   'Etcd.RangeRequest.SortTarget'},
		  X, Path).

-compile({nowarn_unused_function,'v_enum_Etcd.Compare.CompareResult'/3}).
-dialyzer({nowarn_function,'v_enum_Etcd.Compare.CompareResult'/3}).
'v_enum_Etcd.Compare.CompareResult'('EQUAL', _Path,
				    _TrUserData) ->
    ok;
'v_enum_Etcd.Compare.CompareResult'('GREATER', _Path,
				    _TrUserData) ->
    ok;
'v_enum_Etcd.Compare.CompareResult'('LESS', _Path,
				    _TrUserData) ->
    ok;
'v_enum_Etcd.Compare.CompareResult'('NOT_EQUAL', _Path,
				    _TrUserData) ->
    ok;
'v_enum_Etcd.Compare.CompareResult'(V, Path, TrUserData)
    when is_integer(V) ->
    v_type_sint32(V, Path, TrUserData);
'v_enum_Etcd.Compare.CompareResult'(X, Path,
				    _TrUserData) ->
    mk_type_error({invalid_enum,
		   'Etcd.Compare.CompareResult'},
		  X, Path).

-compile({nowarn_unused_function,'v_enum_Etcd.Compare.CompareTarget'/3}).
-dialyzer({nowarn_function,'v_enum_Etcd.Compare.CompareTarget'/3}).
'v_enum_Etcd.Compare.CompareTarget'('VERSION', _Path,
				    _TrUserData) ->
    ok;
'v_enum_Etcd.Compare.CompareTarget'('CREATE', _Path,
				    _TrUserData) ->
    ok;
'v_enum_Etcd.Compare.CompareTarget'('MOD', _Path,
				    _TrUserData) ->
    ok;
'v_enum_Etcd.Compare.CompareTarget'('VALUE', _Path,
				    _TrUserData) ->
    ok;
'v_enum_Etcd.Compare.CompareTarget'('LEASE', _Path,
				    _TrUserData) ->
    ok;
'v_enum_Etcd.Compare.CompareTarget'(V, Path, TrUserData)
    when is_integer(V) ->
    v_type_sint32(V, Path, TrUserData);
'v_enum_Etcd.Compare.CompareTarget'(X, Path,
				    _TrUserData) ->
    mk_type_error({invalid_enum,
		   'Etcd.Compare.CompareTarget'},
		  X, Path).

-compile({nowarn_unused_function,'v_enum_Etcd.WatchCreateRequest.FilterType'/3}).
-dialyzer({nowarn_function,'v_enum_Etcd.WatchCreateRequest.FilterType'/3}).
'v_enum_Etcd.WatchCreateRequest.FilterType'('NOPUT',
					    _Path, _TrUserData) ->
    ok;
'v_enum_Etcd.WatchCreateRequest.FilterType'('NODELETE',
					    _Path, _TrUserData) ->
    ok;
'v_enum_Etcd.WatchCreateRequest.FilterType'(V, Path,
					    TrUserData)
    when is_integer(V) ->
    v_type_sint32(V, Path, TrUserData);
'v_enum_Etcd.WatchCreateRequest.FilterType'(X, Path,
					    _TrUserData) ->
    mk_type_error({invalid_enum,
		   'Etcd.WatchCreateRequest.FilterType'},
		  X, Path).

-compile({nowarn_unused_function,'v_enum_Etcd.AlarmType'/3}).
-dialyzer({nowarn_function,'v_enum_Etcd.AlarmType'/3}).
'v_enum_Etcd.AlarmType'('NONE', _Path, _TrUserData) ->
    ok;
'v_enum_Etcd.AlarmType'('NOSPACE', _Path,
			_TrUserData) ->
    ok;
'v_enum_Etcd.AlarmType'('CORRUPT', _Path,
			_TrUserData) ->
    ok;
'v_enum_Etcd.AlarmType'(V, Path, TrUserData)
    when is_integer(V) ->
    v_type_sint32(V, Path, TrUserData);
'v_enum_Etcd.AlarmType'(X, Path, _TrUserData) ->
    mk_type_error({invalid_enum, 'Etcd.AlarmType'}, X,
		  Path).

-compile({nowarn_unused_function,'v_enum_Etcd.AlarmRequest.AlarmAction'/3}).
-dialyzer({nowarn_function,'v_enum_Etcd.AlarmRequest.AlarmAction'/3}).
'v_enum_Etcd.AlarmRequest.AlarmAction'('GET', _Path,
				       _TrUserData) ->
    ok;
'v_enum_Etcd.AlarmRequest.AlarmAction'('ACTIVATE',
				       _Path, _TrUserData) ->
    ok;
'v_enum_Etcd.AlarmRequest.AlarmAction'('DEACTIVATE',
				       _Path, _TrUserData) ->
    ok;
'v_enum_Etcd.AlarmRequest.AlarmAction'(V, Path,
				       TrUserData)
    when is_integer(V) ->
    v_type_sint32(V, Path, TrUserData);
'v_enum_Etcd.AlarmRequest.AlarmAction'(X, Path,
				       _TrUserData) ->
    mk_type_error({invalid_enum,
		   'Etcd.AlarmRequest.AlarmAction'},
		  X, Path).

-compile({nowarn_unused_function,'v_enum_Etcd.HealthCheckResponse.ServingStatus'/3}).
-dialyzer({nowarn_function,'v_enum_Etcd.HealthCheckResponse.ServingStatus'/3}).
'v_enum_Etcd.HealthCheckResponse.ServingStatus'('UNKNOWN',
						_Path, _TrUserData) ->
    ok;
'v_enum_Etcd.HealthCheckResponse.ServingStatus'('SERVING',
						_Path, _TrUserData) ->
    ok;
'v_enum_Etcd.HealthCheckResponse.ServingStatus'('NOT_SERVING',
						_Path, _TrUserData) ->
    ok;
'v_enum_Etcd.HealthCheckResponse.ServingStatus'('SERVICE_UNKNOWN',
						_Path, _TrUserData) ->
    ok;
'v_enum_Etcd.HealthCheckResponse.ServingStatus'(V, Path,
						TrUserData)
    when is_integer(V) ->
    v_type_sint32(V, Path, TrUserData);
'v_enum_Etcd.HealthCheckResponse.ServingStatus'(X, Path,
						_TrUserData) ->
    mk_type_error({invalid_enum,
		   'Etcd.HealthCheckResponse.ServingStatus'},
		  X, Path).

-compile({nowarn_unused_function,'v_enum_google.protobuf.FieldDescriptorProto.Type'/3}).
-dialyzer({nowarn_function,'v_enum_google.protobuf.FieldDescriptorProto.Type'/3}).
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_DOUBLE',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_FLOAT',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_INT64',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_UINT64',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_INT32',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_FIXED64',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_FIXED32',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_BOOL',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_STRING',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_GROUP',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_MESSAGE',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_BYTES',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_UINT32',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_ENUM',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_SFIXED32',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_SFIXED64',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_SINT32',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'('TYPE_SINT64',
						   _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Type'(V,
						   Path, TrUserData)
    when is_integer(V) ->
    v_type_sint32(V, Path, TrUserData);
'v_enum_google.protobuf.FieldDescriptorProto.Type'(X,
						   Path, _TrUserData) ->
    mk_type_error({invalid_enum,
		   'google.protobuf.FieldDescriptorProto.Type'},
		  X, Path).

-compile({nowarn_unused_function,'v_enum_google.protobuf.FieldDescriptorProto.Label'/3}).
-dialyzer({nowarn_function,'v_enum_google.protobuf.FieldDescriptorProto.Label'/3}).
'v_enum_google.protobuf.FieldDescriptorProto.Label'('LABEL_OPTIONAL',
						    _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Label'('LABEL_REQUIRED',
						    _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Label'('LABEL_REPEATED',
						    _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldDescriptorProto.Label'(V,
						    Path, TrUserData)
    when is_integer(V) ->
    v_type_sint32(V, Path, TrUserData);
'v_enum_google.protobuf.FieldDescriptorProto.Label'(X,
						    Path, _TrUserData) ->
    mk_type_error({invalid_enum,
		   'google.protobuf.FieldDescriptorProto.Label'},
		  X, Path).

-compile({nowarn_unused_function,'v_enum_google.protobuf.FileOptions.OptimizeMode'/3}).
-dialyzer({nowarn_function,'v_enum_google.protobuf.FileOptions.OptimizeMode'/3}).
'v_enum_google.protobuf.FileOptions.OptimizeMode'('SPEED',
						  _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FileOptions.OptimizeMode'('CODE_SIZE',
						  _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FileOptions.OptimizeMode'('LITE_RUNTIME',
						  _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FileOptions.OptimizeMode'(V,
						  Path, TrUserData)
    when is_integer(V) ->
    v_type_sint32(V, Path, TrUserData);
'v_enum_google.protobuf.FileOptions.OptimizeMode'(X,
						  Path, _TrUserData) ->
    mk_type_error({invalid_enum,
		   'google.protobuf.FileOptions.OptimizeMode'},
		  X, Path).

-compile({nowarn_unused_function,'v_enum_google.protobuf.FieldOptions.CType'/3}).
-dialyzer({nowarn_function,'v_enum_google.protobuf.FieldOptions.CType'/3}).
'v_enum_google.protobuf.FieldOptions.CType'('STRING',
					    _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldOptions.CType'('CORD',
					    _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldOptions.CType'('STRING_PIECE',
					    _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldOptions.CType'(V, Path,
					    TrUserData)
    when is_integer(V) ->
    v_type_sint32(V, Path, TrUserData);
'v_enum_google.protobuf.FieldOptions.CType'(X, Path,
					    _TrUserData) ->
    mk_type_error({invalid_enum,
		   'google.protobuf.FieldOptions.CType'},
		  X, Path).

-compile({nowarn_unused_function,'v_enum_google.protobuf.FieldOptions.JSType'/3}).
-dialyzer({nowarn_function,'v_enum_google.protobuf.FieldOptions.JSType'/3}).
'v_enum_google.protobuf.FieldOptions.JSType'('JS_NORMAL',
					     _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldOptions.JSType'('JS_STRING',
					     _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldOptions.JSType'('JS_NUMBER',
					     _Path, _TrUserData) ->
    ok;
'v_enum_google.protobuf.FieldOptions.JSType'(V, Path,
					     TrUserData)
    when is_integer(V) ->
    v_type_sint32(V, Path, TrUserData);
'v_enum_google.protobuf.FieldOptions.JSType'(X, Path,
					     _TrUserData) ->
    mk_type_error({invalid_enum,
		   'google.protobuf.FieldOptions.JSType'},
		  X, Path).

-compile({nowarn_unused_function,'v_enum_mvccpb.Event.EventType'/3}).
-dialyzer({nowarn_function,'v_enum_mvccpb.Event.EventType'/3}).
'v_enum_mvccpb.Event.EventType'('PUT', _Path,
				_TrUserData) ->
    ok;
'v_enum_mvccpb.Event.EventType'('DELETE', _Path,
				_TrUserData) ->
    ok;
'v_enum_mvccpb.Event.EventType'(V, Path, TrUserData)
    when is_integer(V) ->
    v_type_sint32(V, Path, TrUserData);
'v_enum_mvccpb.Event.EventType'(X, Path, _TrUserData) ->
    mk_type_error({invalid_enum, 'mvccpb.Event.EventType'},
		  X, Path).

-compile({nowarn_unused_function,'v_enum_authpb.Permission.Type'/3}).
-dialyzer({nowarn_function,'v_enum_authpb.Permission.Type'/3}).
'v_enum_authpb.Permission.Type'('READ', _Path,
				_TrUserData) ->
    ok;
'v_enum_authpb.Permission.Type'('WRITE', _Path,
				_TrUserData) ->
    ok;
'v_enum_authpb.Permission.Type'('READWRITE', _Path,
				_TrUserData) ->
    ok;
'v_enum_authpb.Permission.Type'(V, Path, TrUserData)
    when is_integer(V) ->
    v_type_sint32(V, Path, TrUserData);
'v_enum_authpb.Permission.Type'(X, Path, _TrUserData) ->
    mk_type_error({invalid_enum, 'authpb.Permission.Type'},
		  X, Path).

-compile({nowarn_unused_function,v_type_sint32/3}).
-dialyzer({nowarn_function,v_type_sint32/3}).
v_type_sint32(N, _Path, _TrUserData)
    when -2147483648 =< N, N =< 2147483647 ->
    ok;
v_type_sint32(N, Path, _TrUserData)
    when is_integer(N) ->
    mk_type_error({value_out_of_range, sint32, signed, 32},
		  N, Path);
v_type_sint32(X, Path, _TrUserData) ->
    mk_type_error({bad_integer, sint32, signed, 32}, X,
		  Path).

-compile({nowarn_unused_function,v_type_int32/3}).
-dialyzer({nowarn_function,v_type_int32/3}).
v_type_int32(N, _Path, _TrUserData)
    when -2147483648 =< N, N =< 2147483647 ->
    ok;
v_type_int32(N, Path, _TrUserData) when is_integer(N) ->
    mk_type_error({value_out_of_range, int32, signed, 32},
		  N, Path);
v_type_int32(X, Path, _TrUserData) ->
    mk_type_error({bad_integer, int32, signed, 32}, X,
		  Path).

-compile({nowarn_unused_function,v_type_int64/3}).
-dialyzer({nowarn_function,v_type_int64/3}).
v_type_int64(N, _Path, _TrUserData)
    when -9223372036854775808 =< N,
	 N =< 9223372036854775807 ->
    ok;
v_type_int64(N, Path, _TrUserData) when is_integer(N) ->
    mk_type_error({value_out_of_range, int64, signed, 64},
		  N, Path);
v_type_int64(X, Path, _TrUserData) ->
    mk_type_error({bad_integer, int64, signed, 64}, X,
		  Path).

-compile({nowarn_unused_function,v_type_uint32/3}).
-dialyzer({nowarn_function,v_type_uint32/3}).
v_type_uint32(N, _Path, _TrUserData)
    when 0 =< N, N =< 4294967295 ->
    ok;
v_type_uint32(N, Path, _TrUserData)
    when is_integer(N) ->
    mk_type_error({value_out_of_range, uint32, unsigned,
		   32},
		  N, Path);
v_type_uint32(X, Path, _TrUserData) ->
    mk_type_error({bad_integer, uint32, unsigned, 32}, X,
		  Path).

-compile({nowarn_unused_function,v_type_uint64/3}).
-dialyzer({nowarn_function,v_type_uint64/3}).
v_type_uint64(N, _Path, _TrUserData)
    when 0 =< N, N =< 18446744073709551615 ->
    ok;
v_type_uint64(N, Path, _TrUserData)
    when is_integer(N) ->
    mk_type_error({value_out_of_range, uint64, unsigned,
		   64},
		  N, Path);
v_type_uint64(X, Path, _TrUserData) ->
    mk_type_error({bad_integer, uint64, unsigned, 64}, X,
		  Path).

-compile({nowarn_unused_function,v_type_bool/3}).
-dialyzer({nowarn_function,v_type_bool/3}).
v_type_bool(false, _Path, _TrUserData) -> ok;
v_type_bool(true, _Path, _TrUserData) -> ok;
v_type_bool(0, _Path, _TrUserData) -> ok;
v_type_bool(1, _Path, _TrUserData) -> ok;
v_type_bool(X, Path, _TrUserData) ->
    mk_type_error(bad_boolean_value, X, Path).

-compile({nowarn_unused_function,v_type_double/3}).
-dialyzer({nowarn_function,v_type_double/3}).
v_type_double(N, _Path, _TrUserData) when is_float(N) ->
    ok;
v_type_double(N, _Path, _TrUserData)
    when is_integer(N) ->
    ok;
v_type_double(infinity, _Path, _TrUserData) -> ok;
v_type_double('-infinity', _Path, _TrUserData) -> ok;
v_type_double(nan, _Path, _TrUserData) -> ok;
v_type_double(X, Path, _TrUserData) ->
    mk_type_error(bad_double_value, X, Path).

-compile({nowarn_unused_function,v_type_string/3}).
-dialyzer({nowarn_function,v_type_string/3}).
v_type_string(S, Path, _TrUserData)
    when is_list(S); is_binary(S) ->
    try unicode:characters_to_binary(S) of
      B when is_binary(B) -> ok;
      {error, _, _} ->
	  mk_type_error(bad_unicode_string, S, Path)
    catch
      error:badarg ->
	  mk_type_error(bad_unicode_string, S, Path)
    end;
v_type_string(X, Path, _TrUserData) ->
    mk_type_error(bad_unicode_string, X, Path).

-compile({nowarn_unused_function,v_type_bytes/3}).
-dialyzer({nowarn_function,v_type_bytes/3}).
v_type_bytes(B, _Path, _TrUserData) when is_binary(B) ->
    ok;
v_type_bytes(B, _Path, _TrUserData) when is_list(B) ->
    ok;
v_type_bytes(X, Path, _TrUserData) ->
    mk_type_error(bad_binary_value, X, Path).

-compile({nowarn_unused_function,mk_type_error/3}).
-spec mk_type_error(_, _, list()) -> no_return().
mk_type_error(Error, ValueSeen, Path) ->
    Path2 = prettify_path(Path),
    erlang:error({gpb_type_error,
		  {Error, [{value, ValueSeen}, {path, Path2}]}}).


-compile({nowarn_unused_function,prettify_path/1}).
-dialyzer({nowarn_function,prettify_path/1}).
prettify_path([]) -> top_level;
prettify_path(PathR) ->
    list_to_atom(lists:append(lists:join(".",
					 lists:map(fun atom_to_list/1,
						   lists:reverse(PathR))))).


-compile({nowarn_unused_function,id/2}).
-compile({inline,id/2}).
id(X, _TrUserData) -> X.

-compile({nowarn_unused_function,v_ok/3}).
-compile({inline,v_ok/3}).
v_ok(_Value, _Path, _TrUserData) -> ok.

-compile({nowarn_unused_function,m_overwrite/3}).
-compile({inline,m_overwrite/3}).
m_overwrite(_Prev, New, _TrUserData) -> New.

-compile({nowarn_unused_function,cons/3}).
-compile({inline,cons/3}).
cons(Elem, Acc, _TrUserData) -> [Elem | Acc].

-compile({nowarn_unused_function,lists_reverse/2}).
-compile({inline,lists_reverse/2}).
'lists_reverse'(L, _TrUserData) -> lists:reverse(L).
-compile({nowarn_unused_function,'erlang_++'/3}).
-compile({inline,'erlang_++'/3}).
'erlang_++'(A, B, _TrUserData) -> A ++ B.


get_msg_defs() ->
    [{{enum, 'Etcd.RangeRequest.SortOrder'},
      [{'NONE', 0}, {'ASCEND', 1}, {'DESCEND', 2}]},
     {{enum, 'Etcd.RangeRequest.SortTarget'},
      [{'KEY', 0}, {'VERSION', 1}, {'CREATE', 2}, {'MOD', 3},
       {'VALUE', 4}]},
     {{enum, 'Etcd.Compare.CompareResult'},
      [{'EQUAL', 0}, {'GREATER', 1}, {'LESS', 2},
       {'NOT_EQUAL', 3}]},
     {{enum, 'Etcd.Compare.CompareTarget'},
      [{'VERSION', 0}, {'CREATE', 1}, {'MOD', 2},
       {'VALUE', 3}, {'LEASE', 4}]},
     {{enum, 'Etcd.WatchCreateRequest.FilterType'},
      [{'NOPUT', 0}, {'NODELETE', 1}]},
     {{enum, 'Etcd.AlarmType'},
      [{'NONE', 0}, {'NOSPACE', 1}, {'CORRUPT', 2}]},
     {{enum, 'Etcd.AlarmRequest.AlarmAction'},
      [{'GET', 0}, {'ACTIVATE', 1}, {'DEACTIVATE', 2}]},
     {{enum, 'Etcd.HealthCheckResponse.ServingStatus'},
      [{'UNKNOWN', 0}, {'SERVING', 1}, {'NOT_SERVING', 2},
       {'SERVICE_UNKNOWN', 3}]},
     {{enum, 'google.protobuf.FieldDescriptorProto.Type'},
      [{'TYPE_DOUBLE', 1}, {'TYPE_FLOAT', 2},
       {'TYPE_INT64', 3}, {'TYPE_UINT64', 4},
       {'TYPE_INT32', 5}, {'TYPE_FIXED64', 6},
       {'TYPE_FIXED32', 7}, {'TYPE_BOOL', 8},
       {'TYPE_STRING', 9}, {'TYPE_GROUP', 10},
       {'TYPE_MESSAGE', 11}, {'TYPE_BYTES', 12},
       {'TYPE_UINT32', 13}, {'TYPE_ENUM', 14},
       {'TYPE_SFIXED32', 15}, {'TYPE_SFIXED64', 16},
       {'TYPE_SINT32', 17}, {'TYPE_SINT64', 18}]},
     {{enum, 'google.protobuf.FieldDescriptorProto.Label'},
      [{'LABEL_OPTIONAL', 1}, {'LABEL_REQUIRED', 2},
       {'LABEL_REPEATED', 3}]},
     {{enum, 'google.protobuf.FileOptions.OptimizeMode'},
      [{'SPEED', 1}, {'CODE_SIZE', 2}, {'LITE_RUNTIME', 3}]},
     {{enum, 'google.protobuf.FieldOptions.CType'},
      [{'STRING', 0}, {'CORD', 1}, {'STRING_PIECE', 2}]},
     {{enum, 'google.protobuf.FieldOptions.JSType'},
      [{'JS_NORMAL', 0}, {'JS_STRING', 1}, {'JS_NUMBER', 2}]},
     {{enum, 'mvccpb.Event.EventType'},
      [{'PUT', 0}, {'DELETE', 1}]},
     {{enum, 'authpb.Permission.Type'},
      [{'READ', 0}, {'WRITE', 1}, {'READWRITE', 2}]},
     {{msg, 'Etcd.ResponseHeader'},
      [#{name => cluster_id, fnum => 1, rnum => 2,
	 type => uint64, occurrence => optional, opts => []},
       #{name => member_id, fnum => 2, rnum => 3,
	 type => uint64, occurrence => optional, opts => []},
       #{name => revision, fnum => 3, rnum => 4, type => int64,
	 occurrence => optional, opts => []},
       #{name => raft_term, fnum => 4, rnum => 5,
	 type => uint64, occurrence => optional, opts => []}]},
     {{msg, 'Etcd.RangeRequest'},
      [#{name => key, fnum => 1, rnum => 2, type => bytes,
	 occurrence => optional, opts => []},
       #{name => range_end, fnum => 2, rnum => 3,
	 type => bytes, occurrence => optional, opts => []},
       #{name => limit, fnum => 3, rnum => 4, type => int64,
	 occurrence => optional, opts => []},
       #{name => revision, fnum => 4, rnum => 5, type => int64,
	 occurrence => optional, opts => []},
       #{name => sort_order, fnum => 5, rnum => 6,
	 type => {enum, 'Etcd.RangeRequest.SortOrder'},
	 occurrence => optional, opts => []},
       #{name => sort_target, fnum => 6, rnum => 7,
	 type => {enum, 'Etcd.RangeRequest.SortTarget'},
	 occurrence => optional, opts => []},
       #{name => serializable, fnum => 7, rnum => 8,
	 type => bool, occurrence => optional, opts => []},
       #{name => keys_only, fnum => 8, rnum => 9, type => bool,
	 occurrence => optional, opts => []},
       #{name => count_only, fnum => 9, rnum => 10,
	 type => bool, occurrence => optional, opts => []},
       #{name => min_mod_revision, fnum => 10, rnum => 11,
	 type => int64, occurrence => optional, opts => []},
       #{name => max_mod_revision, fnum => 11, rnum => 12,
	 type => int64, occurrence => optional, opts => []},
       #{name => min_create_revision, fnum => 12, rnum => 13,
	 type => int64, occurrence => optional, opts => []},
       #{name => max_create_revision, fnum => 13, rnum => 14,
	 type => int64, occurrence => optional, opts => []}]},
     {{msg, 'Etcd.RangeResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []},
       #{name => kvs, fnum => 2, rnum => 3,
	 type => {msg, 'mvccpb.KeyValue'},
	 occurrence => repeated, opts => []},
       #{name => more, fnum => 3, rnum => 4, type => bool,
	 occurrence => optional, opts => []},
       #{name => count, fnum => 4, rnum => 5, type => int64,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.PutRequest'},
      [#{name => key, fnum => 1, rnum => 2, type => bytes,
	 occurrence => optional, opts => []},
       #{name => value, fnum => 2, rnum => 3, type => bytes,
	 occurrence => optional, opts => []},
       #{name => lease, fnum => 3, rnum => 4, type => int64,
	 occurrence => optional, opts => []},
       #{name => prev_kv, fnum => 4, rnum => 5, type => bool,
	 occurrence => optional, opts => []},
       #{name => ignore_value, fnum => 5, rnum => 6,
	 type => bool, occurrence => optional, opts => []},
       #{name => ignore_lease, fnum => 6, rnum => 7,
	 type => bool, occurrence => optional, opts => []}]},
     {{msg, 'Etcd.PutResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []},
       #{name => prev_kv, fnum => 2, rnum => 3,
	 type => {msg, 'mvccpb.KeyValue'},
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.DeleteRangeRequest'},
      [#{name => key, fnum => 1, rnum => 2, type => bytes,
	 occurrence => optional, opts => []},
       #{name => range_end, fnum => 2, rnum => 3,
	 type => bytes, occurrence => optional, opts => []},
       #{name => prev_kv, fnum => 3, rnum => 4, type => bool,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.DeleteRangeResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []},
       #{name => deleted, fnum => 2, rnum => 3, type => int64,
	 occurrence => optional, opts => []},
       #{name => prev_kvs, fnum => 3, rnum => 4,
	 type => {msg, 'mvccpb.KeyValue'},
	 occurrence => repeated, opts => []}]},
     {{msg, 'Etcd.RequestOp'},
      [#{name => request, rnum => 2,
	 fields =>
	     [#{name => request_range, fnum => 1, rnum => 2,
		type => {msg, 'Etcd.RangeRequest'},
		occurrence => optional, opts => []},
	      #{name => request_put, fnum => 2, rnum => 2,
		type => {msg, 'Etcd.PutRequest'},
		occurrence => optional, opts => []},
	      #{name => request_delete_range, fnum => 3, rnum => 2,
		type => {msg, 'Etcd.DeleteRangeRequest'},
		occurrence => optional, opts => []},
	      #{name => request_txn, fnum => 4, rnum => 2,
		type => {msg, 'Etcd.TxnRequest'},
		occurrence => optional, opts => []}]}]},
     {{msg, 'Etcd.ResponseOp'},
      [#{name => response, rnum => 2,
	 fields =>
	     [#{name => response_range, fnum => 1, rnum => 2,
		type => {msg, 'Etcd.RangeResponse'},
		occurrence => optional, opts => []},
	      #{name => response_put, fnum => 2, rnum => 2,
		type => {msg, 'Etcd.PutResponse'},
		occurrence => optional, opts => []},
	      #{name => response_delete_range, fnum => 3, rnum => 2,
		type => {msg, 'Etcd.DeleteRangeResponse'},
		occurrence => optional, opts => []},
	      #{name => response_txn, fnum => 4, rnum => 2,
		type => {msg, 'Etcd.TxnResponse'},
		occurrence => optional, opts => []}]}]},
     {{msg, 'Etcd.Compare'},
      [#{name => result, fnum => 1, rnum => 2,
	 type => {enum, 'Etcd.Compare.CompareResult'},
	 occurrence => optional, opts => []},
       #{name => target, fnum => 2, rnum => 3,
	 type => {enum, 'Etcd.Compare.CompareTarget'},
	 occurrence => optional, opts => []},
       #{name => key, fnum => 3, rnum => 4, type => bytes,
	 occurrence => optional, opts => []},
       #{name => target_union, rnum => 5,
	 fields =>
	     [#{name => version, fnum => 4, rnum => 5, type => int64,
		occurrence => optional, opts => []},
	      #{name => create_revision, fnum => 5, rnum => 5,
		type => int64, occurrence => optional, opts => []},
	      #{name => mod_revision, fnum => 6, rnum => 5,
		type => int64, occurrence => optional, opts => []},
	      #{name => value, fnum => 7, rnum => 5, type => bytes,
		occurrence => optional, opts => []},
	      #{name => lease, fnum => 8, rnum => 5, type => int64,
		occurrence => optional, opts => []}]},
       #{name => range_end, fnum => 64, rnum => 6,
	 type => bytes, occurrence => optional, opts => []}]},
     {{msg, 'Etcd.TxnRequest'},
      [#{name => compare, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.Compare'}, occurrence => repeated,
	 opts => []},
       #{name => success, fnum => 2, rnum => 3,
	 type => {msg, 'Etcd.RequestOp'}, occurrence => repeated,
	 opts => []},
       #{name => failure, fnum => 3, rnum => 4,
	 type => {msg, 'Etcd.RequestOp'}, occurrence => repeated,
	 opts => []}]},
     {{msg, 'Etcd.TxnResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []},
       #{name => succeeded, fnum => 2, rnum => 3, type => bool,
	 occurrence => optional, opts => []},
       #{name => responses, fnum => 3, rnum => 4,
	 type => {msg, 'Etcd.ResponseOp'},
	 occurrence => repeated, opts => []}]},
     {{msg, 'Etcd.CompactionRequest'},
      [#{name => revision, fnum => 1, rnum => 2,
	 type => int64, occurrence => optional, opts => []},
       #{name => physical, fnum => 2, rnum => 3, type => bool,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.CompactionResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.HashRequest'}, []},
     {{msg, 'Etcd.HashKVRequest'},
      [#{name => revision, fnum => 1, rnum => 2,
	 type => int64, occurrence => optional, opts => []}]},
     {{msg, 'Etcd.HashKVResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []},
       #{name => hash, fnum => 2, rnum => 3, type => uint32,
	 occurrence => optional, opts => []},
       #{name => compact_revision, fnum => 3, rnum => 4,
	 type => int64, occurrence => optional, opts => []}]},
     {{msg, 'Etcd.HashResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []},
       #{name => hash, fnum => 2, rnum => 3, type => uint32,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.SnapshotRequest'}, []},
     {{msg, 'Etcd.SnapshotResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []},
       #{name => remaining_bytes, fnum => 2, rnum => 3,
	 type => uint64, occurrence => optional, opts => []},
       #{name => blob, fnum => 3, rnum => 4, type => bytes,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.WatchRequest'},
      [#{name => request_union, rnum => 2,
	 fields =>
	     [#{name => create_request, fnum => 1, rnum => 2,
		type => {msg, 'Etcd.WatchCreateRequest'},
		occurrence => optional, opts => []},
	      #{name => cancel_request, fnum => 2, rnum => 2,
		type => {msg, 'Etcd.WatchCancelRequest'},
		occurrence => optional, opts => []},
	      #{name => progress_request, fnum => 3, rnum => 2,
		type => {msg, 'Etcd.WatchProgressRequest'},
		occurrence => optional, opts => []}]}]},
     {{msg, 'Etcd.WatchCreateRequest'},
      [#{name => key, fnum => 1, rnum => 2, type => bytes,
	 occurrence => optional, opts => []},
       #{name => range_end, fnum => 2, rnum => 3,
	 type => bytes, occurrence => optional, opts => []},
       #{name => start_revision, fnum => 3, rnum => 4,
	 type => int64, occurrence => optional, opts => []},
       #{name => progress_notify, fnum => 4, rnum => 5,
	 type => bool, occurrence => optional, opts => []},
       #{name => filters, fnum => 5, rnum => 6,
	 type => {enum, 'Etcd.WatchCreateRequest.FilterType'},
	 occurrence => repeated, opts => [packed]},
       #{name => prev_kv, fnum => 6, rnum => 7, type => bool,
	 occurrence => optional, opts => []},
       #{name => watch_id, fnum => 7, rnum => 8, type => int64,
	 occurrence => optional, opts => []},
       #{name => fragment, fnum => 8, rnum => 9, type => bool,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.WatchCancelRequest'},
      [#{name => watch_id, fnum => 1, rnum => 2,
	 type => int64, occurrence => optional, opts => []}]},
     {{msg, 'Etcd.WatchProgressRequest'}, []},
     {{msg, 'Etcd.WatchResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []},
       #{name => watch_id, fnum => 2, rnum => 3, type => int64,
	 occurrence => optional, opts => []},
       #{name => created, fnum => 3, rnum => 4, type => bool,
	 occurrence => optional, opts => []},
       #{name => canceled, fnum => 4, rnum => 5, type => bool,
	 occurrence => optional, opts => []},
       #{name => compact_revision, fnum => 5, rnum => 6,
	 type => int64, occurrence => optional, opts => []},
       #{name => cancel_reason, fnum => 6, rnum => 7,
	 type => string, occurrence => optional, opts => []},
       #{name => fragment, fnum => 7, rnum => 8, type => bool,
	 occurrence => optional, opts => []},
       #{name => events, fnum => 11, rnum => 9,
	 type => {msg, 'mvccpb.Event'}, occurrence => repeated,
	 opts => []}]},
     {{msg, 'Etcd.LeaseGrantRequest'},
      [#{name => 'TTL', fnum => 1, rnum => 2, type => int64,
	 occurrence => optional, opts => []},
       #{name => 'ID', fnum => 2, rnum => 3, type => int64,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.LeaseGrantResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []},
       #{name => 'ID', fnum => 2, rnum => 3, type => int64,
	 occurrence => optional, opts => []},
       #{name => 'TTL', fnum => 3, rnum => 4, type => int64,
	 occurrence => optional, opts => []},
       #{name => error, fnum => 4, rnum => 5, type => string,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.LeaseRevokeRequest'},
      [#{name => 'ID', fnum => 1, rnum => 2, type => int64,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.LeaseRevokeResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.LeaseCheckpoint'},
      [#{name => 'ID', fnum => 1, rnum => 2, type => int64,
	 occurrence => optional, opts => []},
       #{name => remaining_TTL, fnum => 2, rnum => 3,
	 type => int64, occurrence => optional, opts => []}]},
     {{msg, 'Etcd.LeaseCheckpointRequest'},
      [#{name => checkpoints, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.LeaseCheckpoint'},
	 occurrence => repeated, opts => []}]},
     {{msg, 'Etcd.LeaseCheckpointResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.LeaseKeepAliveRequest'},
      [#{name => 'ID', fnum => 1, rnum => 2, type => int64,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.LeaseKeepAliveResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []},
       #{name => 'ID', fnum => 2, rnum => 3, type => int64,
	 occurrence => optional, opts => []},
       #{name => 'TTL', fnum => 3, rnum => 4, type => int64,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.LeaseTimeToLiveRequest'},
      [#{name => 'ID', fnum => 1, rnum => 2, type => int64,
	 occurrence => optional, opts => []},
       #{name => keys, fnum => 2, rnum => 3, type => bool,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.LeaseTimeToLiveResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []},
       #{name => 'ID', fnum => 2, rnum => 3, type => int64,
	 occurrence => optional, opts => []},
       #{name => 'TTL', fnum => 3, rnum => 4, type => int64,
	 occurrence => optional, opts => []},
       #{name => grantedTTL, fnum => 4, rnum => 5,
	 type => int64, occurrence => optional, opts => []},
       #{name => keys, fnum => 5, rnum => 6, type => bytes,
	 occurrence => repeated, opts => []}]},
     {{msg, 'Etcd.LeaseLeasesRequest'}, []},
     {{msg, 'Etcd.LeaseStatus'},
      [#{name => 'ID', fnum => 1, rnum => 2, type => int64,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.LeaseLeasesResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []},
       #{name => leases, fnum => 2, rnum => 3,
	 type => {msg, 'Etcd.LeaseStatus'},
	 occurrence => repeated, opts => []}]},
     {{msg, 'Etcd.Member'},
      [#{name => 'ID', fnum => 1, rnum => 2, type => uint64,
	 occurrence => optional, opts => []},
       #{name => name, fnum => 2, rnum => 3, type => string,
	 occurrence => optional, opts => []},
       #{name => peerURLs, fnum => 3, rnum => 4,
	 type => string, occurrence => repeated, opts => []},
       #{name => clientURLs, fnum => 4, rnum => 5,
	 type => string, occurrence => repeated, opts => []},
       #{name => isLearner, fnum => 5, rnum => 6, type => bool,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.MemberAddRequest'},
      [#{name => peerURLs, fnum => 1, rnum => 2,
	 type => string, occurrence => repeated, opts => []},
       #{name => isLearner, fnum => 2, rnum => 3, type => bool,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.MemberAddResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []},
       #{name => member, fnum => 2, rnum => 3,
	 type => {msg, 'Etcd.Member'}, occurrence => optional,
	 opts => []},
       #{name => members, fnum => 3, rnum => 4,
	 type => {msg, 'Etcd.Member'}, occurrence => repeated,
	 opts => []}]},
     {{msg, 'Etcd.MemberRemoveRequest'},
      [#{name => 'ID', fnum => 1, rnum => 2, type => uint64,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.MemberRemoveResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []},
       #{name => members, fnum => 2, rnum => 3,
	 type => {msg, 'Etcd.Member'}, occurrence => repeated,
	 opts => []}]},
     {{msg, 'Etcd.MemberUpdateRequest'},
      [#{name => 'ID', fnum => 1, rnum => 2, type => uint64,
	 occurrence => optional, opts => []},
       #{name => peerURLs, fnum => 2, rnum => 3,
	 type => string, occurrence => repeated, opts => []}]},
     {{msg, 'Etcd.MemberUpdateResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []},
       #{name => members, fnum => 2, rnum => 3,
	 type => {msg, 'Etcd.Member'}, occurrence => repeated,
	 opts => []}]},
     {{msg, 'Etcd.MemberListRequest'}, []},
     {{msg, 'Etcd.MemberListResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []},
       #{name => members, fnum => 2, rnum => 3,
	 type => {msg, 'Etcd.Member'}, occurrence => repeated,
	 opts => []}]},
     {{msg, 'Etcd.MemberPromoteRequest'},
      [#{name => 'ID', fnum => 1, rnum => 2, type => uint64,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.MemberPromoteResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []},
       #{name => members, fnum => 2, rnum => 3,
	 type => {msg, 'Etcd.Member'}, occurrence => repeated,
	 opts => []}]},
     {{msg, 'Etcd.DefragmentRequest'}, []},
     {{msg, 'Etcd.DefragmentResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.MoveLeaderRequest'},
      [#{name => targetID, fnum => 1, rnum => 2,
	 type => uint64, occurrence => optional, opts => []}]},
     {{msg, 'Etcd.MoveLeaderResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.AlarmRequest'},
      [#{name => action, fnum => 1, rnum => 2,
	 type => {enum, 'Etcd.AlarmRequest.AlarmAction'},
	 occurrence => optional, opts => []},
       #{name => memberID, fnum => 2, rnum => 3,
	 type => uint64, occurrence => optional, opts => []},
       #{name => alarm, fnum => 3, rnum => 4,
	 type => {enum, 'Etcd.AlarmType'},
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.AlarmMember'},
      [#{name => memberID, fnum => 1, rnum => 2,
	 type => uint64, occurrence => optional, opts => []},
       #{name => alarm, fnum => 2, rnum => 3,
	 type => {enum, 'Etcd.AlarmType'},
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.AlarmResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []},
       #{name => alarms, fnum => 2, rnum => 3,
	 type => {msg, 'Etcd.AlarmMember'},
	 occurrence => repeated, opts => []}]},
     {{msg, 'Etcd.StatusRequest'}, []},
     {{msg, 'Etcd.StatusResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []},
       #{name => version, fnum => 2, rnum => 3, type => string,
	 occurrence => optional, opts => []},
       #{name => dbSize, fnum => 3, rnum => 4, type => int64,
	 occurrence => optional, opts => []},
       #{name => leader, fnum => 4, rnum => 5, type => uint64,
	 occurrence => optional, opts => []},
       #{name => raftIndex, fnum => 5, rnum => 6,
	 type => uint64, occurrence => optional, opts => []},
       #{name => raftTerm, fnum => 6, rnum => 7,
	 type => uint64, occurrence => optional, opts => []},
       #{name => raftAppliedIndex, fnum => 7, rnum => 8,
	 type => uint64, occurrence => optional, opts => []},
       #{name => errors, fnum => 8, rnum => 9, type => string,
	 occurrence => repeated, opts => []},
       #{name => dbSizeInUse, fnum => 9, rnum => 10,
	 type => int64, occurrence => optional, opts => []},
       #{name => isLearner, fnum => 10, rnum => 11,
	 type => bool, occurrence => optional, opts => []}]},
     {{msg, 'Etcd.AuthEnableRequest'}, []},
     {{msg, 'Etcd.AuthDisableRequest'}, []},
     {{msg, 'Etcd.AuthenticateRequest'},
      [#{name => name, fnum => 1, rnum => 2, type => string,
	 occurrence => optional, opts => []},
       #{name => password, fnum => 2, rnum => 3,
	 type => string, occurrence => optional, opts => []}]},
     {{msg, 'Etcd.AuthUserAddRequest'},
      [#{name => name, fnum => 1, rnum => 2, type => string,
	 occurrence => optional, opts => []},
       #{name => password, fnum => 2, rnum => 3,
	 type => string, occurrence => optional, opts => []},
       #{name => options, fnum => 3, rnum => 4,
	 type => {msg, 'authpb.UserAddOptions'},
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.AuthUserGetRequest'},
      [#{name => name, fnum => 1, rnum => 2, type => string,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.AuthUserDeleteRequest'},
      [#{name => name, fnum => 1, rnum => 2, type => string,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.AuthUserChangePasswordRequest'},
      [#{name => name, fnum => 1, rnum => 2, type => string,
	 occurrence => optional, opts => []},
       #{name => password, fnum => 2, rnum => 3,
	 type => string, occurrence => optional, opts => []}]},
     {{msg, 'Etcd.AuthUserGrantRoleRequest'},
      [#{name => user, fnum => 1, rnum => 2, type => string,
	 occurrence => optional, opts => []},
       #{name => role, fnum => 2, rnum => 3, type => string,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.AuthUserRevokeRoleRequest'},
      [#{name => name, fnum => 1, rnum => 2, type => string,
	 occurrence => optional, opts => []},
       #{name => role, fnum => 2, rnum => 3, type => string,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.AuthRoleAddRequest'},
      [#{name => name, fnum => 1, rnum => 2, type => string,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.AuthRoleGetRequest'},
      [#{name => role, fnum => 1, rnum => 2, type => string,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.AuthUserListRequest'}, []},
     {{msg, 'Etcd.AuthRoleListRequest'}, []},
     {{msg, 'Etcd.AuthRoleDeleteRequest'},
      [#{name => role, fnum => 1, rnum => 2, type => string,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.AuthRoleGrantPermissionRequest'},
      [#{name => name, fnum => 1, rnum => 2, type => string,
	 occurrence => optional, opts => []},
       #{name => perm, fnum => 2, rnum => 3,
	 type => {msg, 'authpb.Permission'},
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.AuthRoleRevokePermissionRequest'},
      [#{name => role, fnum => 1, rnum => 2, type => string,
	 occurrence => optional, opts => []},
       #{name => key, fnum => 2, rnum => 3, type => bytes,
	 occurrence => optional, opts => []},
       #{name => range_end, fnum => 3, rnum => 4,
	 type => bytes, occurrence => optional, opts => []}]},
     {{msg, 'Etcd.AuthEnableResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.AuthDisableResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.AuthenticateResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []},
       #{name => token, fnum => 2, rnum => 3, type => string,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.AuthUserAddResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.AuthUserGetResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []},
       #{name => roles, fnum => 2, rnum => 3, type => string,
	 occurrence => repeated, opts => []}]},
     {{msg, 'Etcd.AuthUserDeleteResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.AuthUserChangePasswordResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.AuthUserGrantRoleResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.AuthUserRevokeRoleResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.AuthRoleAddResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.AuthRoleGetResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []},
       #{name => perm, fnum => 2, rnum => 3,
	 type => {msg, 'authpb.Permission'},
	 occurrence => repeated, opts => []}]},
     {{msg, 'Etcd.AuthRoleListResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []},
       #{name => roles, fnum => 2, rnum => 3, type => string,
	 occurrence => repeated, opts => []}]},
     {{msg, 'Etcd.AuthUserListResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []},
       #{name => users, fnum => 2, rnum => 3, type => string,
	 occurrence => repeated, opts => []}]},
     {{msg, 'Etcd.AuthRoleDeleteResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.AuthRoleGrantPermissionResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.AuthRoleRevokePermissionResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.HealthCheckRequest'},
      [#{name => service, fnum => 1, rnum => 2,
	 type => string, occurrence => optional, opts => []}]},
     {{msg, 'Etcd.HealthCheckResponse'},
      [#{name => status, fnum => 1, rnum => 2,
	 type =>
	     {enum, 'Etcd.HealthCheckResponse.ServingStatus'},
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.LockRequest'},
      [#{name => name, fnum => 1, rnum => 2, type => bytes,
	 occurrence => optional, opts => []},
       #{name => lease, fnum => 2, rnum => 3, type => int64,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.LockResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []},
       #{name => key, fnum => 2, rnum => 3, type => bytes,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.UnlockRequest'},
      [#{name => key, fnum => 1, rnum => 2, type => bytes,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.UnlockResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.CampaignRequest'},
      [#{name => name, fnum => 1, rnum => 2, type => bytes,
	 occurrence => optional, opts => []},
       #{name => lease, fnum => 2, rnum => 3, type => int64,
	 occurrence => optional, opts => []},
       #{name => value, fnum => 3, rnum => 4, type => bytes,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.CampaignResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []},
       #{name => leader, fnum => 2, rnum => 3,
	 type => {msg, 'Etcd.LeaderKey'}, occurrence => optional,
	 opts => []}]},
     {{msg, 'Etcd.LeaderKey'},
      [#{name => name, fnum => 1, rnum => 2, type => bytes,
	 occurrence => optional, opts => []},
       #{name => key, fnum => 2, rnum => 3, type => bytes,
	 occurrence => optional, opts => []},
       #{name => rev, fnum => 3, rnum => 4, type => int64,
	 occurrence => optional, opts => []},
       #{name => lease, fnum => 4, rnum => 5, type => int64,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.LeaderRequest'},
      [#{name => name, fnum => 1, rnum => 2, type => bytes,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.LeaderResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []},
       #{name => kv, fnum => 2, rnum => 3,
	 type => {msg, 'mvccpb.KeyValue'},
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.ResignRequest'},
      [#{name => leader, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.LeaderKey'}, occurrence => optional,
	 opts => []}]},
     {{msg, 'Etcd.ResignResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.ProclaimRequest'},
      [#{name => leader, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.LeaderKey'}, occurrence => optional,
	 opts => []},
       #{name => value, fnum => 2, rnum => 3, type => bytes,
	 occurrence => optional, opts => []}]},
     {{msg, 'Etcd.ProclaimResponse'},
      [#{name => header, fnum => 1, rnum => 2,
	 type => {msg, 'Etcd.ResponseHeader'},
	 occurrence => optional, opts => []}]},
     {{msg, 'google.protobuf.FileDescriptorSet'},
      [#{name => file, fnum => 1, rnum => 2,
	 type => {msg, 'google.protobuf.FileDescriptorProto'},
	 occurrence => repeated, opts => []}]},
     {{msg, 'google.protobuf.FileDescriptorProto'},
      [#{name => name, fnum => 1, rnum => 2, type => string,
	 occurrence => optional, opts => []},
       #{name => package, fnum => 2, rnum => 3, type => string,
	 occurrence => optional, opts => []},
       #{name => dependency, fnum => 3, rnum => 4,
	 type => string, occurrence => repeated, opts => []},
       #{name => public_dependency, fnum => 10, rnum => 5,
	 type => int32, occurrence => repeated, opts => []},
       #{name => weak_dependency, fnum => 11, rnum => 6,
	 type => int32, occurrence => repeated, opts => []},
       #{name => message_type, fnum => 4, rnum => 7,
	 type => {msg, 'google.protobuf.DescriptorProto'},
	 occurrence => repeated, opts => []},
       #{name => enum_type, fnum => 5, rnum => 8,
	 type => {msg, 'google.protobuf.EnumDescriptorProto'},
	 occurrence => repeated, opts => []},
       #{name => service, fnum => 6, rnum => 9,
	 type => {msg, 'google.protobuf.ServiceDescriptorProto'},
	 occurrence => repeated, opts => []},
       #{name => extension, fnum => 7, rnum => 10,
	 type => {msg, 'google.protobuf.FieldDescriptorProto'},
	 occurrence => repeated, opts => []},
       #{name => options, fnum => 8, rnum => 11,
	 type => {msg, 'google.protobuf.FileOptions'},
	 occurrence => optional, opts => []},
       #{name => source_code_info, fnum => 9, rnum => 12,
	 type => {msg, 'google.protobuf.SourceCodeInfo'},
	 occurrence => optional, opts => []},
       #{name => syntax, fnum => 12, rnum => 13,
	 type => string, occurrence => optional, opts => []}]},
     {{msg,
       'google.protobuf.DescriptorProto.ExtensionRange'},
      [#{name => start, fnum => 1, rnum => 2, type => int32,
	 occurrence => optional, opts => []},
       #{name => 'end', fnum => 2, rnum => 3, type => int32,
	 occurrence => optional, opts => []}]},
     {{msg, 'google.protobuf.DescriptorProto.ReservedRange'},
      [#{name => start, fnum => 1, rnum => 2, type => int32,
	 occurrence => optional, opts => []},
       #{name => 'end', fnum => 2, rnum => 3, type => int32,
	 occurrence => optional, opts => []}]},
     {{msg, 'google.protobuf.DescriptorProto'},
      [#{name => name, fnum => 1, rnum => 2, type => string,
	 occurrence => optional, opts => []},
       #{name => field, fnum => 2, rnum => 3,
	 type => {msg, 'google.protobuf.FieldDescriptorProto'},
	 occurrence => repeated, opts => []},
       #{name => extension, fnum => 6, rnum => 4,
	 type => {msg, 'google.protobuf.FieldDescriptorProto'},
	 occurrence => repeated, opts => []},
       #{name => nested_type, fnum => 3, rnum => 5,
	 type => {msg, 'google.protobuf.DescriptorProto'},
	 occurrence => repeated, opts => []},
       #{name => enum_type, fnum => 4, rnum => 6,
	 type => {msg, 'google.protobuf.EnumDescriptorProto'},
	 occurrence => repeated, opts => []},
       #{name => extension_range, fnum => 5, rnum => 7,
	 type =>
	     {msg, 'google.protobuf.DescriptorProto.ExtensionRange'},
	 occurrence => repeated, opts => []},
       #{name => oneof_decl, fnum => 8, rnum => 8,
	 type => {msg, 'google.protobuf.OneofDescriptorProto'},
	 occurrence => repeated, opts => []},
       #{name => options, fnum => 7, rnum => 9,
	 type => {msg, 'google.protobuf.MessageOptions'},
	 occurrence => optional, opts => []},
       #{name => reserved_range, fnum => 9, rnum => 10,
	 type =>
	     {msg, 'google.protobuf.DescriptorProto.ReservedRange'},
	 occurrence => repeated, opts => []},
       #{name => reserved_name, fnum => 10, rnum => 11,
	 type => string, occurrence => repeated, opts => []}]},
     {{msg, 'google.protobuf.FieldDescriptorProto'},
      [#{name => name, fnum => 1, rnum => 2, type => string,
	 occurrence => optional, opts => []},
       #{name => number, fnum => 3, rnum => 3, type => int32,
	 occurrence => optional, opts => []},
       #{name => label, fnum => 4, rnum => 4,
	 type =>
	     {enum, 'google.protobuf.FieldDescriptorProto.Label'},
	 occurrence => optional, opts => []},
       #{name => type, fnum => 5, rnum => 5,
	 type =>
	     {enum, 'google.protobuf.FieldDescriptorProto.Type'},
	 occurrence => optional, opts => []},
       #{name => type_name, fnum => 6, rnum => 6,
	 type => string, occurrence => optional, opts => []},
       #{name => extendee, fnum => 2, rnum => 7,
	 type => string, occurrence => optional, opts => []},
       #{name => default_value, fnum => 7, rnum => 8,
	 type => string, occurrence => optional, opts => []},
       #{name => oneof_index, fnum => 9, rnum => 9,
	 type => int32, occurrence => optional, opts => []},
       #{name => json_name, fnum => 10, rnum => 10,
	 type => string, occurrence => optional, opts => []},
       #{name => options, fnum => 8, rnum => 11,
	 type => {msg, 'google.protobuf.FieldOptions'},
	 occurrence => optional, opts => []}]},
     {{msg, 'google.protobuf.OneofDescriptorProto'},
      [#{name => name, fnum => 1, rnum => 2, type => string,
	 occurrence => optional, opts => []}]},
     {{msg, 'google.protobuf.EnumDescriptorProto'},
      [#{name => name, fnum => 1, rnum => 2, type => string,
	 occurrence => optional, opts => []},
       #{name => value, fnum => 2, rnum => 3,
	 type =>
	     {msg, 'google.protobuf.EnumValueDescriptorProto'},
	 occurrence => repeated, opts => []},
       #{name => options, fnum => 3, rnum => 4,
	 type => {msg, 'google.protobuf.EnumOptions'},
	 occurrence => optional, opts => []}]},
     {{msg, 'google.protobuf.EnumValueDescriptorProto'},
      [#{name => name, fnum => 1, rnum => 2, type => string,
	 occurrence => optional, opts => []},
       #{name => number, fnum => 2, rnum => 3, type => int32,
	 occurrence => optional, opts => []},
       #{name => options, fnum => 3, rnum => 4,
	 type => {msg, 'google.protobuf.EnumValueOptions'},
	 occurrence => optional, opts => []}]},
     {{msg, 'google.protobuf.ServiceDescriptorProto'},
      [#{name => name, fnum => 1, rnum => 2, type => string,
	 occurrence => optional, opts => []},
       #{name => method, fnum => 2, rnum => 3,
	 type => {msg, 'google.protobuf.MethodDescriptorProto'},
	 occurrence => repeated, opts => []},
       #{name => options, fnum => 3, rnum => 4,
	 type => {msg, 'google.protobuf.ServiceOptions'},
	 occurrence => optional, opts => []}]},
     {{msg, 'google.protobuf.MethodDescriptorProto'},
      [#{name => name, fnum => 1, rnum => 2, type => string,
	 occurrence => optional, opts => []},
       #{name => input_type, fnum => 2, rnum => 3,
	 type => string, occurrence => optional, opts => []},
       #{name => output_type, fnum => 3, rnum => 4,
	 type => string, occurrence => optional, opts => []},
       #{name => options, fnum => 4, rnum => 5,
	 type => {msg, 'google.protobuf.MethodOptions'},
	 occurrence => optional, opts => []},
       #{name => client_streaming, fnum => 5, rnum => 6,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => server_streaming, fnum => 6, rnum => 7,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]}]},
     {{msg, 'google.protobuf.FileOptions'},
      [#{name => java_package, fnum => 1, rnum => 2,
	 type => string, occurrence => optional, opts => []},
       #{name => java_outer_classname, fnum => 8, rnum => 3,
	 type => string, occurrence => optional, opts => []},
       #{name => java_multiple_files, fnum => 10, rnum => 4,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => java_generate_equals_and_hash, fnum => 20,
	 rnum => 5, type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => java_string_check_utf8, fnum => 27, rnum => 6,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => optimize_for, fnum => 9, rnum => 7,
	 type =>
	     {enum, 'google.protobuf.FileOptions.OptimizeMode'},
	 occurrence => optional, opts => [{default, 'SPEED'}]},
       #{name => go_package, fnum => 11, rnum => 8,
	 type => string, occurrence => optional, opts => []},
       #{name => cc_generic_services, fnum => 16, rnum => 9,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => java_generic_services, fnum => 17, rnum => 10,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => py_generic_services, fnum => 18, rnum => 11,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => deprecated, fnum => 23, rnum => 12,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => cc_enable_arenas, fnum => 31, rnum => 13,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => objc_class_prefix, fnum => 36, rnum => 14,
	 type => string, occurrence => optional, opts => []},
       #{name => csharp_namespace, fnum => 37, rnum => 15,
	 type => string, occurrence => optional, opts => []},
       #{name => javanano_use_deprecated_package, fnum => 38,
	 rnum => 16, type => bool, occurrence => optional,
	 opts => [deprecated]},
       #{name => uninterpreted_option, fnum => 999, rnum => 17,
	 type => {msg, 'google.protobuf.UninterpretedOption'},
	 occurrence => repeated, opts => []},
       #{name => goproto_getters_all, fnum => 63001,
	 rnum => 18, type => bool, occurrence => optional,
	 opts => []},
       #{name => goproto_enum_prefix_all, fnum => 63002,
	 rnum => 19, type => bool, occurrence => optional,
	 opts => []},
       #{name => goproto_stringer_all, fnum => 63003,
	 rnum => 20, type => bool, occurrence => optional,
	 opts => []},
       #{name => verbose_equal_all, fnum => 63004, rnum => 21,
	 type => bool, occurrence => optional, opts => []},
       #{name => face_all, fnum => 63005, rnum => 22,
	 type => bool, occurrence => optional, opts => []},
       #{name => gostring_all, fnum => 63006, rnum => 23,
	 type => bool, occurrence => optional, opts => []},
       #{name => populate_all, fnum => 63007, rnum => 24,
	 type => bool, occurrence => optional, opts => []},
       #{name => stringer_all, fnum => 63008, rnum => 25,
	 type => bool, occurrence => optional, opts => []},
       #{name => onlyone_all, fnum => 63009, rnum => 26,
	 type => bool, occurrence => optional, opts => []},
       #{name => equal_all, fnum => 63013, rnum => 27,
	 type => bool, occurrence => optional, opts => []},
       #{name => description_all, fnum => 63014, rnum => 28,
	 type => bool, occurrence => optional, opts => []},
       #{name => testgen_all, fnum => 63015, rnum => 29,
	 type => bool, occurrence => optional, opts => []},
       #{name => benchgen_all, fnum => 63016, rnum => 30,
	 type => bool, occurrence => optional, opts => []},
       #{name => marshaler_all, fnum => 63017, rnum => 31,
	 type => bool, occurrence => optional, opts => []},
       #{name => unmarshaler_all, fnum => 63018, rnum => 32,
	 type => bool, occurrence => optional, opts => []},
       #{name => stable_marshaler_all, fnum => 63019,
	 rnum => 33, type => bool, occurrence => optional,
	 opts => []},
       #{name => sizer_all, fnum => 63020, rnum => 34,
	 type => bool, occurrence => optional, opts => []},
       #{name => goproto_enum_stringer_all, fnum => 63021,
	 rnum => 35, type => bool, occurrence => optional,
	 opts => []},
       #{name => enum_stringer_all, fnum => 63022, rnum => 36,
	 type => bool, occurrence => optional, opts => []},
       #{name => unsafe_marshaler_all, fnum => 63023,
	 rnum => 37, type => bool, occurrence => optional,
	 opts => []},
       #{name => unsafe_unmarshaler_all, fnum => 63024,
	 rnum => 38, type => bool, occurrence => optional,
	 opts => []},
       #{name => goproto_extensions_map_all, fnum => 63025,
	 rnum => 39, type => bool, occurrence => optional,
	 opts => []},
       #{name => goproto_unrecognized_all, fnum => 63026,
	 rnum => 40, type => bool, occurrence => optional,
	 opts => []},
       #{name => gogoproto_import, fnum => 63027, rnum => 41,
	 type => bool, occurrence => optional, opts => []},
       #{name => protosizer_all, fnum => 63028, rnum => 42,
	 type => bool, occurrence => optional, opts => []},
       #{name => compare_all, fnum => 63029, rnum => 43,
	 type => bool, occurrence => optional, opts => []}]},
     {{msg, 'google.protobuf.MessageOptions'},
      [#{name => message_set_wire_format, fnum => 1,
	 rnum => 2, type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => no_standard_descriptor_accessor, fnum => 2,
	 rnum => 3, type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => deprecated, fnum => 3, rnum => 4,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => map_entry, fnum => 7, rnum => 5, type => bool,
	 occurrence => optional, opts => []},
       #{name => uninterpreted_option, fnum => 999, rnum => 6,
	 type => {msg, 'google.protobuf.UninterpretedOption'},
	 occurrence => repeated, opts => []},
       #{name => goproto_getters, fnum => 64001, rnum => 7,
	 type => bool, occurrence => optional, opts => []},
       #{name => goproto_stringer, fnum => 64003, rnum => 8,
	 type => bool, occurrence => optional, opts => []},
       #{name => verbose_equal, fnum => 64004, rnum => 9,
	 type => bool, occurrence => optional, opts => []},
       #{name => face, fnum => 64005, rnum => 10, type => bool,
	 occurrence => optional, opts => []},
       #{name => gostring, fnum => 64006, rnum => 11,
	 type => bool, occurrence => optional, opts => []},
       #{name => populate, fnum => 64007, rnum => 12,
	 type => bool, occurrence => optional, opts => []},
       #{name => stringer, fnum => 67008, rnum => 13,
	 type => bool, occurrence => optional, opts => []},
       #{name => onlyone, fnum => 64009, rnum => 14,
	 type => bool, occurrence => optional, opts => []},
       #{name => equal, fnum => 64013, rnum => 15,
	 type => bool, occurrence => optional, opts => []},
       #{name => description, fnum => 64014, rnum => 16,
	 type => bool, occurrence => optional, opts => []},
       #{name => testgen, fnum => 64015, rnum => 17,
	 type => bool, occurrence => optional, opts => []},
       #{name => benchgen, fnum => 64016, rnum => 18,
	 type => bool, occurrence => optional, opts => []},
       #{name => marshaler, fnum => 64017, rnum => 19,
	 type => bool, occurrence => optional, opts => []},
       #{name => unmarshaler, fnum => 64018, rnum => 20,
	 type => bool, occurrence => optional, opts => []},
       #{name => stable_marshaler, fnum => 64019, rnum => 21,
	 type => bool, occurrence => optional, opts => []},
       #{name => sizer, fnum => 64020, rnum => 22,
	 type => bool, occurrence => optional, opts => []},
       #{name => unsafe_marshaler, fnum => 64023, rnum => 23,
	 type => bool, occurrence => optional, opts => []},
       #{name => unsafe_unmarshaler, fnum => 64024, rnum => 24,
	 type => bool, occurrence => optional, opts => []},
       #{name => goproto_extensions_map, fnum => 64025,
	 rnum => 25, type => bool, occurrence => optional,
	 opts => []},
       #{name => goproto_unrecognized, fnum => 64026,
	 rnum => 26, type => bool, occurrence => optional,
	 opts => []},
       #{name => protosizer, fnum => 64028, rnum => 27,
	 type => bool, occurrence => optional, opts => []},
       #{name => compare, fnum => 64029, rnum => 28,
	 type => bool, occurrence => optional, opts => []}]},
     {{msg, 'google.protobuf.FieldOptions'},
      [#{name => ctype, fnum => 1, rnum => 2,
	 type => {enum, 'google.protobuf.FieldOptions.CType'},
	 occurrence => optional, opts => [{default, 'STRING'}]},
       #{name => packed, fnum => 2, rnum => 3, type => bool,
	 occurrence => optional, opts => []},
       #{name => jstype, fnum => 6, rnum => 4,
	 type => {enum, 'google.protobuf.FieldOptions.JSType'},
	 occurrence => optional,
	 opts => [{default, 'JS_NORMAL'}]},
       #{name => lazy, fnum => 5, rnum => 5, type => bool,
	 occurrence => optional, opts => [{default, false}]},
       #{name => deprecated, fnum => 3, rnum => 6,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => weak, fnum => 10, rnum => 7, type => bool,
	 occurrence => optional, opts => [{default, false}]},
       #{name => uninterpreted_option, fnum => 999, rnum => 8,
	 type => {msg, 'google.protobuf.UninterpretedOption'},
	 occurrence => repeated, opts => []},
       #{name => nullable, fnum => 65001, rnum => 9,
	 type => bool, occurrence => optional, opts => []},
       #{name => embed, fnum => 65002, rnum => 10,
	 type => bool, occurrence => optional, opts => []},
       #{name => customtype, fnum => 65003, rnum => 11,
	 type => string, occurrence => optional, opts => []},
       #{name => customname, fnum => 65004, rnum => 12,
	 type => string, occurrence => optional, opts => []},
       #{name => jsontag, fnum => 65005, rnum => 13,
	 type => string, occurrence => optional, opts => []},
       #{name => moretags, fnum => 65006, rnum => 14,
	 type => string, occurrence => optional, opts => []},
       #{name => casttype, fnum => 65007, rnum => 15,
	 type => string, occurrence => optional, opts => []},
       #{name => castkey, fnum => 65008, rnum => 16,
	 type => string, occurrence => optional, opts => []},
       #{name => castvalue, fnum => 65009, rnum => 17,
	 type => string, occurrence => optional, opts => []},
       #{name => stdtime, fnum => 65010, rnum => 18,
	 type => bool, occurrence => optional, opts => []},
       #{name => stdduration, fnum => 65011, rnum => 19,
	 type => bool, occurrence => optional, opts => []}]},
     {{msg, 'google.protobuf.EnumOptions'},
      [#{name => allow_alias, fnum => 2, rnum => 2,
	 type => bool, occurrence => optional, opts => []},
       #{name => deprecated, fnum => 3, rnum => 3,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => uninterpreted_option, fnum => 999, rnum => 4,
	 type => {msg, 'google.protobuf.UninterpretedOption'},
	 occurrence => repeated, opts => []},
       #{name => goproto_enum_prefix, fnum => 62001, rnum => 5,
	 type => bool, occurrence => optional, opts => []},
       #{name => goproto_enum_stringer, fnum => 62021,
	 rnum => 6, type => bool, occurrence => optional,
	 opts => []},
       #{name => enum_stringer, fnum => 62022, rnum => 7,
	 type => bool, occurrence => optional, opts => []},
       #{name => enum_customname, fnum => 62023, rnum => 8,
	 type => string, occurrence => optional, opts => []}]},
     {{msg, 'google.protobuf.EnumValueOptions'},
      [#{name => deprecated, fnum => 1, rnum => 2,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => uninterpreted_option, fnum => 999, rnum => 3,
	 type => {msg, 'google.protobuf.UninterpretedOption'},
	 occurrence => repeated, opts => []},
       #{name => enumvalue_customname, fnum => 66001,
	 rnum => 4, type => string, occurrence => optional,
	 opts => []}]},
     {{msg, 'google.protobuf.ServiceOptions'},
      [#{name => deprecated, fnum => 33, rnum => 2,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => uninterpreted_option, fnum => 999, rnum => 3,
	 type => {msg, 'google.protobuf.UninterpretedOption'},
	 occurrence => repeated, opts => []}]},
     {{msg, 'google.protobuf.MethodOptions'},
      [#{name => deprecated, fnum => 33, rnum => 2,
	 type => bool, occurrence => optional,
	 opts => [{default, false}]},
       #{name => uninterpreted_option, fnum => 999, rnum => 3,
	 type => {msg, 'google.protobuf.UninterpretedOption'},
	 occurrence => repeated, opts => []}]},
     {{msg, 'google.protobuf.UninterpretedOption.NamePart'},
      [#{name => name_part, fnum => 1, rnum => 2,
	 type => string, occurrence => required, opts => []},
       #{name => is_extension, fnum => 2, rnum => 3,
	 type => bool, occurrence => required, opts => []}]},
     {{msg, 'google.protobuf.UninterpretedOption'},
      [#{name => name, fnum => 2, rnum => 2,
	 type =>
	     {msg, 'google.protobuf.UninterpretedOption.NamePart'},
	 occurrence => repeated, opts => []},
       #{name => identifier_value, fnum => 3, rnum => 3,
	 type => string, occurrence => optional, opts => []},
       #{name => positive_int_value, fnum => 4, rnum => 4,
	 type => uint64, occurrence => optional, opts => []},
       #{name => negative_int_value, fnum => 5, rnum => 5,
	 type => int64, occurrence => optional, opts => []},
       #{name => double_value, fnum => 6, rnum => 6,
	 type => double, occurrence => optional, opts => []},
       #{name => string_value, fnum => 7, rnum => 7,
	 type => bytes, occurrence => optional, opts => []},
       #{name => aggregate_value, fnum => 8, rnum => 8,
	 type => string, occurrence => optional, opts => []}]},
     {{msg, 'google.protobuf.SourceCodeInfo.Location'},
      [#{name => path, fnum => 1, rnum => 2, type => int32,
	 occurrence => repeated, opts => [packed]},
       #{name => span, fnum => 2, rnum => 3, type => int32,
	 occurrence => repeated, opts => [packed]},
       #{name => leading_comments, fnum => 3, rnum => 4,
	 type => string, occurrence => optional, opts => []},
       #{name => trailing_comments, fnum => 4, rnum => 5,
	 type => string, occurrence => optional, opts => []},
       #{name => leading_detached_comments, fnum => 6,
	 rnum => 6, type => string, occurrence => repeated,
	 opts => []}]},
     {{msg, 'google.protobuf.SourceCodeInfo'},
      [#{name => location, fnum => 1, rnum => 2,
	 type =>
	     {msg, 'google.protobuf.SourceCodeInfo.Location'},
	 occurrence => repeated, opts => []}]},
     {{msg, 'google.protobuf.GeneratedCodeInfo.Annotation'},
      [#{name => path, fnum => 1, rnum => 2, type => int32,
	 occurrence => repeated, opts => [packed]},
       #{name => source_file, fnum => 2, rnum => 3,
	 type => string, occurrence => optional, opts => []},
       #{name => 'begin', fnum => 3, rnum => 4, type => int32,
	 occurrence => optional, opts => []},
       #{name => 'end', fnum => 4, rnum => 5, type => int32,
	 occurrence => optional, opts => []}]},
     {{msg, 'google.protobuf.GeneratedCodeInfo'},
      [#{name => annotation, fnum => 1, rnum => 2,
	 type =>
	     {msg, 'google.protobuf.GeneratedCodeInfo.Annotation'},
	 occurrence => repeated, opts => []}]},
     {{msg, 'mvccpb.KeyValue'},
      [#{name => key, fnum => 1, rnum => 2, type => bytes,
	 occurrence => optional, opts => []},
       #{name => create_revision, fnum => 2, rnum => 3,
	 type => int64, occurrence => optional, opts => []},
       #{name => mod_revision, fnum => 3, rnum => 4,
	 type => int64, occurrence => optional, opts => []},
       #{name => version, fnum => 4, rnum => 5, type => int64,
	 occurrence => optional, opts => []},
       #{name => value, fnum => 5, rnum => 6, type => bytes,
	 occurrence => optional, opts => []},
       #{name => lease, fnum => 6, rnum => 7, type => int64,
	 occurrence => optional, opts => []}]},
     {{msg, 'mvccpb.Event'},
      [#{name => type, fnum => 1, rnum => 2,
	 type => {enum, 'mvccpb.Event.EventType'},
	 occurrence => optional, opts => []},
       #{name => kv, fnum => 2, rnum => 3,
	 type => {msg, 'mvccpb.KeyValue'},
	 occurrence => optional, opts => []},
       #{name => prev_kv, fnum => 3, rnum => 4,
	 type => {msg, 'mvccpb.KeyValue'},
	 occurrence => optional, opts => []}]},
     {{msg, 'authpb.UserAddOptions'},
      [#{name => no_password, fnum => 1, rnum => 2,
	 type => bool, occurrence => optional, opts => []}]},
     {{msg, 'authpb.User'},
      [#{name => name, fnum => 1, rnum => 2, type => bytes,
	 occurrence => optional, opts => []},
       #{name => password, fnum => 2, rnum => 3, type => bytes,
	 occurrence => optional, opts => []},
       #{name => roles, fnum => 3, rnum => 4, type => string,
	 occurrence => repeated, opts => []},
       #{name => options, fnum => 4, rnum => 5,
	 type => {msg, 'authpb.UserAddOptions'},
	 occurrence => optional, opts => []}]},
     {{msg, 'authpb.Permission'},
      [#{name => permType, fnum => 1, rnum => 2,
	 type => {enum, 'authpb.Permission.Type'},
	 occurrence => optional, opts => []},
       #{name => key, fnum => 2, rnum => 3, type => bytes,
	 occurrence => optional, opts => []},
       #{name => range_end, fnum => 3, rnum => 4,
	 type => bytes, occurrence => optional, opts => []}]},
     {{msg, 'authpb.Role'},
      [#{name => name, fnum => 1, rnum => 2, type => bytes,
	 occurrence => optional, opts => []},
       #{name => keyPermission, fnum => 2, rnum => 3,
	 type => {msg, 'authpb.Permission'},
	 occurrence => repeated, opts => []}]}].


get_msg_names() ->
    ['Etcd.ResponseHeader', 'Etcd.RangeRequest',
     'Etcd.RangeResponse', 'Etcd.PutRequest',
     'Etcd.PutResponse', 'Etcd.DeleteRangeRequest',
     'Etcd.DeleteRangeResponse', 'Etcd.RequestOp',
     'Etcd.ResponseOp', 'Etcd.Compare', 'Etcd.TxnRequest',
     'Etcd.TxnResponse', 'Etcd.CompactionRequest',
     'Etcd.CompactionResponse', 'Etcd.HashRequest',
     'Etcd.HashKVRequest', 'Etcd.HashKVResponse',
     'Etcd.HashResponse', 'Etcd.SnapshotRequest',
     'Etcd.SnapshotResponse', 'Etcd.WatchRequest',
     'Etcd.WatchCreateRequest', 'Etcd.WatchCancelRequest',
     'Etcd.WatchProgressRequest', 'Etcd.WatchResponse',
     'Etcd.LeaseGrantRequest', 'Etcd.LeaseGrantResponse',
     'Etcd.LeaseRevokeRequest', 'Etcd.LeaseRevokeResponse',
     'Etcd.LeaseCheckpoint', 'Etcd.LeaseCheckpointRequest',
     'Etcd.LeaseCheckpointResponse',
     'Etcd.LeaseKeepAliveRequest',
     'Etcd.LeaseKeepAliveResponse',
     'Etcd.LeaseTimeToLiveRequest',
     'Etcd.LeaseTimeToLiveResponse',
     'Etcd.LeaseLeasesRequest', 'Etcd.LeaseStatus',
     'Etcd.LeaseLeasesResponse', 'Etcd.Member',
     'Etcd.MemberAddRequest', 'Etcd.MemberAddResponse',
     'Etcd.MemberRemoveRequest', 'Etcd.MemberRemoveResponse',
     'Etcd.MemberUpdateRequest', 'Etcd.MemberUpdateResponse',
     'Etcd.MemberListRequest', 'Etcd.MemberListResponse',
     'Etcd.MemberPromoteRequest',
     'Etcd.MemberPromoteResponse', 'Etcd.DefragmentRequest',
     'Etcd.DefragmentResponse', 'Etcd.MoveLeaderRequest',
     'Etcd.MoveLeaderResponse', 'Etcd.AlarmRequest',
     'Etcd.AlarmMember', 'Etcd.AlarmResponse',
     'Etcd.StatusRequest', 'Etcd.StatusResponse',
     'Etcd.AuthEnableRequest', 'Etcd.AuthDisableRequest',
     'Etcd.AuthenticateRequest', 'Etcd.AuthUserAddRequest',
     'Etcd.AuthUserGetRequest', 'Etcd.AuthUserDeleteRequest',
     'Etcd.AuthUserChangePasswordRequest',
     'Etcd.AuthUserGrantRoleRequest',
     'Etcd.AuthUserRevokeRoleRequest',
     'Etcd.AuthRoleAddRequest', 'Etcd.AuthRoleGetRequest',
     'Etcd.AuthUserListRequest', 'Etcd.AuthRoleListRequest',
     'Etcd.AuthRoleDeleteRequest',
     'Etcd.AuthRoleGrantPermissionRequest',
     'Etcd.AuthRoleRevokePermissionRequest',
     'Etcd.AuthEnableResponse', 'Etcd.AuthDisableResponse',
     'Etcd.AuthenticateResponse', 'Etcd.AuthUserAddResponse',
     'Etcd.AuthUserGetResponse',
     'Etcd.AuthUserDeleteResponse',
     'Etcd.AuthUserChangePasswordResponse',
     'Etcd.AuthUserGrantRoleResponse',
     'Etcd.AuthUserRevokeRoleResponse',
     'Etcd.AuthRoleAddResponse', 'Etcd.AuthRoleGetResponse',
     'Etcd.AuthRoleListResponse',
     'Etcd.AuthUserListResponse',
     'Etcd.AuthRoleDeleteResponse',
     'Etcd.AuthRoleGrantPermissionResponse',
     'Etcd.AuthRoleRevokePermissionResponse',
     'Etcd.HealthCheckRequest', 'Etcd.HealthCheckResponse',
     'Etcd.LockRequest', 'Etcd.LockResponse',
     'Etcd.UnlockRequest', 'Etcd.UnlockResponse',
     'Etcd.CampaignRequest', 'Etcd.CampaignResponse',
     'Etcd.LeaderKey', 'Etcd.LeaderRequest',
     'Etcd.LeaderResponse', 'Etcd.ResignRequest',
     'Etcd.ResignResponse', 'Etcd.ProclaimRequest',
     'Etcd.ProclaimResponse',
     'google.protobuf.FileDescriptorSet',
     'google.protobuf.FileDescriptorProto',
     'google.protobuf.DescriptorProto.ExtensionRange',
     'google.protobuf.DescriptorProto.ReservedRange',
     'google.protobuf.DescriptorProto',
     'google.protobuf.FieldDescriptorProto',
     'google.protobuf.OneofDescriptorProto',
     'google.protobuf.EnumDescriptorProto',
     'google.protobuf.EnumValueDescriptorProto',
     'google.protobuf.ServiceDescriptorProto',
     'google.protobuf.MethodDescriptorProto',
     'google.protobuf.FileOptions',
     'google.protobuf.MessageOptions',
     'google.protobuf.FieldOptions',
     'google.protobuf.EnumOptions',
     'google.protobuf.EnumValueOptions',
     'google.protobuf.ServiceOptions',
     'google.protobuf.MethodOptions',
     'google.protobuf.UninterpretedOption.NamePart',
     'google.protobuf.UninterpretedOption',
     'google.protobuf.SourceCodeInfo.Location',
     'google.protobuf.SourceCodeInfo',
     'google.protobuf.GeneratedCodeInfo.Annotation',
     'google.protobuf.GeneratedCodeInfo', 'mvccpb.KeyValue',
     'mvccpb.Event', 'authpb.UserAddOptions', 'authpb.User',
     'authpb.Permission', 'authpb.Role'].


get_group_names() -> [].


get_msg_or_group_names() ->
    ['Etcd.ResponseHeader', 'Etcd.RangeRequest',
     'Etcd.RangeResponse', 'Etcd.PutRequest',
     'Etcd.PutResponse', 'Etcd.DeleteRangeRequest',
     'Etcd.DeleteRangeResponse', 'Etcd.RequestOp',
     'Etcd.ResponseOp', 'Etcd.Compare', 'Etcd.TxnRequest',
     'Etcd.TxnResponse', 'Etcd.CompactionRequest',
     'Etcd.CompactionResponse', 'Etcd.HashRequest',
     'Etcd.HashKVRequest', 'Etcd.HashKVResponse',
     'Etcd.HashResponse', 'Etcd.SnapshotRequest',
     'Etcd.SnapshotResponse', 'Etcd.WatchRequest',
     'Etcd.WatchCreateRequest', 'Etcd.WatchCancelRequest',
     'Etcd.WatchProgressRequest', 'Etcd.WatchResponse',
     'Etcd.LeaseGrantRequest', 'Etcd.LeaseGrantResponse',
     'Etcd.LeaseRevokeRequest', 'Etcd.LeaseRevokeResponse',
     'Etcd.LeaseCheckpoint', 'Etcd.LeaseCheckpointRequest',
     'Etcd.LeaseCheckpointResponse',
     'Etcd.LeaseKeepAliveRequest',
     'Etcd.LeaseKeepAliveResponse',
     'Etcd.LeaseTimeToLiveRequest',
     'Etcd.LeaseTimeToLiveResponse',
     'Etcd.LeaseLeasesRequest', 'Etcd.LeaseStatus',
     'Etcd.LeaseLeasesResponse', 'Etcd.Member',
     'Etcd.MemberAddRequest', 'Etcd.MemberAddResponse',
     'Etcd.MemberRemoveRequest', 'Etcd.MemberRemoveResponse',
     'Etcd.MemberUpdateRequest', 'Etcd.MemberUpdateResponse',
     'Etcd.MemberListRequest', 'Etcd.MemberListResponse',
     'Etcd.MemberPromoteRequest',
     'Etcd.MemberPromoteResponse', 'Etcd.DefragmentRequest',
     'Etcd.DefragmentResponse', 'Etcd.MoveLeaderRequest',
     'Etcd.MoveLeaderResponse', 'Etcd.AlarmRequest',
     'Etcd.AlarmMember', 'Etcd.AlarmResponse',
     'Etcd.StatusRequest', 'Etcd.StatusResponse',
     'Etcd.AuthEnableRequest', 'Etcd.AuthDisableRequest',
     'Etcd.AuthenticateRequest', 'Etcd.AuthUserAddRequest',
     'Etcd.AuthUserGetRequest', 'Etcd.AuthUserDeleteRequest',
     'Etcd.AuthUserChangePasswordRequest',
     'Etcd.AuthUserGrantRoleRequest',
     'Etcd.AuthUserRevokeRoleRequest',
     'Etcd.AuthRoleAddRequest', 'Etcd.AuthRoleGetRequest',
     'Etcd.AuthUserListRequest', 'Etcd.AuthRoleListRequest',
     'Etcd.AuthRoleDeleteRequest',
     'Etcd.AuthRoleGrantPermissionRequest',
     'Etcd.AuthRoleRevokePermissionRequest',
     'Etcd.AuthEnableResponse', 'Etcd.AuthDisableResponse',
     'Etcd.AuthenticateResponse', 'Etcd.AuthUserAddResponse',
     'Etcd.AuthUserGetResponse',
     'Etcd.AuthUserDeleteResponse',
     'Etcd.AuthUserChangePasswordResponse',
     'Etcd.AuthUserGrantRoleResponse',
     'Etcd.AuthUserRevokeRoleResponse',
     'Etcd.AuthRoleAddResponse', 'Etcd.AuthRoleGetResponse',
     'Etcd.AuthRoleListResponse',
     'Etcd.AuthUserListResponse',
     'Etcd.AuthRoleDeleteResponse',
     'Etcd.AuthRoleGrantPermissionResponse',
     'Etcd.AuthRoleRevokePermissionResponse',
     'Etcd.HealthCheckRequest', 'Etcd.HealthCheckResponse',
     'Etcd.LockRequest', 'Etcd.LockResponse',
     'Etcd.UnlockRequest', 'Etcd.UnlockResponse',
     'Etcd.CampaignRequest', 'Etcd.CampaignResponse',
     'Etcd.LeaderKey', 'Etcd.LeaderRequest',
     'Etcd.LeaderResponse', 'Etcd.ResignRequest',
     'Etcd.ResignResponse', 'Etcd.ProclaimRequest',
     'Etcd.ProclaimResponse',
     'google.protobuf.FileDescriptorSet',
     'google.protobuf.FileDescriptorProto',
     'google.protobuf.DescriptorProto.ExtensionRange',
     'google.protobuf.DescriptorProto.ReservedRange',
     'google.protobuf.DescriptorProto',
     'google.protobuf.FieldDescriptorProto',
     'google.protobuf.OneofDescriptorProto',
     'google.protobuf.EnumDescriptorProto',
     'google.protobuf.EnumValueDescriptorProto',
     'google.protobuf.ServiceDescriptorProto',
     'google.protobuf.MethodDescriptorProto',
     'google.protobuf.FileOptions',
     'google.protobuf.MessageOptions',
     'google.protobuf.FieldOptions',
     'google.protobuf.EnumOptions',
     'google.protobuf.EnumValueOptions',
     'google.protobuf.ServiceOptions',
     'google.protobuf.MethodOptions',
     'google.protobuf.UninterpretedOption.NamePart',
     'google.protobuf.UninterpretedOption',
     'google.protobuf.SourceCodeInfo.Location',
     'google.protobuf.SourceCodeInfo',
     'google.protobuf.GeneratedCodeInfo.Annotation',
     'google.protobuf.GeneratedCodeInfo', 'mvccpb.KeyValue',
     'mvccpb.Event', 'authpb.UserAddOptions', 'authpb.User',
     'authpb.Permission', 'authpb.Role'].


get_enum_names() ->
    ['Etcd.RangeRequest.SortOrder',
     'Etcd.RangeRequest.SortTarget',
     'Etcd.Compare.CompareResult',
     'Etcd.Compare.CompareTarget',
     'Etcd.WatchCreateRequest.FilterType', 'Etcd.AlarmType',
     'Etcd.AlarmRequest.AlarmAction',
     'Etcd.HealthCheckResponse.ServingStatus',
     'google.protobuf.FieldDescriptorProto.Type',
     'google.protobuf.FieldDescriptorProto.Label',
     'google.protobuf.FileOptions.OptimizeMode',
     'google.protobuf.FieldOptions.CType',
     'google.protobuf.FieldOptions.JSType',
     'mvccpb.Event.EventType', 'authpb.Permission.Type'].


fetch_msg_def(MsgName) ->
    case find_msg_def(MsgName) of
      Fs when is_list(Fs) -> Fs;
      error -> erlang:error({no_such_msg, MsgName})
    end.


fetch_enum_def(EnumName) ->
    case find_enum_def(EnumName) of
      Es when is_list(Es) -> Es;
      error -> erlang:error({no_such_enum, EnumName})
    end.


find_msg_def('Etcd.ResponseHeader') ->
    [#{name => cluster_id, fnum => 1, rnum => 2,
       type => uint64, occurrence => optional, opts => []},
     #{name => member_id, fnum => 2, rnum => 3,
       type => uint64, occurrence => optional, opts => []},
     #{name => revision, fnum => 3, rnum => 4, type => int64,
       occurrence => optional, opts => []},
     #{name => raft_term, fnum => 4, rnum => 5,
       type => uint64, occurrence => optional, opts => []}];
find_msg_def('Etcd.RangeRequest') ->
    [#{name => key, fnum => 1, rnum => 2, type => bytes,
       occurrence => optional, opts => []},
     #{name => range_end, fnum => 2, rnum => 3,
       type => bytes, occurrence => optional, opts => []},
     #{name => limit, fnum => 3, rnum => 4, type => int64,
       occurrence => optional, opts => []},
     #{name => revision, fnum => 4, rnum => 5, type => int64,
       occurrence => optional, opts => []},
     #{name => sort_order, fnum => 5, rnum => 6,
       type => {enum, 'Etcd.RangeRequest.SortOrder'},
       occurrence => optional, opts => []},
     #{name => sort_target, fnum => 6, rnum => 7,
       type => {enum, 'Etcd.RangeRequest.SortTarget'},
       occurrence => optional, opts => []},
     #{name => serializable, fnum => 7, rnum => 8,
       type => bool, occurrence => optional, opts => []},
     #{name => keys_only, fnum => 8, rnum => 9, type => bool,
       occurrence => optional, opts => []},
     #{name => count_only, fnum => 9, rnum => 10,
       type => bool, occurrence => optional, opts => []},
     #{name => min_mod_revision, fnum => 10, rnum => 11,
       type => int64, occurrence => optional, opts => []},
     #{name => max_mod_revision, fnum => 11, rnum => 12,
       type => int64, occurrence => optional, opts => []},
     #{name => min_create_revision, fnum => 12, rnum => 13,
       type => int64, occurrence => optional, opts => []},
     #{name => max_create_revision, fnum => 13, rnum => 14,
       type => int64, occurrence => optional, opts => []}];
find_msg_def('Etcd.RangeResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []},
     #{name => kvs, fnum => 2, rnum => 3,
       type => {msg, 'mvccpb.KeyValue'},
       occurrence => repeated, opts => []},
     #{name => more, fnum => 3, rnum => 4, type => bool,
       occurrence => optional, opts => []},
     #{name => count, fnum => 4, rnum => 5, type => int64,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.PutRequest') ->
    [#{name => key, fnum => 1, rnum => 2, type => bytes,
       occurrence => optional, opts => []},
     #{name => value, fnum => 2, rnum => 3, type => bytes,
       occurrence => optional, opts => []},
     #{name => lease, fnum => 3, rnum => 4, type => int64,
       occurrence => optional, opts => []},
     #{name => prev_kv, fnum => 4, rnum => 5, type => bool,
       occurrence => optional, opts => []},
     #{name => ignore_value, fnum => 5, rnum => 6,
       type => bool, occurrence => optional, opts => []},
     #{name => ignore_lease, fnum => 6, rnum => 7,
       type => bool, occurrence => optional, opts => []}];
find_msg_def('Etcd.PutResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []},
     #{name => prev_kv, fnum => 2, rnum => 3,
       type => {msg, 'mvccpb.KeyValue'},
       occurrence => optional, opts => []}];
find_msg_def('Etcd.DeleteRangeRequest') ->
    [#{name => key, fnum => 1, rnum => 2, type => bytes,
       occurrence => optional, opts => []},
     #{name => range_end, fnum => 2, rnum => 3,
       type => bytes, occurrence => optional, opts => []},
     #{name => prev_kv, fnum => 3, rnum => 4, type => bool,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.DeleteRangeResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []},
     #{name => deleted, fnum => 2, rnum => 3, type => int64,
       occurrence => optional, opts => []},
     #{name => prev_kvs, fnum => 3, rnum => 4,
       type => {msg, 'mvccpb.KeyValue'},
       occurrence => repeated, opts => []}];
find_msg_def('Etcd.RequestOp') ->
    [#{name => request, rnum => 2,
       fields =>
	   [#{name => request_range, fnum => 1, rnum => 2,
	      type => {msg, 'Etcd.RangeRequest'},
	      occurrence => optional, opts => []},
	    #{name => request_put, fnum => 2, rnum => 2,
	      type => {msg, 'Etcd.PutRequest'},
	      occurrence => optional, opts => []},
	    #{name => request_delete_range, fnum => 3, rnum => 2,
	      type => {msg, 'Etcd.DeleteRangeRequest'},
	      occurrence => optional, opts => []},
	    #{name => request_txn, fnum => 4, rnum => 2,
	      type => {msg, 'Etcd.TxnRequest'},
	      occurrence => optional, opts => []}]}];
find_msg_def('Etcd.ResponseOp') ->
    [#{name => response, rnum => 2,
       fields =>
	   [#{name => response_range, fnum => 1, rnum => 2,
	      type => {msg, 'Etcd.RangeResponse'},
	      occurrence => optional, opts => []},
	    #{name => response_put, fnum => 2, rnum => 2,
	      type => {msg, 'Etcd.PutResponse'},
	      occurrence => optional, opts => []},
	    #{name => response_delete_range, fnum => 3, rnum => 2,
	      type => {msg, 'Etcd.DeleteRangeResponse'},
	      occurrence => optional, opts => []},
	    #{name => response_txn, fnum => 4, rnum => 2,
	      type => {msg, 'Etcd.TxnResponse'},
	      occurrence => optional, opts => []}]}];
find_msg_def('Etcd.Compare') ->
    [#{name => result, fnum => 1, rnum => 2,
       type => {enum, 'Etcd.Compare.CompareResult'},
       occurrence => optional, opts => []},
     #{name => target, fnum => 2, rnum => 3,
       type => {enum, 'Etcd.Compare.CompareTarget'},
       occurrence => optional, opts => []},
     #{name => key, fnum => 3, rnum => 4, type => bytes,
       occurrence => optional, opts => []},
     #{name => target_union, rnum => 5,
       fields =>
	   [#{name => version, fnum => 4, rnum => 5, type => int64,
	      occurrence => optional, opts => []},
	    #{name => create_revision, fnum => 5, rnum => 5,
	      type => int64, occurrence => optional, opts => []},
	    #{name => mod_revision, fnum => 6, rnum => 5,
	      type => int64, occurrence => optional, opts => []},
	    #{name => value, fnum => 7, rnum => 5, type => bytes,
	      occurrence => optional, opts => []},
	    #{name => lease, fnum => 8, rnum => 5, type => int64,
	      occurrence => optional, opts => []}]},
     #{name => range_end, fnum => 64, rnum => 6,
       type => bytes, occurrence => optional, opts => []}];
find_msg_def('Etcd.TxnRequest') ->
    [#{name => compare, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.Compare'}, occurrence => repeated,
       opts => []},
     #{name => success, fnum => 2, rnum => 3,
       type => {msg, 'Etcd.RequestOp'}, occurrence => repeated,
       opts => []},
     #{name => failure, fnum => 3, rnum => 4,
       type => {msg, 'Etcd.RequestOp'}, occurrence => repeated,
       opts => []}];
find_msg_def('Etcd.TxnResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []},
     #{name => succeeded, fnum => 2, rnum => 3, type => bool,
       occurrence => optional, opts => []},
     #{name => responses, fnum => 3, rnum => 4,
       type => {msg, 'Etcd.ResponseOp'},
       occurrence => repeated, opts => []}];
find_msg_def('Etcd.CompactionRequest') ->
    [#{name => revision, fnum => 1, rnum => 2,
       type => int64, occurrence => optional, opts => []},
     #{name => physical, fnum => 2, rnum => 3, type => bool,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.CompactionResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []}];
find_msg_def('Etcd.HashRequest') -> [];
find_msg_def('Etcd.HashKVRequest') ->
    [#{name => revision, fnum => 1, rnum => 2,
       type => int64, occurrence => optional, opts => []}];
find_msg_def('Etcd.HashKVResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []},
     #{name => hash, fnum => 2, rnum => 3, type => uint32,
       occurrence => optional, opts => []},
     #{name => compact_revision, fnum => 3, rnum => 4,
       type => int64, occurrence => optional, opts => []}];
find_msg_def('Etcd.HashResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []},
     #{name => hash, fnum => 2, rnum => 3, type => uint32,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.SnapshotRequest') -> [];
find_msg_def('Etcd.SnapshotResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []},
     #{name => remaining_bytes, fnum => 2, rnum => 3,
       type => uint64, occurrence => optional, opts => []},
     #{name => blob, fnum => 3, rnum => 4, type => bytes,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.WatchRequest') ->
    [#{name => request_union, rnum => 2,
       fields =>
	   [#{name => create_request, fnum => 1, rnum => 2,
	      type => {msg, 'Etcd.WatchCreateRequest'},
	      occurrence => optional, opts => []},
	    #{name => cancel_request, fnum => 2, rnum => 2,
	      type => {msg, 'Etcd.WatchCancelRequest'},
	      occurrence => optional, opts => []},
	    #{name => progress_request, fnum => 3, rnum => 2,
	      type => {msg, 'Etcd.WatchProgressRequest'},
	      occurrence => optional, opts => []}]}];
find_msg_def('Etcd.WatchCreateRequest') ->
    [#{name => key, fnum => 1, rnum => 2, type => bytes,
       occurrence => optional, opts => []},
     #{name => range_end, fnum => 2, rnum => 3,
       type => bytes, occurrence => optional, opts => []},
     #{name => start_revision, fnum => 3, rnum => 4,
       type => int64, occurrence => optional, opts => []},
     #{name => progress_notify, fnum => 4, rnum => 5,
       type => bool, occurrence => optional, opts => []},
     #{name => filters, fnum => 5, rnum => 6,
       type => {enum, 'Etcd.WatchCreateRequest.FilterType'},
       occurrence => repeated, opts => [packed]},
     #{name => prev_kv, fnum => 6, rnum => 7, type => bool,
       occurrence => optional, opts => []},
     #{name => watch_id, fnum => 7, rnum => 8, type => int64,
       occurrence => optional, opts => []},
     #{name => fragment, fnum => 8, rnum => 9, type => bool,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.WatchCancelRequest') ->
    [#{name => watch_id, fnum => 1, rnum => 2,
       type => int64, occurrence => optional, opts => []}];
find_msg_def('Etcd.WatchProgressRequest') -> [];
find_msg_def('Etcd.WatchResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []},
     #{name => watch_id, fnum => 2, rnum => 3, type => int64,
       occurrence => optional, opts => []},
     #{name => created, fnum => 3, rnum => 4, type => bool,
       occurrence => optional, opts => []},
     #{name => canceled, fnum => 4, rnum => 5, type => bool,
       occurrence => optional, opts => []},
     #{name => compact_revision, fnum => 5, rnum => 6,
       type => int64, occurrence => optional, opts => []},
     #{name => cancel_reason, fnum => 6, rnum => 7,
       type => string, occurrence => optional, opts => []},
     #{name => fragment, fnum => 7, rnum => 8, type => bool,
       occurrence => optional, opts => []},
     #{name => events, fnum => 11, rnum => 9,
       type => {msg, 'mvccpb.Event'}, occurrence => repeated,
       opts => []}];
find_msg_def('Etcd.LeaseGrantRequest') ->
    [#{name => 'TTL', fnum => 1, rnum => 2, type => int64,
       occurrence => optional, opts => []},
     #{name => 'ID', fnum => 2, rnum => 3, type => int64,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.LeaseGrantResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []},
     #{name => 'ID', fnum => 2, rnum => 3, type => int64,
       occurrence => optional, opts => []},
     #{name => 'TTL', fnum => 3, rnum => 4, type => int64,
       occurrence => optional, opts => []},
     #{name => error, fnum => 4, rnum => 5, type => string,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.LeaseRevokeRequest') ->
    [#{name => 'ID', fnum => 1, rnum => 2, type => int64,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.LeaseRevokeResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []}];
find_msg_def('Etcd.LeaseCheckpoint') ->
    [#{name => 'ID', fnum => 1, rnum => 2, type => int64,
       occurrence => optional, opts => []},
     #{name => remaining_TTL, fnum => 2, rnum => 3,
       type => int64, occurrence => optional, opts => []}];
find_msg_def('Etcd.LeaseCheckpointRequest') ->
    [#{name => checkpoints, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.LeaseCheckpoint'},
       occurrence => repeated, opts => []}];
find_msg_def('Etcd.LeaseCheckpointResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []}];
find_msg_def('Etcd.LeaseKeepAliveRequest') ->
    [#{name => 'ID', fnum => 1, rnum => 2, type => int64,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.LeaseKeepAliveResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []},
     #{name => 'ID', fnum => 2, rnum => 3, type => int64,
       occurrence => optional, opts => []},
     #{name => 'TTL', fnum => 3, rnum => 4, type => int64,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.LeaseTimeToLiveRequest') ->
    [#{name => 'ID', fnum => 1, rnum => 2, type => int64,
       occurrence => optional, opts => []},
     #{name => keys, fnum => 2, rnum => 3, type => bool,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.LeaseTimeToLiveResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []},
     #{name => 'ID', fnum => 2, rnum => 3, type => int64,
       occurrence => optional, opts => []},
     #{name => 'TTL', fnum => 3, rnum => 4, type => int64,
       occurrence => optional, opts => []},
     #{name => grantedTTL, fnum => 4, rnum => 5,
       type => int64, occurrence => optional, opts => []},
     #{name => keys, fnum => 5, rnum => 6, type => bytes,
       occurrence => repeated, opts => []}];
find_msg_def('Etcd.LeaseLeasesRequest') -> [];
find_msg_def('Etcd.LeaseStatus') ->
    [#{name => 'ID', fnum => 1, rnum => 2, type => int64,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.LeaseLeasesResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []},
     #{name => leases, fnum => 2, rnum => 3,
       type => {msg, 'Etcd.LeaseStatus'},
       occurrence => repeated, opts => []}];
find_msg_def('Etcd.Member') ->
    [#{name => 'ID', fnum => 1, rnum => 2, type => uint64,
       occurrence => optional, opts => []},
     #{name => name, fnum => 2, rnum => 3, type => string,
       occurrence => optional, opts => []},
     #{name => peerURLs, fnum => 3, rnum => 4,
       type => string, occurrence => repeated, opts => []},
     #{name => clientURLs, fnum => 4, rnum => 5,
       type => string, occurrence => repeated, opts => []},
     #{name => isLearner, fnum => 5, rnum => 6, type => bool,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.MemberAddRequest') ->
    [#{name => peerURLs, fnum => 1, rnum => 2,
       type => string, occurrence => repeated, opts => []},
     #{name => isLearner, fnum => 2, rnum => 3, type => bool,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.MemberAddResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []},
     #{name => member, fnum => 2, rnum => 3,
       type => {msg, 'Etcd.Member'}, occurrence => optional,
       opts => []},
     #{name => members, fnum => 3, rnum => 4,
       type => {msg, 'Etcd.Member'}, occurrence => repeated,
       opts => []}];
find_msg_def('Etcd.MemberRemoveRequest') ->
    [#{name => 'ID', fnum => 1, rnum => 2, type => uint64,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.MemberRemoveResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []},
     #{name => members, fnum => 2, rnum => 3,
       type => {msg, 'Etcd.Member'}, occurrence => repeated,
       opts => []}];
find_msg_def('Etcd.MemberUpdateRequest') ->
    [#{name => 'ID', fnum => 1, rnum => 2, type => uint64,
       occurrence => optional, opts => []},
     #{name => peerURLs, fnum => 2, rnum => 3,
       type => string, occurrence => repeated, opts => []}];
find_msg_def('Etcd.MemberUpdateResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []},
     #{name => members, fnum => 2, rnum => 3,
       type => {msg, 'Etcd.Member'}, occurrence => repeated,
       opts => []}];
find_msg_def('Etcd.MemberListRequest') -> [];
find_msg_def('Etcd.MemberListResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []},
     #{name => members, fnum => 2, rnum => 3,
       type => {msg, 'Etcd.Member'}, occurrence => repeated,
       opts => []}];
find_msg_def('Etcd.MemberPromoteRequest') ->
    [#{name => 'ID', fnum => 1, rnum => 2, type => uint64,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.MemberPromoteResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []},
     #{name => members, fnum => 2, rnum => 3,
       type => {msg, 'Etcd.Member'}, occurrence => repeated,
       opts => []}];
find_msg_def('Etcd.DefragmentRequest') -> [];
find_msg_def('Etcd.DefragmentResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []}];
find_msg_def('Etcd.MoveLeaderRequest') ->
    [#{name => targetID, fnum => 1, rnum => 2,
       type => uint64, occurrence => optional, opts => []}];
find_msg_def('Etcd.MoveLeaderResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []}];
find_msg_def('Etcd.AlarmRequest') ->
    [#{name => action, fnum => 1, rnum => 2,
       type => {enum, 'Etcd.AlarmRequest.AlarmAction'},
       occurrence => optional, opts => []},
     #{name => memberID, fnum => 2, rnum => 3,
       type => uint64, occurrence => optional, opts => []},
     #{name => alarm, fnum => 3, rnum => 4,
       type => {enum, 'Etcd.AlarmType'},
       occurrence => optional, opts => []}];
find_msg_def('Etcd.AlarmMember') ->
    [#{name => memberID, fnum => 1, rnum => 2,
       type => uint64, occurrence => optional, opts => []},
     #{name => alarm, fnum => 2, rnum => 3,
       type => {enum, 'Etcd.AlarmType'},
       occurrence => optional, opts => []}];
find_msg_def('Etcd.AlarmResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []},
     #{name => alarms, fnum => 2, rnum => 3,
       type => {msg, 'Etcd.AlarmMember'},
       occurrence => repeated, opts => []}];
find_msg_def('Etcd.StatusRequest') -> [];
find_msg_def('Etcd.StatusResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []},
     #{name => version, fnum => 2, rnum => 3, type => string,
       occurrence => optional, opts => []},
     #{name => dbSize, fnum => 3, rnum => 4, type => int64,
       occurrence => optional, opts => []},
     #{name => leader, fnum => 4, rnum => 5, type => uint64,
       occurrence => optional, opts => []},
     #{name => raftIndex, fnum => 5, rnum => 6,
       type => uint64, occurrence => optional, opts => []},
     #{name => raftTerm, fnum => 6, rnum => 7,
       type => uint64, occurrence => optional, opts => []},
     #{name => raftAppliedIndex, fnum => 7, rnum => 8,
       type => uint64, occurrence => optional, opts => []},
     #{name => errors, fnum => 8, rnum => 9, type => string,
       occurrence => repeated, opts => []},
     #{name => dbSizeInUse, fnum => 9, rnum => 10,
       type => int64, occurrence => optional, opts => []},
     #{name => isLearner, fnum => 10, rnum => 11,
       type => bool, occurrence => optional, opts => []}];
find_msg_def('Etcd.AuthEnableRequest') -> [];
find_msg_def('Etcd.AuthDisableRequest') -> [];
find_msg_def('Etcd.AuthenticateRequest') ->
    [#{name => name, fnum => 1, rnum => 2, type => string,
       occurrence => optional, opts => []},
     #{name => password, fnum => 2, rnum => 3,
       type => string, occurrence => optional, opts => []}];
find_msg_def('Etcd.AuthUserAddRequest') ->
    [#{name => name, fnum => 1, rnum => 2, type => string,
       occurrence => optional, opts => []},
     #{name => password, fnum => 2, rnum => 3,
       type => string, occurrence => optional, opts => []},
     #{name => options, fnum => 3, rnum => 4,
       type => {msg, 'authpb.UserAddOptions'},
       occurrence => optional, opts => []}];
find_msg_def('Etcd.AuthUserGetRequest') ->
    [#{name => name, fnum => 1, rnum => 2, type => string,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.AuthUserDeleteRequest') ->
    [#{name => name, fnum => 1, rnum => 2, type => string,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.AuthUserChangePasswordRequest') ->
    [#{name => name, fnum => 1, rnum => 2, type => string,
       occurrence => optional, opts => []},
     #{name => password, fnum => 2, rnum => 3,
       type => string, occurrence => optional, opts => []}];
find_msg_def('Etcd.AuthUserGrantRoleRequest') ->
    [#{name => user, fnum => 1, rnum => 2, type => string,
       occurrence => optional, opts => []},
     #{name => role, fnum => 2, rnum => 3, type => string,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.AuthUserRevokeRoleRequest') ->
    [#{name => name, fnum => 1, rnum => 2, type => string,
       occurrence => optional, opts => []},
     #{name => role, fnum => 2, rnum => 3, type => string,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.AuthRoleAddRequest') ->
    [#{name => name, fnum => 1, rnum => 2, type => string,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.AuthRoleGetRequest') ->
    [#{name => role, fnum => 1, rnum => 2, type => string,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.AuthUserListRequest') -> [];
find_msg_def('Etcd.AuthRoleListRequest') -> [];
find_msg_def('Etcd.AuthRoleDeleteRequest') ->
    [#{name => role, fnum => 1, rnum => 2, type => string,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.AuthRoleGrantPermissionRequest') ->
    [#{name => name, fnum => 1, rnum => 2, type => string,
       occurrence => optional, opts => []},
     #{name => perm, fnum => 2, rnum => 3,
       type => {msg, 'authpb.Permission'},
       occurrence => optional, opts => []}];
find_msg_def('Etcd.AuthRoleRevokePermissionRequest') ->
    [#{name => role, fnum => 1, rnum => 2, type => string,
       occurrence => optional, opts => []},
     #{name => key, fnum => 2, rnum => 3, type => bytes,
       occurrence => optional, opts => []},
     #{name => range_end, fnum => 3, rnum => 4,
       type => bytes, occurrence => optional, opts => []}];
find_msg_def('Etcd.AuthEnableResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []}];
find_msg_def('Etcd.AuthDisableResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []}];
find_msg_def('Etcd.AuthenticateResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []},
     #{name => token, fnum => 2, rnum => 3, type => string,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.AuthUserAddResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []}];
find_msg_def('Etcd.AuthUserGetResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []},
     #{name => roles, fnum => 2, rnum => 3, type => string,
       occurrence => repeated, opts => []}];
find_msg_def('Etcd.AuthUserDeleteResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []}];
find_msg_def('Etcd.AuthUserChangePasswordResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []}];
find_msg_def('Etcd.AuthUserGrantRoleResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []}];
find_msg_def('Etcd.AuthUserRevokeRoleResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []}];
find_msg_def('Etcd.AuthRoleAddResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []}];
find_msg_def('Etcd.AuthRoleGetResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []},
     #{name => perm, fnum => 2, rnum => 3,
       type => {msg, 'authpb.Permission'},
       occurrence => repeated, opts => []}];
find_msg_def('Etcd.AuthRoleListResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []},
     #{name => roles, fnum => 2, rnum => 3, type => string,
       occurrence => repeated, opts => []}];
find_msg_def('Etcd.AuthUserListResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []},
     #{name => users, fnum => 2, rnum => 3, type => string,
       occurrence => repeated, opts => []}];
find_msg_def('Etcd.AuthRoleDeleteResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []}];
find_msg_def('Etcd.AuthRoleGrantPermissionResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []}];
find_msg_def('Etcd.AuthRoleRevokePermissionResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []}];
find_msg_def('Etcd.HealthCheckRequest') ->
    [#{name => service, fnum => 1, rnum => 2,
       type => string, occurrence => optional, opts => []}];
find_msg_def('Etcd.HealthCheckResponse') ->
    [#{name => status, fnum => 1, rnum => 2,
       type =>
	   {enum, 'Etcd.HealthCheckResponse.ServingStatus'},
       occurrence => optional, opts => []}];
find_msg_def('Etcd.LockRequest') ->
    [#{name => name, fnum => 1, rnum => 2, type => bytes,
       occurrence => optional, opts => []},
     #{name => lease, fnum => 2, rnum => 3, type => int64,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.LockResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []},
     #{name => key, fnum => 2, rnum => 3, type => bytes,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.UnlockRequest') ->
    [#{name => key, fnum => 1, rnum => 2, type => bytes,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.UnlockResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []}];
find_msg_def('Etcd.CampaignRequest') ->
    [#{name => name, fnum => 1, rnum => 2, type => bytes,
       occurrence => optional, opts => []},
     #{name => lease, fnum => 2, rnum => 3, type => int64,
       occurrence => optional, opts => []},
     #{name => value, fnum => 3, rnum => 4, type => bytes,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.CampaignResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []},
     #{name => leader, fnum => 2, rnum => 3,
       type => {msg, 'Etcd.LeaderKey'}, occurrence => optional,
       opts => []}];
find_msg_def('Etcd.LeaderKey') ->
    [#{name => name, fnum => 1, rnum => 2, type => bytes,
       occurrence => optional, opts => []},
     #{name => key, fnum => 2, rnum => 3, type => bytes,
       occurrence => optional, opts => []},
     #{name => rev, fnum => 3, rnum => 4, type => int64,
       occurrence => optional, opts => []},
     #{name => lease, fnum => 4, rnum => 5, type => int64,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.LeaderRequest') ->
    [#{name => name, fnum => 1, rnum => 2, type => bytes,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.LeaderResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []},
     #{name => kv, fnum => 2, rnum => 3,
       type => {msg, 'mvccpb.KeyValue'},
       occurrence => optional, opts => []}];
find_msg_def('Etcd.ResignRequest') ->
    [#{name => leader, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.LeaderKey'}, occurrence => optional,
       opts => []}];
find_msg_def('Etcd.ResignResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []}];
find_msg_def('Etcd.ProclaimRequest') ->
    [#{name => leader, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.LeaderKey'}, occurrence => optional,
       opts => []},
     #{name => value, fnum => 2, rnum => 3, type => bytes,
       occurrence => optional, opts => []}];
find_msg_def('Etcd.ProclaimResponse') ->
    [#{name => header, fnum => 1, rnum => 2,
       type => {msg, 'Etcd.ResponseHeader'},
       occurrence => optional, opts => []}];
find_msg_def('google.protobuf.FileDescriptorSet') ->
    [#{name => file, fnum => 1, rnum => 2,
       type => {msg, 'google.protobuf.FileDescriptorProto'},
       occurrence => repeated, opts => []}];
find_msg_def('google.protobuf.FileDescriptorProto') ->
    [#{name => name, fnum => 1, rnum => 2, type => string,
       occurrence => optional, opts => []},
     #{name => package, fnum => 2, rnum => 3, type => string,
       occurrence => optional, opts => []},
     #{name => dependency, fnum => 3, rnum => 4,
       type => string, occurrence => repeated, opts => []},
     #{name => public_dependency, fnum => 10, rnum => 5,
       type => int32, occurrence => repeated, opts => []},
     #{name => weak_dependency, fnum => 11, rnum => 6,
       type => int32, occurrence => repeated, opts => []},
     #{name => message_type, fnum => 4, rnum => 7,
       type => {msg, 'google.protobuf.DescriptorProto'},
       occurrence => repeated, opts => []},
     #{name => enum_type, fnum => 5, rnum => 8,
       type => {msg, 'google.protobuf.EnumDescriptorProto'},
       occurrence => repeated, opts => []},
     #{name => service, fnum => 6, rnum => 9,
       type => {msg, 'google.protobuf.ServiceDescriptorProto'},
       occurrence => repeated, opts => []},
     #{name => extension, fnum => 7, rnum => 10,
       type => {msg, 'google.protobuf.FieldDescriptorProto'},
       occurrence => repeated, opts => []},
     #{name => options, fnum => 8, rnum => 11,
       type => {msg, 'google.protobuf.FileOptions'},
       occurrence => optional, opts => []},
     #{name => source_code_info, fnum => 9, rnum => 12,
       type => {msg, 'google.protobuf.SourceCodeInfo'},
       occurrence => optional, opts => []},
     #{name => syntax, fnum => 12, rnum => 13,
       type => string, occurrence => optional, opts => []}];
find_msg_def('google.protobuf.DescriptorProto.ExtensionRange') ->
    [#{name => start, fnum => 1, rnum => 2, type => int32,
       occurrence => optional, opts => []},
     #{name => 'end', fnum => 2, rnum => 3, type => int32,
       occurrence => optional, opts => []}];
find_msg_def('google.protobuf.DescriptorProto.ReservedRange') ->
    [#{name => start, fnum => 1, rnum => 2, type => int32,
       occurrence => optional, opts => []},
     #{name => 'end', fnum => 2, rnum => 3, type => int32,
       occurrence => optional, opts => []}];
find_msg_def('google.protobuf.DescriptorProto') ->
    [#{name => name, fnum => 1, rnum => 2, type => string,
       occurrence => optional, opts => []},
     #{name => field, fnum => 2, rnum => 3,
       type => {msg, 'google.protobuf.FieldDescriptorProto'},
       occurrence => repeated, opts => []},
     #{name => extension, fnum => 6, rnum => 4,
       type => {msg, 'google.protobuf.FieldDescriptorProto'},
       occurrence => repeated, opts => []},
     #{name => nested_type, fnum => 3, rnum => 5,
       type => {msg, 'google.protobuf.DescriptorProto'},
       occurrence => repeated, opts => []},
     #{name => enum_type, fnum => 4, rnum => 6,
       type => {msg, 'google.protobuf.EnumDescriptorProto'},
       occurrence => repeated, opts => []},
     #{name => extension_range, fnum => 5, rnum => 7,
       type =>
	   {msg, 'google.protobuf.DescriptorProto.ExtensionRange'},
       occurrence => repeated, opts => []},
     #{name => oneof_decl, fnum => 8, rnum => 8,
       type => {msg, 'google.protobuf.OneofDescriptorProto'},
       occurrence => repeated, opts => []},
     #{name => options, fnum => 7, rnum => 9,
       type => {msg, 'google.protobuf.MessageOptions'},
       occurrence => optional, opts => []},
     #{name => reserved_range, fnum => 9, rnum => 10,
       type =>
	   {msg, 'google.protobuf.DescriptorProto.ReservedRange'},
       occurrence => repeated, opts => []},
     #{name => reserved_name, fnum => 10, rnum => 11,
       type => string, occurrence => repeated, opts => []}];
find_msg_def('google.protobuf.FieldDescriptorProto') ->
    [#{name => name, fnum => 1, rnum => 2, type => string,
       occurrence => optional, opts => []},
     #{name => number, fnum => 3, rnum => 3, type => int32,
       occurrence => optional, opts => []},
     #{name => label, fnum => 4, rnum => 4,
       type =>
	   {enum, 'google.protobuf.FieldDescriptorProto.Label'},
       occurrence => optional, opts => []},
     #{name => type, fnum => 5, rnum => 5,
       type =>
	   {enum, 'google.protobuf.FieldDescriptorProto.Type'},
       occurrence => optional, opts => []},
     #{name => type_name, fnum => 6, rnum => 6,
       type => string, occurrence => optional, opts => []},
     #{name => extendee, fnum => 2, rnum => 7,
       type => string, occurrence => optional, opts => []},
     #{name => default_value, fnum => 7, rnum => 8,
       type => string, occurrence => optional, opts => []},
     #{name => oneof_index, fnum => 9, rnum => 9,
       type => int32, occurrence => optional, opts => []},
     #{name => json_name, fnum => 10, rnum => 10,
       type => string, occurrence => optional, opts => []},
     #{name => options, fnum => 8, rnum => 11,
       type => {msg, 'google.protobuf.FieldOptions'},
       occurrence => optional, opts => []}];
find_msg_def('google.protobuf.OneofDescriptorProto') ->
    [#{name => name, fnum => 1, rnum => 2, type => string,
       occurrence => optional, opts => []}];
find_msg_def('google.protobuf.EnumDescriptorProto') ->
    [#{name => name, fnum => 1, rnum => 2, type => string,
       occurrence => optional, opts => []},
     #{name => value, fnum => 2, rnum => 3,
       type =>
	   {msg, 'google.protobuf.EnumValueDescriptorProto'},
       occurrence => repeated, opts => []},
     #{name => options, fnum => 3, rnum => 4,
       type => {msg, 'google.protobuf.EnumOptions'},
       occurrence => optional, opts => []}];
find_msg_def('google.protobuf.EnumValueDescriptorProto') ->
    [#{name => name, fnum => 1, rnum => 2, type => string,
       occurrence => optional, opts => []},
     #{name => number, fnum => 2, rnum => 3, type => int32,
       occurrence => optional, opts => []},
     #{name => options, fnum => 3, rnum => 4,
       type => {msg, 'google.protobuf.EnumValueOptions'},
       occurrence => optional, opts => []}];
find_msg_def('google.protobuf.ServiceDescriptorProto') ->
    [#{name => name, fnum => 1, rnum => 2, type => string,
       occurrence => optional, opts => []},
     #{name => method, fnum => 2, rnum => 3,
       type => {msg, 'google.protobuf.MethodDescriptorProto'},
       occurrence => repeated, opts => []},
     #{name => options, fnum => 3, rnum => 4,
       type => {msg, 'google.protobuf.ServiceOptions'},
       occurrence => optional, opts => []}];
find_msg_def('google.protobuf.MethodDescriptorProto') ->
    [#{name => name, fnum => 1, rnum => 2, type => string,
       occurrence => optional, opts => []},
     #{name => input_type, fnum => 2, rnum => 3,
       type => string, occurrence => optional, opts => []},
     #{name => output_type, fnum => 3, rnum => 4,
       type => string, occurrence => optional, opts => []},
     #{name => options, fnum => 4, rnum => 5,
       type => {msg, 'google.protobuf.MethodOptions'},
       occurrence => optional, opts => []},
     #{name => client_streaming, fnum => 5, rnum => 6,
       type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => server_streaming, fnum => 6, rnum => 7,
       type => bool, occurrence => optional,
       opts => [{default, false}]}];
find_msg_def('google.protobuf.FileOptions') ->
    [#{name => java_package, fnum => 1, rnum => 2,
       type => string, occurrence => optional, opts => []},
     #{name => java_outer_classname, fnum => 8, rnum => 3,
       type => string, occurrence => optional, opts => []},
     #{name => java_multiple_files, fnum => 10, rnum => 4,
       type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => java_generate_equals_and_hash, fnum => 20,
       rnum => 5, type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => java_string_check_utf8, fnum => 27, rnum => 6,
       type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => optimize_for, fnum => 9, rnum => 7,
       type =>
	   {enum, 'google.protobuf.FileOptions.OptimizeMode'},
       occurrence => optional, opts => [{default, 'SPEED'}]},
     #{name => go_package, fnum => 11, rnum => 8,
       type => string, occurrence => optional, opts => []},
     #{name => cc_generic_services, fnum => 16, rnum => 9,
       type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => java_generic_services, fnum => 17, rnum => 10,
       type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => py_generic_services, fnum => 18, rnum => 11,
       type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => deprecated, fnum => 23, rnum => 12,
       type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => cc_enable_arenas, fnum => 31, rnum => 13,
       type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => objc_class_prefix, fnum => 36, rnum => 14,
       type => string, occurrence => optional, opts => []},
     #{name => csharp_namespace, fnum => 37, rnum => 15,
       type => string, occurrence => optional, opts => []},
     #{name => javanano_use_deprecated_package, fnum => 38,
       rnum => 16, type => bool, occurrence => optional,
       opts => [deprecated]},
     #{name => uninterpreted_option, fnum => 999, rnum => 17,
       type => {msg, 'google.protobuf.UninterpretedOption'},
       occurrence => repeated, opts => []},
     #{name => goproto_getters_all, fnum => 63001,
       rnum => 18, type => bool, occurrence => optional,
       opts => []},
     #{name => goproto_enum_prefix_all, fnum => 63002,
       rnum => 19, type => bool, occurrence => optional,
       opts => []},
     #{name => goproto_stringer_all, fnum => 63003,
       rnum => 20, type => bool, occurrence => optional,
       opts => []},
     #{name => verbose_equal_all, fnum => 63004, rnum => 21,
       type => bool, occurrence => optional, opts => []},
     #{name => face_all, fnum => 63005, rnum => 22,
       type => bool, occurrence => optional, opts => []},
     #{name => gostring_all, fnum => 63006, rnum => 23,
       type => bool, occurrence => optional, opts => []},
     #{name => populate_all, fnum => 63007, rnum => 24,
       type => bool, occurrence => optional, opts => []},
     #{name => stringer_all, fnum => 63008, rnum => 25,
       type => bool, occurrence => optional, opts => []},
     #{name => onlyone_all, fnum => 63009, rnum => 26,
       type => bool, occurrence => optional, opts => []},
     #{name => equal_all, fnum => 63013, rnum => 27,
       type => bool, occurrence => optional, opts => []},
     #{name => description_all, fnum => 63014, rnum => 28,
       type => bool, occurrence => optional, opts => []},
     #{name => testgen_all, fnum => 63015, rnum => 29,
       type => bool, occurrence => optional, opts => []},
     #{name => benchgen_all, fnum => 63016, rnum => 30,
       type => bool, occurrence => optional, opts => []},
     #{name => marshaler_all, fnum => 63017, rnum => 31,
       type => bool, occurrence => optional, opts => []},
     #{name => unmarshaler_all, fnum => 63018, rnum => 32,
       type => bool, occurrence => optional, opts => []},
     #{name => stable_marshaler_all, fnum => 63019,
       rnum => 33, type => bool, occurrence => optional,
       opts => []},
     #{name => sizer_all, fnum => 63020, rnum => 34,
       type => bool, occurrence => optional, opts => []},
     #{name => goproto_enum_stringer_all, fnum => 63021,
       rnum => 35, type => bool, occurrence => optional,
       opts => []},
     #{name => enum_stringer_all, fnum => 63022, rnum => 36,
       type => bool, occurrence => optional, opts => []},
     #{name => unsafe_marshaler_all, fnum => 63023,
       rnum => 37, type => bool, occurrence => optional,
       opts => []},
     #{name => unsafe_unmarshaler_all, fnum => 63024,
       rnum => 38, type => bool, occurrence => optional,
       opts => []},
     #{name => goproto_extensions_map_all, fnum => 63025,
       rnum => 39, type => bool, occurrence => optional,
       opts => []},
     #{name => goproto_unrecognized_all, fnum => 63026,
       rnum => 40, type => bool, occurrence => optional,
       opts => []},
     #{name => gogoproto_import, fnum => 63027, rnum => 41,
       type => bool, occurrence => optional, opts => []},
     #{name => protosizer_all, fnum => 63028, rnum => 42,
       type => bool, occurrence => optional, opts => []},
     #{name => compare_all, fnum => 63029, rnum => 43,
       type => bool, occurrence => optional, opts => []}];
find_msg_def('google.protobuf.MessageOptions') ->
    [#{name => message_set_wire_format, fnum => 1,
       rnum => 2, type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => no_standard_descriptor_accessor, fnum => 2,
       rnum => 3, type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => deprecated, fnum => 3, rnum => 4,
       type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => map_entry, fnum => 7, rnum => 5, type => bool,
       occurrence => optional, opts => []},
     #{name => uninterpreted_option, fnum => 999, rnum => 6,
       type => {msg, 'google.protobuf.UninterpretedOption'},
       occurrence => repeated, opts => []},
     #{name => goproto_getters, fnum => 64001, rnum => 7,
       type => bool, occurrence => optional, opts => []},
     #{name => goproto_stringer, fnum => 64003, rnum => 8,
       type => bool, occurrence => optional, opts => []},
     #{name => verbose_equal, fnum => 64004, rnum => 9,
       type => bool, occurrence => optional, opts => []},
     #{name => face, fnum => 64005, rnum => 10, type => bool,
       occurrence => optional, opts => []},
     #{name => gostring, fnum => 64006, rnum => 11,
       type => bool, occurrence => optional, opts => []},
     #{name => populate, fnum => 64007, rnum => 12,
       type => bool, occurrence => optional, opts => []},
     #{name => stringer, fnum => 67008, rnum => 13,
       type => bool, occurrence => optional, opts => []},
     #{name => onlyone, fnum => 64009, rnum => 14,
       type => bool, occurrence => optional, opts => []},
     #{name => equal, fnum => 64013, rnum => 15,
       type => bool, occurrence => optional, opts => []},
     #{name => description, fnum => 64014, rnum => 16,
       type => bool, occurrence => optional, opts => []},
     #{name => testgen, fnum => 64015, rnum => 17,
       type => bool, occurrence => optional, opts => []},
     #{name => benchgen, fnum => 64016, rnum => 18,
       type => bool, occurrence => optional, opts => []},
     #{name => marshaler, fnum => 64017, rnum => 19,
       type => bool, occurrence => optional, opts => []},
     #{name => unmarshaler, fnum => 64018, rnum => 20,
       type => bool, occurrence => optional, opts => []},
     #{name => stable_marshaler, fnum => 64019, rnum => 21,
       type => bool, occurrence => optional, opts => []},
     #{name => sizer, fnum => 64020, rnum => 22,
       type => bool, occurrence => optional, opts => []},
     #{name => unsafe_marshaler, fnum => 64023, rnum => 23,
       type => bool, occurrence => optional, opts => []},
     #{name => unsafe_unmarshaler, fnum => 64024, rnum => 24,
       type => bool, occurrence => optional, opts => []},
     #{name => goproto_extensions_map, fnum => 64025,
       rnum => 25, type => bool, occurrence => optional,
       opts => []},
     #{name => goproto_unrecognized, fnum => 64026,
       rnum => 26, type => bool, occurrence => optional,
       opts => []},
     #{name => protosizer, fnum => 64028, rnum => 27,
       type => bool, occurrence => optional, opts => []},
     #{name => compare, fnum => 64029, rnum => 28,
       type => bool, occurrence => optional, opts => []}];
find_msg_def('google.protobuf.FieldOptions') ->
    [#{name => ctype, fnum => 1, rnum => 2,
       type => {enum, 'google.protobuf.FieldOptions.CType'},
       occurrence => optional, opts => [{default, 'STRING'}]},
     #{name => packed, fnum => 2, rnum => 3, type => bool,
       occurrence => optional, opts => []},
     #{name => jstype, fnum => 6, rnum => 4,
       type => {enum, 'google.protobuf.FieldOptions.JSType'},
       occurrence => optional,
       opts => [{default, 'JS_NORMAL'}]},
     #{name => lazy, fnum => 5, rnum => 5, type => bool,
       occurrence => optional, opts => [{default, false}]},
     #{name => deprecated, fnum => 3, rnum => 6,
       type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => weak, fnum => 10, rnum => 7, type => bool,
       occurrence => optional, opts => [{default, false}]},
     #{name => uninterpreted_option, fnum => 999, rnum => 8,
       type => {msg, 'google.protobuf.UninterpretedOption'},
       occurrence => repeated, opts => []},
     #{name => nullable, fnum => 65001, rnum => 9,
       type => bool, occurrence => optional, opts => []},
     #{name => embed, fnum => 65002, rnum => 10,
       type => bool, occurrence => optional, opts => []},
     #{name => customtype, fnum => 65003, rnum => 11,
       type => string, occurrence => optional, opts => []},
     #{name => customname, fnum => 65004, rnum => 12,
       type => string, occurrence => optional, opts => []},
     #{name => jsontag, fnum => 65005, rnum => 13,
       type => string, occurrence => optional, opts => []},
     #{name => moretags, fnum => 65006, rnum => 14,
       type => string, occurrence => optional, opts => []},
     #{name => casttype, fnum => 65007, rnum => 15,
       type => string, occurrence => optional, opts => []},
     #{name => castkey, fnum => 65008, rnum => 16,
       type => string, occurrence => optional, opts => []},
     #{name => castvalue, fnum => 65009, rnum => 17,
       type => string, occurrence => optional, opts => []},
     #{name => stdtime, fnum => 65010, rnum => 18,
       type => bool, occurrence => optional, opts => []},
     #{name => stdduration, fnum => 65011, rnum => 19,
       type => bool, occurrence => optional, opts => []}];
find_msg_def('google.protobuf.EnumOptions') ->
    [#{name => allow_alias, fnum => 2, rnum => 2,
       type => bool, occurrence => optional, opts => []},
     #{name => deprecated, fnum => 3, rnum => 3,
       type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => uninterpreted_option, fnum => 999, rnum => 4,
       type => {msg, 'google.protobuf.UninterpretedOption'},
       occurrence => repeated, opts => []},
     #{name => goproto_enum_prefix, fnum => 62001, rnum => 5,
       type => bool, occurrence => optional, opts => []},
     #{name => goproto_enum_stringer, fnum => 62021,
       rnum => 6, type => bool, occurrence => optional,
       opts => []},
     #{name => enum_stringer, fnum => 62022, rnum => 7,
       type => bool, occurrence => optional, opts => []},
     #{name => enum_customname, fnum => 62023, rnum => 8,
       type => string, occurrence => optional, opts => []}];
find_msg_def('google.protobuf.EnumValueOptions') ->
    [#{name => deprecated, fnum => 1, rnum => 2,
       type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => uninterpreted_option, fnum => 999, rnum => 3,
       type => {msg, 'google.protobuf.UninterpretedOption'},
       occurrence => repeated, opts => []},
     #{name => enumvalue_customname, fnum => 66001,
       rnum => 4, type => string, occurrence => optional,
       opts => []}];
find_msg_def('google.protobuf.ServiceOptions') ->
    [#{name => deprecated, fnum => 33, rnum => 2,
       type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => uninterpreted_option, fnum => 999, rnum => 3,
       type => {msg, 'google.protobuf.UninterpretedOption'},
       occurrence => repeated, opts => []}];
find_msg_def('google.protobuf.MethodOptions') ->
    [#{name => deprecated, fnum => 33, rnum => 2,
       type => bool, occurrence => optional,
       opts => [{default, false}]},
     #{name => uninterpreted_option, fnum => 999, rnum => 3,
       type => {msg, 'google.protobuf.UninterpretedOption'},
       occurrence => repeated, opts => []}];
find_msg_def('google.protobuf.UninterpretedOption.NamePart') ->
    [#{name => name_part, fnum => 1, rnum => 2,
       type => string, occurrence => required, opts => []},
     #{name => is_extension, fnum => 2, rnum => 3,
       type => bool, occurrence => required, opts => []}];
find_msg_def('google.protobuf.UninterpretedOption') ->
    [#{name => name, fnum => 2, rnum => 2,
       type =>
	   {msg, 'google.protobuf.UninterpretedOption.NamePart'},
       occurrence => repeated, opts => []},
     #{name => identifier_value, fnum => 3, rnum => 3,
       type => string, occurrence => optional, opts => []},
     #{name => positive_int_value, fnum => 4, rnum => 4,
       type => uint64, occurrence => optional, opts => []},
     #{name => negative_int_value, fnum => 5, rnum => 5,
       type => int64, occurrence => optional, opts => []},
     #{name => double_value, fnum => 6, rnum => 6,
       type => double, occurrence => optional, opts => []},
     #{name => string_value, fnum => 7, rnum => 7,
       type => bytes, occurrence => optional, opts => []},
     #{name => aggregate_value, fnum => 8, rnum => 8,
       type => string, occurrence => optional, opts => []}];
find_msg_def('google.protobuf.SourceCodeInfo.Location') ->
    [#{name => path, fnum => 1, rnum => 2, type => int32,
       occurrence => repeated, opts => [packed]},
     #{name => span, fnum => 2, rnum => 3, type => int32,
       occurrence => repeated, opts => [packed]},
     #{name => leading_comments, fnum => 3, rnum => 4,
       type => string, occurrence => optional, opts => []},
     #{name => trailing_comments, fnum => 4, rnum => 5,
       type => string, occurrence => optional, opts => []},
     #{name => leading_detached_comments, fnum => 6,
       rnum => 6, type => string, occurrence => repeated,
       opts => []}];
find_msg_def('google.protobuf.SourceCodeInfo') ->
    [#{name => location, fnum => 1, rnum => 2,
       type =>
	   {msg, 'google.protobuf.SourceCodeInfo.Location'},
       occurrence => repeated, opts => []}];
find_msg_def('google.protobuf.GeneratedCodeInfo.Annotation') ->
    [#{name => path, fnum => 1, rnum => 2, type => int32,
       occurrence => repeated, opts => [packed]},
     #{name => source_file, fnum => 2, rnum => 3,
       type => string, occurrence => optional, opts => []},
     #{name => 'begin', fnum => 3, rnum => 4, type => int32,
       occurrence => optional, opts => []},
     #{name => 'end', fnum => 4, rnum => 5, type => int32,
       occurrence => optional, opts => []}];
find_msg_def('google.protobuf.GeneratedCodeInfo') ->
    [#{name => annotation, fnum => 1, rnum => 2,
       type =>
	   {msg, 'google.protobuf.GeneratedCodeInfo.Annotation'},
       occurrence => repeated, opts => []}];
find_msg_def('mvccpb.KeyValue') ->
    [#{name => key, fnum => 1, rnum => 2, type => bytes,
       occurrence => optional, opts => []},
     #{name => create_revision, fnum => 2, rnum => 3,
       type => int64, occurrence => optional, opts => []},
     #{name => mod_revision, fnum => 3, rnum => 4,
       type => int64, occurrence => optional, opts => []},
     #{name => version, fnum => 4, rnum => 5, type => int64,
       occurrence => optional, opts => []},
     #{name => value, fnum => 5, rnum => 6, type => bytes,
       occurrence => optional, opts => []},
     #{name => lease, fnum => 6, rnum => 7, type => int64,
       occurrence => optional, opts => []}];
find_msg_def('mvccpb.Event') ->
    [#{name => type, fnum => 1, rnum => 2,
       type => {enum, 'mvccpb.Event.EventType'},
       occurrence => optional, opts => []},
     #{name => kv, fnum => 2, rnum => 3,
       type => {msg, 'mvccpb.KeyValue'},
       occurrence => optional, opts => []},
     #{name => prev_kv, fnum => 3, rnum => 4,
       type => {msg, 'mvccpb.KeyValue'},
       occurrence => optional, opts => []}];
find_msg_def('authpb.UserAddOptions') ->
    [#{name => no_password, fnum => 1, rnum => 2,
       type => bool, occurrence => optional, opts => []}];
find_msg_def('authpb.User') ->
    [#{name => name, fnum => 1, rnum => 2, type => bytes,
       occurrence => optional, opts => []},
     #{name => password, fnum => 2, rnum => 3, type => bytes,
       occurrence => optional, opts => []},
     #{name => roles, fnum => 3, rnum => 4, type => string,
       occurrence => repeated, opts => []},
     #{name => options, fnum => 4, rnum => 5,
       type => {msg, 'authpb.UserAddOptions'},
       occurrence => optional, opts => []}];
find_msg_def('authpb.Permission') ->
    [#{name => permType, fnum => 1, rnum => 2,
       type => {enum, 'authpb.Permission.Type'},
       occurrence => optional, opts => []},
     #{name => key, fnum => 2, rnum => 3, type => bytes,
       occurrence => optional, opts => []},
     #{name => range_end, fnum => 3, rnum => 4,
       type => bytes, occurrence => optional, opts => []}];
find_msg_def('authpb.Role') ->
    [#{name => name, fnum => 1, rnum => 2, type => bytes,
       occurrence => optional, opts => []},
     #{name => keyPermission, fnum => 2, rnum => 3,
       type => {msg, 'authpb.Permission'},
       occurrence => repeated, opts => []}];
find_msg_def(_) -> error.


find_enum_def('Etcd.RangeRequest.SortOrder') ->
    [{'NONE', 0}, {'ASCEND', 1}, {'DESCEND', 2}];
find_enum_def('Etcd.RangeRequest.SortTarget') ->
    [{'KEY', 0}, {'VERSION', 1}, {'CREATE', 2}, {'MOD', 3},
     {'VALUE', 4}];
find_enum_def('Etcd.Compare.CompareResult') ->
    [{'EQUAL', 0}, {'GREATER', 1}, {'LESS', 2},
     {'NOT_EQUAL', 3}];
find_enum_def('Etcd.Compare.CompareTarget') ->
    [{'VERSION', 0}, {'CREATE', 1}, {'MOD', 2},
     {'VALUE', 3}, {'LEASE', 4}];
find_enum_def('Etcd.WatchCreateRequest.FilterType') ->
    [{'NOPUT', 0}, {'NODELETE', 1}];
find_enum_def('Etcd.AlarmType') ->
    [{'NONE', 0}, {'NOSPACE', 1}, {'CORRUPT', 2}];
find_enum_def('Etcd.AlarmRequest.AlarmAction') ->
    [{'GET', 0}, {'ACTIVATE', 1}, {'DEACTIVATE', 2}];
find_enum_def('Etcd.HealthCheckResponse.ServingStatus') ->
    [{'UNKNOWN', 0}, {'SERVING', 1}, {'NOT_SERVING', 2},
     {'SERVICE_UNKNOWN', 3}];
find_enum_def('google.protobuf.FieldDescriptorProto.Type') ->
    [{'TYPE_DOUBLE', 1}, {'TYPE_FLOAT', 2},
     {'TYPE_INT64', 3}, {'TYPE_UINT64', 4},
     {'TYPE_INT32', 5}, {'TYPE_FIXED64', 6},
     {'TYPE_FIXED32', 7}, {'TYPE_BOOL', 8},
     {'TYPE_STRING', 9}, {'TYPE_GROUP', 10},
     {'TYPE_MESSAGE', 11}, {'TYPE_BYTES', 12},
     {'TYPE_UINT32', 13}, {'TYPE_ENUM', 14},
     {'TYPE_SFIXED32', 15}, {'TYPE_SFIXED64', 16},
     {'TYPE_SINT32', 17}, {'TYPE_SINT64', 18}];
find_enum_def('google.protobuf.FieldDescriptorProto.Label') ->
    [{'LABEL_OPTIONAL', 1}, {'LABEL_REQUIRED', 2},
     {'LABEL_REPEATED', 3}];
find_enum_def('google.protobuf.FileOptions.OptimizeMode') ->
    [{'SPEED', 1}, {'CODE_SIZE', 2}, {'LITE_RUNTIME', 3}];
find_enum_def('google.protobuf.FieldOptions.CType') ->
    [{'STRING', 0}, {'CORD', 1}, {'STRING_PIECE', 2}];
find_enum_def('google.protobuf.FieldOptions.JSType') ->
    [{'JS_NORMAL', 0}, {'JS_STRING', 1}, {'JS_NUMBER', 2}];
find_enum_def('mvccpb.Event.EventType') ->
    [{'PUT', 0}, {'DELETE', 1}];
find_enum_def('authpb.Permission.Type') ->
    [{'READ', 0}, {'WRITE', 1}, {'READWRITE', 2}];
find_enum_def(_) -> error.


enum_symbol_by_value('Etcd.RangeRequest.SortOrder',
		     Value) ->
    'enum_symbol_by_value_Etcd.RangeRequest.SortOrder'(Value);
enum_symbol_by_value('Etcd.RangeRequest.SortTarget',
		     Value) ->
    'enum_symbol_by_value_Etcd.RangeRequest.SortTarget'(Value);
enum_symbol_by_value('Etcd.Compare.CompareResult',
		     Value) ->
    'enum_symbol_by_value_Etcd.Compare.CompareResult'(Value);
enum_symbol_by_value('Etcd.Compare.CompareTarget',
		     Value) ->
    'enum_symbol_by_value_Etcd.Compare.CompareTarget'(Value);
enum_symbol_by_value('Etcd.WatchCreateRequest.FilterType',
		     Value) ->
    'enum_symbol_by_value_Etcd.WatchCreateRequest.FilterType'(Value);
enum_symbol_by_value('Etcd.AlarmType', Value) ->
    'enum_symbol_by_value_Etcd.AlarmType'(Value);
enum_symbol_by_value('Etcd.AlarmRequest.AlarmAction',
		     Value) ->
    'enum_symbol_by_value_Etcd.AlarmRequest.AlarmAction'(Value);
enum_symbol_by_value('Etcd.HealthCheckResponse.ServingStatus',
		     Value) ->
    'enum_symbol_by_value_Etcd.HealthCheckResponse.ServingStatus'(Value);
enum_symbol_by_value('google.protobuf.FieldDescriptorProto.Type',
		     Value) ->
    'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(Value);
enum_symbol_by_value('google.protobuf.FieldDescriptorProto.Label',
		     Value) ->
    'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Label'(Value);
enum_symbol_by_value('google.protobuf.FileOptions.OptimizeMode',
		     Value) ->
    'enum_symbol_by_value_google.protobuf.FileOptions.OptimizeMode'(Value);
enum_symbol_by_value('google.protobuf.FieldOptions.CType',
		     Value) ->
    'enum_symbol_by_value_google.protobuf.FieldOptions.CType'(Value);
enum_symbol_by_value('google.protobuf.FieldOptions.JSType',
		     Value) ->
    'enum_symbol_by_value_google.protobuf.FieldOptions.JSType'(Value);
enum_symbol_by_value('mvccpb.Event.EventType', Value) ->
    'enum_symbol_by_value_mvccpb.Event.EventType'(Value);
enum_symbol_by_value('authpb.Permission.Type', Value) ->
    'enum_symbol_by_value_authpb.Permission.Type'(Value).


enum_value_by_symbol('Etcd.RangeRequest.SortOrder',
		     Sym) ->
    'enum_value_by_symbol_Etcd.RangeRequest.SortOrder'(Sym);
enum_value_by_symbol('Etcd.RangeRequest.SortTarget',
		     Sym) ->
    'enum_value_by_symbol_Etcd.RangeRequest.SortTarget'(Sym);
enum_value_by_symbol('Etcd.Compare.CompareResult',
		     Sym) ->
    'enum_value_by_symbol_Etcd.Compare.CompareResult'(Sym);
enum_value_by_symbol('Etcd.Compare.CompareTarget',
		     Sym) ->
    'enum_value_by_symbol_Etcd.Compare.CompareTarget'(Sym);
enum_value_by_symbol('Etcd.WatchCreateRequest.FilterType',
		     Sym) ->
    'enum_value_by_symbol_Etcd.WatchCreateRequest.FilterType'(Sym);
enum_value_by_symbol('Etcd.AlarmType', Sym) ->
    'enum_value_by_symbol_Etcd.AlarmType'(Sym);
enum_value_by_symbol('Etcd.AlarmRequest.AlarmAction',
		     Sym) ->
    'enum_value_by_symbol_Etcd.AlarmRequest.AlarmAction'(Sym);
enum_value_by_symbol('Etcd.HealthCheckResponse.ServingStatus',
		     Sym) ->
    'enum_value_by_symbol_Etcd.HealthCheckResponse.ServingStatus'(Sym);
enum_value_by_symbol('google.protobuf.FieldDescriptorProto.Type',
		     Sym) ->
    'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'(Sym);
enum_value_by_symbol('google.protobuf.FieldDescriptorProto.Label',
		     Sym) ->
    'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Label'(Sym);
enum_value_by_symbol('google.protobuf.FileOptions.OptimizeMode',
		     Sym) ->
    'enum_value_by_symbol_google.protobuf.FileOptions.OptimizeMode'(Sym);
enum_value_by_symbol('google.protobuf.FieldOptions.CType',
		     Sym) ->
    'enum_value_by_symbol_google.protobuf.FieldOptions.CType'(Sym);
enum_value_by_symbol('google.protobuf.FieldOptions.JSType',
		     Sym) ->
    'enum_value_by_symbol_google.protobuf.FieldOptions.JSType'(Sym);
enum_value_by_symbol('mvccpb.Event.EventType', Sym) ->
    'enum_value_by_symbol_mvccpb.Event.EventType'(Sym);
enum_value_by_symbol('authpb.Permission.Type', Sym) ->
    'enum_value_by_symbol_authpb.Permission.Type'(Sym).


'enum_symbol_by_value_Etcd.RangeRequest.SortOrder'(0) ->
    'NONE';
'enum_symbol_by_value_Etcd.RangeRequest.SortOrder'(1) ->
    'ASCEND';
'enum_symbol_by_value_Etcd.RangeRequest.SortOrder'(2) ->
    'DESCEND'.


'enum_value_by_symbol_Etcd.RangeRequest.SortOrder'('NONE') ->
    0;
'enum_value_by_symbol_Etcd.RangeRequest.SortOrder'('ASCEND') ->
    1;
'enum_value_by_symbol_Etcd.RangeRequest.SortOrder'('DESCEND') ->
    2.

'enum_symbol_by_value_Etcd.RangeRequest.SortTarget'(0) ->
    'KEY';
'enum_symbol_by_value_Etcd.RangeRequest.SortTarget'(1) ->
    'VERSION';
'enum_symbol_by_value_Etcd.RangeRequest.SortTarget'(2) ->
    'CREATE';
'enum_symbol_by_value_Etcd.RangeRequest.SortTarget'(3) ->
    'MOD';
'enum_symbol_by_value_Etcd.RangeRequest.SortTarget'(4) ->
    'VALUE'.


'enum_value_by_symbol_Etcd.RangeRequest.SortTarget'('KEY') ->
    0;
'enum_value_by_symbol_Etcd.RangeRequest.SortTarget'('VERSION') ->
    1;
'enum_value_by_symbol_Etcd.RangeRequest.SortTarget'('CREATE') ->
    2;
'enum_value_by_symbol_Etcd.RangeRequest.SortTarget'('MOD') ->
    3;
'enum_value_by_symbol_Etcd.RangeRequest.SortTarget'('VALUE') ->
    4.

'enum_symbol_by_value_Etcd.Compare.CompareResult'(0) ->
    'EQUAL';
'enum_symbol_by_value_Etcd.Compare.CompareResult'(1) ->
    'GREATER';
'enum_symbol_by_value_Etcd.Compare.CompareResult'(2) ->
    'LESS';
'enum_symbol_by_value_Etcd.Compare.CompareResult'(3) ->
    'NOT_EQUAL'.


'enum_value_by_symbol_Etcd.Compare.CompareResult'('EQUAL') ->
    0;
'enum_value_by_symbol_Etcd.Compare.CompareResult'('GREATER') ->
    1;
'enum_value_by_symbol_Etcd.Compare.CompareResult'('LESS') ->
    2;
'enum_value_by_symbol_Etcd.Compare.CompareResult'('NOT_EQUAL') ->
    3.

'enum_symbol_by_value_Etcd.Compare.CompareTarget'(0) ->
    'VERSION';
'enum_symbol_by_value_Etcd.Compare.CompareTarget'(1) ->
    'CREATE';
'enum_symbol_by_value_Etcd.Compare.CompareTarget'(2) ->
    'MOD';
'enum_symbol_by_value_Etcd.Compare.CompareTarget'(3) ->
    'VALUE';
'enum_symbol_by_value_Etcd.Compare.CompareTarget'(4) ->
    'LEASE'.


'enum_value_by_symbol_Etcd.Compare.CompareTarget'('VERSION') ->
    0;
'enum_value_by_symbol_Etcd.Compare.CompareTarget'('CREATE') ->
    1;
'enum_value_by_symbol_Etcd.Compare.CompareTarget'('MOD') ->
    2;
'enum_value_by_symbol_Etcd.Compare.CompareTarget'('VALUE') ->
    3;
'enum_value_by_symbol_Etcd.Compare.CompareTarget'('LEASE') ->
    4.

'enum_symbol_by_value_Etcd.WatchCreateRequest.FilterType'(0) ->
    'NOPUT';
'enum_symbol_by_value_Etcd.WatchCreateRequest.FilterType'(1) ->
    'NODELETE'.


'enum_value_by_symbol_Etcd.WatchCreateRequest.FilterType'('NOPUT') ->
    0;
'enum_value_by_symbol_Etcd.WatchCreateRequest.FilterType'('NODELETE') ->
    1.

'enum_symbol_by_value_Etcd.AlarmType'(0) -> 'NONE';
'enum_symbol_by_value_Etcd.AlarmType'(1) -> 'NOSPACE';
'enum_symbol_by_value_Etcd.AlarmType'(2) -> 'CORRUPT'.


'enum_value_by_symbol_Etcd.AlarmType'('NONE') -> 0;
'enum_value_by_symbol_Etcd.AlarmType'('NOSPACE') -> 1;
'enum_value_by_symbol_Etcd.AlarmType'('CORRUPT') -> 2.

'enum_symbol_by_value_Etcd.AlarmRequest.AlarmAction'(0) ->
    'GET';
'enum_symbol_by_value_Etcd.AlarmRequest.AlarmAction'(1) ->
    'ACTIVATE';
'enum_symbol_by_value_Etcd.AlarmRequest.AlarmAction'(2) ->
    'DEACTIVATE'.


'enum_value_by_symbol_Etcd.AlarmRequest.AlarmAction'('GET') ->
    0;
'enum_value_by_symbol_Etcd.AlarmRequest.AlarmAction'('ACTIVATE') ->
    1;
'enum_value_by_symbol_Etcd.AlarmRequest.AlarmAction'('DEACTIVATE') ->
    2.

'enum_symbol_by_value_Etcd.HealthCheckResponse.ServingStatus'(0) ->
    'UNKNOWN';
'enum_symbol_by_value_Etcd.HealthCheckResponse.ServingStatus'(1) ->
    'SERVING';
'enum_symbol_by_value_Etcd.HealthCheckResponse.ServingStatus'(2) ->
    'NOT_SERVING';
'enum_symbol_by_value_Etcd.HealthCheckResponse.ServingStatus'(3) ->
    'SERVICE_UNKNOWN'.


'enum_value_by_symbol_Etcd.HealthCheckResponse.ServingStatus'('UNKNOWN') ->
    0;
'enum_value_by_symbol_Etcd.HealthCheckResponse.ServingStatus'('SERVING') ->
    1;
'enum_value_by_symbol_Etcd.HealthCheckResponse.ServingStatus'('NOT_SERVING') ->
    2;
'enum_value_by_symbol_Etcd.HealthCheckResponse.ServingStatus'('SERVICE_UNKNOWN') ->
    3.

'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(1) ->
    'TYPE_DOUBLE';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(2) ->
    'TYPE_FLOAT';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(3) ->
    'TYPE_INT64';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(4) ->
    'TYPE_UINT64';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(5) ->
    'TYPE_INT32';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(6) ->
    'TYPE_FIXED64';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(7) ->
    'TYPE_FIXED32';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(8) ->
    'TYPE_BOOL';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(9) ->
    'TYPE_STRING';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(10) ->
    'TYPE_GROUP';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(11) ->
    'TYPE_MESSAGE';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(12) ->
    'TYPE_BYTES';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(13) ->
    'TYPE_UINT32';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(14) ->
    'TYPE_ENUM';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(15) ->
    'TYPE_SFIXED32';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(16) ->
    'TYPE_SFIXED64';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(17) ->
    'TYPE_SINT32';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Type'(18) ->
    'TYPE_SINT64'.


'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_DOUBLE') ->
    1;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_FLOAT') ->
    2;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_INT64') ->
    3;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_UINT64') ->
    4;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_INT32') ->
    5;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_FIXED64') ->
    6;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_FIXED32') ->
    7;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_BOOL') ->
    8;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_STRING') ->
    9;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_GROUP') ->
    10;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_MESSAGE') ->
    11;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_BYTES') ->
    12;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_UINT32') ->
    13;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_ENUM') ->
    14;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_SFIXED32') ->
    15;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_SFIXED64') ->
    16;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_SINT32') ->
    17;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Type'('TYPE_SINT64') ->
    18.

'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Label'(1) ->
    'LABEL_OPTIONAL';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Label'(2) ->
    'LABEL_REQUIRED';
'enum_symbol_by_value_google.protobuf.FieldDescriptorProto.Label'(3) ->
    'LABEL_REPEATED'.


'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Label'('LABEL_OPTIONAL') ->
    1;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Label'('LABEL_REQUIRED') ->
    2;
'enum_value_by_symbol_google.protobuf.FieldDescriptorProto.Label'('LABEL_REPEATED') ->
    3.

'enum_symbol_by_value_google.protobuf.FileOptions.OptimizeMode'(1) ->
    'SPEED';
'enum_symbol_by_value_google.protobuf.FileOptions.OptimizeMode'(2) ->
    'CODE_SIZE';
'enum_symbol_by_value_google.protobuf.FileOptions.OptimizeMode'(3) ->
    'LITE_RUNTIME'.


'enum_value_by_symbol_google.protobuf.FileOptions.OptimizeMode'('SPEED') ->
    1;
'enum_value_by_symbol_google.protobuf.FileOptions.OptimizeMode'('CODE_SIZE') ->
    2;
'enum_value_by_symbol_google.protobuf.FileOptions.OptimizeMode'('LITE_RUNTIME') ->
    3.

'enum_symbol_by_value_google.protobuf.FieldOptions.CType'(0) ->
    'STRING';
'enum_symbol_by_value_google.protobuf.FieldOptions.CType'(1) ->
    'CORD';
'enum_symbol_by_value_google.protobuf.FieldOptions.CType'(2) ->
    'STRING_PIECE'.


'enum_value_by_symbol_google.protobuf.FieldOptions.CType'('STRING') ->
    0;
'enum_value_by_symbol_google.protobuf.FieldOptions.CType'('CORD') ->
    1;
'enum_value_by_symbol_google.protobuf.FieldOptions.CType'('STRING_PIECE') ->
    2.

'enum_symbol_by_value_google.protobuf.FieldOptions.JSType'(0) ->
    'JS_NORMAL';
'enum_symbol_by_value_google.protobuf.FieldOptions.JSType'(1) ->
    'JS_STRING';
'enum_symbol_by_value_google.protobuf.FieldOptions.JSType'(2) ->
    'JS_NUMBER'.


'enum_value_by_symbol_google.protobuf.FieldOptions.JSType'('JS_NORMAL') ->
    0;
'enum_value_by_symbol_google.protobuf.FieldOptions.JSType'('JS_STRING') ->
    1;
'enum_value_by_symbol_google.protobuf.FieldOptions.JSType'('JS_NUMBER') ->
    2.

'enum_symbol_by_value_mvccpb.Event.EventType'(0) ->
    'PUT';
'enum_symbol_by_value_mvccpb.Event.EventType'(1) ->
    'DELETE'.


'enum_value_by_symbol_mvccpb.Event.EventType'('PUT') ->
    0;
'enum_value_by_symbol_mvccpb.Event.EventType'('DELETE') ->
    1.

'enum_symbol_by_value_authpb.Permission.Type'(0) ->
    'READ';
'enum_symbol_by_value_authpb.Permission.Type'(1) ->
    'WRITE';
'enum_symbol_by_value_authpb.Permission.Type'(2) ->
    'READWRITE'.


'enum_value_by_symbol_authpb.Permission.Type'('READ') ->
    0;
'enum_value_by_symbol_authpb.Permission.Type'('WRITE') ->
    1;
'enum_value_by_symbol_authpb.Permission.Type'('READWRITE') ->
    2.


get_service_names() ->
    ['Etcd.KV', 'Etcd.Watch', 'Etcd.Lease', 'Etcd.Cluster',
     'Etcd.Maintenance', 'Etcd.Auth', 'Etcd.Health',
     'Etcd.Lock', 'Etcd.Election'].


get_service_def('Etcd.KV') ->
    {{service, 'Etcd.KV'},
     [#{name => 'Range', input => 'Etcd.RangeRequest',
	output => 'Etcd.RangeResponse', input_stream => false,
	output_stream => false, opts => []},
      #{name => 'Put', input => 'Etcd.PutRequest',
	output => 'Etcd.PutResponse', input_stream => false,
	output_stream => false, opts => []},
      #{name => 'DeleteRange',
	input => 'Etcd.DeleteRangeRequest',
	output => 'Etcd.DeleteRangeResponse',
	input_stream => false, output_stream => false,
	opts => []},
      #{name => 'Txn', input => 'Etcd.TxnRequest',
	output => 'Etcd.TxnResponse', input_stream => false,
	output_stream => false, opts => []},
      #{name => 'Compact', input => 'Etcd.CompactionRequest',
	output => 'Etcd.CompactionResponse',
	input_stream => false, output_stream => false,
	opts => []}]};
get_service_def('Etcd.Watch') ->
    {{service, 'Etcd.Watch'},
     [#{name => 'Watch', input => 'Etcd.WatchRequest',
	output => 'Etcd.WatchResponse', input_stream => true,
	output_stream => true, opts => []}]};
get_service_def('Etcd.Lease') ->
    {{service, 'Etcd.Lease'},
     [#{name => 'LeaseGrant',
	input => 'Etcd.LeaseGrantRequest',
	output => 'Etcd.LeaseGrantResponse',
	input_stream => false, output_stream => false,
	opts => []},
      #{name => 'LeaseRevoke',
	input => 'Etcd.LeaseRevokeRequest',
	output => 'Etcd.LeaseRevokeResponse',
	input_stream => false, output_stream => false,
	opts => []},
      #{name => 'LeaseKeepAlive',
	input => 'Etcd.LeaseKeepAliveRequest',
	output => 'Etcd.LeaseKeepAliveResponse',
	input_stream => true, output_stream => true,
	opts => []},
      #{name => 'LeaseTimeToLive',
	input => 'Etcd.LeaseTimeToLiveRequest',
	output => 'Etcd.LeaseTimeToLiveResponse',
	input_stream => false, output_stream => false,
	opts => []},
      #{name => 'LeaseLeases',
	input => 'Etcd.LeaseLeasesRequest',
	output => 'Etcd.LeaseLeasesResponse',
	input_stream => false, output_stream => false,
	opts => []}]};
get_service_def('Etcd.Cluster') ->
    {{service, 'Etcd.Cluster'},
     [#{name => 'MemberAdd',
	input => 'Etcd.MemberAddRequest',
	output => 'Etcd.MemberAddResponse',
	input_stream => false, output_stream => false,
	opts => []},
      #{name => 'MemberRemove',
	input => 'Etcd.MemberRemoveRequest',
	output => 'Etcd.MemberRemoveResponse',
	input_stream => false, output_stream => false,
	opts => []},
      #{name => 'MemberUpdate',
	input => 'Etcd.MemberUpdateRequest',
	output => 'Etcd.MemberUpdateResponse',
	input_stream => false, output_stream => false,
	opts => []},
      #{name => 'MemberList',
	input => 'Etcd.MemberListRequest',
	output => 'Etcd.MemberListResponse',
	input_stream => false, output_stream => false,
	opts => []},
      #{name => 'MemberPromote',
	input => 'Etcd.MemberPromoteRequest',
	output => 'Etcd.MemberPromoteResponse',
	input_stream => false, output_stream => false,
	opts => []}]};
get_service_def('Etcd.Maintenance') ->
    {{service, 'Etcd.Maintenance'},
     [#{name => 'Alarm', input => 'Etcd.AlarmRequest',
	output => 'Etcd.AlarmResponse', input_stream => false,
	output_stream => false, opts => []},
      #{name => 'Status', input => 'Etcd.StatusRequest',
	output => 'Etcd.StatusResponse', input_stream => false,
	output_stream => false, opts => []},
      #{name => 'Defragment',
	input => 'Etcd.DefragmentRequest',
	output => 'Etcd.DefragmentResponse',
	input_stream => false, output_stream => false,
	opts => []},
      #{name => 'Hash', input => 'Etcd.HashRequest',
	output => 'Etcd.HashResponse', input_stream => false,
	output_stream => false, opts => []},
      #{name => 'HashKV', input => 'Etcd.HashKVRequest',
	output => 'Etcd.HashKVResponse', input_stream => false,
	output_stream => false, opts => []},
      #{name => 'Snapshot', input => 'Etcd.SnapshotRequest',
	output => 'Etcd.SnapshotResponse',
	input_stream => false, output_stream => true,
	opts => []},
      #{name => 'MoveLeader',
	input => 'Etcd.MoveLeaderRequest',
	output => 'Etcd.MoveLeaderResponse',
	input_stream => false, output_stream => false,
	opts => []}]};
get_service_def('Etcd.Auth') ->
    {{service, 'Etcd.Auth'},
     [#{name => 'AuthEnable',
	input => 'Etcd.AuthEnableRequest',
	output => 'Etcd.AuthEnableResponse',
	input_stream => false, output_stream => false,
	opts => []},
      #{name => 'AuthDisable',
	input => 'Etcd.AuthDisableRequest',
	output => 'Etcd.AuthDisableResponse',
	input_stream => false, output_stream => false,
	opts => []},
      #{name => 'Authenticate',
	input => 'Etcd.AuthenticateRequest',
	output => 'Etcd.AuthenticateResponse',
	input_stream => false, output_stream => false,
	opts => []},
      #{name => 'UserAdd', input => 'Etcd.AuthUserAddRequest',
	output => 'Etcd.AuthUserAddResponse',
	input_stream => false, output_stream => false,
	opts => []},
      #{name => 'UserGet', input => 'Etcd.AuthUserGetRequest',
	output => 'Etcd.AuthUserGetResponse',
	input_stream => false, output_stream => false,
	opts => []},
      #{name => 'UserList',
	input => 'Etcd.AuthUserListRequest',
	output => 'Etcd.AuthUserListResponse',
	input_stream => false, output_stream => false,
	opts => []},
      #{name => 'UserDelete',
	input => 'Etcd.AuthUserDeleteRequest',
	output => 'Etcd.AuthUserDeleteResponse',
	input_stream => false, output_stream => false,
	opts => []},
      #{name => 'UserChangePassword',
	input => 'Etcd.AuthUserChangePasswordRequest',
	output => 'Etcd.AuthUserChangePasswordResponse',
	input_stream => false, output_stream => false,
	opts => []},
      #{name => 'UserGrantRole',
	input => 'Etcd.AuthUserGrantRoleRequest',
	output => 'Etcd.AuthUserGrantRoleResponse',
	input_stream => false, output_stream => false,
	opts => []},
      #{name => 'UserRevokeRole',
	input => 'Etcd.AuthUserRevokeRoleRequest',
	output => 'Etcd.AuthUserRevokeRoleResponse',
	input_stream => false, output_stream => false,
	opts => []},
      #{name => 'RoleAdd', input => 'Etcd.AuthRoleAddRequest',
	output => 'Etcd.AuthRoleAddResponse',
	input_stream => false, output_stream => false,
	opts => []},
      #{name => 'RoleGet', input => 'Etcd.AuthRoleGetRequest',
	output => 'Etcd.AuthRoleGetResponse',
	input_stream => false, output_stream => false,
	opts => []},
      #{name => 'RoleList',
	input => 'Etcd.AuthRoleListRequest',
	output => 'Etcd.AuthRoleListResponse',
	input_stream => false, output_stream => false,
	opts => []},
      #{name => 'RoleDelete',
	input => 'Etcd.AuthRoleDeleteRequest',
	output => 'Etcd.AuthRoleDeleteResponse',
	input_stream => false, output_stream => false,
	opts => []},
      #{name => 'RoleGrantPermission',
	input => 'Etcd.AuthRoleGrantPermissionRequest',
	output => 'Etcd.AuthRoleGrantPermissionResponse',
	input_stream => false, output_stream => false,
	opts => []},
      #{name => 'RoleRevokePermission',
	input => 'Etcd.AuthRoleRevokePermissionRequest',
	output => 'Etcd.AuthRoleRevokePermissionResponse',
	input_stream => false, output_stream => false,
	opts => []}]};
get_service_def('Etcd.Health') ->
    {{service, 'Etcd.Health'},
     [#{name => 'Check', input => 'Etcd.HealthCheckRequest',
	output => 'Etcd.HealthCheckResponse',
	input_stream => false, output_stream => false,
	opts => []},
      #{name => 'Watch', input => 'Etcd.HealthCheckRequest',
	output => 'Etcd.HealthCheckResponse',
	input_stream => false, output_stream => true,
	opts => []}]};
get_service_def('Etcd.Lock') ->
    {{service, 'Etcd.Lock'},
     [#{name => 'Lock', input => 'Etcd.LockRequest',
	output => 'Etcd.LockResponse', input_stream => false,
	output_stream => false, opts => []},
      #{name => 'Unlock', input => 'Etcd.UnlockRequest',
	output => 'Etcd.UnlockResponse', input_stream => false,
	output_stream => false, opts => []}]};
get_service_def('Etcd.Election') ->
    {{service, 'Etcd.Election'},
     [#{name => 'Campaign', input => 'Etcd.CampaignRequest',
	output => 'Etcd.CampaignResponse',
	input_stream => false, output_stream => false,
	opts => []},
      #{name => 'Proclaim', input => 'Etcd.ProclaimRequest',
	output => 'Etcd.ProclaimResponse',
	input_stream => false, output_stream => false,
	opts => []},
      #{name => 'Leader', input => 'Etcd.LeaderRequest',
	output => 'Etcd.LeaderResponse', input_stream => false,
	output_stream => false, opts => []},
      #{name => 'Observe', input => 'Etcd.LeaderRequest',
	output => 'Etcd.LeaderResponse', input_stream => true,
	output_stream => true, opts => []},
      #{name => 'Resign', input => 'Etcd.ResignRequest',
	output => 'Etcd.ResignResponse', input_stream => false,
	output_stream => false, opts => []}]};
get_service_def(_) -> error.


get_rpc_names('Etcd.KV') ->
    ['Range', 'Put', 'DeleteRange', 'Txn', 'Compact'];
get_rpc_names('Etcd.Watch') -> ['Watch'];
get_rpc_names('Etcd.Lease') ->
    ['LeaseGrant', 'LeaseRevoke', 'LeaseKeepAlive',
     'LeaseTimeToLive', 'LeaseLeases'];
get_rpc_names('Etcd.Cluster') ->
    ['MemberAdd', 'MemberRemove', 'MemberUpdate',
     'MemberList', 'MemberPromote'];
get_rpc_names('Etcd.Maintenance') ->
    ['Alarm', 'Status', 'Defragment', 'Hash', 'HashKV',
     'Snapshot', 'MoveLeader'];
get_rpc_names('Etcd.Auth') ->
    ['AuthEnable', 'AuthDisable', 'Authenticate', 'UserAdd',
     'UserGet', 'UserList', 'UserDelete',
     'UserChangePassword', 'UserGrantRole', 'UserRevokeRole',
     'RoleAdd', 'RoleGet', 'RoleList', 'RoleDelete',
     'RoleGrantPermission', 'RoleRevokePermission'];
get_rpc_names('Etcd.Health') -> ['Check', 'Watch'];
get_rpc_names('Etcd.Lock') -> ['Lock', 'Unlock'];
get_rpc_names('Etcd.Election') ->
    ['Campaign', 'Proclaim', 'Leader', 'Observe', 'Resign'];
get_rpc_names(_) -> error.


find_rpc_def('Etcd.KV', RpcName) ->
    'find_rpc_def_Etcd.KV'(RpcName);
find_rpc_def('Etcd.Watch', RpcName) ->
    'find_rpc_def_Etcd.Watch'(RpcName);
find_rpc_def('Etcd.Lease', RpcName) ->
    'find_rpc_def_Etcd.Lease'(RpcName);
find_rpc_def('Etcd.Cluster', RpcName) ->
    'find_rpc_def_Etcd.Cluster'(RpcName);
find_rpc_def('Etcd.Maintenance', RpcName) ->
    'find_rpc_def_Etcd.Maintenance'(RpcName);
find_rpc_def('Etcd.Auth', RpcName) ->
    'find_rpc_def_Etcd.Auth'(RpcName);
find_rpc_def('Etcd.Health', RpcName) ->
    'find_rpc_def_Etcd.Health'(RpcName);
find_rpc_def('Etcd.Lock', RpcName) ->
    'find_rpc_def_Etcd.Lock'(RpcName);
find_rpc_def('Etcd.Election', RpcName) ->
    'find_rpc_def_Etcd.Election'(RpcName);
find_rpc_def(_, _) -> error.


'find_rpc_def_Etcd.KV'('Range') ->
    #{name => 'Range', input => 'Etcd.RangeRequest',
      output => 'Etcd.RangeResponse', input_stream => false,
      output_stream => false, opts => []};
'find_rpc_def_Etcd.KV'('Put') ->
    #{name => 'Put', input => 'Etcd.PutRequest',
      output => 'Etcd.PutResponse', input_stream => false,
      output_stream => false, opts => []};
'find_rpc_def_Etcd.KV'('DeleteRange') ->
    #{name => 'DeleteRange',
      input => 'Etcd.DeleteRangeRequest',
      output => 'Etcd.DeleteRangeResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.KV'('Txn') ->
    #{name => 'Txn', input => 'Etcd.TxnRequest',
      output => 'Etcd.TxnResponse', input_stream => false,
      output_stream => false, opts => []};
'find_rpc_def_Etcd.KV'('Compact') ->
    #{name => 'Compact', input => 'Etcd.CompactionRequest',
      output => 'Etcd.CompactionResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.KV'(_) -> error.

'find_rpc_def_Etcd.Watch'('Watch') ->
    #{name => 'Watch', input => 'Etcd.WatchRequest',
      output => 'Etcd.WatchResponse', input_stream => true,
      output_stream => true, opts => []};
'find_rpc_def_Etcd.Watch'(_) -> error.

'find_rpc_def_Etcd.Lease'('LeaseGrant') ->
    #{name => 'LeaseGrant',
      input => 'Etcd.LeaseGrantRequest',
      output => 'Etcd.LeaseGrantResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Lease'('LeaseRevoke') ->
    #{name => 'LeaseRevoke',
      input => 'Etcd.LeaseRevokeRequest',
      output => 'Etcd.LeaseRevokeResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Lease'('LeaseKeepAlive') ->
    #{name => 'LeaseKeepAlive',
      input => 'Etcd.LeaseKeepAliveRequest',
      output => 'Etcd.LeaseKeepAliveResponse',
      input_stream => true, output_stream => true,
      opts => []};
'find_rpc_def_Etcd.Lease'('LeaseTimeToLive') ->
    #{name => 'LeaseTimeToLive',
      input => 'Etcd.LeaseTimeToLiveRequest',
      output => 'Etcd.LeaseTimeToLiveResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Lease'('LeaseLeases') ->
    #{name => 'LeaseLeases',
      input => 'Etcd.LeaseLeasesRequest',
      output => 'Etcd.LeaseLeasesResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Lease'(_) -> error.

'find_rpc_def_Etcd.Cluster'('MemberAdd') ->
    #{name => 'MemberAdd', input => 'Etcd.MemberAddRequest',
      output => 'Etcd.MemberAddResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Cluster'('MemberRemove') ->
    #{name => 'MemberRemove',
      input => 'Etcd.MemberRemoveRequest',
      output => 'Etcd.MemberRemoveResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Cluster'('MemberUpdate') ->
    #{name => 'MemberUpdate',
      input => 'Etcd.MemberUpdateRequest',
      output => 'Etcd.MemberUpdateResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Cluster'('MemberList') ->
    #{name => 'MemberList',
      input => 'Etcd.MemberListRequest',
      output => 'Etcd.MemberListResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Cluster'('MemberPromote') ->
    #{name => 'MemberPromote',
      input => 'Etcd.MemberPromoteRequest',
      output => 'Etcd.MemberPromoteResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Cluster'(_) -> error.

'find_rpc_def_Etcd.Maintenance'('Alarm') ->
    #{name => 'Alarm', input => 'Etcd.AlarmRequest',
      output => 'Etcd.AlarmResponse', input_stream => false,
      output_stream => false, opts => []};
'find_rpc_def_Etcd.Maintenance'('Status') ->
    #{name => 'Status', input => 'Etcd.StatusRequest',
      output => 'Etcd.StatusResponse', input_stream => false,
      output_stream => false, opts => []};
'find_rpc_def_Etcd.Maintenance'('Defragment') ->
    #{name => 'Defragment',
      input => 'Etcd.DefragmentRequest',
      output => 'Etcd.DefragmentResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Maintenance'('Hash') ->
    #{name => 'Hash', input => 'Etcd.HashRequest',
      output => 'Etcd.HashResponse', input_stream => false,
      output_stream => false, opts => []};
'find_rpc_def_Etcd.Maintenance'('HashKV') ->
    #{name => 'HashKV', input => 'Etcd.HashKVRequest',
      output => 'Etcd.HashKVResponse', input_stream => false,
      output_stream => false, opts => []};
'find_rpc_def_Etcd.Maintenance'('Snapshot') ->
    #{name => 'Snapshot', input => 'Etcd.SnapshotRequest',
      output => 'Etcd.SnapshotResponse',
      input_stream => false, output_stream => true,
      opts => []};
'find_rpc_def_Etcd.Maintenance'('MoveLeader') ->
    #{name => 'MoveLeader',
      input => 'Etcd.MoveLeaderRequest',
      output => 'Etcd.MoveLeaderResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Maintenance'(_) -> error.

'find_rpc_def_Etcd.Auth'('AuthEnable') ->
    #{name => 'AuthEnable',
      input => 'Etcd.AuthEnableRequest',
      output => 'Etcd.AuthEnableResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Auth'('AuthDisable') ->
    #{name => 'AuthDisable',
      input => 'Etcd.AuthDisableRequest',
      output => 'Etcd.AuthDisableResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Auth'('Authenticate') ->
    #{name => 'Authenticate',
      input => 'Etcd.AuthenticateRequest',
      output => 'Etcd.AuthenticateResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Auth'('UserAdd') ->
    #{name => 'UserAdd', input => 'Etcd.AuthUserAddRequest',
      output => 'Etcd.AuthUserAddResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Auth'('UserGet') ->
    #{name => 'UserGet', input => 'Etcd.AuthUserGetRequest',
      output => 'Etcd.AuthUserGetResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Auth'('UserList') ->
    #{name => 'UserList',
      input => 'Etcd.AuthUserListRequest',
      output => 'Etcd.AuthUserListResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Auth'('UserDelete') ->
    #{name => 'UserDelete',
      input => 'Etcd.AuthUserDeleteRequest',
      output => 'Etcd.AuthUserDeleteResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Auth'('UserChangePassword') ->
    #{name => 'UserChangePassword',
      input => 'Etcd.AuthUserChangePasswordRequest',
      output => 'Etcd.AuthUserChangePasswordResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Auth'('UserGrantRole') ->
    #{name => 'UserGrantRole',
      input => 'Etcd.AuthUserGrantRoleRequest',
      output => 'Etcd.AuthUserGrantRoleResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Auth'('UserRevokeRole') ->
    #{name => 'UserRevokeRole',
      input => 'Etcd.AuthUserRevokeRoleRequest',
      output => 'Etcd.AuthUserRevokeRoleResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Auth'('RoleAdd') ->
    #{name => 'RoleAdd', input => 'Etcd.AuthRoleAddRequest',
      output => 'Etcd.AuthRoleAddResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Auth'('RoleGet') ->
    #{name => 'RoleGet', input => 'Etcd.AuthRoleGetRequest',
      output => 'Etcd.AuthRoleGetResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Auth'('RoleList') ->
    #{name => 'RoleList',
      input => 'Etcd.AuthRoleListRequest',
      output => 'Etcd.AuthRoleListResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Auth'('RoleDelete') ->
    #{name => 'RoleDelete',
      input => 'Etcd.AuthRoleDeleteRequest',
      output => 'Etcd.AuthRoleDeleteResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Auth'('RoleGrantPermission') ->
    #{name => 'RoleGrantPermission',
      input => 'Etcd.AuthRoleGrantPermissionRequest',
      output => 'Etcd.AuthRoleGrantPermissionResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Auth'('RoleRevokePermission') ->
    #{name => 'RoleRevokePermission',
      input => 'Etcd.AuthRoleRevokePermissionRequest',
      output => 'Etcd.AuthRoleRevokePermissionResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Auth'(_) -> error.

'find_rpc_def_Etcd.Health'('Check') ->
    #{name => 'Check', input => 'Etcd.HealthCheckRequest',
      output => 'Etcd.HealthCheckResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Health'('Watch') ->
    #{name => 'Watch', input => 'Etcd.HealthCheckRequest',
      output => 'Etcd.HealthCheckResponse',
      input_stream => false, output_stream => true,
      opts => []};
'find_rpc_def_Etcd.Health'(_) -> error.

'find_rpc_def_Etcd.Lock'('Lock') ->
    #{name => 'Lock', input => 'Etcd.LockRequest',
      output => 'Etcd.LockResponse', input_stream => false,
      output_stream => false, opts => []};
'find_rpc_def_Etcd.Lock'('Unlock') ->
    #{name => 'Unlock', input => 'Etcd.UnlockRequest',
      output => 'Etcd.UnlockResponse', input_stream => false,
      output_stream => false, opts => []};
'find_rpc_def_Etcd.Lock'(_) -> error.

'find_rpc_def_Etcd.Election'('Campaign') ->
    #{name => 'Campaign', input => 'Etcd.CampaignRequest',
      output => 'Etcd.CampaignResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Election'('Proclaim') ->
    #{name => 'Proclaim', input => 'Etcd.ProclaimRequest',
      output => 'Etcd.ProclaimResponse',
      input_stream => false, output_stream => false,
      opts => []};
'find_rpc_def_Etcd.Election'('Leader') ->
    #{name => 'Leader', input => 'Etcd.LeaderRequest',
      output => 'Etcd.LeaderResponse', input_stream => false,
      output_stream => false, opts => []};
'find_rpc_def_Etcd.Election'('Observe') ->
    #{name => 'Observe', input => 'Etcd.LeaderRequest',
      output => 'Etcd.LeaderResponse', input_stream => true,
      output_stream => true, opts => []};
'find_rpc_def_Etcd.Election'('Resign') ->
    #{name => 'Resign', input => 'Etcd.ResignRequest',
      output => 'Etcd.ResignResponse', input_stream => false,
      output_stream => false, opts => []};
'find_rpc_def_Etcd.Election'(_) -> error.


fetch_rpc_def(ServiceName, RpcName) ->
    case find_rpc_def(ServiceName, RpcName) of
      Def when is_map(Def) -> Def;
      error ->
	  erlang:error({no_such_rpc, ServiceName, RpcName})
    end.


%% Convert a a fully qualified (ie with package name) service name
%% as a binary to a service name as an atom.
fqbin_to_service_name(<<"Etcd.KV">>) -> 'Etcd.KV';
fqbin_to_service_name(<<"Etcd.Watch">>) -> 'Etcd.Watch';
fqbin_to_service_name(<<"Etcd.Lease">>) -> 'Etcd.Lease';
fqbin_to_service_name(<<"Etcd.Cluster">>) -> 'Etcd.Cluster';
fqbin_to_service_name(<<"Etcd.Maintenance">>) -> 'Etcd.Maintenance';
fqbin_to_service_name(<<"Etcd.Auth">>) -> 'Etcd.Auth';
fqbin_to_service_name(<<"Etcd.Health">>) -> 'Etcd.Health';
fqbin_to_service_name(<<"Etcd.Lock">>) -> 'Etcd.Lock';
fqbin_to_service_name(<<"Etcd.Election">>) -> 'Etcd.Election';
fqbin_to_service_name(X) ->
    error({gpb_error, {badservice, X}}).


%% Convert a service name as an atom to a fully qualified
%% (ie with package name) name as a binary.
service_name_to_fqbin('Etcd.KV') -> <<"Etcd.KV">>;
service_name_to_fqbin('Etcd.Watch') -> <<"Etcd.Watch">>;
service_name_to_fqbin('Etcd.Lease') -> <<"Etcd.Lease">>;
service_name_to_fqbin('Etcd.Cluster') -> <<"Etcd.Cluster">>;
service_name_to_fqbin('Etcd.Maintenance') -> <<"Etcd.Maintenance">>;
service_name_to_fqbin('Etcd.Auth') -> <<"Etcd.Auth">>;
service_name_to_fqbin('Etcd.Health') -> <<"Etcd.Health">>;
service_name_to_fqbin('Etcd.Lock') -> <<"Etcd.Lock">>;
service_name_to_fqbin('Etcd.Election') -> <<"Etcd.Election">>;
service_name_to_fqbin(X) ->
    error({gpb_error, {badservice, X}}).


%% Convert a a fully qualified (ie with package name) service name
%% and an rpc name, both as binaries to a service name and an rpc
%% name, as atoms.
fqbins_to_service_and_rpc_name(<<"Etcd.KV">>, <<"Range">>) ->
    {'Etcd.KV', 'Range'};
fqbins_to_service_and_rpc_name(<<"Etcd.KV">>, <<"Put">>) ->
    {'Etcd.KV', 'Put'};
fqbins_to_service_and_rpc_name(<<"Etcd.KV">>, <<"DeleteRange">>) ->
    {'Etcd.KV', 'DeleteRange'};
fqbins_to_service_and_rpc_name(<<"Etcd.KV">>, <<"Txn">>) ->
    {'Etcd.KV', 'Txn'};
fqbins_to_service_and_rpc_name(<<"Etcd.KV">>, <<"Compact">>) ->
    {'Etcd.KV', 'Compact'};
fqbins_to_service_and_rpc_name(<<"Etcd.Watch">>, <<"Watch">>) ->
    {'Etcd.Watch', 'Watch'};
fqbins_to_service_and_rpc_name(<<"Etcd.Lease">>, <<"LeaseGrant">>) ->
    {'Etcd.Lease', 'LeaseGrant'};
fqbins_to_service_and_rpc_name(<<"Etcd.Lease">>, <<"LeaseRevoke">>) ->
    {'Etcd.Lease', 'LeaseRevoke'};
fqbins_to_service_and_rpc_name(<<"Etcd.Lease">>, <<"LeaseKeepAlive">>) ->
    {'Etcd.Lease', 'LeaseKeepAlive'};
fqbins_to_service_and_rpc_name(<<"Etcd.Lease">>, <<"LeaseTimeToLive">>) ->
    {'Etcd.Lease', 'LeaseTimeToLive'};
fqbins_to_service_and_rpc_name(<<"Etcd.Lease">>, <<"LeaseLeases">>) ->
    {'Etcd.Lease', 'LeaseLeases'};
fqbins_to_service_and_rpc_name(<<"Etcd.Cluster">>, <<"MemberAdd">>) ->
    {'Etcd.Cluster', 'MemberAdd'};
fqbins_to_service_and_rpc_name(<<"Etcd.Cluster">>, <<"MemberRemove">>) ->
    {'Etcd.Cluster', 'MemberRemove'};
fqbins_to_service_and_rpc_name(<<"Etcd.Cluster">>, <<"MemberUpdate">>) ->
    {'Etcd.Cluster', 'MemberUpdate'};
fqbins_to_service_and_rpc_name(<<"Etcd.Cluster">>, <<"MemberList">>) ->
    {'Etcd.Cluster', 'MemberList'};
fqbins_to_service_and_rpc_name(<<"Etcd.Cluster">>, <<"MemberPromote">>) ->
    {'Etcd.Cluster', 'MemberPromote'};
fqbins_to_service_and_rpc_name(<<"Etcd.Maintenance">>, <<"Alarm">>) ->
    {'Etcd.Maintenance', 'Alarm'};
fqbins_to_service_and_rpc_name(<<"Etcd.Maintenance">>, <<"Status">>) ->
    {'Etcd.Maintenance', 'Status'};
fqbins_to_service_and_rpc_name(<<"Etcd.Maintenance">>, <<"Defragment">>) ->
    {'Etcd.Maintenance', 'Defragment'};
fqbins_to_service_and_rpc_name(<<"Etcd.Maintenance">>, <<"Hash">>) ->
    {'Etcd.Maintenance', 'Hash'};
fqbins_to_service_and_rpc_name(<<"Etcd.Maintenance">>, <<"HashKV">>) ->
    {'Etcd.Maintenance', 'HashKV'};
fqbins_to_service_and_rpc_name(<<"Etcd.Maintenance">>, <<"Snapshot">>) ->
    {'Etcd.Maintenance', 'Snapshot'};
fqbins_to_service_and_rpc_name(<<"Etcd.Maintenance">>, <<"MoveLeader">>) ->
    {'Etcd.Maintenance', 'MoveLeader'};
fqbins_to_service_and_rpc_name(<<"Etcd.Auth">>, <<"AuthEnable">>) ->
    {'Etcd.Auth', 'AuthEnable'};
fqbins_to_service_and_rpc_name(<<"Etcd.Auth">>, <<"AuthDisable">>) ->
    {'Etcd.Auth', 'AuthDisable'};
fqbins_to_service_and_rpc_name(<<"Etcd.Auth">>, <<"Authenticate">>) ->
    {'Etcd.Auth', 'Authenticate'};
fqbins_to_service_and_rpc_name(<<"Etcd.Auth">>, <<"UserAdd">>) ->
    {'Etcd.Auth', 'UserAdd'};
fqbins_to_service_and_rpc_name(<<"Etcd.Auth">>, <<"UserGet">>) ->
    {'Etcd.Auth', 'UserGet'};
fqbins_to_service_and_rpc_name(<<"Etcd.Auth">>, <<"UserList">>) ->
    {'Etcd.Auth', 'UserList'};
fqbins_to_service_and_rpc_name(<<"Etcd.Auth">>, <<"UserDelete">>) ->
    {'Etcd.Auth', 'UserDelete'};
fqbins_to_service_and_rpc_name(<<"Etcd.Auth">>, <<"UserChangePassword">>) ->
    {'Etcd.Auth', 'UserChangePassword'};
fqbins_to_service_and_rpc_name(<<"Etcd.Auth">>, <<"UserGrantRole">>) ->
    {'Etcd.Auth', 'UserGrantRole'};
fqbins_to_service_and_rpc_name(<<"Etcd.Auth">>, <<"UserRevokeRole">>) ->
    {'Etcd.Auth', 'UserRevokeRole'};
fqbins_to_service_and_rpc_name(<<"Etcd.Auth">>, <<"RoleAdd">>) ->
    {'Etcd.Auth', 'RoleAdd'};
fqbins_to_service_and_rpc_name(<<"Etcd.Auth">>, <<"RoleGet">>) ->
    {'Etcd.Auth', 'RoleGet'};
fqbins_to_service_and_rpc_name(<<"Etcd.Auth">>, <<"RoleList">>) ->
    {'Etcd.Auth', 'RoleList'};
fqbins_to_service_and_rpc_name(<<"Etcd.Auth">>, <<"RoleDelete">>) ->
    {'Etcd.Auth', 'RoleDelete'};
fqbins_to_service_and_rpc_name(<<"Etcd.Auth">>, <<"RoleGrantPermission">>) ->
    {'Etcd.Auth', 'RoleGrantPermission'};
fqbins_to_service_and_rpc_name(<<"Etcd.Auth">>, <<"RoleRevokePermission">>) ->
    {'Etcd.Auth', 'RoleRevokePermission'};
fqbins_to_service_and_rpc_name(<<"Etcd.Health">>, <<"Check">>) ->
    {'Etcd.Health', 'Check'};
fqbins_to_service_and_rpc_name(<<"Etcd.Health">>, <<"Watch">>) ->
    {'Etcd.Health', 'Watch'};
fqbins_to_service_and_rpc_name(<<"Etcd.Lock">>, <<"Lock">>) ->
    {'Etcd.Lock', 'Lock'};
fqbins_to_service_and_rpc_name(<<"Etcd.Lock">>, <<"Unlock">>) ->
    {'Etcd.Lock', 'Unlock'};
fqbins_to_service_and_rpc_name(<<"Etcd.Election">>, <<"Campaign">>) ->
    {'Etcd.Election', 'Campaign'};
fqbins_to_service_and_rpc_name(<<"Etcd.Election">>, <<"Proclaim">>) ->
    {'Etcd.Election', 'Proclaim'};
fqbins_to_service_and_rpc_name(<<"Etcd.Election">>, <<"Leader">>) ->
    {'Etcd.Election', 'Leader'};
fqbins_to_service_and_rpc_name(<<"Etcd.Election">>, <<"Observe">>) ->
    {'Etcd.Election', 'Observe'};
fqbins_to_service_and_rpc_name(<<"Etcd.Election">>, <<"Resign">>) ->
    {'Etcd.Election', 'Resign'};
fqbins_to_service_and_rpc_name(S, R) ->
    error({gpb_error, {badservice_or_rpc, {S, R}}}).


%% Convert a service name and an rpc name, both as atoms,
%% to a fully qualified (ie with package name) service name and
%% an rpc name as binaries.
service_and_rpc_name_to_fqbins('Etcd.KV', 'Range') ->
    {<<"Etcd.KV">>, <<"Range">>};
service_and_rpc_name_to_fqbins('Etcd.KV', 'Put') ->
    {<<"Etcd.KV">>, <<"Put">>};
service_and_rpc_name_to_fqbins('Etcd.KV',
			       'DeleteRange') ->
    {<<"Etcd.KV">>, <<"DeleteRange">>};
service_and_rpc_name_to_fqbins('Etcd.KV', 'Txn') ->
    {<<"Etcd.KV">>, <<"Txn">>};
service_and_rpc_name_to_fqbins('Etcd.KV', 'Compact') ->
    {<<"Etcd.KV">>, <<"Compact">>};
service_and_rpc_name_to_fqbins('Etcd.Watch', 'Watch') ->
    {<<"Etcd.Watch">>, <<"Watch">>};
service_and_rpc_name_to_fqbins('Etcd.Lease',
			       'LeaseGrant') ->
    {<<"Etcd.Lease">>, <<"LeaseGrant">>};
service_and_rpc_name_to_fqbins('Etcd.Lease',
			       'LeaseRevoke') ->
    {<<"Etcd.Lease">>, <<"LeaseRevoke">>};
service_and_rpc_name_to_fqbins('Etcd.Lease',
			       'LeaseKeepAlive') ->
    {<<"Etcd.Lease">>, <<"LeaseKeepAlive">>};
service_and_rpc_name_to_fqbins('Etcd.Lease',
			       'LeaseTimeToLive') ->
    {<<"Etcd.Lease">>, <<"LeaseTimeToLive">>};
service_and_rpc_name_to_fqbins('Etcd.Lease',
			       'LeaseLeases') ->
    {<<"Etcd.Lease">>, <<"LeaseLeases">>};
service_and_rpc_name_to_fqbins('Etcd.Cluster',
			       'MemberAdd') ->
    {<<"Etcd.Cluster">>, <<"MemberAdd">>};
service_and_rpc_name_to_fqbins('Etcd.Cluster',
			       'MemberRemove') ->
    {<<"Etcd.Cluster">>, <<"MemberRemove">>};
service_and_rpc_name_to_fqbins('Etcd.Cluster',
			       'MemberUpdate') ->
    {<<"Etcd.Cluster">>, <<"MemberUpdate">>};
service_and_rpc_name_to_fqbins('Etcd.Cluster',
			       'MemberList') ->
    {<<"Etcd.Cluster">>, <<"MemberList">>};
service_and_rpc_name_to_fqbins('Etcd.Cluster',
			       'MemberPromote') ->
    {<<"Etcd.Cluster">>, <<"MemberPromote">>};
service_and_rpc_name_to_fqbins('Etcd.Maintenance',
			       'Alarm') ->
    {<<"Etcd.Maintenance">>, <<"Alarm">>};
service_and_rpc_name_to_fqbins('Etcd.Maintenance',
			       'Status') ->
    {<<"Etcd.Maintenance">>, <<"Status">>};
service_and_rpc_name_to_fqbins('Etcd.Maintenance',
			       'Defragment') ->
    {<<"Etcd.Maintenance">>, <<"Defragment">>};
service_and_rpc_name_to_fqbins('Etcd.Maintenance',
			       'Hash') ->
    {<<"Etcd.Maintenance">>, <<"Hash">>};
service_and_rpc_name_to_fqbins('Etcd.Maintenance',
			       'HashKV') ->
    {<<"Etcd.Maintenance">>, <<"HashKV">>};
service_and_rpc_name_to_fqbins('Etcd.Maintenance',
			       'Snapshot') ->
    {<<"Etcd.Maintenance">>, <<"Snapshot">>};
service_and_rpc_name_to_fqbins('Etcd.Maintenance',
			       'MoveLeader') ->
    {<<"Etcd.Maintenance">>, <<"MoveLeader">>};
service_and_rpc_name_to_fqbins('Etcd.Auth',
			       'AuthEnable') ->
    {<<"Etcd.Auth">>, <<"AuthEnable">>};
service_and_rpc_name_to_fqbins('Etcd.Auth',
			       'AuthDisable') ->
    {<<"Etcd.Auth">>, <<"AuthDisable">>};
service_and_rpc_name_to_fqbins('Etcd.Auth',
			       'Authenticate') ->
    {<<"Etcd.Auth">>, <<"Authenticate">>};
service_and_rpc_name_to_fqbins('Etcd.Auth',
			       'UserAdd') ->
    {<<"Etcd.Auth">>, <<"UserAdd">>};
service_and_rpc_name_to_fqbins('Etcd.Auth',
			       'UserGet') ->
    {<<"Etcd.Auth">>, <<"UserGet">>};
service_and_rpc_name_to_fqbins('Etcd.Auth',
			       'UserList') ->
    {<<"Etcd.Auth">>, <<"UserList">>};
service_and_rpc_name_to_fqbins('Etcd.Auth',
			       'UserDelete') ->
    {<<"Etcd.Auth">>, <<"UserDelete">>};
service_and_rpc_name_to_fqbins('Etcd.Auth',
			       'UserChangePassword') ->
    {<<"Etcd.Auth">>, <<"UserChangePassword">>};
service_and_rpc_name_to_fqbins('Etcd.Auth',
			       'UserGrantRole') ->
    {<<"Etcd.Auth">>, <<"UserGrantRole">>};
service_and_rpc_name_to_fqbins('Etcd.Auth',
			       'UserRevokeRole') ->
    {<<"Etcd.Auth">>, <<"UserRevokeRole">>};
service_and_rpc_name_to_fqbins('Etcd.Auth',
			       'RoleAdd') ->
    {<<"Etcd.Auth">>, <<"RoleAdd">>};
service_and_rpc_name_to_fqbins('Etcd.Auth',
			       'RoleGet') ->
    {<<"Etcd.Auth">>, <<"RoleGet">>};
service_and_rpc_name_to_fqbins('Etcd.Auth',
			       'RoleList') ->
    {<<"Etcd.Auth">>, <<"RoleList">>};
service_and_rpc_name_to_fqbins('Etcd.Auth',
			       'RoleDelete') ->
    {<<"Etcd.Auth">>, <<"RoleDelete">>};
service_and_rpc_name_to_fqbins('Etcd.Auth',
			       'RoleGrantPermission') ->
    {<<"Etcd.Auth">>, <<"RoleGrantPermission">>};
service_and_rpc_name_to_fqbins('Etcd.Auth',
			       'RoleRevokePermission') ->
    {<<"Etcd.Auth">>, <<"RoleRevokePermission">>};
service_and_rpc_name_to_fqbins('Etcd.Health',
			       'Check') ->
    {<<"Etcd.Health">>, <<"Check">>};
service_and_rpc_name_to_fqbins('Etcd.Health',
			       'Watch') ->
    {<<"Etcd.Health">>, <<"Watch">>};
service_and_rpc_name_to_fqbins('Etcd.Lock', 'Lock') ->
    {<<"Etcd.Lock">>, <<"Lock">>};
service_and_rpc_name_to_fqbins('Etcd.Lock', 'Unlock') ->
    {<<"Etcd.Lock">>, <<"Unlock">>};
service_and_rpc_name_to_fqbins('Etcd.Election',
			       'Campaign') ->
    {<<"Etcd.Election">>, <<"Campaign">>};
service_and_rpc_name_to_fqbins('Etcd.Election',
			       'Proclaim') ->
    {<<"Etcd.Election">>, <<"Proclaim">>};
service_and_rpc_name_to_fqbins('Etcd.Election',
			       'Leader') ->
    {<<"Etcd.Election">>, <<"Leader">>};
service_and_rpc_name_to_fqbins('Etcd.Election',
			       'Observe') ->
    {<<"Etcd.Election">>, <<"Observe">>};
service_and_rpc_name_to_fqbins('Etcd.Election',
			       'Resign') ->
    {<<"Etcd.Election">>, <<"Resign">>};
service_and_rpc_name_to_fqbins(S, R) ->
    error({gpb_error, {badservice_or_rpc, {S, R}}}).


fqbin_to_msg_name(<<"Etcd.ResponseHeader">>) -> 'Etcd.ResponseHeader';
fqbin_to_msg_name(<<"Etcd.RangeRequest">>) -> 'Etcd.RangeRequest';
fqbin_to_msg_name(<<"Etcd.RangeResponse">>) -> 'Etcd.RangeResponse';
fqbin_to_msg_name(<<"Etcd.PutRequest">>) -> 'Etcd.PutRequest';
fqbin_to_msg_name(<<"Etcd.PutResponse">>) -> 'Etcd.PutResponse';
fqbin_to_msg_name(<<"Etcd.DeleteRangeRequest">>) -> 'Etcd.DeleteRangeRequest';
fqbin_to_msg_name(<<"Etcd.DeleteRangeResponse">>) ->
    'Etcd.DeleteRangeResponse';
fqbin_to_msg_name(<<"Etcd.RequestOp">>) -> 'Etcd.RequestOp';
fqbin_to_msg_name(<<"Etcd.ResponseOp">>) -> 'Etcd.ResponseOp';
fqbin_to_msg_name(<<"Etcd.Compare">>) -> 'Etcd.Compare';
fqbin_to_msg_name(<<"Etcd.TxnRequest">>) -> 'Etcd.TxnRequest';
fqbin_to_msg_name(<<"Etcd.TxnResponse">>) -> 'Etcd.TxnResponse';
fqbin_to_msg_name(<<"Etcd.CompactionRequest">>) -> 'Etcd.CompactionRequest';
fqbin_to_msg_name(<<"Etcd.CompactionResponse">>) -> 'Etcd.CompactionResponse';
fqbin_to_msg_name(<<"Etcd.HashRequest">>) -> 'Etcd.HashRequest';
fqbin_to_msg_name(<<"Etcd.HashKVRequest">>) -> 'Etcd.HashKVRequest';
fqbin_to_msg_name(<<"Etcd.HashKVResponse">>) -> 'Etcd.HashKVResponse';
fqbin_to_msg_name(<<"Etcd.HashResponse">>) -> 'Etcd.HashResponse';
fqbin_to_msg_name(<<"Etcd.SnapshotRequest">>) -> 'Etcd.SnapshotRequest';
fqbin_to_msg_name(<<"Etcd.SnapshotResponse">>) -> 'Etcd.SnapshotResponse';
fqbin_to_msg_name(<<"Etcd.WatchRequest">>) -> 'Etcd.WatchRequest';
fqbin_to_msg_name(<<"Etcd.WatchCreateRequest">>) -> 'Etcd.WatchCreateRequest';
fqbin_to_msg_name(<<"Etcd.WatchCancelRequest">>) -> 'Etcd.WatchCancelRequest';
fqbin_to_msg_name(<<"Etcd.WatchProgressRequest">>) ->
    'Etcd.WatchProgressRequest';
fqbin_to_msg_name(<<"Etcd.WatchResponse">>) -> 'Etcd.WatchResponse';
fqbin_to_msg_name(<<"Etcd.LeaseGrantRequest">>) -> 'Etcd.LeaseGrantRequest';
fqbin_to_msg_name(<<"Etcd.LeaseGrantResponse">>) -> 'Etcd.LeaseGrantResponse';
fqbin_to_msg_name(<<"Etcd.LeaseRevokeRequest">>) -> 'Etcd.LeaseRevokeRequest';
fqbin_to_msg_name(<<"Etcd.LeaseRevokeResponse">>) ->
    'Etcd.LeaseRevokeResponse';
fqbin_to_msg_name(<<"Etcd.LeaseCheckpoint">>) -> 'Etcd.LeaseCheckpoint';
fqbin_to_msg_name(<<"Etcd.LeaseCheckpointRequest">>) ->
    'Etcd.LeaseCheckpointRequest';
fqbin_to_msg_name(<<"Etcd.LeaseCheckpointResponse">>) ->
    'Etcd.LeaseCheckpointResponse';
fqbin_to_msg_name(<<"Etcd.LeaseKeepAliveRequest">>) ->
    'Etcd.LeaseKeepAliveRequest';
fqbin_to_msg_name(<<"Etcd.LeaseKeepAliveResponse">>) ->
    'Etcd.LeaseKeepAliveResponse';
fqbin_to_msg_name(<<"Etcd.LeaseTimeToLiveRequest">>) ->
    'Etcd.LeaseTimeToLiveRequest';
fqbin_to_msg_name(<<"Etcd.LeaseTimeToLiveResponse">>) ->
    'Etcd.LeaseTimeToLiveResponse';
fqbin_to_msg_name(<<"Etcd.LeaseLeasesRequest">>) -> 'Etcd.LeaseLeasesRequest';
fqbin_to_msg_name(<<"Etcd.LeaseStatus">>) -> 'Etcd.LeaseStatus';
fqbin_to_msg_name(<<"Etcd.LeaseLeasesResponse">>) ->
    'Etcd.LeaseLeasesResponse';
fqbin_to_msg_name(<<"Etcd.Member">>) -> 'Etcd.Member';
fqbin_to_msg_name(<<"Etcd.MemberAddRequest">>) -> 'Etcd.MemberAddRequest';
fqbin_to_msg_name(<<"Etcd.MemberAddResponse">>) -> 'Etcd.MemberAddResponse';
fqbin_to_msg_name(<<"Etcd.MemberRemoveRequest">>) ->
    'Etcd.MemberRemoveRequest';
fqbin_to_msg_name(<<"Etcd.MemberRemoveResponse">>) ->
    'Etcd.MemberRemoveResponse';
fqbin_to_msg_name(<<"Etcd.MemberUpdateRequest">>) ->
    'Etcd.MemberUpdateRequest';
fqbin_to_msg_name(<<"Etcd.MemberUpdateResponse">>) ->
    'Etcd.MemberUpdateResponse';
fqbin_to_msg_name(<<"Etcd.MemberListRequest">>) -> 'Etcd.MemberListRequest';
fqbin_to_msg_name(<<"Etcd.MemberListResponse">>) -> 'Etcd.MemberListResponse';
fqbin_to_msg_name(<<"Etcd.MemberPromoteRequest">>) ->
    'Etcd.MemberPromoteRequest';
fqbin_to_msg_name(<<"Etcd.MemberPromoteResponse">>) ->
    'Etcd.MemberPromoteResponse';
fqbin_to_msg_name(<<"Etcd.DefragmentRequest">>) -> 'Etcd.DefragmentRequest';
fqbin_to_msg_name(<<"Etcd.DefragmentResponse">>) -> 'Etcd.DefragmentResponse';
fqbin_to_msg_name(<<"Etcd.MoveLeaderRequest">>) -> 'Etcd.MoveLeaderRequest';
fqbin_to_msg_name(<<"Etcd.MoveLeaderResponse">>) -> 'Etcd.MoveLeaderResponse';
fqbin_to_msg_name(<<"Etcd.AlarmRequest">>) -> 'Etcd.AlarmRequest';
fqbin_to_msg_name(<<"Etcd.AlarmMember">>) -> 'Etcd.AlarmMember';
fqbin_to_msg_name(<<"Etcd.AlarmResponse">>) -> 'Etcd.AlarmResponse';
fqbin_to_msg_name(<<"Etcd.StatusRequest">>) -> 'Etcd.StatusRequest';
fqbin_to_msg_name(<<"Etcd.StatusResponse">>) -> 'Etcd.StatusResponse';
fqbin_to_msg_name(<<"Etcd.AuthEnableRequest">>) -> 'Etcd.AuthEnableRequest';
fqbin_to_msg_name(<<"Etcd.AuthDisableRequest">>) -> 'Etcd.AuthDisableRequest';
fqbin_to_msg_name(<<"Etcd.AuthenticateRequest">>) ->
    'Etcd.AuthenticateRequest';
fqbin_to_msg_name(<<"Etcd.AuthUserAddRequest">>) -> 'Etcd.AuthUserAddRequest';
fqbin_to_msg_name(<<"Etcd.AuthUserGetRequest">>) -> 'Etcd.AuthUserGetRequest';
fqbin_to_msg_name(<<"Etcd.AuthUserDeleteRequest">>) ->
    'Etcd.AuthUserDeleteRequest';
fqbin_to_msg_name(<<"Etcd.AuthUserChangePasswordRequest">>) ->
    'Etcd.AuthUserChangePasswordRequest';
fqbin_to_msg_name(<<"Etcd.AuthUserGrantRoleRequest">>) ->
    'Etcd.AuthUserGrantRoleRequest';
fqbin_to_msg_name(<<"Etcd.AuthUserRevokeRoleRequest">>) ->
    'Etcd.AuthUserRevokeRoleRequest';
fqbin_to_msg_name(<<"Etcd.AuthRoleAddRequest">>) -> 'Etcd.AuthRoleAddRequest';
fqbin_to_msg_name(<<"Etcd.AuthRoleGetRequest">>) -> 'Etcd.AuthRoleGetRequest';
fqbin_to_msg_name(<<"Etcd.AuthUserListRequest">>) ->
    'Etcd.AuthUserListRequest';
fqbin_to_msg_name(<<"Etcd.AuthRoleListRequest">>) ->
    'Etcd.AuthRoleListRequest';
fqbin_to_msg_name(<<"Etcd.AuthRoleDeleteRequest">>) ->
    'Etcd.AuthRoleDeleteRequest';
fqbin_to_msg_name(<<"Etcd.AuthRoleGrantPermissionRequest">>) ->
    'Etcd.AuthRoleGrantPermissionRequest';
fqbin_to_msg_name(<<"Etcd.AuthRoleRevokePermissionRequest">>) ->
    'Etcd.AuthRoleRevokePermissionRequest';
fqbin_to_msg_name(<<"Etcd.AuthEnableResponse">>) -> 'Etcd.AuthEnableResponse';
fqbin_to_msg_name(<<"Etcd.AuthDisableResponse">>) ->
    'Etcd.AuthDisableResponse';
fqbin_to_msg_name(<<"Etcd.AuthenticateResponse">>) ->
    'Etcd.AuthenticateResponse';
fqbin_to_msg_name(<<"Etcd.AuthUserAddResponse">>) ->
    'Etcd.AuthUserAddResponse';
fqbin_to_msg_name(<<"Etcd.AuthUserGetResponse">>) ->
    'Etcd.AuthUserGetResponse';
fqbin_to_msg_name(<<"Etcd.AuthUserDeleteResponse">>) ->
    'Etcd.AuthUserDeleteResponse';
fqbin_to_msg_name(<<"Etcd.AuthUserChangePasswordResponse">>) ->
    'Etcd.AuthUserChangePasswordResponse';
fqbin_to_msg_name(<<"Etcd.AuthUserGrantRoleResponse">>) ->
    'Etcd.AuthUserGrantRoleResponse';
fqbin_to_msg_name(<<"Etcd.AuthUserRevokeRoleResponse">>) ->
    'Etcd.AuthUserRevokeRoleResponse';
fqbin_to_msg_name(<<"Etcd.AuthRoleAddResponse">>) ->
    'Etcd.AuthRoleAddResponse';
fqbin_to_msg_name(<<"Etcd.AuthRoleGetResponse">>) ->
    'Etcd.AuthRoleGetResponse';
fqbin_to_msg_name(<<"Etcd.AuthRoleListResponse">>) ->
    'Etcd.AuthRoleListResponse';
fqbin_to_msg_name(<<"Etcd.AuthUserListResponse">>) ->
    'Etcd.AuthUserListResponse';
fqbin_to_msg_name(<<"Etcd.AuthRoleDeleteResponse">>) ->
    'Etcd.AuthRoleDeleteResponse';
fqbin_to_msg_name(<<"Etcd.AuthRoleGrantPermissionResponse">>) ->
    'Etcd.AuthRoleGrantPermissionResponse';
fqbin_to_msg_name(<<"Etcd.AuthRoleRevokePermissionResponse">>) ->
    'Etcd.AuthRoleRevokePermissionResponse';
fqbin_to_msg_name(<<"Etcd.HealthCheckRequest">>) -> 'Etcd.HealthCheckRequest';
fqbin_to_msg_name(<<"Etcd.HealthCheckResponse">>) ->
    'Etcd.HealthCheckResponse';
fqbin_to_msg_name(<<"Etcd.LockRequest">>) -> 'Etcd.LockRequest';
fqbin_to_msg_name(<<"Etcd.LockResponse">>) -> 'Etcd.LockResponse';
fqbin_to_msg_name(<<"Etcd.UnlockRequest">>) -> 'Etcd.UnlockRequest';
fqbin_to_msg_name(<<"Etcd.UnlockResponse">>) -> 'Etcd.UnlockResponse';
fqbin_to_msg_name(<<"Etcd.CampaignRequest">>) -> 'Etcd.CampaignRequest';
fqbin_to_msg_name(<<"Etcd.CampaignResponse">>) -> 'Etcd.CampaignResponse';
fqbin_to_msg_name(<<"Etcd.LeaderKey">>) -> 'Etcd.LeaderKey';
fqbin_to_msg_name(<<"Etcd.LeaderRequest">>) -> 'Etcd.LeaderRequest';
fqbin_to_msg_name(<<"Etcd.LeaderResponse">>) -> 'Etcd.LeaderResponse';
fqbin_to_msg_name(<<"Etcd.ResignRequest">>) -> 'Etcd.ResignRequest';
fqbin_to_msg_name(<<"Etcd.ResignResponse">>) -> 'Etcd.ResignResponse';
fqbin_to_msg_name(<<"Etcd.ProclaimRequest">>) -> 'Etcd.ProclaimRequest';
fqbin_to_msg_name(<<"Etcd.ProclaimResponse">>) -> 'Etcd.ProclaimResponse';
fqbin_to_msg_name(<<"google.protobuf.FileDescriptorSet">>) ->
    'google.protobuf.FileDescriptorSet';
fqbin_to_msg_name(<<"google.protobuf.FileDescriptorProto">>) ->
    'google.protobuf.FileDescriptorProto';
fqbin_to_msg_name(<<"google.protobuf.DescriptorProto.ExtensionRange">>) ->
    'google.protobuf.DescriptorProto.ExtensionRange';
fqbin_to_msg_name(<<"google.protobuf.DescriptorProto.ReservedRange">>) ->
    'google.protobuf.DescriptorProto.ReservedRange';
fqbin_to_msg_name(<<"google.protobuf.DescriptorProto">>) ->
    'google.protobuf.DescriptorProto';
fqbin_to_msg_name(<<"google.protobuf.FieldDescriptorProto">>) ->
    'google.protobuf.FieldDescriptorProto';
fqbin_to_msg_name(<<"google.protobuf.OneofDescriptorProto">>) ->
    'google.protobuf.OneofDescriptorProto';
fqbin_to_msg_name(<<"google.protobuf.EnumDescriptorProto">>) ->
    'google.protobuf.EnumDescriptorProto';
fqbin_to_msg_name(<<"google.protobuf.EnumValueDescriptorProto">>) ->
    'google.protobuf.EnumValueDescriptorProto';
fqbin_to_msg_name(<<"google.protobuf.ServiceDescriptorProto">>) ->
    'google.protobuf.ServiceDescriptorProto';
fqbin_to_msg_name(<<"google.protobuf.MethodDescriptorProto">>) ->
    'google.protobuf.MethodDescriptorProto';
fqbin_to_msg_name(<<"google.protobuf.FileOptions">>) ->
    'google.protobuf.FileOptions';
fqbin_to_msg_name(<<"google.protobuf.MessageOptions">>) ->
    'google.protobuf.MessageOptions';
fqbin_to_msg_name(<<"google.protobuf.FieldOptions">>) ->
    'google.protobuf.FieldOptions';
fqbin_to_msg_name(<<"google.protobuf.EnumOptions">>) ->
    'google.protobuf.EnumOptions';
fqbin_to_msg_name(<<"google.protobuf.EnumValueOptions">>) ->
    'google.protobuf.EnumValueOptions';
fqbin_to_msg_name(<<"google.protobuf.ServiceOptions">>) ->
    'google.protobuf.ServiceOptions';
fqbin_to_msg_name(<<"google.protobuf.MethodOptions">>) ->
    'google.protobuf.MethodOptions';
fqbin_to_msg_name(<<"google.protobuf.UninterpretedOption.NamePart">>) ->
    'google.protobuf.UninterpretedOption.NamePart';
fqbin_to_msg_name(<<"google.protobuf.UninterpretedOption">>) ->
    'google.protobuf.UninterpretedOption';
fqbin_to_msg_name(<<"google.protobuf.SourceCodeInfo.Location">>) ->
    'google.protobuf.SourceCodeInfo.Location';
fqbin_to_msg_name(<<"google.protobuf.SourceCodeInfo">>) ->
    'google.protobuf.SourceCodeInfo';
fqbin_to_msg_name(<<"google.protobuf.GeneratedCodeInfo.Annotation">>) ->
    'google.protobuf.GeneratedCodeInfo.Annotation';
fqbin_to_msg_name(<<"google.protobuf.GeneratedCodeInfo">>) ->
    'google.protobuf.GeneratedCodeInfo';
fqbin_to_msg_name(<<"mvccpb.KeyValue">>) -> 'mvccpb.KeyValue';
fqbin_to_msg_name(<<"mvccpb.Event">>) -> 'mvccpb.Event';
fqbin_to_msg_name(<<"authpb.UserAddOptions">>) -> 'authpb.UserAddOptions';
fqbin_to_msg_name(<<"authpb.User">>) -> 'authpb.User';
fqbin_to_msg_name(<<"authpb.Permission">>) -> 'authpb.Permission';
fqbin_to_msg_name(<<"authpb.Role">>) -> 'authpb.Role';
fqbin_to_msg_name(E) -> error({gpb_error, {badmsg, E}}).


msg_name_to_fqbin('Etcd.ResponseHeader') -> <<"Etcd.ResponseHeader">>;
msg_name_to_fqbin('Etcd.RangeRequest') -> <<"Etcd.RangeRequest">>;
msg_name_to_fqbin('Etcd.RangeResponse') -> <<"Etcd.RangeResponse">>;
msg_name_to_fqbin('Etcd.PutRequest') -> <<"Etcd.PutRequest">>;
msg_name_to_fqbin('Etcd.PutResponse') -> <<"Etcd.PutResponse">>;
msg_name_to_fqbin('Etcd.DeleteRangeRequest') -> <<"Etcd.DeleteRangeRequest">>;
msg_name_to_fqbin('Etcd.DeleteRangeResponse') ->
    <<"Etcd.DeleteRangeResponse">>;
msg_name_to_fqbin('Etcd.RequestOp') -> <<"Etcd.RequestOp">>;
msg_name_to_fqbin('Etcd.ResponseOp') -> <<"Etcd.ResponseOp">>;
msg_name_to_fqbin('Etcd.Compare') -> <<"Etcd.Compare">>;
msg_name_to_fqbin('Etcd.TxnRequest') -> <<"Etcd.TxnRequest">>;
msg_name_to_fqbin('Etcd.TxnResponse') -> <<"Etcd.TxnResponse">>;
msg_name_to_fqbin('Etcd.CompactionRequest') -> <<"Etcd.CompactionRequest">>;
msg_name_to_fqbin('Etcd.CompactionResponse') -> <<"Etcd.CompactionResponse">>;
msg_name_to_fqbin('Etcd.HashRequest') -> <<"Etcd.HashRequest">>;
msg_name_to_fqbin('Etcd.HashKVRequest') -> <<"Etcd.HashKVRequest">>;
msg_name_to_fqbin('Etcd.HashKVResponse') -> <<"Etcd.HashKVResponse">>;
msg_name_to_fqbin('Etcd.HashResponse') -> <<"Etcd.HashResponse">>;
msg_name_to_fqbin('Etcd.SnapshotRequest') -> <<"Etcd.SnapshotRequest">>;
msg_name_to_fqbin('Etcd.SnapshotResponse') -> <<"Etcd.SnapshotResponse">>;
msg_name_to_fqbin('Etcd.WatchRequest') -> <<"Etcd.WatchRequest">>;
msg_name_to_fqbin('Etcd.WatchCreateRequest') -> <<"Etcd.WatchCreateRequest">>;
msg_name_to_fqbin('Etcd.WatchCancelRequest') -> <<"Etcd.WatchCancelRequest">>;
msg_name_to_fqbin('Etcd.WatchProgressRequest') ->
    <<"Etcd.WatchProgressRequest">>;
msg_name_to_fqbin('Etcd.WatchResponse') -> <<"Etcd.WatchResponse">>;
msg_name_to_fqbin('Etcd.LeaseGrantRequest') -> <<"Etcd.LeaseGrantRequest">>;
msg_name_to_fqbin('Etcd.LeaseGrantResponse') -> <<"Etcd.LeaseGrantResponse">>;
msg_name_to_fqbin('Etcd.LeaseRevokeRequest') -> <<"Etcd.LeaseRevokeRequest">>;
msg_name_to_fqbin('Etcd.LeaseRevokeResponse') ->
    <<"Etcd.LeaseRevokeResponse">>;
msg_name_to_fqbin('Etcd.LeaseCheckpoint') -> <<"Etcd.LeaseCheckpoint">>;
msg_name_to_fqbin('Etcd.LeaseCheckpointRequest') ->
    <<"Etcd.LeaseCheckpointRequest">>;
msg_name_to_fqbin('Etcd.LeaseCheckpointResponse') ->
    <<"Etcd.LeaseCheckpointResponse">>;
msg_name_to_fqbin('Etcd.LeaseKeepAliveRequest') ->
    <<"Etcd.LeaseKeepAliveRequest">>;
msg_name_to_fqbin('Etcd.LeaseKeepAliveResponse') ->
    <<"Etcd.LeaseKeepAliveResponse">>;
msg_name_to_fqbin('Etcd.LeaseTimeToLiveRequest') ->
    <<"Etcd.LeaseTimeToLiveRequest">>;
msg_name_to_fqbin('Etcd.LeaseTimeToLiveResponse') ->
    <<"Etcd.LeaseTimeToLiveResponse">>;
msg_name_to_fqbin('Etcd.LeaseLeasesRequest') -> <<"Etcd.LeaseLeasesRequest">>;
msg_name_to_fqbin('Etcd.LeaseStatus') -> <<"Etcd.LeaseStatus">>;
msg_name_to_fqbin('Etcd.LeaseLeasesResponse') ->
    <<"Etcd.LeaseLeasesResponse">>;
msg_name_to_fqbin('Etcd.Member') -> <<"Etcd.Member">>;
msg_name_to_fqbin('Etcd.MemberAddRequest') -> <<"Etcd.MemberAddRequest">>;
msg_name_to_fqbin('Etcd.MemberAddResponse') -> <<"Etcd.MemberAddResponse">>;
msg_name_to_fqbin('Etcd.MemberRemoveRequest') ->
    <<"Etcd.MemberRemoveRequest">>;
msg_name_to_fqbin('Etcd.MemberRemoveResponse') ->
    <<"Etcd.MemberRemoveResponse">>;
msg_name_to_fqbin('Etcd.MemberUpdateRequest') ->
    <<"Etcd.MemberUpdateRequest">>;
msg_name_to_fqbin('Etcd.MemberUpdateResponse') ->
    <<"Etcd.MemberUpdateResponse">>;
msg_name_to_fqbin('Etcd.MemberListRequest') -> <<"Etcd.MemberListRequest">>;
msg_name_to_fqbin('Etcd.MemberListResponse') -> <<"Etcd.MemberListResponse">>;
msg_name_to_fqbin('Etcd.MemberPromoteRequest') ->
    <<"Etcd.MemberPromoteRequest">>;
msg_name_to_fqbin('Etcd.MemberPromoteResponse') ->
    <<"Etcd.MemberPromoteResponse">>;
msg_name_to_fqbin('Etcd.DefragmentRequest') -> <<"Etcd.DefragmentRequest">>;
msg_name_to_fqbin('Etcd.DefragmentResponse') -> <<"Etcd.DefragmentResponse">>;
msg_name_to_fqbin('Etcd.MoveLeaderRequest') -> <<"Etcd.MoveLeaderRequest">>;
msg_name_to_fqbin('Etcd.MoveLeaderResponse') -> <<"Etcd.MoveLeaderResponse">>;
msg_name_to_fqbin('Etcd.AlarmRequest') -> <<"Etcd.AlarmRequest">>;
msg_name_to_fqbin('Etcd.AlarmMember') -> <<"Etcd.AlarmMember">>;
msg_name_to_fqbin('Etcd.AlarmResponse') -> <<"Etcd.AlarmResponse">>;
msg_name_to_fqbin('Etcd.StatusRequest') -> <<"Etcd.StatusRequest">>;
msg_name_to_fqbin('Etcd.StatusResponse') -> <<"Etcd.StatusResponse">>;
msg_name_to_fqbin('Etcd.AuthEnableRequest') -> <<"Etcd.AuthEnableRequest">>;
msg_name_to_fqbin('Etcd.AuthDisableRequest') -> <<"Etcd.AuthDisableRequest">>;
msg_name_to_fqbin('Etcd.AuthenticateRequest') ->
    <<"Etcd.AuthenticateRequest">>;
msg_name_to_fqbin('Etcd.AuthUserAddRequest') -> <<"Etcd.AuthUserAddRequest">>;
msg_name_to_fqbin('Etcd.AuthUserGetRequest') -> <<"Etcd.AuthUserGetRequest">>;
msg_name_to_fqbin('Etcd.AuthUserDeleteRequest') ->
    <<"Etcd.AuthUserDeleteRequest">>;
msg_name_to_fqbin('Etcd.AuthUserChangePasswordRequest') ->
    <<"Etcd.AuthUserChangePasswordRequest">>;
msg_name_to_fqbin('Etcd.AuthUserGrantRoleRequest') ->
    <<"Etcd.AuthUserGrantRoleRequest">>;
msg_name_to_fqbin('Etcd.AuthUserRevokeRoleRequest') ->
    <<"Etcd.AuthUserRevokeRoleRequest">>;
msg_name_to_fqbin('Etcd.AuthRoleAddRequest') -> <<"Etcd.AuthRoleAddRequest">>;
msg_name_to_fqbin('Etcd.AuthRoleGetRequest') -> <<"Etcd.AuthRoleGetRequest">>;
msg_name_to_fqbin('Etcd.AuthUserListRequest') ->
    <<"Etcd.AuthUserListRequest">>;
msg_name_to_fqbin('Etcd.AuthRoleListRequest') ->
    <<"Etcd.AuthRoleListRequest">>;
msg_name_to_fqbin('Etcd.AuthRoleDeleteRequest') ->
    <<"Etcd.AuthRoleDeleteRequest">>;
msg_name_to_fqbin('Etcd.AuthRoleGrantPermissionRequest') ->
    <<"Etcd.AuthRoleGrantPermissionRequest">>;
msg_name_to_fqbin('Etcd.AuthRoleRevokePermissionRequest') ->
    <<"Etcd.AuthRoleRevokePermissionRequest">>;
msg_name_to_fqbin('Etcd.AuthEnableResponse') -> <<"Etcd.AuthEnableResponse">>;
msg_name_to_fqbin('Etcd.AuthDisableResponse') ->
    <<"Etcd.AuthDisableResponse">>;
msg_name_to_fqbin('Etcd.AuthenticateResponse') ->
    <<"Etcd.AuthenticateResponse">>;
msg_name_to_fqbin('Etcd.AuthUserAddResponse') ->
    <<"Etcd.AuthUserAddResponse">>;
msg_name_to_fqbin('Etcd.AuthUserGetResponse') ->
    <<"Etcd.AuthUserGetResponse">>;
msg_name_to_fqbin('Etcd.AuthUserDeleteResponse') ->
    <<"Etcd.AuthUserDeleteResponse">>;
msg_name_to_fqbin('Etcd.AuthUserChangePasswordResponse') ->
    <<"Etcd.AuthUserChangePasswordResponse">>;
msg_name_to_fqbin('Etcd.AuthUserGrantRoleResponse') ->
    <<"Etcd.AuthUserGrantRoleResponse">>;
msg_name_to_fqbin('Etcd.AuthUserRevokeRoleResponse') ->
    <<"Etcd.AuthUserRevokeRoleResponse">>;
msg_name_to_fqbin('Etcd.AuthRoleAddResponse') ->
    <<"Etcd.AuthRoleAddResponse">>;
msg_name_to_fqbin('Etcd.AuthRoleGetResponse') ->
    <<"Etcd.AuthRoleGetResponse">>;
msg_name_to_fqbin('Etcd.AuthRoleListResponse') ->
    <<"Etcd.AuthRoleListResponse">>;
msg_name_to_fqbin('Etcd.AuthUserListResponse') ->
    <<"Etcd.AuthUserListResponse">>;
msg_name_to_fqbin('Etcd.AuthRoleDeleteResponse') ->
    <<"Etcd.AuthRoleDeleteResponse">>;
msg_name_to_fqbin('Etcd.AuthRoleGrantPermissionResponse') ->
    <<"Etcd.AuthRoleGrantPermissionResponse">>;
msg_name_to_fqbin('Etcd.AuthRoleRevokePermissionResponse') ->
    <<"Etcd.AuthRoleRevokePermissionResponse">>;
msg_name_to_fqbin('Etcd.HealthCheckRequest') -> <<"Etcd.HealthCheckRequest">>;
msg_name_to_fqbin('Etcd.HealthCheckResponse') ->
    <<"Etcd.HealthCheckResponse">>;
msg_name_to_fqbin('Etcd.LockRequest') -> <<"Etcd.LockRequest">>;
msg_name_to_fqbin('Etcd.LockResponse') -> <<"Etcd.LockResponse">>;
msg_name_to_fqbin('Etcd.UnlockRequest') -> <<"Etcd.UnlockRequest">>;
msg_name_to_fqbin('Etcd.UnlockResponse') -> <<"Etcd.UnlockResponse">>;
msg_name_to_fqbin('Etcd.CampaignRequest') -> <<"Etcd.CampaignRequest">>;
msg_name_to_fqbin('Etcd.CampaignResponse') -> <<"Etcd.CampaignResponse">>;
msg_name_to_fqbin('Etcd.LeaderKey') -> <<"Etcd.LeaderKey">>;
msg_name_to_fqbin('Etcd.LeaderRequest') -> <<"Etcd.LeaderRequest">>;
msg_name_to_fqbin('Etcd.LeaderResponse') -> <<"Etcd.LeaderResponse">>;
msg_name_to_fqbin('Etcd.ResignRequest') -> <<"Etcd.ResignRequest">>;
msg_name_to_fqbin('Etcd.ResignResponse') -> <<"Etcd.ResignResponse">>;
msg_name_to_fqbin('Etcd.ProclaimRequest') -> <<"Etcd.ProclaimRequest">>;
msg_name_to_fqbin('Etcd.ProclaimResponse') -> <<"Etcd.ProclaimResponse">>;
msg_name_to_fqbin('google.protobuf.FileDescriptorSet') ->
    <<"google.protobuf.FileDescriptorSet">>;
msg_name_to_fqbin('google.protobuf.FileDescriptorProto') ->
    <<"google.protobuf.FileDescriptorProto">>;
msg_name_to_fqbin('google.protobuf.DescriptorProto.ExtensionRange') ->
    <<"google.protobuf.DescriptorProto.ExtensionRange">>;
msg_name_to_fqbin('google.protobuf.DescriptorProto.ReservedRange') ->
    <<"google.protobuf.DescriptorProto.ReservedRange">>;
msg_name_to_fqbin('google.protobuf.DescriptorProto') ->
    <<"google.protobuf.DescriptorProto">>;
msg_name_to_fqbin('google.protobuf.FieldDescriptorProto') ->
    <<"google.protobuf.FieldDescriptorProto">>;
msg_name_to_fqbin('google.protobuf.OneofDescriptorProto') ->
    <<"google.protobuf.OneofDescriptorProto">>;
msg_name_to_fqbin('google.protobuf.EnumDescriptorProto') ->
    <<"google.protobuf.EnumDescriptorProto">>;
msg_name_to_fqbin('google.protobuf.EnumValueDescriptorProto') ->
    <<"google.protobuf.EnumValueDescriptorProto">>;
msg_name_to_fqbin('google.protobuf.ServiceDescriptorProto') ->
    <<"google.protobuf.ServiceDescriptorProto">>;
msg_name_to_fqbin('google.protobuf.MethodDescriptorProto') ->
    <<"google.protobuf.MethodDescriptorProto">>;
msg_name_to_fqbin('google.protobuf.FileOptions') ->
    <<"google.protobuf.FileOptions">>;
msg_name_to_fqbin('google.protobuf.MessageOptions') ->
    <<"google.protobuf.MessageOptions">>;
msg_name_to_fqbin('google.protobuf.FieldOptions') ->
    <<"google.protobuf.FieldOptions">>;
msg_name_to_fqbin('google.protobuf.EnumOptions') ->
    <<"google.protobuf.EnumOptions">>;
msg_name_to_fqbin('google.protobuf.EnumValueOptions') ->
    <<"google.protobuf.EnumValueOptions">>;
msg_name_to_fqbin('google.protobuf.ServiceOptions') ->
    <<"google.protobuf.ServiceOptions">>;
msg_name_to_fqbin('google.protobuf.MethodOptions') ->
    <<"google.protobuf.MethodOptions">>;
msg_name_to_fqbin('google.protobuf.UninterpretedOption.NamePart') ->
    <<"google.protobuf.UninterpretedOption.NamePart">>;
msg_name_to_fqbin('google.protobuf.UninterpretedOption') ->
    <<"google.protobuf.UninterpretedOption">>;
msg_name_to_fqbin('google.protobuf.SourceCodeInfo.Location') ->
    <<"google.protobuf.SourceCodeInfo.Location">>;
msg_name_to_fqbin('google.protobuf.SourceCodeInfo') ->
    <<"google.protobuf.SourceCodeInfo">>;
msg_name_to_fqbin('google.protobuf.GeneratedCodeInfo.Annotation') ->
    <<"google.protobuf.GeneratedCodeInfo.Annotation">>;
msg_name_to_fqbin('google.protobuf.GeneratedCodeInfo') ->
    <<"google.protobuf.GeneratedCodeInfo">>;
msg_name_to_fqbin('mvccpb.KeyValue') -> <<"mvccpb.KeyValue">>;
msg_name_to_fqbin('mvccpb.Event') -> <<"mvccpb.Event">>;
msg_name_to_fqbin('authpb.UserAddOptions') -> <<"authpb.UserAddOptions">>;
msg_name_to_fqbin('authpb.User') -> <<"authpb.User">>;
msg_name_to_fqbin('authpb.Permission') -> <<"authpb.Permission">>;
msg_name_to_fqbin('authpb.Role') -> <<"authpb.Role">>;
msg_name_to_fqbin(E) -> error({gpb_error, {badmsg, E}}).


fqbin_to_enum_name(<<"Etcd.RangeRequest.SortOrder">>) ->
    'Etcd.RangeRequest.SortOrder';
fqbin_to_enum_name(<<"Etcd.RangeRequest.SortTarget">>) ->
    'Etcd.RangeRequest.SortTarget';
fqbin_to_enum_name(<<"Etcd.Compare.CompareResult">>) ->
    'Etcd.Compare.CompareResult';
fqbin_to_enum_name(<<"Etcd.Compare.CompareTarget">>) ->
    'Etcd.Compare.CompareTarget';
fqbin_to_enum_name(<<"Etcd.WatchCreateRequest.FilterType">>) ->
    'Etcd.WatchCreateRequest.FilterType';
fqbin_to_enum_name(<<"Etcd.AlarmType">>) -> 'Etcd.AlarmType';
fqbin_to_enum_name(<<"Etcd.AlarmRequest.AlarmAction">>) ->
    'Etcd.AlarmRequest.AlarmAction';
fqbin_to_enum_name(<<"Etcd.HealthCheckResponse.ServingStatus">>) ->
    'Etcd.HealthCheckResponse.ServingStatus';
fqbin_to_enum_name(<<"google.protobuf.FieldDescriptorProto.Type">>) ->
    'google.protobuf.FieldDescriptorProto.Type';
fqbin_to_enum_name(<<"google.protobuf.FieldDescriptorProto.Label">>) ->
    'google.protobuf.FieldDescriptorProto.Label';
fqbin_to_enum_name(<<"google.protobuf.FileOptions.OptimizeMode">>) ->
    'google.protobuf.FileOptions.OptimizeMode';
fqbin_to_enum_name(<<"google.protobuf.FieldOptions.CType">>) ->
    'google.protobuf.FieldOptions.CType';
fqbin_to_enum_name(<<"google.protobuf.FieldOptions.JSType">>) ->
    'google.protobuf.FieldOptions.JSType';
fqbin_to_enum_name(<<"mvccpb.Event.EventType">>) -> 'mvccpb.Event.EventType';
fqbin_to_enum_name(<<"authpb.Permission.Type">>) -> 'authpb.Permission.Type';
fqbin_to_enum_name(E) ->
    error({gpb_error, {badenum, E}}).


enum_name_to_fqbin('Etcd.RangeRequest.SortOrder') ->
    <<"Etcd.RangeRequest.SortOrder">>;
enum_name_to_fqbin('Etcd.RangeRequest.SortTarget') ->
    <<"Etcd.RangeRequest.SortTarget">>;
enum_name_to_fqbin('Etcd.Compare.CompareResult') ->
    <<"Etcd.Compare.CompareResult">>;
enum_name_to_fqbin('Etcd.Compare.CompareTarget') ->
    <<"Etcd.Compare.CompareTarget">>;
enum_name_to_fqbin('Etcd.WatchCreateRequest.FilterType') ->
    <<"Etcd.WatchCreateRequest.FilterType">>;
enum_name_to_fqbin('Etcd.AlarmType') -> <<"Etcd.AlarmType">>;
enum_name_to_fqbin('Etcd.AlarmRequest.AlarmAction') ->
    <<"Etcd.AlarmRequest.AlarmAction">>;
enum_name_to_fqbin('Etcd.HealthCheckResponse.ServingStatus') ->
    <<"Etcd.HealthCheckResponse.ServingStatus">>;
enum_name_to_fqbin('google.protobuf.FieldDescriptorProto.Type') ->
    <<"google.protobuf.FieldDescriptorProto.Type">>;
enum_name_to_fqbin('google.protobuf.FieldDescriptorProto.Label') ->
    <<"google.protobuf.FieldDescriptorProto.Label">>;
enum_name_to_fqbin('google.protobuf.FileOptions.OptimizeMode') ->
    <<"google.protobuf.FileOptions.OptimizeMode">>;
enum_name_to_fqbin('google.protobuf.FieldOptions.CType') ->
    <<"google.protobuf.FieldOptions.CType">>;
enum_name_to_fqbin('google.protobuf.FieldOptions.JSType') ->
    <<"google.protobuf.FieldOptions.JSType">>;
enum_name_to_fqbin('mvccpb.Event.EventType') -> <<"mvccpb.Event.EventType">>;
enum_name_to_fqbin('authpb.Permission.Type') -> <<"authpb.Permission.Type">>;
enum_name_to_fqbin(E) ->
    error({gpb_error, {badenum, E}}).


get_package_name() -> 'Etcd'.


%% Whether or not the message names
%% are prepended with package name or not.
uses_packages() -> true.


source_basename() -> "router.proto".


%% Retrieve all proto file names, also imported ones.
%% The order is top-down. The first element is always the main
%% source file. The files are returned with extension,
%% see get_all_proto_names/0 for a version that returns
%% the basenames sans extension
get_all_source_basenames() ->
    ["router.proto", "gogo.proto", "descriptor.proto",
     "kv.proto", "auth.proto"].


%% Retrieve all proto file names, also imported ones.
%% The order is top-down. The first element is always the main
%% source file. The files are returned sans .proto extension,
%% to make it easier to use them with the various get_xyz_containment
%% functions.
get_all_proto_names() ->
    ["router", "gogo", "descriptor", "kv", "auth"].


get_msg_containment("router") ->
    ['Etcd.AlarmMember', 'Etcd.AlarmRequest',
     'Etcd.AlarmResponse', 'Etcd.AuthDisableRequest',
     'Etcd.AuthDisableResponse', 'Etcd.AuthEnableRequest',
     'Etcd.AuthEnableResponse', 'Etcd.AuthRoleAddRequest',
     'Etcd.AuthRoleAddResponse',
     'Etcd.AuthRoleDeleteRequest',
     'Etcd.AuthRoleDeleteResponse',
     'Etcd.AuthRoleGetRequest', 'Etcd.AuthRoleGetResponse',
     'Etcd.AuthRoleGrantPermissionRequest',
     'Etcd.AuthRoleGrantPermissionResponse',
     'Etcd.AuthRoleListRequest', 'Etcd.AuthRoleListResponse',
     'Etcd.AuthRoleRevokePermissionRequest',
     'Etcd.AuthRoleRevokePermissionResponse',
     'Etcd.AuthUserAddRequest', 'Etcd.AuthUserAddResponse',
     'Etcd.AuthUserChangePasswordRequest',
     'Etcd.AuthUserChangePasswordResponse',
     'Etcd.AuthUserDeleteRequest',
     'Etcd.AuthUserDeleteResponse',
     'Etcd.AuthUserGetRequest', 'Etcd.AuthUserGetResponse',
     'Etcd.AuthUserGrantRoleRequest',
     'Etcd.AuthUserGrantRoleResponse',
     'Etcd.AuthUserListRequest', 'Etcd.AuthUserListResponse',
     'Etcd.AuthUserRevokeRoleRequest',
     'Etcd.AuthUserRevokeRoleResponse',
     'Etcd.AuthenticateRequest', 'Etcd.AuthenticateResponse',
     'Etcd.CampaignRequest', 'Etcd.CampaignResponse',
     'Etcd.CompactionRequest', 'Etcd.CompactionResponse',
     'Etcd.Compare', 'Etcd.DefragmentRequest',
     'Etcd.DefragmentResponse', 'Etcd.DeleteRangeRequest',
     'Etcd.DeleteRangeResponse', 'Etcd.HashKVRequest',
     'Etcd.HashKVResponse', 'Etcd.HashRequest',
     'Etcd.HashResponse', 'Etcd.HealthCheckRequest',
     'Etcd.HealthCheckResponse', 'Etcd.LeaderKey',
     'Etcd.LeaderRequest', 'Etcd.LeaderResponse',
     'Etcd.LeaseCheckpoint', 'Etcd.LeaseCheckpointRequest',
     'Etcd.LeaseCheckpointResponse',
     'Etcd.LeaseGrantRequest', 'Etcd.LeaseGrantResponse',
     'Etcd.LeaseKeepAliveRequest',
     'Etcd.LeaseKeepAliveResponse',
     'Etcd.LeaseLeasesRequest', 'Etcd.LeaseLeasesResponse',
     'Etcd.LeaseRevokeRequest', 'Etcd.LeaseRevokeResponse',
     'Etcd.LeaseStatus', 'Etcd.LeaseTimeToLiveRequest',
     'Etcd.LeaseTimeToLiveResponse', 'Etcd.LockRequest',
     'Etcd.LockResponse', 'Etcd.Member',
     'Etcd.MemberAddRequest', 'Etcd.MemberAddResponse',
     'Etcd.MemberListRequest', 'Etcd.MemberListResponse',
     'Etcd.MemberPromoteRequest',
     'Etcd.MemberPromoteResponse',
     'Etcd.MemberRemoveRequest', 'Etcd.MemberRemoveResponse',
     'Etcd.MemberUpdateRequest', 'Etcd.MemberUpdateResponse',
     'Etcd.MoveLeaderRequest', 'Etcd.MoveLeaderResponse',
     'Etcd.ProclaimRequest', 'Etcd.ProclaimResponse',
     'Etcd.PutRequest', 'Etcd.PutResponse',
     'Etcd.RangeRequest', 'Etcd.RangeResponse',
     'Etcd.RequestOp', 'Etcd.ResignRequest',
     'Etcd.ResignResponse', 'Etcd.ResponseHeader',
     'Etcd.ResponseOp', 'Etcd.SnapshotRequest',
     'Etcd.SnapshotResponse', 'Etcd.StatusRequest',
     'Etcd.StatusResponse', 'Etcd.TxnRequest',
     'Etcd.TxnResponse', 'Etcd.UnlockRequest',
     'Etcd.UnlockResponse', 'Etcd.WatchCancelRequest',
     'Etcd.WatchCreateRequest', 'Etcd.WatchProgressRequest',
     'Etcd.WatchRequest', 'Etcd.WatchResponse'];
get_msg_containment("gogo") -> [];
get_msg_containment("descriptor") ->
    ['google.protobuf.DescriptorProto',
     'google.protobuf.DescriptorProto.ExtensionRange',
     'google.protobuf.DescriptorProto.ReservedRange',
     'google.protobuf.EnumDescriptorProto',
     'google.protobuf.EnumOptions',
     'google.protobuf.EnumValueDescriptorProto',
     'google.protobuf.EnumValueOptions',
     'google.protobuf.FieldDescriptorProto',
     'google.protobuf.FieldOptions',
     'google.protobuf.FileDescriptorProto',
     'google.protobuf.FileDescriptorSet',
     'google.protobuf.FileOptions',
     'google.protobuf.GeneratedCodeInfo',
     'google.protobuf.GeneratedCodeInfo.Annotation',
     'google.protobuf.MessageOptions',
     'google.protobuf.MethodDescriptorProto',
     'google.protobuf.MethodOptions',
     'google.protobuf.OneofDescriptorProto',
     'google.protobuf.ServiceDescriptorProto',
     'google.protobuf.ServiceOptions',
     'google.protobuf.SourceCodeInfo',
     'google.protobuf.SourceCodeInfo.Location',
     'google.protobuf.UninterpretedOption',
     'google.protobuf.UninterpretedOption.NamePart'];
get_msg_containment("kv") ->
    ['mvccpb.Event', 'mvccpb.KeyValue'];
get_msg_containment("auth") ->
    ['authpb.Permission', 'authpb.Role', 'authpb.User',
     'authpb.UserAddOptions'];
get_msg_containment(P) ->
    error({gpb_error, {badproto, P}}).


get_pkg_containment("router") -> 'Etcd';
get_pkg_containment("gogo") -> gogoproto;
get_pkg_containment("descriptor") -> 'google.protobuf';
get_pkg_containment("kv") -> mvccpb;
get_pkg_containment("auth") -> authpb;
get_pkg_containment(P) ->
    error({gpb_error, {badproto, P}}).


get_service_containment("router") ->
    ['Etcd.Auth', 'Etcd.Cluster', 'Etcd.Election',
     'Etcd.Health', 'Etcd.KV', 'Etcd.Lease', 'Etcd.Lock',
     'Etcd.Maintenance', 'Etcd.Watch'];
get_service_containment("gogo") -> [];
get_service_containment("descriptor") -> [];
get_service_containment("kv") -> [];
get_service_containment("auth") -> [];
get_service_containment(P) ->
    error({gpb_error, {badproto, P}}).


get_rpc_containment("router") ->
    [{'Etcd.KV', 'Range'}, {'Etcd.KV', 'Put'},
     {'Etcd.KV', 'DeleteRange'}, {'Etcd.KV', 'Txn'},
     {'Etcd.KV', 'Compact'}, {'Etcd.Watch', 'Watch'},
     {'Etcd.Lease', 'LeaseGrant'},
     {'Etcd.Lease', 'LeaseRevoke'},
     {'Etcd.Lease', 'LeaseKeepAlive'},
     {'Etcd.Lease', 'LeaseTimeToLive'},
     {'Etcd.Lease', 'LeaseLeases'},
     {'Etcd.Cluster', 'MemberAdd'},
     {'Etcd.Cluster', 'MemberRemove'},
     {'Etcd.Cluster', 'MemberUpdate'},
     {'Etcd.Cluster', 'MemberList'},
     {'Etcd.Cluster', 'MemberPromote'},
     {'Etcd.Maintenance', 'Alarm'},
     {'Etcd.Maintenance', 'Status'},
     {'Etcd.Maintenance', 'Defragment'},
     {'Etcd.Maintenance', 'Hash'},
     {'Etcd.Maintenance', 'HashKV'},
     {'Etcd.Maintenance', 'Snapshot'},
     {'Etcd.Maintenance', 'MoveLeader'},
     {'Etcd.Auth', 'AuthEnable'},
     {'Etcd.Auth', 'AuthDisable'},
     {'Etcd.Auth', 'Authenticate'}, {'Etcd.Auth', 'UserAdd'},
     {'Etcd.Auth', 'UserGet'}, {'Etcd.Auth', 'UserList'},
     {'Etcd.Auth', 'UserDelete'},
     {'Etcd.Auth', 'UserChangePassword'},
     {'Etcd.Auth', 'UserGrantRole'},
     {'Etcd.Auth', 'UserRevokeRole'},
     {'Etcd.Auth', 'RoleAdd'}, {'Etcd.Auth', 'RoleGet'},
     {'Etcd.Auth', 'RoleList'}, {'Etcd.Auth', 'RoleDelete'},
     {'Etcd.Auth', 'RoleGrantPermission'},
     {'Etcd.Auth', 'RoleRevokePermission'},
     {'Etcd.Health', 'Check'}, {'Etcd.Health', 'Watch'},
     {'Etcd.Lock', 'Lock'}, {'Etcd.Lock', 'Unlock'},
     {'Etcd.Election', 'Campaign'},
     {'Etcd.Election', 'Proclaim'},
     {'Etcd.Election', 'Leader'},
     {'Etcd.Election', 'Observe'},
     {'Etcd.Election', 'Resign'}];
get_rpc_containment("gogo") -> [];
get_rpc_containment("descriptor") -> [];
get_rpc_containment("kv") -> [];
get_rpc_containment("auth") -> [];
get_rpc_containment(P) ->
    error({gpb_error, {badproto, P}}).


get_enum_containment("router") ->
    ['Etcd.AlarmRequest.AlarmAction', 'Etcd.AlarmType',
     'Etcd.Compare.CompareResult',
     'Etcd.Compare.CompareTarget',
     'Etcd.HealthCheckResponse.ServingStatus',
     'Etcd.RangeRequest.SortOrder',
     'Etcd.RangeRequest.SortTarget',
     'Etcd.WatchCreateRequest.FilterType'];
get_enum_containment("gogo") -> [];
get_enum_containment("descriptor") ->
    ['google.protobuf.FieldDescriptorProto.Label',
     'google.protobuf.FieldDescriptorProto.Type',
     'google.protobuf.FieldOptions.CType',
     'google.protobuf.FieldOptions.JSType',
     'google.protobuf.FileOptions.OptimizeMode'];
get_enum_containment("kv") ->
    ['mvccpb.Event.EventType'];
get_enum_containment("auth") ->
    ['authpb.Permission.Type'];
get_enum_containment(P) ->
    error({gpb_error, {badproto, P}}).


get_proto_by_msg_name_as_fqbin(<<"Etcd.RequestOp">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AlarmMember">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"authpb.UserAddOptions">>) -> "auth";
get_proto_by_msg_name_as_fqbin(<<"Etcd.LeaseStatus">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.UninterpretedOption.NamePart">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"Etcd.WatchRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.WatchProgressRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.WatchCancelRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.UnlockRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.ResignRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.MoveLeaderRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.MemberUpdateRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.MemberRemoveRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.MemberPromoteRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.MemberListRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.MemberAddRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.LeaseTimeToLiveRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.LeaderRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.HashRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.DefragmentRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.CompactionRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthUserListRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthUserGetRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthUserDeleteRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthUserAddRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthDisableRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"mvccpb.KeyValue">>) -> "kv";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.DescriptorProto.ReservedRange">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.DescriptorProto.ExtensionRange">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"Etcd.WatchResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.TxnResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.RangeResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.PutResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.ProclaimResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.MoveLeaderResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.MemberUpdateResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.MemberRemoveResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.MemberPromoteResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.MemberListResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.MemberAddResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.LockResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.LeaseTimeToLiveResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.LeaseRevokeResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.LeaseLeasesResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.HashResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.DefragmentResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.Compare">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthUserRevokeRoleResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthUserGetResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthUserDeleteResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthUserChangePasswordResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthUserAddResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthRoleRevokePermissionResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthRoleGrantPermissionResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthEnableResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"authpb.Permission">>) -> "auth";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.UninterpretedOption">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.SourceCodeInfo.Location">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.GeneratedCodeInfo.Annotation">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.SourceCodeInfo">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.ServiceDescriptorProto">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.OneofDescriptorProto">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.MethodDescriptorProto">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.GeneratedCodeInfo">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.FileDescriptorProto">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.FieldDescriptorProto">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.EnumValueDescriptorProto">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.EnumDescriptorProto">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.DescriptorProto">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"Etcd.ResponseOp">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"authpb.User">>) -> "auth";
get_proto_by_msg_name_as_fqbin(<<"Etcd.ResponseHeader">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.Member">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.ServiceOptions">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.MethodOptions">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.MessageOptions">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.FileOptions">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.FieldOptions">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.EnumValueOptions">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.EnumOptions">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"mvccpb.Event">>) -> "kv";
get_proto_by_msg_name_as_fqbin(<<"google.protobuf.FileDescriptorSet">>) -> "descriptor";
get_proto_by_msg_name_as_fqbin(<<"Etcd.WatchCreateRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.TxnRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.StatusRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.SnapshotRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.RangeRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.PutRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.ProclaimRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.LockRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.LeaseRevokeRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.LeaseLeasesRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.LeaseKeepAliveRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.LeaseGrantRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.LeaseCheckpointRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.LeaseCheckpoint">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.HealthCheckRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.HashKVRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.DeleteRangeRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.CampaignRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthenticateRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthUserRevokeRoleRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthUserGrantRoleRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthUserChangePasswordRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthRoleRevokePermissionRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthRoleListRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthRoleGrantPermissionRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthRoleGetRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthRoleDeleteRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthRoleAddRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthEnableRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AlarmRequest">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"authpb.Role">>) -> "auth";
get_proto_by_msg_name_as_fqbin(<<"Etcd.UnlockResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.StatusResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.SnapshotResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.ResignResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.LeaseKeepAliveResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.LeaseGrantResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.LeaseCheckpointResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.LeaderResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.HealthCheckResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.HashKVResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.DeleteRangeResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.CompactionResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.CampaignResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthenticateResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthUserListResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthUserGrantRoleResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthRoleListResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthRoleGetResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthRoleDeleteResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthRoleAddResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AuthDisableResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.AlarmResponse">>) -> "router";
get_proto_by_msg_name_as_fqbin(<<"Etcd.LeaderKey">>) -> "router";
get_proto_by_msg_name_as_fqbin(E) ->
    error({gpb_error, {badmsg, E}}).


get_proto_by_service_name_as_fqbin(<<"Etcd.Cluster">>) -> "router";
get_proto_by_service_name_as_fqbin(<<"Etcd.Maintenance">>) -> "router";
get_proto_by_service_name_as_fqbin(<<"Etcd.Lease">>) -> "router";
get_proto_by_service_name_as_fqbin(<<"Etcd.KV">>) -> "router";
get_proto_by_service_name_as_fqbin(<<"Etcd.Watch">>) -> "router";
get_proto_by_service_name_as_fqbin(<<"Etcd.Health">>) -> "router";
get_proto_by_service_name_as_fqbin(<<"Etcd.Auth">>) -> "router";
get_proto_by_service_name_as_fqbin(<<"Etcd.Lock">>) -> "router";
get_proto_by_service_name_as_fqbin(<<"Etcd.Election">>) -> "router";
get_proto_by_service_name_as_fqbin(E) ->
    error({gpb_error, {badservice, E}}).


get_proto_by_enum_name_as_fqbin(<<"Etcd.RangeRequest.SortOrder">>) -> "router";
get_proto_by_enum_name_as_fqbin(<<"Etcd.HealthCheckResponse.ServingStatus">>) -> "router";
get_proto_by_enum_name_as_fqbin(<<"Etcd.RangeRequest.SortTarget">>) -> "router";
get_proto_by_enum_name_as_fqbin(<<"Etcd.Compare.CompareTarget">>) -> "router";
get_proto_by_enum_name_as_fqbin(<<"Etcd.Compare.CompareResult">>) -> "router";
get_proto_by_enum_name_as_fqbin(<<"authpb.Permission.Type">>) -> "auth";
get_proto_by_enum_name_as_fqbin(<<"mvccpb.Event.EventType">>) -> "kv";
get_proto_by_enum_name_as_fqbin(<<"google.protobuf.FileOptions.OptimizeMode">>) ->
    "descriptor";
get_proto_by_enum_name_as_fqbin(<<"google.protobuf.FieldOptions.JSType">>) ->
    "descriptor";
get_proto_by_enum_name_as_fqbin(<<"google.protobuf.FieldOptions.CType">>) ->
    "descriptor";
get_proto_by_enum_name_as_fqbin(<<"google.protobuf.FieldDescriptorProto.Type">>) ->
    "descriptor";
get_proto_by_enum_name_as_fqbin(<<"Etcd.WatchCreateRequest.FilterType">>) -> "router";
get_proto_by_enum_name_as_fqbin(<<"Etcd.AlarmType">>) -> "router";
get_proto_by_enum_name_as_fqbin(<<"google.protobuf.FieldDescriptorProto.Label">>) ->
    "descriptor";
get_proto_by_enum_name_as_fqbin(<<"Etcd.AlarmRequest.AlarmAction">>) -> "router";
get_proto_by_enum_name_as_fqbin(E) ->
    error({gpb_error, {badenum, E}}).


get_protos_by_pkg_name_as_fqbin(<<"authpb">>) -> ["auth"];
get_protos_by_pkg_name_as_fqbin(<<"mvccpb">>) -> ["kv"];
get_protos_by_pkg_name_as_fqbin(<<"Etcd">>) -> ["router"];
get_protos_by_pkg_name_as_fqbin(<<"google.protobuf">>) ->
    ["descriptor"];
get_protos_by_pkg_name_as_fqbin(<<"gogoproto">>) -> ["gogo"];
get_protos_by_pkg_name_as_fqbin(E) ->
    error({gpb_error, {badpkg, E}}).



gpb_version_as_string() ->
    "4.11.1".

gpb_version_as_list() ->
    [4,11,1].
