An error occurred while processing the template.
?substring(...) expects a number as argument #1, but received a Null.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign yturl2 = yturl?substring(index)  [in template "20302#20342#NEWS_RELEASE_DETAIL" at line 123, column 13]
----
1<#assign _dlfels = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") /> 
2<#-- set the default image and alt text --> 
3<#assign imgSrc = Image.getData() > 
4<#assign imgAltText = Content.getData() > 
5<#-- sets Alternate image --> 
6<#assign imgSrc2 = Alternate_Hero_Image.getData() > 
7<#assign imgAltText2 = Content.getData() > 
8 
9<#-- try to set more advanced options of image display --> 
10<#-- set the base hostname url for environment (local/qa/stg/prod) --> 
11<#assign imageBaseUri = ui_config.getCdnCgiUri() > 
12<#-- determine if we want to use CDN Image Optimizations or not --> 
13<#if ui_config.getUseCdnImageOptimizations() > 
14<#-- set the instructions to use for optimizing the image(s) in this item --> 
15    <#assign instructionPath = "/cdn-cgi/image/q=50" > 
16    <#if !getterUtil.getBoolean(By_pass_Cloudflare_optimization.getData())> 
17        <#assign imageBaseUri = imageBaseUri + instructionPath > 
18    </#if> 
19</#if> 
20<#assign treePath = group_util.getGroupFriendlyUrlTreePath(groupId) > 
21 
22<#assign image_attributes = jsonFactoryUtil.createJSONObject(Image.getAttributes()) > 
23<#if (image_attributes.fileEntryId??) > 
24    <#assign fileEntryId = image_attributes.fileEntryId?number > 
25    <#if fileEntryId??> 
26        <#assign fe = _dlfels.getFileEntry(fileEntryId)> 
27        <#if fe??> 
28            <#assign imgSrc = imageBaseUri + "/documents/" + fe.repositoryId +"/"  + fe.fileEntryId + "/" + fe.fileName + "/" + fe.uuid + "?t=" + fe.modifiedDate?long > 
29            <#if image_attributes.alt?has_content> 
30                <#assign imgAltText = image_attributes.alt > 
31            <#else> 
32                <#assign imgAltText = imgAltText?replace('<[^>]+>','','r') > 
33            </#if> 
34        </#if> 
35    </#if> 
36</#if> 
37 
38<#assign image_attributes2 = jsonFactoryUtil.createJSONObject(Alternate_Hero_Image.getAttributes()) > 
39<#if (image_attributes2.fileEntryId??) > 
40    <#assign fileEntryId2 = image_attributes2.fileEntryId?number > 
41    <#if fileEntryId2??> 
42        <#assign fe = _dlfels.getFileEntry(fileEntryId2)> 
43        <#if fe??> 
44            <#assign imgSrc2 = imageBaseUri + "/documents/" + fe.repositoryId +"/"  + fe.fileEntryId + "/" + fe.fileName + "/" + fe.uuid + "?t=" + fe.modifiedDate?long > 
45            <#if image_attributes2.alt?has_content> 
46                <#assign imgAltText2 = image_attributes2.alt > 
47            <#else> 
48                <#assign imgAltText2 = imgAltText2?replace('<[^>]+>','','r') > 
49            </#if> 
50        </#if> 
51    </#if> 
52</#if> 
53 
54<style> 
55    /*displays bios on one row if there's room */ 
56    #ay .ay-news-release__content .contact-group { 
57        display:flex; 
58        flex-justify:start; 
59        flex-wrap:wrap; 
60
61    /*Keeps the ay-bio from smooshing width-wise.*/ 
62    #ay .ay-news-release__content .ay-bio { 
63        min-width:240px; 
64
65    /* added the white on hover because the primary button is supposed to have white text, but it has light blue so the text disappears on hover. */ 
66    #ay .ay-button__primary:hover { 
67        color:#FFF; 
68
69</style> 
70 
71<#assign displayDate = .vars['reserved-article-display-date'].data> 
72<#setting time_zone = languageUtil.get(locale, "template-timezone")> 
73<#assign originalLocale = locale> 
74<#setting locale = localeUtil.getDefault()> 
75<#assign displayDate = displayDate?date("EEE, d MMM yyyy HH:mm:ss Z")> 
76<#setting locale = originalLocale> 
77<#assign displayDate = displayDate?string("long")> 
78 
79<div class="ay-news-release"> 
80    <h1 id="ay-artTitle" class="h2">${Content.getData()}</h1> 
81    <#if validator.isNotNull(Youtube_Video_Hero_.getData()) > 
82        <#assign yturl = Youtube_Video_Hero_.getData()> 
83    <#else> 
84        <#assign yturl = ''> 
85    </#if> 
86    <#if Image.getData()?has_content && !yturl?has_content > 
87        <#if Hide_hero_image_on_detail_page.getData()?has_content> 
88        <#-- if var doesn't exist or equals false '0'--> 
89            <#if !Alternate_Hero_Image.getData()?has_content> 
90                <#if getterUtil.getBoolean(By_pass_Cloudflare_optimization.getData())> 
91                    <img src="${Image.getData()}" alt="${imgAltText}"> 
92                <#else> 
93                    <img src="${imgSrc}" alt="${imgAltText}"> 
94                </#if> 
95            <#else> 
96                <#if getterUtil.getBoolean(By_pass_Cloudflare_optimization.getData())> 
97                    <img src="${Alternate_Hero_Image.getData()}" alt="${imgAltText}" style="max-height: none;"> 
98                <#else> 
99                    <img src="${imgSrc2}" alt="${imgAltText2}" style="max-height: none;"> 
100                </#if> 
101            </#if> 
102        </#if> 
103    </#if> 
104    <#if validator.isNotNull(Youtube_Video_Hero_.getData()) > 
105        <#assign isVimeo = "false"> 
106        <#assign yturl = Youtube_Video_Hero_.getData()> 
107        <#if yturl?contains("https://youtu.be/")> 
108            <#assign index = yturl?index_of('https://youtu.be/')> 
109            <#assign index = index + 17> 
110        </#if> 
111        <#if yturl?contains("https://www.youtube.com/watch?v=")> 
112            <#assign index = yturl?index_of('https://www.youtube.com/watch?v=')> 
113            <#assign index = index + 32> 
114        </#if> 
115 
116        <#if yturl?contains("https://vimeo.com/")> 
117            <#assign isVimeo = "true"> 
118            <#assign index = yturl?remove_beginning("https://vimeo.com/")> 
119            <#assign videoEmbedCode = "https://player.vimeo.com/video/" + index> 
120            <#assign yturl2 = videoEmbedCode> 
121            <#assign linkURL = yturl> 
122        <#else> 
123            <#assign yturl2 = yturl?substring(index)> 
124            <#assign linkURL = "https://www.youtube.com/embed/${yturl2}?rel=0&amp;showinfo=0&amp;autoplay=1"> 
125        </#if> 
126 
127        <div class="ay-video-firefox-extra-wrap"> 
128            <div class="ay-video-wrapper"> 
129                <#if Image.getData()?has_content> 
130                    <a href="${linkURL}" target="youtubevideo" style="background:url('${Image.getData()}') no-repeat center center; background-size:cover;"></a> 
131                </#if> 
132                <div class="<#if isVimeo == 'true'>ytv-container<#else>yt-container ytv-container</#if>" video="${yturl2}"> 
133                    <#if isVimeo == "true"> 
134                        <iframe id="youtubeiframe" name="youtubevideo" width="1280" height="720" src="${videoEmbedCode}" frameborder="0" allow="autoplay; fullscreen" allowfullscreen></iframe> 
135                    </#if> 
136                </div> 
137                <#if isVimeo == "true"> 
138                    <script src="https://player.vimeo.com/api/player.js"></script> 
139                    <script>const player = new Vimeo.Player("youtubeiframe");</script> 
140                </#if> 
141                <script> 
142                    $(document).ready(function(){ 
143                        $(".ay-video-wrapper a").bind("click",function(event){ 
144                            <#if isVimeo == "true"> 
145                            event.preventDefault(); 
146                            $(this).next().children().css({visibility:'visible'}); 
147                            player.play(); 
148                            <#else> 
149                            $(this).next().children().css({visibility:'visible'}); 
150                            </#if> 
151                            if($(".cc-window").hasClass("cc-invisible") == true){ 
152                                if($(".yt-container").html() != ""){ 
153                                    $(this).css({display:'none'}); 
154                                    <#if isVimeo == "false"> 
155                                    $(this).next().children().css({visibility:'visible'}).click(); 
156                                    </#if> 
157
158                            }else{ 
159                                event.preventDefault(); 
160
161                        }); 
162                    }); 
163                </script> 
164            </div> 
165        </div> 
166    </#if> 
167 
168    <small>${displayDate}</small> 
169    <div class="ay-news-release__content"> 
170        <#if SubTitle.getData()?has_content> 
171            <h3 class="ay-news-release__subtitle">${SubTitle.getData()}</h3> 
172        </#if> 
173        ${News_Release_Detail_Content.getData()} 
174        <#if Boiler_Plate_Content.getData()?has_content > 
175            <div class="ay-news-release__boiler"> 
176                ${Boiler_Plate_Content.getData()} 
177            </div> 
178        </#if> 
179        <div class="ay-news-release__social"> 
180            <a id="ay-email-to" href="#" target="_blank" class="ay-news-release__social--item"> 
181                <svg class="ay-news-release__social--icon"> 
182                    <use xlink:href="/o/ay-theme/resources/images/images.svg#email" /> 
183                </svg> 
184            </a> 
185            <a id="ay-social-twitter" href="#" class="ay-news-release__social--item" target="_blank"> 
186                <svg class="ay-news-release__social--icon"> 
187                    <use xlink:href="/o/ay-theme/resources/images/images.svg#twitter1" /> 
188                </svg> 
189            </a> 
190            <a id="ay-social-facebook" href="#" class="ay-news-release__social--item" target="_blank"> 
191                <svg class="ay-news-release__social--icon"> 
192                    <use xlink:href="/o/ay-theme/resources/images/images.svg#facebook" /> 
193                </svg> 
194            </a> 
195            <a id="ay-social-linkedin" href="#" class="ay-news-release__social--item" target="_blank"> 
196                <svg class="ay-news-release__social--icon"> 
197                    <use xlink:href="/o/ay-theme/resources/images/images.svg#linkedin1" /> 
198                </svg> 
199            </a> 
200            <#if treePath?contains("/ay/de/") > 
201                <a id="ay-social-xming" href="#" class="ay-news-release__social--item" target="_blank"> 
202                    <svg class="ay-news-release__social--icon"> 
203                        <use xlink:href="/o/ay-theme/resources/images/images.svg#xing-social" /> 
204                    </svg> 
205                </a> 
206            </#if> 
207        </div> 
208    </div> 
209</div> 
210<#assign newsTitle = Content.getData() /> 
211 
212<script> 
213    function socialLinks(){ 
214        uri=window.location; 
215        uri=uri.toString(); 
216        ofLoc=$(".ay-header-options h3 a").html(); 
217        enc=encodeURIComponent(uri); 
218        prtitle=$("#ay-artTitle").html(); 
219        //prtitle=prtitle.replace(/(\r\n\t|\n|\r\t)/gm,""); 
220        prtitle=encodeURI(prtitle); 
221        mailtoSub="Avison Young - "+ofLoc+" News: "; 
222        mailtoSub=encodeURI(mailtoSub); 
223        //alert(enc); 
224        $("#ay-social-twitter").attr("href","https://twitter.com/intent/tweet?url="+enc+"&amp;text="+prtitle+"&amp;via=AvisonYoung"); 
225        $("#ay-social-facebook").attr("href","https://www.facebook.com/sharer/sharer.php?u="+enc); 
226        $("#ay-social-linkedin").attr("href","https://www.linkedin.com/cws/share?url="+enc); 
227        <#if treePath?contains("/ay/de/") > 
228        $("#ay-social-xming").attr("href","https://www.xing.com/spi/shares/new?url="+enc); 
229        </#if> 
230        $("#ay-email-to").attr("href","mailto:?subject="+mailtoSub+prtitle+"&body="+enc); 
231
232    $(document).ready(function(){ 
233        socialLinks(); 
234    }) 
235</script> 
236 
237<style> 
238    .ay-news-release__content{ 
239        min-height:150px; 
240
241</style>