/* -*- Mode: C; tab-width: 4 -*-
 *
 * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *     http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.

    Change History (most recent first):

$Log: WinVersRes.h,v $
Revision 1.63  2009/07/21 05:10:55  herscher
Bump version to 2.0.0.7

Revision 1.62  2009/07/13 18:47:58  herscher
Bump to version 2.0.0.6

Revision 1.61  2009/06/30 17:37:32  herscher
Bump to 2.0.0.5

Revision 1.60  2009/06/15 18:03:41  herscher
Bump to version 2.0.0.4

Revision 1.59  2009/05/27 20:14:35  herscher
Bump version to 2.0.0.3

Revision 1.58  2009/05/26 21:13:35  herscher
Bump to version 2.0.0.2

Revision 1.57  2009/04/28 20:12:15  herscher
Bump version to 2.0.0.1

Revision 1.56  2009/04/02 22:04:43  herscher
Bump to version 2.0.0.0

Revision 1.55  2007/04/27 20:34:31  herscher
<rdar://problem/5159673> mDNS: Company name needs to be changed to Apple Inc.

Revision 1.54  2006/08/14 23:25:21  cheshire
Re-licensed mDNSResponder daemon source code under Apache License, Version 2.0

Revision 1.53  2006/02/28 20:07:53  herscher
Bump to 1.0.3.1

Revision 1.52  2006/01/09 20:45:29  cheshire
Update copyright date to 2006

Revision 1.51  2005/11/28 19:49:56  herscher
Bump to 1.0.2.9

Revision 1.50  2005/10/28 18:48:04  herscher
Bump to version 1.0.2.8

Revision 1.49  2005/10/25 05:24:27  herscher
Bump to 1.0.2.7

Revision 1.48  2005/10/18 06:17:05  herscher
Bump to 1.0.2.6

Revision 1.47  2005/10/05 22:16:57  herscher
Bump version number to 1.0.2.5

Revision 1.46  2005/09/29 06:43:07  herscher
Bump to version 1.0.2.4

Revision 1.45  2005/09/22 07:11:35  herscher
Bump version to 1.0.2.3

Revision 1.44  2005/09/13 01:07:40  herscher
Bump to 1.0.2.2

Revision 1.43  2005/09/12 06:13:32  herscher
Bump version 1.0.2.1

Revision 1.42  2005/07/22 19:41:44  ksekar
Update version

Revision 1.41  2005/07/15 15:22:20  shersche
Bump to 1.0.1.1

Revision 1.40  2005/07/11 20:42:03  shersche
Bump version to 1.0.0.68

Revision 1.39  2005/07/07 19:12:47  shersche
Bump to 1.0.0.67

Revision 1.38  2005/04/25 21:59:42  shersche
Bump to 1.0.0.66

Revision 1.37  2005/04/22 07:39:48  shersche
Bump to 1.0.0.65

Revision 1.36  2005/04/19 07:25:56  shersche
Bump version to 1.0.0.64

Revision 1.35  2005/04/13 17:48:58  shersche
Bump to 1.0.0.63

Revision 1.34  2005/04/06 01:00:55  shersche
Bump to 1.0.0.62

Revision 1.33  2005/03/30 07:37:41  shersche
Bump to 1.0.0.61

Revision 1.32  2005/03/23 00:39:46  shersche
Bump to version 1.0.0.60

Revision 1.31  2005/03/16 03:52:06  shersche
Bump to 1.0.0.59

Revision 1.30  2005/03/07 19:18:18  shersche
<rdar://problem/4039831> Update Windows build to 1.0.0.58

Revision 1.29  2005/03/02 20:11:45  shersche
Update name

Revision 1.28  2005/03/02 03:57:51  shersche
Bump to 1.0.0.57

Revision 1.27  2005/02/23 03:12:27  shersche
Bump to 1.0.0.56

Revision 1.26  2005/02/15 23:20:18  shersche
Bump to 1.0.0.55 and update name

Revision 1.25  2005/02/10 22:35:29  cheshire
<rdar://problem/3727944> Update name

Revision 1.24  2005/02/08 23:32:24  shersche
Bump to 1.0.0.54

Revision 1.23  2005/02/02 02:08:28  shersche
Bump to version 1.0.0.53

Revision 1.22  2005/01/25 17:15:52  shersche
Bump to 1.0.0.51. Add legal copyright string.

Revision 1.21  2005/01/11 07:09:32  shersche
Bump to version 1.0.0.51

Revision 1.20  2004/12/17 01:23:24  shersche
Bump version to 1.0.0.50

Revision 1.19  2004/12/16 08:09:47  shersche
Revert version number back to 1.0.0.22

Revision 1.18  2004/12/16 02:48:10  shersche
Bump version number to 1.1.0.0

Revision 1.17  2004/10/20 15:37:46  shersche
Bump to Windows-trial-21

Revision 1.16  2004/10/12 23:51:36  cheshire
Bump version to 1.0.0.20

Revision 1.15  2004/09/21 01:15:56  shersche
bump version to 1.0.19

Revision 1.14  2004/09/16 21:27:46  shersche
Bump to version 18

Revision 1.13  2004/09/13 21:28:41  shersche
Bump version to 17

Revision 1.12  2004/08/28 00:18:01  rpantos
no message

Revision 1.11  2004/08/26 17:37:15  shersche
bump version to 1.0.0.14

Revision 1.10  2004/08/05 18:00:04  rpantos
bump to 1.0.0.13

Revision 1.9  2004/07/27 07:31:46  shersche
bump to 1.0.0.12

Revision 1.8  2004/07/22 23:28:54  shersche
bump to Version 1.0.0.11

Revision 1.7  2004/07/20 23:36:24  shersche
bump to version 1.0.0.10

Revision 1.6  2004/07/14 19:53:26  shersche
bump version to 1.0.0.9

Revision 1.5  2004/07/13 22:20:02  rpantos
Fix for <rdar://problem/3701120>.

Revision 1.4  2004/07/09 18:04:17  shersche
bump version to 1.0.0.8

Revision 1.3  2004/06/27 17:00:15  rpantos
Cleanup.

Revision 1.2  2004/06/26 22:24:08  rpantos
Cleanup.

Revision 1.1  2004/06/26 19:17:41  rpantos
First checked in.

 */

#ifndef WINRESVERS_H
#define WINRESVERS_H

#define MASTER_PROD_NAME	"Bonjour"

// Define the company name for mDNSResponder on Windows
#define MASTER_COMPANY_NAME   "Apple Inc."

// Define the product version for mDNSResponder on Windows
#define MASTER_PROD_VERS		2,0,0,7
#define MASTER_PROD_VERS_STR	"2,0,0,7"
#define MASTER_PROD_VERS_STR2	"2.0.0.7"
#define MASTER_PROD_VERS_STR3 "Explorer Plugin 2.0.0.7"

// Define the legal copyright
#define MASTER_LEGAL_COPYRIGHT "Copyright (C) 2003-2009 Apple Inc."

#endif // WINRESVERS_H
