4 Commits

7 changed files with 11271 additions and 58 deletions

View File

@@ -46,6 +46,11 @@ HotelTV.hal = (function() {
'end_of_item'
];
let hcap_property_installer_menuItem_key = [
hcap.property.InstallerMenuItem.POWER_MANAGE,
hcap.property.InstallerMenuItem.MAX_VOLUME
];
const g_media = {
@@ -113,7 +118,7 @@ HotelTV.hal = (function() {
};
/**
* HCAP Wrapper Function::> Get Device Properties(Realted HCAP API:hcap.property.setProperty)
* HCAP Wrapper Function::> Set Device Properties(Realted HCAP API:hcap.property.setProperty)
* @param {string} sz_key property key name.
* @param {object} value is object to setting property
*/
@@ -129,6 +134,39 @@ HotelTV.hal = (function() {
});
};
/**
* HCAP Wrapper Function::> Get Installer Menu Item(Realted HCAP API:hcap.property.getInstallerMenuItem)
* @param {string} sz_key installer menu item key name.
*/
function __hcapfxn_get_installer_menuItem(sz_key) {
return new Promise((resolve, reject) => {
let param = {
"key": sz_key,
"onSuccess": function(s) { resolve({ "key": sz_key, "value": s.value }) },
//"onFailure": function(f) { reject({ "key": sz_key, "value": "unknown" }) }
"onFailure": function(f) { resolve({ "key": sz_key, "value": "unknown" }) }
};
hcap.property.getInstallerMenuItem(param);
});
};
/**
* HCAP Wrapper Function::> Set Installer Menu Item(Realted HCAP API:hcap.property.setInstallerMenuItem)
* @param {string} sz_key installer menu item key name.
* @param {object} value is object to setting installer menu item
*/
function __hcapfxn_set_installer_menuItem(sz_key, value) {
return new Promise((resolve, reject) => {
let param = {
"key": sz_key,
"value": value.toString(),
"onSuccess": function(s) { resolve({ "key": sz_key, "value": value }) },
"onFailure": function(f) { resolve({ "key": sz_key, "value": "unknown" }) }
};
hcap.property.setInstallerMenuItem(param);
});
};
/**
* IDCAP Wrapper Function::> Get Device Configuration(Properties)(Realted IDCAP API:idcap://configuration/property/get)
* @param {string} sz_key property key name.
@@ -671,7 +709,7 @@ HotelTV.hal = (function() {
return new Promise((resolve, reject) => {
hcap.network.getNetworkInformation({
"onSuccess" : function(s) {
console.log("onSuccess : network_mode = " + s.network_mode +
console.log("onSuccess : network_mode = " + s.network_mode +
"\n ssid = " + s.ssid +
"\n eth_speed = " + s.eth_speed +
"\n eth_duplex = " + s.eth_duplex +
@@ -691,7 +729,7 @@ HotelTV.hal = (function() {
"\n wifi_plugged = " + s.wifi_plugged +
"\n dhcp_state = " + s.dhcp_state);
resolve({ "error": false, "info": s });
},
},
"onFailure" : function(f) {
console.log("onFailure : errorMessage = " + f.errorMessage);
resolve({ "error": true, "info": null });
@@ -958,7 +996,36 @@ HotelTV.hal = (function() {
}
if ( _instant_pwr_target_mode==2 || _instant_pwr_target_mode==1 ){
_pmFxnArProperty.push(__hcapfxn_set_powermode('power_mode', hcap.power.PowerMode.WARM));
if (_devinfo["power_mode"] != hcap.power.PowerMode.WARM) {
_pmFxnArProperty.push(__hcapfxn_set_powermode('power_mode', hcap.power.PowerMode.WARM));
}
}
// hcap.property.InstallerMenuItem.POWER_MANAGE 설정
if ( _instant_pwr_target_mode==2 ) {
//
hcap.property.setInstallerMenuItem({
"key" : hcap.property.InstallerMenuItem.POWER_MANAGE,
"value" : 8,
"onSuccess" : function() {
console.log("onSuccess");
},
"onFailure" : function(f) {
console.log("onFailure : errorMessage = " + f.errorMessage);
}
});
} else {
// Sets number of hours of no activity before automatic shut off. (0 ~ 7)
hcap.property.setInstallerMenuItem({
"key" : hcap.property.InstallerMenuItem.POWER_MANAGE,
"value" : 0,
"onSuccess" : function() {
console.log("onSuccess");
},
"onFailure" : function(f) {
console.log("onFailure : errorMessage = " + f.errorMessage);
}
});
}
}
@@ -1771,7 +1838,7 @@ HotelTV.hal = (function() {
},
/**
* _keyValue는 아래 코드중 하나
* _keyValue는 아래 코드중 하나
* hcap.key.Code.ENTER
* hcap.key.Code.LEFT
* hcap.key.Code.RIGHT
@@ -1780,12 +1847,12 @@ HotelTV.hal = (function() {
* hcap.key.Code.DOWN
* hcap.key.Code.CH_UP
* hcap.key.Code.CH_DOWN
* @param {enum} _keyValue
* @param {enum} _keyValue
*/
SendVirKeyEvent: function(_keyValue) {
hcap.key.sendKey({
"virtualKeycode" : _keyValue,
"onSuccess" : function() { },
"onSuccess" : function() { },
"onFailure" : function(f) {
console.error("onFailure : errorMessage = " + f.errorMessage);
}

View File

@@ -313,12 +313,12 @@ HotelTV.ui_appfull = (function() {
const _state = HotelTV.state;
let _cur_date = new Date();
let _valid_state_keyEvtOnTv = ["tvCtgShow", "tvCtgHide", "tvShortcut"];
if ( __uifxn_Utils_CheckKeyisNumber(_evt.keyCode)==true ){
if ( _valid_state_keyEvtOnTv.includes(_state.menu.stage.cur)==true ){
_tmrEvt.keyevt.tv_numBtn = _cur_date;
}
}
} else if ( _evt.keyCode == gRmtKey.up || _evt.keyCode == gRmtKey.down ||
_evt.keyCode == gRmtKey.left || _evt.keyCode == gRmtKey.right ||
_evt.keyCode == gRmtKey.chup || _evt.keyCode == gRmtKey.chdown ) {
@@ -480,6 +480,7 @@ HotelTV.ui_appfull = (function() {
*/
function __uifxn_AppFull_OnHdmiConChangeEvt(_evt) {
let _state = HotelTV.state;
let _devinfo = HotelTV.devinfo;
let _trTbl = HotelTV.translation;
// {Number} param.index - index of the HDMI which was connected or disconnected.
// {Boolean} param.connected - true if the HDMI is connected, else false.
@@ -501,10 +502,15 @@ HotelTV.ui_appfull = (function() {
_state.menu.stage.prev = _state.menu.stage.cur;
_state.menu.stage.cur = "external_av_hdmi";
_state.external_input.connected = true;
_state.external_input.last_input.index = Number(_evt.index)-1;
// NOTE: US741H0ND모델에서 HDMI셋팅 인덱스는 0부터, 이 부분은 LG에 문의 필요
if (_devinfo.model_name.includes("US761H0ND")) {
_state.external_input.last_input.index = Number(_evt.index);
} else {
_state.external_input.last_input.index = Number(_evt.index)-1;
}
setTimeout(function(){
$('body,html').fadeOut(500, function(){
let __retSuccess = HotelTV.hal.SetExternalInput("HDMI", Number(_evt.index)-1);
let __retSuccess = HotelTV.hal.SetExternalInput("HDMI", _state.external_input.last_input.index);
if ( __retSuccess==false ){
_state.external_input.connected = false;
_state.external_input.last_input.index = 0;
@@ -3966,8 +3972,8 @@ HotelTV.ui_appfull = (function() {
/**
* Return tv cagegory id by name
* @param {string} _ctgy_name
* @returns
* @param {string} _ctgy_name
* @returns
*/
function __uifxn_AppFull_TVCtgyIdByName(_ctgy_name="all") {
let _program = HotelTV.tvguide.program;
@@ -4032,32 +4038,42 @@ HotelTV.ui_appfull = (function() {
let _rtn_epg = null;
for (_j=0; _j<_epg_prom_info.length; _j++) {
let _schTmPrev = new Date();
let _schTmNext = new Date();
let _schTmCur = new Date();
let _epgProgInf_Cur = _epg_prom_info[_j];
let _epgProgInf_Prev = null;
let _epgProgInf_Next = null;
if (_epgProgInf_Cur.time.length != 5) {
console.log("EPG Schedule org time is NULL");
} else {
let __str_playingTime = null;
_schTmCur.setHours(Number(_epgProgInf_Cur.time.charAt(0) + _epgProgInf_Cur.time.charAt(1)));
_schTmCur.setMinutes(Number(_epgProgInf_Cur.time.charAt(3) + _epgProgInf_Cur.time.charAt(4)));
// EPG shedule정보는 인덱스 0부터 시작
if ( _j>0 ){
_epgProgInf_Prev = _epg_prom_info[_j-1];
_schTmPrev.setHours(Number(_epgProgInf_Prev.time.charAt(0) + _epgProgInf_Prev.time.charAt(1)));
_schTmPrev.setMinutes(Number(_epgProgInf_Prev.time.charAt(3) + _epgProgInf_Prev.time.charAt(4)));
}
let _t_playTotal = Math.round((_schTmCur - _schTmPrev) / 60000); //Total play time in minuate
let _t_playRemain = Math.round((_schTmCur - _tm_cur) / 60000); //Remain play time in minuate
if ( _j<(_epg_prom_info.length-1) ){
_epgProgInf_Next = _epg_prom_info[_j+1];
_schTmNext.setHours(Number(_epgProgInf_Next.time.charAt(0) + _epgProgInf_Next.time.charAt(1)));
_schTmNext.setMinutes(Number(_epgProgInf_Next.time.charAt(3) + _epgProgInf_Next.time.charAt(4)));
__str_playingTime = `${_epgProgInf_Cur.time}~${_epgProgInf_Next.time}`;
} else {
//
_schTmNext.setMinutes(Number(0));
_schTmNext.setHours(Number(24));
__str_playingTime = `${_epgProgInf_Cur.time}~`;
}
let _t_playTotal = Math.round((_schTmNext - _schTmCur) / 60000); //Total play time in minuate
let _t_playRemain = Math.round((_schTmNext - _tm_cur) / 60000); //Remain play time in minuate
_rtn_epg = _epgProgInf_Cur;
if (_t_playRemain >= 0) {
//console.log("CHNAME::>" + _ch_name + " Remaining::> " + _t_playRemain);
_rtn_epg["progress_pcent"] = parseInt(((_t_playTotal-_t_playRemain)*100)/_t_playTotal, 10);
_rtn_epg["playing_time"] = `${_epgProgInf_Prev.time}~${_epgProgInf_Cur.time}`;
_rtn_epg["playing_time"] = __str_playingTime;
break;
}
}
@@ -4111,7 +4127,7 @@ HotelTV.ui_appfull = (function() {
}
else
{
if ( _tm_diff_ms_tvctrl>=5000 )
if ( _tm_diff_ms_tvctrl>=5000 )
{
if ( _state.menu.stage.cur=="tvCtgShow" || _state.menu.stage.cur=="tvCtgHide" )
{
@@ -4135,7 +4151,7 @@ HotelTV.ui_appfull = (function() {
___ifxn_hideTvEpgFrm();
}
}
}
}
}
}
@@ -4173,7 +4189,7 @@ HotelTV.ui_appfull = (function() {
___ifxn_fadeout_shortcutFrm();
if ( _programTv.shortcutkeyMode=="mode_0" ) {
if ( _programTv.shortcutkeyMode=="mode_0" ) {
if ( _state.tv.shortkey.ch_item_idx!=null ) {
const _mmIdx_tv = _state.menu.main.cur;
let _tvCtgAllIdx = _state.menu.main[_mmIdx].cur = __uifxn_AppFull_TVCtgyIdByName("all");
@@ -4786,8 +4802,8 @@ HotelTV.ui_appfull = (function() {
/**
* HotelTV UI[AppFull] Wrapper Function::> request tv channel function
* @param {Number} _force_ctg_item_idx
* @param {Number} _force_ch_item_idx
* @param {Number} _force_ctg_item_idx
* @param {Number} _force_ch_item_idx
* @param {function} _cbfxn_success
* @param {function} _cbfxn_failure
*/
@@ -4933,8 +4949,8 @@ HotelTV.ui_appfull = (function() {
// _chNumber는 -기준으로 잘라낸 앞숫자, 예를들면 16-1이라면 _chNumber는 16이 됨.
let _ChNumStr = __ifxn_getChItemValue(_ChItem, "number").toString();
let _ChNumber = Number(_ChNumStr.split('-')[0]);
// Find out matched channel
// Find out matched channel
if ( _ChNumber==Number(_strReqNumNext) ){
// Find out
_state.tv.shortkey.ch_item_idx = Number(__ifxn_getChItemIdxByNumber(_ChNumStr));
@@ -5155,7 +5171,7 @@ HotelTV.ui_appfull = (function() {
let _egp_prog_inf = null;
//Update channel logo image
//Update channel logo image
_elDivTvChLogo.css({ "background-image": "url(" + _tvChInfo.logo.file.download + ")" });
//Update channel number
@@ -5168,25 +5184,25 @@ HotelTV.ui_appfull = (function() {
if (_egp_prog_inf.epg_info != null) {
_elDivTvChEpgTitle.text(_egp_prog_inf.epg_info.name);
_elDivTvChEpgDetails.find('#tm_playing').text(_trTbl.ui.tv.epg.progamtime[_state.lang] + _egp_prog_inf.epg_info.playing_time);
//let _new_progress_bar_width = parseInt(_elDivTvChEpgDetails.find("#tm_chart").width()*_egp_prog_inf.epg_info.progress_pcent/100);
let _new_progress_bar_width = parseInt(835*_egp_prog_inf.epg_info.progress_pcent/100);
_elDivTvChEpgDetails.find('.progress').width(_new_progress_bar_width);
} else {
_elDivTvChEpgTitle.text("");
_elDivTvChEpgDetails.find('#tm_playing').text("");
//let _new_progress_bar_width = parseInt(_elDivTvChEpgDetails.find("#tm_chart").width()*_egp_prog_inf.epg_info.progress_pcent/100);
let _new_progress_bar_width = 0;
_elDivTvChEpgDetails.find('.progress').width(_new_progress_bar_width);
}
// Fade in epg
__uifxn_AppFull_TVEpgFadeIn();
// Fade in epg
__uifxn_AppFull_TVEpgFadeIn();
if (_action == "on_load") {
//_state.menu.stage.cur = "tvCtgShow";
// TODO: Request Channel
// TODO: Request Channel
} else if (_action == "ch_up") {
// TODO: Request Channel
} else if (_action == "ch_down") {
@@ -5975,7 +5991,7 @@ HotelTV.ui_appfull = (function() {
__ifxn_exitTvMenu();
} else if ( __uifxn_Utils_CheckKeyisNumber(event.keyCode)==true ){
//Navigate TV shortcut lists
if ( _programTv.shortcutkeyMode=="mode_0" ) {
if ( _programTv.shortcutkeyMode=="mode_0" ) {
_state.menu.stage.cur = "tvShortcut";
__uifxn_AppFull_TVDrawShortcutKey_Mode0(event.keyCode);
} else if ( _programTv.shortcutkeyMode=="mode_1" ) {
@@ -6001,10 +6017,10 @@ HotelTV.ui_appfull = (function() {
__ifxn_exitTvMenu();
} else if ( __uifxn_Utils_CheckKeyisNumber(event.keyCode)==true ) {
//Navigate TV shortcut lists
if ( _programTv.shortcutkeyMode=="mode_0" ) {
if ( _programTv.shortcutkeyMode=="mode_0" ) {
_state.menu.stage.cur = "tvShortcut";
__uifxn_AppFull_TVDrawShortcutKey_Mode0(event.keyCode);
} else if ( _programTv.shortcutkeyMode=="mode_1" ) {
} else if ( _programTv.shortcutkeyMode=="mode_1" ) {
if ( __uifxn_AppFull_TVDrawShortcutKey_Mode1(true, "build", event.keyCode)==0 ){
_state.menu.stage.prev = _state.menu.stage.cur;
_state.menu.stage.cur = "tvShortcut";
@@ -6017,18 +6033,18 @@ HotelTV.ui_appfull = (function() {
// console.log("TV shortcut routine: key:" + event.keyCode);
if (event.keyCode == gRmtKey.back) {
// TV메뉴로 복귀
if ( _programTv.shortcutkeyMode=="mode_0" ) {
if ( _programTv.shortcutkeyMode=="mode_0" ) {
//
} else if ( _programTv.shortcutkeyMode=="mode_1" ) {
} else if ( _programTv.shortcutkeyMode=="mode_1" ) {
__uifxn_AppFull_TVDrawShortcutKey_Mode1(false, "exitWithoutChchange", event.keyCode);
}
_state.menu.stage.cur = _state.menu.stage.prev;
_state.menu.stage.prev = null;
} else if (event.keyCode == gRmtKey.enter) {
// 번호키를 이용한 채널 선택 팝업 삭제
if ( _programTv.shortcutkeyMode=="mode_0" ) {
if ( _programTv.shortcutkeyMode=="mode_0" ) {
//
} else if ( _programTv.shortcutkeyMode=="mode_1" ) {
} else if ( _programTv.shortcutkeyMode=="mode_1" ) {
__uifxn_AppFull_TVDrawShortcutKey_Mode1(false, "exitWithChchange", event.keyCode);
}
_state.menu.stage.cur = _state.menu.stage.prev;
@@ -6037,13 +6053,13 @@ HotelTV.ui_appfull = (function() {
_tmrEvt.keyevt.tv_ctrl = new Date();
_tmrEvt.keyevt.tv_ctrl.setSeconds(_tmrEvt.keyevt.tv_ctrl.getSeconds() - 3);
} else if ( __uifxn_Utils_CheckKeyisNumber(event.keyCode)==true ) {
if ( _programTv.shortcutkeyMode=="mode_0" ) {
if ( _programTv.shortcutkeyMode=="mode_0" ) {
__uifxn_AppFull_TVDrawShortcutKey_Mode0(event.keyCode);
}
}
} else {
if ( _programTv.shortcutkeyMode=="mode_0" ) {
if ( _programTv.shortcutkeyMode=="mode_0" ) {
//
} else if ( _programTv.shortcutkeyMode=="mode_1" ) {
} else if ( _programTv.shortcutkeyMode=="mode_1" ) {
__uifxn_AppFull_TVDrawShortcutKey_Mode1(true, "move", event.keyCode);
}
console.log("TVSHORTCUT CHNUM: " + _state.tv.shortkey.ch_item_idx);
@@ -6126,7 +6142,7 @@ HotelTV.ui_appfull = (function() {
}
}
// Title
// Title
_elLangSelTitleDiv.text(_trTbl.system.szsellanguage[_state.lang]);
// Usages
@@ -6151,6 +6167,19 @@ HotelTV.ui_appfull = (function() {
let _elLangSelUsageDiv = _elLangSelCtrlDiv.children('.usage');
let _elLangSelButtonsDiv = _elLangSelCtrlDiv.children('.buttons');
const ___ifxn_updateLangSelTitleAndUsages = function() {
let __focusedLang = "en-US";
if ( _elLangSelButtonsDiv.find('.focus').length ) {
__focusedLang = _elLangSelButtonsDiv.find('.focus').attr('id');
}
// Title
_elLangSelTitleDiv.text(_trTbl.system.szsellanguage[__focusedLang]);
// Usages
_elLangSelUsageDiv.html(_trTbl.system.lang_sel_usage[__focusedLang]);
}
const ___ifxn_moveLangButton = function(_direction) {
let selectedBtnItemCur = _elLangSelButtonsDiv.find('.focus');
@@ -6173,6 +6202,8 @@ HotelTV.ui_appfull = (function() {
_elLangSelButtonsDiv.find('.langBtn').last().addClass("focus");
}
}
___ifxn_updateLangSelTitleAndUsages();
}
const __ifxn_sendNextLangUsrData = async function(_nextLang, __cbFxnFailure=null, __cbFxn_Success=null) {
@@ -6208,7 +6239,7 @@ HotelTV.ui_appfull = (function() {
_elLangSelDiv.fadeOut(1000, function() {
if ( __cbFxnFailure ){ __cbFxnFailure(); }
});
}
}
}
@@ -6347,7 +6378,7 @@ HotelTV.ui_appfull = (function() {
} else {
if ( _state.menu.stage.cur=="tvCtgShow" || _state.menu.stage.cur=="tvCtgHide" )
{
}
else
{

View File

@@ -1,5 +1,5 @@
<XAIT>
<versionNumber>4</versionNumber>
<versionNumber>27</versionNumber>
<AbstractService>
<svcName>Pro:Centric App</svcName>
<svcId>0x1204</svcId>
@@ -16,10 +16,15 @@
<controlCode>AUTOSTART</controlCode>
<visibility>NOT_VISIBLE_USERS</visibility>
<priority>255</priority>
<version>7</version>
<version>27</version>
</applicationDescriptor>
<HcapDescriptor>
<url>http://10.20.0.2:8880/procentric/application/index.html</url>
<url>http://10.20.0.2:8880/procentric/application/application.zip</url>
<applicationStructure>
<baseDirectory>/</baseDirectory>
<classpathExtension>/</classpathExtension>
<initialClass>index.html</initialClass>
</applicationStructure>
</HcapDescriptor>
</Application>
</ApplicationList>

View File

@@ -0,0 +1,32 @@
<XAIT>
<versionNumber>25</versionNumber>
<AbstractService>
<svcName>Pro:Centric App</svcName>
<svcId>0x1204</svcId>
<isAutoSelect>true</isAutoSelect>
<ApplicationList>
<Application>
<appName>CT-HotelIPTV</appName>
<applicationIdentifier>
<orgId>1</orgId>
<appId>1</appId>
</applicationIdentifier>
<applicationDescriptor>
<type>Hcap-h</type>
<controlCode>AUTOSTART</controlCode>
<visibility>NOT_VISIBLE_USERS</visibility>
<priority>255</priority>
<version>25</version>
</applicationDescriptor>
<HcapDescriptor>
<url>http://10.20.0.2:8880/procentric/application/application.zip</url>
<applicationStructure>
<baseDirectory>/</baseDirectory>
<classpathExtension>/</classpathExtension>
<initialClass>index.html</initialClass>
</applicationStructure>
</HcapDescriptor>
</Application>
</ApplicationList>
</AbstractService>
</XAIT>

View File

@@ -0,0 +1,27 @@
<XAIT>
<versionNumber>5</versionNumber>
<AbstractService>
<svcName>Pro:Centric App</svcName>
<svcId>0x1204</svcId>
<isAutoSelect>true</isAutoSelect>
<ApplicationList>
<Application>
<appName>CT-HotelIPTV</appName>
<applicationIdentifier>
<orgId>1</orgId>
<appId>1</appId>
</applicationIdentifier>
<applicationDescriptor>
<type>Hcap-h</type>
<controlCode>AUTOSTART</controlCode>
<visibility>NOT_VISIBLE_USERS</visibility>
<priority>255</priority>
<version>8</version>
</applicationDescriptor>
<HcapDescriptor>
<url>http://10.20.0.2:8880/procentric/application/index.html</url>
</HcapDescriptor>
</Application>
</ApplicationList>
</AbstractService>
</XAIT>

View File

@@ -1,6 +1,6 @@
<service>
<setup>
<versionNumber>100</versionNumber>
<versionNumber>3</versionNumber>
<modelName>65UR762H0NC</modelName>
<priority>NORMAL</priority>
<content>
@@ -12,12 +12,32 @@
</content>
</setup>
<setup>
<versionNumber>13</versionNumber>
<versionNumber>2</versionNumber>
<modelName>65US761H0ND</modelName>
<priority>NORMAL</priority>
<content>
<type>EPK_FIRMWARE</type>
<data>starfish-atsc-secured-k6hp-41.242.japoon4hotel.k6hp-41-04.44.00_prodkey_nsu_V3_SECURED.epk</data>
<frequency>0</frequency>
<programNum>0</programNum>
<cTag>0</cTag>
</content>
</setup>
<setup>
<versionNumber>4</versionNumber>
<modelName>49US761H0ND</modelName>
<priority>NORMAL</priority>
<content>
<type>EPK_FIRMWARE</type>
<data>starfish-atsc-secured-k6hp-41.242.japoon4hotel.k6hp-78-04.47.70_prodkey_nsu_V3_SECURED.epk</data>
<data>starfish-atsc-secured-k6hp-41.242.japoon4hotel.k6hp-94-04.49.30_prodkey_nsu_V3_SECURED.epk</data>
<frequency>0</frequency>
<programNum>0</programNum>
<cTag>0</cTag>
</content>
<!-- FOR PTC F/W -->
<content>
<type>PTC_FIRMWARE</type>
<data>xxUS761H0ND_v8.00.088.txt</data>
<frequency>0</frequency>
<programNum>0</programNum>
<cTag>0</cTag>

File diff suppressed because it is too large Load Diff