<Mcml xmlns="http://schemas.microsoft.com/2006/mcml"
xmlns:addin="assembly://Microsoft.MediaCenter/Microsoft.MediaCenter.Hosting"
xmlns:mc="assembly://Microsoft.MediaCenter/Microsoft.MediaCenter"
xmlns:cor="assembly://MSCorLib/System"
xmlns:me="Me">
<Aggregate Source="http://mceondemand.microsoft.com:80/(S(3ac3179a-4973-460d-8193-3b1645ddc02a))/mcml/Library.mcml"/>
<UI Name="LoaderPage" BaseUI="me:PageBaseUI">
<Properties>
<addin:PageSession Name="Session" PageSession="$Required"/>
<cor:Boolean Name="IsHosted" Boolean="false" />
<cor:String Name="Url" String="" />
</Properties>
<Locals>
<cor:Boolean Name="CacheContents" Boolean="false"/>
<addin:AddInHost Name="AddInHost"/>
<cor:Object Name="AppContext"/>
<PropertySet Name="ApplicationData" />
<PropertySet Name="NextPageData"/>
<Environment Name="Environment"/>
<cor:String Name="VideoBrowseHomeUrl" String="http://mceondemand.microsoft.com:80/(S(3ac3179a-4973-460d-8193-3b1645ddc02a))/VideoBrowseHome.ashx?" />
<cor:String Name="ClientVersionParam" String=""/>
<cor:String Name="ColorSchemeParam" String=""/>
<cor:String Name="ConsoleParam" String=""/>
<EditableText Name="NewMediaSessionId" Value=""/>
<Timer Name="NewMediaExperienceTimer" AutoRepeat="true" Interval="100" Enabled="false"/>
<BooleanChoice Name="ExperienceIsValid" Value="false"/>
<BooleanChoice Name="IsForegroundApplication" Value="false"/>
<BooleanChoice Name="CurrentMediaIsOurs" Value="false"/>
<RangedValue Name="PlayRate" Value="0"/>
<cor:Boolean Name="HasLaunched" Boolean="false"/>
<EditableText Name="AddToPlayListUuid"/>
<EditableText Name="AddToPlayListTargetSource"/>
<ArrayListDataSet Name="AddToPlayListResult"/>
<EditableText Name="AddToPlayListRequestStatus"/>
<Command Name="AddToPlayList"/>
<Timer Name="PlayRateUpdate" Interval="100" AutoRepeat="true" Enabled="false"/>
<Timer Name="KeepExperienceProxyAlive" Interval="60000" AutoRepeat="true" Enabled="true"/>
<cor:String Name="DummyString" String=""/>
<cor:String Name="SessionId" String="3ac3179a-4973-460d-8193-3b1645ddc02a"/>
<cor:String Name="MetricsUrl" String="http://mceondemand.microsoft.com:80/(S(3ac3179a-4973-460d-8193-3b1645ddc02a))/MetricsPing.aspx?" />
<EditableText Name="MetricsStatus"/>
<EditableText Name="MetricsTargetSource"/>
<ArrayListDataSet Name="MetricsListResult"/>
<Command Name="DummyRefresh"/>
<Command Name="SendServerPing"/>
<cor:String Name="UuidParam" String=""/>
<cor:TimeSpan Name="Position" />
<cor:String Name="PositionParam" String=""/>
<cor:String Name="DurationParam" String=""/>
<Command Name="RefreshPlaylist" />
<ArrayListDataSet Name="CurrentPlaylist" />
<ArrayListDataSet Name="EmptyList" />
<EditableText Name="PlaylistRequestStatus" />
<cor:Object Name="PlaylistItem"/>
<PropertySet Name="CurrentVideo"/>
<EditableText Name="CurrentUuid"/>
<EditableText Name="CurrentVideoTitle"/>
<EditableText Name="CurrentVideoEpisode"/>
<EditableText Name="CurrentVideoSynopsis"/>
<EditableText Name="CurrentVideoType"/>
<EditableText Name="InteractiveAdState" Value="None"/>
<Timer Name="ClientMetadataUpdateTimer" AutoRepeat="true" Interval="1000" Enabled="true"/>
<cor:Object Name="ClientMetadata"/>
<Command Name="ReadClientMetadata"/>
<EditableText Name="PlayingTitle"/>
<EditableText Name="PlayingDuration"/>
<Timer Name="StopPlaybackLoopTimer" AutoRepeat="false" Interval="5000" Enabled="false"/>
<Timer Name="PlayrateUpdateTimer" AutoRepeat="true" Interval="100" Enabled="false"/>
<Timer Name="MetricsPingTimer" AutoRepeat="true" Interval="1500000" Enabled="false"/>
<BooleanChoice Name="FullScreenVideoStopped"/>
<BooleanChoice Name="PlaybackStopEnforced" />
<ShortcutHandler Name="EatPlay" Shortcut="Play" HandlerStage="Bubbled"/>
<ShortcutHandler Name="EatPause" Shortcut="Play" HandlerStage="Bubbled"/>
<ShortcutHandler Name="EatFastForward" Shortcut="FastForward" HandlerStage="Bubbled"/>
<ShortcutHandler Name="EatRewind" Shortcut="Rewind" HandlerStage="Bubbled"/>
<ShortcutHandler Name="EatSkipForward" Shortcut="SkipForward" HandlerStage="Bubbled"/>
<ShortcutHandler Name="EatSkipBack" Shortcut="SkipBack" HandlerStage="Bubbled"/>
<ShortcutHandler Name="SkipToEnd" Shortcut="ChannelUp" HandlerStage="Bubbled"/>
<ShortcutHandler Name="SkipToStart" Shortcut="ChannelDown" HandlerStage="Bubbled"/>
<cor:TimeSpan Name="MaxTimeSpan"/>
<cor:TimeSpan Name="ZeroTimeSpan"/>
<Command Name="AddedToQueue"/>
<mc:MediaExperience Name="MediaExperience" mc:MediaExperience="null"/>
<mc:MediaTransport Name="MediaTransport" mc:MediaTransport="null" />
</Locals>
<Rules>
<Default Target="[Input.KeyInteractive]" Value="true" />
<Default Target="[Input.KeyFocusOnMouseEnter]" Value="false"/>
<Default Target="[Input.KeyFocusOnMouseDown]" Value="true"/>
<Default Target="[ApplicationData.#SessionId]" Value="[SessionId]"/>
<Default Target="[ApplicationData.#IsForegroundApplication]" Value="[IsForegroundApplication]"/>
<Default Target="[ApplicationData.#NewMediaSessionId]" Value="[NewMediaSessionId]"/>
<Default Target="[ApplicationData.#CurrentMediaIsOurs]" Value="[CurrentMediaIsOurs]"/>
<Default Target="[ApplicationData.#PlayRate]" Value="[PlayRate]"/>
<Default Target="[ApplicationData.#AddToPlayListUuid]" Value="[AddToPlayListUuid]"/>
<Default Target="[ApplicationData.#CurrentUuid]" Value="[CurrentUuid]"/>
<Default Target="[ApplicationData.#CurrentVideoTitle]" Value="[CurrentVideoTitle]"/>
<Default Target="[ApplicationData.#CurrentVideoEpisode]" Value="[CurrentVideoEpisode]"/>
<Default Target="[ApplicationData.#CurrentVideoSynopsis]" Value="[CurrentVideoSynopsis]"/>
<Default Target="[ApplicationData.#CurrentVideoType]" Value="[CurrentVideoType]"/>
<Default Target="[ApplicationData.#FullScreenVideoStopped]" Value="[FullScreenVideoStopped]"/>
<Default Target="[ApplicationData.#PlaybackStopEnforced]" Value="[PlaybackStopEnforced]"/>
<Default Target="[ApplicationData.#InteractiveAdState]" Value="[InteractiveAdState]"/>
<Default Target="[ApplicationData.#AddedToQueue]" Value="[AddedToQueue]"/>
<Default Target="[AppContext]" Value="[AddInHost.ApplicationContext]"/>
<Default Target="[ApplicationData.#ApplicationContext]" Value="[AppContext]"/>
<Binding Target="[MediaExperience]" Source="[ApplicationData.#MediaExperience!mc:MediaExperience]" />
<Binding Target="[MediaTransport]" Source="[ApplicationData.#MediaTransport!mc:MediaTransport]" />
<Condition Source="[AppContext!addin:ApplicationContext.IsForegroundApplication]" SourceValue="true">
<Actions>
<Set Target="[ClientVersionParam]" Value="[AddInHost.MediaCenterEnvironment.Version]">
<Transformer>
<FormatTransformer Format="&amp;ClientVersion={0}"/>
</Transformer>
</Set>
<Set Target="[ConsoleParam]" Value="[AddInHost.MediaCenterEnvironment.Capabilities.#Console!cor:Boolean]">
<Transformer>
<FormatTransformer Format="&amp;Console={0}"/>
</Transformer>
</Set>
</Actions>
</Condition>
<Condition Source="[Environment.ColorScheme]" SourceValue="HighContrast1" Target="[ColorSchemeParam]" Value="&amp;ColorScheme=HC1"/>
<Condition Source="[Environment.ColorScheme]" SourceValue="HighContrast2" Target="[ColorSchemeParam]" Value="&amp;ColorScheme=HC2"/>
<Condition Source="[Url]" SourceValue="" Target="[Url]" Value="[VideoBrowseHomeUrl]"/>
<Changed Source="[Input.DeepKeyFocus]">
<Actions>
<Set Target="[IsForegroundApplication.Value]" Value="[AppContext!addin:ApplicationContext.IsForegroundApplication]"/>
</Actions>
</Changed>
<Changed Source="[AddInHost.MediaCenterEnvironment.MediaExperience]">
<Actions>
<Set Target="[IsForegroundApplication.Value]" Value="[AppContext!addin:ApplicationContext.IsForegroundApplication]"/>
</Actions>
</Changed>
<Rule>
<Conditions>
<Equality Source="[IsForegroundApplication.Value]" Value="true"/>
<Equality Source="[AppContext!addin:ApplicationContext.IsForegroundApplication]" Value="true"/>
</Conditions>
<Actions>
<Set Target="[ApplicationData.#MediaExperience]" Value="[AddInHost.MediaCenterEnvironment.MediaExperience]"/>
</Actions>
</Rule>
<Rule>
<Conditions>
<Modified Source="[AddInHost.MediaCenterEnvironment.MediaExperience]"/>
<Equality Source="[AppContext!addin:ApplicationContext.IsForegroundApplication]" Value="true"/>
</Conditions>
<Actions>
<Set Target="[ApplicationData.#MediaExperience]" Value="[AddInHost.MediaCenterEnvironment.MediaExperience]"/>
</Actions>
</Rule>
<Condition Source="[NewMediaSessionId.Value]" ConditionOp="NotEquals" SourceValue=""
Target="[NewMediaExperienceTimer.Enabled]" Value="true"/>
<Changed Source="[NewMediaExperienceTimer.Tick]">
<Conditions>
<Equality Source="[IsForegroundApplication.Value]" Value="true"/>
<Equality Source="[AppContext!addin:ApplicationContext.IsForegroundApplication]" Value="true"/>
<Equality Source="[AddInHost.MediaCenterEnvironment.MediaExperience]" ConditionOp="NotEquals" Value="[ApplicationData.#MediaExperience!mc:MediaExperience]"/>
</Conditions>
<Actions>
<Set Target="[NewMediaExperienceTimer.Enabled]" Value="false"/>
<Set Target="[ApplicationData.#MediaExperience]" Value="[AddInHost.MediaCenterEnvironment.MediaExperience]"/>
</Actions>
</Changed>
<Binding Target="[ApplicationData.#InteractiveAdState!EditableText.Value]" Source="[InteractiveAdState.Value]" />
<Rule>
<Conditions>
<Modified Source="[AddInHost.MediaCenterEnvironment.MediaExperience]"/>
<Equality Source="[AppContext!addin:ApplicationContext.IsForegroundApplication]" Value="false"/>
</Conditions>
<Actions>
<Set Target="[ApplicationData.#MediaExperience]" Value="null"/>
<Set Target="[ApplicationData.#MediaTransport]" Value="null"/>
<Set Target="[PlayRateUpdate.Enabled]" Value="false"/>
<Set Target="[PlayRate.Value]" Value="0"/>
</Actions>
</Rule>
<Rule>
<Conditions>
<Equality Source="[IsForegroundApplication.Value]" Value="false"/>
<Equality Source="[AppContext!addin:ApplicationContext.IsForegroundApplication]" Value="false"/>
</Conditions>
<Actions>
<Set Target="[ApplicationData.#MediaExperience]" Value="null"/>
<Set Target="[ApplicationData.#MediaTransport]" Value="null"/>
<Set Target="[PlayRateUpdate.Enabled]" Value="false"/>
<Set Target="[PlayRate.Value]" Value="0"/>
</Actions>
</Rule>
<Rule>
<Conditions>
<Equality Source="[IsForegroundApplication.Value]" Value="true"/>
<Equality Source="[AppContext!addin:ApplicationContext.IsForegroundApplication]" Value="true"/>
<IsValid Source="[ApplicationData.#MediaExperience]"/>
<IsType Source="[ApplicationData.#MediaExperience]" Type="mc:MediaExperience"/>
</Conditions>
<Actions>
<Set Target="[ExperienceIsValid.Value]" Value="false" ExclusiveApply="false"/>
<Set Target="[ExperienceIsValid.Value]" Value="true"/>
</Actions>
</Rule>
<Default Target="[ExperienceIsValid.Value]" Value="false"/>
<Changed Source="[ExperienceIsValid.Value]">
<Actions>
<Set Target="[FullScreenVideoStopped.Value]" Value="false"/>
<Set Target="[PlaybackStopEnforced.Value]" Value="false"/>
</Actions>
</Changed>
<Rule>
<Conditions>
<Equality Source="[ExperienceIsValid.Value]" Value="true"/>
<IsValid Source="[ApplicationData.#MediaExperience]"/>
<IsType Source="[ApplicationData.#MediaExperience]" Type="mc:MediaExperience"/>
<Modified Source="[ApplicationData.#MediaExperience!mc:MediaExperience.Transport]" InitialEvaluate="true"/>
</Conditions>
<Actions>
<Set Target="[ApplicationData.#MediaTransport]" Value="[ApplicationData.#MediaExperience!mc:MediaExperience.Transport]"/>
<Set Target="[PlayRateUpdate.Enabled]" Value="true" />
</Actions>
</Rule>
<Condition Source="[ExperienceIsValid.Value]" SourceValue="false"
Target="[ApplicationData.#MediaTransport]" Value="null">
<Actions>
<Set Target="[PlayRateUpdate.Enabled]" Value="false"/>
<Set Target="[PlayRate.Value]" Value="0"/>
</Actions>
</Condition>
<Rule>
<Conditions>
<Equality Source="[ExperienceIsValid.Value]" Value="true"/>
<Equality Source="[NewMediaSessionId.Value]" ConditionOp="NotEquals" Value=""/>
<IsValid Source="[ApplicationData.#MediaExperience]" />
</Conditions>
<Actions>
<Set Target="[ApplicationData.#MediaExperience!mc:MediaExperience.EntryPointId]" Value="[NewMediaSessionId.Value]"/>
<Set Target="[NewMediaSessionId.Value]" Value=""/>
</Actions>
</Rule>
<Rule>
<Conditions>
<Equality Source="[IsForegroundApplication.Value]" Value="true"/>
<Equality Source="[AppContext!addin:ApplicationContext.IsForegroundApplication]" Value="true"/>
<IsValid Source="[ApplicationData.#MediaExperience]"/>
<Equality Source="[ApplicationData.#MediaExperience!mc:MediaExperience.EntryPointId]" ConditionOp="Equals"
Value="[SessionId]"/>
</Conditions>
<Actions>
<Set Target="[CurrentMediaIsOurs.Value]" Value="true"/>
</Actions>
</Rule>
<Default Target="[CurrentMediaIsOurs.Value]" Value="false"/>
<Changed Source="[PlayRateUpdate.Tick]">
<Conditions>
<Equality Source="[IsForegroundApplication.Value]" Value="true"/>
<Equality Source="[AppContext!addin:ApplicationContext.IsForegroundApplication]" Value="true"/>
<IsValid Source="[MediaTransport]"/>
<Equality Source="[PlayRate.Value]" ConditionOp="NotEquals" Value="[MediaTransport.PlayRate]" />
</Conditions>
<Actions>
<Set Target="[PlayRate.Value]" Value="[MediaTransport.PlayRate]"/>
</Actions>
</Changed>
<Changed Source="[PlayRateUpdate.Tick]">
<Conditions>
<Equality Source="[IsForegroundApplication.Value]" Value="true"/>
<Equality Source="[AppContext!addin:ApplicationContext.IsForegroundApplication]" Value="true"/>
<IsValid Source="[MediaTransport]"/>
<Equality Source="[PlayRate.Value]" ConditionOp="GreaterThan" Value="0" />
<Equality Source="[MediaTransport.Position]" ConditionOp="NotEquals" Value="[Position]"/>
</Conditions>
<Actions>
<Set Target="[Position]" Value="[MediaTransport.Position]"/>
</Actions>
</Changed>
<Changed Source="[KeepExperienceProxyAlive.Tick]">
<Conditions>
<Equality Source="[IsForegroundApplication.Value]" Value="true"/>
<Equality Source="[AppContext!addin:ApplicationContext.IsForegroundApplication]" Value="true"/>
<IsValid Source="[MediaExperience]"/>
</Conditions>
<Actions>
<Set Target="[DummyString]" Value="[MediaExperience.EntryPointId]"/>
</Actions>
</Changed>
<Changed Source="[MetricsPingTimer.Tick]">
<Conditions>
<IsValid Source="[MediaExperience]"/>
<Equality Source="[IsForegroundApplication.Value]" Value="true"/>
<Equality Source="[AppContext!addin:ApplicationContext.IsForegroundApplication]" Value="true"/>
</Conditions>
<Actions>
<Invoke Target="[SendServerPing.Invoke]"/>
</Actions>
</Changed>
<Rule>
<Conditions>
<Equality Source="[IsHosted]" Value="true" />
</Conditions>
<Actions>
<Invoke Target="[Session.Close]" />
</Actions>
</Rule>
<Rule>
<Conditions>
<Equality Source="[IsHosted]" Value="false" />
<Equality Source="[HasLaunched]" Value="false" />
</Conditions>
<Actions>
<Set Target="[Session.TargetHost]" Value="[PageHost]" />
<Set Target="[HasLaunched]" Value="true"/>
<Invoke InvokePolicy="Synchronous" ExclusiveApply="false"
Target="[Url.Concat]" ResultTarget="[Url]"
str0="[Url]" str1="[ClientVersionParam]" str2="[ColorSchemeParam]" str3="[ConsoleParam]"/>
<Navigate Source="[Url]" PageData="[NextPageData]"/>
</Actions>
</Rule>
<Rule>
<Conditions>
<Equality Source="[Input.KeyFocus]" Value="true" />
<Equality Source="[PageHost.Status]" ConditionOp="NotEquals" Value="Error" />
</Conditions>
<Actions>
<Invoke Target="[PageHost.NavigateInto]" />
</Actions>
</Rule>
<Changed Source="[PageHost.Status]">
<Conditions>
<Equality Source="[PageHost.Status]" Value="Error"/>
</Conditions>
<Actions>
<Set Target="[ErrorLabel1.Content]" Value="Unable to access Internet TV content."/>
<Set Target="[ErrorLabel2.Content]" Value="Please try again later."/>
<Set Target="[ErrorPanel.Visible]" Value="true"/>
</Actions>
</Changed>
<Rule>
<Conditions>
<Modified Source="[AddToPlayListUuid.Value]"/>
<Equality Source="[AddToPlayListUuid.Value]" ConditionOp="NotEquals" Value=""/>
<Equality Source="[AddToPlayListRequestStatus.Value]" ConditionOp="NotEquals" Value="Loading"/>
</Conditions>
<Actions>
<Set Target="[AddToPlayListTargetSource.Value]" Value="[AddToPlayListUuid.Value]">
<Transformer>
<FormatTransformer Format="http://mceondemand.microsoft.com:80/(S(3ac3179a-4973-460d-8193-3b1645ddc02a))/AddToPlayList.aspx?uuid={0}"/>
</Transformer>
</Set>
</Actions>
</Rule>
<Binding Source="[AddToPlayListTargetSource.Value]" Target="[AddToPlayListDataHost.TargetSource]"/>
<Binding Source="[MetricsTargetSource.Value]" Target="[MetricsDataHost.TargetSource]"/>
<Changed Source="[AddToPlayListResult.Source]">
<Conditions>
<Equality Source="[AddToPlayListResult.Count]" ConditionOp="GreaterThan" Value="0"/>
</Conditions>
<Actions>
<Invoke Target="[AddedToQueue.Invoke]"/>
<Set Target="[AddToPlayListUuid.Value]" Value=""/>
<Set Target="[AddToPlayListTargetSource.Value]" Value=""/>
</Actions>
</Changed>
<Condition Source="[AddToPlayListRequestStatus.Value]" ConditionOp="ChangedTo" SourceValue="Error">
<Conditions>
<Equality Source="[AddToPlayListTargetSource.Value]" ConditionOp="NotEquals" Value=""/>
</Conditions>
<Actions>
<Set Target="[AddToPlayListUuid.Value]" Value=""/>
<Set Target="[AddToPlayListTargetSource.Value]" Value=""/>
</Actions>
</Condition>
<Binding Source="[CurrentMediaIsOurs.Value]" Target="[ClientMetadataUpdateTimer.Enabled]"/>
<Condition Source="[CurrentMediaIsOurs.Value]" SourceValue="false"
Target="[CurrentUuid.Value]" Value=""/>
<Changed Source="[ClientMetadataUpdateTimer.Tick]">
<Conditions>
<Equality Source="[IsForegroundApplication.Value]" Value="true"/>
<Equality Source="[AppContext!addin:ApplicationContext.IsForegroundApplication]" Value="true"/>
<IsValid Source="[MediaExperience]"/>
<IsValid Source="[MediaExperience.MediaMetadata]"/>
</Conditions>
<Actions>
<Set Target="[ClientMetadata]" Value="[MediaExperience.MediaMetadata]"/>
<Invoke InvokePolicy="Synchronous" Target="[ReadClientMetadata.Invoke]"/>
</Actions>
</Changed>
<Changed Source="[ReadClientMetadata.Invoked]">
<Conditions>
<IsValid Source="[ClientMetadata!mc:MediaMetadata]"/>
</Conditions>
<Actions>
<Set Target="[PlayingTitle.Value]" Value="[ClientMetadata!mc:MediaMetadata.#Title!cor:String]"/>
<Set Target="[PlayingDuration.Value]" Value="[ClientMetadata!mc:MediaMetadata.#Duration!cor:String]"/>
</Actions>
</Changed>
<Rule ConditionLogicalOp="Or">
<Conditions>
<Modified Source="[PlayingTitle.Value]"/>
<Modified Source="[PlayingDuration.Value]"/>
</Conditions>
<Actions>
<Invoke Target="[RefreshPlaylist.Invoke]"/>
<Invoke Target="[SendServerPing.Invoke]"/>
</Actions>
</Rule>
<Changed Source="[SendServerPing.Invoked]">
<Conditions>
<Equality Source="[InteractiveAdState.Value]" Value="None" />
<Equality Source="[PlayingDuration.Value]" ConditionOp="NotEquals" Value="00:00:00" />
<Equality Source="[PlayRate.Value]" ConditionOp="Equals" Value="2" />
</Conditions>
<Actions>
<Set Target="[MetricsUrl]" Value="http://mceondemand.microsoft.com:80/(S(3ac3179a-4973-460d-8193-3b1645ddc02a))/MetricsPing.aspx?"/>
<Set Target="[UuidParam]" Value="[CurrentUuid.Value]">
<Transformer>
<FormatTransformer Format="uuid={0}"/>
</Transformer>
</Set>
<Set Target="[PositionParam]" Value="[Position]">
<Transformer>
<FormatTransformer Format="&amp;position={0}"/>
</Transformer>
</Set>
<Set Target="[DurationParam]" Value="[PlayingDuration.Value]">
<Transformer>
<FormatTransformer Format="&amp;duration={0}"/>
</Transformer>
</Set>
<Invoke InvokePolicy="Synchronous" ExclusiveApply="false"
Target="[MetricsUrl.Concat]" ResultTarget="[MetricsUrl]"
str0="[MetricsUrl]"
str1="[UuidParam]"
str2="[PositionParam]"
str3="[DurationParam]"/>
<Set Target="[MetricsTargetSource.Value]" Value="[MetricsUrl]"/>
</Actions>
</Changed>
<Changed Source="[CurrentPlaylist.Source]">
<Conditions>
<Equality Source="[CurrentPlaylist.Count]" ConditionOp="GreaterThan" Value="0"/>
<Equality Source="[PlayRate.Value]" ConditionOp="NotEquals" Value="0"/>
</Conditions>
<Actions>
<Invoke InvokePolicy="Synchronous" ResultTarget="[PlaylistItem]" Target="[CurrentPlaylist.get_Item]" idxItem="0"/>
<Set Target="[CurrentVideo]" Value="[PlaylistItem!PropertySet]"/>
<Set Target="[ApplicationData.#CurrentVideo]" Value="[CurrentVideo]"/>
<Set Target="[CurrentUuid.Value]" Value="[CurrentVideo.#Uuid!cor:String]"/>
</Actions>
</Changed>
<Changed Source="[CurrentPlaylist.Source]">
<Conditions>
<Equality Source="[CurrentPlaylist.Count]" ConditionOp="Equals" Value="0"/>
</Conditions>
<Actions>
<Set Target="[CurrentUuid.Value]" Value=""/>
</Actions>
</Changed>
<Changed Source="[PlayRate.Value]">
<Conditions>
<Equality Source="[PlayRate.Value]" ConditionOp="Equals" Value="0"/>
<IsValid Source="[MediaExperience]"/>
<Equality Source="[IsForegroundApplication.Value]" Value="true"/>
<Equality Source="[AppContext!addin:ApplicationContext.IsForegroundApplication]" Value="true"/>
</Conditions>
<Actions>
<Set Target="[MetricsPingTimer.Enabled]" Value="false" />
<Set Target="[MetricsUrl]" Value="http://mceondemand.microsoft.com:80/(S(3ac3179a-4973-460d-8193-3b1645ddc02a))/MetricsPing.aspx?stop=1"/>
<Set Target="[UuidParam]" Value="[CurrentUuid.Value]">
<Transformer>
<FormatTransformer Format="&amp;uuid={0}"/>
</Transformer>
</Set>
<Set Target="[PositionParam]" Value="[Position]">
<Transformer>
<FormatTransformer Format="&amp;position={0}"/>
</Transformer>
</Set>
<Set Target="[DurationParam]" Value="[PlayingDuration.Value]">
<Transformer>
<FormatTransformer Format="&amp;duration={0}"/>
</Transformer>
</Set>
<Invoke InvokePolicy="Synchronous" ExclusiveApply="false"
Target="[MetricsUrl.Concat]" ResultTarget="[MetricsUrl]"
str0="[MetricsUrl]"
str1="[UuidParam]"
str2="[PositionParam]"
str3="[DurationParam]"/>
<Set Target="[MetricsTargetSource.Value]" Value="[MetricsUrl]"/>
</Actions>
</Changed>
<Condition Source="[PlayRate.Value]" ConditionOp="ChangedTo" SourceValue="0">
<Conditions>
<Equality Source="[InteractiveAdState.Value]" Value="None"/>
</Conditions>
<Actions>
<Set Target="[CurrentPlaylist.Source]" Value="[EmptyList]" />
<Set Target="[CurrentUuid.Value]" Value=""/>
<Set Target="[CurrentVideoType.Value]" Value=""/>
</Actions>
</Condition>
<Rule>
<Conditions>
<Equality Source="[PlayRate.Value]" ConditionOp="GreaterThan" Value="0"/>
<Equality Source="[CurrentPlaylist.Source]" Value="[EmptyList]"/>
<Equality Source="[InteractiveAdState.Value]" Value="None"/>
</Conditions>
<Actions>
<Invoke Target="[RefreshPlaylist.Invoke]"/>
</Actions>
</Rule>
<Rule>
<Conditions>
<Modified Source="[PlayRate.Value]"/>
<Equality Source="[CurrentUuid.Value]" ConditionOp="NotEquals" Value=""/>
<Equality Source="[PlayRate.Value]" ConditionOp="GreaterThan" Value="0"/>
<Equality Source="[InteractiveAdState.Value]" Value="None"/>
</Conditions>
<Actions>
<Set Target="[MetricsPingTimer.Enabled]" Value="true"/>
</Actions>
</Rule>
<Rule>
<Conditions>
<Modified Source="[CurrentUuid.Value]"/>
<Equality Source="[CurrentUuid.Value]" ConditionOp="NotEquals" Value=""/>
<Equality Source="[PlayRate.Value]" ConditionOp="NotEquals" Value="0"/>
</Conditions>
<Actions>
<Set Target="[InteractiveAdState.Value]" Value="None" ExclusiveApply="false"/>
<Set Target="[CurrentVideoType.Value]" Value="" ExclusiveApply="false"/>
<Set Target="[CurrentVideoType.Value]" Value="[CurrentVideo.#ItemType!cor:String]"/>
</Actions>
</Rule>
<Condition Source="[CurrentVideoType.Value]" SourceValue="Content">
<Actions>
<Set Target="[ApplicationData.#PlaybackStopEnforced!BooleanChoice.Value]" Value="false" />
<Set Target="[CurrentVideoTitle.Value]" Value="[CurrentVideo.Description]"/>
<Set Target="[CurrentVideoSynopsis.Value]" Value="[CurrentVideo.#Synopsis!cor:String]"/>
</Actions>
</Condition>
<Default Target="[CurrentVideoTitle.Value]" Value=""/>
<Default Target="[CurrentVideoEpisode.Value]" Value=""/>
<Default Target="[CurrentVideoSynopsis.Value]" Value=""/>
<Rule ConditionLogicalOp="Or">
<Conditions>
<Equality Source="[CurrentVideoType.Value]" Value="Error"/>
<Equality Source="[CurrentVideoType.Value]" Value="Blank"/>
</Conditions>
<Actions>
<Set Target="[ApplicationData.#PlaybackStopEnforced!BooleanChoice.Value]" Value="true" />
<Set Target="[StopPlaybackLoopTimer.Enabled]" Value="true"/>
</Actions>
</Rule>
<Rule>
<Conditions>
<Equality Source="[ApplicationData.#CurrentVideoType!EditableText.Value]" ConditionOp="ChangedTo" Value="InteractiveAd" />
<Equality Source="[InteractiveAdState.Value]" Value="None" />
</Conditions>
<Actions>
<Set Target="[InteractiveAdState.Value]" Value="Pending" />
</Actions>
</Rule>
<Changed Source="[StopPlaybackLoopTimer.Tick]">
<Actions>
<Set Target="[StopPlaybackLoopTimer.Enabled]" Value="false" />
<Set Target="[PlayrateUpdateTimer.Enabled]" Value="true" />
</Actions>
</Changed>
<Changed Source="[PlayrateUpdateTimer.Tick]">
<Conditions>
<IsValid Source="[MediaTransport]" />
</Conditions>
<Actions>
<Set Target="[MediaTransport.PlayRate]" Value="0" />
</Actions>
</Changed>
<Condition Source="[ApplicationData.#PlayRate!RangedValue.Value]" ConditionOp="ChangedTo" SourceValue="0">
<Actions>
<Set Target="[StopPlaybackLoopTimer.Enabled]" Value="false"/>
<Set Target="[PlayrateUpdateTimer.Enabled]" Value="false"/>
</Actions>
</Condition>
<Rule>
<Conditions>
<Equality Source="[CurrentMediaIsOurs.Value]" Value="true"/>
<Equality Source="[PlayRate.Value]" Value="0"/>
</Conditions>
<Actions>
<Set Target="[EatPlay.Handle]" Value="true"/>
<Set Target="[EatPause.Handle]" Value="true"/>
<Set Target="[EatFastForward.Handle]" Value="true"/>
<Set Target="[EatRewind.Handle]" Value="true"/>
<Set Target="[EatSkipForward.Handle]" Value="true"/>
<Set Target="[EatSkipBack.Handle]" Value="true"/>
</Actions>
</Rule>
<Default Target="[EatPlay.Handle]" Value="false"/>
<Default Target="[EatPause.Handle]" Value="false"/>
<Default Target="[EatFastForward.Handle]" Value="false"/>
<Default Target="[EatRewind.Handle]" Value="false"/>
<Default Target="[EatSkipForward.Handle]" Value="false"/>
<Default Target="[EatSkipBack.Handle]" Value="false"/>
<Changed Source="[PlayingDuration.Value]">
<Conditions>
<Equality Source="[PlayingDuration.Value]" ConditionOp="NotEquals" Value=""/>
</Conditions>
<Actions>
<Invoke Target="[MaxTimeSpan.Parse]" ResultTarget="[MaxTimeSpan]" s="[PlayingDuration.Value]"/>
</Actions>
</Changed>
<Rule>
<Actions>
<Invoke Target="[MaxTimeSpan.FromTicks]" ResultTarget="[MaxTimeSpan]" value="9223372036854775807"/>
<Invoke Target="[ZeroTimeSpan.FromTicks]" ResultTarget="[ZeroTimeSpan]" value="0"/>
</Actions>
</Rule>
<Changed Source="[SkipToEnd.Invoked]">
<Conditions>
<Equality Source="[CurrentMediaIsOurs.Value]" Value="true"/>
<Equality Source="[PlayRate.Value]" ConditionOp="NotEquals" Value="0"/>
<Equality Source="[IsForegroundApplication.Value]" Value="true"/>
<Equality Source="[AppContext!addin:ApplicationContext.IsForegroundApplication]" Value="true"/>
<IsValid Source="[MediaTransport]"/>
</Conditions>
<Actions>
<Set Target="[MediaTransport.Position]" Value="[MaxTimeSpan]"/>
</Actions>
</Changed>
<Changed Source="[SkipToStart.Invoked]">
<Conditions>
<Equality Source="[CurrentMediaIsOurs.Value]" Value="true"/>
<Equality Source="[PlayRate.Value]" ConditionOp="NotEquals" Value="0"/>
<Equality Source="[IsForegroundApplication.Value]" Value="true"/>
<Equality Source="[AppContext!addin:ApplicationContext.IsForegroundApplication]" Value="true"/>
<IsValid Source="[MediaTransport]"/>
</Conditions>
<Actions>
<Set Target="[MediaTransport.Position]" Value="[ZeroTimeSpan]"/>
</Actions>
</Changed>
</Rules>
<Content>
<Panel>
<Children>
<Panel Name="ErrorPanel" Layout="HorizontalFlow" Visible="false">
<Animations>
<Animation Animation="animation://me:ErrorView.Show"/>
<Animation Animation="animation://me:ErrorView.Hide"/>
</Animations>
<Children>
<Panel Layout="VerticalFlow">
<Children>
<Text Name="ErrorLabel1" Color="color://me:Error.MessageFailure.Color" Font="font://me:Error.MessageFailure.Font" Layout="Center"/>
<Text Name="ErrorLabel2" Color="color://me:Error.MessageRetry.Color" Font="font://me:Error.MessageRetry.Font" Layout="Center"/>
</Children>
</Panel>
</Children>
</Panel>
<me:PageBaseUI Name="PageHost" IsHosted="true" ApplicationData="[ApplicationData]" Session="[Session]" ThrowOnLoadError="false" />
<me:DataTransfer Name="AddToPlayListDataHost" ResultSet="[AddToPlayListResult]"
RequestStatus="[AddToPlayListRequestStatus]" TargetSource="[AddToPlayListTargetSource.Value]"
RefreshCommand="[AddToPlayList]" />
<me:DataTransfer Name="PlaylistDataHost" ResultSet="[CurrentPlaylist]" RequestStatus="[PlaylistRequestStatus]"
TargetSource="http://mceondemand.microsoft.com:80/(S(3ac3179a-4973-460d-8193-3b1645ddc02a))/GetPlayListInfo.aspx" RefreshCommand="[RefreshPlaylist]" />
<me:DataTransfer Name="MetricsDataHost" ResultSet="[MetricsListResult]" RequestStatus="[MetricsStatus]"
TargetSource="[MetricsTargetSource.Value]" RefreshCommand="[DummyRefresh]" />
</Children>
</Panel>
</Content>
</UI>
<UI Name="PageBaseUI">
<Properties>
<cor:Boolean Name="IsHosted" Boolean="false" />
<addin:PageSession Name="Session" PageSession="$Required"/>
<PropertySet Name="ApplicationData" PropertySet="$Required" />
<PropertySet Name="PageData"/>
</Properties>
</UI>
</Mcml>
