テンプレート処理中にエラーが発生しました。
The following has evaluated to null or missing:
==> qstringmap["bankercode"]  [in template "10153#10191#5883698" at line 8, 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 "10153#10191#5883698" at line 8, column 1]
----
1<#assign url = themeDisplay.getURLCurrent() > 
2<#assign oadURL = propsUtil.get('elan.oad.url') > 
3<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))> 
4<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! /> 
5<#assign url404 = '/error/404.html'> 
6<#assign oadURL_TC = 'https://online1.elancard.com/oad/terms.controller' > 
7 
8<#assign bCode= qstringmap["bankercode"]?first> 
9<#assign bCode = htmlUtil.escape(bCode)> 
10<#assign bCode = htmlUtil.escapeJS(bCode)> 
11 
12<#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetailSql','0&'+bCode)> 
13<#list bData as b>      
14    <#assign lc = b.locationcode > 
15    <#assign rLC = b.reallocationcode > 
16    <#assign mappedLC = b.mappedLocationCode > 
17    
18</#list>  
19   
20<#if bCode?starts_with("amp") && (url?contains("11t1m"))> 
21    <#assign ameriprise = true> 
22<#else> 
23    <#assign ameriprise = false> 
24</#if> 
25 
26<#if mappedLC?has_content && !ameriprise> 
27    <#assign lc = mappedLC > 
28</#if> 
29<#assign isEmployee = false> 
30 
31<#assign fiData= utilServ.makeCall('crcDDCBankerAssistedAppSql','0&'+bCode)> 
32<#if fiData?first?has_content> 
33    <#assign fi = fiData?first> 
34    <#if ((fi.projectId == "12") || (fi.projectId == "13") || (fi.projectId == "14") || (fi.projectId == "15"))> 
35        <#assign subbu_special = fi.offerId> 
36    </#if> 
37    <#if fi.projectType == "emp"> 
38        <#assign isEmployee = true> 
39    </#if> 
40</#if>  
41 
42<#if lc?has_content> 
43    <#assign prefix = "00000" > 
44    <#assign lcWithPrefix = prefix + lc> 
45    <#assign withPrefixLength = lcWithPrefix?length > 
46    <#assign startHere = withPrefixLength - 5> 
47    <#assign lc = lcWithPrefix?substring(startHere)>     
48    <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! /> 
49    <#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
50 
51    <#assign clientProfile = clientProfileList?first> 
52    <#assign partnerName = clientProfile.getMarketingNameLong()> 
53    <#assign pbu = clientProfile.getPbu()> 
54    <#assign subbu = clientProfile.getSUBBRANDBUNBR()>     
55    <#assign clientDataService = (serviceLocator.findService("com.elan.crc.user.service.CrcPbuLocalService"))! /> 
56    <#assign clientProfileDataList = clientDataService.getByPbuAndSubBu(pbu,subbu)> 
57    <#assign partnerUrl = clientProfileDataList.getPartnerMainUrl()> 
58    <#if partnerUrl?has_content && !partnerUrl?matches(r"(?i)^https?\:\/\/.*") && !partnerUrl?matches(r"(?i)^https?\:&#x2F;&#x2F;.*")>             
59        <#assign partnerUrl = 'https://' + partnerUrl> 
60    </#if> 
61 
62    <!-- <#assign clientdataList = utilServ.makeCall('crcDDCTier1Customizations','0&'+pbu+'&'+subbu+'&11')> 
63    <#if clientdataList?has_content > 
64        <#assign clientdata = clientdataList?first > 
65    	<#assign backgroundHexColor = clientdata["backgroundHexColor"] > 
66		<#assign backgroundImage = clientdata["backgroundImage"] > 
67		<#assign buttonHexColor = clientdata["buttonHexColor"] > 
68		<#assign AprMin = clientdata["AprMin"] > 
69		<#assign AprMax = clientdata["AprMax"] > 
70		<#assign cashAdvanceRate = clientdata["cashAdvanceRate"] > 
71		<#assign BillingCycles = clientdata["BillingCycles"] > 
72		<#assign textHexColor = clientdata["textHexColor"] > 
73		<#assign linkHexColor = clientdata["linkHexColor"] > 
74		<#assign hoverColor = clientdata["hoverColor"] > 
75		<#assign secondaryBackgroundImage = clientdata["secondaryBackgroundImage"] > 
76		<#assign transparency = clientdata["transparency"] > 
77		<#assign businessBackgroundImageLarge = clientdata["businessBackgroundImageLarge"] > 
78		<#assign businessBackgroundImageSmall = clientdata["businessBackgroundImageSmall"] > 
79		<#assign businessTransparency = clientdata["businessTransparency"] > 
80		<#assign dmaBackgroundImage = clientdata["dmaBackgroundImage"] > 
81		<#assign secondaryDmaBackgroundImage = clientdata["secondaryDmaBackgroundImage"] > 
82	</#if> --> 
83	 
84    <#assign logoFileName = clientProfile.getLogoBFormat1()?replace(".", "-")?replace("-([^-]*)$", ".$1", "r")?lower_case> 
85    <#assign cdnLogoUrl = (propsUtil.get('rackspace.cdn.web.url'))!> 
86    <#if pbu == "0864054"> 
87        <#assign override = "berkshire"> 
88    <#else> 
89        <#assign override = " "> 
90    </#if> 
91    <#--  this one should be delete for prod  --> 
92                 
93    <#-- <#assign cdnLogoUrl = "https://4f61efb10f32ceb57895-3733e103896f37259213d6ad72acbe68.ssl.cf2.rackcdn.com">   
94    <#assign logoFileName = pbu + "-" + subbu + ".png">--> 
95 
96    <#assign cdnCardArtUrl = (propsUtil.get('rackspace.cdn.cardart.url'))!> 
97    <#if (subbu_special?has_content)> 
98        <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu_special)>  
99    <#else> 
100        <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu)>  
101    </#if> 
102    <#assign temp = []> 
103    <#assign consumerCards = []> 
104    <#assign businessCards = []>  
105    <#assign offerTypeList = []>       
106    <#assign index = 0> 
107    <#assign ameriprise_cards= []> 
108    <#assign consumerOfferTypes =['101', '108', '109', '104', '138', '154', '141', '147', '115']> 
109    <#assign businessOfferTypes =['128', '121', '144', '143']> 
110    <#list fiCardsData as fib> 
111        <#if (fib.offerType?has_content && !(offerTypeList?seq_contains(fib.offerType)))>   
112            <#assign offerTypeList = offerTypeList + [fib.offerType]> 
113            <#assign temp = temp + fiCardsData[index..index]>    
114            <#if ameriprise> 
115                <#if (fib.offerType == "101" || fib.offerType == "103")> 
116                    <#assign ameriprise_cards= ameriprise_cards + fiCardsData[index..index]> 
117                </#if>                      
118            <#else> 
119                <#if consumerOfferTypes?seq_contains(fib.offerType)> 
120                    <#assign consumerCards = consumerCards + fiCardsData[index..index]> 
121                <#elseif (businessOfferTypes?seq_contains(fib.offerType))> 
122                    <#assign businessCards = businessCards + fiCardsData[index..index]> 
123                </#if>             
124            </#if>                 
125        </#if>  
126        <#assign index = index + 1>   
127                     
128    </#list>        
129    <#assign fiCardsData = temp> 
130    <#if ameriprise> 
131        <#assign consumerCards = ameriprise_cards?sort_by("offerType")> 
132    </#if> 
133 
134    <#if (fiCardsData?size > 0)>   
135        <#if (subbu_special?has_content)> 
136            <#assign lc_used = fiCardsData?first.WebLocationCode>   
137        <#else> 
138            <#if ameriprise> 
139                <#assign lc_used = mappedLC>  
140            <#else> 
141                <#assign lc_used = lc>  
142            </#if> 
143        </#if>               
144        <#assign offerId = ""> 
145        <#assign sourceCode = ""> 
146        <#assign cardArtImage = ""> 
147        <#assign productUrl = ""> 
148        <#assign product = ""> 
149        <#assign preparerType = "customer"> 
150        <#assign apr = ""> 
151        <#assign cardIndex = 0>  
152        <#assign empOfferId = "">  
153        <#if consumerCards[0]?has_content> 
154            <#assign empOfferId = consumerCards[0].empofferId!""> 
155        </#if> 
156        <#assign marketingChannel = 'SAT2A'> 
157        <#if isEmployee> 
158            <#assign marketingChannel = 'empl'> 
159            <#assign offerId = empOfferId>       
160        </#if> 
161 
162        <#if (class.getData() == "landing-consumer" && consumerCards?size > 0)> 
163            <#if (offerTypeList?seq_contains("108") || offerTypeList?seq_contains("109"))> 
164                <#list consumerCards as card>                    
165                    <#if (card.offerType=="108" || card.offerType=="109") > 
166                        <#assign offerId = card.saaofferId> 
167                        <#if isEmployee> 
168                            <#assign offerId = card.empofferId!""> 
169                        </#if> 
170                        <#assign sourceCode = card.sourceCode> 
171                        <#assign cardArtImage = cdnCardArtUrl + "/"+card.filename+".png"> 
172                        <#assign cardArtImageAlt = cdnCardArtUrl + "/"+card.filename+".jpg"> 
173 
174                        <#assign productUrl="consumer-platinum2103"> 
175                        <#assign product="Platinum"> 
176                        <#assign cardIndex = 4> 
177 
178                        <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', offerId + '&'+ sourceCode)> 
179                        <#if (scrapedData?size > 0)> 
180                            <#list scrapedData as sItem> 
181                                <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) > 
182                                    <#assign apr = sItem.scrapedValue?replace("(\n|\r\n|\r)+", " ","r")> 
183                                    <#break> 
184                                </#if> 
185                            </#list> 
186                            <script> 
187                                $(document).ready(function () { 
188                                    var aprText = "${apr}"; 
189                                    if (aprText) { 
190                                        try { 
191                                            $(".apr-full-text").html(aprText); 
192                                            var matches= aprText.match(/\d+(\.\d+)?%?/g); 
193                                            var billing_cycle = matches[1]; 
194                                            var apr_min = apr_min = matches[2]; 
195                                            var apr_max = apr_max = matches[3]; 
196                                            if (billing_cycle) { 
197                                                $(".scraped-billing-cycle").html(billing_cycle); 
198
199                                            if (apr_min) { 
200                                                $(".scraped-apr-min").html(apr_min); 
201
202                                            if (apr_max) { 
203                                                $('.scraped-apr-max').html(apr_max); 
204
205 
206                                        } catch (e) { 
207                                            console.log(e); 
208
209                                    } else { 
210                                      $(".apr-full-text").html(''); 
211
212                                }); 
213                            </script> 
214                        </#if> 
215                        <script> 
216                        var product = "${product}"; 
217                        var partnerName = "${partnerName}"; 
218                          $(document).ready(function () { 
219                            $(".see-terms").replaceWith('<a href="${oadURL_TC}?step=display&amp;offerId=${offerId}&amp;locationCode=${lc_used}" target="_blank"><span class="screen-reader-only">' + partnerName + ' ' + product + ' Card</span>See terms &amp; conditions</a>'); 
220                          }); 
221                        </script> 
222                    </#if> 
223                </#list> 
224            <#else> 
225                <#assign displayedCard = consumerCards[0]> 
226                <#assign offerId = displayedCard.saaofferId> 
227                <#if isEmployee> 
228                    <#assign offerId = displayedCard.empofferId!""> 
229                </#if> 
230                <#assign sourceCode = displayedCard.sourceCode> 
231                <#assign cardArtImage = cdnCardArtUrl + "/"+ displayedCard.filename + ".png"> 
232                <#assign cardArtImageAlt = cdnCardArtUrl + "/"+ displayedCard.filename + ".jpg"> 
233                <#if ameriprise> 
234                    <#if (displayedCard.offerType == "101")> 
235                        <#assign productUrl="ameriprise-premier-visa-signature"> 
236                        <#assign product="Premier Visa Signature"> 
237                        <#assign cardIndex = 0> 
238                    <#elseif (displayedCard.offerType == "103")> 
239                        <#assign productUrl = "ameriprise-visa-signature"> 
240                        <#assign product="Visa Signature"> 
241                        <#assign cardIndex = 1> 
242                    </#if> 
243                <#else>                   
244                        <#if (displayedCard.offerType == "108" || displayedCard.offerType == "109")> 
245                            <#assign productUrl = "consumer-platinum2103"> 
246                            <#assign product="Platinum">    
247                            <#assign cardIndex = 4>    
248                            <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', offerId + '&'+ sourceCode)> 
249                            <#if (scrapedData?size > 0)> 
250                                <#list scrapedData as sItem> 
251                                    <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) > 
252                                        <#assign apr = sItem.scrapedValue?replace("(\n|\r\n|\r)+", " ","r")> 
253                                        <#break> 
254                                    </#if> 
255                                </#list> 
256                                <script> 
257                                    $(document).ready(function () { 
258                                        var aprText = "${apr}"; 
259                                        if (aprText) { 
260                                            try { 
261                                                $(".apr-full-text").html(aprText); 
262                                                var matches= aprText.match(/\d+(\.\d+)?%?/g); 
263                                                var billing_cycle = matches[1]; 
264                                                var apr_min = apr_min = matches[2]; 
265                                                var apr_max = apr_max = matches[3]; 
266                                                if (billing_cycle) { 
267                                                    $(".scraped-billing-cycle").html(billing_cycle); 
268
269                                                if (apr_min) { 
270                                                    $(".scraped-apr-min").html(apr_min); 
271
272                                                if (apr_max) { 
273                                                    $('.scraped-apr-max').html(apr_max); 
274
275 
276                                            } catch (e) { 
277                                                console.log(e); 
278
279                                        } else { 
280                                          $(".apr-full-text").html(''); 
281
282                                    }); 
283                                </script> 
284                            </#if>     
285                        <#elseif (displayedCard.offerType == "104")> 
286                            <#assign productUrl = "max-cash"> 
287                            <#assign product="Max Cash Preferred"> 
288                            <#assign cardIndex = 0>    
289                        <#elseif (displayedCard.offerType == "141")> 
290                            <#assign productUrl = "college-real-rewards"> 
291                            <#assign product="College Real Rewards"> 
292                            <#assign cardIndex = 2>                                                
293                        <#elseif (displayedCard.offerType == "115")> 
294                            <#assign productUrl = "secured"> 
295                            <#assign product="Secured"> 
296                            <#assign cardIndex = 3> 
297                        </#if> 
298                </#if> 
299            </#if> 
300        </#if> 
301        <#if (class.getData() == "landing-business" && businessCards?size > 0)> 
302             
303            <#if (offerTypeList?seq_contains("128")) > 
304                <#list businessCards as card> 
305                    <#if (card.offerType=="128")> 
306                        <!-- bussiness cards offerId dose not check for isEmployee because employees can't have business cards --> 
307                        <#assign offerId = card.saaofferId> 
308                        <#assign sourceCode = card.sourceCode> 
309                        <#assign cardArtImage = cdnCardArtUrl + "/"+card.filename+".png"> 
310                        <#assign cardArtImageAlt = cdnCardArtUrl + "/"+card.filename+".jpg"> 
311                        <#assign productUrl = "business-cash-preferred"> 
312                        <#assign product="Business Cash Preferred">                 
313                        <#assign cardIndex = 0> 
314                    </#if> 
315                </#list> 
316            <#else> 
317                <#assign displayedCard = businessCards[0]> 
318                <!-- bussiness cards offerId dose not check for isEmployee because employees can't have business cards --> 
319                <#assign offerId = displayedCard.saaofferId> 
320                <#assign sourceCode = displayedCard.sourceCode> 
321                <#assign cardArtImage = cdnCardArtUrl + "/"+ displayedCard.filename + ".png"> 
322                <#assign cardArtImageAlt = cdnCardArtUrl + "/"+ displayedCard.filename + ".jpg"> 
323 
324                <#if (displayedCard.offerType=="143")> 
325                    <#assign productUrl="business-real-rewards"> 
326                    <#assign product="Business Real Rewards"> 
327                    <#assign cardIndex = 2>    
328                <#elseif (displayedCard.offerType=="144")> 
329                    <#assign productUrl = "smart-business-rewards"> 
330                    <#assign product="Smart Business Rewards"> 
331                    <#assign cardIndex = 1>                     
332                <#elseif (displayedCard.offerType=="121")> 
333                    <#assign productUrl = "business-platinum2103"> 
334                    <#assign product="Business Card"> 
335                    <#assign cardIndex = 3> 
336                    <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', offerId + '&'+ sourceCode)> 
337                    <#if (scrapedData?size > 0)> 
338                        <#list scrapedData as sItem> 
339                            <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) > 
340                                <#assign apr = sItem.scrapedValue?replace("(\n|\r\n|\r)+", " ","r")> 
341                                <#break> 
342                            </#if> 
343                        </#list> 
344                        <script> 
345                            $(document).ready(function () { 
346                                var aprText = "${apr}"; 
347                                if (aprText) { 
348                                    try { 
349                                        $(".apr-full-text").html(aprText); 
350                                        var matches= aprText.match(/\d+(\.\d+)?%?/g); 
351                                        var billing_cycle = matches[1]; 
352                                        var apr_min = apr_min = matches[2]; 
353                                        var apr_max = apr_max = matches[3]; 
354                                        if (billing_cycle) { 
355                                            $(".scraped-billing-cycle").html(billing_cycle); 
356
357                                        if (apr_min) { 
358                                            $(".scraped-apr-min").html(apr_min); 
359
360                                        if (apr_max) { 
361                                            $('.scraped-apr-max').html(apr_max); 
362
363 
364                                    } catch (e) { 
365                                        console.log(e); 
366
367                                } else { 
368                                  $(".apr-full-text").html(''); 
369
370                            }); 
371                        </script> 
372                    </#if>                       
373                </#if> 
374            </#if> 
375        </#if>    
376        <#if product != ""> 
377            <#if ameriprise> 
378                <#assign card_art_alt =  partnerName + " " + product + " Card"> 
379                <#assign rollover_text =  partnerName + " " + product + " Card"> 
380            <#else> 
381                <#assign card_art_alt = partnerName + " " + product + "  Card"> 
382                <#assign rollover_text =  partnerName + " " + product + " Credit Card"> 
383                <#assign card_text = product + " Card"> 
384            </#if>  
385        </#if>  
386        <div class="jn-hero-container product-${productUrl} tier1-hero-${class.getData()}" title="${rollover_text!''}"> 
387            <div class="hero-main"> 
388                <div class="hero-main-logo"> 
389                    <#if partnerUrl?has_content> 
390                        <a href="${partnerUrl!''}" title="${partnerName!''} Logo"><img src="${cdnLogoUrl!''}/${logoFileName!''}" title="${partnerName!''} Logo" alt="${partnerName!''} Logo"></a> 
391                    <#else> 
392                        <a title="${partnerName!''} Logo"><img src="${cdnLogoUrl!''}/${logoFileName!''}" title="${partnerName!''} Logo" alt="${partnerName!''} Logo"></a> 
393                    </#if> 
394                </div> 
395                <div class="hero-main-container"> 
396                    <div class="hero-main-offer bg-color-white"> 
397                    <div class="offer-detail"> 
398 
399                            <div class="offer-detail-cardArt cardArtImg">                                                  
400                                <img src="${cardArtImage!''}" alt="${card_art_alt!''}" srcset="" title="${card_art_alt!''}" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'"> 
401                                <p>${card_text!''}</p> 
402                            </div> 
403                            <div class="offer-detail-text text-color-default hide-desktop"> 
404                                ${productTitle.getSiblings()[cardIndex].primaryHeadlineFeatureTop.getData()} 
405                                ${productTitle.getSiblings()[cardIndex].primaryHeadlineFeatureBottom.getData()} 
406                            </div> 
407 
408                            <#if ameriprise> 
409                                <a data-button-name="cta-button-top" title="Learn More about ${partnerName!''} credit cards" class="applyNowLink jn-button apply-button text-bold button-bg-color-custom text-color-white hide-desktop" href="javascript:void(0);" onclick="goToByScroll('product-display')">${productTitle.getSiblings()[cardIndex].ctaText.getData()}</a>                                 
410                            <#else>  
411                                <form action="${oadURL}?locationCode=${lc_used}&offerId=${offerId}&preparerType=${preparerType}&mktChl=${marketingChannel}" method="post" class="BAAForm hide-desktop"> 
412                                    <label for="appDataBAAMobile-${sourceCode}" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label> 
413                                    <textarea rows="20" cols="100" name="applicationData" id="appDataBAAMobile-${sourceCode}" class="appDataBAA" style="display:none;" title="application data"></textarea> 
414                                    <!-- applyNowLink class is used for ga4 analytics call in other template on page --> 
415                                    <button  
416                                        type="submit"  
417                                        data-button-name="cta-button-top"   
418                                        data-product-name="${productUrl!''}"                                        
419                                        class="applyNowLink jn-button apply-button apply-now-button text-bold button-bg-color-custom text-color-white" 
420                                        disabled  
421
422                                        ${productTitle.getSiblings()[cardIndex].ctaText.getData()} <span class="screen-reader-only"> for ${partnerName!''} ${product!''} Card</span> 
423                                    </button> 
424                                </form> 
425                            </#if> 
426                        </div> 
427 
428                        <div class="offer-header"> 
429                             <div class="offer-text-top"> 
430                                <div class="offer-title">${productTitle.getSiblings()[cardIndex].primaryHeadlineText.getData()}</div> 
431                                <h1 class="offer-subtitle">${productTitle.getSiblings()[cardIndex].primaryHeadlineFeature.getData()}</h1> 
432                            </div> 
433                            <div class="offer-text-bottom hide-mobile"> 
434                                <div class="offer-detail-text text-color-default"> 
435                                    ${productTitle.getSiblings()[cardIndex].primaryHeadlineFeatureTop.getData()} 
436                                    ${productTitle.getSiblings()[cardIndex].primaryHeadlineFeatureBottom.getData()} 
437                                </div> 
438 
439                                <#if ameriprise> 
440                                    <a data-button-name="cta-button-top" title="Learn More about ${partnerName!''} credit cards" class="applyNowLink jn-button apply-button text-bold button-bg-color-custom text-color-white" href="javascript:void(0);" onclick="goToByScroll('product-display')">${productTitle.getSiblings()[cardIndex].ctaText.getData()}</a>                                 
441                                <#else>  
442                                    <form action="${oadURL}?locationCode=${lc_used}&offerId=${offerId}&preparerType=${preparerType}&mktChl=${marketingChannel}" method="post" class="BAAForm"> 
443                                        <label for="appDataBAA-${sourceCode}" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label> 
444                                        <textarea rows="20" cols="100" name="applicationData" id="appDataBAA-${sourceCode}" class="appDataBAA" style="display:none;" title="application data"></textarea> 
445                                        <!-- applyNowLink class is used for ga4 analytics call in other template on page --> 
446                                        <button  
447                                            type="submit"  
448                                            data-button-name="cta-button-top"   
449                                            data-product-name="${productUrl!''}"  
450                                            class="applyNowLink jn-button apply-button apply-now-button text-bold button-bg-color-custom text-color-white" 
451                                            disabled 
452
453                                            ${productTitle.getSiblings()[cardIndex].ctaText.getData()}<span class="screen-reader-only"> for ${partnerName!''} ${product!''} Card</span> 
454                                        </button> 
455                                    </form> 
456                                </#if> 
457                            </div> 
458                        </div>                        
459                    </div> 
460                </div> 
461            </div> 
462        </div>   
463 
464    </#if> 
465</#if> 
テンプレート処理中にエラーが発生しました。
The following has evaluated to null or missing:
==> qstringmap["bankercode"]  [in template "10153#10191#5883698" at line 8, 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 "10153#10191#5883698" at line 8, column 1]
----
1<#assign url = themeDisplay.getURLCurrent() > 
2<#assign oadURL = propsUtil.get('elan.oad.url') > 
3<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))> 
4<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! /> 
5<#assign url404 = '/error/404.html'> 
6<#assign oadURL_TC = 'https://online1.elancard.com/oad/terms.controller' > 
7 
8<#assign bCode= qstringmap["bankercode"]?first> 
9<#assign bCode = htmlUtil.escape(bCode)> 
10<#assign bCode = htmlUtil.escapeJS(bCode)> 
11 
12<#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetailSql','0&'+bCode)> 
13<#list bData as b>      
14    <#assign lc = b.locationcode > 
15    <#assign rLC = b.reallocationcode > 
16    <#assign mappedLC = b.mappedLocationCode > 
17    
18</#list>  
19   
20<#if bCode?starts_with("amp") && (url?contains("11t1m"))> 
21    <#assign ameriprise = true> 
22<#else> 
23    <#assign ameriprise = false> 
24</#if> 
25 
26<#if mappedLC?has_content && !ameriprise> 
27    <#assign lc = mappedLC > 
28</#if> 
29<#assign isEmployee = false> 
30 
31<#assign fiData= utilServ.makeCall('crcDDCBankerAssistedAppSql','0&'+bCode)> 
32<#if fiData?first?has_content> 
33    <#assign fi = fiData?first> 
34    <#if ((fi.projectId == "12") || (fi.projectId == "13") || (fi.projectId == "14") || (fi.projectId == "15"))> 
35        <#assign subbu_special = fi.offerId> 
36    </#if> 
37    <#if fi.projectType == "emp"> 
38        <#assign isEmployee = true> 
39    </#if> 
40</#if>  
41 
42<#if lc?has_content> 
43    <#assign prefix = "00000" > 
44    <#assign lcWithPrefix = prefix + lc> 
45    <#assign withPrefixLength = lcWithPrefix?length > 
46    <#assign startHere = withPrefixLength - 5> 
47    <#assign lc = lcWithPrefix?substring(startHere)>     
48    <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! /> 
49    <#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
50 
51    <#assign clientProfile = clientProfileList?first> 
52    <#assign partnerName = clientProfile.getMarketingNameLong()> 
53    <#assign pbu = clientProfile.getPbu()> 
54    <#assign subbu = clientProfile.getSUBBRANDBUNBR()>     
55    <#assign clientDataService = (serviceLocator.findService("com.elan.crc.user.service.CrcPbuLocalService"))! /> 
56    <#assign clientProfileDataList = clientDataService.getByPbuAndSubBu(pbu,subbu)> 
57    <#assign partnerUrl = clientProfileDataList.getPartnerMainUrl()> 
58    <#if partnerUrl?has_content && !partnerUrl?matches(r"(?i)^https?\:\/\/.*") && !partnerUrl?matches(r"(?i)^https?\:&#x2F;&#x2F;.*")>             
59        <#assign partnerUrl = 'https://' + partnerUrl> 
60    </#if> 
61 
62    <!-- <#assign clientdataList = utilServ.makeCall('crcDDCTier1Customizations','0&'+pbu+'&'+subbu+'&11')> 
63    <#if clientdataList?has_content > 
64        <#assign clientdata = clientdataList?first > 
65    	<#assign backgroundHexColor = clientdata["backgroundHexColor"] > 
66		<#assign backgroundImage = clientdata["backgroundImage"] > 
67		<#assign buttonHexColor = clientdata["buttonHexColor"] > 
68		<#assign AprMin = clientdata["AprMin"] > 
69		<#assign AprMax = clientdata["AprMax"] > 
70		<#assign cashAdvanceRate = clientdata["cashAdvanceRate"] > 
71		<#assign BillingCycles = clientdata["BillingCycles"] > 
72		<#assign textHexColor = clientdata["textHexColor"] > 
73		<#assign linkHexColor = clientdata["linkHexColor"] > 
74		<#assign hoverColor = clientdata["hoverColor"] > 
75		<#assign secondaryBackgroundImage = clientdata["secondaryBackgroundImage"] > 
76		<#assign transparency = clientdata["transparency"] > 
77		<#assign businessBackgroundImageLarge = clientdata["businessBackgroundImageLarge"] > 
78		<#assign businessBackgroundImageSmall = clientdata["businessBackgroundImageSmall"] > 
79		<#assign businessTransparency = clientdata["businessTransparency"] > 
80		<#assign dmaBackgroundImage = clientdata["dmaBackgroundImage"] > 
81		<#assign secondaryDmaBackgroundImage = clientdata["secondaryDmaBackgroundImage"] > 
82	</#if> --> 
83	 
84    <#assign logoFileName = clientProfile.getLogoBFormat1()?replace(".", "-")?replace("-([^-]*)$", ".$1", "r")?lower_case> 
85    <#assign cdnLogoUrl = (propsUtil.get('rackspace.cdn.web.url'))!> 
86    <#if pbu == "0864054"> 
87        <#assign override = "berkshire"> 
88    <#else> 
89        <#assign override = " "> 
90    </#if> 
91    <#--  this one should be delete for prod  --> 
92                 
93    <#-- <#assign cdnLogoUrl = "https://4f61efb10f32ceb57895-3733e103896f37259213d6ad72acbe68.ssl.cf2.rackcdn.com">   
94    <#assign logoFileName = pbu + "-" + subbu + ".png">--> 
95 
96    <#assign cdnCardArtUrl = (propsUtil.get('rackspace.cdn.cardart.url'))!> 
97    <#if (subbu_special?has_content)> 
98        <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu_special)>  
99    <#else> 
100        <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu)>  
101    </#if> 
102    <#assign temp = []> 
103    <#assign consumerCards = []> 
104    <#assign businessCards = []>  
105    <#assign offerTypeList = []>       
106    <#assign index = 0> 
107    <#assign ameriprise_cards= []> 
108    <#assign consumerOfferTypes =['101', '108', '109', '104', '138', '154', '141', '147', '115']> 
109    <#assign businessOfferTypes =['128', '121', '144', '143']> 
110    <#list fiCardsData as fib> 
111        <#if (fib.offerType?has_content && !(offerTypeList?seq_contains(fib.offerType)))>   
112            <#assign offerTypeList = offerTypeList + [fib.offerType]> 
113            <#assign temp = temp + fiCardsData[index..index]>    
114            <#if ameriprise> 
115                <#if (fib.offerType == "101" || fib.offerType == "103")> 
116                    <#assign ameriprise_cards= ameriprise_cards + fiCardsData[index..index]> 
117                </#if>                      
118            <#else> 
119                <#if consumerOfferTypes?seq_contains(fib.offerType)> 
120                    <#assign consumerCards = consumerCards + fiCardsData[index..index]> 
121                <#elseif (businessOfferTypes?seq_contains(fib.offerType))> 
122                    <#assign businessCards = businessCards + fiCardsData[index..index]> 
123                </#if>             
124            </#if>                 
125        </#if>  
126        <#assign index = index + 1>   
127                     
128    </#list>        
129    <#assign fiCardsData = temp> 
130    <#if ameriprise> 
131        <#assign consumerCards = ameriprise_cards?sort_by("offerType")> 
132    </#if> 
133 
134    <#if (fiCardsData?size > 0)>   
135        <#if (subbu_special?has_content)> 
136            <#assign lc_used = fiCardsData?first.WebLocationCode>   
137        <#else> 
138            <#if ameriprise> 
139                <#assign lc_used = mappedLC>  
140            <#else> 
141                <#assign lc_used = lc>  
142            </#if> 
143        </#if>               
144        <#assign offerId = ""> 
145        <#assign sourceCode = ""> 
146        <#assign cardArtImage = ""> 
147        <#assign productUrl = ""> 
148        <#assign product = ""> 
149        <#assign preparerType = "customer"> 
150        <#assign apr = ""> 
151        <#assign cardIndex = 0>  
152        <#assign empOfferId = "">  
153        <#if consumerCards[0]?has_content> 
154            <#assign empOfferId = consumerCards[0].empofferId!""> 
155        </#if> 
156        <#assign marketingChannel = 'SAT2A'> 
157        <#if isEmployee> 
158            <#assign marketingChannel = 'empl'> 
159            <#assign offerId = empOfferId>       
160        </#if> 
161 
162        <#if (class.getData() == "landing-consumer" && consumerCards?size > 0)> 
163            <#if (offerTypeList?seq_contains("108") || offerTypeList?seq_contains("109"))> 
164                <#list consumerCards as card>                    
165                    <#if (card.offerType=="108" || card.offerType=="109") > 
166                        <#assign offerId = card.saaofferId> 
167                        <#if isEmployee> 
168                            <#assign offerId = card.empofferId!""> 
169                        </#if> 
170                        <#assign sourceCode = card.sourceCode> 
171                        <#assign cardArtImage = cdnCardArtUrl + "/"+card.filename+".png"> 
172                        <#assign cardArtImageAlt = cdnCardArtUrl + "/"+card.filename+".jpg"> 
173 
174                        <#assign productUrl="consumer-platinum2103"> 
175                        <#assign product="Platinum"> 
176                        <#assign cardIndex = 4> 
177 
178                        <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', offerId + '&'+ sourceCode)> 
179                        <#if (scrapedData?size > 0)> 
180                            <#list scrapedData as sItem> 
181                                <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) > 
182                                    <#assign apr = sItem.scrapedValue?replace("(\n|\r\n|\r)+", " ","r")> 
183                                    <#break> 
184                                </#if> 
185                            </#list> 
186                            <script> 
187                                $(document).ready(function () { 
188                                    var aprText = "${apr}"; 
189                                    if (aprText) { 
190                                        try { 
191                                            $(".apr-full-text").html(aprText); 
192                                            var matches= aprText.match(/\d+(\.\d+)?%?/g); 
193                                            var billing_cycle = matches[1]; 
194                                            var apr_min = apr_min = matches[2]; 
195                                            var apr_max = apr_max = matches[3]; 
196                                            if (billing_cycle) { 
197                                                $(".scraped-billing-cycle").html(billing_cycle); 
198
199                                            if (apr_min) { 
200                                                $(".scraped-apr-min").html(apr_min); 
201
202                                            if (apr_max) { 
203                                                $('.scraped-apr-max').html(apr_max); 
204
205 
206                                        } catch (e) { 
207                                            console.log(e); 
208
209                                    } else { 
210                                      $(".apr-full-text").html(''); 
211
212                                }); 
213                            </script> 
214                        </#if> 
215                        <script> 
216                        var product = "${product}"; 
217                        var partnerName = "${partnerName}"; 
218                          $(document).ready(function () { 
219                            $(".see-terms").replaceWith('<a href="${oadURL_TC}?step=display&amp;offerId=${offerId}&amp;locationCode=${lc_used}" target="_blank"><span class="screen-reader-only">' + partnerName + ' ' + product + ' Card</span>See terms &amp; conditions</a>'); 
220                          }); 
221                        </script> 
222                    </#if> 
223                </#list> 
224            <#else> 
225                <#assign displayedCard = consumerCards[0]> 
226                <#assign offerId = displayedCard.saaofferId> 
227                <#if isEmployee> 
228                    <#assign offerId = displayedCard.empofferId!""> 
229                </#if> 
230                <#assign sourceCode = displayedCard.sourceCode> 
231                <#assign cardArtImage = cdnCardArtUrl + "/"+ displayedCard.filename + ".png"> 
232                <#assign cardArtImageAlt = cdnCardArtUrl + "/"+ displayedCard.filename + ".jpg"> 
233                <#if ameriprise> 
234                    <#if (displayedCard.offerType == "101")> 
235                        <#assign productUrl="ameriprise-premier-visa-signature"> 
236                        <#assign product="Premier Visa Signature"> 
237                        <#assign cardIndex = 0> 
238                    <#elseif (displayedCard.offerType == "103")> 
239                        <#assign productUrl = "ameriprise-visa-signature"> 
240                        <#assign product="Visa Signature"> 
241                        <#assign cardIndex = 1> 
242                    </#if> 
243                <#else>                   
244                        <#if (displayedCard.offerType == "108" || displayedCard.offerType == "109")> 
245                            <#assign productUrl = "consumer-platinum2103"> 
246                            <#assign product="Platinum">    
247                            <#assign cardIndex = 4>    
248                            <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', offerId + '&'+ sourceCode)> 
249                            <#if (scrapedData?size > 0)> 
250                                <#list scrapedData as sItem> 
251                                    <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) > 
252                                        <#assign apr = sItem.scrapedValue?replace("(\n|\r\n|\r)+", " ","r")> 
253                                        <#break> 
254                                    </#if> 
255                                </#list> 
256                                <script> 
257                                    $(document).ready(function () { 
258                                        var aprText = "${apr}"; 
259                                        if (aprText) { 
260                                            try { 
261                                                $(".apr-full-text").html(aprText); 
262                                                var matches= aprText.match(/\d+(\.\d+)?%?/g); 
263                                                var billing_cycle = matches[1]; 
264                                                var apr_min = apr_min = matches[2]; 
265                                                var apr_max = apr_max = matches[3]; 
266                                                if (billing_cycle) { 
267                                                    $(".scraped-billing-cycle").html(billing_cycle); 
268
269                                                if (apr_min) { 
270                                                    $(".scraped-apr-min").html(apr_min); 
271
272                                                if (apr_max) { 
273                                                    $('.scraped-apr-max').html(apr_max); 
274
275 
276                                            } catch (e) { 
277                                                console.log(e); 
278
279                                        } else { 
280                                          $(".apr-full-text").html(''); 
281
282                                    }); 
283                                </script> 
284                            </#if>     
285                        <#elseif (displayedCard.offerType == "104")> 
286                            <#assign productUrl = "max-cash"> 
287                            <#assign product="Max Cash Preferred"> 
288                            <#assign cardIndex = 0>    
289                        <#elseif (displayedCard.offerType == "141")> 
290                            <#assign productUrl = "college-real-rewards"> 
291                            <#assign product="College Real Rewards"> 
292                            <#assign cardIndex = 2>                                                
293                        <#elseif (displayedCard.offerType == "115")> 
294                            <#assign productUrl = "secured"> 
295                            <#assign product="Secured"> 
296                            <#assign cardIndex = 3> 
297                        </#if> 
298                </#if> 
299            </#if> 
300        </#if> 
301        <#if (class.getData() == "landing-business" && businessCards?size > 0)> 
302             
303            <#if (offerTypeList?seq_contains("128")) > 
304                <#list businessCards as card> 
305                    <#if (card.offerType=="128")> 
306                        <!-- bussiness cards offerId dose not check for isEmployee because employees can't have business cards --> 
307                        <#assign offerId = card.saaofferId> 
308                        <#assign sourceCode = card.sourceCode> 
309                        <#assign cardArtImage = cdnCardArtUrl + "/"+card.filename+".png"> 
310                        <#assign cardArtImageAlt = cdnCardArtUrl + "/"+card.filename+".jpg"> 
311                        <#assign productUrl = "business-cash-preferred"> 
312                        <#assign product="Business Cash Preferred">                 
313                        <#assign cardIndex = 0> 
314                    </#if> 
315                </#list> 
316            <#else> 
317                <#assign displayedCard = businessCards[0]> 
318                <!-- bussiness cards offerId dose not check for isEmployee because employees can't have business cards --> 
319                <#assign offerId = displayedCard.saaofferId> 
320                <#assign sourceCode = displayedCard.sourceCode> 
321                <#assign cardArtImage = cdnCardArtUrl + "/"+ displayedCard.filename + ".png"> 
322                <#assign cardArtImageAlt = cdnCardArtUrl + "/"+ displayedCard.filename + ".jpg"> 
323 
324                <#if (displayedCard.offerType=="143")> 
325                    <#assign productUrl="business-real-rewards"> 
326                    <#assign product="Business Real Rewards"> 
327                    <#assign cardIndex = 2>    
328                <#elseif (displayedCard.offerType=="144")> 
329                    <#assign productUrl = "smart-business-rewards"> 
330                    <#assign product="Smart Business Rewards"> 
331                    <#assign cardIndex = 1>                     
332                <#elseif (displayedCard.offerType=="121")> 
333                    <#assign productUrl = "business-platinum2103"> 
334                    <#assign product="Business Card"> 
335                    <#assign cardIndex = 3> 
336                    <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', offerId + '&'+ sourceCode)> 
337                    <#if (scrapedData?size > 0)> 
338                        <#list scrapedData as sItem> 
339                            <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) > 
340                                <#assign apr = sItem.scrapedValue?replace("(\n|\r\n|\r)+", " ","r")> 
341                                <#break> 
342                            </#if> 
343                        </#list> 
344                        <script> 
345                            $(document).ready(function () { 
346                                var aprText = "${apr}"; 
347                                if (aprText) { 
348                                    try { 
349                                        $(".apr-full-text").html(aprText); 
350                                        var matches= aprText.match(/\d+(\.\d+)?%?/g); 
351                                        var billing_cycle = matches[1]; 
352                                        var apr_min = apr_min = matches[2]; 
353                                        var apr_max = apr_max = matches[3]; 
354                                        if (billing_cycle) { 
355                                            $(".scraped-billing-cycle").html(billing_cycle); 
356
357                                        if (apr_min) { 
358                                            $(".scraped-apr-min").html(apr_min); 
359
360                                        if (apr_max) { 
361                                            $('.scraped-apr-max').html(apr_max); 
362
363 
364                                    } catch (e) { 
365                                        console.log(e); 
366
367                                } else { 
368                                  $(".apr-full-text").html(''); 
369
370                            }); 
371                        </script> 
372                    </#if>                       
373                </#if> 
374            </#if> 
375        </#if>    
376        <#if product != ""> 
377            <#if ameriprise> 
378                <#assign card_art_alt =  partnerName + " " + product + " Card"> 
379                <#assign rollover_text =  partnerName + " " + product + " Card"> 
380            <#else> 
381                <#assign card_art_alt = partnerName + " " + product + "  Card"> 
382                <#assign rollover_text =  partnerName + " " + product + " Credit Card"> 
383                <#assign card_text = product + " Card"> 
384            </#if>  
385        </#if>  
386        <div class="jn-hero-container product-${productUrl} tier1-hero-${class.getData()}" title="${rollover_text!''}"> 
387            <div class="hero-main"> 
388                <div class="hero-main-logo"> 
389                    <#if partnerUrl?has_content> 
390                        <a href="${partnerUrl!''}" title="${partnerName!''} Logo"><img src="${cdnLogoUrl!''}/${logoFileName!''}" title="${partnerName!''} Logo" alt="${partnerName!''} Logo"></a> 
391                    <#else> 
392                        <a title="${partnerName!''} Logo"><img src="${cdnLogoUrl!''}/${logoFileName!''}" title="${partnerName!''} Logo" alt="${partnerName!''} Logo"></a> 
393                    </#if> 
394                </div> 
395                <div class="hero-main-container"> 
396                    <div class="hero-main-offer bg-color-white"> 
397                    <div class="offer-detail"> 
398 
399                            <div class="offer-detail-cardArt cardArtImg">                                                  
400                                <img src="${cardArtImage!''}" alt="${card_art_alt!''}" srcset="" title="${card_art_alt!''}" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'"> 
401                                <p>${card_text!''}</p> 
402                            </div> 
403                            <div class="offer-detail-text text-color-default hide-desktop"> 
404                                ${productTitle.getSiblings()[cardIndex].primaryHeadlineFeatureTop.getData()} 
405                                ${productTitle.getSiblings()[cardIndex].primaryHeadlineFeatureBottom.getData()} 
406                            </div> 
407 
408                            <#if ameriprise> 
409                                <a data-button-name="cta-button-top" title="Learn More about ${partnerName!''} credit cards" class="applyNowLink jn-button apply-button text-bold button-bg-color-custom text-color-white hide-desktop" href="javascript:void(0);" onclick="goToByScroll('product-display')">${productTitle.getSiblings()[cardIndex].ctaText.getData()}</a>                                 
410                            <#else>  
411                                <form action="${oadURL}?locationCode=${lc_used}&offerId=${offerId}&preparerType=${preparerType}&mktChl=${marketingChannel}" method="post" class="BAAForm hide-desktop"> 
412                                    <label for="appDataBAAMobile-${sourceCode}" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label> 
413                                    <textarea rows="20" cols="100" name="applicationData" id="appDataBAAMobile-${sourceCode}" class="appDataBAA" style="display:none;" title="application data"></textarea> 
414                                    <!-- applyNowLink class is used for ga4 analytics call in other template on page --> 
415                                    <button  
416                                        type="submit"  
417                                        data-button-name="cta-button-top"   
418                                        data-product-name="${productUrl!''}"                                        
419                                        class="applyNowLink jn-button apply-button apply-now-button text-bold button-bg-color-custom text-color-white" 
420                                        disabled  
421
422                                        ${productTitle.getSiblings()[cardIndex].ctaText.getData()} <span class="screen-reader-only"> for ${partnerName!''} ${product!''} Card</span> 
423                                    </button> 
424                                </form> 
425                            </#if> 
426                        </div> 
427 
428                        <div class="offer-header"> 
429                             <div class="offer-text-top"> 
430                                <div class="offer-title">${productTitle.getSiblings()[cardIndex].primaryHeadlineText.getData()}</div> 
431                                <h1 class="offer-subtitle">${productTitle.getSiblings()[cardIndex].primaryHeadlineFeature.getData()}</h1> 
432                            </div> 
433                            <div class="offer-text-bottom hide-mobile"> 
434                                <div class="offer-detail-text text-color-default"> 
435                                    ${productTitle.getSiblings()[cardIndex].primaryHeadlineFeatureTop.getData()} 
436                                    ${productTitle.getSiblings()[cardIndex].primaryHeadlineFeatureBottom.getData()} 
437                                </div> 
438 
439                                <#if ameriprise> 
440                                    <a data-button-name="cta-button-top" title="Learn More about ${partnerName!''} credit cards" class="applyNowLink jn-button apply-button text-bold button-bg-color-custom text-color-white" href="javascript:void(0);" onclick="goToByScroll('product-display')">${productTitle.getSiblings()[cardIndex].ctaText.getData()}</a>                                 
441                                <#else>  
442                                    <form action="${oadURL}?locationCode=${lc_used}&offerId=${offerId}&preparerType=${preparerType}&mktChl=${marketingChannel}" method="post" class="BAAForm"> 
443                                        <label for="appDataBAA-${sourceCode}" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label> 
444                                        <textarea rows="20" cols="100" name="applicationData" id="appDataBAA-${sourceCode}" class="appDataBAA" style="display:none;" title="application data"></textarea> 
445                                        <!-- applyNowLink class is used for ga4 analytics call in other template on page --> 
446                                        <button  
447                                            type="submit"  
448                                            data-button-name="cta-button-top"   
449                                            data-product-name="${productUrl!''}"  
450                                            class="applyNowLink jn-button apply-button apply-now-button text-bold button-bg-color-custom text-color-white" 
451                                            disabled 
452
453                                            ${productTitle.getSiblings()[cardIndex].ctaText.getData()}<span class="screen-reader-only"> for ${partnerName!''} ${product!''} Card</span> 
454                                        </button> 
455                                    </form> 
456                                </#if> 
457                            </div> 
458                        </div>                        
459                    </div> 
460                </div> 
461            </div> 
462        </div>   
463 
464    </#if> 
465</#if> 
テンプレート処理中にエラーが発生しました。
The following has evaluated to null or missing:
==> url404  [in template "10153#10191#5843849" at line 79, column 28]

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

----
FTL stack trace ("~" means nesting-related):
	- Failed at: ${url404}  [in template "10153#10191#5843849" at line 79, column 26]
----
1<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! /> 
2<#assign oadURL = propsUtil.get('elan.oad.url') > 
3<#assign url = themeDisplay.getURLCurrent() > 
4<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))> 
5<#-- <#assign url404 = '/error/404.html'> --> 
6<#assign oadURL_TC = 'https://online1.elancard.com/oad/terms.controller' > 
7<#assign environment = url?replace('/index.*','','r')> 
8 
9<#assign text_to_apply_source = "vanity url" > 
10<#if qstringmap["sms"]?has_content> 
11    <#assign sms = 1 > 
12    <#assign text_to_apply_source = "sms" > 
13</#if> 
14<#if qstringmap["qrCode"]?has_content> 
15    <#assign text_to_apply_source = "qr code" > 
16</#if> 
17 
18<#if qstringmap["ecid"]?has_content> 
19    <#assign ecidExt = qstringmap["ecid"]?first> 
20    <#assign ecidExt = htmlUtil.escape(ecidExt)> 
21    <#assign ecidExt = htmlUtil.escapeJS(ecidExt)> 
22    <#assign ecidExt = "&ecid=" + ecidExt> 
23    
24    <#assign campaignId = qstringmap["ecid"]?first > 
25    <#assign campaignId  = htmlUtil.escape(campaignId)> 
26    <#assign campaignId  = htmlUtil.escapeJS(campaignId)> 
27<#else> 
28    <#assign ecidExt=""> 
29    <#assign campaignId = "" > 
30</#if> 
31<#--  check bankercode validity  --> 
32<#if oadURL?contains("uat-")> 
33    <#assign oadURL_TC = 'https://uat-online1.elancard.com/oad/terms.controller' > 
34<#else> 
35    <#assign oadURL_TC = 'https://online1.elancard.com/oad/terms.controller' > 
36</#if> 
37<#if qstringmap["bankercode"]?has_content> 
38    <#assign bCode= qstringmap["bankercode"]?first> 
39    <#assign bCode= htmlUtil.escapeJS(bCode)> 
40    <#assign bCode= htmlUtil.escape(bCode)> 
41    <#assign isEmployee = false> 
42 
43    <#assign fiData= utilServ.makeCall('crcDDCBankerAssistedAppSql','0&'+bCode)> 
44    <#if fiData?first?has_content> 
45        <#assign fi = fiData?first> 
46        <#if ((fi.projectId == "12") || (fi.projectId == "13") || (fi.projectId == "14") || (fi.projectId == "15"))> 
47            <#assign subbu_special = fi.offerId> 
48        </#if> 
49        <#if fi.projectType == "emp"> 
50            <#assign isEmployee = true> 
51        </#if> 
52    <#else> 
53        <script> 
54            console.log("fiData missing"); 
55            location.href = '${url404}'; 
56        </script> 
57    </#if> 
58 
59    <#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetailSql','0&'+bCode)> 
60    <#if !bData?first?has_content> 
61        <script> 
62            console.log("bData missing"); 
63            location.href = '${url404}'; 
64        </script> 
65    </#if> 
66    <#list bData as b>      
67        <#assign lc = b.locationcode > 
68        <#assign bName = b.branch > 
69        <#assign bPhone = b.businessphone > 
70        <#assign boeid = b.oeid > 
71        <#assign fName = b.firstname?trim > 
72        <#assign lName = b.lastname?trim > 
73        <#assign rLC = b.reallocationcode > 
74        <#assign mappedLC = b.mappedLocationCode > 
75    </#list>  
76<#else> 
77    <script> 
78        console.log("MainProductBcode missing"); 
79        location.href = '${url404}'; 
80    </script> 
81</#if> 
82 
83<#if bCode?starts_with("amp") && (url?contains("11t1m"))> 
84    <#assign ameriprise = true> 
85<#else> 
86    <#assign ameriprise = false> 
87</#if> 
88<#if mappedLC?has_content && !ameriprise> 
89    <#assign lc = mappedLC > 
90</#if> 
91 
92           
93<#if lc?has_content> 
94    <#assign firstNameLength = fName?length > 
95    <#assign lastNameLength = lName?length > 
96    <#if firstNameLength + lastNameLength &gt; 19 > 
97        <#if lastNameLength &gt; 18 > 
98            <#assign bLName = lName?substring(0,18)> 
99        <#else> 
100            <#assign bLName = lName> 
101        </#if> 
102        <#assign maxFirstName = 19 - bLName?length > 
103        <#if firstNameLength &gt; maxFirstName > 
104            <#assign bFName = fName?substring(0,maxFirstName)> 
105        <#else> 
106            <#assign bFName = fName> 
107        </#if> 
108    <#else> 
109        <#assign bFName = fName> 
110        <#assign bLName = lName> 
111    </#if>  
112 
113    <#assign prefix = "00000" > 
114    <#assign lcWithPrefix = prefix + lc > 
115    <#assign withPrefixLength = lcWithPrefix?length > 
116    <#assign startHere = withPrefixLength - 5> 
117    <#assign lc = lcWithPrefix?substring(startHere)>   
118    <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! /> 
119    <#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
120    <#if (clientProfileList?first?has_content)> 
121        <#assign clientProfile = clientProfileList?first> 
122        <#assign partnerName = clientProfile.getMarketingNameLong()> 
123        <#assign pbu = clientProfile.getPbu()> 
124        <#assign subbu = clientProfile.getSUBBRANDBUNBR()>          
125        <#assign cdnCardArtUrl = (propsUtil.get('rackspace.cdn.cardart.url'))!>  
126        <#if (subbu_special?has_content)> 
127            <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu_special)>  
128        <#else> 
129            <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu)>  
130        </#if> 
131 
132        <#-- Begin: filter cards by sourceCode and offerId and remove duplicated cards--> 
133        <#assign temp = []> 
134        <#assign consumerCards = []> 
135        <#assign businessCards = []>  
136        <#assign offerTypeList = []>  
137        <#assign consumerOfferTypes =['104', '101', '103', '108', '109', '115', '141', '147', '138', '154']> 
138        <#assign businessOfferTypes =['144', '128', '143', '121']>     
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 consumerOfferTypes?seq_contains(fib.offerType)> 
145                    <#assign consumerCards = consumerCards + fiCardsData[index..index]> 
146                <#elseif (businessOfferTypes?seq_contains(fib.offerType))> 
147                    <#assign businessCards = businessCards + fiCardsData[index..index]> 
148                </#if>                 
149            </#if>  
150            <#assign index = index + 1>                
151        </#list>  
152 
153        <#assign fiCardsData = temp> 
154 
155        <#if (fiCardsData?size > 0)>   
156            <#if (subbu_special?has_content)> 
157                <#assign lc_used = fiCardsData?first.WebLocationCode>   
158            <#else> 
159                <#if ameriprise> 
160                    <#assign lc_used = mappedLC>  
161                <#else> 
162                    <#assign lc_used = lc>  
163                </#if> 
164            </#if>  
165        </#if>  
166 
167        <#assign offerId = ""> 
168        <#assign empOfferId = "">  
169        <#if consumerCards[0]?has_content> 
170            <#assign empOfferId = consumerCards[0].empofferId!""> 
171        </#if> 
172        <#assign marketingChannel = 'SAT2A'> 
173        <#if isEmployee> 
174            <#assign marketingChannel = 'empl'> 
175            <#assign offerId = empOfferId>       
176        </#if> 
177        
178        <#if (consumerCards?size > 0 || businessCards?size > 0)>  
179         
180            <div class="content-container content-container-main jn-consumer-content" id="product-display"> 
181                <#if ((consumerCards?size > 0) && (businessCards?size > 0) && (isEmployee == false))> 
182                    <nav class="jn-primary-nav two-tabs"> 
183                        <ul> 
184                            <li title="${partnerName!''} - Personal products"> 
185                                <a href="#" class="tab-nav active" id="consumerTab"><span>Personal</span></a> 
186                            </li> 
187                            <li title="${partnerName!''} - Business products"> 
188                                <a href="#" class="tab-nav" id="businessTab"><span>Business</span></a> 
189                            </li> 
190                        </ul> 
191                    </nav> 
192                <#else> 
193                    <#if (consumerCards?size > 0)> 
194                        <nav class="jn-primary-nav" title="${partnerName!''} - Personal products"> 
195                            <ul> 
196                                <li> 
197                                    <p class="tab-nav" id="consumerTab"><span>Personal</span></p> 
198                                </li> 
199                            </ul> 
200                        </nav> 
201                    </#if> 
202                    <#if (businessCards?size > 0 && (isEmployee == false))> 
203                        <nav class="jn-primary-nav" title="${partnerName!''} - Business products"> 
204                            <ul> 
205                                <li> 
206                                    <p class="tab-nav" id="businessTab"><span>Business</span></p> 
207                                </li> 
208                            </ul> 
209                        </nav> 
210                    </#if> 
211                </#if> 
212                <#if (consumerCards?size > 0)> 
213                    <div class="tab-more-wrapper"> 
214                        <div class="jn-consumer-content-wrapper jn-tab-content active transition-start" data-id="consumerTab" title="${partnerName!''} - Personal products"> 
215                            <#list consumerCards as fib> 
216                                <#assign cardArtImage = cdnCardArtUrl + "/" + fib.filename + ".png" > 
217                                <#assign cardArtImageAlt = cdnCardArtUrl + "/"+fib.filename+".jpg">      
218                                <#assign hasBalanceTransferCalculator = false>    
219                                <#assign offerId = fib.saaofferId> 
220                                <#if isEmployee> 
221                                    <#assign offerId = fib.empofferId!""> 
222                                </#if> 
223 
224                                <#if ameriprise>                                
225                                    <#if (fib.offerType == "101")> 
226                                            <#assign productName = "premier-visa-signature"> 
227                                            <#assign product="Premier Visa Signature"> 
228                                            <#assign cardIndex = 0> 
229                                    <#elseif (fib.offerType == "103")> 
230                                            <#assign productName = "visa-signature"> 
231                                            <#assign product="Visa Signature"> 
232                                            <#assign cardIndex = 1> 
233                                    </#if> 
234                                    <#assign titleText = consumerTitle.getSiblings()[cardIndex].Title.getData()> 
235                                    <#assign titleText = titleText?replace('<[^>]+>','','r')> 
236                                <#else> 
237                                    <#switch fib.offerType> 
238                                        <#case "101"> 
239                                            <#assign productName = "consumer-edr2112"> 
240                                            <#assign product="Everyday Rewards+"> 
241                                            <#assign cardIndex = 0> 
242                                            <#break> 
243                                        <#case "108"> 
244                                            <#assign productName = "consumer-platinum2103"> 
245                                            <#assign product="Platinum"> 
246                                            <#assign cardIndex = 2> 
247                                            <#assign hasBalanceTransferCalculator = true>  
248                                            <#break> 
249                                        <#case "109"> 
250                                            <#assign productName = "consumer-platinum2103"> 
251                                            <#assign product="Platinum"> 
252                                            <#assign cardIndex = 2> 
253                                            <#assign hasBalanceTransferCalculator = true>  
254                                            <#break>                                            
255                                        <#case "115"> 
256                                            <#assign productName = "secured"> 
257                                            <#assign product="Secured"> 
258                                            <#assign cardIndex = 5> 
259                                            <#break> 
260                                        <#case "104"> 
261                                            <#assign productName = "max-cash"> 
262                                            <#assign product="Max Cash Preferred"> 
263                                            <#assign cardIndex = 1> 
264                                            <#break> 
265                                        <#case "147"> 
266                                            <#assign productName = "max-cash-secured"> 
267                                            <#assign product="Max Cash Secured"> 
268                                            <#assign cardIndex = 4> 
269                                            <#break> 
270                                        <#case "141"> 
271                                            <#assign productName = "college-real-rewards"> 
272                                            <#assign product="College Real Rewards"> 
273                                            <#assign cardIndex = 3> 
274                                            <#break> 
275                                        <#case "138"> 
276                                            <#assign productName = "travel-rewards-plus"> 
277                                            <#assign product="Travel Rewards+"> 
278                                            <#assign cardIndex = 10> 
279                                            <#break> 
280                                        <#case "154"> 
281                                            <#assign productName = "reserve-rewards-plus"> 
282                                            <#assign product="Reserve Rewards+"> 
283                                            <#assign cardIndex = 11> 
284                                            <#break> 
285                                        <#default> 
286                                    </#switch> 
287 
288                                    <#assign newTag = ""> 
289                                    <#if (consumerTitle.getSiblings()[cardIndex].addNewTag?has_content && consumerTitle.getSiblings()[cardIndex].addNewTag.getData() == "true")> 
290                                        <#assign newTag = "with-new-tag"> 
291                                    </#if> 
292                                     
293                                    <#assign titleText = consumerTitle.getSiblings()[cardIndex].Title.getData()> 
294                                    <#assign titleText = titleText?replace('<[^>]+>','','r')> 
295                                     
296 
297                                    <#assign APR=""> 
298                                    <#assign AMF=""> 
299                                    <#assign BAL=""> 
300                                     
301 
302                                    <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', offerId + '&'+ fib.sourceCode)> 
303                                    <#if (scrapedData?size > 0)> 
304                                        <#list scrapedData as sItem> 
305                                            <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) > 
306                                                <#assign APR = sItem.scrapedValue> 
307                                            <#elseif ((sItem.scrapedLabel?contains("Annual Membership Fee")) && (sItem.scrapedValue?has_content)) > 
308                                                <#assign AMF = sItem.scrapedValue> 
309                                            <#elseif ((sItem.scrapedLabel?contains("APR for Balance Transfers")) && (sItem.scrapedValue?has_content)) > 
310                                                <#assign BAL = sItem.scrapedValue> 
311                                            </#if> 
312                                            <#if (APR?has_content && AMF?has_content && BAL?has_content)> 
313                                                <#break> 
314                                            </#if> 
315                                        </#list> 
316                                    </#if> 
317                                </#if> 
318                                <#if ameriprise> 
319                                    <#assign rollover_text =  partnerName + " " + product + " " + " Card"> 
320                                <#else> 
321                                    <#assign rollover_text =  partnerName + " " + product + " " + " Credit Card"> 
322                                </#if>                             
323                                <div class="${newTag} jn-consumer-item item-${fib.offerType}" title="${rollover_text!''}"> 
324                                    <div class="tag-container"> 
325                                        <div class="tag-corner"> 
326                                            <div class="tag-label">NEW</div> 
327                                        </div> 
328                                    </div> 
329                                    <div class="consumer-card-heading hide-desktop"> 
330                                        <div class="consumer-card-heading__subheading">${consumerTitle.getSiblings()[cardIndex].Title.getData()}</div> 
331                                        ${consumerTitle.getSiblings()[cardIndex].headlineText.getData()} 
332                                    </div> 
333                                    <div class="jn-consumer-card-image"> 
334                                        <img src="${cardArtImage!''}" alt="${rollover_text!''}"  class="jn-img-responsive" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'"> 
335 
336                                        <#if (consumerTitle.getSiblings()[cardIndex].cardArtDescription?has_content) > 
337                                            <p class="jn-card-art-description">${consumerTitle.getSiblings()[cardIndex].cardArtDescription.getData()}</p> 
338                                        </#if> 
339                                        <#if (hasBalanceTransferCalculator)> 
340                                            <a style="display: block; text-align: center; max-width: 285px; margin: auto;" href="javascript:void(0);" data-micromodal-trigger="modal-2">See how much you could save with a balance transfer</a> 
341                                        </#if> 
342                                    </div> 
343 
344                                    <div class="jn-consumer-card-info"> 
345                                        <div class="consumer-card-heading hide-mobile"> 
346                                            <div class="consumer-card-heading__subheading">${consumerTitle.getSiblings()[cardIndex].Title.getData()}</div> 
347                                            ${consumerTitle.getSiblings()[cardIndex].headlineText.getData()} 
348                                        </div> 
349                                        <div class="jn-additional"> 
350                                            <ul class="${fib.offerType}"> 
351                                                <#if !ameriprise>                                            
352                                                    <#if (fib.offerType == "104")> 
353                                                        <li class="${fib.offerType}"> 
354                                                            <p> 
355                                                                <strong>APR for Purchases: </strong> 
356                                                                ${APR!''} 
357                                                                <a href="${oadURL_TC}?step=display&amp;offerId=${offerId}&amp;locationCode=${lc_used}" target="_blank"> 
358                                                                    <span class="screen-reader-only">${partnerName!''} ${product!''} Card </span>See terms &amp; conditions 
359                                                                </a> 
360                                                            </p>                                                             
361                                                        </li> 
362                                                        <li class="${fib.offerType}"> 
363                                                            <p> 
364                                                                <strong>Intro APR<sup>*</sup> for Balance Transfers: </strong> 
365                                                                ${BAL!''}  
366                                                                <a href="${oadURL_TC}?step=display&amp;offerId=${offerId}&amp;locationCode=${lc_used}" target="_blank"> 
367                                                                    <span class="screen-reader-only">${partnerName!''} ${product!''} Card </span>See terms &amp; conditions 
368                                                                </a> 
369                                                            </p> 
370                                                        </li> 
371                                                    <#else> 
372                                                        <li class="${fib.offerType}"> 
373                                                            <p> 
374                                                                <#if (fib.offerType == "147" || fib.offerType== "115" || fib.offerType== "138" || fib.offerType== "154")> 
375                                                                    <strong>APR for Purchases and Balance Transfers: </strong> 
376                                                                <#elseif (fib.offerType== "101")> 
377                                                                    <strong>INTRO APR<sup>*</sup> for Purchases and Balance Transfers: </strong> 
378                                                                <#else> 
379                                                                    <strong>Intro APR<sup>*</sup> for Purchases and Balance Transfers: </strong> 
380                                                                </#if> 
381 
382                                                                ${APR!''}  
383                                                                <a href="${oadURL_TC}?step=display&amp;offerId=${offerId}&amp;locationCode=${lc_used}" target="_blank"> 
384                                                                    <span class="screen-reader-only">${partnerName!''} ${product!''} Card </span>See terms &amp; conditions 
385                                                                </a> 
386                                                            </p> 
387                                                        </li> 
388                                                    </#if> 
389                                                </#if> 
390                                                <#if consumerTitle.getSiblings()[cardIndex].additionalInfo.getSiblings()?has_content> 
391                                                    <#list consumerTitle.getSiblings()[cardIndex].additionalInfo.getSiblings() as marketingInfo> 
392                                                        <li>${marketingInfo.getData()}</li> 
393                                                    </#list> 
394                                                </#if> 
395                                                <#if !ameriprise> 
396                                                    <li> 
397                                                        <p> 
398                                                            Annual Fee: ${AMF!''}  
399                                                            <a  href="${oadURL_TC}?step=display&amp;offerId=${offerId}&amp;locationCode=${lc_used}"  target="_blank"> 
400                                                                <span class="screen-reader-only">${partnerName!''} ${product!''} Card </span>See terms &amp; conditions 
401                                                            </a> 
402                                                        </p> 
403                                                    </li> 
404                                                </#if> 
405                                            </ul> 
406                                        </div> 
407                                        <ul class="actions"> 
408                                            <li> 
409                                                <form action="${oadURL}?locationCode=${lc_used}&amp;offerId=${offerId}&amp;preparerType=customer&amp;mktChl=${marketingChannel}" method="post" class="BAAForm" id="BAAForm"> 
410                                                    <label for="appDataBAA-${offerId}" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label> 
411                                                    <textarea rows="20" cols="100" name="applicationData" id="appDataBAA-${offerId}" class="appDataBAA" style="display:none;" title="application data"></textarea> 
412                                                    <a  
413                                                        class="applyNowLink apply-now-button"  
414                                                        href="${oadURL}?locationCode=${lc_used}&amp;offerId=${offerId}&amp;preparerType=customer&amp;mktChl=${marketingChannel}" 
415                                                        data-button-name="apply-now-link"  
416                                                        data-product-name="${productName}"                 
417
418                                                            ${consumerTitle.getSiblings()[cardIndex].applyNow.getData()}<span class="screen-reader-only"> for ${partnerName!''} ${product!''} Card </span> 
419                                                    </a> 
420                                                </form> 
421                                            </li> 
422                                            <li> 
423                                            <#if ameriprise> 
424                                                <a href="${environment}/${productName}?bankercode=${bCode}&ecdma-lc=${lc_used}${ecidExt}"> 
425                                                    ${consumerTitle.getSiblings()[cardIndex].LearnMore.getData()}<span class="screen-reader-only"> about ${partnerName!''} ${product!''} Card </span> 
426                                                </a> 
427                                            <#else> 
428                                                <a href="${environment}/${productName}?bankercode=${bCode}&ecdma-lc=${lc}${ecidExt}"> 
429                                                    ${consumerTitle.getSiblings()[cardIndex].LearnMore.getData()}<span class="screen-reader-only">about ${partnerName!''} ${product!''} Card </span> 
430                                                </a> 
431                                            </#if> 
432                                            </li> 
433                                        </ul> 
434                                    </div>                             
435                                </div> 
436                            </#list> 
437                        </div> 
438                    </div>                 
439                </#if> 
440                <#if ((businessCards?size > 0) && (isEmployee == false))>  
441                    <div class="tab-more-wrapper">    
442                        <div class="jn-consumer-content-wrapper jn-tab-content transition-start" data-id="businessTab" title="${partnerName!''} - Business products"> 
443                             
444                            <#list businessCards as fib> 
445                                    <#assign cardArtImage = cdnCardArtUrl + "/" + fib.filename + ".png"> 
446                                    <#assign cardArtImageAlt = cdnCardArtUrl + "/"+fib.filename+".jpg"> 
447                                    <#switch fib.offerType>                                   
448                                        <#case "144"> 
449                                            <#assign productName = "smart-business-rewards"> 
450                                            <#assign product="Smart Business Rewards"> 
451                                            <#assign cardIndex = 8> 
452                                            <#break> 
453                                        <#case "128"> 
454                                            <#assign productName = "business-cash-preferred"> 
455                                            <#assign product="Business Cash Preferred"> 
456                                            <#assign cardIndex = 6>   
457                                            <#break> 
458                                        <#case "143"> 
459                                            <#assign productName = "business-real-rewards"> 
460                                            <#assign product="Business Real Rewards"> 
461                                            <#assign cardIndex = 9> 
462                                            <#break> 
463                                        <#case "121"> 
464                                            <#assign productName = "business-platinum2103"> 
465                                            <#assign product="Business Card"> 
466                                            <#assign cardIndex = 7> 
467                                            <#break> 
468                                        <#default> 
469                                    </#switch> 
470                                    <!-- bussiness cards offerId dose not check for isEmployee because employees can't have business cards --> 
471                                    <#assign offerId = fib.saaofferId> 
472 
473                                    <#assign newTag = ""> 
474                                    <#if (consumerTitle.getSiblings()[cardIndex].addNewTag?has_content && consumerTitle.getSiblings()[cardIndex].addNewTag.getData() == "true")> 
475                                        <#assign newTag = "with-new-tag"> 
476                                    </#if> 
477                                    <#assign APR=""> 
478                                    <#assign AMF=""> 
479                                    <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', offerId + '&'+ fib.sourceCode)> 
480                                    <#if (scrapedData?size > 0)> 
481                                        <#list scrapedData as sItem> 
482                                            <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) > 
483                                                <#assign APR = sItem.scrapedValue> 
484                                            <#elseif ((sItem.scrapedLabel?contains("Annual Membership Fee")) && (sItem.scrapedValue?has_content)) > 
485                                                <#assign AMF = sItem.scrapedValue> 
486                                            </#if> 
487                                            <#if (APR?has_content && AMF?has_content)> 
488                                                <#break> 
489                                            </#if> 
490                                        </#list> 
491                                    </#if> 
492                                     
493                                <div class="${newTag} jn-consumer-item item-${fib.offerType}" title="${partnerName!''} ${product!''} Credit Card"> 
494                                    <div class="tag-container"> 
495                                        <div class="tag-corner"> 
496                                            <div class="tag-label">NEW</div> 
497                                        </div> 
498                                    </div> 
499                                    <div class="consumer-card-heading hide-desktop"> 
500                                        <div class="consumer-card-heading__subheading">${consumerTitle.getSiblings()[cardIndex].Title.getData()}</div> 
501                                        ${consumerTitle.getSiblings()[cardIndex].headlineText.getData()} 
502                                    </div> 
503                                    <div class="jn-consumer-card-image"> 
504                                        <img src="${cardArtImage!''}" alt="${rollover_text!''}"  class="jn-img-responsive" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'"> 
505                                 
506                                        <#if (consumerTitle.getSiblings()[cardIndex].cardArtDescription?has_content) > 
507                                            <p class="jn-card-art-description">${consumerTitle.getSiblings()[cardIndex].cardArtDescription.getData()}</p> 
508                                        </#if> 
509                                    </div> 
510 
511                                    <div class="jn-consumer-card-info"> 
512                                        <div class="consumer-card-heading hide-mobile"> 
513                                            <div class="consumer-card-heading__subheading">${consumerTitle.getSiblings()[cardIndex].Title.getData()}</div> 
514                                            ${consumerTitle.getSiblings()[cardIndex].headlineText.getData()} 
515                                        </div> 
516                                        <div class="jn-additional"> 
517                                            <ul> 
518                                                <li class="${fib.offerType}"> 
519                                                    <p> 
520                                                        <#if (fib.offerType == "144")> 
521                                                            <strong>APR for Purchases and Balance Transfers: </strong> 
522                                                        <#else> 
523                                                            <strong>Intro APR<sup>*</sup> for Purchases and Balance Transfers: </strong> 
524                                                        </#if> 
525 
526                                                        ${APR!''} 
527                                                        <a href="${oadURL_TC}?step=display&amp;offerId=${offerId}&amp;locationCode=${lc_used}" target="_blank"> 
528                                                            <span class="screen-reader-only">${partnerName!''} ${product!''} Card </span>See terms &amp; conditions 
529                                                        </a> 
530                                                    </p> 
531                                                </li> 
532                                                <#if consumerTitle.getSiblings()[cardIndex].additionalInfo.getSiblings()?has_content> 
533                                                    <#list consumerTitle.getSiblings()[cardIndex].additionalInfo.getSiblings() as marketingInfo> 
534                                                        <li>${marketingInfo.getData()}</li> 
535                                                    </#list> 
536                                                </#if> 
537                                                <li> 
538                                                    <p> 
539                                                        Annual Fee: ${AMF!''} <a 
540                                                        href="${oadURL_TC}?step=display&amp;offerId=${offerId}&amp;locationCode=${lc_used}" target="_blank"> 
541                                                            <span class="screen-reader-only">${partnerName!''} ${product!''} Card </span>See terms &amp; conditions 
542                                                        </a> 
543                                                    </p> 
544                                                </li> 
545                                            </ul> 
546                                        </div> 
547                                        <ul class="actions">                                     
548                                            <li> 
549                                                <form action="${oadURL}?locationCode=${lc_used}&amp;offerId=${offerId}&amp;preparerType=customer&amp;mktChl=${marketingChannel}" method="post" class="BAAForm"> 
550                                                    <label for="appDataBAA-${offerId}" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label> 
551                                                    <textarea rows="20" cols="100" name="applicationData" id="appDataBAA-${offerId}" class="appDataBAA" style="display:none;" title="application data"></textarea>                                         
552                                                    <a  
553                                                        class="applyNowLink apply-now-button"  
554                                                        href="${oadURL}?locationCode=${lc_used}&amp;offerId=${offerId}&amp;preparerType=customer&amp;mktChl=${marketingChannel}"  
555                                                        data-button-name="apply-now-link"  
556                                                        data-product-name="${productName}" 
557
558                                                        ${consumerTitle.getSiblings()[cardIndex].applyNow.getData()} 
559                                                        <span class="screen-reader-only"> for ${partnerName!''} ${product!''} Card </span> 
560                                                    </a> 
561                                                </form> 
562                                            </li> 
563                                            <li> 
564                                                <a href="${environment}/${productName}?bankercode=${bCode}&ecdma-lc=${lc}${ecidExt}"> 
565                                                    ${consumerTitle.getSiblings()[cardIndex].LearnMore.getData()}<span class="screen-reader-only">about ${partnerName!''} ${product!''} Card </span> 
566                                                </a> 
567                                            </li> 
568                                        </ul> 
569                                    </div> 
570                                </div> 
571                                 
572                            </#list> 
573                             
574                        </div> 
575                    </div> 
576                </#if>  
577            </div> 
578            <script> 
579                var consumerSelector = '.jn-consumer-content-wrapper.jn-tab-content[data-id="consumerTab"]'; 
580                var businessSelector = '.jn-consumer-content-wrapper.jn-tab-content[data-id="businessTab"]'; 
581                 $(document).ready(function () { 
582                    var banker_code = "${bCode!''}"; 
583                    var tabs=$('.tab-nav'); 
584                    var slideDiv = $('.jn-tab-content.active');                    
585                    var screenWidthMobile = 768; 
586                    var screenWidth = window.innerWidth; 
587 
588                    if (tabs.length == 1) { 
589                        if ($(consumerSelector).length > 0) { 
590                            if(banker_code && (banker_code.indexOf("amp") == 0) && (banker_code.length > 6)) { 
591                                $("nav.jn-primary-nav").hide(); 
592                                changeCardLayout(consumerSelector); 
593                                createMetaTag("consumer"); 
594                            } else { 
595                                hideHeroAndDisclaimer('business'); 
596                                showHeroAndDisclaimer('consumer'); 
597                                changeCardLayout(consumerSelector); 
598                                renumberFootnote("consumer"); 
599                                createMetaTag("consumer");  
600
601                        }  
602                        if ($(businessSelector).length > 0) { 
603                            $(businessSelector).addClass('active'); 
604                            hideHeroAndDisclaimer('consumer'); 
605                            showHeroAndDisclaimer('business'); 
606                            changeCardLayout(businessSelector); 
607                            renumberFootnote("business"); 
608                            createMetaTag("business");  
609
610
611                    if (tabs.length == 2) { 
612                        renumberFootnote("consumer"); 
613                        renumberFootnote("business"); 
614                        createMetaTag("consumer"); 
615                        if ($(consumerSelector + ' .jn-consumer-item').length < 3) { 
616                            changeCardLayout(consumerSelector); 
617
618                        if ($(businessSelector + ' .jn-consumer-item').length < 3) { 
619                            changeCardLayout(businessSelector); 
620
621                             
622                        var tabsNav = document.querySelectorAll('.tab-nav'); 
623                        togglePrimaryNav(tabsNav); 
624 
625                        if(window.location.href.indexOf('#business') > -1 ) { 
626                            $(consumerSelector).removeClass('active'); 
627                            $(businessSelector).addClass('active'); 
628                            $('#consumerTab').removeClass('active'); 
629                            $('#businessTab').addClass('active'); 
630                            hideHeroAndDisclaimer('consumer'); 
631                            showHeroAndDisclaimer('business'); 
632                            changeCardLayout(businessSelector); 
633                            renumberFootnote("business"); 
634                            createMetaTag("business"); 
635 
636                            $(tabs).click(function(){ 
637                                if ($(this).attr('id') === "consumerTab") { 
638                                    var newUrl = window.location.toString(); 
639                                    window.location = newUrl.replace(/#business/, '#consumer'); 
640
641                                if ($(this).attr('id') === "businessTab") { 
642                                    var url = window.location.toString(); 
643                                    window.location = url.replace(/#consumer/, '#business'); 
644
645                            }); 
646
647
648                     
649                }); 
650                // Primary Nav function 
651                 
652                function togglePrimaryNav(elem) { 
653                    for (var i = 0; i < elem.length; i++) { 
654                        elem[i].addEventListener("click", function(e) { 
655 
656                            var current = this, 
657                                allSections = document.querySelectorAll('[data-id]'), 
658                                section = document.querySelector("[data-id='"+ current.id +"']"); 
659 
660                            for (var a = 0; a < allSections.length; a++) { 
661                                allSections[a].classList.remove('active'); 
662
663                            for (var c = 0; c < elem.length; c++) { 
664                                if (current != elem[c]) { 
665                                    elem[c].classList.remove('active'); 
666                                } else { 
667                                    current.classList.add('active'); 
668                                    section.classList.add('active'); 
669                                    hideHeroAndDisclaimer('consumer'); 
670                                    hideHeroAndDisclaimer('business'); 
671                                    if(current.getAttribute('id') === "consumerTab"){ 
672                                        showHeroAndDisclaimer('consumer'); 
673                                    } else if(current.getAttribute('id') === "businessTab"){ 
674                                        showHeroAndDisclaimer('business'); 
675
676
677
678                            e.preventDefault(); 
679                        }); 
680
681
682 
683                function renumberFootnote(type) { 
684                    var discriptionSelector = '.jn-consumer-content-wrapper.jn-tab-content' + '[data-id="' + type + 'Tab"]'; 
685                    var disclaimerSelector = '.tier1-disclaimer-landing-' + type; 
686                    var heroSelector = '.tier1-hero-landing-' + type; 
687                    var numOfFootnote = $(disclaimerSelector + ' sup').length; 
688                    var showList = []; 
689                    var hideList=[]; 
690                    for (var i = 1; i <= numOfFootnote; i++) { 
691                    var cssClass="tag-" + i; 
692                    if ($(discriptionSelector + ' sup').hasClass(cssClass) || $(heroSelector + ' sup').hasClass(cssClass)) { 
693                        showList.push(i);      
694                    } else { 
695                        hideList.push(i); 
696
697                    }  
698                    /* 
699                    for (var i = 1; i < showList.length + 1; i++) { 
700                        if(showList[i-1] != i) { 
701                            var className="tag-" + showList[i-1]; 
702                            $(heroSelector).find("." +  className).html(i); 
703                            // $(discriptionSelector).find("." +  className).html(i); 
704                            $(disclaimerSelector).find("." +  className).html(i); 
705
706
707                    */ 
708                    for (var i = 0; i <hideList.length; i++) { 
709                        var cname="tag-" + hideList[i]; 
710                        $(disclaimerSelector).find("." + cname).parent().hide(); 
711                    }    
712
713 
714                function changeCardLayout(cssSelector) { 
715                    var numOfCards = $(cssSelector + ' .jn-consumer-item').length; 
716                    if(numOfCards == 1) { 
717                        $(cssSelector).addClass('one-card'); 
718                    } else if (numOfCards == 2) { 
719                        $(cssSelector).addClass('two-card'); 
720                    }   
721
722                function hideHeroAndDisclaimer(type) { 
723                    try { 
724                        document.querySelector('.tier1-hero-landing-'+ type).classList.remove('show'); 
725                        document.querySelector('.tier1-hero-landing-'+ type).classList.add('hide'); 
726                    } catch (e) { 
727                        console.log(e); 
728
729 
730                    try { 
731                        document.querySelector('.tier1-disclaimer-landing-'+ type).classList.remove('show'); 
732                        document.querySelector('.tier1-disclaimer-landing-'+ type).classList.add('hide');  
733                    } catch (e) { 
734                        console.log(e); 
735
736 
737
738                function showHeroAndDisclaimer(type) { 
739                    try { 
740                        document.querySelector('.tier1-hero-landing-'+ type).classList.add('show'); 
741                        document.querySelector('.tier1-hero-landing-'+ type).classList.remove('hide'); 
742                    } catch (e) { 
743                        console.log(e); 
744
745                     
746                    try { 
747                        document.querySelector('.tier1-disclaimer-landing-'+ type).classList.add('show'); 
748                        document.querySelector('.tier1-disclaimer-landing-'+ type).classList.remove('hide');  
749                    } catch (e) { 
750                        console.log(e); 
751
752 
753
754                function createMetaTag(type) { 
755                    var partnerName = "${partnerName!0}"; 
756                    var product_name = $('.jn-hero-container .jn-button').data('product-name'); 
757                    var metaDesc = ""; 
758                    if (type == "consumer") {     
759                        if(location.pathname.indexOf("11t1m") != -1) { 
760                            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." 
761                        } else {                                    
762                            if(product_name ==  "consumer-platinum2103") { 
763                                metaDesc = "Apply Today for a "+partnerName+" Credit Card. Limited Time Offer. 0% Intro APR on Purchases and Balance Transfers for 20 Billing Cycles Consolidate your Balances with the "+partnerName+" Intro APR Card."; 
764                            } else if(product_name ==  "real-rewards") { 
765                                metaDesc = "Apply Today for a "+partnerName+" Credit Card. Take home 2,500 bonus points after your first purchase."; 
766                            } else if(product_name ==  "secured") { 
767                                metaDesc = "Apply Today for a "+partnerName+" Credit Card. Use this card as a solid foundation to build your credit."; 
768                            } else if(product_name ==  "max-cash") { 
769                                metaDesc = "Apply Today for a "+partnerName+" Credit Card. Earn a $150 Bonus and 5% cash back on the two categories you select."; 
770
771
772 
773                    } else if (type == "business") { 
774                        if(product_name ==  "business-cashback") {               
775                            metaDesc = "Apply Today for a "+partnerName+" Credit Card. Earn Cash back on common business expenses."; 
776                        } else if(product_name ==  "business-real-rewards") { 
777                            metaDesc = "Apply Today for a "+partnerName+" Credit Card. Get more rewards in the categories you spend the most on."; 
778                        } else if(product_name ==  "business-visa") { 
779                            metaDesc = "Apply Today for a "+partnerName+" Business Card. 0% Intro APR on Purchases and Balance Transfers for 15 Billing Cycles"; 
780                        } else if(product_name ==  "smart-business-rewards") { 
781                            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."; 
782
783
784                    var m = document.createElement('meta');  
785                    m.name = 'description';  
786                    m.content = metaDesc;  
787                    document.head.appendChild(m); 
788
789                function goToByScroll(id) { 
790                    var element = document.getElementById(id); 
791                    element.scrollIntoView(true); 
792
793                 
794            </script> 
795            <script> 
796                var reportingData = window.reportingData || {}; 
797                document.addEventListener('DOMContentLoaded', function() {                    
798                    var page = location.pathname.split('/')[location.pathname.split('/').length-1]; 
799                    var hostName = location.hostname;                                     
800                    function getDomainFromHostname(hostname) { 
801                        var parts = hostname.split('.'); 
802                        return parts.length === 3 ? parts[1] : parts[0]; 
803
804                    var domain = getDomainFromHostname(hostName); 
805                    var partnerName = "${partnerName!0}"; 
806                    var ameriprise = '${ameriprise?string("yes", "no")}'; 
807                    var locationCode = "${rLC!lc}"; 
808                    var eidAmp = ""; 
809                    var heroCardImgs = document.querySelectorAll('.jn-consumer-card-image img, .cardArtImg img'); 
810                    for (var index = 0; index < heroCardImgs.length; index++) { 
811                        var heroCardImg = heroCardImgs[index]; 
812                        var heroCardSrc = heroCardImg.getAttribute("src"); 
813                        if(heroCardSrc != "") { 
814                            resizeImg(heroCardImg); 
815
816
817                    if (ameriprise == "yes") { 
818                        var bankercode_amp = '${bCode}'; 
819                        eidAmp = bankercode_amp.substring(3); 
820                        locationCode =""; 
821                        document.title = "Ameriprise Financial Credit Card Overview Page"; 
822                    } else { 
823                        document.title = partnerName + " Credit Card Index Page"; 
824
825                     
826                    var lc = '${lc!0}'; 
827 
828                    var regex = /\d+/g; 
829                    var bdNumber = "${bPhone!''}"; 
830                    var phoneNum = bdNumber.match(regex); 
831                    var areaCode = ""; 
832                    var exchangeCode = ""; 
833                    var num = ""; 
834                    if(phoneNum != null) { 
835                        phoneNum = phoneNum.join(""); 
836                        areaCode = phoneNum.substring(0,3); 
837                        exchangeCode = phoneNum.substring(3,6); 
838                        num = phoneNum.substring(6,10); 
839
840 
841                        /* update SiteCatalyst data object */ 
842                    reportingData.current_page = "microsite:${partnerName}:" + domain + ':' + page.replace('-',' '); 
843                    reportingData.page_type = 'product';  
844                    reportingData.site_section = 'credit cards'; 
845                    reportingData.platform = 'microsite'; 
846                    reportingData.campaign_id = '${campaignId}'; 
847                    reportingData.location_code = '${rLC!0}'; 
848                    reportingData.partner_name = "${partnerName}"; 
849                    reportingData.product = 'All Cards'; 
850                    reportingData.text_to_apply_source = '${text_to_apply_source}'; 
851                    reportingData.visitor_type = 'prospect';         
852                    reportingData.Banker_id = '${boeid}'; 
853                    reportingData.Banker_code = '${bCode}'; 
854 
855                                                     
856                    /* SiteCatalyst  pageView tracking */ 
857                    AUI().ready(function() { 
858                        if (window.publisherFW) {                            
859                            window.publisherFW.publishEvent("pageView", reportingData); 
860
861                    });  
862                                   
863                    $('.jn-button').removeAttr('disabled'); 
864                    $('.jn-button').removeClass('jn-disabled'); 
865 
866                    jQuery('.applyNowLink').on('click', function(e) { 
867                        $(this).closest('.BAAForm').submit(); 
868                        const bankerId = '${boeid}'; 
869                        const employeeId = ""; 
870                        let visitorId = bankerId; 
871                         
872                        if('${isEmployee?string("yes", "no")}' == "yes") { 
873                            visitorId = employeeId; 
874
875                        const htmlElementName = e.target.nodeName; 
876                        const isButton = (htmlElementName ==='BUTTON'); 
877                        // gets href of clicked anchor tag 
878                        let href = e.target.href; 
879 
880                        // get action url of form submit button  
881                        if(isButton) { 
882                            href = document.getElementById('BAAForm').action; 
883
884 
885                        const urlParams = new URLSearchParams(href);                    
886                        let offerId = ""; 
887 
888                        if(urlParams.has('offerid')) { 
889                            offerId = urlParams.get('offerid'); 
890
891 
892                        if(urlParams.has('offerId')) { 
893                            offerId = urlParams.get('offerId'); 
894
895                         
896                        window.dataLayer.push({ 
897                            'event' : 'apply_payload', 
898                            'location_code': locationCode, 
899                            'banker_code': '${bCode}', 
900                            'offer_id': offerId, 
901                            'visitor_id': visitorId, 
902                        }); 
903                        return false; 
904                    }); 
905                    jQuery(".BAAForm").on("submit", function(e){ 
906                        e.preventDefault();                         
907                        var xmlData; 
908                        if('${isEmployee?string("yes", "no")}' == "yes") { 
909
910                        if(ameriprise == "yes") { 
911                            xmlData = '<?xml version="1.0"?>'+ 
912                                "<prefillData>"+  
913                                    "<versionNumber>1.0</versionNumber>"+  
914                                    "<applicationData>"+  
915                                        "<referral>" +  
916                                            "<employeeId>" + eidAmp + "</employeeId>" + 
917                                            "<storeNumber>"+"${bName!'0'}"+"</storeNumber>"+ 
918                                            "<divisionNumber></divisionNumber>"+ 
919                                        "</referral>" +  
920                                        "<bankerInformation>"+  
921                                            "<locationCode>" + locationCode + "</locationCode>"+ 
922                                            "<originatingBranchNumber>"+"${bName!'0'}"+"</originatingBranchNumber>"+ 
923                                            "<employeeID>${boeid!0}</employeeID>"+ 
924                                            "<name>" + 
925                                            "<first>${bFName!'0'}</first>" + 
926                                            "<last>${bLName!'0'}</last>" + 
927                                            "</name>"+ 
928                                            "<phone>"+ 
929                                            "<areaCode>"+areaCode+"</areaCode>"+  
930                                            "<exchange>"+exchangeCode+"</exchange>"+ 
931                                            "<number>"+num+"</number>"+  
932                                            "</phone>"+  
933                                        "</bankerInformation>"+  
934                                    "</applicationData>"+  
935                                "</prefillData>" 
936                        } else if ('${isEmployee?string("yes", "no")}' == "yes") {  
937                            xmlData = '<?xml version="1.0"?>'+ 
938                                "<prefillData>"+  
939                                    "<versionNumber>1.0</versionNumber>"+  
940                                    "<applicationData>"+                                         
941                                        "<bankerInformation>"+  
942                                            "<employeeFullName>Employee Product</employeeFullName>"+ 
943                                            "<employeeId>EMPPROD</employeeId>"+ 
944                                            "<employeePhoneNumber></employeePhoneNumber>"+ 
945                                            "<locationCode>" + locationCode + "</locationCode>"+ 
946                                            "<originatingBranchNumber>"+"${bName!'0'}"+"</originatingBranchNumber>"+ 
947                                            "<originatingBranchId></originatingBranchId>"+ 
948                                            "<name>" + 
949                                                "<first>${bFName!'0'}</first>" + 
950                                                "<last>${bLName!'0'}</last>" + 
951                                            "</name>"+ 
952                                            "<phone>"+ 
953                                                "<areaCode>" + areaCode + "</areaCode>"+  
954                                                "<exchange>" + exchangeCode + "</exchange>"+ 
955                                                "<number>" + num + "</number>"+  
956                                            "</phone>"+  
957                                        "</bankerInformation>"+  
958                                        "<referral>" +  
959                                            "<divisionNumber></divisionNumber>" +       
960                                            "<partnerLocationID>" + locationCode + "</partnerLocationID>" +                          
961                                            "<referralId>EMPPROD</referralId>" + 
962                                        "</referral>" +  
963                                    "</applicationData>"+  
964                                "</prefillData>";                             
965                        } else { 
966                            xmlData = '<?xml version="1.0"?>'+ 
967                                "<prefillData>"+  
968                                    "<versionNumber>1.0</versionNumber>"+  
969                                    "<applicationData>"+  
970                                        "<bankerInformation>"+  
971                                            "<locationCode>" + locationCode + "</locationCode>"+ 
972                                            "<originatingBranchNumber>"+"${bName!'0'}"+"</originatingBranchNumber>"+ 
973                                            "<employeeID>${boeid!0}</employeeID>"+ 
974                                            "<name>" + 
975                                                "<first>${bFName!'0'}</first>" + 
976                                                "<last>${bLName!'0'}</last>" + 
977                                            "</name>"+ 
978                                            "<phone>"+ 
979                                                "<areaCode>"+areaCode+"</areaCode>"+  
980                                                "<exchange>"+exchangeCode+"</exchange>"+ 
981                                                "<number>"+num+"</number>"+  
982                                            "</phone>"+  
983                                        "</bankerInformation>"+  
984                                    "</applicationData>"+  
985                                "</prefillData>" 
986
987                        $(this).children(".appDataBAA").val(xmlData); 
988                        var buttonName = $(this).find(".apply-now-button").data("button-name"); 
989                        var productName = $(this).find(".apply-now-button").data("product-name"); 
990                        /* SiteCatalyst  onClick tracking */ 
991                        reportingData.apply_button = buttonName; 
992                        reportingData.product = productName; 
993 
994                        if (window.publisherFW) {                            
995                            window.publisherFW.publishEvent("onClick", reportingData); 
996
997                        var paramString = '${bCode}' + "&" + xmlData + "&" + '${htmlUtil.escapeURL(htmlUtil.escapeJS(url))}'; 
998                            /* CRC service call */ 
999                            Liferay.Service( 
1000                                '/crc-utilities-portlet#crcremote/make-call', 
1001
1002                                    storedProcedure: 'crcDDCTextApplyLog', 
1003                                    parameters: paramString 
1004                                }, 
1005                                function(obj){                                   
1006
1007                            ); 
1008 
1009                        this.submit();                   
1010                    });                                                                                   
1011                }); 
1012                function resizeImg(img) { 
1013                    img.addEventListener("load", function() { 
1014                        var cardImgWidth = img.width; 
1015                        var cardImgHeight = img.height; 
1016                        if(cardImgWidth > cardImgHeight) { 
1017                            img.style.width = "285px"; 
1018                        } else { 
1019                            img.style.width = "150px"; 
1020
1021                    }); 
1022
1023            </script>                    
1024                 
1025        </#if>  
1026    </#if> 
1027</#if> 
テンプレート処理中にエラーが発生しました。
The following has evaluated to null or missing:
==> qstringmap["bankercode"]  [in template "10153#10191#5843858" 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 "10153#10191#5843858" 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    <#if (fiCardsData?size > 0) > 
41        <#assign cardProvider = utilServ.makeCall('crcDDCGetMcOrVisa', fiCardsData[0].offerType + '&' + lc)> 
42     
43        <#if (cardProvider?size > 0)> 
44            <#-- This will be V for visa or M for mastercard. --> 
45            <#assign cardProviderAbbreviated = cardProvider[0].cardType> 
46        <#else> 
47            <script> 
48                console.log("No card provider(Visa/Master Card) found for disclaimer"); 
49            </script> 
50        </#if> 
51 
52 
53        <div class="jn-disclaimer tier1-disclaimer-${class.getData()}" title="${partnerName} - Disclaimer"> 
54            <div class="disclaimer" > 
55                <#if (disclaimersVisa?has_content && cardProviderAbbreviated?contains("V"))> 
56                    ${disclaimersVisa.getData()} 
57                </#if> 
58                <#if (disclaimersMasterCard?has_content && cardProviderAbbreviated?contains("M")) > 
59                    ${disclaimersMasterCard.getData()} 
60                </#if> 
61            </div> 
62        </div> 
63    </#if> 
64<#else> 
65    <script> 
66        console.log("No lc for disclaimer"); 
67    </script> 
68</#if> 
テンプレート処理中にエラーが発生しました。
The following has evaluated to null or missing:
==> qstringmap["bankercode"]  [in template "10153#10191#5843858" 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 "10153#10191#5843858" 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    <#if (fiCardsData?size > 0) > 
41        <#assign cardProvider = utilServ.makeCall('crcDDCGetMcOrVisa', fiCardsData[0].offerType + '&' + lc)> 
42     
43        <#if (cardProvider?size > 0)> 
44            <#-- This will be V for visa or M for mastercard. --> 
45            <#assign cardProviderAbbreviated = cardProvider[0].cardType> 
46        <#else> 
47            <script> 
48                console.log("No card provider(Visa/Master Card) found for disclaimer"); 
49            </script> 
50        </#if> 
51 
52 
53        <div class="jn-disclaimer tier1-disclaimer-${class.getData()}" title="${partnerName} - Disclaimer"> 
54            <div class="disclaimer" > 
55                <#if (disclaimersVisa?has_content && cardProviderAbbreviated?contains("V"))> 
56                    ${disclaimersVisa.getData()} 
57                </#if> 
58                <#if (disclaimersMasterCard?has_content && cardProviderAbbreviated?contains("M")) > 
59                    ${disclaimersMasterCard.getData()} 
60                </#if> 
61            </div> 
62        </div> 
63    </#if> 
64<#else> 
65    <script> 
66        console.log("No lc for disclaimer"); 
67    </script> 
68</#if> 
テンプレート処理中にエラーが発生しました。
The following has evaluated to null or missing:
==> qstringmap["bankercode"]  [in template "10153#10191#5843861" at line 8, 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 "10153#10191#5843861" at line 8, column 1]
----
1<#assign aDateTime = .now> 
2<#assign currentYear = aDateTime?string.yyyy> 
3<#assign url = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()/> 
4<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))> 
5<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! /> 
6<#assign url404 = '/error/404.html'> 
7 
8<#assign bCode= qstringmap["bankercode"]?first> 
9<#assign bCode = htmlUtil.escape(bCode)> 
10<#assign bCode = htmlUtil.escapeJS(bCode)> 
11 
12<#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetail','0&'+bCode)> 
13<#list bData as b>      
14    <#assign lc = b.locationcode > 
15    <#assign rLC = b.reallocationcode > 
16    <#assign mappedLC = b.mappedLocationCode > 
17</#list>  
18 
19<#if bCode?starts_with("amp") && (url?contains("11t1m"))> 
20    <#assign ameriprise = true> 
21<#else> 
22    <#assign ameriprise = false> 
23</#if> 
24<#if mappedLC?has_content && !ameriprise> 
25    <#assign lc = mappedLC > 
26</#if> 
27 
28<#if lc?has_content> 
29 
30    <#assign prefix = "00000" > 
31    <#assign lcWithPrefix = prefix + lc > 
32    <#assign withPrefixLength = lcWithPrefix?length > 
33    <#assign startHere = withPrefixLength - 5> 
34    <#assign lc = lcWithPrefix?substring(startHere)> 
35<#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! > 
36    <#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
37 
38    <#assign clientProfile = clientProfileList?first> 
39    <#assign pbu = clientProfile.getPbu()> 
40    <#assign subbu = clientProfile.getSUBBRANDBUNBR()>   
41    <#assign partnerName=clientProfile.getMarketingNameLong()> 
42    <#assign clientDataService = (serviceLocator.findService("com.elan.crc.user.service.CrcPbuLocalService"))! /> 
43    <#assign clientProfileDataList = clientDataService.getByPbuAndSubBu(pbu,subbu)> 
44    <#assign partnerUrl = clientProfileDataList.getPartnerMainUrl()> 
45    <#if partnerUrl?has_content && !partnerUrl?matches(r"(?i)^https?\:\/\/.*") && !partnerUrl?matches(r"(?i)^https?\:&#x2F;&#x2F;.*")> 
46        <#-- add protocal if missing  --> 
47        <#assign partnerUrl = 'https://' + partnerUrl> 
48    </#if> 
49    <footer class="footer bg-color-black text-color-white"> 
50        ${footerContent.getData()} 
51    </footer> 
52 
53    <!-- BEGIN CALIFORNIA OPT-OUT MODAL STYLE AND MARKUP --> 
54        <script src="https://unpkg.com/micromodal/dist/micromodal.min.js"></script> 
55        <style> 
56            #opt-out-button, 
57            .modal__btn.learn-more { 
58                background: #0C2074; 
59                border: 1px solid #0C2074; 
60                color: white; 
61                text-transform: uppercase; 
62                text-decoration: none; 
63                font-size: 16px; 
64                padding: 0.5rem 2rem; 
65                display: inline-block; 
66                border-radius: 0; 
67
68            #opt-out-button:hover, 
69            .modal__btn.learn-more:hover { 
70                color: white; 
71                border-color: #2C76AF !important; 
72                background-color: #2C76AF !important; 
73
74            .modal__btn.learn-more { 
75                background: white; 
76                border: 1px solid #0C2074; 
77                color: #0C2074; 
78
79            #opt-out-button[disabled="true"] { 
80                background-color: rgba(0,0,0,.15); 
81                color: rgba(0,0,0,.45); 
82                border-color: rgba(0,0,0,.25); 
83
84            #opt-out-button:hover[disabled="true"] { 
85                background-color: rgba(0,0,0,.15) !important; 
86                color: rgba(0,0,0,.45) !important; 
87                border-color: rgba(0,0,0,.25) !important; 
88
89            #opt-out-button:focus { 
90                outline-style: solid; 
91                outline-color: white; 
92                outline-offset: -3px; 
93                outline-width: 1px; 
94
95            .opt-out-link svg { 
96                width: 30px; 
97                height: 14px; 
98                width: auto; 
99                vertical-align: middle; 
100
101            .modal__overlay { 
102                position: fixed; 
103                top: 0; 
104                left: 0; 
105                right: 0; 
106                bottom: 0; 
107                background: rgba(0,0,0,0.6); 
108                display: flex; 
109                justify-content: center; 
110                align-items: center; 
111
112 
113            .modal__container { 
114                background-color: #fff; 
115                padding: 30px; 
116                max-width: 500px; 
117                max-height: 100vh; 
118                border-radius: 4px; 
119                overflow-y: auto; 
120                box-sizing: border-box; 
121
122 
123            .modal__header { 
124                display: flex; 
125                justify-content: space-between; 
126                align-items: center; 
127
128 
129            .modal__title { 
130                margin-top: 0; 
131                margin-bottom: 0; 
132                font-weight: 600; 
133                font-size: 20px; 
134                line-height: 1.25; 
135                color: #00449e; 
136                box-sizing: border-box; 
137
138 
139            .modal__close { 
140                background: transparent; 
141                border: 1px solid white; 
142                padding: 4px 8px; 
143
144            .modal__close:hover { 
145                border: 1px solid black; 
146
147 
148            .modal__header .modal__close:before { content: "\2715"; } 
149 
150            .modal__content { 
151                margin-top: 2rem; 
152                margin-bottom: 2rem; 
153                line-height: 1.5; 
154
155 
156            @keyframes mmfadeIn { 
157                from { opacity: 0; } 
158                to { opacity: 1; } 
159
160 
161            @keyframes mmfadeOut { 
162                from { opacity: 1; } 
163                to { opacity: 0; } 
164
165 
166            @keyframes mmslideIn { 
167                from { transform: translateY(15%); } 
168                to { transform: translateY(0); } 
169
170 
171            @keyframes mmslideOut { 
172                from { transform: translateY(0); } 
173                to { transform: translateY(-10%); } 
174
175 
176            .micromodal-slide { 
177                display: none; 
178
179 
180            .micromodal-slide.is-open { 
181                display: block; 
182
183 
184            .micromodal-slide[aria-hidden="false"] .modal__overlay { 
185                animation: mmfadeIn .3s cubic-bezier(0.0, 0.0, 0.2, 1); 
186
187 
188            .micromodal-slide[aria-hidden="false"] .modal__container { 
189                animation: mmslideIn .3s cubic-bezier(0, 0, .2, 1); 
190
191 
192            .micromodal-slide[aria-hidden="true"] .modal__overlay { 
193                animation: mmfadeOut .3s cubic-bezier(0.0, 0.0, 0.2, 1); 
194
195 
196            .micromodal-slide[aria-hidden="true"] .modal__container { 
197                animation: mmslideOut .3s cubic-bezier(0, 0, .2, 1); 
198
199 
200            .micromodal-slide .modal__container, 
201            .micromodal-slide .modal__overlay { 
202                will-change: transform; 
203
204        </style> 
205 
206        <div class="modal micromodal-slide" id="modal-1" aria-hidden="true"> 
207        <div class="modal__overlay" tabindex="-1" data-micromodal-close> 
208            <div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-1-title"> 
209            <header class="modal__header"> 
210                <h2 class="modal__title" id="modal-1-title"> 
211                Your California privacy choices 
212                </h2> 
213                <button class="modal__close" aria-label="Close modal" data-micromodal-close></button> 
214            </header> 
215            <div class="modal__content" id="modal-1-content"> 
216                <div id="message-no-cookie"> 
217                    <p> 
218                    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> 
219                     
220        <p>&nbsp;</p> 
221 
222        <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> 
223            </div> 
224            <div id="message-with-cookie"> 
225                <p>You have successfully opted-out.</p> 
226            </div> 
227            </div> 
228            <div class="modal__footer"> 
229                <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> 
230                <button id="opt-out-button" class="modal__btn modal__btn-primary" aria-label="Opt Out and Close modal" onclick="window.californiaOptOut()">Opt Out</button> 
231            </div> 
232            </div> 
233        </div> 
234        </div> 
235    <!-- END CALIFORNIA OPT-OUT MODAL STYLE AND MARKUP --> 
236    <script> 
237        const fdicNode = document.querySelector('.footer .fdic');                          
238    </script> 
239    <script> 
240        const copyrightNode = document.querySelector('.footer .copyright'); 
241        if (copyrightNode) { 
242            copyrightNode.innerHTML = '<sup>©</sup> Elan Financial Services ' + ${currentYear}; 
243
244 
245    </script> 
246    <#if url?contains("11t1m")> 
247        <script>        
248            copyrightNode.classList.add("ecdma-footer-client-name-copyright"); 
249            fdicNode.innerHTML='<a class="text-color-white" href="https://login.elancreditcard.com/onlineCard/publicPrivacyPolicy.do?phase=privacyPolicy" target="_blank">Privacy and Security</a>'; 
250        </script> 
251    <#else> 
252        <script> 
253            copyrightNode.classList.add("ecdma-footer-client-name-copyright"); 
254            fdicNode.innerHTML='<a class="text-color-white" href="https://login.elancreditcard.com/onlineCard/publicPrivacyPolicy.do?phase=privacyPolicy" target="_blank">Privacy and Security</a>'; 
255            var newNode = document.createElement("div");  
256            newNode.classList.add("member-agreement"); 
257            newNode.innerHTML='<a class="text-color-white" href="https://online1.elancard.com/oad/cmas.controller?locationCode=${lc!0}&preparerType=customer&isNewRequest=false" target="_blank">Cardmember Agreements</a>'; 
258            var parent = fdicNode.parentNode; 
259            parent.insertBefore(newNode, fdicNode); 
260        </script> 
261    </#if> 
262 
263    <#if partnerUrl?has_content> 
264        <script> 
265            document.querySelector('.copyright .homelink').innerHTML="<a class='text-color-white' href='${partnerUrl!''}' title='${partnerName!''}' target='_blank'>Home</a>"; 
266        </script> 
267    </#if> 
268 
269    <script> 
270        /* BEGIN CALIFORNIA OPT-OUT MODAL TRIGGER */ 
271        fdicNode.insertAdjacentHTML('afterend', '<div style="display: inline-block; margin-left: 100px;"><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>'); 
272        /* END CALIFORNIA OPT-OUT MODAL TRIGGER */ 
273    </script> 
274    <!-- BEGIN CALIFORNIA OPT-OUT MODAL LOGIC --> 
275 
276    <script> 
277        window.getCookieDomain = function() { 
278            var hostname = window.location.hostname.split("."); 
279            return hostname && hostname.slice(hostname.length - 2).join("."); 
280
281        window.setToOptOut = function() { 
282            if (window.getCookie('privacy_optout')) { 
283                    document.getElementById('message-no-cookie').style.display = 'none'; 
284                    document.getElementById('message-with-cookie').style.display = 'block'; 
285                    document.getElementById('opt-out-button').setAttribute('disabled', true) 
286                } else { 
287                    document.getElementById('message-no-cookie').style.display = 'block'; 
288                    document.getElementById('message-with-cookie').style.display = 'none'; 
289
290
291        window.getCookie = function(name) { 
292            var value = '; ' + document.cookie; 
293            var parts = value.split('; ' + name + '='); 
294            if (parts.length === 2) return parts.pop().split(';').shift(); 
295
296        window.californiaOptOut = function() { 
297            if (!window.getCookie('privacy_optout')) { 
298                document.cookie = 'privacy_optout=1; path=/; domain=' + window.getCookieDomain() + '; expires=Thu, 31 Dec 2099 00:00:00 GMT;'; 
299                try { 
300                if (window.CustomEvent) { 
301                    window.dispatchEvent(new CustomEvent('privacy_optout')); 
302                } else { 
303                    var privacyOptoutEvent = document.createEvent('Event'); 
304                    privacyOptoutEvent.initEvent('privacy_optout', true, true); 
305                    window.dispatchEvent(privacyOptoutEvent); 
306
307                window.setToOptOut(); 
308                } catch (err) { 
309                console.error(err); 
310
311
312
313        MicroModal.init({ 
314            onShow: window.setToOptOut 
315        }); 
316        AUI().ready(function() { 
317            // user browser setting for Global Privacy Control to opt out of sharing information with third parties 
318            const isBrowserGpcOptOut = navigator.globalPrivacyControl; 
319            if(isBrowserGpcOptOut === true) { 
320            window.californiaOptOut(); 
321
322        }); 
323    </script> 
324    <!-- END CALIFORNIA OPT-OUT MODAL LOGIC --> 
325 
326</#if>