//# 0 errors, 630 messages
//#
/*
    //#UtilitiesModel.java:1:1: class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
 * Licensed to the Apache Software Foundation (ASF) under one or more
 *  contributor license agreements.  The ASF licenses this file to You
 * under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.  For additional information regarding
 * copyright in this work, please see the NOTICE file in the top level
 * directory of this distribution.
 */

package org.apache.roller.weblogger.ui.rendering.model;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import java.util.TimeZone;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.WebloggerException;
import org.apache.roller.weblogger.pojos.WeblogPermission;
import org.apache.roller.weblogger.pojos.wrapper.WeblogWrapper;
import org.apache.roller.weblogger.ui.core.RollerSession;
import org.apache.roller.weblogger.ui.rendering.util.WeblogRequest;
import org.apache.roller.util.DateUtil;
import org.apache.roller.util.RegexUtil;
import org.apache.roller.weblogger.pojos.Weblog;
import org.apache.roller.weblogger.ui.rendering.util.ParsedRequest;
import org.apache.roller.weblogger.util.URLUtilities;
import org.apache.roller.weblogger.util.Utilities;

/**
 * Model which provides access to a set of general utilities.
 */
public class UtilitiesModel implements Model {
    //#UtilitiesModel.java:46: method: void org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel()
    //#input(void org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel()): this
    //#output(void org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel()): this.parsedRequest
    //#output(void org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel()): this.weblog
    //#post(void org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel()): this.parsedRequest == null
    //#post(void org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel()): this.weblog == null
    
    private static Log log = LogFactory.getLog(UtilitiesModel.class); 
    //#UtilitiesModel.java:48: method: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init
    //#UtilitiesModel.java:48: Warning: method not available
    //#    -- call on Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init
    //#    unanalyzed callee: Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): BR_TAG_PATTERN
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): CLOSING_A_TAG_PATTERN
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): CLOSING_BLOCKQUOTE_TAG_PATTERN
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): CLOSING_B_TAG_PATTERN
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): CLOSING_I_TAG_PATTERN
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): CLOSING_LI_TAG_PATTERN
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): CLOSING_OL_TAG_PATTERN
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): CLOSING_PRE_TAG_PATTERN
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): CLOSING_P_TAG_PATTERN
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): CLOSING_UL_TAG_PATTERN
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): OPENING_A_TAG_PATTERN
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): OPENING_BLOCKQUOTE_TAG_PATTERN
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): OPENING_B_TAG_PATTERN
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): OPENING_I_TAG_PATTERN
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): OPENING_LI_TAG_PATTERN
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): OPENING_OL_TAG_PATTERN
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): OPENING_PRE_TAG_PATTERN
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): OPENING_P_TAG_PATTERN
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): OPENING_UL_TAG_PATTERN
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): QUOTE_PATTERN
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Descendant_Table[org/apache/roller/weblogger/ui/rendering/model/UtilitiesModel]
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.addNofollow(Ljava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.autoformat(Ljava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.decode(Ljava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.encode(Ljava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.encodeEmail(Ljava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.equals(Ljava/lang/String;Ljava/lang/String;)Z
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.escapeHTML(Ljava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.escapeJavaScript(Ljava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.escapeXML(Ljava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.format8charsDate(Ljava/util/Date;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.formatDate(Ljava/util/Date;Ljava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.formatDate(Ljava/util/Date;Ljava/lang/String;Ljava/util/TimeZone;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.formatIso8601Date(Ljava/util/Date;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.formatIso8601Day(Ljava/util/Date;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.formatRfc822Date(Ljava/util/Date;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.getModelName()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.hexEncode(Ljava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.init(Ljava/util/Map;)V
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.isAlphanumeric(Ljava/lang/String;)Z
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.isEmpty(Ljava/lang/String;)Z
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.isNotEmpty(Ljava/lang/String;)Z
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.isUserAuthenticated()Z
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.isUserAuthorizedToAdmin(Lorg/apache/roller/weblogger/pojos/wrapper/WeblogWrapper;)Z
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.isUserAuthorizedToAuthor(Lorg/apache/roller/weblogger/pojos/wrapper/WeblogWrapper;)Z
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.left(Ljava/lang/String;I)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.removeHTML(Ljava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.removeHTML(Ljava/lang/String;Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.replace(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.replace(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.replace(Ljava/lang/String;Ljava/util/regex/Pattern;Ljava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.split(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.stripAll([Ljava/lang/String;)[Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.toBase64([B)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.transformToHTMLSubset(Ljava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.truncate(Ljava/lang/String;IILjava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.truncateNicely(Ljava/lang/String;IILjava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.truncateText(Ljava/lang/String;IILjava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.unescapeHTML(Ljava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.unescapeJavaScript(Ljava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.unescapeXML(Ljava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): log
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): mLinkPattern
    //#output(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): org/apache/roller/weblogger/ui/rendering/model/Model.__Descendant_Table[org/apache/roller/weblogger/ui/rendering/model/UtilitiesModel]
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): init'ed(BR_TAG_PATTERN)
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): init'ed(CLOSING_A_TAG_PATTERN)
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): init'ed(CLOSING_BLOCKQUOTE_TAG_PATTERN)
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): init'ed(CLOSING_B_TAG_PATTERN)
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): init'ed(CLOSING_I_TAG_PATTERN)
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): init'ed(CLOSING_LI_TAG_PATTERN)
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): init'ed(CLOSING_OL_TAG_PATTERN)
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): init'ed(CLOSING_PRE_TAG_PATTERN)
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): init'ed(CLOSING_P_TAG_PATTERN)
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): init'ed(CLOSING_UL_TAG_PATTERN)
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): init'ed(OPENING_A_TAG_PATTERN)
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): init'ed(OPENING_BLOCKQUOTE_TAG_PATTERN)
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): init'ed(OPENING_B_TAG_PATTERN)
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): init'ed(OPENING_I_TAG_PATTERN)
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): init'ed(OPENING_LI_TAG_PATTERN)
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): init'ed(OPENING_OL_TAG_PATTERN)
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): init'ed(OPENING_PRE_TAG_PATTERN)
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): init'ed(OPENING_P_TAG_PATTERN)
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): init'ed(OPENING_UL_TAG_PATTERN)
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): init'ed(QUOTE_PATTERN)
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Descendant_Table[org/apache/roller/weblogger/ui/rendering/model/UtilitiesModel] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): org/apache/roller/weblogger/ui/rendering/model/Model.__Descendant_Table[org/apache/roller/weblogger/ui/rendering/model/UtilitiesModel] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.addNofollow(Ljava/lang/String;)Ljava/lang/String; == &addNofollow
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.autoformat(Ljava/lang/String;)Ljava/lang/String; == &autoformat
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.decode(Ljava/lang/String;)Ljava/lang/String; == &decode
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.encode(Ljava/lang/String;)Ljava/lang/String; == &encode
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.encodeEmail(Ljava/lang/String;)Ljava/lang/String; == &encodeEmail
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.equals(Ljava/lang/String;Ljava/lang/String;)Z == &equals
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.escapeHTML(Ljava/lang/String;)Ljava/lang/String; == &escapeHTML
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.escapeJavaScript(Ljava/lang/String;)Ljava/lang/String; == &escapeJavaScript
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.escapeXML(Ljava/lang/String;)Ljava/lang/String; == &escapeXML
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.format8charsDate(Ljava/util/Date;)Ljava/lang/String; == &format8charsDate
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.formatDate(Ljava/util/Date;Ljava/lang/String;)Ljava/lang/String; == &formatDate
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.formatDate(Ljava/util/Date;Ljava/lang/String;Ljava/util/TimeZone;)Ljava/lang/String; == &formatDate
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.formatIso8601Date(Ljava/util/Date;)Ljava/lang/String; == &formatIso8601Date
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.formatIso8601Day(Ljava/util/Date;)Ljava/lang/String; == &formatIso8601Day
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.formatRfc822Date(Ljava/util/Date;)Ljava/lang/String; == &formatRfc822Date
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.getModelName()Ljava/lang/String; == &getModelName
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.hexEncode(Ljava/lang/String;)Ljava/lang/String; == &hexEncode
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.init(Ljava/util/Map;)V == &init
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.isAlphanumeric(Ljava/lang/String;)Z == &isAlphanumeric
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.isEmpty(Ljava/lang/String;)Z == &isEmpty
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.isNotEmpty(Ljava/lang/String;)Z == &isNotEmpty
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.isUserAuthenticated()Z == &isUserAuthenticated
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.isUserAuthorizedToAdmin(Lorg/apache/roller/weblogger/pojos/wrapper/WeblogWrapper;)Z == &isUserAuthorizedToAdmin
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.isUserAuthorizedToAuthor(Lorg/apache/roller/weblogger/pojos/wrapper/WeblogWrapper;)Z == &isUserAuthorizedToAuthor
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.left(Ljava/lang/String;I)Ljava/lang/String; == &left
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.removeHTML(Ljava/lang/String;)Ljava/lang/String; == &removeHTML
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.removeHTML(Ljava/lang/String;Z)Ljava/lang/String; == &removeHTML
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.replace(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; == &replace
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.replace(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String; == &replace
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.replace(Ljava/lang/String;Ljava/util/regex/Pattern;Ljava/lang/String;)Ljava/lang/String; == &replace
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.split(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; == &split
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.stripAll([Ljava/lang/String;)[Ljava/lang/String; == &stripAll
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.toBase64([B)Ljava/lang/String; == &toBase64
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.transformToHTMLSubset(Ljava/lang/String;)Ljava/lang/String; == &transformToHTMLSubset
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.truncate(Ljava/lang/String;IILjava/lang/String;)Ljava/lang/String; == &truncate
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.truncateNicely(Ljava/lang/String;IILjava/lang/String;)Ljava/lang/String; == &truncateNicely
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.truncateText(Ljava/lang/String;IILjava/lang/String;)Ljava/lang/String; == &truncateText
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.unescapeHTML(Ljava/lang/String;)Ljava/lang/String; == &unescapeHTML
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.unescapeJavaScript(Ljava/lang/String;)Ljava/lang/String; == &unescapeJavaScript
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): __Dispatch_Table.unescapeXML(Ljava/lang/String;)Ljava/lang/String; == &unescapeXML
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): init'ed(log)
    //#post(org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init): init'ed(mLinkPattern)
    
    private static Pattern mLinkPattern =
            Pattern.compile("<a href=.*?>", Pattern.CASE_INSENSITIVE);    
    private static final Pattern OPENING_B_TAG_PATTERN = 
            Pattern.compile("&lt;b&gt;", Pattern.CASE_INSENSITIVE);
    private static final Pattern CLOSING_B_TAG_PATTERN = 
            Pattern.compile("&lt;/b&gt;", Pattern.CASE_INSENSITIVE);
    private static final Pattern OPENING_I_TAG_PATTERN = 
            Pattern.compile("&lt;i&gt;", Pattern.CASE_INSENSITIVE);
    private static final Pattern CLOSING_I_TAG_PATTERN = 
            Pattern.compile("&lt;/i&gt;", Pattern.CASE_INSENSITIVE);
    private static final Pattern OPENING_BLOCKQUOTE_TAG_PATTERN = 
            Pattern.compile("&lt;blockquote&gt;", Pattern.CASE_INSENSITIVE);
    private static final Pattern CLOSING_BLOCKQUOTE_TAG_PATTERN = 
            Pattern.compile("&lt;/blockquote&gt;", Pattern.CASE_INSENSITIVE);
    private static final Pattern BR_TAG_PATTERN = 
            Pattern.compile("&lt;br */*&gt;", Pattern.CASE_INSENSITIVE);
    private static final Pattern OPENING_P_TAG_PATTERN = 
            Pattern.compile("&lt;p&gt;", Pattern.CASE_INSENSITIVE);
    private static final Pattern CLOSING_P_TAG_PATTERN = 
            Pattern.compile("&lt;/p&gt;", Pattern.CASE_INSENSITIVE);
    private static final Pattern OPENING_PRE_TAG_PATTERN = 
            Pattern.compile("&lt;pre&gt;", Pattern.CASE_INSENSITIVE);
    private static final Pattern CLOSING_PRE_TAG_PATTERN = 
            Pattern.compile("&lt;/pre&gt;", Pattern.CASE_INSENSITIVE);
    private static final Pattern OPENING_UL_TAG_PATTERN = 
            Pattern.compile("&lt;ul&gt;", Pattern.CASE_INSENSITIVE);
    private static final Pattern CLOSING_UL_TAG_PATTERN = 
            Pattern.compile("&lt;/ul&gt;", Pattern.CASE_INSENSITIVE);
    private static final Pattern OPENING_OL_TAG_PATTERN = 
            Pattern.compile("&lt;ol&gt;", Pattern.CASE_INSENSITIVE);
    private static final Pattern CLOSING_OL_TAG_PATTERN = 
            Pattern.compile("&lt;/ol&gt;", Pattern.CASE_INSENSITIVE);
    private static final Pattern OPENING_LI_TAG_PATTERN = 
            Pattern.compile("&lt;li&gt;", Pattern.CASE_INSENSITIVE);
    private static final Pattern CLOSING_LI_TAG_PATTERN = 
            Pattern.compile("&lt;/li&gt;", Pattern.CASE_INSENSITIVE);
    private static final Pattern CLOSING_A_TAG_PATTERN = 
            Pattern.compile("&lt;/a&gt;", Pattern.CASE_INSENSITIVE);
    private static final Pattern OPENING_A_TAG_PATTERN = 
            Pattern.compile("&lt;a href=.*?&gt;", Pattern.CASE_INSENSITIVE);
    private static final Pattern QUOTE_PATTERN = 
    //#UtilitiesModel.java:90: end of method: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel__static_init
            Pattern.compile("&quot;", Pattern.CASE_INSENSITIVE);
    
    private ParsedRequest parsedRequest = null;
    private Weblog weblog = null;
    //#UtilitiesModel.java:94: end of method: void org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel()
    
    
    /** Template context name to be used for model */
    public String getModelName() {
        return "utils";
    //#UtilitiesModel.java:99: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.getModelName()
    //#output(String getModelName()): return_value
    //#post(String getModelName()): return_value == &"utils"
    //#UtilitiesModel.java:99: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.getModelName()
    }
    
    
    /** Init page model based on request */
    public void init(Map initData) throws WebloggerException {      
        
        // we expect the init data to contain a parsedRequest object
        parsedRequest = (ParsedRequest) initData.get("parsedRequest");
    //#UtilitiesModel.java:107: method: void org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.init(Map)
    //#input(void init(Map)): initData
    //#input(void init(Map)): this
    //#output(void init(Map)): this.parsedRequest
    //#output(void init(Map)): this.weblog
    //#pre[1] (void init(Map)): initData != null
    //#presumption(void init(Map)): java.util.Map:get(...)@107 != null
    //#post(void init(Map)): (soft) this.parsedRequest != null
    //#post(void init(Map)): possibly_updated(this.weblog)
    //#test_vector(void init(Map)): org.apache.roller.weblogger.ui.rendering.util.WeblogRequest:instanceof(...)@113: {0}, {1}
        if(parsedRequest == null) {
            throw new WebloggerException("expected parsedRequest from init data");
        }
        
        // extract weblog object if possible
        if(parsedRequest instanceof WeblogRequest) {
            WeblogRequest weblogRequest = (WeblogRequest) parsedRequest;
            weblog = weblogRequest.getWeblog();
    //#UtilitiesModel.java:115: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.ui.rendering.util.WeblogRequest:getWeblog()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: void init(Map)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.ui.rendering.util.WeblogRequest:getWeblog()
        }
    }
    //#UtilitiesModel.java:117: end of method: void org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.init(Map)
     
    
    //---------------------------------------------------- Authentication utils 
    
    public boolean isUserAuthorizedToAuthor(WeblogWrapper weblog) {
        try {
            if (parsedRequest.getAuthenticUser() != null) {
    //#UtilitiesModel.java:124: method: bool org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.isUserAuthorizedToAuthor(WeblogWrapper)
    //#UtilitiesModel.java:124: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.ui.rendering.util.ParsedRequest:getAuthenticUser()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: bool isUserAuthorizedToAuthor(WeblogWrapper)
    //#    unanalyzed callee: String org.apache.roller.weblogger.ui.rendering.util.ParsedRequest:getAuthenticUser()
    //#input(bool isUserAuthorizedToAuthor(WeblogWrapper)): log
    //#input(bool isUserAuthorizedToAuthor(WeblogWrapper)): org.apache.roller.weblogger.pojos.WeblogPermission.AUTHOR
    //#input(bool isUserAuthorizedToAuthor(WeblogWrapper)): org/apache/roller/weblogger/pojos/wrapper/WeblogWrapper.__Descendant_Table[org/apache/roller/weblogger/pojos/wrapper/WeblogWrapper]
    //#input(bool isUserAuthorizedToAuthor(WeblogWrapper)): org/apache/roller/weblogger/pojos/wrapper/WeblogWrapper.__Descendant_Table[others]
    //#input(bool isUserAuthorizedToAuthor(WeblogWrapper)): org/apache/roller/weblogger/pojos/wrapper/WeblogWrapper.__Dispatch_Table.getPojo()Lorg/apache/roller/weblogger/pojos/Weblog;
    //#input(bool isUserAuthorizedToAuthor(WeblogWrapper)): this
    //#input(bool isUserAuthorizedToAuthor(WeblogWrapper)): this.parsedRequest
    //#input(bool isUserAuthorizedToAuthor(WeblogWrapper)): weblog
    //#input(bool isUserAuthorizedToAuthor(WeblogWrapper)): weblog.__Tag
    //#input(bool isUserAuthorizedToAuthor(WeblogWrapper)): weblog.pojo
    //#output(bool isUserAuthorizedToAuthor(WeblogWrapper)): return_value
    //#pre[1] (bool isUserAuthorizedToAuthor(WeblogWrapper)): (soft) log != null
    //#pre[3] (bool isUserAuthorizedToAuthor(WeblogWrapper)): (soft) this.parsedRequest != null
    //#pre[4] (bool isUserAuthorizedToAuthor(WeblogWrapper)): (soft) weblog != null
    //#pre[5] (bool isUserAuthorizedToAuthor(WeblogWrapper)): (soft) weblog.__Tag == org/apache/roller/weblogger/pojos/wrapper/WeblogWrapper
    //#pre[6] (bool isUserAuthorizedToAuthor(WeblogWrapper)): (soft) weblog.pojo != null
    //#presumption(bool isUserAuthorizedToAuthor(WeblogWrapper)): init'ed(org.apache.roller.weblogger.pojos.WeblogPermission.AUTHOR)
    //#post(bool isUserAuthorizedToAuthor(WeblogWrapper)): init'ed(return_value)
                return weblog.getPojo().hasUserPermissions(
    //#UtilitiesModel.java:125: Warning: method not available
    //#    -- call on User org.apache.roller.weblogger.ui.rendering.util.ParsedRequest:getUser()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: bool isUserAuthorizedToAuthor(WeblogWrapper)
    //#    unanalyzed callee: User org.apache.roller.weblogger.ui.rendering.util.ParsedRequest:getUser()
    //#UtilitiesModel.java:125: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.pojos.Weblog:hasUserPermissions(User, short)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: bool isUserAuthorizedToAuthor(WeblogWrapper)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.pojos.Weblog:hasUserPermissions(User, short)
                        parsedRequest.getUser(), WeblogPermission.AUTHOR);
            }
        } catch (Exception e) {
            log.warn("ERROR: checking user authorization", e);
    //#UtilitiesModel.java:129: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:warn(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: bool isUserAuthorizedToAuthor(WeblogWrapper)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:warn(Object, Throwable)
        }
        return false;
    //#UtilitiesModel.java:131: end of method: bool org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.isUserAuthorizedToAuthor(WeblogWrapper)
    }
    
    public boolean isUserAuthorizedToAdmin(WeblogWrapper weblog) {
        try {
            if (parsedRequest.getAuthenticUser() != null) {
    //#UtilitiesModel.java:136: method: bool org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.isUserAuthorizedToAdmin(WeblogWrapper)
    //#UtilitiesModel.java:136: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.ui.rendering.util.ParsedRequest:getAuthenticUser()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: bool isUserAuthorizedToAdmin(WeblogWrapper)
    //#    unanalyzed callee: String org.apache.roller.weblogger.ui.rendering.util.ParsedRequest:getAuthenticUser()
    //#input(bool isUserAuthorizedToAdmin(WeblogWrapper)): log
    //#input(bool isUserAuthorizedToAdmin(WeblogWrapper)): org.apache.roller.weblogger.pojos.WeblogPermission.ADMIN
    //#input(bool isUserAuthorizedToAdmin(WeblogWrapper)): org/apache/roller/weblogger/pojos/wrapper/WeblogWrapper.__Descendant_Table[org/apache/roller/weblogger/pojos/wrapper/WeblogWrapper]
    //#input(bool isUserAuthorizedToAdmin(WeblogWrapper)): org/apache/roller/weblogger/pojos/wrapper/WeblogWrapper.__Descendant_Table[others]
    //#input(bool isUserAuthorizedToAdmin(WeblogWrapper)): org/apache/roller/weblogger/pojos/wrapper/WeblogWrapper.__Dispatch_Table.getPojo()Lorg/apache/roller/weblogger/pojos/Weblog;
    //#input(bool isUserAuthorizedToAdmin(WeblogWrapper)): this
    //#input(bool isUserAuthorizedToAdmin(WeblogWrapper)): this.parsedRequest
    //#input(bool isUserAuthorizedToAdmin(WeblogWrapper)): weblog
    //#input(bool isUserAuthorizedToAdmin(WeblogWrapper)): weblog.__Tag
    //#input(bool isUserAuthorizedToAdmin(WeblogWrapper)): weblog.pojo
    //#output(bool isUserAuthorizedToAdmin(WeblogWrapper)): return_value
    //#pre[1] (bool isUserAuthorizedToAdmin(WeblogWrapper)): (soft) log != null
    //#pre[3] (bool isUserAuthorizedToAdmin(WeblogWrapper)): (soft) this.parsedRequest != null
    //#pre[4] (bool isUserAuthorizedToAdmin(WeblogWrapper)): (soft) weblog != null
    //#pre[5] (bool isUserAuthorizedToAdmin(WeblogWrapper)): (soft) weblog.__Tag == org/apache/roller/weblogger/pojos/wrapper/WeblogWrapper
    //#pre[6] (bool isUserAuthorizedToAdmin(WeblogWrapper)): (soft) weblog.pojo != null
    //#presumption(bool isUserAuthorizedToAdmin(WeblogWrapper)): init'ed(org.apache.roller.weblogger.pojos.WeblogPermission.ADMIN)
    //#post(bool isUserAuthorizedToAdmin(WeblogWrapper)): init'ed(return_value)
                return weblog.getPojo().hasUserPermissions(
    //#UtilitiesModel.java:137: Warning: method not available
    //#    -- call on User org.apache.roller.weblogger.ui.rendering.util.ParsedRequest:getUser()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: bool isUserAuthorizedToAdmin(WeblogWrapper)
    //#    unanalyzed callee: User org.apache.roller.weblogger.ui.rendering.util.ParsedRequest:getUser()
    //#UtilitiesModel.java:137: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.pojos.Weblog:hasUserPermissions(User, short)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: bool isUserAuthorizedToAdmin(WeblogWrapper)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.pojos.Weblog:hasUserPermissions(User, short)
                        parsedRequest.getUser(), WeblogPermission.ADMIN);
            }
        } catch (Exception e) {
            log.warn("ERROR: checking user authorization", e);
    //#UtilitiesModel.java:141: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:warn(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: bool isUserAuthorizedToAdmin(WeblogWrapper)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:warn(Object, Throwable)
        }
        return false;
    //#UtilitiesModel.java:143: end of method: bool org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.isUserAuthorizedToAdmin(WeblogWrapper)
    }
    
    public boolean isUserAuthenticated() {
        return (parsedRequest.getAuthenticUser() != null);
    //#UtilitiesModel.java:147: method: bool org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.isUserAuthenticated()
    //#UtilitiesModel.java:147: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.ui.rendering.util.ParsedRequest:getAuthenticUser()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: bool isUserAuthenticated()
    //#    unanalyzed callee: String org.apache.roller.weblogger.ui.rendering.util.ParsedRequest:getAuthenticUser()
    //#input(bool isUserAuthenticated()): this
    //#input(bool isUserAuthenticated()): this.parsedRequest
    //#output(bool isUserAuthenticated()): return_value
    //#pre[2] (bool isUserAuthenticated()): this.parsedRequest != null
    //#post(bool isUserAuthenticated()): init'ed(return_value)
    //#UtilitiesModel.java:147: end of method: bool org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.isUserAuthenticated()
    }
        
    //-------------------------------------------------------------- Date utils
    /**
     * Return date for current time.
     */
    public static Date getNow() {
        return new Date();
    //#UtilitiesModel.java:155: method: Date org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.getNow()
    //#output(Date getNow()): new Date(getNow#1) num objects
    //#output(Date getNow()): return_value
    //#new obj(Date getNow()): new Date(getNow#1)
    //#post(Date getNow()): return_value == &new Date(getNow#1)
    //#post(Date getNow()): new Date(getNow#1) num objects == 1
    //#UtilitiesModel.java:155: end of method: Date org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.getNow()
    }
    
    /**
     * Format date using SimpleDateFormat format string.
     */
    public String formatDate(Date d, String fmt) {
        return formatDate(d, fmt, weblog.getTimeZoneInstance());
    //#UtilitiesModel.java:162: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.formatDate(Date, String)
    //#UtilitiesModel.java:162: Warning: method not available
    //#    -- call on TimeZone org.apache.roller.weblogger.pojos.Weblog:getTimeZoneInstance()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: String formatDate(Date, String)
    //#    unanalyzed callee: TimeZone org.apache.roller.weblogger.pojos.Weblog:getTimeZoneInstance()
    //#input(String formatDate(Date, String)): __Descendant_Table[org/apache/roller/weblogger/ui/rendering/model/UtilitiesModel]
    //#input(String formatDate(Date, String)): __Descendant_Table[others]
    //#input(String formatDate(Date, String)): __Dispatch_Table.formatDate(Ljava/util/Date;Ljava/lang/String;Ljava/util/TimeZone;)Ljava/lang/String;
    //#input(String formatDate(Date, String)): d
    //#input(String formatDate(Date, String)): fmt
    //#input(String formatDate(Date, String)): this
    //#input(String formatDate(Date, String)): this.__Tag
    //#input(String formatDate(Date, String)): this.weblog
    //#output(String formatDate(Date, String)): return_value
    //#pre[4] (String formatDate(Date, String)): this.__Tag == org/apache/roller/weblogger/ui/rendering/model/UtilitiesModel
    //#pre[5] (String formatDate(Date, String)): this.weblog != null
    //#post(String formatDate(Date, String)): init'ed(return_value)
    //#unanalyzed(String formatDate(Date, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getLocaleInstance
    //#unanalyzed(String formatDate(Date, String)): Effects-of-calling:java.text.SimpleDateFormat
    //#unanalyzed(String formatDate(Date, String)): Effects-of-calling:java.text.SimpleDateFormat:setTimeZone
    //#unanalyzed(String formatDate(Date, String)): Effects-of-calling:java.text.SimpleDateFormat:format
    //#UtilitiesModel.java:162: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.formatDate(Date, String)
    }
    
    /**
     * Format date using SimpleDateFormat format string.
     */
    public String formatDate(Date d, String fmt, TimeZone tzOverride) {
        
        if(d == null || fmt == null)
    //#UtilitiesModel.java:170: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.formatDate(Date, String, TimeZone)
    //#input(String formatDate(Date, String, TimeZone)): d
    //#input(String formatDate(Date, String, TimeZone)): fmt
    //#input(String formatDate(Date, String, TimeZone)): this
    //#input(String formatDate(Date, String, TimeZone)): this.weblog
    //#input(String formatDate(Date, String, TimeZone)): tzOverride
    //#output(String formatDate(Date, String, TimeZone)): return_value
    //#pre[10] (String formatDate(Date, String, TimeZone)): (soft) this.weblog != null
    //#post(String formatDate(Date, String, TimeZone)): init'ed(return_value)
    //#test_vector(String formatDate(Date, String, TimeZone)): d: Addr_Set{null}, Inverse{null}
    //#test_vector(String formatDate(Date, String, TimeZone)): fmt: Inverse{null}, Addr_Set{null}
    //#test_vector(String formatDate(Date, String, TimeZone)): tzOverride: Addr_Set{null}, Inverse{null}
            return fmt;
        
        SimpleDateFormat format = new SimpleDateFormat(fmt, weblog.getLocaleInstance());
    //#UtilitiesModel.java:173: Warning: method not available
    //#    -- call on Locale org.apache.roller.weblogger.pojos.Weblog:getLocaleInstance()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: String formatDate(Date, String, TimeZone)
    //#    unanalyzed callee: Locale org.apache.roller.weblogger.pojos.Weblog:getLocaleInstance()
        if(tzOverride != null) {
            format.setTimeZone(tzOverride);
        }
        
        return format.format(d);
    //#UtilitiesModel.java:178: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.formatDate(Date, String, TimeZone)
    }
    
    /**
     * Format date in ISO-8601 format.
     */
    public String formatIso8601Date(Date d) {
        return DateUtil.formatIso8601(d);
    //#UtilitiesModel.java:185: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.formatIso8601Date(Date)
    //#UtilitiesModel.java:185: Warning: method not available
    //#    -- call on String org.apache.roller.util.DateUtil:formatIso8601(Date)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: String formatIso8601Date(Date)
    //#    unanalyzed callee: String org.apache.roller.util.DateUtil:formatIso8601(Date)
    //#input(String formatIso8601Date(Date)): d
    //#output(String formatIso8601Date(Date)): return_value
    //#post(String formatIso8601Date(Date)): init'ed(return_value)
    //#UtilitiesModel.java:185: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.formatIso8601Date(Date)
    }
    
    /**
     * Format date in ISO-8601 format.
     */
    public String formatIso8601Day(Date d) {
        return DateUtil.formatIso8601Day(d);
    //#UtilitiesModel.java:192: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.formatIso8601Day(Date)
    //#UtilitiesModel.java:192: Warning: method not available
    //#    -- call on String org.apache.roller.util.DateUtil:formatIso8601Day(Date)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: String formatIso8601Day(Date)
    //#    unanalyzed callee: String org.apache.roller.util.DateUtil:formatIso8601Day(Date)
    //#input(String formatIso8601Day(Date)): d
    //#output(String formatIso8601Day(Date)): return_value
    //#post(String formatIso8601Day(Date)): init'ed(return_value)
    //#UtilitiesModel.java:192: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.formatIso8601Day(Date)
    }
    
    /**
     * Return a date in RFC-822 format.
     */
    public String formatRfc822Date(Date date) {
        return DateUtil.formatRfc822(date);
    //#UtilitiesModel.java:199: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.formatRfc822Date(Date)
    //#UtilitiesModel.java:199: Warning: method not available
    //#    -- call on String org.apache.roller.util.DateUtil:formatRfc822(Date)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: String formatRfc822Date(Date)
    //#    unanalyzed callee: String org.apache.roller.util.DateUtil:formatRfc822(Date)
    //#input(String formatRfc822Date(Date)): date
    //#output(String formatRfc822Date(Date)): return_value
    //#post(String formatRfc822Date(Date)): init'ed(return_value)
    //#UtilitiesModel.java:199: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.formatRfc822Date(Date)
    }
    
    /**
     * Return a date in 8 character format YYYYMMDD.
     */
    public String format8charsDate(Date date) {
        return DateUtil.format8chars(date);
    //#UtilitiesModel.java:206: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.format8charsDate(Date)
    //#UtilitiesModel.java:206: Warning: method not available
    //#    -- call on String org.apache.roller.util.DateUtil:format8chars(Date)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: String format8charsDate(Date)
    //#    unanalyzed callee: String org.apache.roller.util.DateUtil:format8chars(Date)
    //#input(String format8charsDate(Date)): date
    //#output(String format8charsDate(Date)): return_value
    //#post(String format8charsDate(Date)): init'ed(return_value)
    //#UtilitiesModel.java:206: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.format8charsDate(Date)
    }

    
    //------------------------------------------------------------ String utils
    
    public boolean isEmpty(String str) {
        return StringUtils.isEmpty(str);
    //#UtilitiesModel.java:213: method: bool org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.isEmpty(String)
    //#UtilitiesModel.java:213: Warning: method not available
    //#    -- call on bool org.apache.commons.lang.StringUtils:isEmpty(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: bool isEmpty(String)
    //#    unanalyzed callee: bool org.apache.commons.lang.StringUtils:isEmpty(String)
    //#input(bool isEmpty(String)): str
    //#output(bool isEmpty(String)): return_value
    //#post(bool isEmpty(String)): init'ed(return_value)
    //#UtilitiesModel.java:213: end of method: bool org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.isEmpty(String)
    }
    
    public boolean isNotEmpty(String str) {
        return StringUtils.isNotEmpty(str);
    //#UtilitiesModel.java:217: method: bool org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.isNotEmpty(String)
    //#UtilitiesModel.java:217: Warning: method not available
    //#    -- call on bool org.apache.commons.lang.StringUtils:isNotEmpty(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: bool isNotEmpty(String)
    //#    unanalyzed callee: bool org.apache.commons.lang.StringUtils:isNotEmpty(String)
    //#input(bool isNotEmpty(String)): str
    //#output(bool isNotEmpty(String)): return_value
    //#post(bool isNotEmpty(String)): init'ed(return_value)
    //#UtilitiesModel.java:217: end of method: bool org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.isNotEmpty(String)
    }
    
    public String[] split(String str1, String str2) {
        return StringUtils.split(str1, str2);
    //#UtilitiesModel.java:221: method: String[] org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.split(String, String)
    //#UtilitiesModel.java:221: Warning: method not available
    //#    -- call on String[] org.apache.commons.lang.StringUtils:split(String, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: String[] split(String, String)
    //#    unanalyzed callee: String[] org.apache.commons.lang.StringUtils:split(String, String)
    //#input(String[] split(String, String)): str1
    //#input(String[] split(String, String)): str2
    //#output(String[] split(String, String)): return_value
    //#post(String[] split(String, String)): init'ed(return_value)
    //#UtilitiesModel.java:221: end of method: String[] org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.split(String, String)
    }
    
    public boolean equals(String str1, String str2) {
        return StringUtils.equals(str1, str2);
    //#UtilitiesModel.java:225: method: bool org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.equals(String, String)
    //#UtilitiesModel.java:225: Warning: method not available
    //#    -- call on bool org.apache.commons.lang.StringUtils:equals(String, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: bool equals(String, String)
    //#    unanalyzed callee: bool org.apache.commons.lang.StringUtils:equals(String, String)
    //#input(bool equals(String, String)): str1
    //#input(bool equals(String, String)): str2
    //#output(bool equals(String, String)): return_value
    //#post(bool equals(String, String)): init'ed(return_value)
    //#UtilitiesModel.java:225: end of method: bool org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.equals(String, String)
    }
    
    public boolean isAlphanumeric(String str) {
        return StringUtils.isAlphanumeric(str);
    //#UtilitiesModel.java:229: method: bool org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.isAlphanumeric(String)
    //#UtilitiesModel.java:229: Warning: method not available
    //#    -- call on bool org.apache.commons.lang.StringUtils:isAlphanumeric(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: bool isAlphanumeric(String)
    //#    unanalyzed callee: bool org.apache.commons.lang.StringUtils:isAlphanumeric(String)
    //#input(bool isAlphanumeric(String)): str
    //#output(bool isAlphanumeric(String)): return_value
    //#post(bool isAlphanumeric(String)): init'ed(return_value)
    //#UtilitiesModel.java:229: end of method: bool org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.isAlphanumeric(String)
    }
    
    public String[] stripAll(String[] strs) {
        return StringUtils.stripAll(strs);
    //#UtilitiesModel.java:233: method: String[] org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.stripAll(String[])
    //#UtilitiesModel.java:233: Warning: method not available
    //#    -- call on String[] org.apache.commons.lang.StringUtils:stripAll(String[])
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: String[] stripAll(String[])
    //#    unanalyzed callee: String[] org.apache.commons.lang.StringUtils:stripAll(String[])
    //#input(String[] stripAll(String[])): strs
    //#output(String[] stripAll(String[])): return_value
    //#post(String[] stripAll(String[])): init'ed(return_value)
    //#UtilitiesModel.java:233: end of method: String[] org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.stripAll(String[])
    }
    
    public String left(String str, int length) {
        return StringUtils.left(str, length);
    //#UtilitiesModel.java:237: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.left(String, int)
    //#UtilitiesModel.java:237: Warning: method not available
    //#    -- call on String org.apache.commons.lang.StringUtils:left(String, int)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: String left(String, int)
    //#    unanalyzed callee: String org.apache.commons.lang.StringUtils:left(String, int)
    //#input(String left(String, int)): length
    //#input(String left(String, int)): str
    //#output(String left(String, int)): return_value
    //#post(String left(String, int)): init'ed(return_value)
    //#UtilitiesModel.java:237: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.left(String, int)
    }
    
    public String escapeHTML(String str) {
        return StringEscapeUtils.escapeHtml(str);
    //#UtilitiesModel.java:241: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.escapeHTML(String)
    //#UtilitiesModel.java:241: Warning: method not available
    //#    -- call on String org.apache.commons.lang.StringEscapeUtils:escapeHtml(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: String escapeHTML(String)
    //#    unanalyzed callee: String org.apache.commons.lang.StringEscapeUtils:escapeHtml(String)
    //#input(String escapeHTML(String)): str
    //#output(String escapeHTML(String)): return_value
    //#post(String escapeHTML(String)): init'ed(return_value)
    //#UtilitiesModel.java:241: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.escapeHTML(String)
    }
    
    public String unescapeHTML(String str) {
        return StringEscapeUtils.unescapeHtml(str);
    //#UtilitiesModel.java:245: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.unescapeHTML(String)
    //#UtilitiesModel.java:245: Warning: method not available
    //#    -- call on String org.apache.commons.lang.StringEscapeUtils:unescapeHtml(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: String unescapeHTML(String)
    //#    unanalyzed callee: String org.apache.commons.lang.StringEscapeUtils:unescapeHtml(String)
    //#input(String unescapeHTML(String)): str
    //#output(String unescapeHTML(String)): return_value
    //#post(String unescapeHTML(String)): init'ed(return_value)
    //#UtilitiesModel.java:245: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.unescapeHTML(String)
    }
    
    public String escapeXML(String str) {
        return StringEscapeUtils.escapeXml(str);
    //#UtilitiesModel.java:249: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.escapeXML(String)
    //#UtilitiesModel.java:249: Warning: method not available
    //#    -- call on String org.apache.commons.lang.StringEscapeUtils:escapeXml(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: String escapeXML(String)
    //#    unanalyzed callee: String org.apache.commons.lang.StringEscapeUtils:escapeXml(String)
    //#input(String escapeXML(String)): str
    //#output(String escapeXML(String)): return_value
    //#post(String escapeXML(String)): init'ed(return_value)
    //#UtilitiesModel.java:249: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.escapeXML(String)
    }
    
    public String unescapeXML(String str) {
        return StringEscapeUtils.unescapeXml(str);
    //#UtilitiesModel.java:253: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.unescapeXML(String)
    //#UtilitiesModel.java:253: Warning: method not available
    //#    -- call on String org.apache.commons.lang.StringEscapeUtils:unescapeXml(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: String unescapeXML(String)
    //#    unanalyzed callee: String org.apache.commons.lang.StringEscapeUtils:unescapeXml(String)
    //#input(String unescapeXML(String)): str
    //#output(String unescapeXML(String)): return_value
    //#post(String unescapeXML(String)): init'ed(return_value)
    //#UtilitiesModel.java:253: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.unescapeXML(String)
    }
    
    public String escapeJavaScript(String str) {
        return StringEscapeUtils.escapeJavaScript(str);
    //#UtilitiesModel.java:257: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.escapeJavaScript(String)
    //#UtilitiesModel.java:257: Warning: method not available
    //#    -- call on String org.apache.commons.lang.StringEscapeUtils:escapeJavaScript(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: String escapeJavaScript(String)
    //#    unanalyzed callee: String org.apache.commons.lang.StringEscapeUtils:escapeJavaScript(String)
    //#input(String escapeJavaScript(String)): str
    //#output(String escapeJavaScript(String)): return_value
    //#post(String escapeJavaScript(String)): init'ed(return_value)
    //#UtilitiesModel.java:257: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.escapeJavaScript(String)
    }
    
    public String unescapeJavaScript(String str) {
        return StringEscapeUtils.unescapeJavaScript(str);
    //#UtilitiesModel.java:261: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.unescapeJavaScript(String)
    //#UtilitiesModel.java:261: Warning: method not available
    //#    -- call on String org.apache.commons.lang.StringEscapeUtils:unescapeJavaScript(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: String unescapeJavaScript(String)
    //#    unanalyzed callee: String org.apache.commons.lang.StringEscapeUtils:unescapeJavaScript(String)
    //#input(String unescapeJavaScript(String)): str
    //#output(String unescapeJavaScript(String)): return_value
    //#post(String unescapeJavaScript(String)): init'ed(return_value)
    //#UtilitiesModel.java:261: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.unescapeJavaScript(String)
    }
    
    public String replace(String src, String target, String rWith) {
        return StringUtils.replace(src, target, rWith);
    //#UtilitiesModel.java:265: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.replace(String, String, String)
    //#UtilitiesModel.java:265: Warning: method not available
    //#    -- call on String org.apache.commons.lang.StringUtils:replace(String, String, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: String replace(String, String, String)
    //#    unanalyzed callee: String org.apache.commons.lang.StringUtils:replace(String, String, String)
    //#input(String replace(String, String, String)): rWith
    //#input(String replace(String, String, String)): src
    //#input(String replace(String, String, String)): target
    //#output(String replace(String, String, String)): return_value
    //#post(String replace(String, String, String)): init'ed(return_value)
    //#UtilitiesModel.java:265: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.replace(String, String, String)
    }
    
    public String replace(String src, String target, String rWith, int maxCount) {
        return StringUtils.replace(src, target, rWith, maxCount);
    //#UtilitiesModel.java:269: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.replace(String, String, String, int)
    //#UtilitiesModel.java:269: Warning: method not available
    //#    -- call on String org.apache.commons.lang.StringUtils:replace(String, String, String, int)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: String replace(String, String, String, int)
    //#    unanalyzed callee: String org.apache.commons.lang.StringUtils:replace(String, String, String, int)
    //#input(String replace(String, String, String, int)): maxCount
    //#input(String replace(String, String, String, int)): rWith
    //#input(String replace(String, String, String, int)): src
    //#input(String replace(String, String, String, int)): target
    //#output(String replace(String, String, String, int)): return_value
    //#post(String replace(String, String, String, int)): init'ed(return_value)
    //#UtilitiesModel.java:269: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.replace(String, String, String, int)
    }
    
    private String replace(String string, Pattern pattern, String replacement) {
        Matcher m = pattern.matcher(string);
    //#UtilitiesModel.java:273: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.replace(String, Pattern, String)
    //#input(String replace(String, Pattern, String)): pattern
    //#input(String replace(String, Pattern, String)): replacement
    //#input(String replace(String, Pattern, String)): string
    //#output(String replace(String, Pattern, String)): return_value
    //#pre[1] (String replace(String, Pattern, String)): pattern != null
    //#presumption(String replace(String, Pattern, String)): java.util.regex.Pattern:matcher(...)@273 != null
    //#post(String replace(String, Pattern, String)): init'ed(return_value)
        return m.replaceAll(replacement);
    //#UtilitiesModel.java:274: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.replace(String, Pattern, String)
    }
    
    /**
     * Remove occurences of html, defined as any text
     * between the characters "&lt;" and "&gt;".  Replace
     * any HTML tags with a space.
     */
    public String removeHTML(String str) {
        return removeHTML(str, true);
    //#UtilitiesModel.java:283: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.removeHTML(String)
    //#input(String removeHTML(String)): " "._tainted
    //#input(String removeHTML(String)): __Descendant_Table[org/apache/roller/weblogger/ui/rendering/model/UtilitiesModel]
    //#input(String removeHTML(String)): __Descendant_Table[others]
    //#input(String removeHTML(String)): __Dispatch_Table.removeHTML(Ljava/lang/String;Z)Ljava/lang/String;
    //#input(String removeHTML(String)): str
    //#input(String removeHTML(String)): str._tainted
    //#input(String removeHTML(String)): this
    //#input(String removeHTML(String)): this.__Tag
    //#output(String removeHTML(String)): return_value
    //#pre[4] (String removeHTML(String)): this.__Tag == org/apache/roller/weblogger/ui/rendering/model/UtilitiesModel
    //#post(String removeHTML(String)): return_value != null
    //#unanalyzed(String removeHTML(String)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(String removeHTML(String)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(String removeHTML(String)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(String removeHTML(String)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(String removeHTML(String)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(String removeHTML(String)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(String removeHTML(String)): Effects-of-calling:java.lang.String:trim
    //#UtilitiesModel.java:283: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.removeHTML(String)
    }
    
    /**
     * Remove occurences of html, defined as any text
     * between the characters "&lt;" and "&gt;".
     * Optionally replace HTML tags with a space.
     */
    public String removeHTML(String str, boolean addSpace) {
        return Utilities.removeHTML(str, addSpace);
    //#UtilitiesModel.java:292: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.removeHTML(String, bool)
    //#input(String removeHTML(String, bool)): " "._tainted
    //#input(String removeHTML(String, bool)): addSpace
    //#input(String removeHTML(String, bool)): str
    //#input(String removeHTML(String, bool)): str._tainted
    //#output(String removeHTML(String, bool)): return_value
    //#post(String removeHTML(String, bool)): return_value != null
    //#unanalyzed(String removeHTML(String, bool)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(String removeHTML(String, bool)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(String removeHTML(String, bool)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(String removeHTML(String, bool)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(String removeHTML(String, bool)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(String removeHTML(String, bool)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(String removeHTML(String, bool)): Effects-of-calling:java.lang.String:trim
    //#UtilitiesModel.java:292: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.removeHTML(String, bool)
    }
        
    /**
     * Autoformat.
     */
    public String autoformat(String s) {
        return Utilities.autoformat(s);
    //#UtilitiesModel.java:299: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.autoformat(String)
    //#input(String autoformat(String)): s
    //#output(String autoformat(String)): return_value
    //#post(String autoformat(String)): init'ed(return_value)
    //#unanalyzed(String autoformat(String)): Effects-of-calling:org.apache.commons.lang.StringUtils:replace
    //#UtilitiesModel.java:299: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.autoformat(String)
    }
    
    /**
     * Strips HTML and truncates.
     */
    public String truncate(String str, int lower, int upper, String appendToEnd) {
        // this method is a dupe of truncateText() method
        return truncateText(str, lower, upper, appendToEnd);
    //#UtilitiesModel.java:307: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.truncate(String, int, int, String)
    //#input(String truncate(String, int, int, String)): " "._tainted
    //#input(String truncate(String, int, int, String)): ""._tainted
    //#input(String truncate(String, int, int, String)): __Descendant_Table[org/apache/roller/weblogger/ui/rendering/model/UtilitiesModel]
    //#input(String truncate(String, int, int, String)): __Descendant_Table[others]
    //#input(String truncate(String, int, int, String)): __Dispatch_Table.truncateText(Ljava/lang/String;IILjava/lang/String;)Ljava/lang/String;
    //#input(String truncate(String, int, int, String)): appendToEnd
    //#input(String truncate(String, int, int, String)): appendToEnd._tainted
    //#input(String truncate(String, int, int, String)): lower
    //#input(String truncate(String, int, int, String)): str
    //#input(String truncate(String, int, int, String)): str._tainted
    //#input(String truncate(String, int, int, String)): this
    //#input(String truncate(String, int, int, String)): this.__Tag
    //#input(String truncate(String, int, int, String)): upper
    //#output(String truncate(String, int, int, String)): java.lang.StringBuilder:toString(...)._tainted
    //#output(String truncate(String, int, int, String)): return_value
    //#new obj(String truncate(String, int, int, String)): java.lang.StringBuilder:toString(...)
    //#pre[4] (String truncate(String, int, int, String)): str != null
    //#pre[7] (String truncate(String, int, int, String)): this.__Tag == org/apache/roller/weblogger/ui/rendering/model/UtilitiesModel
    //#post(String truncate(String, int, int, String)): init'ed(java.lang.StringBuilder:toString(...)._tainted)
    //#post(String truncate(String, int, int, String)): return_value == One-of{str, &java.lang.StringBuilder:toString(...)}
    //#post(String truncate(String, int, int, String)): return_value != null
    //#unanalyzed(String truncate(String, int, int, String)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(String truncate(String, int, int, String)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(String truncate(String, int, int, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String truncate(String, int, int, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String truncate(String, int, int, String)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(String truncate(String, int, int, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String truncate(String, int, int, String)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(String truncate(String, int, int, String)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(String truncate(String, int, int, String)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(String truncate(String, int, int, String)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(String truncate(String, int, int, String)): Effects-of-calling:java.lang.String:lastIndexOf
    //#UtilitiesModel.java:307: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.truncate(String, int, int, String)
    }
    
    public String truncateNicely(String str, int lower, int upper, String appendToEnd) {
        return Utilities.truncateNicely(str, lower, upper, appendToEnd);
    //#UtilitiesModel.java:311: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.truncateNicely(String, int, int, String)
    //#input(String truncateNicely(String, int, int, String)): " "._tainted
    //#input(String truncateNicely(String, int, int, String)): ""._tainted
    //#input(String truncateNicely(String, int, int, String)): appendToEnd
    //#input(String truncateNicely(String, int, int, String)): appendToEnd._tainted
    //#input(String truncateNicely(String, int, int, String)): lower
    //#input(String truncateNicely(String, int, int, String)): str
    //#input(String truncateNicely(String, int, int, String)): str._tainted
    //#input(String truncateNicely(String, int, int, String)): upper
    //#output(String truncateNicely(String, int, int, String)): java.lang.StringBuilder:toString(...)._tainted
    //#output(String truncateNicely(String, int, int, String)): return_value
    //#new obj(String truncateNicely(String, int, int, String)): java.lang.StringBuilder:toString(...)
    //#pre[4] (String truncateNicely(String, int, int, String)): str != null
    //#post(String truncateNicely(String, int, int, String)): init'ed(java.lang.StringBuilder:toString(...)._tainted)
    //#post(String truncateNicely(String, int, int, String)): return_value == One-of{str, &java.lang.StringBuilder:toString(...)}
    //#post(String truncateNicely(String, int, int, String)): return_value != null
    //#unanalyzed(String truncateNicely(String, int, int, String)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(String truncateNicely(String, int, int, String)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(String truncateNicely(String, int, int, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String truncateNicely(String, int, int, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String truncateNicely(String, int, int, String)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(String truncateNicely(String, int, int, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String truncateNicely(String, int, int, String)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(String truncateNicely(String, int, int, String)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(String truncateNicely(String, int, int, String)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(String truncateNicely(String, int, int, String)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(String truncateNicely(String, int, int, String)): Effects-of-calling:java.lang.String:lastIndexOf
    //#UtilitiesModel.java:311: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.truncateNicely(String, int, int, String)
    }
    
    public String truncateText(String str, int lower, int upper, String appendToEnd) {
        return Utilities.truncateText(str, lower, upper, appendToEnd);
    //#UtilitiesModel.java:315: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.truncateText(String, int, int, String)
    //#input(String truncateText(String, int, int, String)): " "._tainted
    //#input(String truncateText(String, int, int, String)): ""._tainted
    //#input(String truncateText(String, int, int, String)): appendToEnd
    //#input(String truncateText(String, int, int, String)): appendToEnd._tainted
    //#input(String truncateText(String, int, int, String)): lower
    //#input(String truncateText(String, int, int, String)): str
    //#input(String truncateText(String, int, int, String)): str._tainted
    //#input(String truncateText(String, int, int, String)): upper
    //#output(String truncateText(String, int, int, String)): java.lang.StringBuilder:toString(...)._tainted
    //#output(String truncateText(String, int, int, String)): return_value
    //#new obj(String truncateText(String, int, int, String)): java.lang.StringBuilder:toString(...)
    //#pre[4] (String truncateText(String, int, int, String)): str != null
    //#post(String truncateText(String, int, int, String)): init'ed(java.lang.StringBuilder:toString(...)._tainted)
    //#post(String truncateText(String, int, int, String)): return_value == One-of{str, &java.lang.StringBuilder:toString(...)}
    //#post(String truncateText(String, int, int, String)): return_value != null
    //#unanalyzed(String truncateText(String, int, int, String)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(String truncateText(String, int, int, String)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(String truncateText(String, int, int, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String truncateText(String, int, int, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String truncateText(String, int, int, String)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(String truncateText(String, int, int, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String truncateText(String, int, int, String)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(String truncateText(String, int, int, String)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(String truncateText(String, int, int, String)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(String truncateText(String, int, int, String)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(String truncateText(String, int, int, String)): Effects-of-calling:java.lang.String:lastIndexOf
    //#UtilitiesModel.java:315: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.truncateText(String, int, int, String)
    }    
    
    public String hexEncode(String str) {
        if (StringUtils.isEmpty(str)) return str;
    //#UtilitiesModel.java:319: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.hexEncode(String)
    //#UtilitiesModel.java:319: Warning: method not available
    //#    -- call on bool org.apache.commons.lang.StringUtils:isEmpty(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: String hexEncode(String)
    //#    unanalyzed callee: bool org.apache.commons.lang.StringUtils:isEmpty(String)
    //#input(String hexEncode(String)): str
    //#output(String hexEncode(String)): return_value
    //#post(String hexEncode(String)): init'ed(return_value)
    //#test_vector(String hexEncode(String)): org.apache.commons.lang.StringUtils:isEmpty(...)@319: {0}, {1}
        
        return RegexUtil.encode(str);
    //#UtilitiesModel.java:321: Warning: method not available
    //#    -- call on String org.apache.roller.util.RegexUtil:encode(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: String hexEncode(String)
    //#    unanalyzed callee: String org.apache.roller.util.RegexUtil:encode(String)
    //#UtilitiesModel.java:321: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.hexEncode(String)
    }
    
    public String encodeEmail(String str) {
        return str!=null ? RegexUtil.encodeEmail(str) : null;
    //#UtilitiesModel.java:325: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.encodeEmail(String)
    //#UtilitiesModel.java:325: Warning: method not available
    //#    -- call on String org.apache.roller.util.RegexUtil:encodeEmail(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: String encodeEmail(String)
    //#    unanalyzed callee: String org.apache.roller.util.RegexUtil:encodeEmail(String)
    //#input(String encodeEmail(String)): str
    //#output(String encodeEmail(String)): return_value
    //#post(String encodeEmail(String)): init'ed(return_value)
    //#UtilitiesModel.java:325: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.encodeEmail(String)
    }
    
    /**
     * URL encoding.
     * @param s a string to be URL-encoded
     * @return URL encoding of s using character encoding UTF-8; null if s is null.
     */
    public final String encode(String s) {
        if(s != null) {
    //#UtilitiesModel.java:334: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.encode(String)
    //#input(String encode(String)): s
    //#output(String encode(String)): return_value
    //#post(String encode(String)): init'ed(return_value)
    //#unanalyzed(String encode(String)): Effects-of-calling:java.net.URLEncoder:encode
    //#unanalyzed(String encode(String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#test_vector(String encode(String)): s: Addr_Set{null}, Inverse{null}
            return URLUtilities.encode(s);
        } else {
            return s;
    //#UtilitiesModel.java:337: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.encode(String)
        }
    }
    
    /**
     * URL decoding.
     * @param s a URL-encoded string to be URL-decoded
     * @return URL decoded value of s using character encoding UTF-8; null if s is null.
     */
    public final String decode(String s) {
        if(s != null) {
    //#UtilitiesModel.java:347: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.decode(String)
    //#input(String decode(String)): s
    //#output(String decode(String)): return_value
    //#post(String decode(String)): init'ed(return_value)
    //#unanalyzed(String decode(String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(String decode(String)): Effects-of-calling:java.net.URLDecoder:decode
    //#test_vector(String decode(String)): s: Addr_Set{null}, Inverse{null}
            return URLUtilities.decode(s);
        } else {
            return s;
    //#UtilitiesModel.java:350: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.decode(String)
        }
    }
        
    /**
     * Code (stolen from Pebble) to add rel="nofollow" string to all links in HTML.
     */
    public String addNofollow(String html) {
        return Utilities.addNofollow(html);
    //#UtilitiesModel.java:358: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.addNofollow(String)
    //#input(String addNofollow(String)): " rel="nofollow">"._tainted
    //#input(String addNofollow(String)): html
    //#input(String addNofollow(String)): html._tainted
    //#input(String addNofollow(String)): org/apache/roller/weblogger/util/Utilities.mLinkPattern
    //#output(String addNofollow(String)): java.lang.StringBuffer:toString(...)._tainted
    //#output(String addNofollow(String)): return_value
    //#new obj(String addNofollow(String)): java.lang.StringBuffer:toString(...)
    //#pre[3] (String addNofollow(String)): (soft) org/apache/roller/weblogger/util/Utilities.mLinkPattern != null
    //#post(String addNofollow(String)): init'ed(java.lang.StringBuffer:toString(...)._tainted)
    //#post(String addNofollow(String)): return_value == One-of{html, &java.lang.StringBuffer:toString(...)}
    //#post(String addNofollow(String)): init'ed(return_value)
    //#unanalyzed(String addNofollow(String)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(String addNofollow(String)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(String addNofollow(String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String addNofollow(String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String addNofollow(String)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(String addNofollow(String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String addNofollow(String)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(String addNofollow(String)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(String addNofollow(String)): Effects-of-calling:java.util.regex.Pattern:matcher
    //#unanalyzed(String addNofollow(String)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(String addNofollow(String)): Effects-of-calling:java.util.regex.Matcher:find
    //#unanalyzed(String addNofollow(String)): Effects-of-calling:java.util.regex.Matcher:start
    //#unanalyzed(String addNofollow(String)): Effects-of-calling:java.util.regex.Matcher:end
    //#UtilitiesModel.java:358: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.addNofollow(String)
    }
    
    /**
     * Transforms the given String into a subset of HTML displayable on a web
     * page. The subset includes &lt;b&gt;, &lt;i&gt;, &lt;p&gt;, &lt;br&gt;,
     * &lt;pre&gt; and &lt;a href&gt; (and their corresponding end tags).
     *
     * @param s   the String to transform
     * @return    the transformed String
     */
    public String transformToHTMLSubset(String s) {
        return Utilities.transformToHTMLSubset(s);
    //#UtilitiesModel.java:370: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.transformToHTMLSubset(String)
    //#input(String transformToHTMLSubset(String)): "<"._tainted
    //#input(String transformToHTMLSubset(String)): ">"._tainted
    //#input(String transformToHTMLSubset(String)): org/apache/roller/weblogger/util/Utilities.BR_TAG_PATTERN
    //#input(String transformToHTMLSubset(String)): org/apache/roller/weblogger/util/Utilities.CLOSING_A_TAG_PATTERN
    //#input(String transformToHTMLSubset(String)): org/apache/roller/weblogger/util/Utilities.CLOSING_BLOCKQUOTE_TAG_PATTERN
    //#input(String transformToHTMLSubset(String)): org/apache/roller/weblogger/util/Utilities.CLOSING_B_TAG_PATTERN
    //#input(String transformToHTMLSubset(String)): org/apache/roller/weblogger/util/Utilities.CLOSING_I_TAG_PATTERN
    //#input(String transformToHTMLSubset(String)): org/apache/roller/weblogger/util/Utilities.CLOSING_LI_TAG_PATTERN
    //#input(String transformToHTMLSubset(String)): org/apache/roller/weblogger/util/Utilities.CLOSING_OL_TAG_PATTERN
    //#input(String transformToHTMLSubset(String)): org/apache/roller/weblogger/util/Utilities.CLOSING_PRE_TAG_PATTERN
    //#input(String transformToHTMLSubset(String)): org/apache/roller/weblogger/util/Utilities.CLOSING_P_TAG_PATTERN
    //#input(String transformToHTMLSubset(String)): org/apache/roller/weblogger/util/Utilities.CLOSING_UL_TAG_PATTERN
    //#input(String transformToHTMLSubset(String)): org/apache/roller/weblogger/util/Utilities.OPENING_A_TAG_PATTERN
    //#input(String transformToHTMLSubset(String)): org/apache/roller/weblogger/util/Utilities.OPENING_BLOCKQUOTE_TAG_PATTERN
    //#input(String transformToHTMLSubset(String)): org/apache/roller/weblogger/util/Utilities.OPENING_B_TAG_PATTERN
    //#input(String transformToHTMLSubset(String)): org/apache/roller/weblogger/util/Utilities.OPENING_I_TAG_PATTERN
    //#input(String transformToHTMLSubset(String)): org/apache/roller/weblogger/util/Utilities.OPENING_LI_TAG_PATTERN
    //#input(String transformToHTMLSubset(String)): org/apache/roller/weblogger/util/Utilities.OPENING_OL_TAG_PATTERN
    //#input(String transformToHTMLSubset(String)): org/apache/roller/weblogger/util/Utilities.OPENING_PRE_TAG_PATTERN
    //#input(String transformToHTMLSubset(String)): org/apache/roller/weblogger/util/Utilities.OPENING_P_TAG_PATTERN
    //#input(String transformToHTMLSubset(String)): org/apache/roller/weblogger/util/Utilities.OPENING_UL_TAG_PATTERN
    //#input(String transformToHTMLSubset(String)): org/apache/roller/weblogger/util/Utilities.QUOTE_PATTERN
    //#input(String transformToHTMLSubset(String)): s
    //#input(String transformToHTMLSubset(String)): s._tainted
    //#output(String transformToHTMLSubset(String)): java.lang.StringBuilder:toString(...)._tainted
    //#output(String transformToHTMLSubset(String)): return_value
    //#new obj(String transformToHTMLSubset(String)): java.lang.StringBuilder:toString(...)
    //#post(String transformToHTMLSubset(String)): init'ed(java.lang.StringBuilder:toString(...)._tainted)
    //#post(String transformToHTMLSubset(String)): init'ed(return_value)
    //#unanalyzed(String transformToHTMLSubset(String)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(String transformToHTMLSubset(String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String transformToHTMLSubset(String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String transformToHTMLSubset(String)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(String transformToHTMLSubset(String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String transformToHTMLSubset(String)): Effects-of-calling:java.util.regex.Pattern:matcher
    //#unanalyzed(String transformToHTMLSubset(String)): Effects-of-calling:java.util.regex.Matcher:find
    //#unanalyzed(String transformToHTMLSubset(String)): Effects-of-calling:java.util.regex.Matcher:start
    //#unanalyzed(String transformToHTMLSubset(String)): Effects-of-calling:java.util.regex.Matcher:end
    //#unanalyzed(String transformToHTMLSubset(String)): Effects-of-calling:java.lang.String:replaceAll
    //#unanalyzed(String transformToHTMLSubset(String)): Effects-of-calling:java.util.regex.Matcher:replaceAll
    //#UtilitiesModel.java:370: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.transformToHTMLSubset(String)
    }
    
    /**
     * Convert a byte array into a Base64 string (as used in mime formats)
     */
    public String toBase64(byte[] aValue) {
        return Utilities.toBase64(aValue);
    //#UtilitiesModel.java:377: method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.toBase64(byte[])
    //#UtilitiesModel.java:377: Warning: suspicious precondition
    //#    the precondition for aValue.length is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
    //#    method: String toBase64(byte[])
    //#    suspicious precondition index: [2]
    //#    Attribs:  Soft
    //#input(String toBase64(byte[])): aValue
    //#input(String toBase64(byte[])): aValue.length
    //#input(String toBase64(byte[])): aValue[0..4_294_967_295]
    //#output(String toBase64(byte[])): java.lang.StringBuffer:toString(...)._tainted
    //#output(String toBase64(byte[])): return_value
    //#new obj(String toBase64(byte[])): java.lang.StringBuffer:toString(...)
    //#pre[1] (String toBase64(byte[])): aValue != null
    //#pre[2] (String toBase64(byte[])): (soft) aValue.length in {0, 3..4_294_967_295}
    //#pre[3] (String toBase64(byte[])): (soft) init'ed(aValue[0..4_294_967_295])
    //#post(String toBase64(byte[])): java.lang.StringBuffer:toString(...)._tainted == 0
    //#post(String toBase64(byte[])): return_value == &java.lang.StringBuffer:toString(...)
    //#unanalyzed(String toBase64(byte[])): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(String toBase64(byte[])): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(String toBase64(byte[])): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(String toBase64(byte[])): Effects-of-calling:java.lang.String:charAt
    //#UtilitiesModel.java:377: end of method: String org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel.toBase64(byte[])
    }
       
}
    //#UtilitiesModel.java:: end of class: org.apache.roller.weblogger.ui.rendering.model.UtilitiesModel
