Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> bankercode  [in template "10153#10191#6590055" at line 51, column 6]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #if bankercode?starts_with("amp") && ...  [in template "10153#10191#6590055" at line 51, column 1]
----
1<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! /> 
2<#assign url404 = '/error/404.html' > 
3<#assign oadURL = propsUtil.get('elan.oad.url') > 
4<#assign url = themeDisplay.getURLCurrent() > 
5<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))> 
6 
7<#if qstringmap["ecid"]?has_content> 
8    <#assign ecidExt = qstringmap["ecid"]?first> 
9    <#assign ecidExt = htmlUtil.escape(ecidExt)> 
10    <#assign ecidExt = htmlUtil.escapeJS(ecidExt)> 
11    <#assign ecidExt = "&ecid=" + ecidExt> 
12<#else> 
13    <#assign ecidExt=""> 
14</#if> 
15 
16<#if qstringmap["bankercode"]?has_content> 
17    <#assign bankercode = qstringmap["bankercode"]?first> 
18    <#assign bankercode = htmlUtil.escape(bankercode)> 
19    <#assign bankercode = htmlUtil.escapeJS(bankercode)> 
20    <#assign isEmployee = false> 
21 
22    <#assign fiData= utilServ.makeCall('crcDDCBankerAssistedAppSql','0&'+bankercode)> 
23    <#if fiData?first?has_content> 
24        <#assign fi = fiData?first> 
25        <#if ((fi.projectId == "12") || (fi.projectId == "13") || (fi.projectId == "14") || (fi.projectId == "15"))> 
26            <#assign subbu_special = fi.offerId> 
27        </#if> 
28        <#if fi.projectType == "emp"> 
29            <#assign isEmployee = true> 
30        </#if> 
31    </#if>  
32 
33    <#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetailSql','0&'+bankercode)> 
34    <#list bData as b>         
35      <#assign rLC = b.reallocationcode > 
36      <#assign lc = b.locationcode > 
37      <#assign mappedLC = b.mappedLocationCode > 
38    </#list>     
39<#else> 
40    <script> 
41        console.log("MainProductBcode missing"); 
42        location.href = '${url404}'; 
43    </script> 
44</#if> 
45 
46<#if url?contains('11t1')> 
47    <#assign tier = '11t1'> 
48<#elseif url?contains('11t2')> 
49    <#assign tier = '11t2'> 
50</#if> 
51<#if bankercode?starts_with("amp") && (url?contains("11t1m"))> 
52    <#assign ameriprise = true> 
53<#else> 
54    <#assign ameriprise = false> 
55</#if> 
56<#if ameriprise> 
57    <#assign tier = '11t1m'> 
58</#if> 
59<#assign environment = url?replace('/${tier}.*','','r')> 
60 
61 
62<#if mappedLC?has_content && !ameriprise> 
63    <#assign lc = mappedLC > 
64</#if> 
65 
66<#if lc?has_content> 
67    <#assign prefix = "00000" > 
68    <#assign lcWithPrefix = prefix + lc > 
69    <#assign withPrefixLength = lcWithPrefix?length > 
70    <#assign startHere = withPrefixLength - 5> 
71    <#assign lc = lcWithPrefix?substring(startHere)> 
72    <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! /> 
73    <#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
74 
75    <#assign clientProfile = clientProfileList?first> 
76    <#assign partnerName = clientProfile.getMarketingNameLong()> 
77    <#assign logoFileName = clientProfile.getLogoBFormat1()?replace(".", "-")?replace("-([^-]*)$", ".$1", "r")?lower_case> 
78    <#assign cdnLogoUrl = (propsUtil.get('rackspace.cdn.web.url'))!> 
79    <#-- <#assign cdnLogoUrl = "https://828cf7dcac86961192f7-10b53e8cad49907c7863edad15b39700.ssl.cf2.rackcdn.com"> --> 
80    <#assign pbu = clientProfile.getPbu()> 
81    <#assign subbu = clientProfile.getSUBBRANDBUNBR()> 
82     
83    <#assign optoutData = utilServ.makeCall('crc_DDCSAAOptOut',pbu+'&'+subbu)> 
84    <#if (optoutData?size == 0)> 
85        <#if (subbu_special?has_content)> 
86            <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu_special)>  
87        <#else> 
88            <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu)>  
89        </#if> 
90        <#assign clientDataService = (serviceLocator.findService("com.elan.crc.user.service.CrcPbuLocalService"))! /> 
91        <#assign clientProfileDataList = clientDataService.getByPbuAndSubBu(pbu,subbu)> 
92        <#assign partnerUrl = clientProfileDataList.getPartnerMainUrl()> 
93        <#if partnerUrl?has_content && !partnerUrl?matches(r"(?i)^https?\:\/\/.*")>             
94            <#assign partnerUrl = 'https://' + partnerUrl> 
95        </#if> 
96        <#if (fiCardsData?size > 0)> 
97            <#assign temp = []> 
98            <#assign offerTypeList = []>        
99            <#assign index = 0> 
100            <#list fiCardsData as fib> 
101                <#if (fib.offerType?has_content && !(offerTypeList?seq_contains(fib.offerType)))>  
102                    <#assign offerTypeList = offerTypeList + [fib.offerType]>                   
103                    <#assign temp = temp + fiCardsData[index..index]>  
104                </#if>  
105                <#assign index = index + 1> 
106            </#list>  
107            <#assign fiCardsData = temp> 
108            <#if !(fiCardsData?size > 0)>  
109                <script> 
110                    console.log("empty card/offerType List"); 
111                    location.href = '${url404}'; 
112                </script> 
113            </#if> 
114            <#if ameriprise> 
115                <#assign lc_used = mappedLC>  
116            <#else> 
117                <#assign lc_used = lc>  
118            </#if>             
119            <div class="content-container content-container-main" title="${partnerName!''}"> 
120                <header class="jn-header"> 
121                    <div class="back-overview hide-desktop">  
122                        <a  href="${environment}/${tier}/index?bankercode=${bankercode}&ecdma-lc=${lc_used}${ecidExt}">Home</a> 
123                    </div>   
124                    <div class="header-main-logo" title="${partnerName!''}"> 
125                        <#if partnerUrl?has_content> 
126                            <a href="${partnerUrl!''}" title="${partnerName!''}"> 
127                            <img src="${cdnLogoUrl!''}/${logoFileName!''}" title="${partnerName!''} Logo" alt="${partnerName!''} Logo">  
128                            </a> 
129                        <#else> 
130                            <a title="${partnerName!''}"> 
131                            <img src="${cdnLogoUrl!''}/${logoFileName!''}" alt="${partnerName!''} Logo" title="${partnerName!''} Logo"> 
132                            </a> 
133                        </#if> 
134                    </div> 
135                     
136                    <div class="styled-select slate"> 
137                        <select> 
138                            <#assign consumerOfferTypes =['101', '108', '109', '104', '138', '154', '141', '147', '115']> 
139 
140                            <#list fiCardsData as fib> 
141                                <#if ameriprise> 
142                                    <#if (fib.offerType=="101")> 
143                                        <#assign productURL="premier-visa-signature"> 
144                                        <#assign productName="Ameriprise Premier Visa Signature"> 
145                                    <#elseif (fib.offerType=="103")>      
146                                        <#assign productURL = "visa-signature"> 
147                                        <#assign productName = "Ameriprise Visa Signature">                              
148                                    </#if> 
149                                <#else> 
150                                    <#if (fib.offerType=="108" || fib.offerType=="109")> 
151                                        <#assign productURL="consumer-platinum2103"> 
152                                        <#assign productName="Platinum Card"> 
153                                    <#elseif fib.offerType=="147"> 
154                                        <#assign productURL = "max-cash-secured"> 
155                                        <#assign productName = "Max Cash Secured Card" > 
156                                    <#elseif (fib.offerType=="104")> 
157                                        <#assign productURL = "max-cash"> 
158                                        <#assign productName = "Max Cash Preferred Card">                                    
159                                    <#elseif (fib.offerType=="101" || fib.offerType=="103")> 
160                                        <#assign productURL = "consumer-edr2112"> 
161                                        <#assign productName = "Everyday Rewards+"> 
162                                    <#elseif fib.offerType == "115"> 
163                                        <#assign productURL = "secured"> 
164                                        <#assign productName = "Secured Card" > 
165                                    <#elseif fib.offerType == "141"> 
166                                        <#assign productURL = "college-real-rewards"> 
167                                        <#assign productName = "College Real Rewards" >        
168                                    <#elseif fib.offerType == "144"> 
169                                        <#assign productURL = "smart-business-rewards"> 
170                                        <#assign productName = "Smart Business Rewards Card" >                                             
171                                    <#elseif fib.offerType == "128"> 
172                                        <#assign productURL = "business-cash-preferred"> 
173                                        <#assign productName = "Business Cash Preferred" > 
174                                    <#elseif fib.offerType == "143"> 
175                                        <#assign productURL = "business-real-rewards"> 
176                                        <#assign productName = "Business Real Rewards Card" > 
177                                    <#elseif fib.offerType == "121"> 
178                                        <#assign productURL = "business-platinum2103"> 
179                                        <#assign productName = "Business Card" > 
180                                    <#elseif fib.offerType == "138"> 
181                                        <#assign productURL = "travel-rewards-plus"> 
182                                        <#assign productName = "Travel Rewards+" > 
183                                    <#elseif fib.offerType == "154"> 
184                                        <#assign productURL = "reserve-rewards-plus"> 
185                                        <#assign productName = "Reserve Rewards+" > 
186                                    </#if> 
187                                </#if> 
188                                <#assign fibEmpOfferId = "">  
189                                <#if fib?has_content> 
190                                    <#assign fibEmpOfferId = fib.empofferId!""> 
191                                </#if> 
192                                <!-- if an employee don't show business cards --> 
193                                <#if ((isEmployee == true && ( consumerOfferTypes?seq_contains(fib.offerType) == true)) || isEmployee == false) > 
194                                    <#if url?matches(".*/${productURL}.*")> 
195                                        <option value="${environment}/${tier}/${productURL}?bankercode=${bankercode}&ecdma-lc=${lc_used}${ecidExt}" selected="selected">${productName}</option>                                             
196                                    <#else> 
197                                        <option value="${environment}/${tier}/${productURL}?bankercode=${bankercode}&ecdma-lc=${lc_used}${ecidExt}">${productName}</option> 
198                                    </#if> 
199                                </#if> 
200                            </#list> 
201                        </select> 
202                        <nav class="styled-select__dropdown"> 
203                            <div class="back-overview hide-mobile">  
204                                <a  href="${environment}/${tier}/index?bankercode=${bankercode}&ecdma-lc=${lc_used}${ecidExt}">Home</a> 
205                            </div>   
206                            <a href="javascript:void(0)" class="dropdown-select" aria-expanded="false" > 
207                                <span class="selected-option"></span>  
208                                <div class="jn-arrow arrow arrow-right"></div> 
209                            </a> 
210                            <button href="javascript:void(0)" class="jn-hamburger hamburger" aria-expanded="false" aria-label="open navigation menu"> 
211                                <div class="first-line transform transformed1"></div> 
212                                <div></div> 
213                                <div class="transform transformed2"></div> 
214                                <div></div> 
215                            </button> 
216                            <ul> 
217                                <#list fiCardsData as fib> 
218                                    <#if ameriprise> 
219                                        <#if (fib.offerType=="101")> 
220                                            <#assign productURL="premier-visa-signature"> 
221                                            <#assign productName="Ameriprise Premier Visa Signature"> 
222                                        <#elseif (fib.offerType=="103")>      
223                                            <#assign productURL = "visa-signature"> 
224                                            <#assign productName = "Ameriprise Visa Signature">                              
225                                        </#if> 
226                                    <#else> 
227                                        <#if (fib.offerType=="108" || fib.offerType=="109")> 
228                                            <#assign productURL="consumer-platinum2103"> 
229                                            <#assign productName="Platinum Card"> 
230                                        <#elseif fib.offerType=="147"> 
231                                            <#assign productURL = "max-cash-secured"> 
232                                            <#assign productName = "Max Cash Secured Card" > 
233                                        <#elseif (fib.offerType=="104")> 
234                                            <#assign productURL = "max-cash"> 
235                                            <#assign productName = "Max Cash Preferred Card"> 
236                                        <#elseif (fib.offerType=="101" || fib.offerType=="103")> 
237                                            <#assign productURL = "consumer-edr2112"> 
238                                            <#assign productName = "Everyday Rewards+"> 
239                                        <#elseif fib.offerType == "115"> 
240                                            <#assign productURL = "secured"> 
241                                            <#assign productName = "Secured Card" > 
242                                        <#elseif fib.offerType == "141"> 
243                                            <#assign productURL = "college-real-rewards"> 
244                                            <#assign productName = "College Real Rewards" >  
245                                        <#elseif fib.offerType == "144"> 
246                                            <#assign productURL = "smart-business-rewards"> 
247                                            <#assign productName = "Smart Business Rewards Card" >                                             
248                                        <#elseif fib.offerType == "128"> 
249                                            <#assign productURL = "business-cash-preferred"> 
250                                            <#assign productName = "Business Cash Preferred" > 
251                                        <#elseif fib.offerType == "143"> 
252                                            <#assign productURL = "business-real-rewards"> 
253                                            <#assign productName = "Business Real Rewards Card" > 
254                                        <#elseif fib.offerType == "121"> 
255                                            <#assign productURL = "business-platinum2103"> 
256                                            <#assign productName = "Business Card" > 
257                                        <#elseif fib.offerType == "138"> 
258                                            <#assign productURL = "travel-rewards-plus"> 
259                                            <#assign productName = "Travel Rewards+" > 
260                                        <#elseif fib.offerType == "154"> 
261                                            <#assign productURL = "reserve-rewards-plus"> 
262                                            <#assign productName = "Reserve Rewards+" > 
263                                            </#if> 
264                                    </#if> 
265                                    <!-- if an employee don't show business cards --> 
266                                    <#if ((isEmployee == true && ( consumerOfferTypes?seq_contains(fib.offerType) == true)) || isEmployee == false) > 
267                                        <#if url?matches(".*/${productURL}.*")> 
268                                            <#if (fib.offerType=="104" && url?contains("max-cash-secured"))>  
269                                                <#-- prevent from max cash overiding max cash secured. --> 
270                                                <li class="dropdown-item" data-value="${productName}"><a href="${environment}/${tier}/${productURL}?bankercode=${bankercode}&ecdma-lc=${lc_used}${ecidExt}" title="${productName}">${productName}</a></li> 
271                                            <#else> 
272                                                <li class="selected" data-value="${productName}"><a href="javascript:void(0)">${productName}</a></li>  
273                                            </#if> 
274                                        <#else> 
275                                            <li class="dropdown-item" data-value="${productName}"><a href="${environment}/${tier}/${productURL}?bankercode=${bankercode}&ecdma-lc=${lc_used}${ecidExt}" title="${productName}">${productName}</a></li> 
276                                        </#if> 
277                                    </#if> 
278                                </#list> 
279                            </ul> 
280                        </nav> 
281                                              
282                    </div> 
283                </header> 
284            </div>  
285            <script> 
286                var page = location.pathname.split('/')[location.pathname.split('/').length-1]; 
287                var partnerName = "${partnerName!0}"; 
288                var metaDesc = ""; 
289                switch (page) { 
290                    case "consumer-platinum2103": 
291                        document.title = "The purchasing power of Zero | "+partnerName+" Platinum Card"; 
292                        metaDesc = "Apply Today for a "+partnerName+" Credit Card. Limited Time Offer. 0% Intro APR on Purchases and Balance Transfers for 20 Billing Cycles Consolidate your Balances with the "+partnerName+" Intro APR Card."; 
293                        break; 
294                    case "max-cash-secured": 
295                        document.title = "Earn more on the categories you pick | "+partnerName+" Max Cash Secured Card"; 
296                        metaDesc = "Apply Today for a "+partnerName+" Credit Card. Use this card as a solid foundation to build your credit."; 
297                        break; 
298                    case "max-cash": 
299                        document.title = "Earn a $150 Bonus and 5% cash back | "+partnerName+" Max Cash Preferred Card"; 
300                        metaDesc = "Apply Today for a "+partnerName+" Credit Card. Earn a $150 Bonus and 5% cash back on the two categories you select"; 
301                        break; 
302                    case "real-rewards": 
303                        document.title = "Sign up and earn bonus points | "+partnerName+" Everyday Rewards+"; 
304                        metaDesc = "Apply Today for a "+partnerName+" Credit Card. Take home 2,500 bonus points after your first purchase."; 
305                        break; 
306                    case "secured": 
307                        document.title = "Strengthen your finances | "+partnerName+" Secured Card"; 
308                        metaDesc = "Apply Today for a "+partnerName+" Credit Card. Use this card as a solid foundation to build your credit."; 
309                        break; 
310                    case "college-real-rewards": 
311                        document.title = "Sign up and earn bonus points. | "+partnerName+" College Real Rewards"; 
312                        metaDesc = "Apply Today for a "+partnerName+" Credit Card. Use this card as a solid foundation to build your credit."; 
313                        break; 
314                    case "smart-business-rewards": 
315                        document.title = "2X rewards in your top 2 spend categories | "+partnerName+" Business Smart Business Rewards Card"; 
316                        metaDesc = "Apply Today for a "+partnerName+" Credit Card. More choices. More value for your business. Earn a $200 Bonus and 2x Rewards on your top 2 spend categories each month with the "+partnerName+" Credit Card."; 
317                        break; 
318                    case "business-cashback": 
319                        document.title = "Flexible rewards for your business | "+partnerName+" Business Cash Preferred"; 
320                        metaDesc = "Apply Today for a "+partnerName+" Credit Card. Earn Cash back on common business expenses."; 
321                        break; 
322                    case "business-real-rewards": 
323                        document.title = "Earn up to 3X points with no caps | "+partnerName+" Business Real Rewards Card"; 
324                        metaDesc = "Apply Today for a "+partnerName+" Credit Card. Get more rewards in the categories you spend the most on." ; 
325                        break; 
326                    case "business-platinum2103": 
327                        document.title = "Pay down your other credit card balances faster | "+partnerName+" Business Card"; 
328                        metaDesc = "Apply Today for a "+partnerName+" Business Card. 0% Intro APR on Purchases and Balance Transfers for 15 Billing Cycles"; 
329                        break; 
330                    case "premier-visa-signature": 
331                        document.title = "Exclusively for Ameriprise clients | Ameriprise® Premier Visa Signature® Card"; 
332                        metaDesc = "Apply Today for an Ameriprise Financial Credit Card. Earn Rewards Points worth $375 cash value when deposited into an eligible account after spending $3,000 in eligible net purchases within the first 90 days of account opening."; 
333                        break; 
334                    case "visa-signature": 
335                        document.title = "Exclusively for Ameriprise clients | Ameriprise® Visa Signature® Card"; 
336                        metaDesc = "Apply Today for an Ameriprise Financial Credit Card. Earn Rewards Points worth $250 cash value when deposited into an eligible Ameriprise account after spending $2,000 in eligible net purchases within the first 90 days of account opening."; 
337                        break;     
338                    case "travel-rewards-plus": 
339                        document.title = partnerName + " | Travel Rewards+ Card"; 
340                        metaDesc = "Make travel more rewarding with unlimited 4x points on travel and frequent popular categories."; 
341                        break;     
342                    case "reserve-rewards-plus": 
343                        document.title = partnerName + " | Reserve Rewards+ Card"; 
344                        metaDesc = "Get exceptional rewards on travel and frequent purchases with this exclusive metal card."; 
345                        break;                                                                                               
346
347                if('${isEmployee?string("yes", "no")}' == "yes") { 
348                    switch (page) { 
349                        case "max-cash": 
350                            document.title = "Earn a $200 Bonus and 5% cash back | "+partnerName+" Max Cash Preferred Card"; 
351                            metaDesc = "Apply Today for a "+partnerName+" Credit Card. Earn a $200 Bonus and 5% cash back on the two categories you select"; 
352                            break; 
353
354
355 
356                if (metaDesc.length > 0) { 
357                    var m = document.createElement('meta');  
358                    m.name = 'description';  
359                    m.content = metaDesc;  
360                    document.head.appendChild(m); 
361
362                function toggleFlyOutMenu() { 
363                    $('.styled-select').toggleClass('show-select'); 
364                    var ariaExpanded = $('.styled-select__dropdown .dropdown-select').attr('aria-expanded'); 
365                    if(ariaExpanded !== null) { 
366                        var isAriaExpanded; 
367                        if(ariaExpanded === "true") { 
368                            isAriaExpanded = true; 
369                            $('.styled-select__dropdown .jn-hamburger').attr('aria-label', 'open navigation menu'); 
370                        } else {  
371                            isAriaExpanded = false  
372                            $('.styled-select__dropdown .jn-hamburger').attr('aria-label', 'close navigation menu'); 
373 
374
375                        $('.styled-select__dropdown .dropdown-select').attr('aria-expanded', !isAriaExpanded); 
376                        $('.styled-select__dropdown .jn-hamburger').attr('aria-expanded', !isAriaExpanded); 
377                         
378
379
380                AUI().ready(function () { 
381                    var pageSelected = $('.selected').attr('data-value'); 
382                    $('.jn-hamburger, .dropdown-select').click(function () { 
383                        toggleFlyOutMenu(); 
384                    }); 
385                    $('.styled-select__dropdown').keydown(function(event) { 
386                        var firstNavigationLink = $('.styled-select__dropdown ul li:visible a').first(); 
387                        var lastNavigationLink = $('.styled-select__dropdown ul li:visible a').last(); 
388 
389                        if(event.keyCode === 9 ) { 
390                            // if they tab outside of the nav close the navigation 
391                            //shift + tab pressed 
392                            if(event.shiftKey && firstNavigationLink.is(document.activeElement)) { 
393                                toggleFlyOutMenu(); 
394                            } else if(!event.shiftKey && lastNavigationLink.is(document.activeElement)) { 
395                                toggleFlyOutMenu(); 
396                            }                             
397
398                    }); 
399                    $('.selected-option').text(pageSelected); 
400                }); 
401            </script> 
402         
403        <#else> 
404            <script> 
405                console.log("FI Cards Data empty"); 
406                location.href = '${url404}'; 
407            </script> 
408        </#if>   
409    <#else> 
410        <script> 
411            console.log("FI opt out"); 
412            location.href = '${url404}'; 
413        </script> 
414    </#if>  
415<#else> 
416    <script> 
417        console.log("location code empty"); 
418        location.href = '${url404}'; 
419    </script> 
420</#if> 
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> bCode  [in template "10153#10191#6991552" at line 85, column 6]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #if bCode?starts_with("amp") && (url?...  [in template "10153#10191#6991552" at line 85, column 1]
----
1<#assign url = themeDisplay.getURLCurrent() > 
2<#assign oadURL = propsUtil.get('elan.oad.url') > 
3<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))> 
4<#assign url404 = '/error/404.html' > 
5<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! /> 
6<#assign environment = url?replace('/12t1.*','','r')> 
7<#assign oadURL_TC = 'https://uat-online1.elancard.com/oad/terms.controller' > 
8<#assign prcaURL = propsUtil.get('elan.prca.url')> 
9<#assign useprcaValue = "" > 
10<#assign applicationType = "saa" > 
11 
12<#if oadURL?contains("uat-")> 
13    <#assign oadURL_TC = 'https://uat-online1.elancard.com/oad/terms.controller' > 
14<#else> 
15    <#assign oadURL_TC = 'https://online1.elancard.com/oad/terms.controller' > 
16</#if> 
17<#--  check bankercode validity  --> 
18 
19<#if qstringmap["bankercode"]?has_content> 
20    <#assign bCode= qstringmap["bankercode"]?first> 
21    <#assign bCode= htmlUtil.escapeJS(bCode)> 
22    <#assign bCode= htmlUtil.escape(bCode)> 
23    <#assign isEmployee = false> 
24 
25    <#assign fiData= utilServ.makeCall('crcDDCBankerAssistedAppSql','0&'+bCode)> 
26    <#if fiData?first?has_content> 
27        <#assign fi = fiData?first> 
28        <#if (fi.projectId == "12" || fi.projectId == "13" || fi.projectId == "14" || fi.projectId == "15")> 
29            <#assign subbu_special = fi.offerId> 
30        </#if> 
31        <#if fi.projectType == "emp"> 
32            <#assign isEmployee = true> 
33        </#if> 
34    <#else> 
35        <script> 
36            console.log("fiData missing"); 
37            location.href = '${url404}'; 
38        </script> 
39    </#if>       
40    <#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetailSql','0&'+bCode)> 
41    <#if !bData?first?has_content> 
42        <script> 
43            console.log("bData missing"); 
44            location.href = '${url404}'; 
45        </script> 
46    </#if> 
47    <#list bData as b> 
48      <#assign lc = b.locationcode > 
49      <#assign bName = b.branch > 
50      <#assign bPhone = b.businessphone > 
51      <#assign boeid = b.oeid?trim> 
52      <#assign fName = b.firstname?trim> 
53      <#assign lName = b.lastname?trim> 
54      <#assign rlc = b.reallocationcode > 
55      <#assign mappedLC = b.mappedLocationCode > 
56    </#list> 
57 
58<#else> 
59    <script> 
60        console.log("MainProductBcode missing"); 
61        location.href = '${url404}'; 
62    </script> 
63</#if> 
64 
65<#assign text_to_apply_source = "vanity url" > 
66<#if qstringmap["sms"]?has_content> 
67    <#assign sms = 1 > 
68    <#assign text_to_apply_source = "sms" > 
69</#if> 
70<#if qstringmap["qrCode"]?has_content> 
71    <#assign text_to_apply_source = "qr code" > 
72</#if> 
73<#assign campaignId = "" > 
74<#assign ecidExt=""> 
75<#if qstringmap["ecid"]?has_content> 
76    <#assign campaignId = qstringmap["ecid"]?first > 
77    <#assign campaignId  = htmlUtil.escape(campaignId)> 
78    <#assign campaignId  = htmlUtil.escapeJS(campaignId)> 
79 
80    <#assign ecidExt = qstringmap["ecid"]?first> 
81    <#assign ecidExt = htmlUtil.escape(ecidExt)> 
82    <#assign ecidExt = htmlUtil.escapeJS(ecidExt)> 
83    <#assign ecidExt = "&ecid=" + ecidExt> 
84</#if> 
85<#if bCode?starts_with("amp") && (url?contains("11t1m"))> 
86    <#assign ameriprise = true> 
87<#else> 
88    <#assign ameriprise = false> 
89</#if> 
90 
91<#if mappedLC?has_content && !ameriprise> 
92    <#assign lc = mappedLC > 
93</#if> 
94 
95 
96 
97<#if lc?has_content> 
98 
99    <#assign firstNameLength = fName?length > 
100    <#assign lastNameLength = lName?length > 
101    <#if firstNameLength + lastNameLength &gt; 19 > 
102        <#if lastNameLength &gt; 18 > 
103            <#assign bLName = lName?substring(0,18)> 
104        <#else> 
105            <#assign bLName = lName> 
106        </#if> 
107        <#assign maxFirstName = 19 - bLName?length > 
108        <#if firstNameLength &gt; maxFirstName > 
109            <#assign bFName = fName?substring(0,maxFirstName)> 
110        <#else> 
111            <#assign bFName = fName> 
112        </#if> 
113    <#else> 
114        <#assign bFName = fName > 
115        <#assign bLName = lName > 
116    </#if> 
117       
118 
119    <#assign prefix = "00000" > 
120    <#assign lcWithPrefix = prefix + lc > 
121    <#assign withPrefixLength = lcWithPrefix?length > 
122    <#assign startHere = withPrefixLength - 5> 
123    <#assign lc = lcWithPrefix?substring(startHere)> 
124 
125    <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! /> 
126    <#assign clientProfileList = clientProfileService.findByLocationCode(lc)>     
127 
128    <#if clientProfileList?first?has_content> 
129        <#assign clientProfile = clientProfileList?first> 
130        <#assign partnerName = clientProfile.getMarketingNameLong()> 
131        <#assign pbu = clientProfile.getPbu()> 
132        <#assign subbu = clientProfile.getSUBBRANDBUNBR()> 
133        <#assign optoutData = utilServ.makeCall('crc_DDCSAAOptOut',pbu+'&'+subbu)> 
134        <#if (optoutData?size == 0)>                 
135            <#assign clientDataService = (serviceLocator.findService("com.elan.crc.user.service.CrcPbuLocalService"))! /> 
136            <#assign clientProfileDataList = clientDataService.getByPbuAndSubBu(pbu,subbu)> 
137            <#assign partnerUrl = clientProfileDataList.getPartnerMainUrl()> 
138            <#if partnerUrl?has_content && !partnerUrl?matches(r"(?i)^https?\:\/\/.*")>             
139                <#assign partnerUrl = 'https://' + partnerUrl> 
140            </#if> 
141            <#assign logoFileName = clientProfile.getLogoBFormat1()?replace(".", "-")?replace("-([^-]*)$", ".$1", "r")?lower_case> 
142            <#assign cdnLogoUrl = (propsUtil.get('rackspace.cdn.web.url'))!> 
143             
144            <#if pbu == "0864054"> 
145                <#assign override = "berkshire"> 
146            <#else> 
147                <#assign override = " "> 
148            </#if> 
149             
150            <#--  this one should be delete for prod  --> 
151                 
152            <#assign cdnCardArtUrl = (propsUtil.get('rackspace.cdn.cardart.url'))!> 
153            <#assign pageClass = secondaryBackgroundImage.cardType.getData()> 
154             
155            <#if (subbu_special?has_content)> 
156                <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu_special)>  
157            <#else> 
158                <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu)>  
159            </#if> 
160 
161 
162            <#assign temp = []> 
163            <#assign offerTypeList = []>      
164            <#assign index = 0> 
165            <#list fiCardsData as fib> 
166                <#if !(offerTypeList?seq_contains(fib.offerType))>  
167                    <#assign offerTypeList = offerTypeList + [fib.offerType]>                   
168                    <#assign temp = temp + fiCardsData[index..index]>  
169                </#if>  
170                <#assign index = index + 1>                
171            </#list>  
172            <#assign fiCardsData = temp> 
173            <#if (fiCardsData?size > 0)>   
174                <#if (subbu_special?has_content)> 
175                    <#assign lc_used = fiCardsData?first.WebLocationCode>   
176                <#else> 
177                    <#if ameriprise> 
178                        <#assign lc_used = mappedLC>  
179                    <#else> 
180                        <#assign lc_used = lc>  
181                    </#if> 
182                </#if> 
183                <#assign productURL = ""> 
184                <#list fiCardsData as fib> 
185					<#assign useprcaValue = fib.useprca!"">  
186                    <#if ameriprise> 
187                        <#if (fib.offerType=="101")> 
188                            <#assign productURL="premier-visa-signature"> 
189                            <#assign productName="Premier Visa Signature"> 
190                            <#assign productClass="ameriprise-premier-visa-signature"> 
191                        <#elseif (fib.offerType=="103")>      
192                            <#assign productURL = "visa-signature"> 
193                            <#assign productName = "Visa Signature">   
194                            <#assign productClass="ameriprise-visa-signature">                            
195                        </#if> 
196                    <#else>                     
197                        <#if (fib.offerType=="108" || fib.offerType=="109")> 
198                            <#assign productURL="consumer-platinum2103"> 
199                            <#assign productName="Platinum"> 
200                        <#elseif (fib.offerType=="104")>    
201                            <#assign productURL = "max-cash"> 
202                            <#assign productName="Max Cash Preferred">                              
203                        <#elseif (fib.offerType=="101" || fib.offerType=="103")> 
204                            <#assign productURL = "consumer-edr2112"> 
205                            <#assign productName="Everyday Rewards+"> 
206                        <#elseif fib.offerType == "115"> 
207                            <#assign productURL = "secured"> 
208                            <#assign productName="Secured"> 
209                        <#elseif fib.offerType == "141"> 
210                            <#assign productURL = "college-real-rewards"> 
211                            <#assign productName="College Real Rewards">    
212                        <#elseif fib.offerType == "144"> 
213                            <#assign productURL = "smart-business-rewards"> 
214                            <#assign productName="Smart Business Rewards">       
215                        <#elseif fib.offerType == "147"> 
216                            <#assign productURL = "max-cash-secured"> 
217                            <#assign productName="Max Cash Secured">                             
218                        <#elseif fib.offerType == "128"> 
219                            <#assign productURL = "business-cash-preferred"> 
220                            <#assign productName="Business Cash Preferred"> 
221                        <#elseif fib.offerType == "143"> 
222                            <#assign productURL = "business-real-rewards"> 
223                            <#assign productName="Business Real Rewards"> 
224                        <#elseif fib.offerType == "121"> 
225                            <#assign productURL = "business-platinum2103"> 
226                            <#assign productName="Business"> 
227                        <#elseif fib.offerType == "138"> 
228                            <#assign productURL = "travel-rewards-plus"> 
229                            <#assign productName = "Travel Rewards+" > 
230                        <#elseif fib.offerType == "154"> 
231                            <#assign productURL = "reserve-rewards-plus"> 
232                            <#assign productName = "Reserve Rewards+" > 
233                        </#if>  
234                    </#if>     
235 
236                    <#assign cardArtImage = cdnCardArtUrl + "/" + fib.filename + ".png"> 
237                    <#assign cardArtImageAlt = cdnCardArtUrl + "/"+fib.filename+".jpg">   
238                    <#assign newSourceCode = fib.sourceCode>  
239                    <#assign newOfferId = fib.saaofferId>  
240 
241                    <#assign empOfferId = "">  
242                    <#if fib?has_content> 
243                        <#assign empOfferId = fib.empofferId!""> 
244                    </#if> 
245                    <#assign marketingChannel = 'SAT2A'> 
246                    <#if isEmployee> 
247                        <#assign marketingChannel = 'EMPL'> 
248                        <#assign newOfferId = empOfferId>       
249                    </#if> 
250                    
251                    <#if url?matches(".*/${productURL}\\?.*")> 
252                        <#assign APR=""> 
253                        <#assign AMF=""> 
254                        <#assign BAL=""> 
255                        <#assign sdata = utilServ.makeCall('crcDDCGetSchumerBox', newOfferId + '&' + newSourceCode)> 
256                        <#if (sdata?size > 0)> 
257                            <#list sdata as sItem> 
258                         
259                                <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) > 
260                                    <#assign APR = sItem.scrapedValue> 
261                                <#elseif ((sItem.scrapedLabel?contains("Annual Membership Fee")) && (sItem.scrapedValue?has_content)) > 
262                                    <#assign AMF = sItem.scrapedValue> 
263                                <#elseif ((sItem.scrapedLabel?contains("APR for Balance Transfers")) && (sItem.scrapedValue?has_content)) > 
264                                    <#assign BAL = sItem.scrapedValue> 
265                                </#if> 
266                                <#if (APR?has_content && AMF?has_content && BAL?has_content)> 
267                                    <#break> 
268                                </#if> 
269                            </#list>                 
270                        <#else> 
271                            <script> 
272                                console.log('no scraped data'); 
273                            </script> 
274                        </#if>     
275                        <#if ((fib.offerType == "108" || fib.offerType == "109" || fib.offerType == "121" ) && !ameriprise)> 
276                            <#if (sdata?size > 0)>   
277                                <#assign apr_string = "">                         
278                                <#list sdata as d> 
279                                    <#if (d.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases") && (d.scrapedValue?has_content))> 
280                                        <#assign apr_string = d.scrapedValue?replace("(\n|\r\n|\r)+", " ","r")> 
281                                        <#break> 
282                                    </#if> 
283                                </#list> 
284                                <script> 
285                                        $(document).ready(function () { 
286                                            var aprText = "${apr_string}"; 
287                                            if (aprText) { 
288                                                var matches= aprText.match(/\d+(\.\d+)?%?/g); 
289                                                var billing_cycle = ""; 
290                                                var apr_min = ""; 
291                                                var apr_max = ""; 
292                                                var apr_max_formatted = ""; 
293                                                if (aprText.indexOf("Platinum:") != -1 || aprText.indexOf("Business:") != -1) { 
294                                                    billing_cycle = matches[1]; 
295                                                    apr_min = matches[2]; 
296                                                    apr_max = matches[3]; 
297                                                    if (apr_max){ 
298                                                        apr_max_formatted = '-' + apr_max; 
299
300
301                                                
302                                                if (billing_cycle) { 
303                                                    $(".scraped-billing-cycle").html(billing_cycle); 
304
305                                                if (apr_min) { 
306                                                    $(".scraped-apr-min").html(apr_min); 
307
308                                                $('.scraped-apr-max-formatted').html(apr_max_formatted); 
309                                                if (apr_max) { 
310                                                    $('.scraped-apr-max').html(apr_max); 
311
312                                                 
313
314                                        }); 
315                                </script>                              
316                            </#if>   
317                        </#if>    
318                        <#if ameriprise> 
319                            <#assign card_art_alt =  partnerName + " " + productName + " " + " Card"> 
320                            <#assign rollover_text =  partnerName + " " + productName + " " + " Card"> 
321                        <#else> 
322                            <#assign card_art_alt = partnerName + " " + productName + " " + " Card"> 
323                            <#assign rollover_text =  partnerName + " " + productName + " " + " Credit Card"> 
324                            <#assign card_text = productName + " Card"> 
325                        </#if> 
326 
327                        <div class="hero-container ${pageClass} ${productClass!''}" title="${rollover_text!''}"> 
328                            <div class="hero-main"> 
329                                 
330                                <div class="hero-main-container"> 
331                                    <div class="hero-main-offer"> 
332                                        <div class="offer-detail"> 
333                                            <div class="offer-detail-cardArt cardArtImg"> 
334                                                <img src="${cardArtImage!''}" alt="${card_art_alt!''}" title="${card_art_alt!''}" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'">  
335                                                <p>${card_text!''}</p> 
336                                                <#if fib.offerType=="108" || fib.offerType=="109"> 
337                                                    <a href="javascript:void(0);" data-micromodal-trigger="modal-2">See how much you could save with a balance transfer</a> 
338                                                </#if> 
339                                            </div> 
340                                            <div class="offer-detail-text text-color-default hide-desktop"> 
341                                                ${primaryHeadlineFeatureTop.getData()} 
342                                                ${primaryHeadlineFeatureBottom.getData()} 
343                                            </div> 
344                                            <#if (useprcaValue == "1")>     
345												<form class="form1 hide-desktop" action='${prcaURL}?locationCode=${lc_used}&amp;offerId=${newOfferId}&amp;preparerType=customer&amp;mktChl=${marketingChannel}&amp;applicationType=${applicationType}' method="post" id="BAAForm"> 
346													<label for="appDataBAA" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label> 
347													<textarea rows="20" cols="100" name="applicationData" id="appDataBAA" style="display:none;"></textarea> 
348													<button  
349														type="submit"  
350														id="oadSecButton-top" 
351														data-button-name="cta-button-top" 
352														class="applyNowLink jn-button apply-button button-bg-color-custom"  
353														disabled  
354
355														${ctaText.getData()}<span class="screen-reader-only">&nbsp;for ${partnerName!''} ${productName!''} Card </span> 
356													</button> 
357												</form> 
358											<#else> 
359												<form class="form1 hide-desktop" action='${oadURL}?locationCode=${lc_used}&amp;offerId=${newOfferId}&amp;preparerType=customer&amp;mktChl=${marketingChannel}' method="post" id="BAAForm"> 
360                                                <label for="appDataBAA" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label> 
361                                                <textarea rows="20" cols="100" name="applicationData" id="appDataBAA" style="display:none;"></textarea> 
362                                                <button  
363                                                    type="submit"  
364													id="oadSecButton-top" 
365                                                    data-button-name="cta-button-top" 
366													class="applyNowLink jn-button apply-button button-bg-color-custom"  
367                                                    disabled  
368
369                                                    ${ctaText.getData()}<span class="screen-reader-only">&nbsp;for ${partnerName!''} ${productName!''} Card </span> 
370                                                </button> 
371                                            </form> 
372											</#if> 
373                                        </div> 
374                                        <div class="offer-header"> 
375                                            <div class="offer-text-top"> 
376                                                <div class="offer-title"> 
377                                                    ${primaryHeadlineText.getData()} 
378                                                </div> 
379                                                <h1 class="offer-subtitle"> 
380                                                    <#if isEmployee && employeePrimaryHeadlineFeature?has_content> 
381                                                        ${employeePrimaryHeadlineFeature.getData()} 
382                                                    <#else> 
383                                                        ${primaryHeadlineFeature.getData()} 
384                                                    </#if> 
385                                                </h1> 
386                                            </div> 
387                                            <div class="offer-text-bottom hide-mobile"> 
388                                                <div class="offer-detail-text text-color-default "> 
389                                                    ${primaryHeadlineFeatureTop.getData()} 
390                                                    ${primaryHeadlineFeatureBottom.getData()} 
391                                                    <#-- allow for all except these url --> 
392                                                    <#if (fib.offerType == "108" ||  
393                                                        fib.offerType == "109" ||  
394                                                        fib.offerType == "121" || 
395                                                        fib.offerType == "144" 
396                                                    )> 
397                                                        <br> 
398                                                        <a class="whiteLink" href="${oadURL_TC}?step=display&amp;offerId=${newOfferId}&amp;locationCode=${lc_used}"  class="text-color-default" target="_blank"> 
399                                                            <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>See terms & conditions</a> 
400                                                    </#if> 
401                                                </div> 
402                                                <a tabindex="0" id="oadSecButton-top" data-button-name="cta-button-bottom" class="applyNowLink jn-button banner-cta-apply-button">${optionalCtaText.getData()}<span class="screen-reader-only">&nbsp;for ${partnerName!''} ${productName!''} Card </span></a>                                                                                
403 
404                                            </div> 
405                                        </div> 
406                                         
407                                    </div> 
408                                </div> 
409                            </div> 
410                            <div class="hero-primary-benefits"> 
411                                <#if secondaryFeatureText.getData() != ""> 
412                                    <#assign featureCounter = 0> 
413                                    <#list secondaryFeatureText.getSiblings() as item> 
414                                        <div class="primary-benefit"> 
415                                            <div class="primary-benefit-wrapper text-color-white"> 
416                                                ${item.getData()} 
417                                                <#if (fib.offerType=="108" || fib.offerType=="109") && (featureCounter == secondaryFeatureText.getSiblings()?size - 1)> 
418                                                <a  
419                                                    href="${oadURL_TC}?step=display&amp;offerId=${newOfferId}&amp;locationCode=${lc_used}" 
420                                                    class="text-color-default"  
421                                                    target="_blank" 
422
423                                                    <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span> 
424                                                    Terms & Conditions 
425                                                </a> 
426                                                </#if> 
427                                            </div> 
428                                        </div> 
429                                        <#assign featureCounter = featureCounter + 1> 
430                                    </#list> 
431                                </#if> 
432                            </div> 
433                        </div> 
434                        <div class="standard-content-container" title="${rollover_text!''}"> 
435                            <div class="product-details-container"> 
436                                <div class="detail-background"> 
437                                    <h2>${secondaryHeadlineText.getData()}</h2> 
438                                    <div class="secondary-benefits"> 
439                                        <div class="option"> 
440                                            ${additionalInfoGroupA.getData()} 
441                                            <#if pbu != "0892445">                                              
442                                                <div> 
443                                                    <#assign col1AmfOfferTypes = ["101", "141", "138", "154", "128"] > 
444                                                    <#assign col1AprOfferTypes = ["104", "121", "143", "144"] > 
445                                                    <#if col1AmfOfferTypes?seq_contains(fib.offerType)> 
446                                                        <#if (fib.offerType == "101")> 
447                                                            <h3>Annual Fee<sup>*</sup></h3><br/> 
448                                                        <#else> 
449                                                            <h3>Annual Fee</h3><br/> 
450                                                        </#if> 
451                                                        <p>${AMF!''}  
452                                                            <a href="${oadURL_TC}?step=display&amp;offerId=${newOfferId}&amp;locationCode=${lc_used}" 
453                                                                class="text-color-default" target="_blank"> 
454                                                                <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>Terms & Conditions 
455                                                            </a> 
456                                                        </p> 
457                                                    <#elseif col1AprOfferTypes?seq_contains(fib.offerType)> 
458                                                        <#if (fib.offerType == "104") > 
459                                                            <h3 >APR for Purchases:</h3> 
460                                                        <#elseif (fib.offerType == "144")> 
461                                                            <h3>APR for Purchases and Balance Transfers:</h3> 
462                                                        <#else> 
463                                                            <h3>Intro APR<sup>*</sup> for Purchases:</h3> 
464                                                        </#if> 
465                                                        <p>${APR!''}  
466                                                            <a href="${oadURL_TC}?step=display&amp;offerId=${newOfferId}&amp;locationCode=${lc_used}" 
467                                                                class="text-color-default" target="_blank"> 
468                                                                <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>Terms & Conditions 
469                                                            </a> 
470                                                        </p> 
471 
472                                                    </#if> 
473                                                </div>                                             
474                                            </#if> 
475                                        </div> 
476                                        <div class="option"> 
477                                            ${additionalInfoGroupB.getData()}  
478                                            <#if pbu != "0892445"> 
479                                                <div> 
480                                                    <#assign col2AmfOfferTypes = ["108", "109", "115", "144"] > 
481                                                    <#assign col2AprOfferTypes = ["138", "154", "128"] > 
482                                                    <#assign col2BalOfferTypes = ["101", "104", "141", "121", "143"] > 
483                                                    <#if col2AmfOfferTypes?seq_contains(fib.offerType)> 
484                                                        <h3>Annual Fee</h3> 
485                                                        <p>${AMF!''}  
486                                                            <a href="${oadURL_TC}?step=display&amp;offerId=${newOfferId}&amp;locationCode=${lc_used}" 
487                                                                class="text-color-default" target="_blank"> 
488                                                                <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>Terms & Conditions 
489                                                            </a> 
490                                                        </p> 
491                                                    <#elseif col2AprOfferTypes?seq_contains(fib.offerType)> 
492                                                        <#if (fib.offerType == "128")> 
493                                                            <h3>Intro APR<sup>*</sup> for Purchases:</h3> 
494                                                        <#else> 
495                                                            <h3>APR for Purchases:</h3>  
496                                                        </#if> 
497                                                        <p>${APR!''}  
498                                                            <a href="${oadURL_TC}?step=display&amp;offerId=${newOfferId}&amp;locationCode=${lc_used}" 
499                                                                class="text-color-default" target="_blank"> 
500                                                                <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>Terms & Conditions 
501                                                            </a> 
502                                                        </p> 
503                                                    <#elseif col2BalOfferTypes?seq_contains(fib.offerType)> 
504                                                        <h3>Intro APR<sup>*</sup> for Balance Transfers:</h3> 
505                                                        <p>${BAL!''}  
506                                                            <a href="${oadURL_TC}?step=display&amp;offerId=${newOfferId}&amp;locationCode=${lc_used}" 
507                                                                class="text-color-default" target="_blank"> 
508                                                                <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>Terms & Conditions 
509                                                            </a> 
510                                                        </p> 
511 
512                                                    </#if> 
513                                                </div> 
514                                            </#if> 
515                                        </div> 
516                                        <#if additionalInfoGroupC?has_content || (isEmployee && employeeAdditionalInfoGroupC?has_content)> 
517                                            <div class="option">   
518                                                <#if isEmployee && employeeAdditionalInfoGroupC?has_content> 
519                                                    ${employeeAdditionalInfoGroupC.getData()} 
520                                                <#else> 
521                                                    ${additionalInfoGroupC.getData()}  
522                                                </#if> 
523                                                <div> 
524                                                    <#assign col3AmfOfferTypes = ["104", "121", "143"] > 
525                                                    <#assign col3AprOfferTypes = ["101", "108", "109", "141", "147", "115"] > 
526                                                    <#assign col3BalOfferTypes = ["138", "154", "128"] > 
527                                                    <#if col3AmfOfferTypes?seq_contains(fib.offerType)> 
528                                                        <#if (fib.offerType == "104")> 
529                                                            <h3>Annual Fee<sup>*</sup></h3> 
530                                                        <#else> 
531                                                            <h3>Annual Fee</h3> 
532                                                        </#if> 
533                                                        <p>${AMF!''}  
534                                                            <a href="${oadURL_TC}?step=display&amp;offerId=${newOfferId}&amp;locationCode=${lc_used}" 
535                                                                class="text-color-default" target="_blank"> 
536                                                                <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>Terms & Conditions 
537                                                            </a> 
538                                                        </p> 
539                                                    <#elseif col3AprOfferTypes?seq_contains(fib.offerType)> 
540                                                        <#if (fib.offerType == "115" || fib.offerType == "147")> 
541                                                            <h3>APR for Purchases and Balance Transfers:</h3> 
542                                                        <#else> 
543                                                            <h3>Intro APR<sup>*</sup> for Purchases:</h3> 
544                                                        </#if> 
545                                                        <p>${APR!''}  
546                                                            <a href="${oadURL_TC}?step=display&amp;offerId=${newOfferId}&amp;locationCode=${lc_used}" 
547                                                                class="text-color-default" target="_blank"> 
548                                                                <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>Terms & Conditions 
549                                                            </a> 
550                                                        </p> 
551                                                    <#elseif col3BalOfferTypes?seq_contains(fib.offerType)> 
552                                                        <#if (fib.offerType == "128")> 
553                                                            <h3>Intro APR<sup>*</sup> for Balance Transfers:</h3> 
554                                                        <#else> 
555                                                            <h3>APR for Balance Transfers:</h3>  
556                                                        </#if> 
557                                                        <p>${BAL!''}  
558                                                            <a href="${oadURL_TC}?step=display&amp;offerId=${newOfferId}&amp;locationCode=${lc_used}" 
559                                                                class="text-color-default" target="_blank"> 
560                                                                <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>Terms & Conditions 
561                                                            </a> 
562                                                        </p> 
563 
564                                                    </#if> 
565                                                    <#if (fib.offerType == "147")> 
566                                                        <h3>Annual Fee<sup>*</sup></h3> 
567                                                        <p>${AMF!''}  
568                                                            <a href="${oadURL_TC}?step=display&amp;offerId=${newOfferId}&amp;locationCode=${lc_used}" 
569                                                                class="text-color-default" target="_blank"> 
570                                                                <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>Terms & Conditions 
571                                                            </a>  
572                                                        </p> 
573                                                    </#if> 
574                                                    <#if (fib.offerType == "108" || fib.offerType == "109")> 
575                                                        <h3>Intro APR<sup>*</sup> for Balance Transfers:</h3>                                                        
576                                                        <p>${BAL!''}  
577                                                            <a href="${oadURL_TC}?step=display&amp;offerId=${newOfferId}&amp;locationCode=${lc_used}" 
578                                                                class="text-color-default" target="_blank"> 
579                                                                <span class="screen-reader-only">${partnerName!''} ${productName!''} Card </span>Terms & Conditions 
580                                                            </a> 
581                                                        </p> 
582                                                    </#if> 
583                                                </div>                
584                                            </div>   
585                                        </#if>                                          
586                                    </div> 
587                                </div> 
588                            </div> 
589                        </div> 
590                        <div class="banner-wrapper" title="${rollover_text!''}"> 
591                            <div class="banner ${override}"> 
592                                <div class="banner-cardArt cardArtImg"> 
593                                   <img src="${cardArtImage!''}" alt="${card_art_alt!''}" title="${card_art_alt!''}" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'">  
594                                </div> 
595                                <div class="banner-cta"> 
596                                    <div class="banner-cta-text text-color-white text-bold"> 
597                                        <#if isEmployee && employeeOptionalCtaFeatureText?has_content> 
598                                            ${employeeOptionalCtaFeatureText.getData()} 
599                                        <#else> 
600                                            ${optionalCtaFeatureText.getData()}    
601                                        </#if>                                 
602                                    </div> 
603                                    <a  
604                                        tabindex="0"  
605                                        id="oadSecButton"  
606                                        data-button-name="cta-button-bottom"  
607                                        class="applyNowLink jn-button banner-cta-apply-button button-bg-color-custom text-color-white" 
608
609                                        ${optionalCtaText.getData()}<span class="screen-reader-only">&nbsp;for ${partnerName!''} ${productName!''} Card</span></a> 
610                                </div> 
611                            </div> 
612                        </div> 
613                        <#break /> 
614                    </#if> 
615                </#list>                         
616 
617                <script> 
618                        var reportingData = window.reportingData || {}; 
619                    document.addEventListener('DOMContentLoaded', function() { 
620                        var page = location.pathname.split('/')[location.pathname.split('/').length-1]; 
621                        var hostName = location.hostname; 
622                     
623                        function getDomainFromHostname(hostname) { 
624                            var parts = hostname.split('.'); 
625                            return parts.length === 3 ? parts[1] : parts[0]; 
626
627                        var domain = getDomainFromHostname(hostName); 
628                        var partnerName = "${partnerName!''}"; 
629 
630                        var ameriprise = '${ameriprise?string("yes", "no")}'; 
631                        var locationCode = "${rlc!lc}"; 
632                        var eidAmp = ""; 
633                        if (ameriprise == "yes") { 
634                            var bankercode_amp = '${bCode}'; 
635                            eidAmp = bankercode_amp.substring(3); 
636                            locationCode =""; 
637                        }    
638                             
639                        var heroCardImgs = document.querySelectorAll('.cardArtImg img'); 
640                        for (var index = 0; index < heroCardImgs.length; index++) { 
641                            var heroCardImg = heroCardImgs[index]; 
642                            var heroCardSrc = heroCardImg.getAttribute("src"); 
643                            if(heroCardSrc != "") { 
644                                resizeImg(heroCardImg); 
645
646
647                        function resizeImg(img) { 
648                            img.addEventListener("load", function() { 
649                                var cardImgWidth = img.width; 
650                                var cardImgHeight = img.height; 
651                                if(cardImgWidth > cardImgHeight) { 
652                                    img.style.width = "285px"; 
653                                } else { 
654                                    img.style.width = "150px"; 
655
656                            }); 
657
658                         
659                         
660                        $('.jn-button').removeAttr('disabled'); 
661                        $('.jn-button').removeClass('jn-disabled'); 
662                        jQuery('#oadSecButton, #oadSecButton-top').on('click', function(e) { 
663                            jQuery('#BAAForm').submit(); 
664                        }); 
665                         
666                        jQuery('#BAAForm').on('submit', function(e){ 
667                            e.preventDefault(); 
668                            var xmlData; 
669                            if(ameriprise == "yes") { 
670                                xmlData = '<?xml version="1.0"?>'+ 
671                                    "<prefillData>"+  
672                                    "<versionNumber>1.0</versionNumber>"+  
673                                    "<applicationData>"+  
674                                        "<referral>" +  
675                                            "<employeeId>" + eidAmp + "</employeeId>" + 
676                                            "<storeNumber>"+"${bName!'0'}"+"</storeNumber>"+ 
677                                            "<divisionNumber></divisionNumber>"+ 
678                                        "</referral>" +  
679                                        "<bankerInformation>"+  
680                                            "<locationCode>" + locationCode + "</locationCode>"+ 
681                                            "<originatingBranchNumber>"+"${bName!'0'}"+"</originatingBranchNumber>"+ 
682                                            "<employeeID>${boeid!0}</employeeID>"+ 
683                                            "<name>" + 
684                                            "<first>${bFName!'0'}</first>" + 
685                                            "<last>${bLName!'0'}</last>" + 
686                                            "</name>"+ 
687                                            "<phone>"+ 
688                                            "<areaCode>"+areaCode+"</areaCode>"+  
689                                            "<exchange>"+exchangeCode+"</exchange>"+ 
690                                            "<number>"+num+"</number>"+  
691                                            "</phone>"+  
692                                        "</bankerInformation>"+  
693                                    "</applicationData>"+  
694                                    "</prefillData>" 
695                            }  else if ('${isEmployee?string("yes", "no")}' == "yes") {  
696                                xmlData = '<?xml version="1.0"?>'+ 
697                                    "<prefillData>"+  
698                                        "<versionNumber>1.0</versionNumber>"+  
699                                        "<applicationData>"+                                         
700                                            "<bankerInformation>"+  
701                                                "<employeeFullName>Employee Product</employeeFullName>"+ 
702                                                "<employeeId>EMPPROD</employeeId>"+ 
703                                                "<employeePhoneNumber></employeePhoneNumber>"+ 
704                                                "<locationCode>" + locationCode + "</locationCode>"+ 
705                                                "<originatingBranchNumber>"+"${bName!'0'}"+"</originatingBranchNumber>"+ 
706                                                "<originatingBranchId></originatingBranchId>"+ 
707                                                "<name>" + 
708                                                    "<first>${bFName!'0'}</first>" + 
709                                                    "<last>${bLName!'0'}</last>" + 
710                                                "</name>"+ 
711                                                "<phone>"+ 
712                                                    "<areaCode>" + areaCode + "</areaCode>"+  
713                                                    "<exchange>" + exchangeCode + "</exchange>"+ 
714                                                    "<number>" + num + "</number>"+  
715                                                "</phone>"+  
716                                            "</bankerInformation>"+  
717                                            "<referral>" +  
718                                                "<divisionNumber></divisionNumber>" +       
719                                                "<partnerLocationID>" + locationCode + "</partnerLocationID>" +                          
720                                                "<referralId>EMPPROD</referralId>" + 
721                                            "</referral>" +  
722                                        "</applicationData>"+  
723                                    "</prefillData>";                             
724                            } else { 
725                                xmlData = '<?xml version="1.0"?>'+ 
726                                    "<prefillData>"+  
727                                        "<versionNumber>1.0</versionNumber>"+  
728                                        "<applicationData>"+  
729                                            "<bankerInformation>"+  
730                                                "<locationCode>" + locationCode + "</locationCode>"+ 
731                                                "<originatingBranchNumber>"+"${bName!'0'}"+"</originatingBranchNumber>"+ 
732                                                "<employeeID>${boeid!0}</employeeID>"+ 
733                                                "<name>" + 
734                                                "<first>${bFName!'0'}</first>" + 
735                                                "<last>${bLName!'0'}</last>" + 
736                                                "</name>"+ 
737                                                "<phone>"+ 
738                                                "<areaCode>"+areaCode+"</areaCode>"+  
739                                                "<exchange>"+exchangeCode+"</exchange>"+ 
740                                                "<number>"+num+"</number>"+  
741                                                "</phone>"+  
742                                            "</bankerInformation>"+  
743                                        "</applicationData>"+  
744                                    "</prefillData>" 
745                            }            
746							console.log("useprcaValue---->"+${useprcaValue}) 
747						if('${useprcaValue}' =='1'){ 
748								if('${isEmployee?string("yes", "no")}' == "yes"){   						 
749							var employeeFullName = "${fName!'0'}" + ' ' + "${lName!'0'}"; 
750							var firstName = "${fName!'0'}".trim(); 
751							var lastName = "${lName!'0'}".trim(); 
752							var fullName = employeeFullName.trim();  
753								 
754							if (fullName.length <= 20) { 
755								employeeFullName = fullName;  
756							} else if (firstName.length + 1 + lastName.length <= 20) { 
757								employeeFullName = firstName.charAt(0) + ' ' + lastName;  
758							} else { 
759								employeeFullName = firstName.charAt(0) + ' ' + lastName.substring(0, 19);  
760							}							 
761							 var applicationJsonData = { 
762												  "prefillData": { 
763													"versionNumber": "1.0", 
764													"applicationData": { 
765													  "bankerInformation": { 
766														"locationCode": locationCode, 
767														"originatingBranchId": "${bName!'0'}", 
768														"employeeId": "EMPPROD", 
769														"employeeFullName": "Employee Product", 
770														"employeePhoneNumber": phoneNum 
771
772
773
774												}; 
775                            }else{ 
776								var employeeFullName = "${fName!'0'}" + ' ' + "${lName!'0'}"; 
777								var firstName = "${fName!'0'}".trim(); 
778								var lastName = "${lName!'0'}".trim(); 
779								var fullName = employeeFullName.trim();  
780									 
781								if (fullName.length <= 20) { 
782									employeeFullName = fullName;  
783								} else if (firstName.length + 1 + lastName.length <= 20) { 
784									employeeFullName = firstName.charAt(0) + ' ' + lastName;  
785								} else { 
786									employeeFullName = firstName.charAt(0) + ' ' + lastName.substring(0, 19);  
787								}							 
788								 
789								 var applicationJsonData = { 
790												  "prefillData": { 
791													"versionNumber": "1.0", 
792													"applicationData": { 
793													  "bankerInformation": { 
794														"locationCode": locationCode, 
795														"originatingBranchId": "${bName!'0'}", 
796														"employeeId": "${boeid!0}", 
797														"employeeFullName": employeeFullName, 
798														"employeePhoneNumber": phoneNum 
799
800
801
802												};							 
803
804							var jsonData = JSON.stringify(applicationJsonData);							 
805							jQuery('#appDataBAA').val(jsonData); 
806						}else{						   
807						  jQuery('#appDataBAA').val(xmlData); 
808
809                             
810                            var buttonName = jQuery('.jn-button').data('button-name'); 
811                            /* SiteCatalyst  onClick tracking */ 
812                            reportingData.apply_button = buttonName; 
813                            AUI().ready(function() { 
814                                if (window.publisherFW) { 
815                                    window.publisherFW.publishEvent("onClick", reportingData); 
816
817                            }); 
818 
819                            var paramString = '${bCode}' + "&" + xmlData + "&" + '${htmlUtil.escapeURL(htmlUtil.escapeJS(url))}'; 
820                            /* CRC service call */ 
821                            Liferay.Service( 
822                                '/crcutilities.crcremoteservice/make-call', 
823
824                                    storedProcedure: 'crcDDCTextApplyLog', 
825                                    parameters: paramString 
826                                }, 
827                                function(obj) 
828
829                                    //console.log("T2A logging call"); 
830
831                            ); 
832 
833                            this.submit(); 
834                        }); 
835                        var regex = /\d+/g; 
836                        var bdNumber = "${bPhone!''}"; 
837                        var phoneNum = bdNumber.match(regex); 
838                        var areaCode = ""; 
839                        var exchangeCode = ""; 
840                        var num = ""; 
841                        if(phoneNum != null) { 
842                            phoneNum = phoneNum.join(""); 
843                            areaCode = phoneNum.substring(0,3); 
844                            exchangeCode = phoneNum.substring(3,6); 
845                            num = phoneNum.substring(6,10); 
846
847                        var product = ""; 
848                        switch(page) { 
849                            case "consumer-platinum2103": 
850                                product="Platinum Card" 
851                                break; 
852                            case "consumer-edr2112": 
853                                product="Everyday Rewards+ Card" 
854                                break; 
855                            case "secured": 
856                                product="Secured Card" 
857                                break; 
858                            case "business-cash-preferred": 
859                                product="Business Cash Preferred" 
860                                break; 
861                            case "business-real-rewards": 
862                                product="Business Real Rewards Card" 
863                                break; 
864                            case "business-rewards-plus": 
865                                product="Business Rewards PLUS Card" 
866                                break; 
867                            case "premier-visa-signature": 
868                                product="Premier Visa Signature Card" 
869                                break; 
870                            case "business-platinum2103": 
871                                product="Business Card" 
872                                break; 
873                            case "visa-signature": 
874                                product="Visa Signature Card" 
875                                break;         
876                            case "travel-rewards-plus": 
877                                product="Travel Rewards+ Card" 
878                                break;   
879                            case "reserve-rewards-plus": 
880                                product="Reserve Rewards+ Card" 
881                                break;         
882                            case "max-cash": 
883                                product="Max Cash Preferred Card" 
884                                break;     
885                            case "max-cash-secured": 
886                                product="Max Cash Secured Card" 
887                                break;    
888                            case "college-real-rewards": 
889                                product="College Real Rewards Card" 
890                                break;    
891                            case "smart-business-rewards": 
892                                product="Smart Business Rewards Card" 
893                                break;                              
894                            default:   
895                                product = "All Cards";                           
896                        }                                  
897                             
898                        /* update SiteCatalyst data object */ 
899                        reportingData.current_page = "microsite:${partnerName}:" + domain + ':' + page.replace('-',' '); 
900                        reportingData.location_code = '${rlc!0}'; 
901                        reportingData.product = product; 
902                        reportingData.site_section = 'credit cards'; 
903                        reportingData.platform = 'microsite'; 
904                        reportingData.partner_name = "${partnerName}"; 
905                        reportingData.Banker_id = '${boeid}'; 
906                        reportingData.Banker_code = '${bCode}'; 
907                        reportingData.visitor_type = 'prospect'; 
908                        reportingData.text_to_apply_source = '${text_to_apply_source}'; 
909                        reportingData.page_type = 'product';  
910                        reportingData.campaign_id = '${campaignId}';  
911 
912                        jQuery('.applyNowLink').on('click', function(e){ 
913                            const bankerId = '${boeid}'; 
914                            const employeeId = ""; 
915                            let visitorId = bankerId; 
916                             
917                            if('${isEmployee?string("yes", "no")}' == "yes") { 
918                                visitorId = employeeId; 
919
920                            // get action url of form submit button  
921                            const href = document.getElementById('BAAForm').action; 
922 
923                            const urlParams = new URLSearchParams(href); 
924                            let offerId = "";                    
925 
926                            if(urlParams.has('offerid')) { 
927                                offerId = urlParams.get('offerid'); 
928
929 
930                            if(urlParams.has('offerId')) { 
931                                offerId = urlParams.get('offerId'); 
932
933                             
934                            window.dataLayer.push({ 
935                                'event' : 'apply_payload', 
936                                'location_code': locationCode, 
937                                'banker_code': '${bCode}', 
938                                'offer_id': offerId, 
939                                'visitor_id': visitorId, 
940                            }); 
941                            return false; 
942                        }); 
943                    }); 
944                </script> 
945                                     
946            <#else> 
947                <script> 
948                    console.log("FI Cards Data empty"); 
949                    location.href = '${url404}'; 
950                </script> 
951            </#if>                   
952        <#else> 
953            <script> 
954                console.log("Fi opt-out"); 
955                location.href = '${url404}'; 
956            </script> 
957        </#if>        
958    <#else> 
959        <script> 
960            console.log("client profile empty"); 
961            location.href = '${url404}'; 
962        </script> 
963    </#if>   
964 
965</#if> 
966<#assign clientdata = utilServ.makeCall('crcDDCTier1Customizations','0&'+pbu+'&'+subbu+'&11')> 
967<#if (clientdata?size > 0)> 
968    <#assign backgroundColor = clientdata[0].backgroundHexColor>               
969</#if> 
970<script> 
971    // Makes the Header subtitle work if there is two lines of text  
972    var consumerHeader = document.getElementsByClassName("consumer-card")[0]; 
973    if(consumerHeader){ 
974        var consumerHeroContainer = consumerHeader.getElementsByClassName("hero-main-container")[0]; 
975        const offerTextTop = consumerHeader.querySelector(".offer-text-top"); 
976        const gradientHeight = Math.max(offerTextTop.offsetHeight + 50, 200) + "px"; 
977        var consumerOfferHeader = consumerHeader.getElementsByClassName("offer-subtitle")[0]; 
978        const consumerSubtitle = consumerOfferHeader.getElementsByTagName("p")[0]; 
979        if (consumerSubtitle.innerText.length >= 76){ 
980            //two lines 
981            consumerHeroContainer.style.background = "linear-gradient(180deg, ${backgroundColor!'#173989'} " + gradientHeight + ", #f8f8f8 " + gradientHeight + ")"; 
982
983
984 
985    var buisnessHeader = document.getElementsByClassName("business-card")[0];   
986    if(buisnessHeader) { 
987        var buisnessHeroContainer = buisnessHeader.getElementsByClassName("hero-main-container")[0]; 
988        var buisnessOfferHeader = buisnessHeader.getElementsByClassName("offer-subtitle")[0]; 
989 
990        if(buisnessOfferHeader.innerText.length >= 31 && buisnessOfferHeader.innerText.length < 48){ 
991            //not two lines but the header on tablet gose outside of allocated space. 
992            buisnessHeroContainer.style.background = "linear-gradient(180deg, rgba(255,255,255,1) 40%, ${backgroundColor!'#173989'} 40%)"; 
993        } else if (buisnessOfferHeader.innerText.length >= 48){ 
994            //two lines 
995            buisnessHeroContainer.style.background = "linear-gradient(180deg, rgba(255,255,255,1) 45%, ${backgroundColor!'#173989'} 45%)"; 
996
997
998</script> 
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> url404  [in template "10153#10191#7958267" at line 37, column 30]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: ${url404}  [in template "10153#10191#7958267" at line 37, column 28]
----
1<#assign url = themeDisplay.getURLCurrent() > 
2<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))> 
3<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! /> 
4 
5<#if qstringmap["bankercode"]?has_content> 
6    <#assign bankercode = qstringmap["bankercode"]?first> 
7    <#assign bankercode = htmlUtil.escape(bankercode)> 
8    <#assign bankercode = htmlUtil.escapeJS(bankercode)> 
9    <#assign bankercode = htmlUtil.escapeURL(bankercode)> 
10 
11    <#assign fiData= utilServ.makeCall('crcDDCBankerAssistedAppSql','0&'+bankercode)> 
12    <#if fiData?first?has_content> 
13        <#assign fi = fiData?first> 
14        <#if ((fi.projectId == "12") || (fi.projectId == "13") || (fi.projectId == "14"))> 
15            <#assign subbu_special = fi.offerId> 
16        </#if> 
17    </#if>  
18 
19    <#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetailSql','0&'+bankercode)> 
20    <#list bData as b>         
21      <#assign rLC = b.reallocationcode > 
22      <#assign lc = b.locationcode > 
23      <#assign mappedLC = b.mappedLocationCode > 
24    </#list>    
25 
26    <#assign isEmployee = false> 
27 
28    <#if fiData?first?has_content> 
29        <#assign fi = fiData?first> 
30        <#if fi.projectType == "emp"> 
31            <#assign isEmployee = true> 
32        </#if> 
33    </#if>  
34<#else> 
35    <script> 
36        console.log("MainProductBcode missing"); 
37        //location.href = '${url404}'; 
38    </script> 
39</#if> 
40 
41<#if bankercode?starts_with("amp") && (url?contains("11t1m"))> 
42    <#assign ameriprise = true> 
43<#else> 
44    <#assign ameriprise = false> 
45</#if> 
46 
47<#if mappedLC?has_content && !ameriprise> 
48    <#assign lc = mappedLC > 
49</#if> 
50 
51 
52<#if lc?has_content> 
53    <#assign prefix = "00000" > 
54    <#assign lcWithPrefix = prefix + lc > 
55    <#assign withPrefixLength = lcWithPrefix?length > 
56    <#assign startHere = withPrefixLength - 5> 
57    <#assign lc = lcWithPrefix?substring(startHere)> 
58    <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! /> 
59    <#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
60 
61    <#assign clientProfile = clientProfileList?first>  
62    <#assign partnerName=clientProfile.getMarketingNameLong()> 
63    <#assign pbu = clientProfile.getPbu()> 
64    <#assign subbu = clientProfile.getSUBBRANDBUNBR()> 
65    <#assign optoutData = utilServ.makeCall('crc_DDCSAAOptOut',pbu+'&'+subbu)> 
66 
67    <#assign optoutData = utilServ.makeCall('crc_DDCSAAOptOut',pbu+'&'+subbu)> 
68    <#if (optoutData?size == 0)> 
69            <#if (subbu_special?has_content)> 
70                <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu_special)>  
71                <script> 
72                    console.log('new subbu', '${subbu_special!''}'); 
73                </script>  
74            <#else> 
75                <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu)>  
76            </#if> 
77            <#if (fiCardsData?size > 0)> 
78                <#assign cardProvider = utilServ.makeCall('crcDDCGetMcOrVisa', fiCardsData[0].offerType + '&' + lc)> 
79                <#assign cardProviderAbbreviated = ''> 
80                <#if (cardProvider?size > 0)> 
81                    <#-- This will be V for visa or M for mastercard. --> 
82                    <#assign cardProviderAbbreviated = cardProvider[0].cardType> 
83                <#else> 
84                    <script> 
85                        console.log('No V or M data') 
86                    </script> 
87                </#if> 
88                <#list fiCardsData as fib> 
89                    <#switch fib.offerType> 
90                        <#case "101"> 
91                            <#assign productURL = "consumer-edr2112"> 
92                            <#assign productName = "Everyday Rewards+"> 
93                            <#break> 
94                        <#case "104"> 
95                            <#assign productURL = "max-cash"> 
96                            <#assign productName = "Max Cash Preferred Card">       
97                            <#break> 
98                        <#case "108"> 
99                            <#assign productURL="consumer-platinum2103"> 
100                            <#assign productName="Platinum Card"> 
101                            <#break> 
102                        <#case "109"> 
103                            <#assign productURL="consumer-platinum2103"> 
104                            <#assign productName="Platinum Card"> 
105                            <#break> 
106                        <#case "115"> 
107                            <#assign productURL = "secured"> 
108                            <#assign productName = "Secured Card" > 
109                            <#break> 
110                        <#case "138"> 
111                            <#assign productURL = "travel-rewards-plus"> 
112                            <#assign productName = "Travel Rewards+" > 
113                            <#break> 
114                        <#case "141"> 
115                            <#assign productURL = "college-real-rewards"> 
116                            <#assign productName = "College Real Rewards" >     
117                            <#break> 
118                        <#case "147"> 
119                            <#assign productURL = "max-cash-secured"> 
120                            <#assign productName = "Max Cash Secured Card" >     
121                            <#break> 
122                        <#case "154"> 
123                            <#assign productURL = "reserve-rewards-plus"> 
124                            <#assign productName = "Reserve Rewards+" > 
125                            <#break> 
126                        <#case "121"> 
127                            <#assign productURL = "business-platinum2103"> 
128                            <#assign productName = "Business Card" > 
129                            <#break> 
130                        <#case "128"> 
131                            <#assign productURL = "business-cash-preferred"> 
132                            <#assign productName = "Business Cash Preferred" > 
133                            <#break> 
134                        <#case "143"> 
135                            <#assign productURL = "business-real-rewards"> 
136                            <#assign productName = "Business Real Rewards Card" > 
137                            <#break> 
138                        <#case "144"> 
139                            <#assign productURL = "smart-business-rewards"> 
140                            <#assign productName = "Smart Business Rewards Card" >     
141                            <#break> 
142                        <#default>                                                         
143                    </#switch> 
144                    <#if productURL?has_content && url?matches(".*/${productURL}\\?.*")> 
145                            <#list product.getSiblings() as card> 
146                                <#if (card.offerType.getData() == fib.offerType)> 
147                                    <div class="content-container" title="${partnerName!''} - Disclaimer"> 
148                                        <div class="jn-disclaimer">                                              
149                                            <#if pbuList.getData()?has_content && pbuList.getData()?contains(pbu) && card.disclaimerAssociatedBank.getData()?has_content> 
150                                                <#if isEmployee && card.employeeDisclaimerAssociatedBank?has_content> 
151                                                    ${card.employeeDisclaimerAssociatedBank.getData()} 
152                                                <#else> 
153                                                    ${card.disclaimerAssociatedBank.getData()} 
154                                                </#if> 
155                                            <#else> 
156                                                <#if isEmployee && card.employeeDisclaimerVisa?has_content && cardProviderAbbreviated?contains('V')> 
157                                                    ${card.employeeDisclaimerVisa.getData()} 
158                                                <#elseif isEmployee && card.employeeDisclaimerMasterCard?has_content && cardProviderAbbreviated?contains('M')> 
159                                                    ${card.employeeDisclaimerMasterCard.getData()} 
160                                                <#elseif (card.disclaimerVisa?has_content && cardProviderAbbreviated?contains('V'))> 
161                                                    ${card.disclaimerVisa.getData()} 
162                                                <#elseif (card.disclaimerMasterCard?has_content && cardProviderAbbreviated?contains('M')) > 
163                                                    ${card.disclaimerMasterCard.getData()} 
164                                                </#if> 
165                                            </#if>                                          
166                                        </div> 
167                                    </div> 
168                                    <#break> 
169                                </#if> 
170                            </#list> 
171                        <#break> 
172                    </#if> 
173                </#list> 
174            <#else> 
175                <script> 
176                    console.log("Empty card data"); 
177                </script> 
178            </#if> 
179    <#else> 
180        <script> 
181            console.log("FI opt out"); 
182        </script> 
183    </#if> 
184 
185<#else> 
186    <script> 
187        console.log("No lc for disclaimer"); 
188    </script> 
189</#if> 
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> url404  [in template "10153#10191#5433717" at line 20, column 28]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: ${url404}  [in template "10153#10191#5433717" at line 20, column 26]
----
1<#assign url = themeDisplay.getURLCurrent() > 
2<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))> 
3<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! /> 
4<#assign aDateTime = .now> 
5<#assign currentYear = aDateTime?string.yyyy> 
6 
7<#if  qstringmap["bankercode"]?has_content> 
8    <#assign bCode= qstringmap["bankercode"]?first> 
9    <#assign bCode = htmlUtil.escape(bCode)> 
10    <#assign bCode = htmlUtil.escapeJS(bCode)> 
11     
12    <#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetailSql','0&'+bCode)> 
13    <#list bData as b> 
14      <#assign lc = b.reallocationcode > 
15    </#list> 
16     
17<#else> 
18    <script> 
19        console.log("MainProductBcode missing"); 
20        location.href = '${url404}'; 
21    </script> 
22</#if> 
23 
24<#assign prefix = "00000" > 
25<#assign lcWithPrefix = prefix + lc > 
26<#assign withPrefixLength = lcWithPrefix?length > 
27<#assign startHere = withPrefixLength - 5> 
28<#assign lc = lcWithPrefix?substring(startHere)> 
29<#if lc?has_content> 
30   <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! /> 
31   <#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
32   <#assign clientProfile = clientProfileList?first> 
33   <#assign pbu = clientProfile.getPbu()> 
34   <#assign subbu = clientProfile.getSUBBRANDBUNBR()> 
35   <#assign partnerName=clientProfile.getMarketingNameLong()> 
36   <#assign clientDataService = (serviceLocator.findService("com.elan.crc.user.service.CrcPbuLocalService"))! /> 
37   <#assign clientProfileDataList = clientDataService.getByPbuAndSubBu(pbu,subbu)> 
38   <#assign partnerUrl = clientProfileDataList.getPartnerMainUrl()> 
39   <script>//console.log('partnerUrl: ${partnerUrl}')</script> 
40   <#if partnerUrl?has_content && !partnerUrl?matches(r"(?i)^https?\:\/\/.*")> 
41        <#assign partnerUrl = 'https://' + partnerUrl> 
42        <script>console.log('Come to here by accident')</script> 
43    </#if> 
44</#if> 
45<script src="https://unpkg.com/micromodal/dist/micromodal.min.js"></script> 
46 
47<footer class="footer bg-color-black text-color-white"> 
48    ${footerContent.getData()} 
49</footer> 
50<!-- BEGIN CALIFORNIA OPT-OUT MODAL --> 
51 
52<style> 
53    #opt-out-button, 
54    .modal__btn.learn-more { 
55        background: #0C2074; 
56        border: 1px solid #0C2074; 
57        color: white; 
58        text-transform: uppercase; 
59        text-decoration: none; 
60        font-size: 16px; 
61        padding: 0.5rem 2rem; 
62        display: inline-block; 
63        border-radius: 0; 
64
65    #opt-out-button:hover, 
66    .modal__btn.learn-more:hover { 
67        color: white; 
68        border-color: #2C76AF !important; 
69        background-color: #2C76AF !important; 
70
71    .modal__btn.learn-more { 
72        background: white; 
73        border: 1px solid #0C2074; 
74        color: #0C2074; 
75
76    #opt-out-button[disabled="true"] { 
77        background-color: rgba(0,0,0,.15); 
78        color: rgba(0,0,0,.45); 
79        border-color: rgba(0,0,0,.25); 
80
81    #opt-out-button:hover[disabled="true"] { 
82        background-color: rgba(0,0,0,.15) !important; 
83        color: rgba(0,0,0,.45) !important; 
84        border-color: rgba(0,0,0,.25) !important; 
85
86    #opt-out-button:focus { 
87        outline-style: solid; 
88        outline-color: white; 
89        outline-offset: -3px; 
90        outline-width: 1px; 
91
92    .opt-out-link svg { 
93        width: 30px; 
94        height: 14px; 
95        width: auto; 
96        vertical-align: middle; 
97
98    .modal__overlay { 
99        position: fixed; 
100        top: 0; 
101        left: 0; 
102        right: 0; 
103        bottom: 0; 
104        background: rgba(0,0,0,0.6); 
105        display: flex; 
106        justify-content: center; 
107        align-items: center; 
108
109 
110    .modal__container { 
111        background-color: #fff; 
112        padding: 30px; 
113        max-width: 500px; 
114        max-height: 100vh; 
115        border-radius: 4px; 
116        overflow-y: auto; 
117        box-sizing: border-box; 
118
119 
120    .modal__header { 
121        display: flex; 
122        justify-content: space-between; 
123        align-items: center; 
124
125 
126    .modal__title { 
127        margin-top: 0; 
128        margin-bottom: 0; 
129        font-weight: 600; 
130        font-size: 20px; 
131        line-height: 1.25; 
132        color: #00449e; 
133        box-sizing: border-box; 
134
135 
136    .modal__close { 
137        background: transparent; 
138        border: 1px solid white; 
139        padding: 4px 8px; 
140
141    .modal__close:hover { 
142        border: 1px solid black; 
143
144 
145    .modal__header .modal__close:before { content: "\2715"; } 
146 
147    .modal__content { 
148        margin-top: 2rem; 
149        margin-bottom: 2rem; 
150        line-height: 1.5; 
151
152 
153    @keyframes mmfadeIn { 
154        from { opacity: 0; } 
155        to { opacity: 1; } 
156
157 
158    @keyframes mmfadeOut { 
159        from { opacity: 1; } 
160        to { opacity: 0; } 
161
162 
163    @keyframes mmslideIn { 
164        from { transform: translateY(15%); } 
165        to { transform: translateY(0); } 
166
167 
168    @keyframes mmslideOut { 
169        from { transform: translateY(0); } 
170        to { transform: translateY(-10%); } 
171
172 
173    .micromodal-slide { 
174        display: none; 
175
176 
177    .micromodal-slide.is-open { 
178        display: block; 
179
180 
181    .micromodal-slide[aria-hidden="false"] .modal__overlay { 
182        animation: mmfadeIn .3s cubic-bezier(0.0, 0.0, 0.2, 1); 
183
184 
185    .micromodal-slide[aria-hidden="false"] .modal__container { 
186        animation: mmslideIn .3s cubic-bezier(0, 0, .2, 1); 
187
188 
189    .micromodal-slide[aria-hidden="true"] .modal__overlay { 
190        animation: mmfadeOut .3s cubic-bezier(0.0, 0.0, 0.2, 1); 
191
192 
193    .micromodal-slide[aria-hidden="true"] .modal__container { 
194        animation: mmslideOut .3s cubic-bezier(0, 0, .2, 1); 
195
196 
197    .micromodal-slide .modal__container, 
198    .micromodal-slide .modal__overlay { 
199        will-change: transform; 
200
201</style> 
202 
203<div class="modal micromodal-slide" id="modal-1" aria-hidden="true"> 
204    <div class="modal__overlay" tabindex="-1" data-micromodal-close> 
205        <div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-1-title"> 
206            <header class="modal__header"> 
207                <h2 class="modal__title" id="modal-1-title"> 
208                Your California privacy choices 
209                </h2> 
210                <button class="modal__close" aria-label="Close modal" data-micromodal-close></button> 
211            </header> 
212            <div class="modal__content" id="modal-1-content"> 
213                <div id="message-no-cookie"> 
214                    <p> 
215                    We use technologies, such as cookies, that gather information on our website. That information is used for a variety of purposes, such as to understand how visitors interact with our websites, or to serve advertisements on our websites or on other websites. The use of technologies, such as cookies, constitutes a ‘share’ or ‘sale’ of personal information under the California Privacy Rights Act. You can stop the use of certain third-party tracking technologies that are not considered our service providers by clicking on “Opt-Out” below or by broadcasting the global privacy control signal.</p> 
216                     
217                    <p>&nbsp;</p> 
218 
219                    <p>Note that due to technological limitations, if you visit our website from a different computer or device, or clear cookies on your browser that store your preferences, you will need to return to this screen to opt-out and/or rebroadcast the signal. You can find a description of the types of tracking technologies, and your options with respect to those technologies, by clicking “Learn more” below.</p> 
220                </div> 
221                <div id="message-with-cookie"> 
222                    <p>You have successfully opted-out.</p> 
223                </div> 
224            </div> 
225            <div class="modal__footer"> 
226                <a href="https://www.myaccountaccess.com/onlineCard/publicPrivacyPolicy.do?phase=privacyPolicy" target="_blank" class="modal__btn learn-more" aria-label="Learn more">Learn More</a>                
227                <button id="opt-out-button" class="modal__btn modal__btn-primary" aria-label="Opt Out and Close modal" onclick="window.californiaOptOut()">Opt Out</button> 
228            </div> 
229        </div> 
230    </div> 
231</div> 
232<!-- END CALIFORNIA OPT-OUT MODAL --> 
233 
234<script> 
235    const copyrightNode = document.querySelector('.footer .copyright'); 
236    const fdicNode = document.querySelector('.footer .fdic'); 
237    const agreementNode = document.querySelector('.footer .member-agreement'); 
238    if(agreementNode) { 
239        agreementNode.innerHTML='<p><a class="text-color-white" href="https://online1.elancard.com/oad/cmas.controller?locationCode=${lc!0}&preparerType=customer&isNewRequest=false" target="_blank">Cardmember Agreements</a></p>'; 
240
241    if (copyrightNode) { 
242        copyrightNode.innerHTML = '<sup>©</sup> Elan Financial Services ' + ${currentYear}; 
243        copyrightNode.classList.add('ecdma-footer-client-name-copyright'); 
244
245    if (fdicNode) { 
246        fdicNode.innerHTML = '<p><a class="text-color-white" href="https://login.elancreditcard.com/onlineCard/publicPrivacyPolicy.do?phase=privacyPolicy" target="_blank">Privacy and Security</a></p>'; 
247        fdicNode.insertAdjacentHTML('afterend', '<div style="display: inline-block; margin-left: 100px;"><a class="text-color-white opt-out-link" href="javascript:void(0);" data-micromodal-trigger="modal-1">Your California privacy choices <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 14" xml:space="preserve"><path d="M7.4 12.8h6.8l3.1-11.6H7.4C4.2 1.2 1.6 3.8 1.6 7s2.6 5.8 5.8 5.8z" fill-rule="evenodd" clip-rule="evenodd" fill="#fff"/><path d="M22.6 0H7.4c-3.9 0-7 3.1-7 7s3.1 7 7 7h15.2c3.9 0 7-3.1 7-7s-3.2-7-7-7zm-21 7c0-3.2 2.6-5.8 5.8-5.8h9.9l-3.1 11.6H7.4c-3.2 0-5.8-2.6-5.8-5.8z" fill-rule="evenodd" clip-rule="evenodd" fill="#06f"/><path d="M24.6 4c.2.2.2.6 0 .8L22.5 7l2.2 2.2c.2.2.2.6 0 .8-.2.2-.6.2-.8 0l-2.2-2.2-2.2 2.2c-.2.2-.6.2-.8 0-.2-.2-.2-.6 0-.8L20.8 7l-2.2-2.2c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0l2.2 2.2L23.8 4c.2-.2.6-.2.8 0z" fill="#fff"/><path d="M12.7 4.1c.2.2.3.6.1.8L8.6 9.8c-.1.1-.2.2-.3.2-.2.1-.5.1-.7-.1L5.4 7.7c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0L8 8.6l3.8-4.5c.2-.2.6-.2.9 0z" fill="#06f"/></svg></a></div>'); 
248
249     
250</script> 
251<#if partnerUrl?has_content> 
252    <script> 
253        const homelinkNode = document.querySelector('.footer .copyright .homelink'); 
254        if (homelinkNode) { 
255            homelinkNode.href="${partnerUrl!''}"; 
256            homelinkNode.title="${partnerName!''}"; 
257            homelinkNode.innerText="Home"; 
258
259    </script> 
260</#if> 
261<!-- BEGIN CALIFORNIA OPT-OUT MODAL LOGIC --> 
262 
263<script> 
264    window.getCookieDomain = function() { 
265        var hostname = window.location.hostname.split("."); 
266        return hostname && hostname.slice(hostname.length - 2).join("."); 
267
268    window.setToOptOut = function() { 
269        if (window.getCookie('privacy_optout')) { 
270                document.getElementById('message-no-cookie').style.display = 'none'; 
271                document.getElementById('message-with-cookie').style.display = 'block'; 
272                document.getElementById('opt-out-button').setAttribute('disabled', true) 
273            } else { 
274                document.getElementById('message-no-cookie').style.display = 'block'; 
275                document.getElementById('message-with-cookie').style.display = 'none'; 
276
277
278    window.getCookie = function(name) { 
279        var value = '; ' + document.cookie; 
280        var parts = value.split('; ' + name + '='); 
281        if (parts.length === 2) return parts.pop().split(';').shift(); 
282
283    window.californiaOptOut = function() { 
284        if (!window.getCookie('privacy_optout')) { 
285            document.cookie = 'privacy_optout=1; path=/; domain=' + window.getCookieDomain() + '; expires=Thu, 31 Dec 2099 00:00:00 GMT;'; 
286            try { 
287             if (window.CustomEvent) { 
288                window.dispatchEvent(new CustomEvent('privacy_optout')); 
289             } else { 
290                var privacyOptoutEvent = document.createEvent('Event'); 
291                privacyOptoutEvent.initEvent('privacy_optout', true, true); 
292                window.dispatchEvent(privacyOptoutEvent); 
293
294             window.setToOptOut(); 
295            } catch (err) { 
296             console.error(err); 
297
298
299
300    MicroModal.init({ 
301        onShow: window.setToOptOut 
302    }); 
303    AUI().ready(function() { 
304        // user browser setting for Global Privacy Control to opt out of sharing information with third parties 
305        const isBrowserGpcOptOut = navigator.globalPrivacyControl; 
306        if(isBrowserGpcOptOut === true) { 
307        window.californiaOptOut(); 
308
309    }); 
310</script> 
311<!-- END CALIFORNIA OPT-OUT MODAL LOGIC -->