# Generated by the pRPC protocol buffer compiler plugin.  DO NOT EDIT!
# source: api/api_proto/sitewide.proto

import base64
import zlib

from google.protobuf import descriptor_pb2

# Includes description of the api/api_proto/sitewide.proto and all of its transitive
# dependencies. Includes source code info.
FILE_DESCRIPTOR_SET = descriptor_pb2.FileDescriptorSet()
FILE_DESCRIPTOR_SET.ParseFromString(zlib.decompress(base64.b64decode(
    'eJx9lF1v0lAYgHdaxg4Htr0UHB/74EiGmyYDx7xYNDFxcxoX3QzMZPGGFDhAI7TYljluvPfe/+'
    'Av8OeZ+Pa0dEW3XZD0fc779ZwC7E+Kbehjo4af1ti2XKvmGK74ZnRFVYYaHVmmZevGsHzKMg3R'
    's4UzuLC+CLMhvk6E42pZtuh6cV7hZDfR8ANtkzH50Brr7iCvyqOEJB8RlC9Zdr6XM7ZMR9w0I9'
    'FmT1jabyauxwYWtRzRkeOWG6vy4MTnTdEp59naW+E2hX0l7KaruxMnWLT8neX+OwnGVthKWzdN'
    'YbdGwnH0vgjmL/v0gw+1EksGaa4xEnKDpQbz0QUSbZ0lbKF3W5Y5nEpp2qAeOMe4/psw2gwuVz'
    'tnqegFaJvV2T1Xb7nk4tZdx75AeUG7ZKv/2Gn8puj2Kyk+vCdj1vno8ecdw+zZem2We1WvzX1l'
    'XswOTn9RRiEGC7ALhP0kNCUDrf6D8GNrPLWN/sDl9af7h/xiIPjxwLZGxmTEX03cgWU7jH9yBL'
    'd63B0YDnesid0RvGN1Bcewb+Fupujy9pTr/Kj5es9xp0PBh0ZH4J5Yo7u8o5u8LRjvWROzyw0T'
    'qeDv3x2fnDVPeM8YiipjlCoQx63S+ESB4tNLD9Jk8JyicboADJ+XUUJGlGBMAdiKjBQ8T4ICpw'
    'iDGDOS2FWLEAVJFnYiREVShzdhFwIp7NIMM4gkcXgQIQqSHOxFiIrkEM5ZhcZwjzTumQVSzPEz'
    'ce1y/Qpfg97Ge3H1/nP+jKFATK6XRoF1HB0LBDQcncG2QUwXJaERQpAkYCVCVCRplJx1IZDBmn'
    'yYQbBLZq4LkTmJyCRPIANrkJMCBPIosH6nwIEvQGQihQ05mkiBQihAAoFCOJoEAoVQgAQChVCA'
    'SIEi1pTCDE+gONeFyJwEFCNERbIJW1IAq1GA3ymw7wt4o0oo4BepsO3/Ru5/bSoWbWNRSe6rSu'
    'sKbrchd1ED60q4rxpYV3DfXISoSIrBy1flKo+wphhmeNYeSUSIl8PkN3FGVCR5KIRdFNjBmpsM'
    'Bbt4JB4hBMkSQISoSDKQbcflP8fBXweROzY=')))
_INDEX = {
    f.name: {
      'descriptor': f,
      'services': {s.name: s for s in f.service},
    }
    for f in FILE_DESCRIPTOR_SET.file
}


SitewideServiceDescription = {
  'file_descriptor_set': FILE_DESCRIPTOR_SET,
  'file_descriptor': _INDEX[u'api/api_proto/sitewide.proto']['descriptor'],
  'service_descriptor': _INDEX[u'api/api_proto/sitewide.proto']['services'][u'Sitewide'],
}
