Java Code Examples for org.apache.commons.lang3.StringUtils.substringAfter()

The following are Jave code examples for showing how to use substringAfter() of the org.apache.commons.lang3.StringUtils class. You can vote up the examples you like. Your votes will be used in our system to get more good examples.
+ Save this method
Example 1
Project: DiscordConvenienceBot   File: CommandListener.java   View Source Code Vote up 6 votes
@Override
public void handle(MessageReceivedEvent event) {
	String message = event.getMessage().getContent();
	String channel = event.getChannel().getName();
	LOGGER.info("Read : {} in channel {}",message,channel);
	
	if(message.startsWith(COMMAND_CUE)) {
		String commandString = StringUtils.substringAfter(message, COMMAND_CUE);
		
		String[] args    = commandString.split(" ");
		Command  command = library.getCommand(args[0]);
		
		if(command == null || !command.handle(event, args)) {
			event.getChannel().sendMessage("Sorry!!, I did not understand your message " + commandString + ":(. Type !help for list of commands");
		}
	}
}
 
Example 2
Project: saluki   File: GenericInvokeUtils.java   View Source Code Vote up 6 votes
private static Object generateMapType(ServiceDefinition def, TypeDefinition td, MetadataType metadataType,
                                      Set<String> resolvedTypes) {
    String keyType = StringUtils.substringAfter(td.getType(), "<");
    keyType = StringUtils.substringBefore(keyType, ",");
    keyType = StringUtils.strip(keyType);
    keyType = StringUtils.isNotEmpty(keyType) ? keyType : "java.lang.Object";
    Object key = generateType(def, keyType, metadataType, resolvedTypes);

    String valueType = StringUtils.substringAfter(td.getType(), ",");
    valueType = StringUtils.substringBefore(valueType, ">");
    valueType = StringUtils.strip(valueType);
    valueType = StringUtils.isNotEmpty(valueType) ? valueType : "java.lang.Object";
    Object value = generateType(def, valueType, metadataType, resolvedTypes);

    Map<Object, Object> map = new HashMap<>();
    map.put(key, value);
    return map;
}
 
Example 3
Project: gitplex-mit   File: GitFilter.java   View Source Code Vote up 6 votes
@Sessional
protected ProjectFacade getProject(HttpServletRequest request, HttpServletResponse response, String projectInfo) 
		throws IOException {
	projectInfo = StringUtils.stripStart(StringUtils.stripEnd(projectInfo, "/"), "/");

	if (StringUtils.isBlank(projectInfo) || !projectInfo.startsWith("projects/")) {
		String url = request.getRequestURL().toString();
		String urlRoot = url.substring(0, url.length()-getPathInfo(request).length());
		throw new GitException(String.format("Expecting url of format %sprojects/<project name>", urlRoot));
	} 
	
	String projectName = StringUtils.substringAfter(projectInfo, "/");
	
	if (projectName.endsWith(".git"))
		projectName = projectName.substring(0, projectName.length()-".git".length());
	
	Project project = projectManager.find(projectName);
	if (project == null) {
		throw new GitException(String.format("Unable to find project %s", projectName));
	}
	
	return project.getFacade();
}
 
Example 4
Project: aceql-http   File: TransportConverter.java   View Source Code Vote up 6 votes
/**
    * Transform a byte [] transported in hex prefixed by "**!kawanfw_bytes!**"
    * to it's orginal byte []
    * 
    * @param string
    *            the string that contains the bytes prefixed by
    *            "**!kawanfw_bytes!**"
    * @return the bytes
    */
   public static byte[] fromTransportFormatToBytes(String string) {
String encodedString = StringUtils
	.substringAfter(string, KAWANFW_BYTES);

if (encodedString.equals("null")) {
    return null;
}

try {
    byte[] bytes = Base64.base64ToByteArray(encodedString);
    return bytes;
} catch (Exception e) {
    throw new IllegalArgumentException(Tag.PRODUCT_PRODUCT_FAIL
	    + "String is not in BASE64 format: " + encodedString, e);
}

   }
 
Example 5
Project: patternlab-for-sling   File: PatternLabUtils.java   View Source Code Vote up 6 votes
public static String constructPatternId(String patternResourcePath, String patternsPath, String templateName, String jsonDataFileName) {
    final String patternPath = StringUtils.substringAfter(patternResourcePath, patternsPath + SLASH);
    final StringBuilder patternIdBuilder = new StringBuilder();
    if (StringUtils.endsWith(patternPath, HTML_EXT)) {
        patternIdBuilder.append(StringUtils.substringBeforeLast(patternPath, HTML_EXT));
    } else {
        patternIdBuilder.append(patternPath);
    }
    if (StringUtils.isNotBlank(templateName)) {
        patternIdBuilder.append(SLASH).append(templateName);
    }
    if (StringUtils.isNotBlank(jsonDataFileName)) {
        final String patternFileName = StringUtils.substringAfterLast(patternPath, SLASH);
        final String fileNameWithoutExt = StringUtils.substringBeforeLast(patternFileName, HTML_EXT);
        final String dataFileSuffix = StringUtils.substringBetween(jsonDataFileName, fileNameWithoutExt
                + SELECTOR, DATA_EXT);
        patternIdBuilder.append(SLASH).append(StringUtils.defaultString(dataFileSuffix, fileNameWithoutExt));
    }
    return StringUtils.replace(patternIdBuilder.toString(), SLASH, PATTERN_ID_REPLACEMENT);
}
 
Example 6
Project: gitplex-mit   File: TextRange.java   View Source Code Vote up 5 votes
public TextRange(String markStr) {
	String begin = StringUtils.substringBefore(markStr, "-");
	String end = StringUtils.substringAfter(markStr, "-");
	beginLine = Integer.parseInt(StringUtils.substringBefore(begin, "."))-1;
	beginChar = Integer.parseInt(StringUtils.substringAfter(begin, "."));
	endLine = Integer.parseInt(StringUtils.substringBefore(end, "."))-1;
	endChar = Integer.parseInt(StringUtils.substringAfter(end, "."));
}
 
Example 7
Project: PetiteRPC   File: ZookeeperRegistry.java   View Source Code Vote up 5 votes
private static Registration fromPath(String path) {
	String subPath = StringUtils.substringAfter(path, basePath);
	String[] array = subPath.split("/");
	String serviceName = array[0];
	String[] address = array[1].split(":");
	Registration registration = new Registration(address[0], Integer.parseInt(address[1]), serviceName);
	return registration;
}
 
Example 8
Project: rmq4note   File: DynaCode.java   View Source Code Vote up 5 votes
public static String getClassName(String code) {
    String className = StringUtils.substringBefore(code, "{");
    if (StringUtils.isBlank(className)) {
        return className;
    }
    if (StringUtils.contains(code, " class ")) {
        className = StringUtils.substringAfter(className, " class ");
        if (StringUtils.contains(className, " extends ")) {
            className = StringUtils.substringBefore(className, " extends ").trim();
        } else if (StringUtils.contains(className, " implements ")) {
            className = StringUtils.trim(StringUtils.substringBefore(className, " implements "));
        } else {
            className = StringUtils.trim(className);
        }
    } else if (StringUtils.contains(code, " interface ")) {
        className = StringUtils.substringAfter(className, " interface ");
        if (StringUtils.contains(className, " extends ")) {
            className = StringUtils.substringBefore(className, " extends ").trim();
        } else {
            className = StringUtils.trim(className);
        }
    } else if (StringUtils.contains(code, " enum ")) {
        className = StringUtils.trim(StringUtils.substringAfter(className, " enum "));
    } else {
        return StringUtils.EMPTY;
    }
    return className;
}
 
Example 9
Project: aceql-http   File: JavaSqlConversion.java   View Source Code Vote up 5 votes
/**
    * Decode the String param type passed by user on client side into a Types
    * corresponding value.
    * 
    * @param sqlParamType
    * @return
    */
   public static int fromSqlToJava(String sqlParamType) {
int javaType = 0;

if (sqlParamType.equals(AceQLTypes.CHARACTER)) {
    javaType = Types.CHAR;
} else if (sqlParamType.equals(AceQLTypes.VARCHAR)) {
    javaType = Types.VARCHAR;
} else if (sqlParamType.equals(AceQLTypes.LONGVARCHAR)) {
    javaType = Types.LONGVARCHAR;
} else if (sqlParamType.equals(AceQLTypes.BIT)) {
    javaType = Types.BIT;
} else if (sqlParamType.equals(AceQLTypes.NUMERIC)) {
    javaType = Types.NUMERIC;
} else if (sqlParamType.equals(AceQLTypes.TINYINT)) {
    javaType = Types.TINYINT;
} else if (sqlParamType.equals(AceQLTypes.SMALLINT)) {
    javaType = Types.SMALLINT;
} else if (sqlParamType.equals(AceQLTypes.INTEGER)) {
    javaType = Types.INTEGER;
} else if (sqlParamType.equals(AceQLTypes.BIGINT)) {
    javaType = Types.BIGINT;
} else if (sqlParamType.equals(AceQLTypes.REAL)) {
    javaType = Types.REAL;
} else if (sqlParamType.equals(AceQLTypes.FLOAT)) {
    javaType = Types.FLOAT;
} else if (sqlParamType.equals(AceQLTypes.DOUBLE_PRECISION)) {
    javaType = Types.DOUBLE;
} else if (sqlParamType.equals(AceQLTypes.DATE)) {
    javaType = Types.DATE;
} else if (sqlParamType.equals(AceQLTypes.TIME)) {
    javaType = Types.TIME;
} else if (sqlParamType.equals(AceQLTypes.TIMESTAMP)) {
    javaType = Types.TIMESTAMP;
} else if (sqlParamType.equals(AceQLTypes.BINARY)) {
    javaType = Types.BINARY;
} else if (sqlParamType.equals(AceQLTypes.VARBINARY)) {
    javaType = Types.VARBINARY;
} else if (sqlParamType.equals(AceQLTypes.DATE)) {
    javaType = Types.LONGVARBINARY;
} else if (sqlParamType.equals(AceQLTypes.BLOB)) {
    javaType = Types.BLOB;
} else if (sqlParamType.equals(AceQLTypes.CLOB)) {
    javaType = Types.CLOB;
} else if (sqlParamType.startsWith("TYPE_NULL")) {
    String javaTypeStr = StringUtils.substringAfter(sqlParamType,
	    "TYPE_NULL");
    javaType = Integer.parseInt(javaTypeStr);
} else {
    throw new IllegalArgumentException(
	    "Unsuported data type for null setting: " + sqlParamType);
}
return javaType;
   }
 
Example 10
Project: util   File: URLResourceUtil.java   View Source Code Vote up 5 votes
/**
 * 兼容无前缀, classpath://, file:// 的情况获取文件
 * 
 * 如果以classpath:// 定义的文件不存在会抛出IllegalArgumentException异常,以file://定义的则不会
 */
public static File asFile(String generalPath) throws IOException {
	if (StringUtils.startsWith(generalPath, CLASSPATH_PREFIX)) {
		String resourceName = StringUtils.substringAfter(generalPath, CLASSPATH_PREFIX);
		return getFileByURL(ResourceUtil.asUrl(resourceName));
	}
	try {
		// try URL
		return getFileByURL(new URL(generalPath));
	} catch (MalformedURLException ex) {
		// no URL -> treat as file path
		return new File(generalPath);
	}
}
 
Example 11
Project: aceql-http   File: TomcatConnectorsUpdater.java   View Source Code Vote up 5 votes
/**
 * If there are some Connector properties, set them on Tomcat instance
 */
public void setConnectorValues() {

	// Do we have to set special values to the Connector?
	Enumeration<?> enumeration = properties.propertyNames();

	if (enumeration.hasMoreElements()) {
		System.out.println(SqlTag.SQL_PRODUCT_START + " Setting Default Connector base attributes:");
	}

	while (enumeration.hasMoreElements()) {
		String property = (String) enumeration.nextElement();

		if (property.startsWith("connector.")) {

			String theValue = properties.getProperty(property);
			String tomcatProperty = StringUtils.substringAfter(property, "connector.");

			if (theValue != null && !theValue.isEmpty()) {

				theValue = theValue.trim();

				System.out.println(SqlTag.SQL_PRODUCT_START + "  -> " + tomcatProperty + " = " + theValue);

				tomcat.getConnector().setProperty(tomcatProperty, theValue);
			}
		}
	}
}
 
Example 12
Project: aceql-http   File: JdbcUrlHeader.java   View Source Code Vote up 5 votes
/**
    * Returns the HTTP URL
    * 
    * @param url
    *            the JDBC URL with maybe "jdbc:aceql:" header
    * @return the pure HTTP URL
    */
   public static String getUrlHttpOnly(String url) {

if (url == null) {
    throw new IllegalArgumentException("url is null!");
}

String urlHttpOnly = url;
if (url.startsWith(JDBC_URL_HEADER)) {
    urlHttpOnly = StringUtils.substringAfter(url, JDBC_URL_HEADER);
}
return urlHttpOnly;
   }
 
Example 13
Project: util   File: URLResourceUtil.java   View Source Code Vote up 5 votes
/**
 * 兼容file://与classpath://的情况的打开文件成Stream
 */
public static InputStream asStream(String generalPath) throws IOException {
	if (StringUtils.startsWith(generalPath, CLASSPATH_PREFIX)) {
		String resourceName = StringUtils.substringAfter(generalPath, CLASSPATH_PREFIX);
		return ResourceUtil.asStream(resourceName);
	}

	try {
		// try URL
		return FileUtil.asInputStream(getFileByURL(new URL(generalPath)));
	} catch (MalformedURLException ex) {
		// no URL -> treat as file path
		return FileUtil.asInputStream(generalPath);
	}
}
 
Example 14
Project: saluki   File: GenericInvokeUtils.java   View Source Code Vote up 5 votes
public static String[] findParameterTypes(String methodSignature, boolean erase) {
    String parameterStr = StringUtils.substringAfter(methodSignature, "~");
    String[] types = StringUtils.split(parameterStr, ';');
    if (erase) {
        for (int i = 0; i < types.length; i++) {
            types[i] = StringUtils.substringBefore(types[i], "<");
        }
    }
    return types;
}
 
Example 15
Project: saluki   File: ConsulRegistry.java   View Source Code Vote up 5 votes
private GrpcURL buildURL(ConsulService service) {
  try {
    for (String tag : service.getTags()) {
      if (StringUtils.indexOf(tag, Constants.PROVIDERS_CATEGORY) != -1) {
        String toUrlPath = StringUtils.substringAfter(tag, Constants.PROVIDERS_CATEGORY);
        GrpcURL salukiUrl = GrpcURL.valueOf(GrpcURL.decode(toUrlPath));
        return salukiUrl;
      }
    }
  } catch (Exception e) {
    log.error("convert consul service to url fail! service:" + service, e);
  }
  return null;
}
 
Example 16
Project: nifi-registry   File: IdentityMappingUtil.java   View Source Code Vote up 4 votes
/**
 * Builds the identity mappings from NiFiRegistryProperties.
 *
 * @param properties the NiFiRegistryProperties instance
 * @return a list of identity mappings
 */
public static List<IdentityMapping> getIdentityMappings(final NiFiRegistryProperties properties) {
    final List<IdentityMapping> mappings = new ArrayList<>();

    // go through each property
    for (String propertyName : properties.getPropertyKeys()) {
        if (StringUtils.startsWith(propertyName, NiFiRegistryProperties.SECURITY_IDENTITY_MAPPING_PATTERN_PREFIX)) {
            final String key = StringUtils.substringAfter(propertyName, NiFiRegistryProperties.SECURITY_IDENTITY_MAPPING_PATTERN_PREFIX);
            final String identityPattern = properties.getProperty(propertyName);

            if (StringUtils.isBlank(identityPattern)) {
                LOGGER.warn("Identity Mapping property {} was found, but was empty", new Object[]{propertyName});
                continue;
            }

            final String identityValueProperty = NiFiRegistryProperties.SECURITY_IDENTITY_MAPPING_VALUE_PREFIX + key;
            final String identityValue = properties.getProperty(identityValueProperty);

            if (StringUtils.isBlank(identityValue)) {
                LOGGER.warn("Identity Mapping property {} was found, but corresponding value {} was not found",
                        new Object[]{propertyName, identityValueProperty});
                continue;
            }

            final IdentityMapping identityMapping = new IdentityMapping(key, Pattern.compile(identityPattern), identityValue);
            mappings.add(identityMapping);

            LOGGER.debug("Found Identity Mapping with key = {}, pattern = {}, value = {}",
                    new Object[] {key, identityPattern, identityValue});
        }
    }

    // sort the list by the key so users can control the ordering in nifi-registry.properties
    Collections.sort(mappings, new Comparator<IdentityMapping>() {
        @Override
        public int compare(IdentityMapping m1, IdentityMapping m2) {
            return m1.getKey().compareTo(m2.getKey());
        }
    });

    return mappings;
}
 
Example 17
Project: cas-5.1.0   File: OAuth20AuthorizeControllerTests.java   View Source Code Vote up 4 votes
@Test
public void verifyCodeRedirectToClientApproved() throws Exception {
    clearAllServices();

    final MockHttpServletRequest mockRequest = new MockHttpServletRequest(GET, CONTEXT + OAuth20Constants.AUTHORIZE_URL);
    mockRequest.setParameter(OAuth20Constants.CLIENT_ID, CLIENT_ID);
    mockRequest.setParameter(OAuth20Constants.REDIRECT_URI, REDIRECT_URI);
    mockRequest.setParameter(OAuth20Constants.RESPONSE_TYPE, OAuth20ResponseTypes.CODE.name().toLowerCase());
    mockRequest.setServerName(CAS_SERVER);
    mockRequest.setServerPort(CAS_PORT);
    mockRequest.setScheme(CAS_SCHEME);
    mockRequest.setParameter(OAuth20Constants.BYPASS_APPROVAL_PROMPT, "true");
    final MockHttpServletResponse mockResponse = new MockHttpServletResponse();

    final OAuthRegisteredService service = getRegisteredService(REDIRECT_URI, SERVICE_NAME);
    service.setBypassApprovalPrompt(false);
    this.servicesManager.save(service);

    final CasProfile profile = new CasProfile();
    profile.setId(ID);
    final Map<String, Object> attributes = new HashMap<>();
    attributes.put(FIRST_NAME_ATTRIBUTE, FIRST_NAME);
    attributes.put(LAST_NAME_ATTRIBUTE, LAST_NAME);
    profile.addAttributes(attributes);

    final MockHttpSession session = new MockHttpSession();
    mockRequest.setSession(session);
    session.putValue(Pac4jConstants.USER_PROFILES, profile);

    final ModelAndView modelAndView = oAuth20AuthorizeEndpointController.handleRequest(mockRequest, mockResponse);
    final View view = modelAndView.getView();
    assertTrue(view instanceof RedirectView);
    final RedirectView redirectView = (RedirectView) view;
    final String redirectUrl = redirectView.getUrl();
    assertTrue(redirectUrl.startsWith(REDIRECT_URI + "?code=OC-"));

    final String code = StringUtils.substringAfter(redirectUrl, "?code=");
    final OAuthCode oAuthCode = (OAuthCode) this.ticketRegistry.getTicket(code);
    assertNotNull(oAuthCode);
    final Principal principal = oAuthCode.getAuthentication().getPrincipal();
    assertEquals(ID, principal.getId());
    final Map<String, Object> principalAttributes = principal.getAttributes();
    assertEquals(attributes.size(), principalAttributes.size());
    assertEquals(FIRST_NAME, principalAttributes.get(FIRST_NAME_ATTRIBUTE));
}
 
Example 18
Project: api2swagger   File: URLUtils.java   View Source Code Vote up 4 votes
public static String calculateAPIPath(String endpoint, String basePath) {
	
	String indexOfRestService = StringUtils.substringAfter(endpoint, basePath);
	return indexOfRestService;
}
 
Example 19
Project: sunbird-lms-mw   File: SocialMediaType.java   View Source Code Vote up 4 votes
private static String validateMediaURL(String type, String url) {
  String pattern = "";

  if(ProjectUtil.isStringNullOREmpty(url)){
    return url;
  }
  if(validateUrls(url)){
    return "";
  }
  switch (type) {
    case "fb":{
      if(url.contains("http")){
        //pattern = "http(?:s)?:\\/\\/(?:www.)?facebook.com\\/(?:(?:\\w)*#!\\/)?(?:pages\\/)?(?:[?\\w\\-]*\\/)?(?:profile.php\\?id=(?=\\d.*))?([\\w\\-]*)?";
        pattern = "http(?:s)?:\\/\\/(?:www.)?facebook.com\\/(?:(?:\\w\\.)*#!\\/)?(?:pages\\/)?(?:[\\w\\-\\.]*\\/)*([\\w\\-\\.]*)?(?:profile.php\\?id=(?=\\d.*))?([\\w\\-\\.]*)?";
        if(!IsMatch(url, pattern)){
         url = ""; 
        }
      } else {
        if(url.contains("facebook.com/")){
          url = StringUtils.substringAfter(url, "facebook.com/");
        }
        url = "https://www.facebook.com/" + url;
      }
      return url;
    }
    case "twitter":{
      if(url.contains("http")){
        pattern = "http(?:s)?:\\/\\/(?:www.)?twitter\\.com\\/([a-zA-Z0-9_]+)";
        if(!IsMatch(url, pattern)){
          url = ""; 
         }
      } else {
        if(url.contains("twitter.com/")){
          url = StringUtils.substringAfter(url, "twitter.com/");
        }
        url = "https://twitter.com/" + url;
      }
      return url;
    }
    case "in":{
      if(url.contains("http")){
        pattern = "http(?:s)?:\\/\\/(?:www.)?linkedin+\\.[a-zA-Z0-9/~\\-_,&=\\?\\.;]+[^\\.,\\s<]";
        if(!IsMatch(url, pattern)){
          url = ""; 
         }
      } else {
        if(url.contains("linkedin.com/in/")){
          url = StringUtils.substringAfter(url, "linkedin.com/in/");
        }
        url = "https://www.linkedin.com/in/" + url;
      }
      return url;
    }
    case "blog": {
      pattern = "http(?:s)?://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]";
      if(!IsMatch(url, pattern)){
        url = "";
      }
      return url;
    }
    default: {
      pattern = "\\b(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]";
      if(!IsMatch(url, pattern)){
        url = ""; 
       }
      return url;
    }
  }
}
 
Example 20
Project: solo-spring   File: PluginManager.java   View Source Code Vote up 2 votes
/**
 * Loads a plugin by the specified plugin directory and put it into the
 * specified holder.
 *
 * @param pluginDirPath
 *            the specified plugin directory
 * @param holder
 *            the specified holder
 * @return loaded plugin
 * @throws Exception
 *             exception
 */
private AbstractPlugin load(final String pluginDirPath, final Map<String, HashSet<AbstractPlugin>> holder)
		throws Exception {
	final ServletContext servletContext = ContextLoader.getCurrentWebApplicationContext().getServletContext();

	String plugin = StringUtils.substringAfter(pluginDirPath, "/plugins");

	plugin = plugin.replace("/", "");

	final File file = Latkes.getWebFile("/plugins/" + plugin + "/plugin.properties");

	PropsUtil.loadFromInputStream(new FileInputStream(file));

	final URL defaultClassesFileDirURL = servletContext.getResource("/plugins/" + plugin + "classes");

	URL classesFileDirURL = null;

	try {
		classesFileDirURL = servletContext.getResource(PropsUtil.getProperty("classesDirPath"));
	} catch (final MalformedURLException e) {
		logger.error("Reads [" + PropsUtil.getProperty("classesDirPath") + "] failed", e);
	}

	final URLClassLoader classLoader = new URLClassLoader(new URL[] { defaultClassesFileDirURL, classesFileDirURL },
			PluginManager.class.getClassLoader());

	classLoaders.add(classLoader);

	String pluginClassName = PropsUtil.getProperty(Plugin.PLUGIN_CLASS);

	if (StringUtils.isBlank(pluginClassName)) {
		pluginClassName = NotInteractivePlugin.class.getName();
	}

	final String rendererId = PropsUtil.getProperty(Plugin.PLUGIN_RENDERER_ID);

	if (StringUtils.isBlank(rendererId)) {
		logger.warn("no renderer defined by this plugin[" + plugin + "],this plugin will be ignore!");
		return null;
	}

	final Class<?> pluginClass = classLoader.loadClass(pluginClassName);

	logger.trace("Loading plugin class[name={}]", pluginClassName);
	final AbstractPlugin ret = (AbstractPlugin) pluginClass.newInstance();

	ret.setRendererId(rendererId);

	setPluginProps(plugin, ret);

	register(ret, holder);

	ret.changeStatus();

	return ret;
}