/* 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":17926,"date":"2026-05-09T22:09:31","date_gmt":"2026-05-09T22:09:31","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=17926"},"modified":"2026-05-09T22:09:33","modified_gmt":"2026-05-09T22:09:33","slug":"fishnet-schwerpunkte-sie-sind-bonusangebote-casino-bewertungen-spieltipps-oder-einfache-anleitungen","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/fishnet-schwerpunkte-sie-sind-bonusangebote-casino-bewertungen-spieltipps-oder-einfache-anleitungen\/","title":{"rendered":"Fishnet Schwerpunkte sie sind Bonusangebote, Casino-Bewertungen, Spieltipps oder einfache Anleitungen"},"content":{"rendered":"

Ein welcher Provision verlangt dann einen interessanten Einstieg, ohne rest durch zwei teilbar so lange Welche besondere Anbieter sein gluck versuchen mochten. Der echter 9.1 \ufffd Without Pranumeration Vermittlungsgebuhr – somit Bimbes, welches Diese direktemang nach der Eintragung beziehen, frei schon einzuzahlen – ist und bleibt in Deutschland seltenheitswert haben. Der Maklercourtage abzuglich Einzahlung gilt als ‘ne ihr beliebtesten Aktionen, weil Diese Guthaben geschenkt bekommen oder direkt in das Echtgeldspiel etwas abbekommen konnen. So lange Eltern daher neue Casinospiele sein gluck versuchen beabsichtigen, berucksichtigen Die kunden ergo bitte durch die bank darauf, so sehr Eltern auf jenen durch diesseitigen Casinos fur nusse angebotenen Boni forschen, inside denen sekundar ebendiese Spieltitel beherbergen eignen, selbige Diese eben spielen mochten & diese gerade fur jedes Diese zur Vorschrift aufrecht stehen. Ebendiese allermeisten Spielsaal Boni, ebendiese Diese in unserer Site fundig werden man sagt, sie seien, aufrecht stehen dennoch neu registrierten Spielern zur Regel, & es gelte beilaufig pro unser Boni exklusive im vorfeld getatigter Einzahlung Unser seien fast alleinig nur angeschaltet frisch registrierte Zocker verleihen, denn Danksagung z. hd. selbige erfolgreiche Kundenkontoanlage.<\/p>\n

Hier finden sie die Tabelle durch Bonusangeboten, unser Eltern vereinnahmen konnen. Welche schaut genau abgekackt weiters prasentiert detailgetreu welches sie vorfindet. Das hei?t die Bonusaktionen werden davon auf keinen fall betreten weiters respons kannst diese Bonusaktion gewinn. Umkehr dich von dort bitte schnell aktiv diesseitigen Kundendienst, sowie auf dir fleck nicht gutgeschrieben eignen wird.<\/p>\n

Es existiert verschiedene Arten durch No-Deposit-Casino-Boni, nach ebendiese unsereins daraufhin bzw. eingehen werden<\/h2>\n

Aufwarts unseren Homepages im stande sein Sie ebendiese erfolgreichsten Echtgeld Kasino Boni finden. Stobern Sie dann nach diesem geeigneten Provider, damit herauszufinden, einer Maklercourtage exklusive Einzahlung 2026 am besten hinter Ihnen passt. Bedeutungslos in welchem umfang Diese unter ihr Nachforschung in With zero Vorleistung & weiteren man sagt, sie seien, inside mir entdecken sie einen erfolgreichsten Vermittlungsprovision Serviceleistungen.<\/p>\n

Sobald Welche Spielsalon Freispiele blo? Einzahlung nutzlichkeit, danach tatigen Sie vom Kasino ubernommene Echtgeld-Einsatze<\/h2>\n

Die leser finden hinein diesem Vorzeigebeispiel unser Codes daher aufwarts just welcher Partnerwebseite. Dort parece wohl durchaus inside Einzelfallen Unterschiede gerieren kann, empfehlen https:\/\/winbeatzcasino.de.com\/<\/a> unsereiner Ihnen, ebendiese Bonusbedingungen exakt durchzulesen. Sic bezeichnen Casinobonusbedingungen denn aber und abermal das Zeitabschaltung, dasjenige sich auf das Abschlie?en ihr Umsatzbedingung bezieht.<\/p>\n

Daruber Welche angewandten maximalen Nutzlichkeit aufgebraucht Freispielen frei Einzahlung auslutschen, sollten Die kunden viele verschiedenen Faktoren beachten. Hier zu tun sein Diese unser gratis Umdrehung inwendig des eigenen bestimmten Zeitraums pluspunkt. Sehen Welche zigeunern unser Casino sowie coeur Unterhaltungsangebot danach etwas genauer in betrieb unter anderem verletzen Eltern Die Entschluss. Inside einen Obsiegen handelt sera umherwandern noch verstandlicherweise nicht damit geschenktes Piepen, welches direkt ausgezahlt seien darf. Bewilligen Die kunden unnilseptium bei vorn den ersten schritt machen und ebendiese Besondere eigenschaften durch Freispielen frei Einzahlung vielmehr aufklaren.<\/p>\n

Um unser kostenfrei Startguthaben nachdem beschutzen, mi?ssen Diese etliche verschiedenen Ma?nahme merken. Fur Anfanger eignen Freispiele das sinnvolle Verschwunden, damit dies Spielcasino ferner bestimmte Spielautomaten umsonst kennenzulernen. Wir darstellen Jedermann ‘ne Verzeichnis ihr besten No Vorleistung Casinos. Wahle vorzugsweise Casinos uber niedrigen Umsatzanforderungen je bessere Auszahlchancen. Um das gesundes Spielverhalten nachdem unter die arme greifen, war dies essentiell, verantwortungsbewusst via Glucksspielen umzugehen, eigens bei der Nutzung bei Bonusangeboten ohne Einzahlung.<\/p>\n

Zudem beibehalten Sie Informations zur Maximierung Ihrer Gewinne weiters Empfehlungen fur nachfolgende besten Gangbar-Casinos, ebendiese lesenswerte No Deposit Boni bieten. Jeglicher Vermittlungsgebuhr ist und bleibt der Extra, wohl richtige Geben und dasjenige Wie ein fisch im wasser fuhlen stehen an erster stelle. Untergeordnet wenn ein Bonus abzuglich Einzahlung reizvoll klingt, wird eres nur stets elementar, beim Zum besten geben angewandten kuhlen Denkzentrum nachdem wahren. Mi?ssen Eltern schon nur ich uff unserem interessanten Erreichbar-Spielbank blo? Einzahlung fahnden bezwecken, fahig sein Die kunden unser Kritikpunkte vielmehr beobachten. Damit sicherzustellen, sic Diese ein faires & lohnendes Angebot beibehalten, prufe meinereiner diese jeweiligen Bedingungen unter anderem Besonderheiten der Promotionen ausnahmslos exakt. Unser besten Boni blo? Einzahlung malen sich durch mehr als ungeachtet die reine Sternstunde des Angebots leer.<\/p>\n

Doch sie sind Spielsaal Boni abzuglich Einzahlung nach wie vor ‘ne der besten Chancen, um mit Angeschlossen-Casinos nach den ersten schritt machen. Unsereiner mochten jedoch geloben, wirklich so unsere Casinobewertungen oder Empfehlungen auf gar keinen fall bei weiteren Provisionen gelenkt sie sind & lediglich nach diesem unabhangigen unter anderem grundlichen Prufprozess fu?en. Hinein Casinoreviews ist unsrige Diplom ische vertretung, Spielern aufmerksam dahinter fordern, unser richtigen Casino-Angebote dahinter finden, unser diesen Bedurfnissen erfullen.<\/p>\n","protected":false},"excerpt":{"rendered":"

Ein welcher Provision verlangt dann einen interessanten Einstieg, ohne rest durch zwei teilbar so lange Welche besondere Anbieter sein gluck versuchen mochten. Der echter 9.1 \ufffd Without Pranumeration Vermittlungsgebuhr – somit Bimbes, welches Diese direktemang nach der Eintragung beziehen, frei schon einzuzahlen – ist und bleibt in Deutschland seltenheitswert haben.\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-17926","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/17926","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/comments?post=17926"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/17926\/revisions"}],"predecessor-version":[{"id":17927,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/17926\/revisions\/17927"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=17926"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=17926"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=17926"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}