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

----
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: #assign fiData = utilServ.makeCall("c...  [in template "10154#10192#18372589" at line 14, column 1]
----
1<#assign uniqueID = randomNamespace /> 
2<#assign url = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()> 
3<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))> 
4<#assign environment = url?replace('/11t2/index.*','','r')> 
5<#assign projectIds = ["12", "13", "14", "15", "16"]> 
6<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! > 
7 
8<#if qstringmap["bankercode"]?has_content> 
9	<#assign bCode= qstringmap["bankercode"]?first> 
10	<#assign bCode = htmlUtil.escape(bCode)> 
11	<#assign bCode = htmlUtil.escapeJS(bCode)> 
12</#if> 
13 
14<#assign fiData= utilServ.makeCall('crcDDCBankerAssistedAppSql','0&'+bCode)> 
15<#if fiData?first?has_content> 
16    <#assign fi = fiData?first> 
17    <#if projectIds?seq_index_of(fi.projectId) != -1> 
18        <#assign subbu_special = fi.offerId> 
19    </#if> 
20</#if> 
21 
22 
23<#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetailSql','0&'+bCode)> 
24<#list bData as b>      
25    <#assign lc = b.locationcode > 
26    <#assign rLC = b.reallocationcode > 
27    <#assign mappedLC = b.mappedLocationCode >    
28</#list> 
29 
30<#if mappedLC?has_content> 
31    <#assign lc = mappedLC > 
32</#if> 
33 
34<#if lc?has_content> 
35	<#assign prefix = "00000" > 
36	<#assign lcWithPrefix = prefix + lc > 
37	<#assign withPrefixLength = lcWithPrefix?length > 
38	<#assign startHere = withPrefixLength - 5> 
39	<#assign lc = lcWithPrefix?substring(startHere)> 
40</#if> 
41 
42<#if qstringmap["ecid"]?has_content> 
43    <#assign ecidExt = qstringmap["ecid"]?first> 
44    <#assign ecidExt = htmlUtil.escape(ecidExt)> 
45    <#assign ecidExt = htmlUtil.escapeJS(ecidExt)> 
46    <#assign ecidExt = "&ecid=" + ecidExt> 
47<#else> 
48    <#assign ecidExt=""> 
49</#if> 
50 
51 
52<#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! > 
53<#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
54<#assign clientProfile = clientProfileList?first> 
55<#assign pbu = clientProfile.getPbu()> 
56<#assign subbu = clientProfile.getSUBBRANDBUNBR()> 
57<#assign cdnCardArtUrl = (propsUtil.get('rackspace.cdn.cardart.url'))!> 
58<#assign partnerName = clientProfile.getMarketingNameLong()> 
59 
60<#if (subbu_special?has_content)> 
61	<#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuDataByFeaturedCard','0&' + pbu + '&' + subbu_special)>  
62<#else> 
63	<#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuDataByFeaturedCard','0&' + pbu + '&' + subbu)> 
64</#if> 
65 
66<#assign personalBusinessOfferTypes = utilServ.makeCall('SAA_DistinctCardOffers', '0')> 
67 
68<#assign personalOfferTypes = []> 
69<#assign businessOfferTypes = []> 
70 
71<#list personalBusinessOfferTypes as pbOfferType> 
72    <#if pbOfferType.groupname?has_content && pbOfferType.offertype?has_content> 
73        <#if pbOfferType.groupname == "Personal"> 
74            <#assign personalOfferTypes += [pbOfferType.offertype]> 
75        <#elseif pbOfferType.groupname == "Business"> 
76            <#assign businessOfferTypes += [pbOfferType.offertype]> 
77        </#if> 
78    </#if> 
79</#list> 
80 
81 
82<#assign productTypeValue = ""> 
83<#if productType.getData()?has_content> 
84    <#assign productKey = productType.getData()> 
85	<#assign productTypeValue = productType.optionsMap[productKey]> 
86	   
87</#if> 
88 
89<#assign personalCards = []> 
90<#assign businessCards = []>  
91<#assign finalList = []>  
92<#assign index = 0> 
93 
94<#list fiCardsData as fib> 	 
95    <#if (fib.offerType?has_content)> 
96        <#if (personalOfferTypes?seq_contains(fib.offerType))> 
97            <#assign personalCards = personalCards + fiCardsData[index..index]> 
98        <#elseif (businessOfferTypes?seq_contains(fib.offerType))> 
99            <#assign businessCards = businessCards + fiCardsData[index..index]> 
100        </#if>                            
101    </#if>   
102    <#assign index = index + 1>               
103</#list>  
104 
105 
106<#if productTypeValue == "Personal"> 
107	<#list personalCards as personalCard> 
108		<#if product.getSiblings()?has_content> 
109			<#list product.getSiblings() as productItem> 
110				<#if personalCard.offerType == productItem.productOfferType.getData()> 
111				   <#assign finalList = finalList + [personalCard]> 
112				</#if> 
113			</#list> 
114		</#if>   
115	 </#list> 
116<#elseif productTypeValue == "Business"> 
117	<#list businessCards as businessCard> 
118		 <#if product.getSiblings()?has_content> 
119			<#list product.getSiblings() as productItem> 
120				<#if businessCard.offerType == productItem.productOfferType.getData()> 
121				   <#assign finalList = finalList + [businessCard]> 
122				</#if> 
123			</#list> 
124		</#if>  
125	 </#list> 
126</#if> 
127 
128<#macro renderCards finalListMacro> 
129    <#assign count = 0>   
130    <#list finalListMacro as result> 
131        <#if count < 3>   
132            <#if product.getSiblings()?has_content> 
133                <#list product.getSiblings() as productItem> 
134                    <#if result.offerType == productItem.productOfferType.getData()> 
135                         
136                        <#assign productOfferTypeValue = product.productOfferType.optionsMap[productItem.productOfferType.getData()]> 
137                        <#assign productOfferType = productOfferTypeValue?substring(productOfferTypeValue?index_of(" - ") + 3)!''> 
138 
139                        <div class="card"> 
140                            <div class="card__content"> 
141                                 
142                                <div class="card__content-left"> 
143                                    <#assign cardArtImage = cdnCardArtUrl + "/" + result.filename + ".png" > 
144                                    <#assign cardArtImageAlt = cdnCardArtUrl + "/" + result.filename + ".jpg" > 
145                                    <#assign cardArtImageAltText = partnerName + " " + productOfferType> 
146                                    <img class="card__image" src="${cardArtImage!''}" alt="${cardArtImageAltText}" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'"> 
147                                     
148                                    <#if (productItem.learnMoreURL.getData())??> 
149                                            <a class="card__learn-more" href="${environment}${productItem.learnMoreURL.getData()!''}?bankercode=${bCode}&ecdma-lc=${lc}${ecidExt}"  rel="noopener noreferrer"> 
150                                                Learn More <span class="sr-only">about ${productOfferType?upper_case!}</span> 
151                                            </a> 
152                                    </#if> 
153 
154                                </div> 
155                                 
156                             
157                                <div class="card__content-right"> 
158                                    <h3 class="product-offer-type"> 
159                                        ${productOfferType?upper_case!} 
160                                         
161                                        <#if (productItem.cardNameFootnotes.getData())??> 
162                                            <sup>${productItem.cardNameFootnotes.getData()}</sup> 
163                                        </#if> 
164                                    </h3> 
165                                     
166                                    <#if (productItem.offerCopy.getData())??> 
167                                        <div class="offer-copy"> 
168                                            ${productItem.offerCopy.getData()} 
169                                        </div> 
170                                    </#if>                                        
171                                     
172                                </div> 
173                            </div> 
174                        </div> 
175                         
176                    </#if> 
177                </#list> 
178            </#if> 
179            <#assign count = count + 1> 
180        </#if> 
181    </#list> 
182</#macro> 
183 
184<#if (finalList?? && finalList?has_content && finalList?size > 1)> 
185    <#assign count = 0> 
186    <#assign countGlider = 0> 
187    <div class="${productTypeValue}-featured-cards saa-featured-cards-2024 <#if productTypeValue == 'Business'>hide</#if>" id="${uniqueID}"> 
188        <h2 id="featured-glider-label" class="super-head">FEATURED CREDIT CARD OFFERS</h2> 
189        <div class="card-container"> 
190            <@renderCards finalListMacro=finalList /> 
191        </div> 
192        <div class="featured-glider-container" aria-roledescription="carousel" aria-labelledby="featured-glider-label"> 
193            <div id="featured-glider-slides" class="featured-glider">    
194                <@renderCards finalListMacro=finalList /> 
195            </div> 
196            <button aria-label="Previous slide" class="glider-prev" aria-controls="featured-glider-slides"></button> 
197            <button aria-label="Next slide" class="glider-next" aria-controls="featured-glider-slides"></button> 
198            <div role="tablist" class="dots"></div> 
199        </div> 
200    </div> 
201</#if> 
202<style> 
203    #content .saa-featured-cards-2024 { 
204        max-width: 1336px; 
205        padding: 0 20px; 
206        margin: 0 auto; 
207
208    @media (min-width: 1376px) { 
209        #content .saa-featured-cards-2024 { 
210            margin-top: 30px; 
211
212
213    #content .saa-featured-cards-2024 .featured-glider-container { 
214        display: block !important; 
215        position: relative; 
216        margin-bottom: 20px; 
217
218    #content .saa-featured-cards-2024 .featured-glider-container .card { 
219        flex: 375px; 
220
221    @media (min-width: 1200px) { 
222        #content .saa-featured-cards-2024 .featured-glider-container { 
223            display: none !important; 
224
225
226    #content .saa-featured-cards-2024 .featured-glider { 
227        padding-top: 40px; 
228        margin-bottom: 15px; 
229        overflow-x: hidden; 
230
231    #content .saa-featured-cards-2024 .card-container { 
232        display: flex; 
233        gap: 30px; 
234        flex-wrap: nowrap; 
235        justify-content: space-between; 
236        margin-top: 40px; 
237        margin-bottom: 60px; 
238        display: none !important; 
239        justify-content: center; 
240
241    @media (min-width: 1200px) { 
242        #content .saa-featured-cards-2024 .card-container { 
243            display: flex !important; 
244
245
246    #content .saa-featured-cards-2024 .card { 
247        background-color: var(--ecdma-bg-color); 
248        border-radius: 10px; 
249        padding: 0 20px 15px 20px; 
250        margin: 0 20px; 
251        flex: 33%; 
252        flex-grow: 0; 
253        visibility: unset !important; 
254
255    @media (min-width: 1200px) { 
256        #content .saa-featured-cards-2024 .card { 
257            margin: 0; 
258
259
260    #content .saa-featured-cards-2024 .card__content { 
261        display: flex; 
262        height: 100%; 
263
264    #content .saa-featured-cards-2024 .card__content-left { 
265        display: flex; 
266        flex-direction: column; 
267        margin-right: 20px; 
268        justify-content: space-between; 
269        height: 100%; 
270
271    #content .saa-featured-cards-2024 .card__content-right { 
272        flex: 1; 
273        margin-top: 20px; 
274
275     #content .saa-featured-cards-2024 .card__image { 
276        border-radius: 12px; 
277        width: 100%; 
278        height: auto; 
279        border-radius: 8px; 
280        max-width: 112px !important; 
281        max-height: 112px; 
282        margin-top: -10px; 
283        object-fit: contain; 
284
285    #content .saa-featured-cards-2024 .card__image--vertical { 
286        margin-top: -20px; 
287
288    #content .saa-featured-cards-2024 .product-offer-type { 
289        margin-bottom: 6px; 
290        color: white; 
291        letter-spacing: 1px; 
292        font-size: 13px; 
293        font-weight: 400; 
294        line-height: 1.5; 
295
296    #content .saa-featured-cards-2024 .product-offer-type sup { 
297        font-size: 10px; 
298        line-height: 13px; 
299
300    #content .saa-featured-cards-2024 .offer-copy { 
301        color: white; 
302
303    #content .saa-featured-cards-2024 .card__learn-more { 
304        background-color: #fff; 
305        border: 1px solid white; 
306        color: var(--ecdma-text-color); 
307        font-size: 13px; 
308        cursor: pointer; 
309        text-decoration: none; 
310        text-align: center; 
311        text-transform: capitalize; 
312        line-height: 15px; 
313        margin-top: 5px; 
314        min-width: 112px; 
315        height: 35px; 
316        line-height: 35px; 
317
318    #content .saa-featured-cards-2024 .card__learn-more:hover { 
319        background-color: var(--ecdma-hover-color); 
320        color: #fff; 
321
322    #content .saa-featured-cards-2024 .card__learn-more:focus { 
323        outline: 1px solid white; 
324        outline-offset: 3px; 
325
326</style> 
327<script> 
328/* This template is added to a single page multiple times. iife keeps glider/vars from overriding each other */ 
329(() => { 
330    let featuredGlider = null; 
331    if(document.querySelector('#${uniqueID}.saa-featured-cards-2024 .featured-glider')) { 
332        featuredGlider = new Glider(document.querySelector('#${uniqueID}.saa-featured-cards-2024 .featured-glider'), { 
333            slidesToShow: 'auto', 
334            itemWidth: 375, 
335            slidesToScroll: 1, 
336            scrollLockDelay: 100, 
337            draggable: true, 
338            scrollLock: true, 
339            arrows: { 
340                prev: '#${uniqueID}.saa-featured-cards-2024 .glider-prev', 
341                next: '#${uniqueID}.saa-featured-cards-2024 .glider-next' 
342            }, 
343            dots: '#${uniqueID}.saa-featured-cards-2024 .dots', 
344        });  
345
346    const images = document.querySelectorAll('#${uniqueID}.saa-featured-cards-2024 .card__image'); 
347        images.forEach(img => { 
348            const width = img.naturalWidth; 
349            const height = img.naturalHeight;   
350            if(height > width) { 
351                img.classList.add('card__image--vertical'); 
352
353        });   
354 
355    AUI().ready(() => { 
356        /* Make the slider the correct size after the theme and everything is loaded*/ 
357        if(document.querySelector('#${uniqueID}.saa-featured-cards-2024 .featured-glider')){ 
358            featuredGlider.refresh(false); 
359
360 
361        const productTypeValue = '${productTypeValue}'; 
362        const thisTabSelector =  productTypeValue === "Personal"? '#tab-Personal' : '#tab-Business'; 
363        /* If the resize the screen and one of the featured card glider is hidden. The hidden glider dose not resize. On show of glider resize it. */ 
364        document.querySelectorAll(thisTabSelector).forEach(tab => { 
365            tab.onclick = () => { 
366                setTimeout(() => {featuredGlider.refresh(false);}, 0); 
367            }; 
368        });   
369    }) 
370})(); 
371</script> 
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> bCode  [in template "10154#10192#18372589" at line 14, column 70]

----
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: #assign fiData = utilServ.makeCall("c...  [in template "10154#10192#18372589" at line 14, column 1]
----
1<#assign uniqueID = randomNamespace /> 
2<#assign url = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()> 
3<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))> 
4<#assign environment = url?replace('/11t2/index.*','','r')> 
5<#assign projectIds = ["12", "13", "14", "15", "16"]> 
6<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! > 
7 
8<#if qstringmap["bankercode"]?has_content> 
9	<#assign bCode= qstringmap["bankercode"]?first> 
10	<#assign bCode = htmlUtil.escape(bCode)> 
11	<#assign bCode = htmlUtil.escapeJS(bCode)> 
12</#if> 
13 
14<#assign fiData= utilServ.makeCall('crcDDCBankerAssistedAppSql','0&'+bCode)> 
15<#if fiData?first?has_content> 
16    <#assign fi = fiData?first> 
17    <#if projectIds?seq_index_of(fi.projectId) != -1> 
18        <#assign subbu_special = fi.offerId> 
19    </#if> 
20</#if> 
21 
22 
23<#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetailSql','0&'+bCode)> 
24<#list bData as b>      
25    <#assign lc = b.locationcode > 
26    <#assign rLC = b.reallocationcode > 
27    <#assign mappedLC = b.mappedLocationCode >    
28</#list> 
29 
30<#if mappedLC?has_content> 
31    <#assign lc = mappedLC > 
32</#if> 
33 
34<#if lc?has_content> 
35	<#assign prefix = "00000" > 
36	<#assign lcWithPrefix = prefix + lc > 
37	<#assign withPrefixLength = lcWithPrefix?length > 
38	<#assign startHere = withPrefixLength - 5> 
39	<#assign lc = lcWithPrefix?substring(startHere)> 
40</#if> 
41 
42<#if qstringmap["ecid"]?has_content> 
43    <#assign ecidExt = qstringmap["ecid"]?first> 
44    <#assign ecidExt = htmlUtil.escape(ecidExt)> 
45    <#assign ecidExt = htmlUtil.escapeJS(ecidExt)> 
46    <#assign ecidExt = "&ecid=" + ecidExt> 
47<#else> 
48    <#assign ecidExt=""> 
49</#if> 
50 
51 
52<#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! > 
53<#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
54<#assign clientProfile = clientProfileList?first> 
55<#assign pbu = clientProfile.getPbu()> 
56<#assign subbu = clientProfile.getSUBBRANDBUNBR()> 
57<#assign cdnCardArtUrl = (propsUtil.get('rackspace.cdn.cardart.url'))!> 
58<#assign partnerName = clientProfile.getMarketingNameLong()> 
59 
60<#if (subbu_special?has_content)> 
61	<#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuDataByFeaturedCard','0&' + pbu + '&' + subbu_special)>  
62<#else> 
63	<#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuDataByFeaturedCard','0&' + pbu + '&' + subbu)> 
64</#if> 
65 
66<#assign personalBusinessOfferTypes = utilServ.makeCall('SAA_DistinctCardOffers', '0')> 
67 
68<#assign personalOfferTypes = []> 
69<#assign businessOfferTypes = []> 
70 
71<#list personalBusinessOfferTypes as pbOfferType> 
72    <#if pbOfferType.groupname?has_content && pbOfferType.offertype?has_content> 
73        <#if pbOfferType.groupname == "Personal"> 
74            <#assign personalOfferTypes += [pbOfferType.offertype]> 
75        <#elseif pbOfferType.groupname == "Business"> 
76            <#assign businessOfferTypes += [pbOfferType.offertype]> 
77        </#if> 
78    </#if> 
79</#list> 
80 
81 
82<#assign productTypeValue = ""> 
83<#if productType.getData()?has_content> 
84    <#assign productKey = productType.getData()> 
85	<#assign productTypeValue = productType.optionsMap[productKey]> 
86	   
87</#if> 
88 
89<#assign personalCards = []> 
90<#assign businessCards = []>  
91<#assign finalList = []>  
92<#assign index = 0> 
93 
94<#list fiCardsData as fib> 	 
95    <#if (fib.offerType?has_content)> 
96        <#if (personalOfferTypes?seq_contains(fib.offerType))> 
97            <#assign personalCards = personalCards + fiCardsData[index..index]> 
98        <#elseif (businessOfferTypes?seq_contains(fib.offerType))> 
99            <#assign businessCards = businessCards + fiCardsData[index..index]> 
100        </#if>                            
101    </#if>   
102    <#assign index = index + 1>               
103</#list>  
104 
105 
106<#if productTypeValue == "Personal"> 
107	<#list personalCards as personalCard> 
108		<#if product.getSiblings()?has_content> 
109			<#list product.getSiblings() as productItem> 
110				<#if personalCard.offerType == productItem.productOfferType.getData()> 
111				   <#assign finalList = finalList + [personalCard]> 
112				</#if> 
113			</#list> 
114		</#if>   
115	 </#list> 
116<#elseif productTypeValue == "Business"> 
117	<#list businessCards as businessCard> 
118		 <#if product.getSiblings()?has_content> 
119			<#list product.getSiblings() as productItem> 
120				<#if businessCard.offerType == productItem.productOfferType.getData()> 
121				   <#assign finalList = finalList + [businessCard]> 
122				</#if> 
123			</#list> 
124		</#if>  
125	 </#list> 
126</#if> 
127 
128<#macro renderCards finalListMacro> 
129    <#assign count = 0>   
130    <#list finalListMacro as result> 
131        <#if count < 3>   
132            <#if product.getSiblings()?has_content> 
133                <#list product.getSiblings() as productItem> 
134                    <#if result.offerType == productItem.productOfferType.getData()> 
135                         
136                        <#assign productOfferTypeValue = product.productOfferType.optionsMap[productItem.productOfferType.getData()]> 
137                        <#assign productOfferType = productOfferTypeValue?substring(productOfferTypeValue?index_of(" - ") + 3)!''> 
138 
139                        <div class="card"> 
140                            <div class="card__content"> 
141                                 
142                                <div class="card__content-left"> 
143                                    <#assign cardArtImage = cdnCardArtUrl + "/" + result.filename + ".png" > 
144                                    <#assign cardArtImageAlt = cdnCardArtUrl + "/" + result.filename + ".jpg" > 
145                                    <#assign cardArtImageAltText = partnerName + " " + productOfferType> 
146                                    <img class="card__image" src="${cardArtImage!''}" alt="${cardArtImageAltText}" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'"> 
147                                     
148                                    <#if (productItem.learnMoreURL.getData())??> 
149                                            <a class="card__learn-more" href="${environment}${productItem.learnMoreURL.getData()!''}?bankercode=${bCode}&ecdma-lc=${lc}${ecidExt}"  rel="noopener noreferrer"> 
150                                                Learn More <span class="sr-only">about ${productOfferType?upper_case!}</span> 
151                                            </a> 
152                                    </#if> 
153 
154                                </div> 
155                                 
156                             
157                                <div class="card__content-right"> 
158                                    <h3 class="product-offer-type"> 
159                                        ${productOfferType?upper_case!} 
160                                         
161                                        <#if (productItem.cardNameFootnotes.getData())??> 
162                                            <sup>${productItem.cardNameFootnotes.getData()}</sup> 
163                                        </#if> 
164                                    </h3> 
165                                     
166                                    <#if (productItem.offerCopy.getData())??> 
167                                        <div class="offer-copy"> 
168                                            ${productItem.offerCopy.getData()} 
169                                        </div> 
170                                    </#if>                                        
171                                     
172                                </div> 
173                            </div> 
174                        </div> 
175                         
176                    </#if> 
177                </#list> 
178            </#if> 
179            <#assign count = count + 1> 
180        </#if> 
181    </#list> 
182</#macro> 
183 
184<#if (finalList?? && finalList?has_content && finalList?size > 1)> 
185    <#assign count = 0> 
186    <#assign countGlider = 0> 
187    <div class="${productTypeValue}-featured-cards saa-featured-cards-2024 <#if productTypeValue == 'Business'>hide</#if>" id="${uniqueID}"> 
188        <h2 id="featured-glider-label" class="super-head">FEATURED CREDIT CARD OFFERS</h2> 
189        <div class="card-container"> 
190            <@renderCards finalListMacro=finalList /> 
191        </div> 
192        <div class="featured-glider-container" aria-roledescription="carousel" aria-labelledby="featured-glider-label"> 
193            <div id="featured-glider-slides" class="featured-glider">    
194                <@renderCards finalListMacro=finalList /> 
195            </div> 
196            <button aria-label="Previous slide" class="glider-prev" aria-controls="featured-glider-slides"></button> 
197            <button aria-label="Next slide" class="glider-next" aria-controls="featured-glider-slides"></button> 
198            <div role="tablist" class="dots"></div> 
199        </div> 
200    </div> 
201</#if> 
202<style> 
203    #content .saa-featured-cards-2024 { 
204        max-width: 1336px; 
205        padding: 0 20px; 
206        margin: 0 auto; 
207
208    @media (min-width: 1376px) { 
209        #content .saa-featured-cards-2024 { 
210            margin-top: 30px; 
211
212
213    #content .saa-featured-cards-2024 .featured-glider-container { 
214        display: block !important; 
215        position: relative; 
216        margin-bottom: 20px; 
217
218    #content .saa-featured-cards-2024 .featured-glider-container .card { 
219        flex: 375px; 
220
221    @media (min-width: 1200px) { 
222        #content .saa-featured-cards-2024 .featured-glider-container { 
223            display: none !important; 
224
225
226    #content .saa-featured-cards-2024 .featured-glider { 
227        padding-top: 40px; 
228        margin-bottom: 15px; 
229        overflow-x: hidden; 
230
231    #content .saa-featured-cards-2024 .card-container { 
232        display: flex; 
233        gap: 30px; 
234        flex-wrap: nowrap; 
235        justify-content: space-between; 
236        margin-top: 40px; 
237        margin-bottom: 60px; 
238        display: none !important; 
239        justify-content: center; 
240
241    @media (min-width: 1200px) { 
242        #content .saa-featured-cards-2024 .card-container { 
243            display: flex !important; 
244
245
246    #content .saa-featured-cards-2024 .card { 
247        background-color: var(--ecdma-bg-color); 
248        border-radius: 10px; 
249        padding: 0 20px 15px 20px; 
250        margin: 0 20px; 
251        flex: 33%; 
252        flex-grow: 0; 
253        visibility: unset !important; 
254
255    @media (min-width: 1200px) { 
256        #content .saa-featured-cards-2024 .card { 
257            margin: 0; 
258
259
260    #content .saa-featured-cards-2024 .card__content { 
261        display: flex; 
262        height: 100%; 
263
264    #content .saa-featured-cards-2024 .card__content-left { 
265        display: flex; 
266        flex-direction: column; 
267        margin-right: 20px; 
268        justify-content: space-between; 
269        height: 100%; 
270
271    #content .saa-featured-cards-2024 .card__content-right { 
272        flex: 1; 
273        margin-top: 20px; 
274
275     #content .saa-featured-cards-2024 .card__image { 
276        border-radius: 12px; 
277        width: 100%; 
278        height: auto; 
279        border-radius: 8px; 
280        max-width: 112px !important; 
281        max-height: 112px; 
282        margin-top: -10px; 
283        object-fit: contain; 
284
285    #content .saa-featured-cards-2024 .card__image--vertical { 
286        margin-top: -20px; 
287
288    #content .saa-featured-cards-2024 .product-offer-type { 
289        margin-bottom: 6px; 
290        color: white; 
291        letter-spacing: 1px; 
292        font-size: 13px; 
293        font-weight: 400; 
294        line-height: 1.5; 
295
296    #content .saa-featured-cards-2024 .product-offer-type sup { 
297        font-size: 10px; 
298        line-height: 13px; 
299
300    #content .saa-featured-cards-2024 .offer-copy { 
301        color: white; 
302
303    #content .saa-featured-cards-2024 .card__learn-more { 
304        background-color: #fff; 
305        border: 1px solid white; 
306        color: var(--ecdma-text-color); 
307        font-size: 13px; 
308        cursor: pointer; 
309        text-decoration: none; 
310        text-align: center; 
311        text-transform: capitalize; 
312        line-height: 15px; 
313        margin-top: 5px; 
314        min-width: 112px; 
315        height: 35px; 
316        line-height: 35px; 
317
318    #content .saa-featured-cards-2024 .card__learn-more:hover { 
319        background-color: var(--ecdma-hover-color); 
320        color: #fff; 
321
322    #content .saa-featured-cards-2024 .card__learn-more:focus { 
323        outline: 1px solid white; 
324        outline-offset: 3px; 
325
326</style> 
327<script> 
328/* This template is added to a single page multiple times. iife keeps glider/vars from overriding each other */ 
329(() => { 
330    let featuredGlider = null; 
331    if(document.querySelector('#${uniqueID}.saa-featured-cards-2024 .featured-glider')) { 
332        featuredGlider = new Glider(document.querySelector('#${uniqueID}.saa-featured-cards-2024 .featured-glider'), { 
333            slidesToShow: 'auto', 
334            itemWidth: 375, 
335            slidesToScroll: 1, 
336            scrollLockDelay: 100, 
337            draggable: true, 
338            scrollLock: true, 
339            arrows: { 
340                prev: '#${uniqueID}.saa-featured-cards-2024 .glider-prev', 
341                next: '#${uniqueID}.saa-featured-cards-2024 .glider-next' 
342            }, 
343            dots: '#${uniqueID}.saa-featured-cards-2024 .dots', 
344        });  
345
346    const images = document.querySelectorAll('#${uniqueID}.saa-featured-cards-2024 .card__image'); 
347        images.forEach(img => { 
348            const width = img.naturalWidth; 
349            const height = img.naturalHeight;   
350            if(height > width) { 
351                img.classList.add('card__image--vertical'); 
352
353        });   
354 
355    AUI().ready(() => { 
356        /* Make the slider the correct size after the theme and everything is loaded*/ 
357        if(document.querySelector('#${uniqueID}.saa-featured-cards-2024 .featured-glider')){ 
358            featuredGlider.refresh(false); 
359
360 
361        const productTypeValue = '${productTypeValue}'; 
362        const thisTabSelector =  productTypeValue === "Personal"? '#tab-Personal' : '#tab-Business'; 
363        /* If the resize the screen and one of the featured card glider is hidden. The hidden glider dose not resize. On show of glider resize it. */ 
364        document.querySelectorAll(thisTabSelector).forEach(tab => { 
365            tab.onclick = () => { 
366                setTimeout(() => {featuredGlider.refresh(false);}, 0); 
367            }; 
368        });   
369    }) 
370})(); 
371</script> 
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> lc  [in template "10154#10192#460248067" at line 38, column 34]

----
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: #assign lcWithPrefix = prefix + lc  [in template "10154#10192#460248067" at line 38, column 1]
----
1<#assign url = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()> 
2<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))> 
3<#assign projectIds = ["12", "13", "14", "15", "16"]> 
4<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! > 
5 
6<#if qstringmap["bankercode"]?has_content> 
7    <#assign bCode= qstringmap["bankercode"]?first> 
8    <#assign bCode= htmlUtil.escapeJS(bCode)> 
9    <#assign bCode= htmlUtil.escape(bCode)> 
10	<#assign isEmployee = false> 
11	 
12    <#assign fiData= utilServ.makeCall('crcDDCBankerAssistedAppSql','0&'+bCode)> 
13    <#if fiData?first?has_content> 
14        <#assign fi = fiData?first> 
15        <#if projectIds?seq_index_of(fi.projectId) != -1> 
16            <#assign subbu_special = fi.offerId> 
17        </#if> 
18 
19		<#if fi.projectType == "emp"> 
20            <#assign isEmployee = true> 
21        </#if> 
22    </#if> 
23	 
24	<#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetailSql','0&'+bCode)> 
25    <#list bData as b>      
26        <#assign lc = b.locationcode > 
27        <#assign bName = b.branch > 
28        <#assign bPhone = b.businessphone > 
29        <#assign boeid = b.oeid?trim> 
30        <#assign fName = b.firstname?trim> 
31        <#assign lName = b.lastname?trim> 
32        <#assign rLC = b.reallocationcode > 
33        <#assign mappedLC = b.mappedLocationCode > 
34    </#list>  
35</#if> 
36 
37<#assign prefix = "00000" > 
38<#assign lcWithPrefix = prefix + lc > 
39<#assign withPrefixLength = lcWithPrefix?length > 
40<#assign startHere = withPrefixLength - 5> 
41<#assign lc = lcWithPrefix?substring(startHere)> 
42 
43 
44<#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! > 
45<#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
46<#assign clientProfile = clientProfileList?first> 
47<#assign pbu = clientProfile.getPbu()> 
48<#assign subbu = clientProfile.getSUBBRANDBUNBR()> 
49 
50<#if (subbu_special?has_content)> 
51	<#assign fiCardsDataWT = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu_special)>  
52<#else> 
53	<#assign fiCardsDataWT = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu)>  
54</#if> 
55 
56<#assign personalBusinessWT = utilServ.makeCall('SAA_PillGrouping', '0')> 
57<#assign personalWT = []> 
58<#assign businessWT = []> 
59 
60<#list personalBusinessWT as pbWT> 
61    <#if pbWT.groupName?has_content && pbWT.offerType?has_content && pbWT.pillName?has_content>		<#if pbWT.groupName == "Personal"> 
62            <#assign personalWT += [pbWT]> 
63			 
64        <#elseif pbWT.groupName == "Business"> 
65            <#assign businessWT += [pbWT]> 
66			 
67        </#if> 
68    </#if> 
69</#list> 
70 
71 
72<#assign fiPersonalRaw = personalWT?filter(personalPill -> fiCardsDataWT?filter(fib -> personalPill.offerType == fib.offerType)?size > 0)> 
73<#assign fiBusinessRaw = businessWT?filter(businessPill -> fiCardsDataWT?filter(fib -> businessPill.offerType == fib.offerType)?size > 0)> 
74 
75<#assign fiPersonalWT = []> 
76<#list fiPersonalRaw as item> 
77    <#if !(fiPersonalWT?map(it -> it.offerType)?seq_contains(item.offerType))> 
78        <#assign fiPersonalWT += [item]> 
79    </#if> 
80</#list> 
81 
82<#assign fiBusinessWT = []> 
83<#list fiBusinessRaw as item> 
84    <#if !(fiBusinessWT?map(it -> it.offerType)?seq_contains(item.offerType))> 
85        <#assign fiBusinessWT += [item]> 
86    </#if> 
87</#list> 
88 
89<#assign fiPersonalSizeWT = fiPersonalWT?size /> 
90<#assign fiBusinessSizeWT = fiBusinessWT?size /> 
91 
92<#assign hasTabs = entries?has_content> 
93<#assign PersonalTab = "Personal"> 
94<#assign BusinessTab = "Business"> 
95 
96<#if hasTabs> 
97    <div class="saa-tabs-2024-feature"> 
98	<#if (fiPersonalSizeWT > 0 && fiBusinessSizeWT > 0 && !isEmployee) > 
99		<div role="tablist" class="card-type-tabs" aria-label="Choose a credit card type to explore details"> 
100			 
101				<button  
102					id="tab-Personal"  
103					role="tab"  
104					class="card-type-tabs__button"  
105					aria-selected="true"  
106					aria-controls="content-Personal"  
107					data-tab="content-Personal"> 
108					${PersonalTab} 
109				</button> 
110			 
111				<button  
112					id="tab-Business"  
113					role="tab"  
114					class="card-type-tabs__button"  
115					aria-selected="false"  
116					aria-controls="content-Business"  
117					data-tab="content-Business"> 
118					${BusinessTab} 
119				</button> 
120		 
121		</div> 
122	</#if> 
123		<div class="all-card-types-content"> 
124			<#if (fiPersonalSizeWT > 0)> 
125				<div  
126					id="content-Personal"  
127					class="card-type-content"  
128					role="tabpanel"  
129					aria-labelledby="tab-Personal"  
130					style="display: block;"> 
131					 
132					<#list entries as entry> 
133						<#if entry_index == 0>  
134							<#assign assetRenderer = entry.getAssetRenderer() /> 
135							<@liferay_journal["journal-article"] 
136								articleId=assetRenderer.getAssetObject().articleId 
137								ddmTemplateKey=assetRenderer.getAssetObject().ddmTemplateKey 
138								groupId=assetRenderer.getAssetObject().groupId /> 
139						</#if> 
140					</#list> 
141				</div> 
142			</#if> 
143			<#if (fiBusinessSizeWT > 0 && !isEmployee)> 
144				<div  
145					id="content-Business"  
146					class="card-type-content"  
147					role="tabpanel"  
148					aria-labelledby="tab-Business"  
149					style="display: none;"> 
150					 
151					<#list entries as entry> 
152						<#if entry_index == 1>  
153							<#assign assetRenderer = entry.getAssetRenderer() /> 
154							<@liferay_journal["journal-article"] 
155								articleId=assetRenderer.getAssetObject().articleId 
156								ddmTemplateKey=assetRenderer.getAssetObject().ddmTemplateKey 
157								groupId=assetRenderer.getAssetObject().groupId /> 
158						</#if> 
159					</#list> 
160				</div> 
161			</#if> 
162		</div> 
163	</div> 
164</#if> 
165 
166<script> 
167	AUI().ready(() => { 
168		if(${fiPersonalSizeWT} > 0) { 
169			hideOrShowDisclaimers("Personal"); 
170		} else { 
171			hideOrShowDisclaimers("Business"); 
172
173	}); 
174	function setPillAndSelectToDefault() { 
175		const buttons = document.querySelectorAll('.saa-tabs-2024 .card-feature-pills__button'); 
176		buttons.forEach(button => { 
177			button.classList.remove('active'); 
178			button.setAttribute('aria-selected', 'false'); 
179		}); 
180 
181		buttons.forEach(button => { 
182			if (button.getAttribute('data-pill') === 'All Cards') { 
183				button.classList.add('active'); 
184				button.setAttribute('aria-selected', 'true'); 
185
186		}); 
187 
188		const cardFeatureSelect = document.querySelectorAll('.saa-tabs-2024 .card-feature-select' ); 
189		cardFeatureSelect.forEach(select=> { 
190			if(select.value) { 
191				select.value = 'All Cards'; 
192
193		}); 
194
195	document.addEventListener("DOMContentLoaded", function () { 
196		const tabs = document.querySelectorAll(".card-type-tabs__button"); 
197		const tabContents = document.querySelectorAll(".card-type-content");		 
198 
199		tabs.forEach((tab) => { 
200			tab.addEventListener("click", () => { 
201			 
202				tabs.forEach((t) => t.setAttribute("aria-selected", "false")); 
203 
204				tabContents.forEach((content) => { 
205					content.style.display = "none"; 
206				}); 
207 
208				tab.setAttribute("aria-selected", "true"); 
209 
210				const targetContent = document.getElementById(tab.dataset.tab); 
211				targetContent.style.display = "block"; 
212				 
213				const productType = tab.textContent.trim(); // Get the tab label as the product type 
214				widgetButtonSlection(productType);			 
215			}); 
216		}); 
217	}); 
218 
219	function widgetButtonSlection( productType) { 
220		hideOrShowFeaturedCards(productType); 
221		hideOrShowDisclaimers(productType); 
222		hideAllPillSections(); 
223		document.getElementById("allcards-container-"+productType).style.display = "block";	 
224		setPillAndSelectToDefault(); 
225
226	 
227	function hideAllPillSections() { 
228		document.getElementById("allcards-container-Personal").style.display = "none"; 
229		document.getElementById("cashback-container-Personal").style.display = "none"; 
230		document.getElementById("points-container-Personal").style.display = "none"; 
231		document.getElementById("travel-container-Personal").style.display = "none"; 
232		document.getElementById("noannualfee-container-Personal").style.display = "none"; 
233		document.getElementById("buildcredit-container-Personal").style.display = "none"; 
234		document.getElementById("lowintrorate-container-Personal").style.display = "none"; 
235 
236		document.getElementById("allcards-container-Business").style.display = "none"; 
237		document.getElementById("cashback-container-Business").style.display = "none"; 
238		document.getElementById("points-container-Business").style.display = "none"; 
239		document.getElementById("travel-container-Business").style.display = "none"; 
240		document.getElementById("noannualfee-container-Business").style.display = "none"; 
241		document.getElementById("buildcredit-container-Business").style.display = "none"; 
242		document.getElementById("lowintrorate-container-Business").style.display = "none"; 
243
244	 
245	function hideOrShowFeaturedCards(type) { 
246		const personalFeaturedCards = document.querySelector('.Personal-featured-cards'); 
247		const businessFeaturedCards = document.querySelector('.Business-featured-cards'); 
248 
249		if (type === "Personal") { 
250			if (personalFeaturedCards) { 
251				personalFeaturedCards.classList.remove('hide'); 
252
253			if (businessFeaturedCards) { 
254				businessFeaturedCards.classList.add('hide'); 
255
256		} else if (type === "Business") { 
257			if (businessFeaturedCards) { 
258				businessFeaturedCards.classList.remove('hide'); 
259
260			if (personalFeaturedCards) { 
261				personalFeaturedCards.classList.add('hide'); 
262
263
264
265 
266	function hideOrShowDisclaimers(type) { 
267		const personalDisclaimers = document.querySelector('.tier1-disclaimer-landing-consumer'); 
268		const businessDisclaimers = document.querySelector('.tier1-disclaimer-landing-business'); 
269		if (type === "Personal") { 
270			if (personalDisclaimers) { 
271				personalDisclaimers.classList.remove('hide'); 
272
273			if (businessDisclaimers) { 
274				businessDisclaimers.classList.add('hide'); 
275
276		} else if (type === "Business") { 
277			if (businessDisclaimers) { 
278				businessDisclaimers.classList.remove('hide'); 
279
280			if (personalDisclaimers) { 
281				personalDisclaimers.classList.add('hide'); 
282
283
284
285</script> 
286 
287<style> 
288	.saa-tabs-2024-feature { 
289		max-width: 1336px; 
290		margin: 0 20px; 
291
292	@media (min-width: 1376px) { 
293		.saa-tabs-2024-feature { 
294			margin: 0 auto; 
295
296
297	.card-type-tabs { 
298		display: flex; 
299		justify-content: flex-start; 
300		border-bottom: 1px solid #cccccc; 
301
302 
303	.card-type-tabs__button { 
304		align-items: center; 
305		background-color: transparent; 
306		border: none; 
307		border-bottom: 4px solid transparent; 
308		color: #333; 
309		display: flex; 
310		flex-direction: column; 
311		justify-content: center; 
312		padding: 10px 30px; 
313		text-align: center; 
314		font-size: 20px; 
315		font-weight: 700; 
316		line-height: 25px;  
317		margin-bottom: -1px; 
318		flex: 1; 
319
320	@media (min-width: 992px) { 
321		.card-type-tabs__button { 
322			flex: 0; 
323
324
325	.card-type-tabs__button:focus { 
326		outline: 1px solid #173989;  
327
328	.card-type-tabs__button[aria-selected="true"] { 
329		color: var(--ecdma-text-color); 
330		border-bottom: 4px solid  var(--ecdma-text-color); 
331
332	.card-type-tabs__button:hover { 
333		color: var(--ecdma-hover-color); 
334		border-bottom: 4px solid  var(--ecdma-hover-color); 
335
336 
337	.all-card-types-content { 
338
339 
340	.card-type-content { 
341		display: none; 
342
343 
344	.card-type-content[style="display: block;"] { 
345		display: block !important; 
346
347 
348</style> 
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> qstringmap["bankercode"]  [in template "10154#10192#18386847" at line 5, column 17]

----
Tip: It's the final [] step that caused this error, not those before it.
----
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: #assign bCode = qstringmap["bankercod...  [in template "10154#10192#18386847" at line 5, column 1]
----
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<#assign bCode= qstringmap["bankercode"]?first> 
6<#assign bCode = htmlUtil.escape(bCode)> 
7<#assign bCode = htmlUtil.escapeJS(bCode)> 
8 
9<#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetailSql','0&'+bCode)> 
10<#list bData as b>      
11    <#assign lc = b.locationcode > 
12    <#assign rLC = b.reallocationcode > 
13    <#assign mappedLC = b.mappedLocationCode > 
14</#list>  
15<#if bCode?starts_with("amp") && (url?contains("11t1m"))> 
16    <#assign ameriprise = true> 
17<#else> 
18    <#assign ameriprise = false> 
19</#if> 
20<#if mappedLC?has_content && !ameriprise> 
21    <#assign lc = mappedLC > 
22</#if> 
23 
24 
25<#if lc?has_content> 
26    <#assign prefix = "00000" > 
27    <#assign lcWithPrefix = prefix + lc > 
28    <#assign withPrefixLength = lcWithPrefix?length > 
29    <#assign startHere = withPrefixLength - 5> 
30    <#assign lc = lcWithPrefix?substring(startHere)> 
31    <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! /> 
32    <#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
33 
34    <#assign clientProfile = clientProfileList?first>  
35    <#assign partnerName=clientProfile.getMarketingNameLong()> 
36 
37    <#assign pbu = clientProfile.getPbu()> 
38    <#assign subbu = clientProfile.getSUBBRANDBUNBR()> 
39    <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&'+ pbu +'&'+subbu)>  
40    <#assign isEmployee = false> 
41 
42    <#assign fiData= utilServ.makeCall('crcDDCBankerAssistedAppSql','0&'+bCode)> 
43    <#if fiData?first?has_content> 
44        <#assign fi = fiData?first> 
45        <#if fi.projectType == "emp"> 
46            <#assign isEmployee = true> 
47        </#if> 
48    </#if> 
49	 
50	<#assign fultonBankpbu = "0727491"> 
51	<#if pbu == fultonBankpbu> 
52		<style> 
53			#hideFultonInfo { 
54				display: none; 
55
56		</style> 
57	</#if> 
58 
59 
60    <#if (fiCardsData?size > 0) > 
61        <#assign cardProvider = utilServ.makeCall('crcDDCGetMcOrVisa', fiCardsData[0].offerType + '&' + lc)> 
62     
63        <#if (cardProvider?size > 0)> 
64            <#-- This will be V for visa or M for mastercard. --> 
65            <#assign cardProviderAbbreviated = cardProvider[0].cardType> 
66        <#else> 
67            <script> 
68                console.log("No card provider(Visa/Master Card) found for disclaimer"); 
69            </script> 
70        </#if> 
71 
72        <div class="page-disclaimer tier1-disclaimer-${class.getData()}" title="${partnerName} - Disclaimer"> 
73            <div class="page-disclaimer__content"> 
74			<#if pbuList.getData()?has_content && pbuList.getData()?contains(pbu) && disclaimerAssociatedBank.getData()?has_content> 
75				<#if isEmployee && employeeDisclaimerAssociatedBank?has_content> 
76					${employeeDisclaimerAssociatedBank.getData()} 
77				<#else> 
78					${disclaimerAssociatedBank.getData()} 
79				</#if> 
80			<#else> 
81                <#if isEmployee && employeeDisclaimersVisa?has_content && cardProviderAbbreviated?contains("V")> 
82                    ${employeeDisclaimersVisa.getData()} 
83                <#elseif isEmployee && employeeDisclaimersMasterCard?has_content && cardProviderAbbreviated?contains("M") > 
84                    ${employeeDisclaimersMasterCard.getData()}> 
85                <#elseif disclaimersVisa?has_content && cardProviderAbbreviated?contains("V")> 
86                    ${disclaimersVisa.getData()} 
87                <#elseif disclaimersMasterCard?has_content && cardProviderAbbreviated?contains("M") > 
88                    ${disclaimersMasterCard.getData()} 
89                </#if> 
90			</#if> 
91            </div> 
92        </div> 
93    </#if> 
94<#else> 
95    <script> 
96        console.log("No lc for disclaimer"); 
97    </script> 
98</#if> 
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> qstringmap["bankercode"]  [in template "10154#10192#18386847" at line 5, column 17]

----
Tip: It's the final [] step that caused this error, not those before it.
----
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: #assign bCode = qstringmap["bankercod...  [in template "10154#10192#18386847" at line 5, column 1]
----
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<#assign bCode= qstringmap["bankercode"]?first> 
6<#assign bCode = htmlUtil.escape(bCode)> 
7<#assign bCode = htmlUtil.escapeJS(bCode)> 
8 
9<#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetailSql','0&'+bCode)> 
10<#list bData as b>      
11    <#assign lc = b.locationcode > 
12    <#assign rLC = b.reallocationcode > 
13    <#assign mappedLC = b.mappedLocationCode > 
14</#list>  
15<#if bCode?starts_with("amp") && (url?contains("11t1m"))> 
16    <#assign ameriprise = true> 
17<#else> 
18    <#assign ameriprise = false> 
19</#if> 
20<#if mappedLC?has_content && !ameriprise> 
21    <#assign lc = mappedLC > 
22</#if> 
23 
24 
25<#if lc?has_content> 
26    <#assign prefix = "00000" > 
27    <#assign lcWithPrefix = prefix + lc > 
28    <#assign withPrefixLength = lcWithPrefix?length > 
29    <#assign startHere = withPrefixLength - 5> 
30    <#assign lc = lcWithPrefix?substring(startHere)> 
31    <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! /> 
32    <#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
33 
34    <#assign clientProfile = clientProfileList?first>  
35    <#assign partnerName=clientProfile.getMarketingNameLong()> 
36 
37    <#assign pbu = clientProfile.getPbu()> 
38    <#assign subbu = clientProfile.getSUBBRANDBUNBR()> 
39    <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&'+ pbu +'&'+subbu)>  
40    <#assign isEmployee = false> 
41 
42    <#assign fiData= utilServ.makeCall('crcDDCBankerAssistedAppSql','0&'+bCode)> 
43    <#if fiData?first?has_content> 
44        <#assign fi = fiData?first> 
45        <#if fi.projectType == "emp"> 
46            <#assign isEmployee = true> 
47        </#if> 
48    </#if> 
49	 
50	<#assign fultonBankpbu = "0727491"> 
51	<#if pbu == fultonBankpbu> 
52		<style> 
53			#hideFultonInfo { 
54				display: none; 
55
56		</style> 
57	</#if> 
58 
59 
60    <#if (fiCardsData?size > 0) > 
61        <#assign cardProvider = utilServ.makeCall('crcDDCGetMcOrVisa', fiCardsData[0].offerType + '&' + lc)> 
62     
63        <#if (cardProvider?size > 0)> 
64            <#-- This will be V for visa or M for mastercard. --> 
65            <#assign cardProviderAbbreviated = cardProvider[0].cardType> 
66        <#else> 
67            <script> 
68                console.log("No card provider(Visa/Master Card) found for disclaimer"); 
69            </script> 
70        </#if> 
71 
72        <div class="page-disclaimer tier1-disclaimer-${class.getData()}" title="${partnerName} - Disclaimer"> 
73            <div class="page-disclaimer__content"> 
74			<#if pbuList.getData()?has_content && pbuList.getData()?contains(pbu) && disclaimerAssociatedBank.getData()?has_content> 
75				<#if isEmployee && employeeDisclaimerAssociatedBank?has_content> 
76					${employeeDisclaimerAssociatedBank.getData()} 
77				<#else> 
78					${disclaimerAssociatedBank.getData()} 
79				</#if> 
80			<#else> 
81                <#if isEmployee && employeeDisclaimersVisa?has_content && cardProviderAbbreviated?contains("V")> 
82                    ${employeeDisclaimersVisa.getData()} 
83                <#elseif isEmployee && employeeDisclaimersMasterCard?has_content && cardProviderAbbreviated?contains("M") > 
84                    ${employeeDisclaimersMasterCard.getData()}> 
85                <#elseif disclaimersVisa?has_content && cardProviderAbbreviated?contains("V")> 
86                    ${disclaimersVisa.getData()} 
87                <#elseif disclaimersMasterCard?has_content && cardProviderAbbreviated?contains("M") > 
88                    ${disclaimersMasterCard.getData()} 
89                </#if> 
90			</#if> 
91            </div> 
92        </div> 
93    </#if> 
94<#else> 
95    <script> 
96        console.log("No lc for disclaimer"); 
97    </script> 
98</#if> 
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> qstringmap["bankercode"]  [in template "10154#10192#18386837" at line 14, column 17]

----
Tip: It's the final [] step that caused this error, not those before it.
----
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: #assign bCode = qstringmap["bankercod...  [in template "10154#10192#18386837" at line 14, column 1]
----
1<#-- 
2Web content templates are used to lay out the fields defined in a web 
3content structure. 
4 
5Please use the left panel to quickly add commonly used variables. 
6Autocomplete is also available and can be invoked by typing "${". 
7--><#assign aDateTime = .now> 
8<#assign currentYear = aDateTime?string.yyyy> 
9<#assign url = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()/> 
10<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))> 
11<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! /> 
12<#assign url404 = '/error/404.html'> 
13 
14<#assign bCode= qstringmap["bankercode"]?first> 
15<#assign bCode = htmlUtil.escape(bCode)> 
16<#assign bCode = htmlUtil.escapeJS(bCode)> 
17 
18<#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetail','0&'+bCode)> 
19<#list bData as b>      
20    <#assign lc = b.locationcode > 
21    <#assign rLC = b.reallocationcode > 
22    <#assign mappedLC = b.mappedLocationCode > 
23</#list>  
24 
25<#if bCode?starts_with("amp") && (url?contains("11t1m"))> 
26    <#assign ameriprise = true> 
27<#else> 
28    <#assign ameriprise = false> 
29</#if> 
30<#if mappedLC?has_content && !ameriprise> 
31    <#assign lc = mappedLC > 
32</#if> 
33 
34<#if lc?has_content> 
35 
36    <#assign prefix = "00000" > 
37    <#assign lcWithPrefix = prefix + lc > 
38    <#assign withPrefixLength = lcWithPrefix?length > 
39    <#assign startHere = withPrefixLength - 5> 
40    <#assign lc = lcWithPrefix?substring(startHere)> 
41<#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! > 
42    <#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
43 
44    <#assign clientProfile = clientProfileList?first> 
45    <#assign pbu = clientProfile.getPbu()> 
46    <#assign subbu = clientProfile.getSUBBRANDBUNBR()>   
47    <#assign partnerName=clientProfile.getMarketingNameLong()> 
48    <#assign clientDataService = (serviceLocator.findService("com.elan.crc.user.service.CrcPbuLocalService"))! /> 
49    <#assign clientProfileDataList = clientDataService.getByPbuAndSubBu(pbu,subbu)> 
50    <#assign partnerUrl = clientProfileDataList.getPartnerMainUrl()> 
51    <#if partnerUrl?has_content && !partnerUrl?matches(r"(?i)^https?\:\/\/.*") && !partnerUrl?matches(r"(?i)^https?\:&#x2F;&#x2F;.*")> 
52        <#-- add protocal if missing  --> 
53        <#assign partnerUrl = 'https://' + partnerUrl> 
54    </#if> 
55    <footer class="page-footer"> 
56        <div class="page-footer__content"> 
57            ${footerContent.getData()} 
58        </div> 
59    </footer> 
60 
61    <!-- BEGIN CALIFORNIA OPT-OUT MODAL STYLE AND MARKUP --> 
62        <script src="https://unpkg.com/micromodal/dist/micromodal.min.js"></script> 
63        <style> 
64            #opt-out-button, 
65            .modal__btn.learn-more { 
66                background: #0C2074; 
67                border: 1px solid #0C2074; 
68                color: white; 
69                text-transform: uppercase; 
70                text-decoration: none; 
71                font-size: 16px; 
72                padding: 0.5rem 2rem; 
73                display: inline-block; 
74                border-radius: 0; 
75
76            #opt-out-button:hover, 
77            .modal__btn.learn-more:hover { 
78                color: white; 
79                border-color: #2C76AF !important; 
80                background-color: #2C76AF !important; 
81
82            .modal__btn.learn-more { 
83                background: white; 
84                border: 1px solid #0C2074; 
85                color: #0C2074; 
86
87            #opt-out-button[disabled="true"] { 
88                background-color: rgba(0,0,0,.15); 
89                color: rgba(0,0,0,.45); 
90                border-color: rgba(0,0,0,.25); 
91
92            #opt-out-button:hover[disabled="true"] { 
93                background-color: rgba(0,0,0,.15) !important; 
94                color: rgba(0,0,0,.45) !important; 
95                border-color: rgba(0,0,0,.25) !important; 
96
97            #opt-out-button:focus { 
98                outline-style: solid; 
99                outline-color: white; 
100                outline-offset: -3px; 
101                outline-width: 1px; 
102
103            .opt-out-link svg { 
104                width: 30px; 
105                height: 14px; 
106                width: auto; 
107                vertical-align: middle; 
108
109            .modal__overlay { 
110                position: fixed; 
111                top: 0; 
112                left: 0; 
113                right: 0; 
114                bottom: 0; 
115                background: rgba(0,0,0,0.6); 
116                display: flex; 
117                justify-content: center; 
118                align-items: center; 
119
120 
121            .modal__container { 
122                background-color: #fff; 
123                padding: 30px; 
124                max-width: 500px; 
125                max-height: 100vh; 
126                border-radius: 4px; 
127                overflow-y: auto; 
128                box-sizing: border-box; 
129
130 
131            .modal__header { 
132                display: flex; 
133                justify-content: space-between; 
134                align-items: center; 
135
136 
137            .modal__title { 
138                margin-top: 0; 
139                margin-bottom: 0; 
140                font-weight: 600; 
141                font-size: 20px; 
142                line-height: 1.25; 
143                color: #00449e; 
144                box-sizing: border-box; 
145
146 
147            .modal__close { 
148                background: transparent; 
149                border: 1px solid white; 
150                padding: 4px 8px; 
151
152            .modal__close:hover { 
153                border: 1px solid black; 
154
155 
156            .modal__header .modal__close:before { content: "\2715"; } 
157 
158            .modal__content { 
159                margin-top: 2rem; 
160                margin-bottom: 2rem; 
161                line-height: 1.5; 
162
163 
164            @keyframes mmfadeIn { 
165                from { opacity: 0; } 
166                to { opacity: 1; } 
167
168 
169            @keyframes mmfadeOut { 
170                from { opacity: 1; } 
171                to { opacity: 0; } 
172
173 
174            @keyframes mmslideIn { 
175                from { transform: translateY(15%); } 
176                to { transform: translateY(0); } 
177
178 
179            @keyframes mmslideOut { 
180                from { transform: translateY(0); } 
181                to { transform: translateY(-10%); } 
182
183 
184            .micromodal-slide { 
185                display: none; 
186
187 
188            .micromodal-slide.is-open { 
189                display: block; 
190
191 
192            .micromodal-slide[aria-hidden="false"] .modal__overlay { 
193                animation: mmfadeIn .3s cubic-bezier(0.0, 0.0, 0.2, 1); 
194
195 
196            .micromodal-slide[aria-hidden="false"] .modal__container { 
197                animation: mmslideIn .3s cubic-bezier(0, 0, .2, 1); 
198
199 
200            .micromodal-slide[aria-hidden="true"] .modal__overlay { 
201                animation: mmfadeOut .3s cubic-bezier(0.0, 0.0, 0.2, 1); 
202
203 
204            .micromodal-slide[aria-hidden="true"] .modal__container { 
205                animation: mmslideOut .3s cubic-bezier(0, 0, .2, 1); 
206
207 
208            .micromodal-slide .modal__container, 
209            .micromodal-slide .modal__overlay { 
210                will-change: transform; 
211
212        </style> 
213 
214        <div class="modal micromodal-slide" id="modal-1" aria-hidden="true"> 
215        <div class="modal__overlay" tabindex="-1" data-micromodal-close> 
216            <div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-1-title"> 
217            <header class="modal__header"> 
218                <h2 class="modal__title" id="modal-1-title"> 
219                Your California privacy choices 
220                </h2> 
221                <button class="modal__close" aria-label="Close modal" data-micromodal-close></button> 
222            </header> 
223            <div class="modal__content" id="modal-1-content"> 
224                <div id="message-no-cookie"> 
225                    <p> 
226                    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> 
227                     
228        <p>&nbsp;</p> 
229 
230        <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> 
231            </div> 
232            <div id="message-with-cookie"> 
233                <p>You have successfully opted-out.</p> 
234            </div> 
235            </div> 
236            <div class="modal__footer"> 
237                <a href="https://login.elancreditcard.com/onlineCard/publicPrivacyPolicy.do?phase=privacyPolicy" target="_blank" class="modal__btn learn-more" aria-label="Learn more">Learn More</a> 
238                <button id="opt-out-button" class="modal__btn modal__btn-primary" aria-label="Opt Out and Close modal" onclick="window.californiaOptOut()">Opt Out</button> 
239            </div> 
240            </div> 
241        </div> 
242        </div> 
243    <!-- END CALIFORNIA OPT-OUT MODAL STYLE AND MARKUP --> 
244    <script> 
245        const fdicNode = document.querySelector('.page-footer .fdic');                          
246    </script> 
247    <script> 
248        const copyrightNode = document.querySelector('.page-footer .copyright'); 
249        if (copyrightNode) { 
250            copyrightNode.innerHTML = '© Elan Financial Services ' + ${currentYear}; 
251
252 
253    </script> 
254    <#if url?contains("11t1m")> 
255        <script>        
256            copyrightNode.classList.add("ecdma-footer-client-name-copyright"); 
257            fdicNode.innerHTML='<a class="text-color-white" href="https://login.elancreditcard.com/onlineCard/publicPrivacyPolicy.do?phase=privacyPolicy" target="_blank">Privacy and Security</a>'; 
258        </script> 
259    <#else> 
260        <script> 
261            copyrightNode.classList.add("ecdma-footer-client-name-copyright"); 
262            fdicNode.innerHTML='<a class="text-color-white" href="https://login.elancreditcard.com/onlineCard/publicPrivacyPolicy.do?phase=privacyPolicy" target="_blank">Privacy and Security</a>'; 
263            var newNode = document.createElement("div");  
264            newNode.classList.add("member-agreement"); 
265            newNode.innerHTML='<a class="text-color-white" href="https://onboarding.elancreditcard.com/usl/generic/credit-card/application/card-member-agreements?locationCode=${lc!0}" target="_blank">Cardmember Agreements</a>'; 
266            var parent = fdicNode.parentNode; 
267            parent.insertBefore(newNode, fdicNode); 
268        </script> 
269    </#if> 
270 
271    <#if partnerUrl?has_content> 
272        <script> 
273            const homeLink = document.querySelector('.copyright .homelink'); 
274            if(homeLink) { 
275                homeLink.innerHTML="<a class='text-color-white' href='${partnerUrl!''}' title='${partnerName!''}' target='_blank'>Home</a>"; 
276
277        </script> 
278    </#if> 
279 
280    <script> 
281        /* BEGIN CALIFORNIA OPT-OUT MODAL TRIGGER */ 
282        fdicNode.insertAdjacentHTML('afterend', '<div class="opt-out-container"><a href="javascript:void(0);" class="opt-out-link text-color-white" 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>'); 
283        /* END CALIFORNIA OPT-OUT MODAL TRIGGER */ 
284    </script> 
285    <!-- BEGIN CALIFORNIA OPT-OUT MODAL LOGIC --> 
286 
287    <script> 
288        window.getCookieDomain = function() { 
289            var hostname = window.location.hostname.split("."); 
290            return hostname && hostname.slice(hostname.length - 2).join("."); 
291
292        window.setToOptOut = function() { 
293            if (window.getCookie('privacy_optout')) { 
294                    document.getElementById('message-no-cookie').style.display = 'none'; 
295                    document.getElementById('message-with-cookie').style.display = 'block'; 
296                    document.getElementById('opt-out-button').setAttribute('disabled', true) 
297                } else { 
298                    document.getElementById('message-no-cookie').style.display = 'block'; 
299                    document.getElementById('message-with-cookie').style.display = 'none'; 
300
301
302        window.getCookie = function(name) { 
303            var value = '; ' + document.cookie; 
304            var parts = value.split('; ' + name + '='); 
305            if (parts.length === 2) return parts.pop().split(';').shift(); 
306
307        window.californiaOptOut = function() { 
308            if (!window.getCookie('privacy_optout')) { 
309                document.cookie = 'privacy_optout=1; path=/; domain=' + window.getCookieDomain() + '; expires=Thu, 31 Dec 2099 00:00:00 GMT;'; 
310                try { 
311                if (window.CustomEvent) { 
312                    window.dispatchEvent(new CustomEvent('privacy_optout')); 
313                } else { 
314                    var privacyOptoutEvent = document.createEvent('Event'); 
315                    privacyOptoutEvent.initEvent('privacy_optout', true, true); 
316                    window.dispatchEvent(privacyOptoutEvent); 
317
318                window.setToOptOut(); 
319                } catch (err) { 
320                console.error(err); 
321
322
323
324        MicroModal.init({ 
325            onShow: window.setToOptOut 
326        }); 
327        AUI().ready(function() { 
328            // user browser setting for Global Privacy Control to opt out of sharing information with third parties 
329            const isBrowserGpcOptOut = navigator.globalPrivacyControl; 
330            if(isBrowserGpcOptOut === true) { 
331            window.californiaOptOut(); 
332
333        }); 
334    </script> 
335    <!-- END CALIFORNIA OPT-OUT MODAL LOGIC --> 
336 
337</#if>