An error occurred while processing the template.
The following has evaluated to null or missing:
==> qstringmap["ecdma-lc"]  [in template "10154#10192#18387089" at line 19, column 15]

----
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 lc = qstringmap["ecdma-lc"]?f...  [in template "10154#10192#18387089" at line 19, column 1]
----
1<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! /> 
2<#assign oadURL = propsUtil.get('elan.oad.url') > 
3<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext() > 
4<#assign themeDisplay = serviceContext.getThemeDisplay() /> 
5<#assign url = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()/> 
6<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))> 
7<#assign url404 = '/error/404.html' > 
8<#assign environment = url?replace('/11t3.*','','r')> 
9 
10<#assign text_to_apply_source = "vanity url" > 
11<#if qstringmap["sms"]?has_content> 
12    <#assign sms = 1 > 
13    <#assign text_to_apply_source = "sms" > 
14</#if> 
15<#if qstringmap["qrCode"]?has_content> 
16    <#assign text_to_apply_source = "qr code" > 
17</#if> 
18 
19<#assign lc = qstringmap["ecdma-lc"]?first>  
20<#assign lc = htmlUtil.escape(lc)> 
21<#assign lc = htmlUtil.escapeJS(lc)> 
22 
23<#assign prefix = "00000" > 
24<#assign lcWithPrefix = prefix + lc > 
25<#assign withPrefixLength = lcWithPrefix?length > 
26<#assign startHere = withPrefixLength - 5> 
27<#assign lc = lcWithPrefix?substring(startHere)> 
28 
29<#if qstringmap["ecid"]?has_content> 
30    <#assign ecidExt = qstringmap["ecid"]?first> 
31    <#assign ecidExt = htmlUtil.escape(ecidExt)> 
32    <#assign ecidExt = htmlUtil.escapeJS(ecidExt)> 
33    <#assign ecidExt = "&ecid=" + ecidExt> 
34 
35 
36    <#assign campaignId = qstringmap["ecid"]?first > 
37    <#assign campaignId = htmlUtil.escape(campaignId)> 
38    <#assign campaignId = htmlUtil.escapeJS(campaignId)> 
39<#else> 
40    <#assign ecidExt=""> 
41    <#assign campaignId = "" > 
42</#if> 
43 
44<#assign isFromDCOLink = false> 
45<#assign dcoSourceCode = ''> 
46<#if qstringmap["sourcecode"]?has_content> 
47    <#assign dcoSourceCode = qstringmap["sourcecode"]?first> 
48    <#assign dcoSourceCode = htmlUtil.escape(dcoSourceCode)> 
49    <#assign dcoSourceCode = htmlUtil.escapeJS(dcoSourceCode)> 
50<#elseif qstringmap["sourceCode"]?has_content> 
51    <#assign dcoSourceCode = qstringmap["sourceCode"]?first> 
52    <#assign dcoSourceCode = htmlUtil.escape(dcoSourceCode)> 
53    <#assign dcoSourceCode = htmlUtil.escapeJS(dcoSourceCode)> 
54</#if> 
55 
56<#if dcoSourceCode?has_content> 
57    <#assign isFromDCOLink = true> 
58</#if> 
59 
60<#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! /> 
61<#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
62<#assign clientProfile = clientProfileList?first> 
63<#assign partnerName = clientProfile.getMarketingNameLong()> 
64<#assign pbu = clientProfile.getPbu()> 
65<#assign subbu = clientProfile.getSUBBRANDBUNBR()> 
66 
67<#assign logoFileName = clientProfile.getLogoBFormat1()?replace(".", "-")?replace("-([^-]*)$", ".$1", "r")?lower_case> 
68<#assign cdnLogoUrl = (propsUtil.get('rackspace.cdn.web.url'))!> 
69<#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&'+pbu+'&'+subbu)> 
70 
71 <#assign clientDataService = (serviceLocator.findService("com.elan.crc.user.service.CrcPbuLocalService"))! /> 
72<#assign clientProfileDataList = clientDataService.getByPbuAndSubBu(pbu,subbu)> 
73<#assign partnerUrl = clientProfileDataList.getPartnerMainUrl()> 
74<script> 
75//console.log('Partner URL', ${partnerUrl}); 
76</script> 
77<#if partnerUrl?has_content && !partnerUrl?matches(r"(?i)^https?\:\/\/.*")>     
78    <#assign partnerUrl = 'https://' + partnerUrl> 
79</#if> 
80<script> 
81//console.log('Partner URL', ${partnerUrl}); 
82 
83</script> 
84<#-- Begin: filter duplicated cards--> 
85<#assign temp = []> 
86<#assign offerTypeList = []>   
87<#if (fiCardsData?size > 0)>      
88 
89 
90<!-- redirect to PANO start -->  
91<!-- parse URL for page to determine product -->  
92<#if (fiCardsData?first.redirectToPANO == "1")> 
93	<#assign pageend = url?index_of("?") - 1 > 
94	<#assign urlwoquery = url[0..pageend] > 
95	<#assign pagestart = urlwoquery?last_index_of("/") + 1 > 
96	<#assign productURL = urlwoquery[pagestart..] > 
97	<#assign qstringonly = httpUtil.getQueryString(url) > 
98 
99	<#if (productURL == "consumer-platinum")> 
100		<#assign PANOofferType = "108">  
101		<!-- PANOofferType = "109" --> 
102	<#elseif (productURL == "max-cash")> 
103		<#assign PANOofferType = "104">    
104	<#elseif (productURL == "consumer-edr")> 
105		<#assign PANOofferType = "101"> 
106		<!-- PANOofferType = "103" --> 
107	<#elseif (productURL == "secured")> 
108		<#assign PANOofferType = "115"> 
109	<#elseif (productURL == "smart-business-rewards")> 
110		<#assign PANOofferType = "144"> 
111	<#elseif (productURL == "business-cash-preferred")> 
112		<#assign PANOofferType = "128"> 
113	<#elseif (productURL == "business-real-rewards")> 
114		<#assign PANOofferType = "143"> 
115	<#elseif (productURL == "business-platinum")> 
116		<#assign PANOofferType = "121"> 
117	<#elseif (productURL == "max-cash-secured")> 
118		<#assign PANOofferType = "147"> 
119	<#elseif (productURL == "college-real-rewards")> 
120		<#assign PANOofferType = "141"> 
121	<#elseif (productURL == "travel-rewards-plus")> 
122		<#assign PANOofferType = "138"> 
123	<#elseif (productURL == "reserve-rewards-plus")> 
124		<#assign PANOofferType = "154"> 
125	<#else> 
126		<#assign PANOofferType = "0"> 
127	</#if>  
128	<#assign redirectToPANO = 'https://www.mycardapply.com/synindex/?' + qstringonly + "&offertype=" + PANOofferType > 
129	<script> 
130		console.log('${productURL}'); 
131		console.log('${PANOofferType}'); 
132		console.log('${redirectToPANO}'); 
133		location.href = '${redirectToPANO}'; 
134	</script> 
135</#if>  
136<!-- redirect to PANO end --> 	 
137 
138 
139    <#assign index = 0> 
140    <#list fiCardsData as fib> 
141        <#if (fib.offerType?has_content && !(offerTypeList?seq_contains(fib.offerType)))>  
142            <#assign offerTypeList = offerTypeList + [fib.offerType]>                   
143            <#assign temp = temp + fiCardsData[index..index]>  
144        </#if>   
145        <#assign index = index + 1>               
146    </#list>  
147    <#assign fiCardsData = temp> 
148    <#if (fiCardsData?size > 0)> 
149        <div class="content-container content-container-main"> 
150            <#if url?contains("index")> 
151                <#assign product="All Cards"> 
152                <h1 class="sr-only">${partnerName!'Elan'} Credit Cards</h1> 
153                <header class="page-header"> 
154                    <div class="page-header__logo">  
155                        <#if partnerUrl?has_content> 
156                            <a href="${partnerUrl!''}"> 
157                                <img src="${cdnLogoUrl!''}/${logoFileName!''}" alt="${partnerName!''} Logo"> 
158                            </a> 
159                        <#else> 
160                            <img src="${cdnLogoUrl!''}/${logoFileName!''}" alt="${partnerName!''} Logo"> 
161                        </#if> 
162                    </div>  
163                </header>         
164            <#else> 
165                <header class="page-header"> 
166                    <#if !isFromDCOLink> 
167                        <div class="back-overview hide-desktop">  
168                            <a href="${environment}/11t3/index?ecdma-lc=${lc}${ecidExt}">Home</a> 
169                        </div>  
170                    </#if> 
171 
172                    <div class="header-main-logo"> 
173                        <#if partnerUrl?has_content> 
174                            <a href="${partnerUrl!''}"> 
175                                <img src="${cdnLogoUrl!''}/${logoFileName!''}" alt="${partnerName!''} Logo"> 
176                            </a> 
177                        <#else>                            
178                            <img src="${cdnLogoUrl!''}/${logoFileName!''}" alt="${partnerName!''} Logo">                             
179                        </#if> 
180                    </div> 
181                    <#if !isFromDCOLink> 
182                        <div class="styled-select slate"> 
183                            <nav class="styled-select__dropdown"> 
184                                <div class="back-overview hide-mobile-flex">  
185                                    <a href="${environment}/11t3/index?ecdma-lc=${lc}${ecidExt}">Home</a> 
186                                </div>   
187                                <a href="javascript:void(0)" class="dropdown-select" aria-expanded="false"> 
188                                    <span class="selected-option"></span>  
189                                    <div class="jn-arrow arrow arrow-right"></div> 
190                                </a> 
191                                <a href="javascript:void(0)" aria-label="Open page navigation menu" class="jn-hamburger hamburger" aria-expanded="false"> 
192                                    <div class="first-line transform transformed1"></div> 
193                                    <div></div> 
194                                    <div class="transform transformed2"></div> 
195                                    <div></div> 
196                                </a> 
197                                <ul> 
198                                    <#list fiCardsData as fib> 
199                                        <#switch fib.offerType> 
200                                            <#case "101"> 
201                                                <#assign productURL = "202302/consumer-edr"> 
202                                                <#assign productName = "Everyday Rewards+"> 
203                                                <#break> 
204                                            <#case "103"> 
205                                                <#assign productURL = "202302/consumer-edr"> 
206                                                <#assign productName = "Everyday Rewards+"> 
207                                                <#break> 
208                                            <#case "104"> 
209                                                <#assign productURL = "max-cash"> 
210                                                <#assign productName = "Max Cash Preferred Card">       
211                                                <#break> 
212                                            <#case "108"> 
213                                                <#assign productURL="202308/consumer-platinum"> 
214                                                <#assign productName="Platinum Card"> 
215                                                <#break> 
216                                            <#case "109"> 
217                                                <#assign productURL="202308/consumer-platinum"> 
218                                                <#assign productName="Platinum Card"> 
219                                                <#break> 
220                                            <#case "115"> 
221                                                <#assign productURL = "secured"> 
222                                                <#assign productName = "Secured Card" > 
223                                                <#break> 
224                                            <#case "138"> 
225                                                <#assign productURL = "202305/travel-rewards-plus"> 
226                                                <#assign productName = "Travel Rewards+" > 
227                                                <#break> 
228                                            <#case "141"> 
229                                                <#assign productURL = "college-real-rewards"> 
230                                                <#assign productName = "College Real Rewards" >     
231                                                <#break> 
232                                            <#case "147"> 
233                                                <#assign productURL = "max-cash-secured"> 
234                                                <#assign productName = "Max Cash Secured Card" >     
235                                                <#break> 
236                                            <#case "154"> 
237                                                <#assign productURL = "202305/reserve-rewards-plus"> 
238                                                <#assign productName = "Reserve Rewards+" > 
239                                                <#break> 
240                                            <#case "121"> 
241                                                <#assign productURL = "202208/business-platinum"> 
242                                                <#assign productName = "Business Card" > 
243                                                <#break> 
244                                            <#case "128"> 
245                                                <#assign productURL = "business-cash-preferred"> 
246                                                <#assign productName = "Business Cash Preferred" > 
247                                                <#break> 
248                                            <#case "143"> 
249                                                <#assign productURL = "business-real-rewards"> 
250                                                <#assign productName = "Business Real Rewards Card" > 
251                                                <#break> 
252                                            <#case "144"> 
253                                                <#assign productURL = "smart-business-rewards"> 
254                                                <#assign productName = "Smart Business Rewards Card" >     
255                                                <#break> 
256                                            <#default>                                                         
257                                        </#switch> 
258                                        <#if url?matches(".*/${productURL}\\?.*")> 
259                                            <li class="selected" data-value="${productName}" selected="selected"><a href="javascript:void(0)">${productName}</a></li> 
260                                        <#else>                                 
261                                            <li class="dropdown-item" data-value="${productName}"> 
262                                                <a href="${environment}/11t3/${productURL}?ecdma-lc=${lc}${ecidExt}"> 
263                                                ${productName}  
264                                                </a> 
265                                            </li>                                    
266                                        </#if> 
267                                    </#list> 
268                                </ul> 
269                            </nav> 
270                             
271                        </div> 
272                    </#if> 
273                </header> 
274                <script> 
275                    function toggleFlyOutMenu() { 
276                        $('.styled-select').toggleClass('show-select'); 
277                        var ariaExpanded = $('.styled-select__dropdown .dropdown-select').attr('aria-expanded'); 
278                        if(ariaExpanded !== null) { 
279                            var isAriaExpanded; 
280                            if(ariaExpanded === "true") { 
281                                isAriaExpanded = true; 
282                            } else {  
283                                isAriaExpanded = false  
284
285                            $('.styled-select__dropdown .dropdown-select').attr('aria-expanded', !isAriaExpanded); 
286                            const ariaLabel = isAriaExpanded? "Open page navigation menu" : "Close page navigation menu"; 
287                            $('.styled-select__dropdown .jn-hamburger').attr('aria-expanded', !isAriaExpanded).attr('aria-label', ariaLabel); 
288
289
290                    AUI().ready(function () { 
291                        var pageSelected = $('.selected').attr('data-value'); 
292                        $('.jn-hamburger, .dropdown-select').click(function () { 
293                            toggleFlyOutMenu(); 
294                        }); 
295                        $('.styled-select__dropdown').keydown(function(event) { 
296                            var firstNavigationLink = $('.styled-select__dropdown ul li:visible a').first(); 
297                            var lastNavigationLink = $('.styled-select__dropdown ul li:visible a').last(); 
298 
299                            if(event.keyCode === 9 ) { 
300                                // if they tab outside of the nav close the navigation 
301                                //shift + tab pressed 
302                                if(event.shiftKey && firstNavigationLink.is(document.activeElement)) { 
303                                    toggleFlyOutMenu(); 
304                                } else if(!event.shiftKey && lastNavigationLink.is(document.activeElement)) { 
305                                    toggleFlyOutMenu(); 
306                                }                             
307
308                        }); 
309                        $('.selected-option').text(pageSelected); 
310                    }); 
311                </script>            
312            </#if> 
313        </div> 
314        <script> 
315                var reportingData = {}; 
316                                                             
317                //document.addEventListener('DOMContentLoaded', function() { 
318                AUI().ready(function () { 
319                    //console.log('inside ready'); 
320                    var page = location.pathname.split('/')[location.pathname.split('/').length-1]; 
321                    var hostName = location.hostname;                                 
322                    function getDomainFromHostname(hostname) { 
323                        var parts = hostname.split('.'); 
324                        return parts.length === 3 ? parts[1] : parts[0]; 
325
326                    var domain = getDomainFromHostname(hostName); 
327                    var partnerName = "${partnerName!''}"; 
328                    var product = "All Cards"; 
329                    var title = ""; 
330                    var metaDesc = ""; 
331                    var m = document.createElement('meta');  
332                    switch(page) { 
333                        case "max-cash-secured": 
334                            product="Max Cash Secured Card"; 
335                            title = "Earn more on the categories you pick | "+partnerName+" Max Cash Secured Card"; 
336                            metaDesc = "Apply Today for a "+partnerName+" Credit Card. Use this card as a solid foundation to build your credit."; 
337                            break;  
338                        case "max-cash": 
339                            product="Max Cash Preferred Card"; 
340                            title = "Earn a $150 Bonus and 5% cash back | "+partnerName+" Max Cash Preferred Card"; 
341                            metaDesc = "Apply Today for a "+partnerName+" Credit Card. Earn a $150 Bonus and 5% cash back on the two categories you select."; 
342                            break;                         
343                        case "consumer-platinum": 
344                            product="Platinum Card"; 
345                            title = "The purchasing power of Zero | "+partnerName+" Platinum Card"; 
346                            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."; 
347                            break; 
348                        case "consumer-edr": 
349                            product="Everyday Rewards+"; 
350                            title = "Sign up and earn bonus points | "+partnerName+" Everyday Rewards+"; 
351                            metaDesc = "Apply Today for a "+partnerName+" Credit Card. Earn 15,000 when you spend $500 within the first 90 days."; 
352							break; 
353                        case "secured": 
354                            product="Secured Card"; 
355                            title = "Strengthen your finances | "+partnerName+" Secured Card"; 
356                            metaDesc = "Apply Today for a "+partnerName+" Credit Card. Use this card as a solid foundation to build your credit."; 
357                            break; 
358                        case "college-real-rewards": 
359                            product="College Real Rewards"; 
360                            title = "Sign up and earn bonus points. | "+partnerName+" College Real Rewards"; 
361                            metaDesc = "Apply Today for a "+partnerName+" Credit Card. Use this card as a solid foundation to build your credit."; 
362                            break; 
363                        case "smart-business-rewards": 
364                            product="Smart Business Rewards Card"; 
365                            title = "2X rewards in your top 2 spend categories | "+partnerName+" Business Smart Business Rewards Card"; 
366                            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."; 
367                            break;                             
368                        case "business-cash-preferred": 
369                            product="Business Cash Preferred"; 
370                            title = "Flexible rewards for your business | "+partnerName+" Business Cash Preferred"; 
371                            metaDesc = "Apply Today for a "+partnerName+" Credit Card. Earn Cash back on common business expenses."; 
372                            break; 
373                        case "business-real-rewards": 
374                            product="Business Real Rewards Card"; 
375                            title = "Earn up to 1.5X points with no caps | "+partnerName+" Business Real Rewards Card"; 
376                            metaDesc = "Apply Today for a "+partnerName+" Credit Card. Get more rewards in the categories you spend the most on." ; 
377                            break; 
378                        case "business-platinum": 
379                            product="Business Card"; 
380                            title = "Pay down your other credit card balances faster | "+partnerName+" Business Card"; 
381                            metaDesc = "Apply Today for a "+partnerName+"  Business Card. 0% Intro APR on Purchases and Balance Transfers for 18 Billing Cycles."; 
382                            break; 
383                        case "travel-rewards-plus": 
384                            product="Travel Rewards+" 
385                            title = partnerName + " | Travel Rewards+ Card"; 
386                            metaDesc = "Make travel more rewarding with unlimited 4x points on travel and frequent popular categories." 
387                            break; 
388                        case "reserve-rewards-plus": 
389                            product="Reserve Rewards+" 
390                            title = partnerName + " | Reserve Rewards+ Card"; 
391                            metaDesc = "Get exceptional rewards on travel and frequent purchases with this exclusive metal card."; 
392                            break; 
393                        default:   
394                            product = "All Cards";    
395                            title = partnerName + " Credit Card Index Page";   
396                            metaDesc = "Apply Today for a "+partnerName+" Credit Card.";                      
397
398                    document.title = title; 
399                    m.name = 'description';  
400                    m.content = metaDesc;  
401                    document.head.appendChild(m); 
402 
403                    var lc = "${lc!'0'}"; 
404 
405                    /* update SiteCatalyst data object */ 
406                        reportingData.current_page = "microsite:${partnerName}:" + domain + ':' + page.replace('-',' '); 
407                        reportingData.page_type = 'product';  
408                        reportingData.site_section = 'credit cards'; 
409                        reportingData.platform = 'microsite'; 
410                        reportingData.campaign_id = '${campaignId}'; 
411                        reportingData.location_code = lc; 
412                        reportingData.partner_name = partnerName; 
413                        reportingData.product = product; 
414                        reportingData.text_to_apply_source = '${text_to_apply_source}'; 
415                        reportingData.visitor_type = 'prospect';         
416                        reportingData.Banker_id = '0'; 
417                        reportingData.Banker_code = '0';        
418 
419 
420                    /* SiteCatalyst  pageView tracking */ 
421                        AUI().ready(function() { 
422                            if (window.publisherFW) { 
423                                //console.log("pageView"); 
424                                window.publisherFW.publishEvent("pageView", reportingData); 
425                            }  
426                        }); 
427 
428                    jQuery('.jn-button, .applyNowLink').on('click', function(e){ 
429                        var buttonName = $(this).data('button-name'); 
430                        var productName = $(this).data('product-name'); 
431                        /* SiteCatalyst  onClick tracking */ 
432                        reportingData.applyButton = buttonName; 
433                        reportingData.product = productName; 
434 
435                            if (window.publisherFW) { 
436                                //console.log('clicked', reportingData); 
437                                window.publisherFW.publishEvent("onClick", reportingData); 
438                            }   
439 
440                    }); 
441 
442                    jQuery('.applyNowLink').on('click', function(e){ 
443                        ga("send", { 
444                            hitType: "event", 
445                            eventAction: "ApplyNow", 
446                            eventCategory: "click", 
447                            eventLabel: "BottomButton" 
448                        }); 
449                    }); 
450             
451                }); 
452        </script>    
453    <#else> 
454        <script> 
455            console.log("Empty card list"); 
456            location.href = '${url404}'; 
457        </script> 
458    </#if>    
459<#else> 
460    <script> 
461        console.log("FI Cards Data empty", "pbu:", "${pbu}", ",subbu:","${subbu}"); 
462        location.href = '${url404}'; 
463    </script> 
464</#if> 
An error occurred while processing the template.
The following has evaluated to null or missing:
==> qstringmap["ecdma-lc"]  [in template "10154#10192#18372552" at line 12, column 14]

----
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 lc = qstringmap["ecdma-lc"]?f...  [in template "10154#10192#18372552" at line 12, column 1]
----
1<#assign url = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()> 
2<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))> 
3<#assign basePath = "/web/creditcardlearnmore"> 
4<#assign environment = url?substring(0, url?index_of(basePath) + basePath?length)> 
5<#assign oadURL = propsUtil.get('elan.oad.url')> 
6<#assign oadURL_TC = propsUtil.get('elan.oad.tac.url') > 
7<#assign prcaURL = propsUtil.get('elan.prca.url') > 
8<#assign rewardsCalculatorURL = propsUtil.get('cclm.rewards.calculator.url') > 
9<#assign applyNowText = "Apply Now" > 
10<#assign learnMoreText = "Learn More" > 
11 
12<#assign lc= qstringmap["ecdma-lc"]?first>   
13<#assign lc = htmlUtil.escape(lc)> 
14<#assign lc = htmlUtil.escapeJS(lc)> 
15 
16<#assign prefix = "00000" > 
17<#assign lcWithPrefix = prefix + lc > 
18<#assign withPrefixLength = lcWithPrefix?length > 
19<#assign startHere = withPrefixLength - 5> 
20<#assign lc = lcWithPrefix?substring(startHere)> 
21 
22<#assign calculatorOfferTypes = ["101", "104", "138", "154", "144", "143", "128"] > 
23<#assign balanceTransferCalculatorOfferTypes = ["108", "109"] > 
24 
25<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! > 
26<#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! > 
27<#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
28<#assign clientProfile = clientProfileList?first> 
29<#assign partnerName = clientProfile.getMarketingNameLong()> 
30<#assign pbu = clientProfile.getPbu()> 
31<#assign subbu = clientProfile.getSUBBRANDBUNBR()> 
32<#assign cdnCardArtUrl = (propsUtil.get('rackspace.cdn.cardart.url'))!> 
33<#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&'+ pbu + '&'+subbu + '&' + lc)> 
34 
35 
36<#assign synExclusionMessageService = (serviceLocator.findService("com.elan.crc.quicklink.service.SYNExclusionMessageLocalService"))! /> 
37<#assign synExclusionMessageData = synExclusionMessageService.getClientProfileAndSyndicatedExclusionMsg(lc) /> 
38<#assign synExclusionDefaultMessageData = synExclusionMessageService.getSyndicatedDefaultMsg() /> 
39<#assign synExclusionMsg = "" /> 
40<#assign synExclusionMsgURL = "" /> 
41<#assign synExclusionMsgAriaLabel = "" /> 
42<#assign synExclusionDefaultMsg = "" /> 
43 
44<#if synExclusionDefaultMessageData?exists && synExclusionDefaultMessageData?has_content > 
45	<#assign synExclusionDefaultMsg = synExclusionDefaultMessageData!""/> 
46</#if> 
47 
48<#if synExclusionMessageData?exists && synExclusionMessageData?has_content > 
49    <#assign synExclusionMsgObj = synExclusionMessageData[0] /> 
50    <#assign synExclusionMsg = synExclusionMsgObj[4]!"" /> 
51    <#assign synExclusionMsgURL = synExclusionMsgObj[5]!"" /> 
52    <#assign synExclusionMsgAriaLabel = synExclusionMsgObj[6]!"" /> 
53</#if> 
54 
55<#assign fultonBankpbu = "0727491"> 
56<#if pbu == fultonBankpbu> 
57    <style> 
58        #hideFultonInfo { 
59            display: none; 
60
61    </style> 
62</#if> 
63 
64<#function getOfferIdByOfferType offerType> 
65    <#list fiCardsData as fiData> 
66        <#if fiData.offerType == offerType> 
67           <#return fiData.offerId> 
68        </#if> 
69    </#list> 
70   <#return "" /> 
71</#function> 
72 
73<#function getFileNameByOfferType offerType> 
74    <#list fiCardsData as fiData> 
75        <#if fiData.offerType == offerType> 
76           <#return fiData.filename> 
77        </#if> 
78    </#list> 
79   <#return "" /> 
80</#function> 
81 
82<#function isOfferExcluded offerType> 
83    <#list fiCardsData as fiData> 
84        <#if fiData.offerType == offerType> 
85           <#return fiData.dmaexclude!""> 
86        </#if> 
87    </#list> 
88   <#return "" /> 
89</#function> 
90 
91<#function getUsePRCA offerType> 
92    <#list fiCardsData as fiData> 
93        <#if fiData.offerType == offerType> 
94           <#return fiData.useprca!""> 
95        </#if> 
96    </#list> 
97   <#return "" /> 
98</#function> 
99 
100<#function replacePlaceholders(input, APRValue, AMFValue, BALValue, TCLinkValue)> 
101    <#return input 
102        ?replace("{APR}", APRValue) 
103        ?replace("{AMF}", AMFValue) 
104        ?replace("{BAL}", BALValue) 
105        ?replace("{TC}", TCLinkValue)> 
106</#function> 
107 
108<#assign productOfferTypeValue = ""> 
109<#assign productOfferTypeName = ""> 
110<#if (productOfferType.getData())??> 
111	<#assign productOfferTypeValue = productOfferType.getData()> 
112	<#assign productOfferTypeName = productOfferType.optionsMap[productOfferType.getData()]> 
113</#if> 
114 
115<#assign productOfferTypeName = productOfferTypeName?substring(productOfferTypeName?index_of(" - ") + 3)?upper_case!> 
116 
117 
118 
119<#assign offerId = getOfferIdByOfferType(productOfferTypeValue)> 
120<#assign cardArtImage = cdnCardArtUrl + "/" + getFileNameByOfferType(productOfferTypeValue) + ".png" > 
121<#assign cardArtImageAlt = cdnCardArtUrl + "/" + getFileNameByOfferType(productOfferTypeValue) + ".jpg" > 
122<#assign cardArtImageAltText = partnerName + " " + productOfferTypeName?capitalize> 
123 
124<#assign hasBalanceTransferCalculator = balanceTransferCalculatorOfferTypes?seq_contains(productOfferTypeValue)> 
125<#assign hasCalculatorRewards = calculatorOfferTypes?seq_contains(productOfferTypeValue)> 
126<#assign isExcluded = isOfferExcluded(productOfferTypeValue)> 
127<#assign prcaValue = getUsePRCA(productOfferTypeValue)> 
128 
129<#assign APR="" AMF="" BAL=""> 
130<#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', offerId)> 
131<#if scrapedData?? && scrapedData?has_content && (scrapedData?size > 0)> 
132         
133<#list scrapedData as sItem> 
134		<#if sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases") && sItem.scrapedValue?has_content> 
135			<#if !APR?has_content><#assign APR = sItem.scrapedValue></#if> 
136		<#elseif sItem.scrapedLabel?contains("Annual Membership Fee") && sItem.scrapedValue?has_content> 
137			<#if !AMF?has_content><#assign AMF = sItem.scrapedValue></#if> 
138		<#elseif sItem.scrapedLabel?contains("APR for Balance Transfers") && sItem.scrapedValue?has_content> 
139			<#if !BAL?has_content><#assign BAL = sItem.scrapedValue></#if> 
140		</#if> 
141		<#if APR?has_content && AMF?has_content && BAL?has_content> 
142			<#break> 
143		</#if> 
144	</#list> 
145</#if> 
146 
147	<#assign APRValue = APR!'' /> 
148	<#assign AMFValue = AMF!'' /> 
149	<#assign BALValue = BAL!'' /> 
150 
151	<#assign termsAndConditionsLink =  
152			'<a href="' + oadURL_TC + '?step=display&amp;offerId=' + offerId + '&amp;locationCode=' + lc +  
153			'" target="_blank" class="t_c_link">' + 
154			'See Terms &amp; Conditions' + 
155			'</a>' 
156		/> 
157	<#assign TCLinkValue = termsAndConditionsLink!'' /> 
158	 
159	<#assign benefits = []> 
160	<#if benefit.getSiblings()?has_content> 
161		<#list benefit.getSiblings() as benefit> 
162		<#assign primaryBenefitCopyRaw = benefit.primaryBenefitCopy.getData()!'' /> 
163            <#assign updatedPrimaryBenefitCopy = replacePlaceholders(primaryBenefitCopyRaw, APRValue, AMFValue, BALValue, TCLinkValue) /> 
164			 
165			<#assign benefitObject = { 
166				"svgIcon": benefit.primaryBenefitSVGIcon.getData(), 
167				"primaryBenefitCopy": updatedPrimaryBenefitCopy 
168			} /> 
169			<#assign benefits += [benefitObject] /> 
170		</#list> 
171</#if> 
172 
173<#assign additionalBenefits = []> 
174<#if additionalBenefit.getSiblings()?has_content> 
175	<#list additionalBenefit.getSiblings() as additionalBenefit>		 
176		<#assign additionalBenefitCopyRaw = additionalBenefit.additionalBenefitCopy.getData()!'' /> 
177		<#assign updatedAdditionalBenefitCopy = replacePlaceholders(additionalBenefitCopyRaw, APRValue, AMFValue, BALValue, TCLinkValue) /> 
178				 
179		<#assign additionalBenefitObject = { 
180			"additionalBenefitSVGIcon": additionalBenefit.additionalBenefitSVGIcon.getData(), 
181			"additionalBenefitCopy": updatedAdditionalBenefitCopy 
182		} /> 
183		<#assign additionalBenefits += [additionalBenefitObject] /> 
184	</#list> 
185</#if> 
186 
187<#assign offerCopyRaw = offerCopy.getData()!'' /> 
188<#assign updatedOfferCopy = replacePlaceholders(offerCopyRaw, APRValue, AMFValue, BALValue, TCLinkValue) /> 
189 
190<#assign renderApplyNowButtonCount = 0> 
191<#macro renderApplyNowButton> 
192	<#assign renderApplyNowButtonCount = renderApplyNowButtonCount +1> 
193	<#if isExcluded == "0">  
194		<#if prcaValue == "1"> 
195			<a  
196				class="apply-now-link"  
197				data-button-name="apply-now-link"  
198				data-product-name="${productOfferTypeName!''}" 
199				href="" 
200				offerId="${offerId}" 
201				onclick="submitForm(event)"	 
202
203				${applyNowText} 
204			</a> 
205			<form aria-hidden="true" id="applyForm" action="${prcaURL}?locationCode=${lc}&amp;offerId=${offerId}&amp;preparerType=customer" method="post"> 
206				<input type="hidden" name="locationCode" value="${lc}" id="locationCode"> 
207				<input type="hidden" name="offerId" value="${offerId}" id="offerId"> 
208				<input type="hidden" name="preparerType" value="customer"> 
209			</form> 
210		<#else> 
211			<a  
212				href="${oadURL}?locationCode=${lc}&amp;offerId=${offerId}&amp;preparerType=customer"  
213				class="apply-now-link"  
214				data-button-name="apply-now-link"  
215				data-product-name="${productOfferTypeName!''}" 
216
217				${applyNowText} 
218			</a> 
219		</#if> 
220	<#else> 
221		<a  
222			class="apply-now-link"  
223			data-button-name="apply-now-link"  
224			data-product-name="${productOfferTypeName!''}" 
225			data-micromodal-trigger="modal-tabs-${productOfferTypeValue}" 
226			href="javascript:void(0);" 
227
228			${applyNowText} 
229		</a> 
230	</#if> 
231</#macro> 
232 
233<div id="product-card-id" class="Tier3-Syn-Product-Detail-2024"> 
234	<div class="tab-card"> 
235			<div class="tab-card__left"> 
236				<h1 class="super-head"> 
237					${productOfferTypeName} 
238					<#if (cardNameFootnotes.getData())??> 
239						<sup class="super-head--super-script">${cardNameFootnotes.getData()}</sup> 
240					</#if> 
241				</h1> 
242				<img src="${cardArtImage}" alt="${cardArtImageAltText!''}" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'"/> 
243				<@renderApplyNowButton /> 
244				<#if (hasBalanceTransferCalculator)> 
245					<a href="javascript:void(0);" class="transfer-modal-link" data-micromodal-trigger="modal-2">See how much you could save with a balance transfer</a> 
246				</#if> 
247				<#if (hasCalculatorRewards)> 
248					 <a class="reward-calculator-link" target="_blank" href="${rewardsCalculatorURL}?ecdma-lc=${lc}">Calculate Rewards</a> 
249				</#if> 
250			</div> 
251 
252			<div class="tab-card__right">			 
253				<h1 class="super-head"> 
254					${productOfferTypeName} 
255					<#if (cardNameFootnotes.getData())??> 
256						<sup class="super-head--super-script">${cardNameFootnotes.getData()}</sup> 
257					</#if> 
258				</h1> 
259				<div class="offer-copy">${updatedOfferCopy}</div> 
260				<div class="benefits">  
261					<#list benefits as benefit> 
262						<div class="benefits__item"> 
263							<#if benefit.svgIcon?has_content> 
264								<div class="svg-container"> 
265									<img loading="lazy" src="${benefit.svgIcon}" alt="" class="<#if benefit.svgIcon?contains('svg')>dynamic-svg</#if>" /> 
266								</div> 
267							</#if> 
268							<div> 
269								${benefit.primaryBenefitCopy} 
270							</div> 
271						</div> 
272					</#list> 
273				</div> 
274			</div> 
275		    
276		</div> 
277		 
278		<div class="additional-benefit-container"> 
279			<div class="additional-benefit"> 
280				<h2 class="additional-benefit__header">Additional Benefits </h2> 
281				<div class="additional-benefit__layout"> 
282					<#list additionalBenefits as additionalBenefit> 
283						<div class="additional-benefit__item"> 
284							<#if additionalBenefit.additionalBenefitSVGIcon?has_content> 
285								<div class="svg-container"> 
286									<img loading="lazy" src="${additionalBenefit.additionalBenefitSVGIcon}" alt="" class="dynamic-svg" /> 
287								</div> 
288							</#if> 
289							<div>${additionalBenefit.additionalBenefitCopy}</div> 
290						</div> 
291					</#list> 
292				</div> 
293				<div class="additional-benefit__button"> 
294					<@renderApplyNowButton /> 
295				</div>	 
296			</div> 
297		</div>			 
298</div> 
299	 
300 
301<#if isExcluded == "1">     
302	<div aria-hidden="true" class="modal micromodal-slide" id="modal-tabs-${productOfferTypeValue}" > 
303		<div class="excludeModal__overlay" data-micromodal-close tabindex="-1" > 
304			<div   
305				aria-modal="true"  
306				aria-labelledby="modal-tabs-title-${productOfferTypeValue}"  
307				class="excludeModal__container"  
308				role="dialog" 
309
310				<button aria-label="Close modal" class="excludeModal__close" data-micromodal-close></button> 
311				<header class="excludeModal__header"> 
312					<div> 
313						<h2 class="excludeModal__title" id="modal-tabs-title-${productOfferTypeValue}"> 
314							<#if synExclusionMsg?has_content> 
315								${synExclusionMsg} 
316							<#else> 
317								${synExclusionDefaultMsg} 
318							</#if>  
319						</h2> 
320					 </div> 
321					 <div id="excludeModalDivLink"> 
322						<#if synExclusionMsgURL?has_content> 
323							<p> 
324								<a href="${synExclusionMsgURL}" target="_blank" aria-label="${synExclusionMsgAriaLabel!''}" class="excludeModal__link"> 
325									${learnMoreText} 
326								</a> 
327							</p> 
328							</#if> 
329					</div> 
330				</header> 
331			</div> 
332		</div> 
333	</div> 
334</#if> 
335 
336<!-- https://micromodal.vercel.app/ --> 
337<script src="https://unpkg.com/micromodal/dist/micromodal.min.js" async></script> 
338<script async>	  
339	function submitForm(event) { 
340		event.preventDefault();  
341		var offerId = event.target.getAttribute("offerId");			 
342		console.log("offerId::::::::::::::"+offerId); 
343        var lc = document.getElementById('locationCode').value; 
344 
345        var url = "${prcaURL}?locationCode=" + lc + "&offerId=" + offerId + "&preparerType=customer"; 
346		 
347        document.getElementById('applyForm').action = url;		 
348		postCreditcardLearnMore(url); 
349 
350
351	 
352	function postCreditcardLearnMore(path, method='post') { 
353		const form = document.createElement('form'); 
354		form.method = method; 
355		//form.target = '_blank'; 
356		form.action = path; 
357		document.body.appendChild(form); 
358		form.submit(); 
359	}	 
360	AUI().ready(function() { 
361		MicroModal.init(); 
362 
363		setTimeout(() => { 
364			const svgImages = document.querySelectorAll(".Tier3-Syn-Product-Detail-2024 .dynamic-svg"); 
365			svgImages.forEach(function (image) { 
366				const svgUrl = image.src;  
367				fetch(svgUrl) 
368					.then(response => response.text()) 
369					.then(svgContent => { 
370						const parser = new DOMParser(); 
371						const svgElement = parser.parseFromString(svgContent, "image/svg+xml").querySelector("svg"); 
372						if (svgElement) { 
373							image.replaceWith(svgElement); // Replace <img> with the <svg> 
374
375					}) 
376					.catch(err => console.error("Error loading SVG:", err)); 
377				 
378			}); 
379		}, 1); 
380	 }); 
381</script> 
382	 
383<style>	 
384	.excludeModal__overlay { 
385        position: fixed; 
386        top: 0; 
387        left: 0; 
388        right: 0; 
389        bottom: 0; 
390        background: rgba(0,0,0,0.6); 
391        display: flex; 
392        justify-content: center; 
393        align-items: center; 
394
395 
396    .excludeModal__container { 
397        background-color: #fff; 
398        padding: 30px; 
399        min-width: 500px; 
400        max-width: 500px; 
401        max-height: 100vh; 
402        border-radius: 4px; 
403        overflow-y: auto; 
404        box-sizing: border-box; 
405
406 
407    .excludeModal__header { 
408        display: block; 
409        justify-content: space-between; 
410        align-items: center; 
411
412 
413    .modal .excludeModal__container .excludeModal__title { 
414        margin-top: 0; 
415        margin-bottom: 0; 
416        font-weight: normal; 
417        font-size: 20px !important; 
418        line-height: 1.5 !important; 
419        color: #000; 
420        box-sizing: border-box; 
421
422     
423    .excludeModal__close { 
424        background: transparent; 
425        border: 1px solid white; 
426        padding: 4px 8px; 
427        float: right; 
428
429	 
430    .excludeModal__close:hover { 
431        border: 1px solid black; 
432
433 
434    .excludeModal__close:before { content: "\2715"; } 
435 
436    @keyframes mmfadeIn { 
437        from { opacity: 0; } 
438        to { opacity: 1; } 
439
440 
441    @keyframes mmfadeOut { 
442        from { opacity: 1; } 
443        to { opacity: 0; } 
444
445 
446    @keyframes mmslideIn { 
447        from { transform: translateY(15%); } 
448        to { transform: translateY(0); } 
449
450 
451    @keyframes mmslideOut { 
452        from { transform: translateY(0); } 
453        to { transform: translateY(-10%); } 
454
455 
456    .micromodal-slide { 
457        display: none; 
458
459 
460    .micromodal-slide.is-open { 
461        display: block; 
462
463 
464    .micromodal-slide[aria-hidden="false"] .excludeModal__overlay { 
465        animation: mmfadeIn .3s cubic-bezier(0.0, 0.0, 0.2, 1); 
466
467 
468    .micromodal-slide[aria-hidden="false"] .excludeModal__container { 
469        animation: mmslideIn .3s cubic-bezier(0, 0, .2, 1); 
470
471 
472    .micromodal-slide[aria-hidden="true"] .excludeModal__overlay { 
473        animation: mmfadeOut .3s cubic-bezier(0.0, 0.0, 0.2, 1); 
474
475 
476    .micromodal-slide[aria-hidden="true"] .excludeModal__container { 
477        animation: mmslideOut .3s cubic-bezier(0, 0, .2, 1); 
478
479 
480    .micromodal-slide .excludeModal__container, 
481    .micromodal-slide .excludeModal__overlay { 
482        will-change: transform; 
483
484	 
485	.excludeModal__link { 
486		font-size: 18px !important; 
487		font-weight: normal; 
488		text-decoration: underline !important; 
489
490	 
491	.excludeModal__link a:hover { 
492		text-decoration: underline !important; 
493
494	 
495	#excludeModalDivLink { 
496		margin-top: 20px; 
497
498</style> 
499 
500<style> 
501	:root { 
502		--card-image-size: 280px; 
503		--left-padding: 30px; 
504		--left-width: calc(var(--card-image-size) + var(--left-padding) ); 
505		--addition-benefits-gap-desktop: 30px; 
506
507	.Tier3-Syn-Product-Detail-2024 .tab-card { 
508		align-items: flex-start; 
509		display: flex; 
510		flex-wrap: wrap; 
511		justify-content: center; 
512		max-width: 1336px; 
513  		margin: 0 20px; 
514
515	@media (min-width: 870px) { 
516		.Tier3-Syn-Product-Detail-2024 .tab-card { 
517			flex-wrap: nowrap; 
518			padding-bottom: 45px; 
519
520
521	@media (min-width: 1376px) { 
522		.Tier3-Syn-Product-Detail-2024 .tab-card { 
523   			margin: 0 auto; 
524
525
526	@media (min-width: 1336px) { 
527		.Tier3-Syn-Product-Detail-2024 .tab-card { 
528			align-items: stretch; 
529
530
531 
532	.Tier3-Syn-Product-Detail-2024 .tab-card__left { 
533		display: flex; 
534		align-items: center; 
535		flex-direction: column; 
536		flex-shrink: 0; 
537		width: 100%; 
538		padding: 40px 0 10px 0; 
539
540	@media (min-width: 870px) { 
541		.Tier3-Syn-Product-Detail-2024 .tab-card__left { 
542			display: block; 
543			width: var(--left-width); 
544			padding-right: var(--left-padding); 
545
546		.Tier3-Syn-Product-Detail-2024 .tab-card__left .super-head { 
547			display: none; 
548
549
550    .Tier3-Syn-Product-Detail-2024 .tab-card__left img { 
551        height: auto; 
552		margin: auto; 
553		margin-bottom: 20px; 
554		display: block; 
555		max-height: var(--card-image-size); 
556		object-fit: contain; 
557		max-width: var(--card-image-size); 
558
559	#content .Tier3-Syn-Product-Detail-2024 .apply-now-link { 
560		width: 168px; 
561		padding: 10px 30px; 
562		margin-right: auto; 
563		margin-left: auto; 
564		background-color: var(--ecdma-btn-color); 
565		color: #fff; 
566		text-transform: capitalize; 
567		text-align: center; 
568		text-decoration: none; 
569
570	#content .Tier3-Syn-Product-Detail-2024 .apply-now-link:hover { 
571		background-color: var(--ecdma-hover-color); 
572
573	.Tier3-Syn-Product-Detail-2024 .apply-now-link, 
574	.Tier3-Syn-Product-Detail-2024 .reward-calculator-link, 
575	.Tier3-Syn-Product-Detail-2024 .transfer-modal-link { 
576		display: block; 
577		text-align: center; 
578		margin-bottom: 10px; 
579
580 
581	.Tier3-Syn-Product-Detail-2024 .tab-card__right { 
582		flex-grow: 1; 
583		padding: 0 0 40px 0; 
584
585	@media (min-width: 870px) { 
586		.Tier3-Syn-Product-Detail-2024 .tab-card__right { 
587			padding: 30px 0 30px 0; 
588
589
590	.Tier3-Syn-Product-Detail-2024 .tab-card__right .super-head { 
591		display: none; 
592
593	@media (min-width: 870px) { 
594		.Tier3-Syn-Product-Detail-2024 .tab-card__right .super-head { 
595			display: block; 
596
597
598	#content .Tier3-Syn-Product-Detail-2024 .super-head { 
599		color: #000; 
600		margin-bottom: 18px; 
601
602	#content .Tier3-Syn-Product-Detail-2024 .super-head--super-script { 
603		font-size: 10px; 
604    	line-height: 13px; 
605
606	#content .Tier3-Syn-Product-Detail-2024 .tab-card__right .offer-copy p { 
607		margin-bottom: 10px; 
608
609	.Tier3-Syn-Product-Detail-2024 .tab-card__right .offer-copy { 
610		color: #000; 
611		margin-bottom: 20px; 
612
613	#content .Tier3-Syn-Product-Detail-2024 .tab-card__right .offer-copy h1, 
614	#content .Tier3-Syn-Product-Detail-2024 .tab-card__right .offer-copy h2, 
615	#content .Tier3-Syn-Product-Detail-2024 .tab-card__right .offer-copy h3, 
616	#content .Tier3-Syn-Product-Detail-2024 .tab-card__right .offer-copy h4, 
617	#content .Tier3-Syn-Product-Detail-2024 .tab-card__right .offer-copy h5, 
618	#content .Tier3-Syn-Product-Detail-2024 .tab-card__right .offer-copy h6 { 
619		color: var(--ecdma-text-color); 
620		font-size: 25px; 
621		font-style: normal; 
622		font-weight: 400; 
623		line-height: 1.3; 
624		margin-bottom: 8px; 
625
626	.Tier3-Syn-Product-Detail-2024 .benefits { 
627        display: flex; 
628		flex-wrap: wrap; 
629		gap: 20px; 
630
631    .Tier3-Syn-Product-Detail-2024 .benefits__item { 
632		display: flex; 
633		flex-wrap: none; 
634		gap: 10px; 
635		flex: 1; 
636		flex-basis: 100%; 
637
638	@media (min-width: 870px) { 
639		.Tier3-Syn-Product-Detail-2024 .benefits__item { 
640			flex-basis: calc(50% - 20px); 
641
642
643	.Tier3-Syn-Product-Detail-2024 .benefits__item .benefitfootnote { 
644		font-size: 85%; 
645
646    .Tier3-Syn-Product-Detail-2024 .benefits__item img { 
647        width: 20px; 
648        height: 20px; 
649        margin-right: 5px; 
650
651	#content .Tier3-Syn-Product-Detail-2024 .benefits__item h1, 
652	#content .Tier3-Syn-Product-Detail-2024 .benefits__item h2, 
653	#content .Tier3-Syn-Product-Detail-2024 .benefits__item h3, 
654	#content .Tier3-Syn-Product-Detail-2024 .benefits__item h4, 
655	#content .Tier3-Syn-Product-Detail-2024 .benefits__item h5, 
656	#content .Tier3-Syn-Product-Detail-2024 .benefits__item h6 { 
657		color: var(--ecdma-text-color); 
658		font-size: 20px; 
659		font-style: normal; 
660		font-weight: 700; 
661		line-height: 1.3; 
662		margin-bottom: 8px; 
663
664	.Tier3-Syn-Product-Detail-2024 .svg-container, 
665	.Tier3-Syn-Product-Detail-2024 .benefits__item h1, 
666	.Tier3-Syn-Product-Detail-2024 .benefits__item h2, 
667	.Tier3-Syn-Product-Detail-2024 .benefits__item h3, 
668	.Tier3-Syn-Product-Detail-2024 .benefits__item h4, 
669	.Tier3-Syn-Product-Detail-2024 .benefits__item h5, 
670	.Tier3-Syn-Product-Detail-2024 .benefits__item h6 { 
671		display: inline-block; 
672
673	#content .Tier3-Syn-Product-Detail-2024 .tab-card__right .offer-copy h2 sup, #content .Tier3-Syn-Product-Detail-2024 .benefits__item h3 sup { 
674 		font-size: 75%; 
675		font-weight: normal; 
676
677	.Tier3-Syn-Product-Detail-2024 .svg-container svg, 
678	.Tier3-Syn-Product-Detail-2024 .svg-container svg rect, 
679	.Tier3-Syn-Product-Detail-2024 .svg-container svg circle, 
680	.Tier3-Syn-Product-Detail-2024 .svg-container svg ellipse, 
681	.Tier3-Syn-Product-Detail-2024 .svg-container svg line, 
682	.Tier3-Syn-Product-Detail-2024 .svg-container svg polygon, 
683	.Tier3-Syn-Product-Detail-2024 .svg-container svg polyline, 
684	.Tier3-Syn-Product-Detail-2024 .svg-container svg path, 
685	.Tier3-Syn-Product-Detail-2024 .svg-container svg text, 
686	.Tier3-Syn-Product-Detail-2024 .svg-container svg tspan, 
687	.Tier3-Syn-Product-Detail-2024 .svg-container svg textPath 
688	.Tier3-Syn-Product-Detail-2024 .svg-container svg g, 
689	.Tier3-Syn-Product-Detail-2024 .svg-container svg use { 
690        fill: var(--ecdma-bg-color) !important; 
691		stroke: var(--ecdma-bg-color) !important; 
692
693	.Tier3-Syn-Product-Detail-2024 .svg-container svg, 
694	.Tier3-Syn-Product-Detail-2024 .svg-container img { 
695		margin: 0; 
696		max-width: 30px; 
697		height: 30px; 
698
699	.additional-benefit-container { 
700		background-color: #F7F7F7; 
701		padding: 30px 0; 
702		margin-bottom: 30px 
703
704	.Tier3-Syn-Product-Detail-2024 .additional-benefit { 
705		max-width: 1336px; 
706  		margin: 0 20px; 
707
708	@media (min-width: 1376px) { 
709		.Tier3-Syn-Product-Detail-2024 .additional-benefit { 
710    		margin: 0 auto; 
711
712
713	.Tier3-Syn-Product-Detail-2024 .additional-benefit__layout { 
714		display: flex; 
715		flex-wrap: wrap; 
716		margin: 20px 0; 
717		gap: 20px; 
718
719	@media (min-width: 870px) { 
720		.Tier3-Syn-Product-Detail-2024 .additional-benefit__layout { 
721			margin: 40px 0; 
722			gap: var(--addition-benefits-gap-desktop); 
723
724
725	#content .Tier3-Syn-Product-Detail-2024 .additional-benefit__header { 
726		color: #000; 
727		text-align: left; 
728		font-size: 25px; 
729		font-weight: 400; 
730		line-height: 1.4; 
731
732	@media (min-width: 870px) { 
733		#content .Tier3-Syn-Product-Detail-2024 .additional-benefit__header { 
734			text-align: center; 
735
736
737	 
738	 .Tier3-Syn-Product-Detail-2024 .additional-benefit__item { 
739		display: flex; 
740		flex-wrap: nowrap; 
741		gap: 10px; 
742		flex: 1; 
743		flex-basis: 100%; 
744
745	@media (min-width: 870px) { 
746		.Tier3-Syn-Product-Detail-2024 .additional-benefit__item { 
747			flex-basis: calc(25% - var(--addition-benefits-gap-desktop)); 
748
749
750	#content .Tier3-Syn-Product-Detail-2024 .additional-benefit__item h1, 
751	#content .Tier3-Syn-Product-Detail-2024 .additional-benefit__item h2, 
752	#content .Tier3-Syn-Product-Detail-2024 .additional-benefit__item h3, 
753	#content .Tier3-Syn-Product-Detail-2024 .additional-benefit__item h4, 
754	#content .Tier3-Syn-Product-Detail-2024 .additional-benefit__item h5, 
755	#content .Tier3-Syn-Product-Detail-2024 .additional-benefit__item h6 { 
756		color: var(--ecdma-text-color); 
757		font-size: 20px; 
758		font-style: normal; 
759		font-weight: 700; 
760		line-height: 1.4; 
761		margin-bottom: 10px; 
762
763	.Tier3-Syn-Product-Detail-2024 .additional-benefit__button .apply-now-link { 
764		margin: auto; 
765
766	@media (min-width: 870px) { 
767		.Tier3-Syn-Product-Detail-2024 .additional-benefit__button .apply-now-link { 
768			max-width: var(--card-image-size); 
769
770
771</style> 
An error occurred while processing the template.
The following has evaluated to null or missing:
==> qstringmap["ecdma-lc"]  [in template "10154#10192#18387104" at line 5, column 15]

----
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 lc = qstringmap["ecdma-lc"]?f...  [in template "10154#10192#18387104" at line 5, column 1]
----
1<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! /> 
2<#assign url = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()/> 
3<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))> 
4 
5<#assign lc = qstringmap["ecdma-lc"]?first> 
6<#assign lc = htmlUtil.escape(lc)> 
7<#assign lc = htmlUtil.escapeJS(lc)> 
8 
9<#assign prefix = "00000" > 
10<#assign lcWithPrefix = prefix + lc > 
11<#assign withPrefixLength = lcWithPrefix?length > 
12<#assign startHere = withPrefixLength - 5> 
13<#assign lc = lcWithPrefix?substring(startHere)> 
14 
15<#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! > 
16<#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
17<#if clientProfileList?first?has_content> 
18    <#assign clientProfile = clientProfileList?first> 
19    <#assign partnerName = clientProfile.getMarketingNameLong()> 
20 
21    <#assign pbu = clientProfile.getPbu()> 
22    <#assign subbu = clientProfile.getSUBBRANDBUNBR()> 
23	 
24	<#assign fultonBankpbu = "0727491"> 
25	<#if pbu == fultonBankpbu> 
26		<style> 
27			#hideFultonInfo { 
28				display: none; 
29
30		</style> 
31	</#if> 
32 
33    <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&'+ pbu +'&'+subbu)>  
34 
35 
36    <#if (fiCardsData?size > 0)> 
37 
38        <#list fiCardsData as fib> 
39            <#switch fib.offerType> 
40                <#case "101"> 
41                    <#assign productURL = "consumer-edr"> 
42                    <#assign productName = "Everyday Rewards+"> 
43                    <#break> 
44                <#case "103"> 
45                    <#assign productURL = "consumer-edr"> 
46                    <#assign productName = "Everyday Rewards+"> 
47                    <#break> 
48                <#case "104"> 
49                    <#assign productURL = "max-cash"> 
50                    <#assign productName = "Max Cash Preferred Card">       
51                    <#break> 
52                <#case "108"> 
53                    <#assign productURL="consumer-platinum"> 
54                    <#assign productName="Platinum Card"> 
55                    <#break> 
56                <#case "109"> 
57                    <#assign productURL="consumer-platinum"> 
58                    <#assign productName="Platinum Card"> 
59                    <#break> 
60                <#case "115"> 
61                    <#assign productURL = "secured"> 
62                    <#assign productName = "Secured Card" > 
63                    <#break> 
64                <#case "138"> 
65                    <#assign productURL = "travel-rewards-plus"> 
66                    <#assign productName = "Travel Rewards+" > 
67                    <#break> 
68                <#case "141"> 
69                    <#assign productURL = "college-real-rewards"> 
70                    <#assign productName = "College Real Rewards" >     
71                    <#break> 
72                <#case "147"> 
73                    <#assign productURL = "max-cash-secured"> 
74                    <#assign productName = "Max Cash Secured Card" >     
75                    <#break> 
76                <#case "154"> 
77                    <#assign productURL = "reserve-rewards-plus"> 
78                    <#assign productName = "Reserve Rewards+" > 
79                    <#break> 
80                <#case "121"> 
81                    <#assign productURL = "business-platinum"> 
82                    <#assign productName = "Business Card" > 
83                    <#break> 
84                <#case "128"> 
85                    <#assign productURL = "business-cash-preferred"> 
86                    <#assign productName = "Business Cash Preferred" > 
87                    <#break> 
88                <#case "143"> 
89                    <#assign productURL = "business-real-rewards"> 
90                    <#assign productName = "Business Real Rewards Card" > 
91                    <#break> 
92                <#case "144"> 
93                    <#assign productURL = "smart-business-rewards"> 
94                    <#assign productName = "Smart Business Rewards Card" >     
95                    <#break> 
96                <#default>                                                         
97            </#switch> 
98            <#if productURL?has_content && url?matches(".*/${productURL}\\?.*")> 
99                <script> 
100                 console.log('offerType', '${fib.offerType}', '${productURL}') 
101                </script> 
102                        <#assign cardProviderAbbreviated = ""> 
103        <#assign cardProvider = utilServ.makeCall('crcDDCGetMcOrVisa', fib.offerType + '&' + lc)> 
104        <#if (cardProvider?size > 0)> 
105            <#-- This will be V for visa or M for mastercard. --> 
106            <#assign cardProviderAbbreviated = cardProvider[0].cardType> 
107        <#else> 
108            <script> 
109                console.log("No card provider(Visa/Master Card) found for disclaimer"); 
110            </script> 
111        </#if> 
112                <#list product.getSiblings() as card> 
113                    <#if (card.offerType.getData() == fib.offerType)> 
114                        <div title="${partnerName!''} - Disclaimer" class="page-disclaimer"> 
115                            <div class="page-disclaimer__content"> 
116                                <#if pbuList.getData()?has_content && pbuList.getData()?contains(pbu) && card.disclaimerBank.getData()?has_content> 
117                                    ${card.disclaimerBank.getData()} 
118                                <#else> 
119                                    <#if (card.disclaimerVisa?has_content && cardProviderAbbreviated?contains('V'))> 
120                                        ${card.disclaimerVisa.getData()} 
121                                    </#if> 
122                                    <#if (card.disclaimerMasterCard?has_content && cardProviderAbbreviated?contains('M')) > 
123                                        ${card.disclaimerMasterCard.getData()} 
124                                    </#if> 
125                                </#if> 
126                            </div>                            
127                        </div> 
128                        <#break> 
129                    </#if> 
130                </#list> 
131                <#break> 
132            </#if> 
133        </#list> 
134    </#if> 
135</#if> 
An error occurred while processing the template.
The following has evaluated to null or missing:
==> qstringmap["ecdma-lc"]  [in template "10154#10192#18387099" at line 3, column 15]

----
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 lc = qstringmap["ecdma-lc"]?f...  [in template "10154#10192#18387099" at line 3, column 1]
----
1<#assign url = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()/> 
2<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))>  
3<#assign lc = qstringmap["ecdma-lc"]?first> 
4<#assign lc = htmlUtil.escape(lc)> 
5<#assign lc = htmlUtil.escapeJS(lc)> 
6 
7<#if (lc?has_content && lc?length gt 5)> 
8    <#assign lc = lc[0..4] > 
9</#if> 
10<#assign lc = lc?web_safe> 
11<#assign aDateTime = .now> 
12<#assign currentYear = aDateTime?string.yyyy> 
13 
14 
15<footer class="page-footer" id="footerIdAdPlatinum"> 
16    <div class="page-footer__content"> 
17        ${footerContent.getData()} 
18    </div> 
19</footer> 
20 
21<!-- BEGIN CALIFORNIA OPT-OUT MODAL STYLE AND MARKUP --> 
22<script src="https://unpkg.com/micromodal/dist/micromodal.min.js"></script> 
23<style> 
24    #opt-out-button, 
25    .modal__btn.learn-more { 
26        background: #0C2074; 
27        border: 1px solid #0C2074; 
28        color: white; 
29        text-transform: uppercase; 
30        text-decoration: none; 
31        font-size: 16px; 
32        padding: 0.5rem 2rem; 
33        display: inline-block; 
34        border-radius: 0; 
35
36    #opt-out-button:hover, 
37    .modal__btn.learn-more:hover { 
38        color: white !important; 
39        border-color: #2C76AF !important; 
40        background-color: #2C76AF !important; 
41
42    .modal .modal__btn.learn-more { 
43        background: white; 
44        border: 1px solid #0C2074; 
45        color: #0C2074; 
46        text-decoration: none; 
47
48    #opt-out-button[disabled="true"] { 
49        background-color: rgba(0,0,0,.15); 
50        color: rgba(0,0,0,.45); 
51        border-color: rgba(0,0,0,.25); 
52
53    #opt-out-button:hover[disabled="true"] { 
54        background-color: rgba(0,0,0,.15) !important; 
55        color: rgba(0,0,0,.45) !important; 
56        border-color: rgba(0,0,0,.25) !important; 
57
58    #opt-out-button:focus { 
59        outline-style: solid; 
60        outline-color: white; 
61        outline-offset: -3px; 
62        outline-width: 1px; 
63
64    .opt-out-link svg { 
65        width: 30px; 
66        height: 14px; 
67        width: auto; 
68        vertical-align: middle; 
69
70    .modal__overlay { 
71        position: fixed; 
72        top: 0; 
73        left: 0; 
74        right: 0; 
75        bottom: 0; 
76        background: rgba(0,0,0,0.6); 
77        display: flex; 
78        justify-content: center; 
79        align-items: center; 
80
81 
82    .modal__container { 
83        background-color: #fff; 
84        padding: 30px; 
85        max-width: 500px; 
86        max-height: 100vh; 
87        border-radius: 4px; 
88        overflow-y: auto; 
89        box-sizing: border-box; 
90
91 
92    .modal__header { 
93        display: flex; 
94        justify-content: space-between; 
95        align-items: center; 
96
97 
98    .modal .modal__container .modal__title { 
99        margin-top: 0; 
100        margin-bottom: 0; 
101        font-weight: 600; 
102        font-size: 20px; 
103        line-height: 1.25; 
104        color: #00449e; 
105        box-sizing: border-box; 
106
107 
108    .modal__close { 
109        background: transparent; 
110        border: 1px solid white; 
111        padding: 4px 8px; 
112
113    .modal__close:hover { 
114        border: 1px solid black; 
115
116 
117    .modal__header .modal__close:before { content: "\2715"; } 
118 
119    .modal__content { 
120        margin-top: 2rem; 
121        margin-bottom: 2rem; 
122        line-height: 1.5; 
123
124 
125    @keyframes mmfadeIn { 
126        from { opacity: 0; } 
127        to { opacity: 1; } 
128
129 
130    @keyframes mmfadeOut { 
131        from { opacity: 1; } 
132        to { opacity: 0; } 
133
134 
135    @keyframes mmslideIn { 
136        from { transform: translateY(15%); } 
137        to { transform: translateY(0); } 
138
139 
140    @keyframes mmslideOut { 
141        from { transform: translateY(0); } 
142        to { transform: translateY(-10%); } 
143
144 
145    .micromodal-slide { 
146        display: none; 
147
148 
149    .micromodal-slide.is-open { 
150        display: block; 
151
152 
153    .micromodal-slide[aria-hidden="false"] .modal__overlay { 
154        animation: mmfadeIn .3s cubic-bezier(0.0, 0.0, 0.2, 1); 
155
156 
157    .micromodal-slide[aria-hidden="false"] .modal__container { 
158        animation: mmslideIn .3s cubic-bezier(0, 0, .2, 1); 
159
160 
161    .micromodal-slide[aria-hidden="true"] .modal__overlay { 
162        animation: mmfadeOut .3s cubic-bezier(0.0, 0.0, 0.2, 1); 
163
164 
165    .micromodal-slide[aria-hidden="true"] .modal__container { 
166        animation: mmslideOut .3s cubic-bezier(0, 0, .2, 1); 
167
168 
169    .micromodal-slide .modal__container, 
170    .micromodal-slide .modal__overlay { 
171        will-change: transform; 
172
173</style> 
174 
175<div class="modal micromodal-slide" id="modal-1" aria-hidden="true"> 
176<div class="modal__overlay" tabindex="-1" data-micromodal-close> 
177    <div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-1-title"> 
178    <header class="modal__header"> 
179        <h2 class="modal__title" id="modal-1-title"> 
180        Your California privacy choices 
181        </h2> 
182        <button class="modal__close" aria-label="Close modal" data-micromodal-close></button> 
183    </header> 
184    <div class="modal__content" id="modal-1-content"> 
185        <div id="message-no-cookie"> 
186            <p> 
187            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> 
188             
189<p>&nbsp;</p> 
190 
191<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> 
192    </div> 
193    <div id="message-with-cookie"> 
194        <p>You have successfully opted-out.</p> 
195    </div> 
196    </div> 
197    <div class="modal__footer"> 
198        <a href="https://www.myaccountaccess.com/onlineCard/publicPrivacyPolicy.do?phase=privacyPolicy" target="_blank" class="modal__btn learn-more" aria-label="Learn more">Learn More</a> 
199        <button id="opt-out-button" class="modal__btn modal__btn-primary" aria-label="Opt Out and Close modal" onclick="window.californiaOptOut()">Opt Out</button> 
200    </div> 
201    </div> 
202</div> 
203</div> 
204<!-- END CALIFORNIA OPT-OUT MODAL STYLE AND MARKUP --> 
205<!-- BEGIN CALIFORNIA OPT-OUT MODAL LOGIC --> 
206<script> 
207AUI().ready(function() { 
208        //this aui.ready prevents from it not showing cali opt out modal due to getting the node before page finished loading. 
209        const copyrightNode = document.querySelector('#footerIdAdPlatinum .copyright'); 
210        const fdicNode = document.querySelector('#footerIdAdPlatinum .fdic'); 
211        const agreementNode = document.querySelector('#footerIdAdPlatinum .member-agreement'); 
212        agreementNode.innerHTML= '<a class="text-color-white" href="https://onboarding.elancreditcard.com/usl/generic/credit-card/application/card-member-agreements?locationCode=${lc!''}" target="_blank">Cardmember Agreements</a>'; 
213        copyrightNode.innerHTML= '© Elan Financial Services ' + ${currentYear}; 
214        copyrightNode.classList.add('ecdma-footer-client-name-copyright'); 
215        fdicNode.innerHTML = '<a class="text-color-white" href="https://www.myaccountaccess.com/onlineCard/publicPrivacyPolicy.do?phase=privacyPolicy" target="_blank">Privacy and Security</a>'; 
216        /* BEGIN CALIFORNIA OPT-OUT MODAL TRIGGER */ 
217        fdicNode.insertAdjacentHTML('afterend', '<div class="opt-out-container" ><a href="javascript:void(0);" class="opt-out-link" 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>'); 
218        /* END CALIFORNIA OPT-OUT MODAL TRIGGER */ 
219 
220        window.getCookieDomain = function() { 
221            var hostname = window.location.hostname.split("."); 
222            return hostname && hostname.slice(hostname.length - 2).join("."); 
223
224        window.setToOptOut = function() { 
225            if (window.getCookie('privacy_optout')) { 
226                    document.getElementById('message-no-cookie').style.display = 'none'; 
227                    document.getElementById('message-with-cookie').style.display = 'block'; 
228                    document.getElementById('opt-out-button').setAttribute('disabled', true) 
229                } else { 
230                    document.getElementById('message-no-cookie').style.display = 'block'; 
231                    document.getElementById('message-with-cookie').style.display = 'none'; 
232
233
234        window.getCookie = function(name) { 
235            var value = '; ' + document.cookie; 
236            var parts = value.split('; ' + name + '='); 
237            if (parts.length === 2) return parts.pop().split(';').shift(); 
238
239        window.californiaOptOut = function() { 
240            if (!window.getCookie('privacy_optout')) { 
241                document.cookie = 'privacy_optout=1; path=/; domain=' + window.getCookieDomain() + '; expires=Thu, 31 Dec 2099 00:00:00 GMT;'; 
242                try { 
243                if (window.CustomEvent) { 
244                    window.dispatchEvent(new CustomEvent('privacy_optout')); 
245                } else { 
246                    var privacyOptoutEvent = document.createEvent('Event'); 
247                    privacyOptoutEvent.initEvent('privacy_optout', true, true); 
248                    window.dispatchEvent(privacyOptoutEvent); 
249
250                window.setToOptOut(); 
251                } catch (err) { 
252                console.error(err); 
253
254
255
256        MicroModal.init({ 
257            onShow: window.setToOptOut 
258        }); 
259     
260        // user browser setting for Global Privacy Control to opt out of sharing information with third parties 
261        const isBrowserGpcOptOut = navigator.globalPrivacyControl; 
262        if(isBrowserGpcOptOut === true) { 
263        window.californiaOptOut(); 
264
265    }); 
266</script> 
267<!-- END CALIFORNIA OPT-OUT MODAL LOGIC -->