gitextract_382czipv/ ├── .gitattributes ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── config.yml │ │ └── issue.md │ ├── dependabot.yml │ └── workflows/ │ └── maven.yml ├── .gitignore ├── LICENSE ├── README.md ├── SECURITY.md ├── docs/ │ ├── pom.xml │ └── src/ │ └── orchid/ │ └── resources/ │ ├── assets/ │ │ └── css/ │ │ └── github-fork-ribbon.css │ ├── changelog/ │ │ ├── v3_0_0.md │ │ ├── v3_0_1.md │ │ ├── v3_0_10.md │ │ ├── v3_0_2.md │ │ ├── v3_0_3.md │ │ ├── v3_0_4.md │ │ ├── v3_0_5.md │ │ ├── v3_0_6.md │ │ ├── v3_0_7.md │ │ ├── v3_0_8.md │ │ ├── v3_0_9.md │ │ ├── v3_1_0.md │ │ ├── v3_1_1.md │ │ ├── v3_1_2.md │ │ ├── v3_1_3.md │ │ ├── v3_1_4.md │ │ ├── v3_1_5.md │ │ ├── v3_1_6.md │ │ ├── v3_2_0.md │ │ ├── v3_2_1.md │ │ ├── v3_2_2.md │ │ ├── v3_2_3.md │ │ ├── v3_2_4.md │ │ ├── v4_0_0.md │ │ ├── v4_1_0.md │ │ └── v4_1_1.md │ ├── config.yml │ ├── data/ │ │ ├── contributors.yml │ │ └── twig-compatibility/ │ │ ├── filters.yml │ │ ├── functions.yml │ │ ├── operators.yml │ │ ├── tags.yml │ │ └── tests.yml │ ├── homepage.md │ ├── pages/ │ │ ├── CNAME │ │ ├── changelog.md │ │ ├── contributing.md │ │ └── twig-compatibility.peb │ ├── templates/ │ │ ├── includes/ │ │ │ └── sidebar.peb │ │ └── layouts/ │ │ └── index.peb │ └── wiki/ │ ├── filter/ │ │ ├── abbreviate.md │ │ ├── abs.md │ │ ├── base64decode.md │ │ ├── base64encode.md │ │ ├── capitalize.md │ │ ├── date.md │ │ ├── default.md │ │ ├── escape.md │ │ ├── first.md │ │ ├── format.md │ │ ├── join.md │ │ ├── last.md │ │ ├── length.md │ │ ├── lower.md │ │ ├── nl2br.md │ │ ├── numberformat.md │ │ ├── raw.md │ │ ├── replace.md │ │ ├── reverse.md │ │ ├── rsort.md │ │ ├── sha256.md │ │ ├── slice.md │ │ ├── sort.md │ │ ├── split.md │ │ ├── title.md │ │ ├── trim.md │ │ ├── upper.md │ │ └── urlencode.md │ ├── function/ │ │ ├── blockFunction.md │ │ ├── i18n.md │ │ ├── max.md │ │ ├── min.md │ │ ├── parent.md │ │ └── range.md │ ├── guide/ │ │ ├── basic-usage.md │ │ ├── customize-defaults.md │ │ ├── escaping.md │ │ ├── extending-pebble.md │ │ ├── high-performance.md │ │ ├── installation.md │ │ └── spring-boot-integration.md │ ├── operator/ │ │ ├── comparisons.md │ │ ├── contains.md │ │ ├── is.md │ │ ├── logic.md │ │ ├── math.md │ │ └── others.md │ ├── summary.md │ ├── tag/ │ │ ├── autoescape.md │ │ ├── block.md │ │ ├── cache.md │ │ ├── embed.md │ │ ├── extends.md │ │ ├── filter.md │ │ ├── flush.md │ │ ├── for.md │ │ ├── from.md │ │ ├── if.md │ │ ├── import.md │ │ ├── include.md │ │ ├── macro.md │ │ ├── parallel.md │ │ ├── set.md │ │ └── verbatim.md │ └── test/ │ ├── empty.md │ ├── even.md │ ├── iterable.md │ ├── map.md │ ├── null.md │ └── odd.md ├── intellij-java-google-style.xml ├── pebble/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── io/ │ │ └── pebbletemplates/ │ │ └── pebble/ │ │ ├── PebbleEngine.java │ │ ├── attributes/ │ │ │ ├── ArrayResolver.java │ │ │ ├── AttributeResolver.java │ │ │ ├── DefaultAttributeResolver.java │ │ │ ├── ListResolver.java │ │ │ ├── MacroResolver.java │ │ │ ├── MapResolver.java │ │ │ ├── MemberCacheUtils.java │ │ │ ├── ResolvedAttribute.java │ │ │ └── methodaccess/ │ │ │ ├── BlacklistMethodAccessValidator.java │ │ │ ├── MethodAccessValidator.java │ │ │ └── NoOpMethodAccessValidator.java │ │ ├── cache/ │ │ │ ├── CacheKey.java │ │ │ ├── PebbleCache.java │ │ │ ├── tag/ │ │ │ │ ├── CaffeineTagCache.java │ │ │ │ ├── ConcurrentMapTagCache.java │ │ │ │ └── NoOpTagCache.java │ │ │ └── template/ │ │ │ ├── CaffeineTemplateCache.java │ │ │ ├── ConcurrentMapTemplateCache.java │ │ │ └── NoOpTemplateCache.java │ │ ├── error/ │ │ │ ├── AttributeNotFoundException.java │ │ │ ├── ClassAccessException.java │ │ │ ├── LoaderException.java │ │ │ ├── ParserException.java │ │ │ ├── PebbleException.java │ │ │ └── RootAttributeNotFoundException.java │ │ ├── extension/ │ │ │ ├── AbstractExtension.java │ │ │ ├── AbstractNodeVisitor.java │ │ │ ├── Extension.java │ │ │ ├── ExtensionCustomizer.java │ │ │ ├── ExtensionRegistry.java │ │ │ ├── ExtensionRegistryFactory.java │ │ │ ├── Filter.java │ │ │ ├── Function.java │ │ │ ├── NamedArguments.java │ │ │ ├── NodeVisitor.java │ │ │ ├── NodeVisitorFactory.java │ │ │ ├── Test.java │ │ │ ├── core/ │ │ │ │ ├── AbbreviateFilter.java │ │ │ │ ├── AbsFilter.java │ │ │ │ ├── AttributeResolverExtension.java │ │ │ │ ├── Base64DecoderFilter.java │ │ │ │ ├── Base64EncoderFilter.java │ │ │ │ ├── CapitalizeFilter.java │ │ │ │ ├── CoreExtension.java │ │ │ │ ├── DateFilter.java │ │ │ │ ├── DefaultFilter.java │ │ │ │ ├── DefinedTest.java │ │ │ │ ├── DisallowExtensionCustomizerBuilder.java │ │ │ │ ├── EmptyTest.java │ │ │ │ ├── EvenTest.java │ │ │ │ ├── FirstFilter.java │ │ │ │ ├── FormatFilter.java │ │ │ │ ├── IterableTest.java │ │ │ │ ├── JoinFilter.java │ │ │ │ ├── LastFilter.java │ │ │ │ ├── LengthFilter.java │ │ │ │ ├── LowerFilter.java │ │ │ │ ├── MacroAndBlockRegistrantNodeVisitor.java │ │ │ │ ├── MacroAndBlockRegistrantNodeVisitorFactory.java │ │ │ │ ├── MapTest.java │ │ │ │ ├── MaxFunction.java │ │ │ │ ├── MergeFilter.java │ │ │ │ ├── MinFunction.java │ │ │ │ ├── Nl2brFilter.java │ │ │ │ ├── NullTest.java │ │ │ │ ├── NumberFormatFilter.java │ │ │ │ ├── OddTest.java │ │ │ │ ├── RangeFunction.java │ │ │ │ ├── ReplaceFilter.java │ │ │ │ ├── ReverseFilter.java │ │ │ │ ├── RsortFilter.java │ │ │ │ ├── Sha256Filter.java │ │ │ │ ├── SliceFilter.java │ │ │ │ ├── SortFilter.java │ │ │ │ ├── SplitFilter.java │ │ │ │ ├── TitleFilter.java │ │ │ │ ├── TrimFilter.java │ │ │ │ ├── UpperFilter.java │ │ │ │ └── UrlEncoderFilter.java │ │ │ ├── debug/ │ │ │ │ ├── DebugExtension.java │ │ │ │ ├── PrettyPrintNodeVisitor.java │ │ │ │ └── PrettyPrintNodeVisitorFactory.java │ │ │ ├── escaper/ │ │ │ │ ├── EscapeFilter.java │ │ │ │ ├── EscaperExtension.java │ │ │ │ ├── EscaperNodeVisitor.java │ │ │ │ ├── EscaperNodeVisitorFactory.java │ │ │ │ ├── EscapingStrategy.java │ │ │ │ ├── RawFilter.java │ │ │ │ └── SafeString.java │ │ │ ├── i18n/ │ │ │ │ ├── I18nExtension.java │ │ │ │ ├── UTF8Control.java │ │ │ │ └── i18nFunction.java │ │ │ └── writer/ │ │ │ ├── PooledSpecializedStringWriter.java │ │ │ ├── SpecializedWriter.java │ │ │ └── StringWriterSpecializedAdapter.java │ │ ├── lexer/ │ │ │ ├── Lexer.java │ │ │ ├── LexerImpl.java │ │ │ ├── Syntax.java │ │ │ ├── TemplateSource.java │ │ │ ├── Token.java │ │ │ └── TokenStream.java │ │ ├── loader/ │ │ │ ├── AbstractServletLoader.java │ │ │ ├── ClasspathLoader.java │ │ │ ├── DelegatingLoader.java │ │ │ ├── DelegatingLoaderCacheKey.java │ │ │ ├── FileLoader.java │ │ │ ├── Loader.java │ │ │ ├── MemoryLoader.java │ │ │ ├── Servlet5Loader.java │ │ │ ├── ServletLoader.java │ │ │ └── StringLoader.java │ │ ├── node/ │ │ │ ├── AbstractRenderableNode.java │ │ │ ├── ArgumentsNode.java │ │ │ ├── AutoEscapeNode.java │ │ │ ├── BlockNode.java │ │ │ ├── BodyNode.java │ │ │ ├── CacheNode.java │ │ │ ├── EmbedNode.java │ │ │ ├── ExtendsNode.java │ │ │ ├── FlushNode.java │ │ │ ├── ForNode.java │ │ │ ├── FromNode.java │ │ │ ├── FunctionOrMacroNameNode.java │ │ │ ├── IfNode.java │ │ │ ├── ImportNode.java │ │ │ ├── IncludeNode.java │ │ │ ├── MacroNode.java │ │ │ ├── NamedArgumentNode.java │ │ │ ├── Node.java │ │ │ ├── ParallelNode.java │ │ │ ├── PositionalArgumentNode.java │ │ │ ├── PrintNode.java │ │ │ ├── RenderableNode.java │ │ │ ├── RootNode.java │ │ │ ├── SetNode.java │ │ │ ├── TestInvocationExpression.java │ │ │ ├── TextNode.java │ │ │ ├── expression/ │ │ │ │ ├── AddExpression.java │ │ │ │ ├── AndExpression.java │ │ │ │ ├── ArrayExpression.java │ │ │ │ ├── BinaryExpression.java │ │ │ │ ├── BlockFunctionExpression.java │ │ │ │ ├── ConcatenateExpression.java │ │ │ │ ├── ContainsExpression.java │ │ │ │ ├── ContextVariableExpression.java │ │ │ │ ├── DivideExpression.java │ │ │ │ ├── EqualsExpression.java │ │ │ │ ├── Expression.java │ │ │ │ ├── FilterExpression.java │ │ │ │ ├── FilterInvocationExpression.java │ │ │ │ ├── FunctionOrMacroInvocationExpression.java │ │ │ │ ├── GetAttributeExpression.java │ │ │ │ ├── GreaterThanEqualsExpression.java │ │ │ │ ├── GreaterThanExpression.java │ │ │ │ ├── LessThanEqualsExpression.java │ │ │ │ ├── LessThanExpression.java │ │ │ │ ├── LiteralBigDecimalExpression.java │ │ │ │ ├── LiteralBooleanExpression.java │ │ │ │ ├── LiteralDoubleExpression.java │ │ │ │ ├── LiteralIntegerExpression.java │ │ │ │ ├── LiteralLongExpression.java │ │ │ │ ├── LiteralNullExpression.java │ │ │ │ ├── LiteralStringExpression.java │ │ │ │ ├── MapExpression.java │ │ │ │ ├── ModulusExpression.java │ │ │ │ ├── MultiplyExpression.java │ │ │ │ ├── NegativeTestExpression.java │ │ │ │ ├── NotEqualsExpression.java │ │ │ │ ├── OrExpression.java │ │ │ │ ├── ParentFunctionExpression.java │ │ │ │ ├── PositiveTestExpression.java │ │ │ │ ├── RangeExpression.java │ │ │ │ ├── RenderableNodeExpression.java │ │ │ │ ├── SubtractExpression.java │ │ │ │ ├── TernaryExpression.java │ │ │ │ ├── UnaryExpression.java │ │ │ │ ├── UnaryMinusExpression.java │ │ │ │ ├── UnaryNotExpression.java │ │ │ │ └── UnaryPlusExpression.java │ │ │ └── fornode/ │ │ │ ├── LazyLength.java │ │ │ └── LazyRevIndex.java │ │ ├── operator/ │ │ │ ├── Associativity.java │ │ │ ├── BinaryOperator.java │ │ │ ├── BinaryOperatorImpl.java │ │ │ ├── BinaryOperatorType.java │ │ │ ├── UnaryOperator.java │ │ │ └── UnaryOperatorImpl.java │ │ ├── parser/ │ │ │ ├── ExpressionParser.java │ │ │ ├── Parser.java │ │ │ ├── ParserImpl.java │ │ │ ├── ParserOptions.java │ │ │ └── StoppingCondition.java │ │ ├── template/ │ │ │ ├── Block.java │ │ │ ├── EvaluationContext.java │ │ │ ├── EvaluationContextImpl.java │ │ │ ├── EvaluationOptions.java │ │ │ ├── GlobalContext.java │ │ │ ├── Hierarchy.java │ │ │ ├── Macro.java │ │ │ ├── MacroAttributeProvider.java │ │ │ ├── PebbleTemplate.java │ │ │ ├── PebbleTemplateImpl.java │ │ │ ├── RenderedSizeContext.java │ │ │ ├── Scope.java │ │ │ └── ScopeChain.java │ │ ├── tokenParser/ │ │ │ ├── AutoEscapeTokenParser.java │ │ │ ├── BlockTokenParser.java │ │ │ ├── CacheTokenParser.java │ │ │ ├── EmbedTokenParser.java │ │ │ ├── ExtendsTokenParser.java │ │ │ ├── FilterTokenParser.java │ │ │ ├── FlushTokenParser.java │ │ │ ├── ForTokenParser.java │ │ │ ├── FromTokenParser.java │ │ │ ├── IfTokenParser.java │ │ │ ├── ImportTokenParser.java │ │ │ ├── IncludeTokenParser.java │ │ │ ├── MacroTokenParser.java │ │ │ ├── ParallelTokenParser.java │ │ │ ├── SetTokenParser.java │ │ │ ├── TokenParser.java │ │ │ └── VerbatimTokenParser.java │ │ └── utils/ │ │ ├── Callbacks.java │ │ ├── FutureWriter.java │ │ ├── LimitedSizeWriter.java │ │ ├── OperatorUtils.java │ │ ├── Pair.java │ │ ├── PathUtils.java │ │ ├── StringLengthComparator.java │ │ ├── StringUtils.java │ │ └── TypeUtils.java │ └── test/ │ ├── java/ │ │ └── io/ │ │ └── pebbletemplates/ │ │ └── pebble/ │ │ ├── ArgumentsNodeTest.java │ │ ├── ArraySyntaxTest.java │ │ ├── AttributeSubscriptSyntaxTest.java │ │ ├── CacheTest.java │ │ ├── CompilerTest.java │ │ ├── ConcurrencyTest.java │ │ ├── ContextTest.java │ │ ├── CoreFiltersTest.java │ │ ├── CoreFunctionsTest.java │ │ ├── CoreTagsTest.java │ │ ├── CoreTestsTest.java │ │ ├── DynamicNamedArgsTest.java │ │ ├── EmbedCachingTagTest.java │ │ ├── EmbedTagTest.java │ │ ├── EnumEqualsTest.java │ │ ├── ErrorReportingTest.java │ │ ├── EscaperExtensionTest.java │ │ ├── ExtendingPebbleTest.java │ │ ├── FileLoaderTest.java │ │ ├── ForTest.java │ │ ├── GetAttributeTest.java │ │ ├── I18nExtensionTest.java │ │ ├── IncludeWithParameterTest.java │ │ ├── InheritanceTest.java │ │ ├── LoaderTest.java │ │ ├── LogicTest.java │ │ ├── MacroTest.java │ │ ├── MapSyntaxTest.java │ │ ├── MaxRenderedSizeTest.java │ │ ├── MethodAccessTemplateTest.java │ │ ├── NewlineTrimmingTest.java │ │ ├── Nl2brFilterTest.java │ │ ├── OverloadedMethodTest.java │ │ ├── OverrideCoreExtensionTest.java │ │ ├── ParsingOdditiesTest.java │ │ ├── RenderSingleBlockTest.java │ │ ├── RenderWithoutEndBlockTest.java │ │ ├── ScopeChainTest.java │ │ ├── ScopeTest.java │ │ ├── SplitFilterTest.java │ │ ├── StrictModeTest.java │ │ ├── StringInterpolationTest.java │ │ ├── TernaryExpressionTest.java │ │ ├── TestParallelParsing.java │ │ ├── TestRelativePath.java │ │ ├── WhitespaceControlTest.java │ │ ├── WritingTest.java │ │ ├── attributes/ │ │ │ └── methodaccess/ │ │ │ ├── BlacklistMethodAccessValidatorTest.java │ │ │ ├── Foo.java │ │ │ ├── InstanceProvider.java │ │ │ ├── MethodsProvider.java │ │ │ └── NoOpMethodAccessValidatorTest.java │ │ ├── extension/ │ │ │ ├── ArrayToStringFilter.java │ │ │ ├── ExtensionCustomizerTest.java │ │ │ ├── InvocationCountingFunction.java │ │ │ ├── ListToStringFilter.java │ │ │ ├── MapToStringFilter.java │ │ │ ├── TestingExtension.java │ │ │ ├── core/ │ │ │ │ └── FormatFilterTest.java │ │ │ └── escaper/ │ │ │ └── RawFilterTest.java │ │ ├── lexer/ │ │ │ ├── IdentifierTest.java │ │ │ ├── LexerImplTest.java │ │ │ └── SyntaxTest.java │ │ ├── macro/ │ │ │ ├── MacroGlobalVariablesTest.java │ │ │ ├── PebbleExtension.java │ │ │ ├── TestFilter.java │ │ │ └── TestMacroCalls.java │ │ ├── node/ │ │ │ ├── ForNodeTest.java │ │ │ ├── IfNodeTest.java │ │ │ └── expression/ │ │ │ ├── AndExpressionTest.java │ │ │ ├── ExpressionTest.java │ │ │ ├── OrExpressionTest.java │ │ │ ├── StringExpressionParserTest.java │ │ │ └── UnaryNotExpressionTest.java │ │ ├── template/ │ │ │ └── tests/ │ │ │ ├── PebbleTestContext.java │ │ │ ├── WhiteSpaceControlWithNewLineTrimmingTests.java │ │ │ └── input/ │ │ │ ├── PebbleTestItem.java │ │ │ └── PebbleTestItemType.java │ │ └── utils/ │ │ ├── LimitedSizeWriterTest.java │ │ ├── OperatorUtilsToNumberTest.java │ │ └── PathUtilsTest.java │ └── resources/ │ ├── logback-test.xml │ ├── security/ │ │ ├── allowedMethods.properties │ │ └── unsafeMethods.properties │ ├── template-tests/ │ │ ├── DoubleNestedIfStatement.peb │ │ ├── DoubleNestedIfStatement.txt │ │ ├── ForLoopWithNestedIfStatementAndMacro.peb │ │ ├── ForLoopWithNestedIfStatementAndMacro.txt │ │ ├── NestedIfStatementWithOneElseIfStatements.peb │ │ ├── NestedIfStatementWithOneElseIfStatements.txt │ │ ├── NestedIfStatementWithThreeElseIfStatements.peb │ │ ├── NestedIfStatementWithThreeElseIfStatements.txt │ │ ├── NestedIfStatementWithTwoElseIfStatements.peb │ │ └── NestedIfStatementWithTwoElseIfStatements.txt │ ├── templates/ │ │ ├── cache/ │ │ │ ├── cache1/ │ │ │ │ └── template.cache.peb │ │ │ ├── cache2/ │ │ │ │ └── template.cache.peb │ │ │ ├── template.cacheChild.peb │ │ │ └── template.cacheParent.peb │ │ ├── embed/ │ │ │ ├── cache/ │ │ │ │ ├── template.base.peb │ │ │ │ ├── template1.peb │ │ │ │ └── template2.peb │ │ │ ├── notes.md │ │ │ ├── test0/ │ │ │ │ ├── template.base.peb │ │ │ │ ├── template.peb │ │ │ │ ├── template.result.twig.txt │ │ │ │ └── template.result.txt │ │ │ ├── test1/ │ │ │ │ ├── template.base.peb │ │ │ │ ├── template.peb │ │ │ │ ├── template.result.twig.txt │ │ │ │ └── template.result.txt │ │ │ ├── test10/ │ │ │ │ ├── template.base.1.peb │ │ │ │ ├── template.base.2.peb │ │ │ │ ├── template.base.3.peb │ │ │ │ ├── template.peb │ │ │ │ ├── template.result.twig.txt │ │ │ │ └── template.result.txt │ │ │ ├── test11/ │ │ │ │ ├── template.base.1.peb │ │ │ │ ├── template.base.2.peb │ │ │ │ ├── template.base.3.peb │ │ │ │ ├── template.peb │ │ │ │ ├── template.result.twig.txt │ │ │ │ └── template.result.txt │ │ │ ├── test12/ │ │ │ │ ├── template.base.1.peb │ │ │ │ ├── template.base.2.peb │ │ │ │ ├── template.base.3.peb │ │ │ │ ├── template.peb │ │ │ │ ├── template.result.twig.txt │ │ │ │ └── template.result.txt │ │ │ ├── test13/ │ │ │ │ ├── template.embedbase.1.peb │ │ │ │ ├── template.embedbase.2.peb │ │ │ │ ├── template.embedbase.3.peb │ │ │ │ ├── template.extendsbase.1.peb │ │ │ │ ├── template.extendsbase.2.peb │ │ │ │ ├── template.extendsbase.3.peb │ │ │ │ ├── template.peb │ │ │ │ ├── template.result.twig.txt │ │ │ │ └── template.result.txt │ │ │ ├── test14/ │ │ │ │ ├── template.embedbase.1.peb │ │ │ │ ├── template.extendsbase.1.peb │ │ │ │ ├── template.extendsbase.2.peb │ │ │ │ ├── template.extendsbase.3.peb │ │ │ │ ├── template.peb │ │ │ │ ├── template.result.twig.txt │ │ │ │ └── template.result.txt │ │ │ ├── test15/ │ │ │ │ ├── template.base.peb │ │ │ │ ├── template.error.txt │ │ │ │ └── template.peb │ │ │ ├── test16/ │ │ │ │ ├── template.base.peb │ │ │ │ ├── template.error.txt │ │ │ │ └── template.peb │ │ │ ├── test17/ │ │ │ │ ├── template.base.peb │ │ │ │ ├── template.error.txt │ │ │ │ └── template.peb │ │ │ ├── test18/ │ │ │ │ ├── template.base.peb │ │ │ │ ├── template.error.txt │ │ │ │ └── template.peb │ │ │ ├── test2/ │ │ │ │ ├── template.base.peb │ │ │ │ ├── template.peb │ │ │ │ └── template.result.txt │ │ │ ├── test3/ │ │ │ │ ├── template.base.peb │ │ │ │ ├── template.peb │ │ │ │ └── template.result.txt │ │ │ ├── test4/ │ │ │ │ ├── template.base.peb │ │ │ │ ├── template.peb │ │ │ │ ├── template.result.twig.txt │ │ │ │ └── template.result.txt │ │ │ ├── test5/ │ │ │ │ ├── template.base.peb │ │ │ │ ├── template.peb │ │ │ │ ├── template.result.twig.txt │ │ │ │ └── template.result.txt │ │ │ ├── test6/ │ │ │ │ ├── template.base.peb │ │ │ │ ├── template.peb │ │ │ │ ├── template.result.twig.txt │ │ │ │ └── template.result.txt │ │ │ ├── test7/ │ │ │ │ ├── template.base.1.peb │ │ │ │ ├── template.base.2.peb │ │ │ │ ├── template.base.3.peb │ │ │ │ ├── template.peb │ │ │ │ ├── template.result.twig.txt │ │ │ │ └── template.result.txt │ │ │ ├── test8/ │ │ │ │ ├── template.base.1.peb │ │ │ │ ├── template.base.2.peb │ │ │ │ ├── template.base.3.peb │ │ │ │ ├── template.peb │ │ │ │ ├── template.result.twig.txt │ │ │ │ └── template.result.txt │ │ │ └── test9/ │ │ │ ├── template.base.1.peb │ │ │ ├── template.base.2.peb │ │ │ ├── template.base.3.peb │ │ │ ├── template.peb │ │ │ ├── template.result.twig.txt │ │ │ └── template.result.txt │ │ ├── function/ │ │ │ ├── template.block.peb │ │ │ ├── template.child.peb │ │ │ ├── template.childThenParentThenMacro.peb │ │ │ ├── template.childWithContext.peb │ │ │ ├── template.parent.peb │ │ │ ├── template.parentAccessContext.peb │ │ │ ├── template.parentThenMacro.peb │ │ │ └── template.subchild.peb │ │ ├── loader/ │ │ │ └── template.loaderTest.peb │ │ ├── macros/ │ │ │ ├── from.peb │ │ │ ├── import.as.peb │ │ │ ├── include.peb │ │ │ ├── index.peb │ │ │ ├── invalid.from.peb │ │ │ ├── invalid.from.sameAlias.peb │ │ │ ├── invalid.from.unknownMacro.peb │ │ │ ├── invalid.import.as.sameAlias.peb │ │ │ ├── invalid.macro.peb │ │ │ ├── macro.peb │ │ │ ├── setVariableBase.peb │ │ │ └── setVariableMacro.peb │ │ ├── relativepath/ │ │ │ ├── subdirectory1/ │ │ │ │ ├── template.backwardslashes.peb │ │ │ │ └── template.forwardslashes.peb │ │ │ ├── subdirectory2/ │ │ │ │ └── template.relativeinclude2.peb │ │ │ ├── template.relativeextends1.peb │ │ │ ├── template.relativeextends2.peb │ │ │ ├── template.relativeimport1.peb │ │ │ ├── template.relativeimport2.peb │ │ │ ├── template.relativeinclude1.peb │ │ │ └── template.relativeinclude2.peb │ │ ├── single-block/ │ │ │ ├── template.renderextendedblock1.peb │ │ │ └── template.renderextendedblock2.peb │ │ ├── template.autoescapeInclude1.peb │ │ ├── template.autoescapeInclude2.peb │ │ ├── template.autoescapeParent1.peb │ │ ├── template.autoescapeParent2.peb │ │ ├── template.child.peb │ │ ├── template.concurrent1.peb │ │ ├── template.concurrent2.peb │ │ ├── template.dynamicChild.peb │ │ ├── template.dynamicParent1.peb │ │ ├── template.dynamicParent2.peb │ │ ├── template.errorReporting.peb │ │ ├── template.escapeCharactersInText.peb │ │ ├── template.general.peb │ │ ├── template.grandfather.peb │ │ ├── template.import.dynamic.macro_ajax.peb │ │ ├── template.import.dynamic.macro_classic.peb │ │ ├── template.import.dynamic.peb │ │ ├── template.importWithinBlock.peb │ │ ├── template.include.dynamic.adminFooter.peb │ │ ├── template.include.dynamic.defaultFooter.peb │ │ ├── template.include.dynamic.peb │ │ ├── template.include1.peb │ │ ├── template.include2.peb │ │ ├── template.includeInheritance1.peb │ │ ├── template.includeInheritance2.peb │ │ ├── template.includeInheritance3.peb │ │ ├── template.includeOverrideBlock.peb │ │ ├── template.includeOverrideBlock2.peb │ │ ├── template.includeOverrideVariable1.peb │ │ ├── template.includeOverrideVariable2.peb │ │ ├── template.includePropagatesContext.peb │ │ ├── template.includePropagatesContext2.peb │ │ ├── template.includeWithParameter1.peb │ │ ├── template.includeWithParameter2.peb │ │ ├── template.includeWithParameterNotIsolated1.peb │ │ ├── template.includeWithParameterNotIsolated2.peb │ │ ├── template.includeWithParameterObject1.peb │ │ ├── template.includeWithParameterObject2.peb │ │ ├── template.includeWithinBlock.peb │ │ ├── template.loaderTest.peb │ │ ├── template.loaderTest.peb.suffix │ │ ├── template.macro.child.peb │ │ ├── template.macro.exploding.peb │ │ ├── template.macro.parent.peb │ │ ├── template.macro1.peb │ │ ├── template.macro2.peb │ │ ├── template.macro3.peb │ │ ├── template.macroDouble.peb │ │ ├── template.parallelInclude1.peb │ │ ├── template.parallelInclude2.peb │ │ ├── template.parallelParsing1.peb │ │ ├── template.parallelParsing2.peb │ │ ├── template.parallelWithImport.peb │ │ ├── template.parallelWithImport2.peb │ │ ├── template.parent.peb │ │ ├── template.parent2.peb │ │ ├── template.set.child.peb │ │ ├── template.set.parent.peb │ │ ├── template.skipGenerationBlock1.peb │ │ ├── template.skipGenerationBlock2.peb │ │ ├── template.skipGenerationBlock3.peb │ │ ├── template.skipGenerationMacro1.peb │ │ ├── template.skipGenerationMacro2.peb │ │ ├── template.skipGenerationMacro3.peb │ │ ├── template.strictModeComplexExpression.peb │ │ └── template.strictModeSimpleExpression.peb │ ├── testMessages.properties │ └── testMessages_es_US.properties ├── pebble-spring/ │ ├── pebble-legacy-spring-boot-starter/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── io/ │ │ │ │ └── pebbletemplates/ │ │ │ │ └── boot/ │ │ │ │ └── autoconfigure/ │ │ │ │ ├── AbstractPebbleConfiguration.java │ │ │ │ ├── PebbleAutoConfiguration.java │ │ │ │ ├── PebbleProperties.java │ │ │ │ ├── PebbleReactiveWebConfiguration.java │ │ │ │ ├── PebbleServletWebConfiguration.java │ │ │ │ ├── PebbleTemplateAvailabilityProvider.java │ │ │ │ └── package-info.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ ├── spring/ │ │ │ │ ├── aot.factories │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ └── spring.factories │ │ └── test/ │ │ ├── java/ │ │ │ └── io/ │ │ │ └── pebbletemplates/ │ │ │ └── boot/ │ │ │ ├── AppConfig.java │ │ │ ├── Application.java │ │ │ ├── Controllers.java │ │ │ ├── Foo.java │ │ │ └── autoconfigure/ │ │ │ ├── NonWebAppTests.java │ │ │ ├── PebbleAutoConfigurationTest.java │ │ │ ├── ReactiveAppTest.java │ │ │ └── ServletAppTest.java │ │ └── resources/ │ │ ├── messages.properties │ │ ├── messages_es.properties │ │ └── templates/ │ │ ├── beans.peb │ │ ├── contextPath.peb │ │ ├── extensions.peb │ │ ├── hello.peb │ │ ├── index.peb │ │ ├── native-image.peb │ │ ├── responseObject.peb │ │ └── session.peb │ ├── pebble-spring-boot-starter/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── io/ │ │ │ │ └── pebbletemplates/ │ │ │ │ └── boot/ │ │ │ │ └── autoconfigure/ │ │ │ │ ├── AbstractPebbleConfiguration.java │ │ │ │ ├── PebbleAutoConfiguration.java │ │ │ │ ├── PebbleProperties.java │ │ │ │ ├── PebbleReactiveWebConfiguration.java │ │ │ │ ├── PebbleServletWebConfiguration.java │ │ │ │ ├── PebbleTemplateAvailabilityProvider.java │ │ │ │ └── package-info.java │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ ├── spring/ │ │ │ │ ├── aot.factories │ │ │ │ ├── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ │ ├── org.springframework.boot.webflux.test.autoconfigure.AutoConfigureWebFlux.imports │ │ │ │ └── org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureWebMvc.imports │ │ │ └── spring.factories │ │ └── test/ │ │ ├── java/ │ │ │ └── io/ │ │ │ └── pebbletemplates/ │ │ │ └── boot/ │ │ │ ├── AppConfig.java │ │ │ ├── Application.java │ │ │ ├── Controllers.java │ │ │ ├── Foo.java │ │ │ └── autoconfigure/ │ │ │ ├── NonWebAppTests.java │ │ │ ├── PebbleAutoConfigurationTest.java │ │ │ ├── ReactiveAppTest.java │ │ │ └── ServletAppTest.java │ │ └── resources/ │ │ ├── messages.properties │ │ ├── messages_es.properties │ │ └── templates/ │ │ ├── beans.peb │ │ ├── contextPath.peb │ │ ├── extensions.peb │ │ ├── hello.peb │ │ ├── index.peb │ │ ├── native-image.peb │ │ ├── responseObject.peb │ │ └── session.peb │ ├── pebble-spring6/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── io/ │ │ │ └── pebbletemplates/ │ │ │ └── spring/ │ │ │ ├── context/ │ │ │ │ └── Beans.java │ │ │ ├── extension/ │ │ │ │ ├── SpringExtension.java │ │ │ │ └── function/ │ │ │ │ ├── HrefFunction.java │ │ │ │ ├── MessageSourceFunction.java │ │ │ │ └── bindingresult/ │ │ │ │ ├── BaseBindingResultFunction.java │ │ │ │ ├── GetAllErrorsFunction.java │ │ │ │ ├── GetFieldErrorsFunction.java │ │ │ │ ├── GetGlobalErrorsFunction.java │ │ │ │ ├── HasErrorsFunction.java │ │ │ │ ├── HasFieldErrorsFunction.java │ │ │ │ └── HasGlobalErrorsFunction.java │ │ │ ├── reactive/ │ │ │ │ ├── PebbleReactiveView.java │ │ │ │ └── PebbleReactiveViewResolver.java │ │ │ └── servlet/ │ │ │ ├── PebbleView.java │ │ │ └── PebbleViewResolver.java │ │ └── test/ │ │ ├── java/ │ │ │ └── io/ │ │ │ └── pebbletemplates/ │ │ │ └── spring/ │ │ │ ├── PebbleViewResolverTest.java │ │ │ ├── bean/ │ │ │ │ └── SomeBean.java │ │ │ └── config/ │ │ │ └── MVCConfig.java │ │ └── resources/ │ │ └── io/ │ │ └── pebbletemplates/ │ │ └── spring/ │ │ ├── expectedResponse/ │ │ │ ├── beansTest.html │ │ │ ├── bindingResultTest.html │ │ │ ├── bindingResultWithMacroTest.html │ │ │ ├── hrefFunctionTest.html │ │ │ ├── messageEnTest.html │ │ │ ├── messageFrTest.html │ │ │ ├── requestTest.html │ │ │ ├── responseTest.html │ │ │ └── sessionTest.html │ │ ├── messages_en.properties │ │ ├── messages_fr.properties │ │ └── template/ │ │ ├── beansTest.html │ │ ├── bindingResultTest.html │ │ ├── bindingResultWithMacroTest.html │ │ ├── hrefFunctionTest.html │ │ ├── messageEnTest.html │ │ ├── messageFrTest.html │ │ ├── requestTest.html │ │ ├── responseTest.html │ │ └── sessionTest.html │ ├── pebble-spring7/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── io/ │ │ │ └── pebbletemplates/ │ │ │ └── spring/ │ │ │ ├── context/ │ │ │ │ └── Beans.java │ │ │ ├── extension/ │ │ │ │ ├── SpringExtension.java │ │ │ │ └── function/ │ │ │ │ ├── HrefFunction.java │ │ │ │ ├── MessageSourceFunction.java │ │ │ │ └── bindingresult/ │ │ │ │ ├── BaseBindingResultFunction.java │ │ │ │ ├── GetAllErrorsFunction.java │ │ │ │ ├── GetFieldErrorsFunction.java │ │ │ │ ├── GetGlobalErrorsFunction.java │ │ │ │ ├── HasErrorsFunction.java │ │ │ │ ├── HasFieldErrorsFunction.java │ │ │ │ └── HasGlobalErrorsFunction.java │ │ │ ├── reactive/ │ │ │ │ ├── PebbleReactiveView.java │ │ │ │ └── PebbleReactiveViewResolver.java │ │ │ └── servlet/ │ │ │ ├── PebbleView.java │ │ │ └── PebbleViewResolver.java │ │ └── test/ │ │ ├── java/ │ │ │ └── io/ │ │ │ └── pebbletemplates/ │ │ │ └── spring/ │ │ │ ├── PebbleViewResolverTest.java │ │ │ ├── bean/ │ │ │ │ └── SomeBean.java │ │ │ └── config/ │ │ │ └── MVCConfig.java │ │ └── resources/ │ │ └── io/ │ │ └── pebbletemplates/ │ │ └── spring/ │ │ ├── expectedResponse/ │ │ │ ├── beansTest.html │ │ │ ├── bindingResultTest.html │ │ │ ├── bindingResultWithMacroTest.html │ │ │ ├── hrefFunctionTest.html │ │ │ ├── messageEnTest.html │ │ │ ├── messageFrTest.html │ │ │ ├── requestTest.html │ │ │ ├── responseTest.html │ │ │ └── sessionTest.html │ │ ├── messages_en.properties │ │ ├── messages_fr.properties │ │ └── template/ │ │ ├── beansTest.html │ │ ├── bindingResultTest.html │ │ ├── bindingResultWithMacroTest.html │ │ ├── hrefFunctionTest.html │ │ ├── messageEnTest.html │ │ ├── messageFrTest.html │ │ ├── requestTest.html │ │ ├── responseTest.html │ │ └── sessionTest.html │ └── pom.xml └── pom.xml