<?xml version="1.0" encoding="UTF-8"?>
<!-- 
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you 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.
-->
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app"
	xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/"
	xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:alf="http://www.alfresco.org">
	<author>
		<name>admin</name>
	</author>
	<content type="text/html"
		src="http://localhost:8080/alfresco/s/cmis/s/workspace:SpacesStore/i/c683ef4a-43cf-452c-b5c4-a6ec82a371e9/content.txt" />
	<id>urn:uuid:c683ef4a-43cf-452c-b5c4-a6ec82a371e9
	</id>
	<link rel="self"
		href="http://localhost:8080/alfresco/s/cmis/pwc/s/workspace:SpacesStore/i/c683ef4a-43cf-452c-b5c4-a6ec82a371e9" />
	<link rel="enclosure"
		href="http://localhost:8080/alfresco/s/cmis/s/workspace:SpacesStore/i/c683ef4a-43cf-452c-b5c4-a6ec82a371e9/content.txt"
		type="text/html" />
	<link rel="edit"
		href="http://localhost:8080/alfresco/s/cmis/s/workspace:SpacesStore/i/c683ef4a-43cf-452c-b5c4-a6ec82a371e9" />
	<link rel="edit-media"
		href="http://localhost:8080/alfresco/s/cmis/s/workspace:SpacesStore/i/c683ef4a-43cf-452c-b5c4-a6ec82a371e9/content.txt"
		type="text/html" />
	<link rel="http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions"
		href="http://localhost:8080/alfresco/s/cmis/s/workspace:SpacesStore/i/c683ef4a-43cf-452c-b5c4-a6ec82a371e9/allowableactions" />
	<link rel="http://docs.oasis-open.org/ns/cmis/link/200908/relationships"
		href="http://localhost:8080/alfresco/s/cmis/s/workspace:SpacesStore/i/c683ef4a-43cf-452c-b5c4-a6ec82a371e9/rels" />
	<link rel="up"
		href="http://localhost:8080/alfresco/s/cmis/s/workspace:SpacesStore/i/c683ef4a-43cf-452c-b5c4-a6ec82a371e9/parents"
		type="application/atom+xml;type=feed" />
	<link rel="version-history"
		href="http://localhost:8080/alfresco/s/cmis/s/workspace:SpacesStore/i/c683ef4a-43cf-452c-b5c4-a6ec82a371e9/versions" />
	<link rel="describedby"
		href="http://localhost:8080/alfresco/s/cmis/type/cmis:document" />
	<link rel="service" href="http://localhost:8080/alfresco/s/cmis" />
	<published>2009-12-10T23:06:18.450-06:00
	</published>
	<summary></summary>
	<title>test (Working Copy).txt</title>
	<updated>2009-12-10T23:06:18.484-06:00
	</updated>
	<app:edited>2009-12-10T23:06:18.484-06:00
	</app:edited>
	<alf:icon>http://localhost:8080/alfresco/images/filetypes/txt.gif
	</alf:icon>
	<cmisra:object>
		<cmis:properties>
			<cmis:propertyBoolean propertyDefinitionId="cmis:isLatestMajorVersion">
				<cmis:value>false</cmis:value>
			</cmis:propertyBoolean>
			<cmis:propertyId propertyDefinitionId="cmis:contentStreamId">
				<cmis:value>cm:content</cmis:value>
			</cmis:propertyId>
			<cmis:propertyInteger propertyDefinitionId="cmis:contentStreamLength">
				<cmis:value>11</cmis:value>
			</cmis:propertyInteger>
			<cmis:propertyString propertyDefinitionId="cmis:versionSeriesCheckedOutBy">
				<cmis:value>admin</cmis:value>
			</cmis:propertyString>
			<cmis:propertyId propertyDefinitionId="cmis:objectTypeId">
				<cmis:value>cmis:document</cmis:value>
			</cmis:propertyId>
			<cmis:propertyId propertyDefinitionId="cmis:versionSeriesCheckedOutId">
				<cmis:value>
					workspace://SpacesStore/c683ef4a-43cf-452c-b5c4-a6ec82a371e9
				</cmis:value>
			</cmis:propertyId>
			<cmis:propertyString propertyDefinitionId="cmis:name">
				<cmis:value>test (Working Copy).txt</cmis:value>
			</cmis:propertyString>
			<cmis:propertyString propertyDefinitionId="cmis:contentStreamMimeType">
				<cmis:value>text/html</cmis:value>
			</cmis:propertyString>
			<cmis:propertyId propertyDefinitionId="cmis:versionSeriesId">
				<cmis:value>
					workspace://SpacesStore/c567cd9f-7e25-4be0-b1be-e75476d539f7
				</cmis:value>
			</cmis:propertyId>
			<cmis:propertyDateTime propertyDefinitionId="cmis:creationDate">
				<cmis:value>2009-12-10T23:06:18.450-06:00
				</cmis:value>
			</cmis:propertyDateTime>
			<cmis:propertyString propertyDefinitionId="cmis:changeToken" />
			<cmis:propertyBoolean propertyDefinitionId="cmis:isLatestVersion">
				<cmis:value>false</cmis:value>
			</cmis:propertyBoolean>
			<cmis:propertyString propertyDefinitionId="cmis:versionLabel" />
			<cmis:propertyBoolean propertyDefinitionId="cmis:isVersionSeriesCheckedOut">
				<cmis:value>true</cmis:value>
			</cmis:propertyBoolean>
			<cmis:propertyString propertyDefinitionId="cmis:lastModifiedBy">
				<cmis:value>admin</cmis:value>
			</cmis:propertyString>
			<cmis:propertyString propertyDefinitionId="cmis:createdBy">
				<cmis:value>admin</cmis:value>
			</cmis:propertyString>
			<cmis:propertyString propertyDefinitionId="cmis:checkinComment" />
			<cmis:propertyId propertyDefinitionId="cmis:objectId">
				<cmis:value>
					workspace://SpacesStore/c683ef4a-43cf-452c-b5c4-a6ec82a371e9
				</cmis:value>
			</cmis:propertyId>
			<cmis:propertyBoolean propertyDefinitionId="cmis:isMajorVersion">
				<cmis:value>false</cmis:value>
			</cmis:propertyBoolean>
			<cmis:propertyBoolean propertyDefinitionId="cmis:isImmutable">
				<cmis:value>false</cmis:value>
			</cmis:propertyBoolean>
			<cmis:propertyId propertyDefinitionId="cmis:baseTypeId">
				<cmis:value>cmis:document</cmis:value>
			</cmis:propertyId>
			<cmis:propertyString propertyDefinitionId="cmis:contentStreamFileName">
				<cmis:value>test (Working Copy).txt</cmis:value>
			</cmis:propertyString>
			<cmis:propertyDateTime propertyDefinitionId="cmis:lastModificationDate">
				<cmis:value>2009-12-10T23:06:18.484-06:00
				</cmis:value>
			</cmis:propertyDateTime>
		</cmis:properties>
	</cmisra:object>
	<cmisra:pathSegment>test (Working Copy).txt</cmisra:pathSegment>
</entry>
