groovy: Security restricted macro is not allowed on this page. A page edit restriction is required that matches the macro authorization list.  
import com.atlassian.confluence.pages.Page;
def index = request.getSession(true).getServletContext().getAttribute("climb.index")
if (index  == null )
Unknown macro: {  out.println "Creating index..."    index = new Index()
  String pageTitle="Climbing Guides"  //String pageTitle="Hobart Craglets"  Page page = ContainerManager.getComponent("pageManager").getPage(context.spaceKey,pageTitle);
  addChildren(page, index)  request.getSession(true).getServletContext().setAttribute("climb.index", index)}
def totalStars = ["","*","**","***"]def totalGrades = ["10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","VE","V0","V1","V2","V3","V4","V5","V6","V7","V8","V9","V10","V11","V12","V13","V14","V15"]def totalSorts = ["grade,stars,name","name","area"]
def sortBy = "grade,stars,name"def grades = ["17","18" ]def stars = ["***"]def pages = ["Northern Buttress"]def nameStartsWith = ""def nameContains = ""
if (request.getParameter("climb.search") != null ){  stars = toList( request.getParameterValues("climb.stars") )  grades = toList( request.getParameterValues("climb.grades") )  sortBy =  request.getParameter("climb.sortBy")  nameStartsWith =  request.getParameter("climb.nameStartsWith")  nameContains =  request.getParameter("climb.nameContains")  pages = toList( request.getParameterValues("climb.pages") )}
out.println '''h2. Search Criteria{info}  
Use Ctrl & Shift to select multiple values
 Stars 
 Name Starts With 
 Name Contains 
 Grade 
 Area 
 Sort By 
 
 
 
 
 
 
 
 
'''
for (a in totalGrades)
{
  out.println "" + a + " "
}
out.println '''
   
 '''
for (a in index.pages)
{
  out.println "" + a + " "
}
out.println '''
 
  
 
'''
for (a in totalSorts)
  out.println "" + a + " "
out.println '''
 
  
 
 
 \\\\
def filtered = new ArrayList();
if (sortBy!=null && sortBy!="area")
Unknown macro: { return it.name }  
  if (sortBy=='grade,stars,name')
Unknown macro: { return it.grade + it.stars + it.name }  
  filtered.sort sorter
out.println "h2. Results"[" + c.page + "]  |"
def addChildren(Page page, Index index)
  Unknown macro: {    doPage(child, index)  }  
}
def doPage (Page page, Index index)
",index1+1)
    String xml = page.content.substring(index1+7, index2)
    //out.println ("Page:" + page )
    def x = new XmlParser().parseText(xml)
    if (climbs.size() > 0)
    for (climb in climbs)
    Unknown macro: {
      Climb c = new Climb( name}  
  }
}
def List toList
  return ret
class Index
class Climb
  String toString()
  Unknown macro: {    return stars==null?""}  
}