
import os
import config
import domestic
import twc.EventLog as EventLog
import twc.dsmarshal as dsm


TWCDIR     = os.environ['TWCDIR']
TWCCLIDIR  = os.environ['TWCCLIDIR']
TWCPERSDIR = os.environ['TWCPERSDIR']

config.set('twcDir',               TWCDIR)
config.set('twcCliDir',            TWCCLIDIR)
config.set('twcPersDir',           TWCPERSDIR)

config.set('appName',              'playman')
config.set('channel',              'SystemEventChannel')
config.set('pluginRoot',           TWCPERSDIR + '/plugin')
config.set('resourceRoot',         '/rsrc')
config.set('pidFileName',          TWCPERSDIR + '/data/pid')

config.set('heatSafetyDataFile',   TWCPERSDIR + '/data/heatSafetyTips.data')
config.set('tempDir',              TWCPERSDIR + '/data/volatile/tmp')
config.set('productRoot',          TWCPERSDIR + '/products')
config.set('productPluginRoot',    TWCPERSDIR + '/plugin/playman/products')
config.set('playlistPluginRoot',   TWCPERSDIR + '/plugin/playman/playlists')
config.set('heuristicPluginRoot',  TWCPERSDIR + '/plugin/playman/heuristics')
config.set('configSet',            0)
config.set('preroll',              8*30)

d = twc.Data()
d.productTitle = ['Air Quality', 'Forecast']
d.bkgImage = ('domestic', None, None, None)
d.bkgFade = (5,5)
d.titleFadeInDuration = 10
d.titleFadeOutDuration = 10
d.actionDayPhrase = 'Ozone Action Day'
dsm.setDefault('Config.1.Local_AirQualityForecast', d)

d = twc.Data()
d.productTitle = ['Almanac', None]
d.bkgFade = (5,5)
d.titleFadeInDuration = 10
d.titleFadeOutDuration = 10
d.bkgImage = ('domestic', None, 'alm_moons_box', (50, 383))
dsm.setDefault('Config.1.Local_Almanac', d)

d = twc.Data()
d.productTitle = ['Almanac', None]
d.bkgFade = (5,5)
d.titleFadeInDuration = 10
d.titleFadeOutDuration = 10
d.bkgImage = ('domestic', None, 'alm_climo_box', (50, 383))
dsm.setDefault('Config.1.Local_Climatology', d)

d = twc.Data()
d.productTitle = ['Now']
d.bkgImage = ('domestic', None, 'current_box', (50, 380))
d.bkgFade = (5,5)
d.titleFadeInDuration = 10
d.titleFadeOutDuration = 10
d.activeVocal = 1
d.activeVocalCue = 1
dsm.setDefault('Config.1.Local_CurrentConditions', d)

d = twc.Data()
d.productTitle = ('Daypart', 'Forecast')
d.bkgImage = ('domestic', None, 'daypart_box', (50, 380))
d.titleFadeInDuration = 5
d.titleFadeOutDuration = 5
dsm.setDefault('Config.1.Local_DaypartForecast', d)

d = twc.Data()
d.productTitle = ['The Week', 'Ahead']
d.bkgImage = ('domestic', None, '7_day_box', (50, 380))
d.activeVocal = 1
d.activeVocalCue = 1
dsm.setDefault('Config.1.Local_7DayForecast', d)

d = twc.Data()
d.productTitle = ['Extended','Forecast']
d.bkgImage = ('domestic', None, '3_day_box', (50, 380))
d.activeVocal = 1
d.activeVocalCue = 1
dsm.setDefault('Config.1.Local_ExtendedForecast', d)

d = twc.Data()
d.productTitle = ['Getaway', 'Forecast']
d.titlePointerColor = (212, 212, 212, 0)
d.mapProduct = None
d.bkgImage = ('domestic', None, 'getaway_box', (50, 380))
dsm.setDefault('Config.1.Local_GetawayForecast', d)

d = twc.Data()
d.productTitle = ['Heat Safety', 'Tips']
d.bkgImage = ('domestic', None, 'heat_safety_box', (50, 380))
dsm.setDefault('Config.1.Local_HeatSafetyTips', d)

d = twc.Data()
d.productTitle = ('Now',)
d.bkgImage = ('domestic', None, 'local_obs_box', (50, 400))
d.titleFadeInDuration = 10
d.titleFadeOutDuration = 10
d.bkgFade = (5,5)
dsm.setDefault('Config.1.Local_LocalObservations', d)

d = twc.Data()
d.productTitle = ['Outdoor Activity','Forecast']
d.bkgImage = ('domestic', None, 'outdoor_activity_box', (48, 383))
dsm.setDefault('Config.1.Local_OutdoorActivityForecast', d)

d = twc.Data()
d.productTitle = ['School Day','Weather']
d.bkgImage = ('domestic', None, 'school_day_weather_box', (48, 383))
dsm.setDefault('Config.1.Local_SchoolDayWeather', d)

d = twc.Data()
d.productTitle = ['Local','Forecast']
d.bkgImage = ('domestic', None, 'text_forecast_box', (50, 380))
d.activeVocal = 1
d.activeVocalCue = 1
dsm.setDefault('Config.1.Local_TextForecast', d)

d = twc.Data()
d.productTitle = ['Radar', 'Satellite']
d.activeVocal = 1
d.activeVocalCue = 1
# set text1 background color for _Title.rs since this is a map
d.text1BkgColor    = (20,20,20,255)
dsm.setDefault('Config.1.Local_RadarSatelliteComposite', d)

d = twc.Data()
d.productTitle = ['Satellite', None]
d.activeVocal = 1
d.activeVocalCue = 1
# set text1 background color for _Title.rs since this is a map
d.text1BkgColor    = (20,20,20,255)
dsm.setDefault('Config.1.Local_Satellite', d)

d = twc.Data()
# productTitle is set dynamically by product
d.productTitle = [ None, None ]
d.activeVocal = 1
d.activeVocalCue = 1
# set text1 background color for _Title.rs since this is a map
d.text1BkgColor    = (20,20,20,255)
dsm.setDefault('Config.1.Local_RegionalForecastMap', d)
dsm.setDefault('Config.1.Local_MetroForecastMap', d)

d = twc.Data()
d.productTitle = ['Regional','Doppler']
d.activeVocal = 1
d.activeVocalCue = 1
# set text1 background color for _Title.rs since this is a map
d.text1BkgColor    = (20,20,20,255)
# maps don't have backgrounds
d.bkgImage         = [ None, None, None, None ]
d.titleFadeOutDuration = 0
dsm.setDefault('Config.1.Local_RegionalDopplerRadar', d)

d = twc.Data()
d.productTitle = ['Local','Doppler']
d.activeVocal = 1
d.activeVocalCue = 1
# set text1 background color for _Title.rs since this is a map
d.text1BkgColor    = (20,20,20,255)
# maps don't have backgrounds
d.bkgImage         = [ None, None, None, None]
d.titleFadeOutDuration = 0
dsm.setDefault('Config.1.Local_MetroDopplerRadar', d)

d = twc.Data()
d.productTitle = ['regional','forecast']
# set text1 background color for _Title.rs since this is a map
d.text1BkgColor    = (20,20,20,255)
d.activeVocal = 1
d.activeVocalCue = 1
dsm.setDefault('Config.1.Local_RegionalForecastMap', d)

d = twc.Data()
d.productTitle = ['Now']
# set text1 background color for _Title.rs since this is a map
d.text1BkgColor    = (20,20,20,255)
d.activeVocal = 1
d.activeVocalCue = 1
dsm.setDefault('Config.1.Local_RegionalObservationMap', d)

# NOTE: We don't display MetroObservationMap today, but the
# client supports it.
d = twc.Data()
d.productTitle = ['Now']
# set text1 background color for _Title.rs since this is a map
d.text1BkgColor    = (20,20,20,255)
d.activeVocal = 1
d.activeVocalCue = 1
dsm.setDefault('Config.1.Local_MetroObservationMap', d)

d = twc.Data()
d.productTitle = ['local','forecast']
# set text1 background color for _Title.rs since this is a map
d.text1BkgColor    = (20,20,20,255)
d.activeVocal = 1
d.activeVocalCue = 1
dsm.setDefault('Config.1.Local_MetroForecastMap', d)

d = twc.Data()
d.productTitle = ['Weather','Bulletin']
d.bkgImage = ('domestic', 'domesticBulletin', 'nws_headlines_box', (50, 400))
d.bkgFade = (5,0)
d.activeVocal = 1
d.activeVocalCue = 1
dsm.setDefault('Config.1.Local_NWSHeadlines', d)

d = twc.Data()
d.productTitle = ['Traffic','Report']
d.bkgImage = ('domestic', None, None, None)
d.activeVocal = 1
d.activeVocalCue = 1
d.maxPageDuration = 14
d.minPageDuration = 7
dsm.setDefault('Config.1.Local_TrafficReport', d)

d = twc.Data()
d.productTitle = ['Traffic','Flow']
d.bkgImage = ('domestic', None, 'traffic_flow_box', (50, 380))
d.activeVocalCue = 1
dsm.setDefault('Config.1.Local_TrafficFlow', d)

d = twc.Data()
d.productTitle = ['Traffic','Overview']
d.bkgImage = ('domestic', None, 'traffic_overview_box', (50, 380))
d.activeVocalCue = 1
dsm.setDefault('Config.1.Local_TrafficOverview', d)

d = twc.Data()
d.productTitle = ('Record', 'Temperature')
d.bkgImage = ('domestic', None, 'record_high_low_box', (48, 400))
#d.bkgImage = ('domestic', None, None, None)
dsm.setDefault('Config.1.Local_RecordHighLow', d)

d = twc.Data()
d.ccBkgImage = 'ccBg'
d.fcstBkgImage = 'fcstTextBg'
dsm.setDefault('Config.1.Local_SqueezebackFade', d)

d = twc.Data()
d.bkgImage = ('ccBg', None)
dsm.setDefault('Config.1.Cc_CurrentConditions', d)

d = twc.Data()
d.bkgImage = ('fcstTextBg', None)
d.bkgFade = (15,15)
dsm.setDefault('Config.1.Fcst_TextForecast', d)

d = twc.Data()
d.bkgImage = ('fcstTextBg', 'fcstDaypartBg')
d.bkgFade = (15,15)
dsm.setDefault('Config.1.Fcst_DaypartForecast', d)

d = twc.Data()
d.bkgImage = ('fcstTextBg', 'fcstExtendedBg')
d.bkgFade = (15,15)
dsm.setDefault('Config.1.Fcst_ExtendedForecast', d)

d = twc.Data()
d.bkgImage = ('fcstTextBg', None)
d.bkgFade = (15,15)
dsm.setDefault('Config.1.Fcst_Unavailable', d)

d = twc.Data()
dsm.setDefault('Config.1.Radar_LocalDoppler', d)

d = twc.Data()
d.fname = '/images/localDopplerBb'
d.ext = 'tif'
d.origin = (12, 12)
dsm.setDefault('Config.1.Radar_Billboard', d)

d = twc.Data()
d.bkgFade = (10,5)
d.productTitle = ['Marine', 'Forecast']
d.bkgImage = ('domestic', 'domesticMarine', 'marine_box', (50, 400))
dsm.setDefault('Config.1.Local_MarineForecast', d)

d = twc.Data()
d.productTitle = ['Tides', None]
d.bkgFade = (10,5)
d.bkgImage = ('domestic', 'domesticMarine', 'tides_box', (50, 400))
dsm.setDefault('Config.1.Local_Tides', d)

d = twc.Data()
d.crawlRate = 3
dsm.setDefault('Config.1.Ldl_HurricaneWatch', d)

d = twc.Data()
dsm.setDefault('Config.1.Ldl_IntroAnimation', d)

d = twc.Data()
dsm.setDefault('Config.1.TimeTemp_BulletinClock', d)

d = twc.Data()
d.bkgImage = ('SB/MainBox2', 'SB/SevereBG')
d.bkgFade = (5,5)
dsm.setDefault('Config.1.LFLocal_NWSHeadlines', d)

d = twc.Data()
d.bkgImage = ('SB/MainBox2', None)
d.transition = (10,0)
dsm.setDefault('Config.1.LFLocal_LocalDoppler', d)
d = twc.Data()
d.bkgImage = ('SB/MainBox2', None)
d.transition = (0,5)
dsm.setDefault('Config.1.LFLocal_ExtendedForecast', d)

d = twc.Data()
d.bkgImage = ('SB/MainBox2', None)
d.bkgFade = (15,15)
dsm.setDefault('Config.1.LFLocal_HourlyForecast', d)
dsm.setDefault('Config.1.LFLocal_TextForecast', d)
d = twc.Data()
d.bkgImage = ('SB/MainBox2', 'SB/SunriseBG')
d.bkgFade = (15,15)
dsm.setDefault('Config.1.LFLocal_Almanac', d)
d = twc.Data()
d.bkgImage = ('SB/MainBox1', None)
d.transition = (10,5)
dsm.setDefault('Config.1.LFCc_CurrentConditions', d)
d = twc.Data()
dsm.setDefault('Config.1.LFClock_Clock', d)

d = twc.Data()
d.bkgImage = ('SB/CrawlBox', None)
dsm.setDefault('Config.1.LFCrawl_LASCrawl', d)

#NationalLDL product configs
d = twc.Data()
dsm.setDefault('Config.1.NationalLdl_IntroAnimation', d)
dsm.setDefault('Config.1.NationalLdl_WeatherBulletin', d)
dsm.setDefault('Config.1.NationalLdl_DopplerRadar', d)
dsm.setDefault('Config.1.NationalLdl_CurrentConditions', d)
dsm.setDefault('Config.1.NationalLdl_HourlyForecast', d)
dsm.setDefault('Config.1.NationalLdl_DaypartForecast', d)
dsm.setDefault('Config.1.NationalLdl_5DayForecast', d)
dsm.setDefault('Config.1.NationalLdl_RadarSatellite', d)
dsm.setDefault('Config.1.NationalLdl_TextForecast', d)
dsm.setDefault('Config.1.NationalLdl_36HourForecast', d)

###
### Flavor map for playlists
###
d = [
        ('D', ( 0, 0)),
        ('E', ( 1, 0)),         
        ('F', ( 2, 0)),         

        ('S', ( 0, 1)),         
                
        ('K', ( 0, 0)),
        ('O', ( 1, 0)),
        ('P', ( 2, 0)),
                                
        ('N', ( 0, 0)),
        ('L', ( 1, 0)),
        ('M', ( 2, 0)),
    ]
dsm.setDefault('Config.1.FlavorMap',d)
                                                

###
### Default Playlists (one's not currently managed by SCMT)
###
d = twc.Data()
d.prodPrefix = "BackgroundMusic"
d.childPrefixes = [];
d.units = "percent"
d.loadHeuristic = "loadPriority_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.playlist = [
    #(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("Default",0,100,100,100,1,1,0,[]),
    ("Null",0,100,100,100,1,2,0,[]),
]
dsm.setDefault('Config.1.Playlist.BackgroundMusic.bkgMusic1', d)


d = twc.Data()
d.prodPrefix = "Bulletin"
d.childPrefixes = ["Logo", "TimeTemp"]
d.units = "percent"
d.loadHeuristic = "loadPriority_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.playlist = [
    #(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("Default",0,100,100,100,1,1,0,["logoNoDotCom", "timeTempBulletin1",]),
    ("Null",0,100,100,100,1,2,0,["nullLogo1", "nullTimeTemp1",]),
]
dsm.setDefault('Config.1.Playlist.Bulletin.bulletin1', d)

d = twc.Data()
d.prodPrefix = "Bulletin"
d.childPrefixes = ["Logo", "TimeTemp"]
d.units = "percent"
d.loadHeuristic = "loadPriority_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.playlist = [
    #(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("Default",0,100,100,100,1,1,0,["logoNoDotCom", "timeTempBulletin1",]),
    ("Null",0,100,100,100,1,2,0,["nullLogo1", "nullTimeTemp1",]),
]
dsm.setDefault('Config.1.Playlist.Bulletin.bulletinDbs1', d)

d = twc.Data()
d.prodPrefix = "Tag"
d.childPrefixes = [];
d.units = "percent"
d.loadHeuristic = "loadPriorityOneOnly_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.playlist = [
    #(prod,prod,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("Default",0,100,100,100,1,1,0,[]),
    ("Null",   0,100,100,100,1,2,0,[]),
]
dsm.setDefault('Config.1.Playlist.Tag', d)


d = twc.Data()
d.prodPrefix = "Tag"
d.childPrefixes = [];
d.units = "seconds"
d.loadHeuristic = "loadPriorityOneOnly_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.playlist = [
    #(prod,prod,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("LASCrawl",0, 50,  50, 50, 1, 1, 0, []),
    ("Default", 0, 70, 120, 10, 1, 1, 0, []),
    ("Null",    0,  1, 120,  1, 1, 2, 0, []),
]
dsm.setDefault('Config.1.Playlist.Tag.tag1', d)

d = twc.Data()
d.prodPrefix = "LdlMenu"
d.childPrefixes = [];
d.units = "seconds"
d.loadHeuristic = "loadPriorityOneOnly_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.playlist = [
    #(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("IntroAnimation",0,2,2,2,0,1,0,[]),
    ("Default",0,120,120,58,1,1,0,[]),
    ("Null",0,120,120,0,1,2,0,[]),
]
dsm.setDefault('Config.1.Playlist.LdlMenu.ldlMenu1', d)

d = twc.Data()
d.prodPrefix = "TimeTemp"
d.childPrefixes = [];
d.units = "percent"
d.loadHeuristic = "loadPriorityOneOnly_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.playlist = [
    #(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("Default",0,100,100,100,1,1,0,[]),
    ("Null",0,100,100,100,1,2,0,[]),
]
dsm.setDefault('Config.1.Playlist.TimeTemp.timeTemp1', d)

d = twc.Data()
d.prodPrefix = "TimeTemp"
d.childPrefixes = [];
d.units = "percent"
d.loadHeuristic = "loadPriorityOneOnly_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.playlist = [
    #(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("BulletinClock",0,100,100,100,1,1,0,[]),
    ("Null",0,100,100,100,1,2,0,[]),
]
dsm.setDefault('Config.1.Playlist.TimeTemp.timeTempBulletin1', d)

d = twc.Data()
d.prodPrefix = "TimeTemp"
d.childPrefixes = [];
d.units = "percent"
d.loadHeuristic = "loadPriorityOneOnly_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.playlist = [
    #(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("DbsClock",0,100,100,100,1,1,0,[]),
    ("Null",0,100,100,100,1,2,0,[]),
]
dsm.setDefault('Config.1.Playlist.TimeTemp.timeTempDbs1', d)

d = twc.Data()
d.prodPrefix = "TimeTemp"
d.childPrefixes = [];
d.units = "percent"
d.loadHeuristic = "loadPriorityOneOnly_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.playlist = [
    #(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("Null",0,100,100,100,1,1,0,[]),
]
dsm.setDefault('Config.1.Playlist.TimeTemp.nullTimeTemp1', d)

d = twc.Data()
d.prodPrefix = "NationalLdl"
d.childPrefixes = ["Logo",];
d.units = "percent"
d.loadHeuristic = "loadPriority_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.playlist = [
    #(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("Null",0,100,100,100,1,1,0,["nullLogo1",]),
]
dsm.setDefault('Config.1.Playlist.NationalLdl.nationalDown', d)

d = twc.Data()
d.prodPrefix = "Ldl"
d.childPrefixes = ["LdlMenu", "TimeTemp", "Logo",];
d.units = "percent"
d.loadHeuristic = "loadPriority_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.playlist = [
    #(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("Null",0,100,100,100,1,1,0,["ldlMenu1", "nullTimeTemp1", "logo1",]),
]
dsm.setDefault('Config.1.Playlist.Ldl.nationalDown', d)


d = twc.Data()
d.prodPrefix = "NationalLdl"
d.childPrefixes = ["Logo"];
d.units = "seconds"
d.loadHeuristic = "loadPriority_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.playlist = [
    #(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("IntroAnimation",0,2,2,2,0,1,0,["nationalLdlLogo1"]),
    ("WeatherBulletin",0,6,24,0,0,1,0,["nationalLdlLogo1"]),
    ("DopplerRadar",0,4,12,4,0,1,0,["nationalLdlLogo1"]),
    ("CurrentConditions",0,16,16,4,0,1,0,["nationalLdlLogo1"]),
    ("HourlyForecast",0,8,8,0,0,1,0,["nationalLdlLogo1"]),
    ("DaypartForecast",0,30,30,30,0,1,0,["nationalLdlLogo1"]),
    ("5DayForecast",0,10,10,0,0,1,0,["nationalLdlLogo1"]),
    ("RadarSatellite",0,8,8,8,0,1,0,["nationalLdlLogo1"]),
    ("CurrentConditions",1,16,16,0,0,1,0,["nationalLdlLogo1"]),
    ("36HourForecast",1,10,10,10,0,1,0,["nationalLdlLogo1"]),
    ("5DayForecast",1,10,10,0,0,1,0,["nationalLdlLogo1"]),
    ("CurrentConditions",2,16,16,0,0,1,0,["nationalLdlLogo1"]),
    ("36HourForecast",2,10,10,10,0,1,0,["nationalLdlLogo1"]),
    ("5DayForecast",2,10,10,0,0,1,0,["nationalLdlLogo1"]),
    ("CurrentConditions",3,16,16,0,0,1,0,["nationalLdlLogo1"]),
    ("36HourForecast",3,10,10,10,0,1,0,["nationalLdlLogo1"]),
    ("5DayForecast",3,10,10,0,0,1,0,["nationalLdlLogo1"]),
    ("CurrentConditions",4,16,16,0,0,1,0,["nationalLdlLogo1"]),
    ("36HourForecast",4,10,10,10,0,1,0,["nationalLdlLogo1"]),
    ("5DayForecast",4,10,10,0,0,1,0,["nationalLdlLogo1"]),
    ("CurrentConditions",5,16,16,0,0,1,0,["nationalLdlLogo1"]),
    ("36HourForecast",5,10,10,10,0,1,0,["nationalLdlLogo1"]),
    ("5DayForecast",5,10,10,0,0,1,0,["nationalLdlLogo1"]),
    ("WeatherBulletin",0,6,24,0,0,1,0,["nationalLdlLogo1"]),
    ("DopplerRadar",0,4,12,4,0,1,0,["nationalLdlLogo1"]),
    ("CurrentConditions",0,16,16,4,0,1,0,["nationalLdlLogo1"]),
    ("HourlyForecast",0,8,8,0,0,1,0,["nationalLdlLogo1"]),
    ("TextForecast.1",0,18,18,3,0,1,0,["nationalLdlLogo1"]),
    ("TextForecast.2",0,18,18,3,0,1,0,["nationalLdlLogo1"]),
    ("TextForecast.3",0,18,18,3,0,1,0,["nationalLdlLogo1"]),
    ("5DayForecast",0,10,10,4,0,1,0,["nationalLdlLogo1"]),
    ("RadarSatellite",0,8,8,8,0,1,0,["nationalLdlLogo1"]),
    ("CurrentConditions",1,16,16,0,0,1,0,["nationalLdlLogo1"]),
    ("36HourForecast",1,10,10,10,0,1,0,["nationalLdlLogo1"]),
    ("5DayForecast",1,10,10,0,0,1,0,["nationalLdlLogo1"]),
    ("CurrentConditions",2,16,16,0,0,1,0,["nationalLdlLogo1"]),
    ("36HourForecast",2,10,10,10,0,1,0,["nationalLdlLogo1"]),
    ("5DayForecast",2,10,10,0,0,1,0,["nationalLdlLogo1"]),
    ("CurrentConditions",3,16,16,0,0,1,0,["nationalLdlLogo1"]),
    ("36HourForecast",3,10,10,10,0,1,0,["nationalLdlLogo1"]),
    ("5DayForecast",3,10,10,0,0,1,0,["nationalLdlLogo1"]),
    ("CurrentConditions",4,16,16,0,0,1,0,["nationalLdlLogo1"]),
    ("36HourForecast",4,10,10,10,0,1,0,["nationalLdlLogo1"]),
    ("5DayForecast",4,10,10,0,0,1,0,["nationalLdlLogo1"]),
    ("CurrentConditions",5,16,16,0,0,1,0,["nationalLdlLogo1"]),
    ("36HourForecast",5,10,10,10,0,1,0,["nationalLdlLogo1"]),
    ("5DayForecast",5,10,10,0,0,1,0,["nationalLdlLogo1"]),
    ("Void",0,1,600,1,1,1,0,["nationalLdlLogo1"]),
]
dsm.setDefault('Config.1.Playlist.NationalLdl.nationalLdlUpA', d)

d = twc.Data()
d.prodPrefix = "NationalLdl"
d.childPrefixes = ["Logo"];
d.units = "seconds"
d.loadHeuristic = "loadPriority_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.playlist = [
    #(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("IntroAnimationSmall",0,2,2,2,0,1,0,["nationalLdlLogo1"]),
    ("CurrentConditionsSmall",0,12,12,4,0,1,0,["nationalLdlLogo1"]),
    ("DaypartForecastSmall",0,16,16,8,0,1,0,["nationalLdlLogo1"]),
    ("5DayForecastSmall",0,20,20,10,0,1,0,["nationalLdlLogo1"]),
    ("CurrentConditionsSmall",1,12,12,0,0,1,0,["nationalLdlLogo1"]),
    ("DaypartForecastSmall",1,16,16,8,0,1,0,["nationalLdlLogo1"]),
    ("5DayForecastSmall",1,20,20,10,0,1,0,["nationalLdlLogo1"]),
    ("CurrentConditionsSmall",2,12,12,0,0,1,0,["nationalLdlLogo1"]),
    ("DaypartForecastSmall",2,16,16,8,0,1,0,["nationalLdlLogo1"]),
    ("5DayForecastSmall",2,20,20,10,0,1,0,["nationalLdlLogo1"]),
    ("CurrentConditionsSmall",3,12,12,0,0,1,0,["nationalLdlLogo1"]),
    ("DaypartForecastSmall",3,16,16,8,0,1,0,["nationalLdlLogo1"]),
    ("5DayForecastSmall",3,20,20,10,0,1,0,["nationalLdlLogo1"]),
    ("CurrentConditionsSmall",4,12,12,0,0,1,0,["nationalLdlLogo1"]),
    ("DaypartForecastSmall",4,16,16,8,0,1,0,["nationalLdlLogo1"]),
    ("5DayForecastSmall",4,20,20,10,0,1,0,["nationalLdlLogo1"]),
    ("CurrentConditionsSmall",5,12,12,0,0,1,0,["nationalLdlLogo1"]),
    ("DaypartForecastSmall",5,16,16,8,0,1,0,["nationalLdlLogo1"]),
    ("5DayForecastSmall",5,20,20,10,0,1,0,["nationalLdlLogo1"]),
    ("Void",0,1,600,1,1,1,0,["nationalLdlLogo1"]),
]
dsm.setDefault('Config.1.Playlist.NationalLdl.nationalLdlUpB', d)


d = twc.Data()
d.prodPrefix = "Ldl"
d.childPrefixes = ["LdlMenu", "TimeTemp", "Logo"];
d.units = "seconds"
d.loadHeuristic = "loadPriority_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.playlist = [
    #(name,inst,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("IntroAnimation",0,2,2,2,0,1,0,["ldlMenu1", "timeTemp1", "logo1"]),
    ("LASCrawl",0,4,120,4,0,1,0,["ldlMenu1", "timeTemp1", "logo1",]),
    ("HurricaneWatch",0,4,12,4,0,1,0,["ldlMenu1", "timeTemp1", "logo1",]),
    ("TornadoWatch",0,6,480,6,0,1,0,["ldlMenu1", "timeTemp1", "logo1",]),
    ("SevereThunderstormWatch",0,6,480,6,0,1,0,["ldlMenu1", "timeTemp1", "logo1",]),
    ("WeatherUpdateMessage",0,4,120,4,0,1,0,["ldlMenu1", "timeTemp1", "logo1",]),
    ("StarIDMessage",0,4,4,4,0,1,0,["ldlMenu1", "timeTemp1", "logo1"]),
    ("CurrentObs",3,4,40,4,0,1,0,["ldlMenu1", "timeTemp1", "logo1"]),
    ("StarIDMessage",0,4,4,4,0,1,0,["ldlMenu1", "timeTemp1", "logo1"]),
    ("CurrentObs",3,4,40,4,0,1,0,["ldlMenu1", "timeTemp1", "logo1"]),
    ("StarIDMessage",0,4,4,4,0,1,0,["ldlMenu1", "timeTemp1", "logo1"]),
    ("CurrentObs",3,4,40,4,0,1,0,["ldlMenu1", "timeTemp1", "logo1"]),
    ("Void",0,1,120,1,1,1,0,["ldlMenu1", "timeTemp1", "logo1"]),
]
dsm.setDefault('Config.1.Playlist.Ldl.ldl1', d)

d = [ 
        [[(0, 0), (23, 59) , "NationalLdl.nationalLdlUpA"],],
        [[(0, 0), (23, 59) , "NationalLdl.nationalLdlUpA"],],
        [[(0, 0), (23, 59) , "NationalLdl.nationalLdlUpA"],],
        [[(0, 0), (23, 59) , "NationalLdl.nationalLdlUpA"],],
        [[(0, 0), (23, 59) , "NationalLdl.nationalLdlUpA"],],
        [[(0, 0), (23, 59) , "NationalLdl.nationalLdlUpA"],],
        [[(0, 0), (23, 59) , "NationalLdl.nationalLdlUpA"],],
    ]
dsm.setDefault('Config.1.Playlist.NationalLdl.scheduleA', d)
d = [ 
        [[(0, 0), (23, 59) , "NationalLdl.nationalLdlUpB"],],
        [[(0, 0), (23, 59) , "NationalLdl.nationalLdlUpB"],],
        [[(0, 0), (23, 59) , "NationalLdl.nationalLdlUpB"],],
        [[(0, 0), (23, 59) , "NationalLdl.nationalLdlUpB"],],
        [[(0, 0), (23, 59) , "NationalLdl.nationalLdlUpB"],],
        [[(0, 0), (23, 59) , "NationalLdl.nationalLdlUpB"],],
        [[(0, 0), (23, 59) , "NationalLdl.nationalLdlUpB"],],
    ]
dsm.setDefault('Config.1.Playlist.NationalLdl.scheduleB', d)

d = twc.Data()
d.prodPrefix = "Ldl"
d.childPrefixes = ["LdlMenu", "TimeTemp", "Logo",];
d.units = "seconds"
d.loadHeuristic = "loadPriorityOneOnly_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.playlist = [
    #(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("IntroAnimation",0,2,2,2,0,1,0,["ldlMenu1", "timeTempDbs1", "logo1"]),
    ("DbsMetroForecasts",0,4,144,4,0,1,0,["ldlMenu1", "timeTempDbs1", "logo1",]),
    ("DbsAirportDelays",0,4,196,4,0,1,0,["ldlMenu1", "timeTempDbs1", "logo1",]),
    ("DbsCurrentConditions",0,4,120,4,0,1,0,["ldlMenu1", "timeTempDbs1", "logo1",]),
    #("Null",0,1,480,1,1,2,0,["ldlMenu1", "timeTempDbs1", "logo1",]),
    ("Void",0,1,480,1,1,2,0,["ldlMenu1", "timeTempDbs1", "logo1",]),
]
dsm.setDefault('Config.1.Playlist.NationalLdl.nationalDbsUp', d)

d = twc.Data()
d.prodPrefix = "Ldl"
d.childPrefixes = ["LdlMenu", "TimeTemp", "Logo",];
d.units = "seconds"
d.loadHeuristic = "loadPriorityOneOnly_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.playlist = [
    #(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("IntroAnimation",0,2,2,2,0,1,0,["ldlMenu1", "timeTempDbs1", "logo1"]),
    ("LASCrawl",0,4,120,1,0,1,0,["ldlMenu1", "timeTempDbs1", "logo1",]),
    ("DbsCurrentConditions",0,4,120,4,1,1,0,["ldlMenu1", "timeTempDbs1", "logo1",]),
    ("Void",0,1,120,1,1,2,0,["ldlMenu1", "timeTempDbs1", "logo1",]),
]
dsm.setDefault('Config.1.Playlist.Ldl.dbs1', d)

d = twc.Data()
d.prodPrefix = "LocalAvail"
d.childPrefixes = [];
d.units = "percent"
d.loadHeuristic = "loadPriority_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.playlist = [
    #(name,inst,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("Default",0,100,100,100,1,1,0,[]),
]
dsm.setDefault('Config.1.Playlist.LocalAvail', d)

d = twc.Data()
d.loadHeuristic = "loadPriorityOneOnly_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.prodPrefix = "Fcst"
d.childPrefixes = [];
d.units = "seconds"
d.playlist = [
    #(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("TextForecast.1",0,14,60,14,1,1,0,[]),
    ("TextForecast.2",0,14,60,14,1,1,0,[]),
    ("DaypartForecast",0,14,60,14,1,1,0,[]),
    ("ExtendedForecast",0,14,60,14,1,1,0,[]),
    ("Unavailable",0,1,60,1,1,2,0,[]),
]
dsm.setDefault('Config.1.Playlist.Fcst.fcst1', d)

d = twc.Data()
d.loadHeuristic = "loadPriority_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.prodPrefix = "Radar"
d.childPrefixes = [];
d.units = "seconds"
d.playlist = [
    #(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("Billboard",0,3,3,3,0,2,0,[]),
    ("LocalDoppler",0,55,58,55,1,1,1,[]),
    ("Null",0,58,58,58,0,1,1,[]),
]
dsm.setDefault('Config.1.Playlist.Radar.radar1', d)

d = twc.Data()
d.loadHeuristic = "loadPriority_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.prodPrefix = "Cc"
d.childPrefixes = [];
d.units = "percent"
d.playlist = [
    #(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("CurrentConditions",0,100,100,100,1,1,0,[]),
]
dsm.setDefault('Config.1.Playlist.Cc.cc1', d)

d = twc.Data()
d.loadHeuristic = "loadPriority_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.prodPrefix = "Logo"
d.childPrefixes = [];
d.units = "percent"
d.playlist = [
    #(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("Default",0,100,100,100,1,1,0,[]),
]
dsm.setDefault('Config.1.Playlist.Logo.logo1', d)

d = twc.Data()
d.loadHeuristic = "loadPriority_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.prodPrefix = "Logo"
d.childPrefixes = [];
d.units = "percent"
d.playlist = [
    #(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("NationalLdlLogo",0,100,100,100,1,1,0,[]),
]
dsm.setDefault('Config.1.Playlist.Logo.nationalLdlLogo1', d)

d = twc.Data()
d.loadHeuristic = "loadPriority_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.prodPrefix = "Logo"
d.childPrefixes = [];
d.units = "percent"
d.playlist = [
    #(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("NoDotCom",0,100,100,100,1,1,0,[]),
]
dsm.setDefault('Config.1.Playlist.Logo.logoNoDotCom', d)

d = twc.Data()
d.loadHeuristic = "loadPriority_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.prodPrefix = "Logo"
d.childPrefixes = [];
d.units = "percent"
d.playlist = [
    #(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("Null",0,100,100,100,1,1,0,[]),
]
dsm.setDefault('Config.1.Playlist.Logo.nullLogo1', d)

d = twc.Data()
d.prodPrefix = "Local"
d.childPrefixes = ["Tag", "Ldl", "BackgroundMusic"]
d.units = "seconds"
d.loadHeuristic = "loadPriority_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.playlist = [
    #(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    #("DbsAdLogo",0,60,60,60,0,1,0,["tag1", "bkgMusic1",]),
    ("Null",0,60,60,60,0,1,0,["tag1", "dbs1","bkgMusic1",]),
]
dsm.setDefault('Config.1.Playlist.DefaultUS.60.0', d)
dsm.setDefault('Config.1.Playlist.DefaultUS.60.1', d)
dsm.setDefault('Config.1.Playlist.WestCoastUS.60.0', d)
dsm.setDefault('Config.1.Playlist.WestCoastUS.60.1', d)
dsm.setDefault('Config.1.Playlist.SouthernCalifornia.60.0', d)
dsm.setDefault('Config.1.Playlist.SouthernCalifornia.60.1', d)

d = twc.Data()
d.prodPrefix = "LFLocal"
d.childPrefixes = ["LFCc", "LFCrawl"]
d.units = "seconds"
d.loadHeuristic = "loadPriority_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.playlist = [
#(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("LocalDoppler",0,12,12,12,1,1,0,["lfcc1","lfcrawl1",]),
    ("NWSHeadlines.1",0,8,8,8,1,1,0,["lfcc1","lfcrawl1",]),
    ("Almanac",0,8,8,8,1,2,0,["lfcc1","lfcrawl1",]),
    ("TextForecast.1",0,12,12,12,1,1,0,["lfcc1","lfcrawl1",]),
    ("TextForecast.2",0,12,12,12,1,1,0,["lfcc1","lfcrawl1",]),
    ("ExtendedForecast",0,14,14,14,1,1,0,["lfcc1","lfcrawl1",]),
]
dsm.setDefault('Config.1.Playlist.DefaultUS.58.2', d)
dsm.setDefault('Config.1.Playlist.WestCoastUS.58.2', d)
dsm.setDefault('Config.1.Playlist.SouthernCalifornia.58.2', d)


d = twc.Data()
d.prodPrefix = "Local"
d.childPrefixes = ["Tag", "Ldl", "BackgroundMusic"]
d.units = "seconds"
d.loadHeuristic = "loadPriority_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.playlist = [
    #(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    #("DbsAdLogo",0,90,90,90,0,1,0,["tag1", "bkgMusic1",]),
    ("Null",0,90,90,90,0,1,0,["tag1", "dbs1","bkgMusic1",]),
]
dsm.setDefault('Config.1.Playlist.DefaultUS.90.0', d)
dsm.setDefault('Config.1.Playlist.DefaultUS.90.1', d)
dsm.setDefault('Config.1.Playlist.WestCoastUS.90.0', d)
dsm.setDefault('Config.1.Playlist.WestCoastUS.90.1', d)
dsm.setDefault('Config.1.Playlist.SouthernCalifornia.90.0', d)
dsm.setDefault('Config.1.Playlist.SouthernCalifornia.90.1', d)

d = twc.Data()
d.prodPrefix = "Local"
d.childPrefixes = ["Tag", "Ldl", "BackgroundMusic"]
d.units = "seconds"
d.loadHeuristic = "loadPriority_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.playlist = [
    #(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    #("DbsAdLogo",0,120,120,120,0,1,0,["tag1","bkgMusic1",]),
    ("Null",0,120,120,120,0,1,0,["tag1", "dbs1","bkgMusic1",]),
]
dsm.setDefault('Config.1.Playlist.DefaultUS.120.0', d)
dsm.setDefault('Config.1.Playlist.DefaultUS.120.1', d)
dsm.setDefault('Config.1.Playlist.DefaultUS.120.2', d)
dsm.setDefault('Config.1.Playlist.SouthernCalifornia.120.0', d)
dsm.setDefault('Config.1.Playlist.SouthernCalifornia.120.1', d)
dsm.setDefault('Config.1.Playlist.SouthernCalifornia.120.2', d)
dsm.setDefault('Config.1.Playlist.WestCoastUS.120.0', d)
dsm.setDefault('Config.1.Playlist.WestCoastUS.120.1', d)
dsm.setDefault('Config.1.Playlist.WestCoastUS.120.2', d)

d = twc.Data()
d.prodPrefix = "Local"
d.childPrefixes = []
d.units = "percent"
d.loadHeuristic = "loadPriority_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.playlist = [
#(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("Null",0,100,100,100,1,1,0,[]),
]
dsm.setDefault('Config.1.Playlist.DefaultUS.57.0', d)
dsm.setDefault('Config.1.Playlist.WestCoastUS.57.0', d)
dsm.setDefault('Config.1.Playlist.SouthernCalifornia.57.0', d)

d = twc.Data()
d.loadHeuristic = "loadPriority_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.prodPrefix = "LFCc"
d.childPrefixes = [];
d.units = "percent"
d.playlist = [
    #(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("CurrentConditions",0,100,100,100,1,1,0,[]),
]
dsm.setDefault('Config.1.Playlist.LFCc.lfcc1', d)

d = twc.Data()
d.prodPrefix = "LFCrawl"
d.childPrefixes = [];
d.units = "percent"
d.loadHeuristic = "loadPriorityOneOnly_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.playlist = [
    #(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("LASCrawl",0,100,100,0,1,1,0,[]),
]
dsm.setDefault('Config.1.Playlist.LFCrawl.lfcrawl1', d)

d = twc.Data()
d.prodPrefix = "LFClock"
d.childPrefixes = [];
d.units = "percent"
d.loadHeuristic = "loadPriorityOneOnly_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.playlist = [
    #(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("Clock",0,100,100,100,1,1,0,[]),
]
dsm.setDefault('Config.1.Playlist.LFClock.lfclock1', d)

d = twc.Data()
d.prodPrefix = "LFLocal"
d.childPrefixes = ["LFCc", "LFCrawl"]
d.units = "seconds"
d.loadHeuristic = "loadPriority_v1"
d.overHeuristic = "overPriority_v1"
d.underHeuristic = "underPriority_v1"
d.playlist = [
#(prodName,prodInstance,optimal,max,min,step,priority,exclusive,childPlaylists)
    ("LocalDoppler",0,16,16,16,1,1,0,["lfcc1","lfcrawl1",]),
    ("NWSHeadlines.1",0,5,5,5,1,1,0,["lfcc1","lfcrawl1",]),
    ("NWSHeadlines.2",0,5,5,5,1,1,0,["lfcc1","lfcrawl1",]),
    ("Almanac",0,10,10,10,1,2,0,["lfcc1","lfcrawl1",]),
    ("HourlyForecast",0,12,12,12,1,1,0,["lfcc1","lfcrawl1",]),
    ("TextForecast.1",0,12,12,12,1,1,0,["lfcc1","lfcrawl1",]),
    ("TextForecast.2",0,12,12,12,1,1,0,["lfcc1","lfcrawl1",]),
    ("TextForecast.3",0,12,12,12,1,1,0,["lfcc1","lfcrawl1",]),
    ("ExtendedForecast",0,16,16,16,1,1,0,["lfcc1","lfcrawl1",]),
]
dsm.setDefault('Config.1.Playlist.DefaultUS.90.2', d)
dsm.setDefault('Config.1.Playlist.WestCoastUS.90.2', d)
dsm.setDefault('Config.1.Playlist.SouthernCalifornia.90.2', d)


###
### viewport config (listed in depth order so it's easier to read!)
### ABANDON HOPE ALL YE WHO ENTER HERE: Please note that all of these layer depths
### were painstakingly selected to achieve the desired effect, please realize what
### you are doing before you change these depths. You're best option: Don't mess
### with them!
###
### You should know that Ldl, LdlMenu, TimeTemp, and Logo are "special" layers that can
### change depths dynamically based on who is calling for them to run. So once
### again, don't mess with the depths!
###
d = twccommon.Data(depth=10, repeat=0, x=0, y=0, w=720, h=480, sx=1, sy=1, tx=0, ty=0)
dsm.setDefault('Config.1.viewport.LocalAvail', d)

d = twccommon.Data(depth=10, repeat=0, x=0, y=0, w=720, h=480, sx=1, sy=1, tx=0, ty=0)
dsm.setDefault('Config.1.viewport.BackgroundMusic', d)


# NOTE: The Video is HERE at depth 25

# Flavor 'S'
d = twccommon.Data(depth=40, repeat=0, x=0, y=140, w=216, h=340, sx=1, sy=1, tx=0, ty=0)
dsm.setDefault('Config.1.viewport.Cc', d)

d = twccommon.Data(depth=40, repeat=0, x=0, y=0, w=720, h=140, sx=1, sy=1, tx=0, ty=0)
dsm.setDefault('Config.1.viewport.Fcst', d)

# the -12 "shift" down and left is to compensate for the fact that the radar smoothing
# algorithm can't currently smooth the edge cases. And it just so happens that the
# widest smoothing 'kernel' width that we use today is 12 pixels wide so in the worst edge
# case we'll have to "hide" a 12 pixel width all the way around the map edges (outside the
# viewport) by shifting the image down and to the left. Note: Map size = 240, 137
d = twccommon.Data(depth=42, repeat=0, x=0, y=140, w=216, h=132, sx=1, sy=1, tx=-12, ty=-12)
dsm.setDefault('Config.1.viewport.Radar', d)

# LOT8s
d = twccommon.Data(depth=50, repeat=0, x=0, y=0, w=720, h=480, sx=1, sy=1, tx=0, ty=0)
dsm.setDefault('Config.1.viewport.Local', d)

# Long Form LOT8s
d = twccommon.Data(depth=50, repeat=0, x=54, y=224, w=172, h=180, sx=1, sy=1, tx=0, ty=0)
dsm.setDefault('Config.1.viewport.LFCc', d)
d = twccommon.Data(depth=50, repeat=0, x=54, y=51, w=482, h=173, sx=1, sy=1, tx=0, ty=0)
dsm.setDefault('Config.1.viewport.LFLocal', d)
d = twccommon.Data(depth=50, repeat=0, x=536, y=35, w=184, h=189, sx=1, sy=1, tx=0, ty=0)
dsm.setDefault('Config.1.viewport.LFClock', d)
d = twccommon.Data(depth=50, repeat=0, x=54, y=28, w=482, h=23, sx=1, sy=1, tx=0, ty=0)
dsm.setDefault('Config.1.viewport.LFCrawl', d)

# LOT8s LDL
d = twccommon.Data(depth=51, repeat=0, x=0, y=0, w=720, h=60, sx=1, sy=1, tx=0, ty=0)
dsm.setDefault('Config.1.viewport.Ldl', d)

d = twccommon.Data(depth=52, repeat=0, x=0, y=38, w=584, h=38, sx=1, sy=1, tx=0, ty=0)
dsm.setDefault('Config.1.viewport.LdlMenu', d)

d = twccommon.Data(depth=53, repeat=0, x=458, y=57, w=120, h=23, sx=1, sy=1, tx=0, ty=0)
dsm.setDefault('Config.1.viewport.TimeTemp', d)

# National LDL
d = twccommon.Data(depth=30, repeat=0, x=0, y=0, w=720, h=144, sx=1, sy=1, tx=0, ty=0)
dsm.setDefault('Config.1.viewport.NationalLdl', d)

# Misc
d = twccommon.Data(depth=54, repeat=0, x=0, y=0, w=720, h=164, sx=1, sy=1, tx=0, ty=0)
dsm.setDefault('Config.1.viewport.Logo', d)

d = twccommon.Data(depth=60, repeat=0, x=0, y=0, w=720, h=480, sx=1, sy=1, tx=0, ty=0)
dsm.setDefault('Config.1.viewport.Tag', d)

d = twccommon.Data(depth=70, repeat=0, x=0, y=0, w=720, h=140, sx=1, sy=1, tx=0, ty=0)
dsm.setDefault('Config.1.viewport.Bulletin', d)

# Set some default values for Nielsen SIDs
dsm.setDefault('Config.1.irdChannelSidTable.100', ('100', 350, 'FX'))
dsm.setDefault('Config.1.irdChannelSidTable.101', ('101', 2271, 'VB'))
dsm.setDefault('Config.1.irdChannelSidTable.default', ('100', 350, 'FX'))
