Twig Metrics
2543 ms
Render time
131
Template calls
166
Block calls
0
Macro calls
Render time includes sub-requests rendering time (if any).
Rendered Templates
Rendering Call Graph
main 2543.21ms/100% └ website/ouvrage/index.html.twig 2518.05ms/99% │ └ base_website.html.twig 2517.65ms/99% │ └ base.html.twig 2517.28ms/99% │ └ base.html.twig::block(meta) │ │ └ @SuluWebsite/Extension/seo.html.twig │ │ └ @SuluWebsite/Extension/seo.html.twig::block(title) │ │ └ @SuluWebsite/Extension/seo.html.twig::block(description) │ │ └ @SuluWebsite/Extension/seo.html.twig::block(keywords) │ │ └ @SuluWebsite/Extension/seo.html.twig::block(robots) │ │ └ @SuluWebsite/Extension/seo.html.twig::block(urls) │ │ └ @SuluWebsite/Extension/seo.html.twig::block(canonical) │ └ base.html.twig::block(style) 1.17ms/0% │ └ base_website.html.twig::block(contentBase) 2475.68ms/97% │ │ └ base_website.html.twig::block(header) 2068.79ms/81% │ │ │ └ website/global/header.html.twig 1837.72ms/72% │ │ │ └ website/global/main-menu/nav.html.twig 1409.52ms/55% │ │ │ │ └ website/global/main-menu/menu_thematique_geographique.html.twig 514.39ms/20% │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 290.09ms/11% │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 50.47ms/2% │ │ │ │ │ │ └ website/ouvrage/partials/_result_list.html.twig 27.73ms/1% │ │ │ │ │ │ └ website/ouvrage/partials/_prix_reconprense_tag.html.twig │ │ │ │ │ │ └ website/ouvrage/partials/_image_ouvrage.html.twig 18.13ms/1% │ │ │ │ │ │ └ website/ouvrage/partials/_prix_reconprense_tag.html.twig │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 30.83ms/1% │ │ │ │ │ │ └ website/ouvrage/partials/_result_list.html.twig 20.92ms/1% │ │ │ │ │ │ └ website/ouvrage/partials/_prix_reconprense_tag.html.twig 17.48ms/1% │ │ │ │ │ │ └ website/ouvrage/partials/_image_ouvrage.html.twig 2.65ms/0% │ │ │ │ │ │ └ website/ouvrage/partials/_prix_reconprense_tag.html.twig │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 4.56ms/0% │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 35.35ms/1% │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 2.25ms/0% │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 36.70ms/1% │ │ │ │ │ │ └ website/ouvrage/partials/_result_list.html.twig 12.85ms/1% │ │ │ │ │ │ └ website/ouvrage/partials/_prix_reconprense_tag.html.twig 2.50ms/0% │ │ │ │ │ │ └ website/ouvrage/partials/_image_ouvrage.html.twig 9.43ms/0% │ │ │ │ │ │ └ website/ouvrage/partials/_prix_reconprense_tag.html.twig │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 19.05ms/1% │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 10.12ms/0% │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 22.23ms/1% │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig │ │ │ │ └ website/global/main-menu/menu_thematique_geographique.html.twig 50.81ms/2% │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 7.54ms/0% │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 17.34ms/1% │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 3.53ms/0% │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 5.37ms/0% │ │ │ │ │ │ └ website/ouvrage/partials/_result_list.html.twig 5.32ms/0% │ │ │ │ │ │ └ website/ouvrage/partials/_prix_reconprense_tag.html.twig 2.70ms/0% │ │ │ │ │ │ └ website/ouvrage/partials/_image_ouvrage.html.twig 1.97ms/0% │ │ │ │ │ │ └ website/ouvrage/partials/_prix_reconprense_tag.html.twig │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 14.07ms/1% │ │ │ │ │ └ website/ouvrage/partials/_result_list.html.twig 13.96ms/1% │ │ │ │ │ └ website/ouvrage/partials/_prix_reconprense_tag.html.twig │ │ │ │ │ └ website/ouvrage/partials/_image_ouvrage.html.twig 13.43ms/1% │ │ │ │ │ └ website/ouvrage/partials/_prix_reconprense_tag.html.twig │ │ │ │ └ website/global/main-menu/menu_thematique_geographique.html.twig 120.20ms/5% │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 7.02ms/0% │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 13.30ms/1% │ │ │ │ │ │ └ website/ouvrage/partials/_result_list.html.twig 13.26ms/1% │ │ │ │ │ │ └ website/ouvrage/partials/_prix_reconprense_tag.html.twig 10.53ms/0% │ │ │ │ │ │ └ website/ouvrage/partials/_image_ouvrage.html.twig 2.11ms/0% │ │ │ │ │ │ └ website/ouvrage/partials/_prix_reconprense_tag.html.twig │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 15.49ms/1% │ │ │ │ │ │ └ website/ouvrage/partials/_result_list.html.twig 13.30ms/1% │ │ │ │ │ │ └ website/ouvrage/partials/_prix_reconprense_tag.html.twig 10.69ms/0% │ │ │ │ │ │ └ website/ouvrage/partials/_image_ouvrage.html.twig 1.93ms/0% │ │ │ │ │ │ └ website/ouvrage/partials/_prix_reconprense_tag.html.twig │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 19.37ms/1% │ │ │ │ │ │ └ website/ouvrage/partials/_result_list.html.twig 11.36ms/0% │ │ │ │ │ │ └ website/ouvrage/partials/_prix_reconprense_tag.html.twig 5.58ms/0% │ │ │ │ │ │ └ website/ouvrage/partials/_image_ouvrage.html.twig 5.08ms/0% │ │ │ │ │ │ └ website/ouvrage/partials/_prix_reconprense_tag.html.twig │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 28.50ms/1% │ │ │ │ │ │ └ website/ouvrage/partials/_result_list.html.twig 12.96ms/1% │ │ │ │ │ │ └ website/ouvrage/partials/_prix_reconprense_tag.html.twig 1.69ms/0% │ │ │ │ │ │ └ website/ouvrage/partials/_image_ouvrage.html.twig 10.54ms/0% │ │ │ │ │ │ └ website/ouvrage/partials/_prix_reconprense_tag.html.twig │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 14.45ms/1% │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 16.02ms/1% │ │ │ │ └ website/global/main-menu/menu_thematique_geographique.html.twig 264.87ms/10% │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 57.08ms/2% │ │ │ │ │ │ └ website/ouvrage/partials/_result_list.html.twig 3.14ms/0% │ │ │ │ │ │ └ website/ouvrage/partials/_prix_reconprense_tag.html.twig │ │ │ │ │ │ └ website/ouvrage/partials/_image_ouvrage.html.twig 2.23ms/0% │ │ │ │ │ │ └ website/ouvrage/partials/_prix_reconprense_tag.html.twig │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 49.72ms/2% │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 12.57ms/0% │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 15.39ms/1% │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 23.69ms/1% │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 15.67ms/1% │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 15.91ms/1% │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 11.78ms/0% │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 36.69ms/1% │ │ │ │ │ │ └ website/ouvrage/partials/_result_list.html.twig 12.28ms/0% │ │ │ │ │ │ └ website/ouvrage/partials/_prix_reconprense_tag.html.twig 6.18ms/0% │ │ │ │ │ │ └ website/ouvrage/partials/_image_ouvrage.html.twig 5.34ms/0% │ │ │ │ │ │ └ website/ouvrage/partials/_prix_reconprense_tag.html.twig │ │ │ │ │ └ website/global/main-menu/menu_collections.html.twig 15.82ms/1% │ │ │ │ └ website/global/main-menu/menu_autres.html.twig │ │ │ │ └ website/global/main-menu/menu_autres.html.twig 129.64ms/5% │ │ │ │ └ website/global/main-menu/menu_autres.html.twig 22.64ms/1% │ │ │ └ website/ouvrage/partials/nouveaute/result_new_book.html.twig 67.18ms/3% │ │ │ │ └ website/ouvrage/partials/_item_book.html.twig 18.67ms/1% │ │ │ │ │ └ website/ouvrage/partials/_image_ouvrage.html.twig 7.40ms/0% │ │ │ │ └ website/ouvrage/partials/_item_book.html.twig 19.85ms/1% │ │ │ │ │ └ website/ouvrage/partials/_image_ouvrage.html.twig 8.53ms/0% │ │ │ │ └ website/ouvrage/partials/_item_book.html.twig 4.40ms/0% │ │ │ │ │ └ website/ouvrage/partials/_image_ouvrage.html.twig 1.53ms/0% │ │ │ │ └ website/ouvrage/partials/_item_book.html.twig 7.43ms/0% │ │ │ │ │ └ website/ouvrage/partials/_image_ouvrage.html.twig 4.18ms/0% │ │ │ │ └ website/ouvrage/partials/_item_book.html.twig 16.13ms/1% │ │ │ │ └ website/ouvrage/partials/_image_ouvrage.html.twig 5.10ms/0% │ │ │ └ website/agenda/partials/_proche_list.html.twig │ │ │ └ website/client/compte/_authentification.html.twig │ │ │ │ └ website/client/compte/_connexion.html.twig │ │ │ └ website/security/_forgot_password.html.twig 1.64ms/0% │ │ │ │ └ form_div_layout.html.twig::block(form_start) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ └ form_div_layout.html.twig::block(form_label) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(form_label_content) │ │ │ │ └ form_div_layout.html.twig::block(email_widget) │ │ │ │ │ └ form_div_layout.html.twig::block(form_widget_simple) │ │ │ │ │ └ form_div_layout.html.twig::block(widget_attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ └ form_div_layout.html.twig::block(submit_widget) │ │ │ │ │ └ form_div_layout.html.twig::block(button_widget) │ │ │ │ │ └ form_div_layout.html.twig::block(button_attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ └ form_div_layout.html.twig::block(form_end) │ │ │ │ └ form_div_layout.html.twig::block(form_rest) │ │ │ │ └ form_div_layout.html.twig::block(hidden_row) │ │ │ │ └ form_div_layout.html.twig::block(hidden_widget) │ │ │ │ └ form_div_layout.html.twig::block(form_widget_simple) │ │ │ │ └ form_div_layout.html.twig::block(widget_attributes) │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ └ website/security/_reset_password.html.twig │ │ │ └ website/client/compte/_inscription.html.twig 1.95ms/0% │ │ │ │ └ form_div_layout.html.twig::block(form_start) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ └ form_div_layout.html.twig::block(form_label) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(form_label_content) │ │ │ │ └ form_div_layout.html.twig::block(email_widget) │ │ │ │ │ └ form_div_layout.html.twig::block(form_widget_simple) │ │ │ │ │ └ form_div_layout.html.twig::block(widget_attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ └ form_div_layout.html.twig::block(form_label) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(form_label_content) │ │ │ │ └ form_div_layout.html.twig::block(password_widget) │ │ │ │ │ └ form_div_layout.html.twig::block(form_widget_simple) │ │ │ │ │ └ form_div_layout.html.twig::block(widget_attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ └ form_div_layout.html.twig::block(form_label) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(form_label_content) │ │ │ │ └ form_div_layout.html.twig::block(password_widget) │ │ │ │ │ └ form_div_layout.html.twig::block(form_widget_simple) │ │ │ │ │ └ form_div_layout.html.twig::block(widget_attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ └ form_div_layout.html.twig::block(form_label) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(form_label_content) │ │ │ │ └ form_div_layout.html.twig::block(radio_widget) │ │ │ │ │ └ form_div_layout.html.twig::block(widget_attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ └ form_div_layout.html.twig::block(form_label) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(form_label_content) │ │ │ │ └ form_div_layout.html.twig::block(radio_widget) │ │ │ │ │ └ form_div_layout.html.twig::block(widget_attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ └ form_div_layout.html.twig::block(form_label) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(form_label_content) │ │ │ │ └ form_div_layout.html.twig::block(form_label) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(form_label_content) │ │ │ │ └ form_div_layout.html.twig::block(form_widget) │ │ │ │ │ └ form_div_layout.html.twig::block(form_widget_simple) │ │ │ │ │ └ form_div_layout.html.twig::block(widget_attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ └ form_div_layout.html.twig::block(form_label) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(form_label_content) │ │ │ │ └ form_div_layout.html.twig::block(form_widget) │ │ │ │ │ └ form_div_layout.html.twig::block(form_widget_simple) │ │ │ │ │ └ form_div_layout.html.twig::block(widget_attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ └ form_div_layout.html.twig::block(form_label) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(form_label_content) │ │ │ │ └ form_div_layout.html.twig::block(tel_widget) │ │ │ │ │ └ form_div_layout.html.twig::block(form_widget_simple) │ │ │ │ │ └ form_div_layout.html.twig::block(widget_attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ └ form_div_layout.html.twig::block(choice_widget) │ │ │ │ │ └ form_div_layout.html.twig::block(choice_widget_collapsed) │ │ │ │ │ └ form_div_layout.html.twig::block(widget_attributes) │ │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(choice_widget_options) │ │ │ │ └ form_div_layout.html.twig::block(form_label) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(form_label_content) │ │ │ │ └ form_div_layout.html.twig::block(tel_widget) │ │ │ │ │ └ form_div_layout.html.twig::block(form_widget_simple) │ │ │ │ │ └ form_div_layout.html.twig::block(widget_attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ └ form_div_layout.html.twig::block(choice_widget) │ │ │ │ │ └ form_div_layout.html.twig::block(choice_widget_collapsed) │ │ │ │ │ └ form_div_layout.html.twig::block(widget_attributes) │ │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(choice_widget_options) │ │ │ │ └ @EWZRecaptcha/Form/ewz_recaptcha_widget.html.twig::block(ewz_recaptcha_widget) │ │ │ │ └ form_div_layout.html.twig::block(checkbox_widget) │ │ │ │ │ └ form_div_layout.html.twig::block(widget_attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ └ form_div_layout.html.twig::block(submit_widget) │ │ │ │ │ └ form_div_layout.html.twig::block(button_widget) │ │ │ │ │ └ form_div_layout.html.twig::block(button_attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ └ form_div_layout.html.twig::block(form_end) │ │ │ │ └ form_div_layout.html.twig::block(form_rest) │ │ │ │ └ form_div_layout.html.twig::block(hidden_row) │ │ │ │ └ form_div_layout.html.twig::block(hidden_widget) │ │ │ │ └ form_div_layout.html.twig::block(form_widget_simple) │ │ │ │ └ form_div_layout.html.twig::block(widget_attributes) │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ └ website/ouvrage/partials/cart/_add_to_cart_modal.html.twig │ │ │ └ website/client/compte/_delete_compte_modal.html.twig │ │ └ website/ouvrage/index.html.twig::block(content) 406.83ms/16% │ │ │ └ website/auteur/_header.html.twig 17.72ms/1% │ │ │ │ └ website/auteur/_contact_auteur.html.twig │ │ │ │ └ form_div_layout.html.twig::block(form_start) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ └ form_div_layout.html.twig::block(form_label) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(form_label_content) │ │ │ │ └ form_div_layout.html.twig::block(email_widget) │ │ │ │ │ └ form_div_layout.html.twig::block(form_widget_simple) │ │ │ │ │ └ form_div_layout.html.twig::block(widget_attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ └ form_div_layout.html.twig::block(form_label) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(form_label_content) │ │ │ │ └ form_div_layout.html.twig::block(form_widget) │ │ │ │ │ └ form_div_layout.html.twig::block(form_widget_simple) │ │ │ │ │ └ form_div_layout.html.twig::block(widget_attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ └ form_div_layout.html.twig::block(form_label) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(form_label_content) │ │ │ │ └ form_div_layout.html.twig::block(textarea_widget) │ │ │ │ │ └ form_div_layout.html.twig::block(widget_attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ └ @EWZRecaptcha/Form/ewz_recaptcha_widget.html.twig::block(ewz_recaptcha_widget) │ │ │ │ └ form_div_layout.html.twig::block(button_widget) │ │ │ │ │ └ form_div_layout.html.twig::block(button_attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ └ form_div_layout.html.twig::block(submit_widget) │ │ │ │ │ └ form_div_layout.html.twig::block(button_widget) │ │ │ │ │ └ form_div_layout.html.twig::block(button_attributes) │ │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ │ └ form_div_layout.html.twig::block(form_end) │ │ │ │ └ form_div_layout.html.twig::block(form_rest) │ │ │ │ └ form_div_layout.html.twig::block(hidden_row) │ │ │ │ └ form_div_layout.html.twig::block(hidden_widget) │ │ │ │ └ form_div_layout.html.twig::block(form_widget_simple) │ │ │ │ └ form_div_layout.html.twig::block(widget_attributes) │ │ │ │ └ form_div_layout.html.twig::block(attributes) │ │ │ └ website/ouvrage/partials/facette/menu_filters_level.html.twig │ │ │ └ website/ouvrage/partials/facette/menu_filters_level.html.twig │ │ │ └ website/ouvrage/partials/facette/menu_filters.html.twig │ │ │ └ website/ouvrage/partials/facette/menu_filters.html.twig │ │ │ └ website/ouvrage/partials/facette/menu_filters.html.twig │ │ │ └ website/ouvrage/partials/facette/menu_filters.html.twig │ │ │ └ website/actualite_media/item.html.twig │ │ │ └ website/actualite_media/item.html.twig │ │ │ └ website/global/footer.html.twig 320.15ms/13% │ │ │ └ website/actualite_media/partials/_last_list.html.twig 25.69ms/1% │ │ └ base_website.html.twig::block(footer) │ └ base_website.html.twig::block(googleTags) 38.20ms/2% │ │ └ website/global/ga-tags/index.html.twig │ └ base_website.html.twig::block(globalScript) 1.07ms/0% │ │ └ website/global/script.html.twig │ └ website/ouvrage/index.html.twig::block(javascripts) │ │ └ base.html.twig::block(javascripts) │ └ base_website.html.twig::block(notifpushScript) └ @WebProfiler/Profiler/toolbar_js.html.twig 25.16ms/1% └ @WebProfiler/Profiler/toolbar.html.twig 3.24ms/0% │ └ @WebProfiler/Profiler/cancel.html.twig::block(toolbar) 1.31ms/0% │ └ @WebProfiler/Profiler/toolbar_item.html.twig └ @WebProfiler/Profiler/toolbar.css.twig