Skip to content

Commit

Permalink
rename wc_serial_numbers to WCSN
Browse files Browse the repository at this point in the history
  • Loading branch information
sultann committed Jul 24, 2023
1 parent 53a3e73 commit aea8411
Show file tree
Hide file tree
Showing 15 changed files with 60 additions and 49 deletions.
6 changes: 3 additions & 3 deletions src/API.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public static function process_request() {
$action = isset( $_REQUEST['request'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['request'] ) ) : '';
$email = isset( $_REQUEST['email'] ) ? sanitize_email( wp_unslash( $_REQUEST['email'] ) ) : '';

wc_serial_numbers()->log(
WCSN()->log(
'API request',
'debug',
array(
Expand All @@ -53,7 +53,7 @@ public static function process_request() {

// Check if action is valid.
if ( ! in_array( $action, array( 'check', 'validate', 'activate', 'deactivate', 'version_check' ), true ) ) {
wc_serial_numbers()->log( sprintf( 'Invalid action: %s', $action ), 'error' );
WCSN()->log( sprintf( 'Invalid action: %s', $action ), 'error' );
wp_send_json_error(
array(
'code' => 'invalid_action',
Expand All @@ -64,7 +64,7 @@ public static function process_request() {

// Check if product ID is valid.
if ( ! $product_id || ! get_post( $product_id ) ) {
wc_serial_numbers()->log( sprintf( 'Invalid product ID: %s', $product_id ), 'error' );
WCSN()->log( sprintf( 'Invalid product ID: %s', $product_id ), 'error' );
wp_send_json_error(
array(
'code' => 'invalid_product_id',
Expand Down
6 changes: 3 additions & 3 deletions src/Admin/Actions.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public static function handle_edit_key() {
$data = wc_clean( wp_unslash( $_POST ) );
$key = Key::insert( $data );
if ( is_wp_error( $key ) ) {
wc_serial_numbers()->add_notice( $key->get_error_message(), 'error' );
WCSN()->add_notice( $key->get_error_message(), 'error' );
// redirect to referrer.
wp_safe_redirect( wp_get_referer() );
exit();
Expand All @@ -46,9 +46,9 @@ public static function handle_edit_key() {
update_post_meta( $product_id, '_is_serial_number', 'yes' );
update_post_meta( $product_id, '_serial_key_source', 'custom_source' );

wc_serial_numbers()->add_notice( __( 'Key added successfully.', 'wc-serial-numbers' ) );
WCSN()->add_notice( __( 'Key added successfully.', 'wc-serial-numbers' ) );
} else {
wc_serial_numbers()->add_notice( __( 'Key updated successfully.', 'wc-serial-numbers' ) );
WCSN()->add_notice( __( 'Key updated successfully.', 'wc-serial-numbers' ) );
}

$redirect_to = admin_url( 'admin.php?page=wc-serial-numbers&edit=' . $key->get_id() );
Expand Down
8 changes: 4 additions & 4 deletions src/Admin/Admin.php
Original file line number Diff line number Diff line change
Expand Up @@ -62,12 +62,12 @@ public function screen_ids( $ids ) {
* @return string
*/
public function admin_footer_text( $footer_text ) {
if ( wc_serial_numbers()->get_review_url() && in_array( get_current_screen()->id, self::get_screen_ids(), true ) ) {
if ( WCSN()->get_review_url() && in_array( get_current_screen()->id, self::get_screen_ids(), true ) ) {
$footer_text = sprintf(
/* translators: 1: Plugin name 2: WordPress */
__( 'Thank you for using %1$s! Share your appreciation with a five-star review %2$s.', 'wc-serial-numbers' ),
'<strong>' . esc_html( wc_serial_numbers()->get_name() ) . '</strong>',
'<a href="' . esc_url( wc_serial_numbers()->get_review_url() ) . '" target="_blank" class="wc-serial-numbers-rating-link" data-rated="' . esc_attr__( 'Thanks :)', 'wc-serial-numbers' ) . '">here</a>'
'<strong>' . esc_html( WCSN()->get_name() ) . '</strong>',
'<a href="' . esc_url( WCSN()->get_review_url() ) . '" target="_blank" class="wc-serial-numbers-rating-link" data-rated="' . esc_attr__( 'Thanks :)', 'wc-serial-numbers' ) . '">here</a>'
);
}

Expand All @@ -85,7 +85,7 @@ public function admin_footer_text( $footer_text ) {
public function update_footer( $footer_text ) {
if ( in_array( get_current_screen()->id, self::get_screen_ids(), true ) ) {
/* translators: 1: Plugin version */
$footer_text = sprintf( esc_html__( 'Version %s', 'wc-serial-numbers' ), wc_serial_numbers()->get_version() );
$footer_text = sprintf( esc_html__( 'Version %s', 'wc-serial-numbers' ), WCSN()->get_version() );
}

return $footer_text;
Expand Down
14 changes: 7 additions & 7 deletions src/Admin/Menus.php
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ public function settings_menu() {
*/
public function promo_menu() {
$role = wcsn_get_manager_role();
if ( ! wc_serial_numbers()->is_premium_active() ) {
if ( ! WCSN()->is_premium_active() ) {
add_submenu_page(
'wc-serial-numbers',
'',
Expand Down Expand Up @@ -337,14 +337,14 @@ public static function import_tab() {
<h3><?php esc_html_e( 'Available in Pro Version', 'wc-serial-numbers' ); ?></h3>
<a href="https://pluginever.com/plugins/woocommerce-serial-numbers-pro/?utm_source=import-tab&utm_medium=link&utm_campaign=upgrade&utm_id=wc-serial-numbers" target="_blank" class="button-primary"><?php esc_html_e( 'Upgrade to Pro Now', 'wc-serial-numbers' ); ?></a>
</div>
<img src="<?php echo esc_url( wc_serial_numbers()->get_url() . 'assets/images/csv-import.png' ); ?>" alt="<?php esc_attr_e( 'Import Serial Numbers', 'wc-serial-numbers' ); ?>" />
<img src="<?php echo esc_url( WCSN()->get_dir_url() . 'assets/images/csv-import.png' ); ?>" alt="<?php esc_attr_e( 'Import Serial Numbers', 'wc-serial-numbers' ); ?>" />
</div>
<div class="wcsn-feature-promo-banner">
<div class="wcsn-feature-promo-banner__content">
<h3><?php esc_html_e( 'Available in Pro Version', 'wc-serial-numbers' ); ?></h3>
<a href="https://pluginever.com/plugins/woocommerce-serial-numbers-pro/?utm_source=import-tab&utm_medium=link&utm_campaign=upgrade&utm_id=wc-serial-numbers" target="_blank" class="button-primary"><?php esc_html_e( 'Upgrade to Pro Now', 'wc-serial-numbers' ); ?></a>
</div>
<img src="<?php echo esc_url( wc_serial_numbers()->get_assets_url() . 'images/txt-import.png' ); ?>" alt="<?php esc_attr_e( 'Import Serial Numbers', 'wc-serial-numbers' ); ?>" />
<img src="<?php echo esc_url( WCSN()->get_assets_url() . 'images/txt-import.png' ); ?>" alt="<?php esc_attr_e( 'Import Serial Numbers', 'wc-serial-numbers' ); ?>" />
</div>
<?php
}
Expand All @@ -362,7 +362,7 @@ public static function export_tab() {
<h3><?php esc_html_e( 'Available in Pro Version', 'wc-serial-numbers' ); ?></h3>
<a href="https://pluginever.com/plugins/woocommerce-serial-numbers-pro/?utm_source=export-tab&utm_medium=link&utm_campaign=upgrade&utm_id=wc-serial-numbers" target="_blank" class="button-primary"><?php esc_html_e( 'Upgrade to Pro Now', 'wc-serial-numbers' ); ?></a>
</div>
<img src="<?php echo esc_url( wc_serial_numbers()->get_assets_url() . 'images/csv-export.png' ); ?>" alt="<?php esc_attr_e( 'Export Serial Numbers', 'wc-serial-numbers' ); ?>" />
<img src="<?php echo esc_url( WCSN()->get_assets_url() . 'images/csv-export.png' ); ?>" alt="<?php esc_attr_e( 'Export Serial Numbers', 'wc-serial-numbers' ); ?>" />
</div>
<?php
}
Expand All @@ -380,7 +380,7 @@ public static function generators_tab() {
<h3><?php esc_html_e( 'Available in Pro Version', 'wc-serial-numbers' ); ?></h3>
<a href="https://pluginever.com/plugins/woocommerce-serial-numbers-pro/?utm_source=generators-tab&utm_medium=link&utm_campaign=upgrade&utm_id=wc-serial-numbers" target="_blank" class="button-primary"><?php esc_html_e( 'Upgrade to Pro Now', 'wc-serial-numbers' ); ?></a>
</div>
<img src="<?php echo esc_url( wc_serial_numbers()->get_assets_url() . 'images/add-generator.png' ); ?>" alt="<?php esc_attr_e( 'Generators', 'wc-serial-numbers' ); ?>" />
<img src="<?php echo esc_url( WCSN()->get_assets_url() . 'images/add-generator.png' ); ?>" alt="<?php esc_attr_e( 'Generators', 'wc-serial-numbers' ); ?>" />
</div>
<?php
}
Expand All @@ -393,9 +393,9 @@ public static function generators_tab() {
*/
public static function status_tab() {
$statuses = array(
'Serial Numbers version' => wc_serial_numbers()->get_version(),
'Serial Numbers version' => WCSN()->get_version(),
);
if ( wc_serial_numbers()->is_premium_active() && function_exists( 'wc_serial_numbers_pro' ) ) {
if ( WCSN()->is_premium_active() && function_exists( 'wc_serial_numbers_pro' ) ) {
$statuses['Serial Numbers Pro version'] = wc_serial_numbers_pro()->get_version();
}

Expand Down
4 changes: 2 additions & 2 deletions src/Admin/Metaboxes.php
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ public static function product_write_panel() {
$stock,
_n( 'serial key', 'serial keys', $stock, 'wc-serial-numbers' )
);
if ( ! wc_serial_numbers()->is_pro_active() ) {
if ( ! WCSN()->is_premium_active() ) {
echo sprintf( '<p class="wc-serial-numbers-upgrade-box">%s <a href="%s" target="_blank" class="button">%s</a></p>', __( 'Want serial keys to be generated automatically and auto assign with order and many more?', 'wc-serial-numbers' ), 'https://www.pluginever.com/plugins/woocommerce-serial-numbers-pro/?utm_source=product_page_license_area&utm_medium=link&utm_campaign=wc-serial-numbers&utm_content=Upgrade%20to%20Pro', __( 'Upgrade to Pro', 'wc-serial-numbers' ) );
}
?>
Expand All @@ -152,7 +152,7 @@ public static function product_write_panel() {
* @since 1.2.0
*/
public static function variable_product_content( $loop, $variation_data, $variation ) {
if ( ! wc_serial_numbers()->is_pro_active() ) {
if ( ! WCSN()->is_premium_active() ) {
echo sprintf( '<p class="wc-serial-numbers-upgrade-box">%s <a href="%s" target="_blank" class="button">%s</a></p>', __( 'The free version of Serial Numbers for WooCommerce does not support product variation.', 'wc-serial-numbers' ), 'https://www.pluginever.com/plugins/woocommerce-serial-numbers-pro/?utm_source=product_page_license_area&utm_medium=link&utm_campaign=wc-serial-numbers&utm_content=Upgrade%20to%20Pro', __( 'Upgrade to Pro', 'wc-serial-numbers' ) );
}

Expand Down
6 changes: 3 additions & 3 deletions src/Admin/Notices.php
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public function add_notices() {
'message' => sprintf(
/* translators: %1$s: link to the plugin page, %2$s: link to the plugin page */
__( '%s is not functional because you are using outdated version of the plugin, please update to the version 1.2.1 or higher.', 'wc-serial-numbers' ),
'<a href="' . esc_url( wc_serial_numbers()->get_data( 'premium_url' ) ) . '" target="_blank">WooCommerce Serial Numbers Pro</a>'
'<a href="' . esc_url( WCSN()->get_data( 'premium_url' ) ) . '" target="_blank">WooCommerce Serial Numbers Pro</a>'
),
);
}
Expand All @@ -65,9 +65,9 @@ public function add_notices() {
__( 'New! Send Serial Keys via SMS with Twilio. Upgrade to %6$s to unlock the full potential of %5$s and avail a %1$s discount by using the promo code %2$s %3$s Upgrade Now %4$s.', 'wc-serial-numbers' ),
'<strong>10%</strong>',
'<strong>WCSNPRO10</strong>',
'<a href="' . esc_url( wc_serial_numbers()->get_premium_url() ) . '" target="_blank">',
'<a href="' . esc_url( WCSN()->get_premium_url() ) . '" target="_blank">',
'</a>',
'<strong>' . wc_serial_numbers()->get_name() . '</strong>',
'<strong>' . WCSN()->get_name() . '</strong>',
'<strong>PRO</strong>'
),
);
Expand Down
6 changes: 3 additions & 3 deletions src/Admin/Orders.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,11 @@ public function handle_order_action( $order ) {
if ( 'wcsn_add_keys' === $action ) {
wcsn_order_update_keys( $order_id );
// add a notice.
wc_serial_numbers()->add_notice( __( 'Serial keys added successfully to the order.', 'wc-serial-numbers' ) );
WCSN()->add_notice( __( 'Serial keys added successfully to the order.', 'wc-serial-numbers' ) );
} elseif ( 'wcsn_remove_keys' === $action ) {
wcsn_order_remove_keys( $order_id );
// add a notice.
wc_serial_numbers()->add_notice( __( 'Serial keys removed successfully from the order.', 'wc-serial-numbers' ) );
WCSN()->add_notice( __( 'Serial keys removed successfully from the order.', 'wc-serial-numbers' ) );
}
}

Expand Down Expand Up @@ -148,7 +148,7 @@ public function handle_order_bulk_action( $redirect_to, $action, $order_ids ) {
}
}
// Translators: %d: number of orders.
wc_serial_numbers()->add_notice( sprintf( __( '%d orders updated successfully.', 'wc-serial-numbers' ), count( $order_ids ) ) );
WCSN()->add_notice( sprintf( __( '%d orders updated successfully.', 'wc-serial-numbers' ), count( $order_ids ) ) );
$redirect_to = add_query_arg( 'bulk_action', $action, $redirect_to );
}

Expand Down
6 changes: 3 additions & 3 deletions src/Admin/Settings.php
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ public function get_settings( $tab ) {
* @return void
*/
protected function output_premium_widget() {
if ( wc_serial_numbers()->is_premium_active() ) {
if ( WCSN()->is_premium_active() ) {
return;
}
$features = array(
Expand Down Expand Up @@ -186,8 +186,8 @@ protected function output_premium_widget() {
*/
public function output_tabs( $tabs ) {
parent::output_tabs( $tabs );
if ( wc_serial_numbers()->get_docs_url() ) {
echo sprintf( '<a href="%s" class="nav-tab" target="_blank">%s</a>', wc_serial_numbers()->get_docs_url(), __( 'Documentation', 'wc-serial-numbers' ) );
if ( WCSN()->get_docs_url() ) {
echo sprintf( '<a href="%s" class="nav-tab" target="_blank">%s</a>', WCSN()->get_docs_url(), __( 'Documentation', 'wc-serial-numbers' ) );
}
}
}
4 changes: 2 additions & 2 deletions src/Admin/Views/html-api-validation.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,15 @@
<h2><?php esc_html_e( 'API Validation', 'wc-serial-numbers' ); ?></h2>
</div>
<div class="wcsn-card__body">
<?php if ( ! wc_serial_numbers()->is_premium_active() ) : ?>
<?php if ( ! WCSN()->is_premium_active() ) : ?>
<div class="notice notice-warning">
<p>
<?php
echo wp_kses_post(
sprintf(
/* translators: %s: link to the pro version */
__( 'You are using the free version of Serial Numbers for WooCommerce. <a href="%s" target="_blank">Upgrade to Pro</a> to get more features.', 'wc-serial-numbers' ),
esc_url( wc_serial_numbers()->get_premium_url() . '?utm_source=create_serial_page&utm_medium=button&utm_campaign=wc-serial-numbers&utm_content=View%20Details' )
esc_url( WCSN()->get_premium_url() . '?utm_source=create_serial_page&utm_medium=button&utm_campaign=wc-serial-numbers&utm_content=View%20Details' )
)
);
?>
Expand Down
4 changes: 2 additions & 2 deletions src/Admin/Views/html-edit-key.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,15 @@
<?php endif; ?>
<hr class="wp-header-end">

<?php if ( ! wc_serial_numbers()->is_premium_active() ) : ?>
<?php if ( ! WCSN()->is_premium_active() ) : ?>
<div class="notice notice-warning">
<p>
<?php
echo wp_kses_post(
sprintf(
/* translators: %s: link to the pro version */
__( 'You are using the free version of Serial Numbers for WooCommerce. <a href="%s" target="_blank">Upgrade to Pro</a> to get more features.', 'wc-serial-numbers' ),
esc_url( wc_serial_numbers()->get_premium_url() . '?utm_source=create_serial_page&utm_medium=button&utm_campaign=wc-serial-numbers&utm_content=View%20Details' )
esc_url( WCSN()->get_premium_url() . '?utm_source=create_serial_page&utm_medium=button&utm_campaign=wc-serial-numbers&utm_content=View%20Details' )
)
);
?>
Expand Down
2 changes: 1 addition & 1 deletion src/Functions/Template.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
*/
function wcsn_get_template( $template_name, $args = array() ) {
$template_name = apply_filters( 'wcsn_get_template', $template_name, $args );
wc_get_template( $template_name, $args, 'wc-serial-numbers/', wc_serial_numbers()->get_template_path() );
wc_get_template( $template_name, $args, 'wc-serial-numbers/', WCSN()->get_template_path() );
}

/**
Expand Down
16 changes: 8 additions & 8 deletions src/Installer.php
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,8 @@ public static function custom_cron_schedules( $schedules ) {
* @return void
*/
public function check_update() {
$db_version = wc_serial_numbers()->get_db_version();
$current_version = wc_serial_numbers()->get_version();
$db_version = WCSN()->get_db_version();
$current_version = WCSN()->get_version();
$requires_update = version_compare( $db_version, $current_version, '<' );
$can_install = ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) && ! defined( 'IFRAME_REQUEST' );
if ( $can_install && $requires_update ) {
Expand All @@ -73,7 +73,7 @@ public function check_update() {
if ( ! is_null( $db_version ) && version_compare( $db_version, end( $update_versions ), '<' ) ) {
$this->update();
} else {
wc_serial_numbers()->update_db_version( $current_version );
WCSN()->update_db_version( $current_version );
}
}
}
Expand All @@ -85,23 +85,23 @@ public function check_update() {
* @return void
*/
public function update() {
$db_version = wc_serial_numbers()->get_db_version();
$db_version = WCSN()->get_db_version();
foreach ( $this->updates as $version => $callbacks ) {
$callbacks = (array) $callbacks;
if ( version_compare( $db_version, $version, '<' ) ) {
foreach ( $callbacks as $callback ) {
wc_serial_numbers()->log( sprintf( 'Updating to %s from %s', $version, $db_version ) );
WCSN()->log( sprintf( 'Updating to %s from %s', $version, $db_version ) );
// if the callback return false then we need to update the db version.
$continue = call_user_func( array( $this, $callback ) );
if ( ! $continue ) {
wc_serial_numbers()->update_db_version( $version );
WCSN()->update_db_version( $version );
$notice = sprintf(
/* translators: 1: plugin name 2: version number */
__( '%1$s updated to version %2$s successfully.', 'wc-serial-numbers' ),
'<strong>Serial Numbers for WooCommerce</strong>',
'<strong>' . $version . '</strong>'
);
wc_serial_numbers()->add_notice( $notice, 'success' );
WCSN()->add_notice( $notice, 'success' );
}
}
}
Expand All @@ -122,7 +122,7 @@ public static function install() {
self::create_tables();
self::create_cron_jobs();
Admin\Settings::get_instance()->save_defaults();
wc_serial_numbers()->update_db_version( wc_serial_numbers()->get_version(), false );
WCSN()->update_db_version( WCSN()->get_version(), false );
add_option( 'wc_serial_numbers_install_date', current_time( 'mysql' ) );
set_transient( 'wc_serial_numbers_activated', true, 30 );
set_transient( 'wc_serial_numbers_activation_redirect', true, 30 );
Expand Down
8 changes: 4 additions & 4 deletions src/Scripts.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ protected function __construct() {
* @since 1.0.0
*/
public function frontend_scripts( $hook ) {
wc_serial_numbers()->enqueue_style( 'wc-serial-numbers-frontend', 'css/frontend-style.css' );
wc_serial_numbers()->enqueue_script( 'wc-serial-numbers-frontend', 'js/frontend-script.js', array( 'jquery' ) );
WCSN()->enqueue_style( 'wc-serial-numbers-frontend', 'css/frontend-style.css' );
WCSN()->enqueue_script( 'wc-serial-numbers-frontend', 'js/frontend-script.js', array( 'jquery' ) );
wp_localize_script(
'wc-serial-numbers-frontend',
'wc_serial_numbers_frontend_vars',
Expand Down Expand Up @@ -63,8 +63,8 @@ public function admin_scripts( $hook ) {
wp_enqueue_style( 'select2' );
wp_enqueue_script( 'jquery-ui-datepicker' );

wc_serial_numbers()->enqueue_style( 'wc-serial-numbers-admin', 'css/admin-style.css' );
wc_serial_numbers()->enqueue_script( 'wc-serial-numbers-admin', 'js/admin-script.js', array( 'jquery', 'jquery-ui-datepicker', 'select2', 'wp-util' ) );
WCSN()->enqueue_style( 'wc-serial-numbers-admin', 'css/admin-style.css' );
WCSN()->enqueue_script( 'wc-serial-numbers-admin', 'js/admin-script.js', array( 'jquery', 'jquery-ui-datepicker', 'select2', 'wp-util' ) );
wp_localize_script(
'wc-serial-numbers-admin',
'wc_serial_numbers_vars',
Expand Down
4 changes: 2 additions & 2 deletions tests/wpunit/InstallationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ class PluginTest extends \Codeception\TestCase\WPTestCase {


public function test_plugin_activation() {
$plugin = wc_serial_numbers();
$plugin = WCSN();
$this->assertTrue( $plugin->is_plugin_active( $plugin->get_basename() ) );
$this->assertEquals( $plugin->get_version(), get_option( 'wc_serial_numbers_version' ) );
}

public function test_plugin_data() {
$plugin = wc_serial_numbers();
$plugin = WCSN();
$this->assertNotEmpty( $plugin->get_name() );
$this->assertNotEmpty( $plugin->get_version() );
$this->assertNotEmpty( $plugin->get_text_domain() );
Expand Down
15 changes: 13 additions & 2 deletions wc-serial-numbers.php
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ function wc_serial_numbers_autoload( $class_name ) {
* @since 1.0.0
* @return Plugin
*/
function wc_serial_numbers() {
function WCSN() { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid.
$data = array(
'file' => __FILE__,
'settings_url' => admin_url( 'admin.php?page=wc-serial-numbers-settings' ),
Expand All @@ -89,5 +89,16 @@ function wc_serial_numbers() {
return Plugin::create( $data );
}

/**
* Alias of WCSN().
*
* @since 1.5.6
* @return Plugin
* @deprecated 1.5.6
*/
function wc_serial_numbers() {
return WCSN();
}

// Initialize the plugin.
wc_serial_numbers();
WCSN();

0 comments on commit aea8411

Please sign in to comment.