# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: chromiumos/config/prototype/release_target.proto
"""Generated protocol buffer code."""
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import symbol_database as _symbol_database
from google.protobuf.internal import builder as _builder
# @@protoc_insertion_point(imports)

_sym_db = _symbol_database.Default()


from chromite.api.gen_sdk.chromiumos.config.prototype import release_target_id_pb2 as chromiumos_dot_config_dot_prototype_dot_release__target__id__pb2
from chromite.api.gen_sdk.chromiumos.config.prototype import signing_pb2 as chromiumos_dot_config_dot_prototype_dot_signing__pb2
from chromite.api.gen_sdk.chromiumos.build.api import system_image_pb2 as chromiumos_dot_build_dot_api_dot_system__image__pb2


DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n0chromiumos/config/prototype/release_target.proto\x12\x1b\x63hromiumos.config.prototype\x1a\x33\x63hromiumos/config/prototype/release_target_id.proto\x1a)chromiumos/config/prototype/signing.proto\x1a\'chromiumos/build/api/system_image.proto\"\xf1\x03\n\rReleaseTarget\x12\x38\n\x02id\x18\x01 \x01(\x0b\x32,.chromiumos.config.prototype.ReleaseTargetId\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x43\n\x0c\x62uild_target\x18\x03 \x01(\x0b\x32-.chromiumos.build.api.SystemImage.BuildTarget\x12\x43\n\x0fvariant_targets\x18\x04 \x03(\x0b\x32*.chromiumos.config.prototype.ReleaseTarget\x12N\n\x14signing_instructions\x18\x05 \x01(\x0b\x32\x30.chromiumos.config.prototype.SigningInstructions\x12Q\n\x0b\x63riticality\x18\x06 \x01(\x0e\x32<.chromiumos.config.prototype.ReleaseTarget.TargetCriticality\"k\n\x11TargetCriticality\x12\x12\n\x0e\x43RIT_UNDEFINED\x10\x00\x12\x15\n\x11\x43RIT_EXPERIMENTAL\x10\x01\x12\x16\n\x12\x43RIT_INFORMATIONAL\x10\x02\x12\x13\n\x0f\x43RIT_PRODUCTION\x10\x03\x42\x30Z.go.chromium.org/chromiumos/config/go/prototypeb\x06proto3')

_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'chromiumos.config.prototype.release_target_pb2', _globals)
if _descriptor._USE_C_DESCRIPTORS == False:

  DESCRIPTOR._options = None
  DESCRIPTOR._serialized_options = b'Z.go.chromium.org/chromiumos/config/go/prototype'
  _globals['_RELEASETARGET']._serialized_start=219
  _globals['_RELEASETARGET']._serialized_end=716
  _globals['_RELEASETARGET_TARGETCRITICALITY']._serialized_start=609
  _globals['_RELEASETARGET_TARGETCRITICALITY']._serialized_end=716
# @@protoc_insertion_point(module_scope)
