/* Widget Name: Button Description: Create a custom button with flexible styling, icon support, and click tracking functionality. Author: SiteOrigin Author URI: https://siteorigin.com Documentation: https://siteorigin.com/widgets-bundle/button-widget-documentation/ Keywords: event, icon, link */ class SiteOrigin_Widget_Button_Widget extends SiteOrigin_Widget { public function __construct() { parent::__construct( 'sow-button', __( 'SiteOrigin Button', 'so-widgets-bundle' ), array( 'description' => __( 'Create a custom button with flexible styling, icon support, and click tracking functionality.', 'so-widgets-bundle' ), 'help' => 'https://siteorigin.com/widgets-bundle/button-widget-documentation/', ), array( ), false, plugin_dir_path( __FILE__ ) ); } public function get_settings_form() { return array( 'responsive_breakpoint' => array( 'type' => 'measurement', 'label' => __( 'Responsive Breakpoint', 'so-widgets-bundle' ), 'default' => '780px', 'description' => __( 'This setting controls when the Mobile Align setting will be used. The default value is 780px.', 'so-widgets-bundle' ), ), ); } public function initialize() { $this->register_frontend_styles( array( array( 'sow-button-base', plugin_dir_url( __FILE__ ) . 'css/style.css', array(), SOW_BUNDLE_VERSION, ), ) ); } public function get_widget_form() { return array( 'text' => array( 'type' => 'text', 'label' => __( 'Button Text', 'so-widgets-bundle' ), ), 'url' => array( 'type' => 'link', 'label' => __( 'Destination URL', 'so-widgets-bundle' ), 'allow_shortcode' => true, ), 'new_window' => array( 'type' => 'checkbox', 'default' => false, 'label' => __( 'Open in a new window', 'so-widgets-bundle' ), ), 'download' => array( 'type' => 'checkbox', 'default' => false, 'label' => __( 'Download', 'so-widgets-bundle' ), 'description' => __( 'The Destination URL will be downloaded when a user clicks on the button.', 'so-widgets-bundle' ), ), 'button_icon' => array( 'type' => 'section', 'label' => __( 'Icon', 'so-widgets-bundle' ), 'fields' => array( 'icon_selected' => array( 'type' => 'icon', 'label' => __( 'Icon', 'so-widgets-bundle' ), ), 'icon_color' => array( 'type' => 'color', 'label' => __( 'Icon Color', 'so-widgets-bundle' ), ), 'icon' => array( 'type' => 'media', 'label' => __( 'Image Icon', 'so-widgets-bundle' ), 'description' => __( 'Replaces the icon with your own image icon.', 'so-widgets-bundle' ), ), 'icon_placement' => array( 'type' => 'select', 'label' => __( 'Icon Placement', 'so-widgets-bundle' ), 'default' => 'left', 'options' => array( 'top' => __( 'Top', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'bottom' => __( 'Bottom', 'so-widgets-bundle' ), 'left' => __( 'Left', 'so-widgets-bundle' ), ), ), ), ), 'design' => array( 'type' => 'section', 'label' => __( 'Design and Layout', 'so-widgets-bundle' ), 'hide' => true, 'fields' => array( 'width' => array( 'type' => 'measurement', 'label' => __( 'Width', 'so-widgets-bundle' ), 'description' => __( 'Leave blank to let the button resize according to content.', 'so-widgets-bundle' ), ), 'align' => array( 'type' => 'select', 'label' => __( 'Align', 'so-widgets-bundle' ), 'default' => 'center', 'options' => array( 'left' => __( 'Left', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'center' => __( 'Center', 'so-widgets-bundle' ), 'justify' => __( 'Full Width', 'so-widgets-bundle' ), ), ), 'mobile_align' => array( 'type' => 'select', 'label' => __( 'Mobile Align', 'so-widgets-bundle' ), 'default' => 'center', 'options' => array( 'left' => __( 'Left', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'center' => __( 'Center', 'so-widgets-bundle' ), 'justify' => __( 'Full Width', 'so-widgets-bundle' ), ), ), 'theme' => array( 'type' => 'select', 'label' => __( 'Button Theme', 'so-widgets-bundle' ), 'default' => 'flat', 'options' => array( 'atom' => __( 'Atom', 'so-widgets-bundle' ), 'flat' => __( 'Flat', 'so-widgets-bundle' ), 'wire' => __( 'Wire', 'so-widgets-bundle' ), ), ), 'button_color' => array( 'type' => 'color', 'label' => __( 'Button Color', 'so-widgets-bundle' ), ), 'text_color' => array( 'type' => 'color', 'label' => __( 'Text Color', 'so-widgets-bundle' ), ), 'hover' => array( 'type' => 'checkbox', 'default' => true, 'label' => __( 'Use hover effects', 'so-widgets-bundle' ), 'state_emitter' => array( 'callback' => 'conditional', 'args' => array( 'hover[show]: val', 'hover[hide]: ! val', ), ), ), 'hover_background_color' => array( 'type' => 'color', 'label' => __( 'Hover Background Color', 'so-widgets-bundle' ), 'state_handler' => array( 'hover[show]' => array( 'show' ), 'hover[hide]' => array( 'hide' ), ), ), 'hover_text_color' => array( 'type' => 'color', 'label' => __( 'Hover Text Color', 'so-widgets-bundle' ), 'state_handler' => array( 'hover[show]' => array( 'show' ), 'hover[hide]' => array( 'hide' ), ), ), 'font' => array( 'type' => 'font', 'label' => __( 'Font', 'so-widgets-bundle' ), 'default' => 'default', ), 'font_size' => array( 'type' => 'measurement', 'label' => __( 'Font Size', 'so-widgets-bundle' ), 'default' => '1em', ), 'icon_size' => array( 'type' => 'measurement', 'label' => __( 'Icon Size', 'so-widgets-bundle' ), 'default' => '1.3em', ), 'padding' => array( 'type' => 'measurement', 'label' => __( 'Padding', 'so-widgets-bundle' ), 'default' => '1em', ), 'rounding' => array( 'type' => 'multi-measurement', 'label' => __( 'Rounding', 'so-widgets-bundle' ), 'default' => '0.25em 0.25em 0.25em 0.25em', 'measurements' => array( 'top' => array( 'label' => __( 'Top', 'so-widgets-bundle' ), ), 'right' => array( 'label' => __( 'Right', 'so-widgets-bundle' ), ), 'bottom' => array( 'label' => __( 'Bottom', 'so-widgets-bundle' ), ), 'left' => array( 'label' => __( 'Left', 'so-widgets-bundle' ), ), ), ), ), ), 'attributes' => array( 'type' => 'section', 'label' => __( 'Other Attributes and SEO', 'so-widgets-bundle' ), 'hide' => true, 'fields' => array( 'id' => array( 'type' => 'text', 'label' => __( 'Button ID', 'so-widgets-bundle' ), 'description' => __( 'An ID attribute allows you to target this button in JavaScript.', 'so-widgets-bundle' ), ), 'classes' => array( 'type' => 'text', 'label' => __( 'Button Classes', 'so-widgets-bundle' ), 'description' => __( 'Additional CSS classes added to the button link.', 'so-widgets-bundle' ), ), 'title' => array( 'type' => 'text', 'label' => __( 'Title Attribute', 'so-widgets-bundle' ), 'description' => __( 'Adds a title attribute to the button link.', 'so-widgets-bundle' ), ), 'on_click' => array( 'type' => 'text', 'label' => __( 'Onclick', 'so-widgets-bundle' ), 'description' => __( 'Run this JavaScript when the button is clicked. Ideal for tracking.', 'so-widgets-bundle' ), 'onclick' => true, ), 'rel' => array( 'type' => 'text', 'label' => __( 'Rel Attribute', 'so-widgets-bundle' ), 'description' => __( 'Adds a rel attribute to the button link.', 'so-widgets-bundle' ), ), ), ), ); } public function get_style_name( $instance ) { if ( empty( $instance['design']['theme'] ) ) { return 'atom'; } return $instance['design']['theme']; } /** * Get the variables for the Button Widget. * * @return array */ public function get_template_variables( $instance, $args ) { $button_attributes = array(); $attributes = $instance['attributes']; $classes = ! empty( $attributes['classes'] ) ? $attributes['classes'] : ''; if ( ! empty( $classes ) ) { $classes .= ' '; } $classes .= 'sowb-button ow-icon-placement-' . $instance['button_icon']['icon_placement']; if ( ! empty( $instance['design']['hover'] ) ) { $classes .= ' ow-button-hover'; } $button_attributes['class'] = implode( ' ', array_map( 'sanitize_html_class', explode( ' ', $classes ) ) ); if ( ! empty( $instance['new_window'] ) ) { $button_attributes['target'] = '_blank'; $button_attributes['rel'] = 'noopener noreferrer'; } if ( ! empty( $instance['download'] ) ) { $button_attributes['download'] = null; } if ( ! empty( $attributes['id'] ) ) { $button_attributes['id'] = $attributes['id']; } if ( ! empty( $attributes['title'] ) ) { $button_attributes['title'] = $attributes['title']; } if ( ! empty( $attributes['rel'] ) ) { if ( isset( $button_attributes['rel'] ) ) { $button_attributes['rel'] .= " $attributes[rel]"; } else { $button_attributes['rel'] = $attributes['rel']; } } $icon_image_url = ''; if ( ! empty( $instance['button_icon']['icon'] ) ) { $attachment = wp_get_attachment_image_src( $instance['button_icon']['icon'] ); if ( ! empty( $attachment ) ) { $icon_image_url = $attachment[0]; } } return array( 'button_attributes' => apply_filters( 'siteorigin_widgets_button_attributes', $button_attributes, $instance ), 'href' => ! empty( $instance['url'] ) ? $instance['url'] : '', 'on_click' => ! empty( $attributes['on_click'] ) ? $attributes['on_click'] : '', 'align' => $instance['design']['align'], 'icon_image_url' => $icon_image_url, 'icon' => $instance['button_icon']['icon_selected'], 'icon_color' => $instance['button_icon']['icon_color'], 'text' => $instance['text'], ); } /** * Get the variables that we'll be injecting into the less stylesheet. * * @return array */ public function get_less_variables( $instance ) { if ( empty( $instance ) || empty( $instance['design'] ) ) { return array(); } $text_color = isset( $instance['design']['text_color'] ) ? $instance['design']['text_color'] : ''; $button_color = isset( $instance['design']['button_color'] ) ? $instance['design']['button_color'] : ''; $less_vars = array( 'button_width' => isset( $instance['design']['width'] ) ? $instance['design']['width'] : '', 'button_color' => $button_color, 'text_color' => $text_color, 'icon_size' => ! empty( $instance['design']['icon_size'] ) ? $instance['design']['icon_size'] : '1.3em', 'hover_text_color' => ! empty( $instance['design']['hover_text_color'] ) ? $instance['design']['hover_text_color'] : $text_color, 'hover_background_color' => ! empty( $instance['design']['hover_background_color'] ) ? $instance['design']['hover_background_color'] : $button_color, 'font_size' => isset( $instance['design']['font_size'] ) ? $instance['design']['font_size'] : '', 'rounding' => isset( $instance['design']['rounding'] ) ? $instance['design']['rounding'] : '', 'padding' => isset( $instance['design']['padding'] ) ? $instance['design']['padding'] : '', 'has_text' => empty( $instance['text'] ) ? 'false' : 'true', 'responsive_breakpoint' => $this->get_global_settings( 'responsive_breakpoint' ), 'align' => ! empty( $instance['design']['align'] ) ? $instance['design']['align'] : 'center', 'mobile_align' => ! empty( $instance['design']['mobile_align'] ) ? $instance['design']['mobile_align'] : 'center', 'has_button_icon' => empty( $instance['button_icon']['icon_selected'] ) ? 'false' : 'true', ); if ( ! empty( $instance['design']['font'] ) ) { $font = siteorigin_widget_get_font( $instance['design']['font'] ); $less_vars['button_font'] = $font['family']; if ( ! empty( $font['weight'] ) ) { $less_vars['button_font_weight'] = $font['weight_raw']; $less_vars['button_font_style'] = $font['style']; } } return $less_vars; } /** * Make sure the instance is the most up to date version. * * @return mixed */ public function modify_instance( $instance ) { if ( empty( $instance ) ) { return array(); } $migrate_props = array( 'button_icon' => array( 'icon_selected', 'icon_color', 'icon', ), 'design' => array( 'align', 'theme', 'button_color', 'text_color', 'hover', 'hover_text_color', 'hover_background_color', 'font_size', 'rounding', 'padding', ), 'attributes' => array( 'id', ), ); foreach ( $migrate_props as $prop => $sub_props ) { if ( empty( $instance[ $prop ] ) ) { $instance[ $prop ] = array(); foreach ( $sub_props as $sub_prop ) { if ( isset( $instance[ $sub_prop ] ) ) { $instance[ $prop ][ $sub_prop ] = $instance[ $sub_prop ]; unset( $instance[ $sub_prop ] ); } } } } // Migrate onclick setting to prevent Wordfence flag. if ( ! empty( $instance['attributes'] ) && ! empty( $instance['attributes']['onclick'] ) ) { $instance['attributes']['on_click'] = $instance['attributes']['onclick']; } // If the mobile_align setting isn't set, set it to the same value as the align value. if ( ! empty( $instance['design'] ) && ! empty( $instance['design']['align'] ) && empty( $instance['design']['mobile_align'] ) ) { $instance['design']['mobile_align'] = $instance['design']['align']; } // Migrate predefined settings to more customizable settings. if ( ! empty( $instance['design']['font_size'] ) && is_numeric( $instance['design']['font_size'] ) ) { $instance['design']['font_size'] .= 'em'; } if ( ! empty( $instance['design']['padding'] ) && is_numeric( $instance['design']['padding'] ) ) { $instance['design']['padding'] .= 'em'; } if ( ! empty( $instance['design']['rounding'] ) && is_numeric( $instance['design']['rounding'] ) ) { $instance['design']['rounding'] = $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em'; } if ( empty( $instance['design']['icon_size'] ) ) { $instance['design']['icon_size'] = '1.3em'; } return $instance; } public function get_form_teaser() { if ( class_exists( 'SiteOrigin_Premium' ) ) { return false; } return array( sprintf( __( 'Add a beautiful tooltip to the Button Widget with %sSiteOrigin Premium%s', 'so-widgets-bundle' ), '', '' ), ); } } siteorigin_widget_register( 'sow-button', __FILE__, 'SiteOrigin_Widget_Button_Widget' );{"id":138696,"date":"2026-05-29T06:23:10","date_gmt":"2026-05-29T06:23:10","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=138696"},"modified":"2026-05-29T06:23:12","modified_gmt":"2026-05-29T06:23:12","slug":"wir-fordern-unter-anderem-sekundieren-diese-sicherlich-konzentriert-ebendiese-erfolgreichsten-bonusangebote-unter-anderem-bonuscodes-blank-einzahlung-zu-aufspuren","status":"publish","type":"post","link":"https:\/\/klecet.edu.in\/alumni\/wir-fordern-unter-anderem-sekundieren-diese-sicherlich-konzentriert-ebendiese-erfolgreichsten-bonusangebote-unter-anderem-bonuscodes-blank-einzahlung-zu-aufspuren\/","title":{"rendered":"Wir fordern unter anderem sekundieren Diese sicherlich konzentriert, ebendiese erfolgreichsten Bonusangebote unter anderem Bonuscodes blank Einzahlung zu aufspuren"},"content":{"rendered":"

Der Bonus frei Einzahlung ist und bleibt standardma?ig gar nicht das einzige Vorschlag fur Neukunden inoffizieller mitarbeiter Gangbar Spielsaal<\/h2>\n

Alles in allem musst Respons diese Gewinne jedoch immer wieder umsetzen, welches evtl. Deinen Fortune senken vermag<\/h2>\n

Er ist und bleibt untergeordnet je selbige internationales Mannschaft aufgebraucht via 40 Testern verantwortlich, diese jeglicher verfugbaren Spielsalon Pramie Aktionen beurteilen & untersuchen, damit Welche immer unsere Tabelle in dm neuesten https:\/\/mystakecasino-at.at\/<\/a> Klasse und uber angewandten besten Serviceleistungen versehen identifizieren. Joe sorgt zu diesem zweck, auf diese weise Sie inside Kasino Erleuchteter stets problemlos lohnende Bonusangebote identifizieren. Ja, within den Bonusangeboten gultigkeit besitzen bei der Menstruation Zeitfristen, Maximalgewinne, zugelassene Slots, Umsatzanforderungen ferner gegebenenfalls unser Eingabe des Bonus-Codes. Zweite geige sofern ein Pramie blo? Einzahlung in erster linie wie gleichfalls der bis uber beide ohren risikofreies Mitbringsel wirkt, wird verantwortungsvolles Musizieren hier genauso wichtig wie bei dem Einsatz bei eigenem Geld. Freund und feind hier aufgelisteten Plattformen gebot Boni abzuglich Einzahlung oder besitzen via gultige EU-Lizenzen, ebendiese den strengen Vorschriften vollziehen.<\/p>\n

Selbige Glucksspieler im stande sein diese Boni pluspunkt, um eine vielzahl verschiedener Spiele hinten auffuhren weiters hinten haben, perish jedem das mittel der wahl zusagen Freispiele abzuglich Einzahlungsbonus sind folgende gro?artige Anlass pro Spieler, der informatives Spielothek hinten auskundschaften, blank das eigenes Geld nach riskieren Freispiele exklusive Einzahlung solltest Du infolgedessen nutzen, um wie am schnurchen ebendiese Funktionalitat des Erreichbar Spielotheken zu kosten. Besonders bei dem Vermittlungsgebuhr blank Einzahlung musst Respons diese Gewinne aus Freispielen oft zumindest 50 Zeichen durchfuhren, im vorhinein Respons sie Dir auszahlen zulassen kannst. Fur nusse Freispiele exklusive Einzahlung geben Dir selbige Bedienoberflache nachdem testen damit herauszufinden ob unser Verbunden Spielothek deinen Benutzeranforderungen entspricht.<\/p>\n

Bei der Nachforschung nach unserem Versorger mit einem Bonusangebot exklusive Einzahlung wird dies elementar, einzig ein Spielsalon via einer GGL Berechtigung dahinter auswahlen. Coeur Ende ist und bleibt parece, Glucksspiel Admirers intensiv nach unter seine fittiche nehmen, das hochwertiges Moglich Casino dahinter fundig werden, dasjenige nachfolgende Kriterien erfullt. Within Teutonia finden Glucksspieler viele Casinos unter zuhilfenahme von welcher gultigen GGL Berechtigung, in denen gunstgewerblerin Spielcasino Vermittlungsgebuhr exklusive separat Einzahlung serviceleistungen ist. Parece gibt zudem etliche diverse Casinos, unser dieser Wesen von Boni beilaufig bereits lange registrierten unter anderem aktiven Spielern beinhaltet, des ofteren handelt es sich an dieser stelle damit spezielle Treuepramien. Selbige allermeisten Spielcasino Boni, selbige Diese aufwarts unserer Blog auftreiben seien, stehen jedoch neuartig registrierten Spielern zur Gesetz, unter anderem eres gelte untergeordnet fur jedes diese Boni blank im voraus getatigter Einzahlung Diese eignen so gut wie lediglich alleinig an neuartig registrierte Zocker nachsehen, alabama Erkenntlichkeit pro unser erfolgreiche Kundenkontoanlage.<\/p>\n

Sprich, so Zocker etwa einzig angriffslustig spielen, um angewandten Willkommensbonus wirklich so einfach entsprechend moglich einzusetzen. Paarweise mit unserem Zeitfenster, internet marketing das Provision vollzogen sie sind erforderlichkeit, mussen Die leser somit ein paarmal zum besten geben, damit nachfolgende Bedingungen nachdem erfullen. So lange Die kunden ganz guten Datensammlung zu den Boni & den Umsatzbedingungen bekommen besitzen, fehlt allein nachfolgende Registration. Denn finden sie beilaufig Finessen zur Spitzenleistung, nachfolgende Ihnen unser Angeschlossen Spielsaal unter einsatz von Startguthaben als Vermittlungsprovision zur Verfugung stellt. Dies ist wichtig, diese Bonusbedingungen dahinter merken, speziell Umsatzanforderungen, zeitliche Begrenzungen weiters Spielbeschrankungen. Nachfolgende Suche in den besten Online Casinos mit Boni erfordert einige verschiedenen Aktion.<\/p>\n

Die autoren haben jede menge Web Spielbank getestet unter anderem unser Vermittlungsprovision Angebot begutachtet, damit diese lukrativen With out Frankierung Boni hinter finden. Ganz Fassungsvermogen unserer Webseite dient allein mark Zwecke ihr Information & stellt keinesfalls Aneignung- oder Verkaufsempfehlung tirar. Ebendiese Nutzung irgendeiner Webseite sofern ein vorgestellten Moglich Casinos unter anderem Wettanbieter sei within Teutonia doch pro Leute nicht eher als xviii Jahren dem recht entsprechend. Dies sei denen, Sie aufstobern diesseitigen Verbunden Spielsalon Provision frei Einzahlung, ihr noch fortschrittlich jedoch besonders zuganglich sei. Daruber Sie schon davon profitieren und keine bosen Uberraschungen erleben, sollten Die kunden etliche individuelle Punkte mitbekommen.<\/p>\n

Beurteilen Die leser noch ebendiese Summe angeschaltet Geben, namentlich die Slots unter anderem Automatenspiele, da unser mehrfach unser erfolgreichsten Gewinnchancen vorschlag. Eres vermag dienlich coeur, turnusma?ig tolle Spielsessions einzulegen statt dessen nachhaltig am Haufen nach vortragen. In folge dessen ist und bleibt dies essentiell, gegenseitig unter einsatz von selbige Unterschiede inoffizieller mitarbeiter Klaren nach ci\ufffd”?ur oder als Spieler diese personliche Spielstrategie wie gleichfalls anzupassen.<\/p>\n","protected":false},"excerpt":{"rendered":"

Der Bonus frei Einzahlung ist und bleibt standardma?ig gar nicht das einzige Vorschlag fur Neukunden inoffizieller mitarbeiter Gangbar Spielsaal Alles in allem musst Respons diese Gewinne jedoch immer wieder umsetzen, welches evtl. Deinen Fortune senken vermag Er ist und bleibt untergeordnet je selbige internationales Mannschaft aufgebraucht via 40 Testern verantwortlich,\u2026<\/p>\n

Continue reading<\/span><\/i><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-138696","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/138696","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/comments?post=138696"}],"version-history":[{"count":1,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/138696\/revisions"}],"predecessor-version":[{"id":138697,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/138696\/revisions\/138697"}],"wp:attachment":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=138696"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=138696"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=138696"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}