Booster for WooCommerce - Version 2.9.0

Version Description

  • 02/07/2017
  • Dev - WooCommerce v3.x.x compatibility - Shortcodes - Orders - [wcj_order_items_table] - product_name column - "WooCommerce TM Extra Product Options" plugin compatibility - get_meta().
  • Dev - WooCommerce v3.x.x compatibility - Shortcodes - Products - [wcj_product_dimensions] - wc_format_dimensions().
  • Dev - WooCommerce v3.x.x compatibility - PAYMENT GATEWAYS - Custom Gateways - wc_reduce_stock_levels().
  • Dev - Main plugin file code refactoring.
  • Dev - WCJ_Module - create_meta_box() - placeholder option added.
  • Dev - Settings - Module "Under development" message added.
  • Dev - Settings - Now deprecated modules are removed if disabled.
  • Dev - Functions - wcj-currencies.php file (wcj_get_currencies_array() function) moved to functions folder.
  • Dev - Functions - wcj_get_product_id() and wcj_get_product_id_or_variation_parent_id() - Check for "product not null" and is_object added.
  • Fix - Functions - Invoicing - wcj_get_invoice_date() - Check for not empty invoice date added.
  • Dev - Shortcodes - General - [wcj_currency_select_link_list], [wcj_currency_select_radio_list], [wcj_currency_select_drop_down_list] - default attribute added.
  • Dev - Shortcodes - General - [wcj_currency_exchange_rate] and [wcj_currency_exchange_rates_table] shortcodes added.
  • Fix - Shortcodes - Orders - [wcj_order_items_table] - add_variation_info_to_item_name attribute defaults to yes now.
  • Dev - Shortcodes - Orders - [wcj_order_items_table] - columns - product_meta, product_cost, product_profit, line_cost, line_profit, product_id, item_product_id, product_post_meta, product_purchase_note columns added.
  • Dev - Shortcodes - Orders - [wcj_order_items_table] - insert_page_break (defaults to empty string) attribute added.
  • Dev - Shortcodes - Orders - [wcj_order_items_table] - columns - product_attribute - Checking parent product's attribute for variation products.
  • Dev - Shortcodes - Orders - [wcj_order_shipping_address] - fallback_billing_address attribute added.
  • Dev - Shortcodes - Orders - [wcj_order_customer_meta] shortcode added.
  • Dev - Shortcodes - Products - [wcj_product_weight], [wcj_product_length], [wcj_product_width], [wcj_product_height], [wcj_product_dimensions] - variations attribute added.
  • Dev - PRICES & CURRENCIES - Currencies - Virtual currencies (myCred, Bitcoin, Ethereum) added.
  • Dev - PRICES & CURRENCIES - Currencies - Country flags and currency codes added to the settings.
  • Dev - PRICES & CURRENCIES - Currency per Product - Minor code refactoring.
  • Dev - PRICES & CURRENCIES - Currency per Product - EventON plugin support added.
  • Dev - PRICES & CURRENCIES - Currency per Product - "Currency per Product Authors" option added.
  • Dev - PRICES & CURRENCIES - Currency per Product - "Currency per Product Authors User Roles" option added.
  • Dev - PRICES & CURRENCIES - Currency per Product - "Currency per Product Categories" option added.
  • Dev - PRICES & CURRENCIES - Currency per Product - "Currency per Product Tags" option added.
  • Dev - PRICES & CURRENCIES - Currency per Product - get_current_product_id_and_currency() - Getting ID from global $product added.
  • Dev - PRICES & CURRENCIES - Currency Exchange Rates - "Exchange Rates Rounding" options added.
  • Dev - PRICES & CURRENCIES - Currency Exchange Rates - Custom currency options added. Settings restyled. Code refactoring.
  • Dev - PRICES & CURRENCIES - Currency Exchange Rates - wcj_currency_exchange_rates_additional_currencies filter added.
  • Dev - PRICES & CURRENCIES - Multicurrency Product Base Price - Base shop currency added to the list.
  • Dev - PRICES & CURRENCIES - Offer Your Price - Initial module release.
  • Dev - PRICES & CURRENCIES - Price by User Role - "Disable Price by User Role for Products on Sale" option added.
  • Fix - PRICES & CURRENCIES - Prices and Currencies by Country - Hooks are now added in constructor (instead of init hook) - this fixes the issue with wrong currency symbol in price filter widget.
  • Dev - PRICES & CURRENCIES - Product Open Pricing (Name Your Price) - "Disable Quantity Input" option added (defaults to yes).
  • Dev - PRODUCTS - Cost of Goods - "WooCommerce Cost of Goods" Data Import - Tool added.
  • Dev - PRODUCTS - Cost of Goods - "Admin Products List Custom Columns" - Section added.
  • Fix - PRODUCTS - Product Add to Cart - Add to Cart Variable Product - Display Radio Buttons Instead of Drop Box - Fixed.
  • Dev - PRODUCTS - Product Add to Cart - Add to Cart Local Redirect - "Per Product" option added.
  • Dev - PRODUCTS - Product Add to Cart - Add to Cart on Visit - Redirecting if "Add to Cart Local Redirect Options" is enabled.
  • Dev - PRODUCTS - Product Images - Shortcodes can now be used in all "Replace" fields.
  • Dev - PRODUCTS - Product Info - "Product Categories/Tags to Include/Exclude" options added.
  • Dev - PRODUCTS - Product Input Fields - Frontend View Options - "Cart Display Options" option added.
  • Dev - PRODUCTS - Product Input Fields - Frontend View Options - "Cart HTML Template" options added.
  • Dev - PRODUCTS - Product Listings - "Admin Products List - Custom Columns" section added.
  • Dev - PRODUCTS - Product Listings - "Admin Products List - Columns Order" section added.
  • Dev - PRODUCTS - Product Listings - Settings - Code refactoring - wcj_get_terms().
  • Dev - PRODUCTS - Product Visibility by Country - Visibility, purchasable and query options added.
  • Dev - PRODUCTS - Product Visibility by Country - "Admin Products List Column" option added.
  • Fix - PRODUCTS - Products per Page - Template fixed.
  • Dev - PRODUCTS - Products per Page - "Template - Before Form" and "Template - After Form" options added.
  • Dev - PRODUCTS - Products per Page - Minor code refactoring.
  • Dev - PRODUCTS - SKU - "Disable SKUs" option added.
  • Dev - PRODUCTS - SKU - Adding SKU on product duplicate action added (woocommerce_duplicate_product).
  • Dev - PRODUCTS - SKU - "Search by SKU" option added.
  • Dev - PRODUCTS - SKU - Number Generation - "Pseudorandom - Hash (max 10 digits)" option added.
  • Dev - PRODUCTS - SKU - "Template" option added.
  • Dev - PRODUCTS - SKU - Sequential counter by categories added.
  • Dev - PRODUCTS - SKU - Code refactoring.
  • Dev - CART & CHECKOUT - Checkout Customization - "Disable Fields on Checkout for Logged Users" options added.
  • Dev - CART & CHECKOUT - EU VAT Number - Code refactoring - Separate file for EU VAT functions added.
  • Dev - CART & CHECKOUT - EU VAT Number - "First Validation Method" option added.
  • Dev - SHIPPING & ORDERS - Custom Shipping - Renamed from "Shipping".
  • Dev - SHIPPING & ORDERS - Order Minimum Amount - Advanced - "Cart notice method" and "Cart notice type" options added.
  • Dev - SHIPPING & ORDERS - Order Min/Max Quantities - Initial module release.
  • Dev - SHIPPING & ORDERS - Orders - Admin Orders List Custom Columns - "Sortable" options added.
  • Dev - SHIPPING & ORDERS - Shipping Options - Initial module release (copied from "Shipping" module).
  • Dev - PDF INVOICING & PACKING SLIPS - Display - Code refactoring.
  • Dev - PDF INVOICING & PACKING SLIPS - Display - "Allowed User Roles" options added.
  • Dev - PDF INVOICING & PACKING SLIPS - Footer - "Footer Text" option updated.
  • Dev - PDF INVOICING & PACKING SLIPS - Templates - "Save all templates" buttons added.
  • Dev - PDF INVOICING & PACKING SLIPS - Styling - Default font set to "Helvetica".
  • Dev - PDF INVOICING & PACKING SLIPS - Styling - Font selection option updated.
  • Dev - PDF INVOICING & PACKING SLIPS - Styling - "cid0ct (Chinese Traditional)" font added (to extra fonts pack).
  • Dev - PDF INVOICING & PACKING SLIPS - Styling - "STSong Light (Simp. Chinese)" font added (to both minimal and extra fonts packs).
  • Dev - PDF INVOICING & PACKING SLIPS - Styling - Now extra fonts are downloaded to woocommerce_uploads folder.
  • Dev - EMAILS & MISC. - Admin Bar - Initial module release.
  • Dev - EMAILS & MISC. - Admin Tools - Log - "Now time" added. wp_safe_redirect() added to "Delete log" action.
  • Dev - EMAILS & MISC. - Breadcrumbs - Initial module release.
  • Dev - EMAILS & MISC. - Email Verification - "Enable Email Verification for Already Registered Users" option added.
  • Dev - EMAILS & MISC. - Email Verification - "Skip Email Verification for User Roles" option added.
  • Dev - EMAILS & MISC. - Email Verification - "Verification Message - Failed" - %resend_verification_url% replaceable value added.
  • Dev - EMAILS & MISC. - General - "Booster User Roles Changer" options added.
  • Dev - EMAILS & MISC. - My Account - Initial module release.
  • Dev - EMAILS & MISC. - Reports - Custom Ranges - "Today" and "Yesterday" custom ranges added.
  • Dev - EMAILS & MISC. - Reports - Orders - "Product Sales (Daily)" new report added. "Product Sales" renamed to "Product Sales (Monthly)".
  • Dev - EMAILS & MISC. - Reports - Code refactoring - wcj-reports-functions.php added.
  • Tweak - Code refactoring - wcj-core-functions.php, wcj-order-functions.php, wcj-product-functions.php, wcj-date-time-functions.php files added.
  • Tweak - JS files naming fixed (wcj-ajax-exchange-rates.js, wcj-product-input-fields.js, wcj-checkout.js, wcj-eu-vat-number.js).
  • Tweak - Timepicker files moved to lib directory.
  • Tweak - PRODUCTS - Product Cost Price - Renamed to "Cost of Goods".
  • Tweak - PRODUCTS - Product Visibility by User Role - Settings descriptions added.
  • Tweak - SHIPPING & ORDERS - Orders - Settings updated (custom column key info added) and restyled (columns order textarea width changed).
  • Tweak - Plus links updated.
Download this release

Release Info

Developer algoritmika
Plugin Icon 128x128 Booster for WooCommerce
Version 2.9.0
Comparing to
See all releases

Code changes from version 2.8.2 to 2.9.0

Files changed (118) hide show
  1. assets/images/rocket-icon.png +0 -0
  2. includes/add-to-cart/class-wcj-add-to-cart-per-category.php +4 -4
  3. includes/add-to-cart/class-wcj-add-to-cart-per-product-type.php +2 -2
  4. includes/add-to-cart/class-wcj-add-to-cart-per-product.php +7 -7
  5. includes/admin/class-wc-settings-jetpack.php +34 -9
  6. includes/admin/class-wcj-settings-custom-fields.php +19 -2
  7. includes/admin/class-wcj-settings-manager.php +149 -0
  8. includes/admin/class-wcj-tools.php +1 -2
  9. includes/admin/wcj-modules-cats.php +7 -1
  10. includes/class-wcj-admin-bar.php +584 -0
  11. includes/class-wcj-admin-tools.php +7 -6
  12. includes/class-wcj-breadcrumbs.php +90 -0
  13. includes/class-wcj-checkout-custom-fields.php +1 -1
  14. includes/class-wcj-checkout-customization.php +75 -3
  15. includes/class-wcj-currency-exchange-rates.php +89 -1
  16. includes/class-wcj-currency-per-product.php +101 -14
  17. includes/class-wcj-emails-verification.php +31 -13
  18. includes/class-wcj-emails.php +1 -0
  19. includes/class-wcj-empty-cart-button.php +1 -0
  20. includes/class-wcj-eu-vat-number.php +6 -6
  21. includes/class-wcj-export-import.php +1 -1
  22. includes/class-wcj-general.php +78 -4
  23. includes/class-wcj-my-account.php +109 -0
  24. includes/class-wcj-offer-price.php +433 -0
  25. includes/class-wcj-order-custom-statuses.php +2 -0
  26. includes/class-wcj-order-min-amount.php +9 -7
  27. includes/class-wcj-order-quantities.php +200 -0
  28. includes/class-wcj-orders.php +51 -2
  29. includes/class-wcj-payment-gateways-currency.php +4 -2
  30. includes/class-wcj-payment-gateways-fees.php +3 -3
  31. includes/class-wcj-pdf-invoicing.php +37 -8
  32. includes/class-wcj-price-by-user-role.php +13 -2
  33. includes/class-wcj-product-add-to-cart.php +46 -18
  34. includes/class-wcj-product-by-country.php +90 -4
  35. includes/class-wcj-product-by-user-role.php +3 -1
  36. includes/class-wcj-product-by-user.php +44 -2
  37. includes/class-wcj-product-custom-info.php +56 -17
  38. includes/class-wcj-product-images.php +9 -9
  39. includes/class-wcj-product-input-fields.php +7 -3
  40. includes/class-wcj-product-listings.php +92 -2
  41. includes/class-wcj-product-open-pricing.php +5 -3
  42. includes/class-wcj-products-per-page.php +23 -22
  43. includes/class-wcj-purchase-data.php +107 -6
  44. includes/class-wcj-reports.php +25 -63
  45. includes/class-wcj-shipping-options.php +183 -0
  46. includes/class-wcj-shipping.php +6 -155
  47. includes/class-wcj-sku.php +199 -62
  48. includes/classes/class-wcj-invoice.php +1 -1
  49. includes/classes/class-wcj-module.php +9 -5
  50. includes/classes/class-wcj-pdf-invoice.php +10 -114
  51. includes/classes/class-wcj-product.php +2 -2
  52. includes/classes/class-wcj-scripts.php +151 -0
  53. includes/classes/class-wcj-tcpdf.php +11 -26
  54. includes/css/wcj-offer-price.css +81 -0
  55. includes/emails/class-wc-email-wcj-custom.php +3 -3
  56. includes/exchange-rates/class-wcj-exchange-rates-crons.php +27 -4
  57. includes/exchange-rates/class-wcj-exchange-rates.php +6 -6
  58. includes/functions/wcj-admin-functions.php +88 -0
  59. includes/functions/wcj-core-functions.php +45 -0
  60. includes/functions/wcj-country-functions.php +225 -41
  61. includes/{currencies → functions}/wcj-currencies.php +6 -2
  62. includes/functions/wcj-date-time-functions.php +160 -0
  63. includes/functions/wcj-debug-functions.php +14 -8
  64. includes/functions/wcj-eu-vat-functions.php +123 -0
  65. includes/functions/wcj-functions.php +0 -1092
  66. includes/functions/wcj-general-functions.php +404 -0
  67. includes/functions/wcj-invoicing-functions.php +199 -3
  68. includes/functions/wcj-order-functions.php +168 -0
  69. includes/functions/wcj-price-currency-functions.php +34 -3
  70. includes/functions/wcj-product-functions.php +378 -0
  71. includes/functions/wcj-reports-functions.php +148 -0
  72. includes/functions/wcj-user-roles-functions.php +56 -11
  73. includes/gateways/class-wc-gateway-wcj-custom.php +18 -15
  74. includes/input-fields/class-wcj-product-input-fields-abstract.php +56 -14
  75. includes/input-fields/class-wcj-product-input-fields-global.php +7 -3
  76. includes/input-fields/class-wcj-product-input-fields-per-product.php +12 -9
  77. includes/js/{ajax_exchange_rates.js → wcj-ajax-exchange-rates.js} +1 -1
  78. includes/js/{checkout.js → wcj-checkout.js} +0 -0
  79. includes/js/{eu-vat-number.js → wcj-eu-vat-number.js} +0 -0
  80. includes/js/wcj-offer-price.js +51 -0
  81. includes/js/{product-input-fields.js → wcj-product-input-fields.js} +0 -0
  82. includes/js/wcj-variations-frontend.js +104 -21
  83. includes/lib/tcpdf_min/config/tcpdf_config.php +4 -7
  84. includes/lib/tcpdf_min/fonts/angsanaupc.ctg.z +0 -0
  85. includes/lib/tcpdf_min/fonts/angsanaupc.php +0 -48
  86. includes/lib/tcpdf_min/fonts/angsanaupc.z +0 -0
  87. includes/lib/tcpdf_min/fonts/angsanaupcb.ctg.z +0 -0
  88. includes/lib/tcpdf_min/fonts/angsanaupcb.php +0 -48
  89. includes/lib/tcpdf_min/fonts/angsanaupcb.z +0 -0
  90. includes/lib/tcpdf_min/fonts/angsanaupcbi.ctg.z +0 -0
  91. includes/lib/tcpdf_min/fonts/angsanaupcbi.php +0 -37
  92. includes/lib/tcpdf_min/fonts/angsanaupcbi.z +0 -0
  93. includes/lib/tcpdf_min/fonts/angsanaupci.ctg.z +0 -0
  94. includes/lib/tcpdf_min/fonts/angsanaupci.php +0 -37
  95. includes/lib/tcpdf_min/fonts/angsanaupci.z +0 -0
  96. includes/lib/tcpdf_min/fonts/cordiaupc.ctg.z +0 -0
  97. includes/lib/tcpdf_min/fonts/cordiaupc.php +0 -48
  98. includes/lib/tcpdf_min/fonts/cordiaupc.z +0 -0
  99. includes/lib/tcpdf_min/fonts/cordiaupcb.ctg.z +0 -0
  100. includes/lib/tcpdf_min/fonts/cordiaupcb.php +0 -48
  101. includes/lib/tcpdf_min/fonts/cordiaupcb.z +0 -0
  102. includes/lib/tcpdf_min/fonts/cordiaupcbi.ctg.z +0 -0
  103. includes/lib/tcpdf_min/fonts/cordiaupcbi.php +0 -37
  104. includes/lib/tcpdf_min/fonts/cordiaupcbi.z +0 -0
  105. includes/lib/tcpdf_min/fonts/cordiaupci.ctg.z +0 -0
  106. includes/lib/tcpdf_min/fonts/cordiaupci.php +0 -37
  107. includes/lib/tcpdf_min/fonts/cordiaupci.z +0 -0
  108. includes/lib/tcpdf_min/fonts/dejavusans.ctg.z +0 -0
  109. includes/lib/tcpdf_min/fonts/dejavusans.php +0 -16
  110. includes/lib/tcpdf_min/fonts/dejavusans.z +0 -0
  111. includes/lib/tcpdf_min/fonts/dejavusansb.ctg.z +0 -0
  112. includes/lib/tcpdf_min/fonts/dejavusansb.php +0 -16
  113. includes/lib/tcpdf_min/fonts/dejavusansb.z +0 -0
  114. includes/lib/tcpdf_min/fonts/dejavusansbi.ctg.z +0 -0
  115. includes/lib/tcpdf_min/fonts/dejavusansbi.php +0 -16
  116. includes/lib/tcpdf_min/fonts/dejavusansbi.z +0 -0
  117. includes/lib/tcpdf_min/fonts/droidsansfallback.ctg.z +0 -0
  118. includes/lib/tcpdf_min/fonts/droidsansfallback.php +0 -14
assets/images/rocket-icon.png DELETED
Binary file
includes/add-to-cart/class-wcj-add-to-cart-per-category.php CHANGED
@@ -15,7 +15,7 @@ class WCJ_Add_To_Cart_Per_Category {
15
  /**
16
  * Constructor.
17
  */
18
- public function __construct() {
19
  if ( 'yes' === get_option( 'wcj_add_to_cart_per_category_enabled' ) ) {
20
  add_filter( 'woocommerce_product_single_add_to_cart_text', array( $this, 'change_add_to_cart_button_text_single' ), PHP_INT_MAX );
21
  add_filter( 'woocommerce_product_add_to_cart_text', array( $this, 'change_add_to_cart_button_text_archive' ), PHP_INT_MAX );
@@ -25,14 +25,14 @@ class WCJ_Add_To_Cart_Per_Category {
25
  /**
26
  * change_add_to_cart_button_text_single.
27
  */
28
- public function change_add_to_cart_button_text_single( $add_to_cart_text ) {
29
  return $this->change_add_to_cart_button_text( $add_to_cart_text, 'single' );
30
  }
31
 
32
  /**
33
  * change_add_to_cart_button_text_archive.
34
  */
35
- public function change_add_to_cart_button_text_archive( $add_to_cart_text ) {
36
  return $this->change_add_to_cart_button_text( $add_to_cart_text, 'archive' );
37
  }
38
 
@@ -41,7 +41,7 @@ class WCJ_Add_To_Cart_Per_Category {
41
  *
42
  * @version 2.2.6
43
  */
44
- public function change_add_to_cart_button_text( $add_to_cart_text, $single_or_archive ) {
45
  $product_categories = get_the_terms( get_the_ID(), 'product_cat' );
46
  if ( empty( $product_categories ) ) return $add_to_cart_text;
47
  for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_add_to_cart_per_category_total_groups_number', 1 ) ); $i++ ) {
15
  /**
16
  * Constructor.
17
  */
18
+ function __construct() {
19
  if ( 'yes' === get_option( 'wcj_add_to_cart_per_category_enabled' ) ) {
20
  add_filter( 'woocommerce_product_single_add_to_cart_text', array( $this, 'change_add_to_cart_button_text_single' ), PHP_INT_MAX );
21
  add_filter( 'woocommerce_product_add_to_cart_text', array( $this, 'change_add_to_cart_button_text_archive' ), PHP_INT_MAX );
25
  /**
26
  * change_add_to_cart_button_text_single.
27
  */
28
+ function change_add_to_cart_button_text_single( $add_to_cart_text ) {
29
  return $this->change_add_to_cart_button_text( $add_to_cart_text, 'single' );
30
  }
31
 
32
  /**
33
  * change_add_to_cart_button_text_archive.
34
  */
35
+ function change_add_to_cart_button_text_archive( $add_to_cart_text ) {
36
  return $this->change_add_to_cart_button_text( $add_to_cart_text, 'archive' );
37
  }
38
 
41
  *
42
  * @version 2.2.6
43
  */
44
+ function change_add_to_cart_button_text( $add_to_cart_text, $single_or_archive ) {
45
  $product_categories = get_the_terms( get_the_ID(), 'product_cat' );
46
  if ( empty( $product_categories ) ) return $add_to_cart_text;
47
  for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_add_to_cart_per_category_total_groups_number', 1 ) ); $i++ ) {
includes/add-to-cart/class-wcj-add-to-cart-per-product-type.php CHANGED
@@ -15,7 +15,7 @@ class WCJ_Add_To_Cart_Per_Product_Type {
15
  /**
16
  * Constructor.
17
  */
18
- public function __construct() {
19
  if ( 'yes' === get_option( 'wcj_add_to_cart_enabled' ) ) {
20
  if ( get_option( 'wcj_add_to_cart_text_enabled' ) == 'yes' ) {
21
  add_filter( 'woocommerce_product_single_add_to_cart_text', array( $this, 'custom_add_to_cart_button_text' ), 100 );
@@ -29,7 +29,7 @@ class WCJ_Add_To_Cart_Per_Product_Type {
29
  *
30
  * @version 2.7.0
31
  */
32
- public function custom_add_to_cart_button_text( $add_to_cart_text ) {
33
 
34
  global $woocommerce, $product;
35
 
15
  /**
16
  * Constructor.
17
  */
18
+ function __construct() {
19
  if ( 'yes' === get_option( 'wcj_add_to_cart_enabled' ) ) {
20
  if ( get_option( 'wcj_add_to_cart_text_enabled' ) == 'yes' ) {
21
  add_filter( 'woocommerce_product_single_add_to_cart_text', array( $this, 'custom_add_to_cart_button_text' ), 100 );
29
  *
30
  * @version 2.7.0
31
  */
32
+ function custom_add_to_cart_button_text( $add_to_cart_text ) {
33
 
34
  global $woocommerce, $product;
35
 
includes/add-to-cart/class-wcj-add-to-cart-per-product.php CHANGED
@@ -15,7 +15,7 @@ class WCJ_Add_To_Cart_Per_Product {
15
  /**
16
  * Constructor.
17
  */
18
- public function __construct() {
19
  if ( 'yes' === get_option( 'wcj_add_to_cart_per_product_enabled' ) ) {
20
  add_filter( 'woocommerce_product_single_add_to_cart_text', array( $this, 'change_add_to_cart_button_text_single' ), PHP_INT_MAX );
21
  add_filter( 'woocommerce_product_add_to_cart_text', array( $this, 'change_add_to_cart_button_text_archive' ), PHP_INT_MAX );
@@ -27,14 +27,14 @@ class WCJ_Add_To_Cart_Per_Product {
27
  /**
28
  * change_add_to_cart_button_text_single.
29
  */
30
- public function change_add_to_cart_button_text_single( $add_to_cart_text ) {
31
  return $this->change_add_to_cart_button_text( $add_to_cart_text, 'single' );
32
  }
33
 
34
  /**
35
  * change_add_to_cart_button_text_archive.
36
  */
37
- public function change_add_to_cart_button_text_archive( $add_to_cart_text ) {
38
  return $this->change_add_to_cart_button_text( $add_to_cart_text, 'archive' );
39
  }
40
 
@@ -43,7 +43,7 @@ class WCJ_Add_To_Cart_Per_Product {
43
  *
44
  * @version 2.7.0
45
  */
46
- public function change_add_to_cart_button_text( $add_to_cart_text, $single_or_archive ) {
47
  global $product;
48
  if ( ! $product ) {
49
  return $add_to_cart_text;
@@ -59,7 +59,7 @@ class WCJ_Add_To_Cart_Per_Product {
59
  /**
60
  * save_custom_add_to_cart_meta_box.
61
  */
62
- public function save_custom_add_to_cart_meta_box( $post_id, $post ) {
63
  // Check that we are saving with custom add to cart metabox displayed.
64
  if ( ! isset( $_POST['woojetpack_custom_add_to_cart_save_post'] ) ) {
65
  return;
@@ -75,7 +75,7 @@ class WCJ_Add_To_Cart_Per_Product {
75
  *
76
  * @version 2.4.8
77
  */
78
- public function add_custom_add_to_cart_meta_box() {
79
  add_meta_box(
80
  'wc-jetpack-custom-add-to-cart',
81
  __( 'Booster: Custom Add to Cart', 'woocommerce-jetpack' ),
@@ -89,7 +89,7 @@ class WCJ_Add_To_Cart_Per_Product {
89
  /**
90
  * create_custom_add_to_cart_meta_box.
91
  */
92
- public function create_custom_add_to_cart_meta_box() {
93
 
94
  $current_post_id = get_the_ID();
95
 
15
  /**
16
  * Constructor.
17
  */
18
+ function __construct() {
19
  if ( 'yes' === get_option( 'wcj_add_to_cart_per_product_enabled' ) ) {
20
  add_filter( 'woocommerce_product_single_add_to_cart_text', array( $this, 'change_add_to_cart_button_text_single' ), PHP_INT_MAX );
21
  add_filter( 'woocommerce_product_add_to_cart_text', array( $this, 'change_add_to_cart_button_text_archive' ), PHP_INT_MAX );
27
  /**
28
  * change_add_to_cart_button_text_single.
29
  */
30
+ function change_add_to_cart_button_text_single( $add_to_cart_text ) {
31
  return $this->change_add_to_cart_button_text( $add_to_cart_text, 'single' );
32
  }
33
 
34
  /**
35
  * change_add_to_cart_button_text_archive.
36
  */
37
+ function change_add_to_cart_button_text_archive( $add_to_cart_text ) {
38
  return $this->change_add_to_cart_button_text( $add_to_cart_text, 'archive' );
39
  }
40
 
43
  *
44
  * @version 2.7.0
45
  */
46
+ function change_add_to_cart_button_text( $add_to_cart_text, $single_or_archive ) {
47
  global $product;
48
  if ( ! $product ) {
49
  return $add_to_cart_text;
59
  /**
60
  * save_custom_add_to_cart_meta_box.
61
  */
62
+ function save_custom_add_to_cart_meta_box( $post_id, $post ) {
63
  // Check that we are saving with custom add to cart metabox displayed.
64
  if ( ! isset( $_POST['woojetpack_custom_add_to_cart_save_post'] ) ) {
65
  return;
75
  *
76
  * @version 2.4.8
77
  */
78
+ function add_custom_add_to_cart_meta_box() {
79
  add_meta_box(
80
  'wc-jetpack-custom-add-to-cart',
81
  __( 'Booster: Custom Add to Cart', 'woocommerce-jetpack' ),
89
  /**
90
  * create_custom_add_to_cart_meta_box.
91
  */
92
+ function create_custom_add_to_cart_meta_box() {
93
 
94
  $current_post_id = get_the_ID();
95
 
includes/admin/class-wc-settings-jetpack.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings
4
  *
5
- * @version 2.8.0
6
  * @since 1.0.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -55,7 +55,7 @@ class WC_Settings_Jetpack extends WC_Settings_Page {
55
  /**
56
  * Output sections (modules) sub menu
57
  *
58
- * @version 2.7.0
59
  */
60
  function output_sections_submenu() {
61
  global $current_section;
@@ -70,6 +70,8 @@ class WC_Settings_Jetpack extends WC_Settings_Page {
70
  if ( isset( $module_status['id'] ) && isset( $module_status['default'] ) ) {
71
  if ( 'yes' === get_option( $module_status['id'], $module_status['default'] ) ) {
72
  $active++;
 
 
73
  }
74
  $all++;
75
  }
@@ -93,6 +95,11 @@ class WC_Settings_Jetpack extends WC_Settings_Page {
93
  if ( empty( $sections ) || 1 === count( $sections ) ) {
94
  return;
95
  }
 
 
 
 
 
96
  echo '<ul class="subsubsub">';
97
  foreach ( $this->cats[ $current_cat ]['all_cat_ids'] as $id ) {
98
  $label = $sections[ $id ];
@@ -136,7 +143,8 @@ class WC_Settings_Jetpack extends WC_Settings_Page {
136
  /**
137
  * Output the settings.
138
  *
139
- * @version 2.7.0
 
140
  */
141
  function output() {
142
 
@@ -150,14 +158,28 @@ class WC_Settings_Jetpack extends WC_Settings_Page {
150
  ? false : true;
151
 
152
  // Deprecated message
153
- $deprecated_modules_and_links = array(
154
- 'product_info' => '<a href="' . admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=products&section=product_custom_info' ) . '">' . __( 'Product Info', 'woocommerce-jetpack' ) . '</a>',
155
- );
156
- if ( array_key_exists( $current_section, $deprecated_modules_and_links ) ) {
157
  echo '<div id="wcj_message" class="error">';
158
  echo '<p>';
159
  echo '<strong>';
160
- echo sprintf( __( 'Please note that current <em>%s</em> module is deprecated and will be removed in future updates. Please use <em>%s</em> module instead.', 'woocommerce-jetpack' ), WCJ()->modules[ $current_section ]->short_desc, $deprecated_modules_and_links[ $current_section ] );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
161
  echo '</strong>';
162
  echo '</p>';
163
  echo '</div>';
@@ -287,7 +309,7 @@ class WC_Settings_Jetpack extends WC_Settings_Page {
287
  /**
288
  * output_dashboard_modules.
289
  *
290
- * @version 2.5.2
291
  */
292
  function output_dashboard_modules( $settings, $cat_id = '' ) {
293
  $readme_html = '';
@@ -318,6 +340,9 @@ class WC_Settings_Jetpack extends WC_Settings_Page {
318
  $section = $the_feature['id'];
319
  $section = str_replace( 'wcj_', '', $section );
320
  $section = str_replace( '_enabled', '', $section );
 
 
 
321
  if ( '' != $cat_id ) {
322
  if ( 'active_modules_only' === $cat_id ) {
323
  if ( 'no' === get_option( $the_feature['id'] ) ) continue;
2
  /**
3
  * Booster for WooCommerce - Settings
4
  *
5
+ * @version 2.9.0
6
  * @since 1.0.0
7
  * @author Algoritmika Ltd.
8
  */
55
  /**
56
  * Output sections (modules) sub menu
57
  *
58
+ * @version 2.9.0
59
  */
60
  function output_sections_submenu() {
61
  global $current_section;
70
  if ( isset( $module_status['id'] ) && isset( $module_status['default'] ) ) {
71
  if ( 'yes' === get_option( $module_status['id'], $module_status['default'] ) ) {
72
  $active++;
73
+ } elseif ( wcj_is_module_deprecated( $module_status['id'], true ) ) {
74
+ continue;
75
  }
76
  $all++;
77
  }
95
  if ( empty( $sections ) || 1 === count( $sections ) ) {
96
  return;
97
  }
98
+ foreach ( $this->cats[ $current_cat ]['all_cat_ids'] as $key => $id ) {
99
+ if ( wcj_is_module_deprecated( $id, false, true ) ) {
100
+ unset( $this->cats[ $current_cat ]['all_cat_ids'][ $key ] );
101
+ }
102
+ }
103
  echo '<ul class="subsubsub">';
104
  foreach ( $this->cats[ $current_cat ]['all_cat_ids'] as $id ) {
105
  $label = $sections[ $id ];
143
  /**
144
  * Output the settings.
145
  *
146
+ * @version 2.9.0
147
+ * @todo (maybe) admin_notices
148
  */
149
  function output() {
150
 
158
  ? false : true;
159
 
160
  // Deprecated message
161
+ if ( $replacement_module = wcj_is_module_deprecated( $current_section ) ) {
 
 
 
162
  echo '<div id="wcj_message" class="error">';
163
  echo '<p>';
164
  echo '<strong>';
165
+ echo sprintf(
166
+ __( 'Please note that current <em>%s</em> module is deprecated and will be removed in future updates. Please use <em>%s</em> module instead.', 'woocommerce-jetpack' ),
167
+ WCJ()->modules[ $current_section ]->short_desc,
168
+ '<a href="' . admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=' . $replacement_module['cat'] . '&section=' . $replacement_module['module'] ) . '">' .
169
+ $replacement_module['title'] . '</a>'
170
+ );
171
+ echo ' <span style="color:red;">' . __( 'Module will be removed from the module\'s list as soon as you disable it.', 'woocommerce-jetpack' ) . '</span>';
172
+ echo '</strong>';
173
+ echo '</p>';
174
+ echo '</div>';
175
+ }
176
+
177
+ // "Under development" message
178
+ if ( isset( WCJ()->modules[ $current_section ]->dev ) && true === WCJ()->modules[ $current_section ]->dev ) {
179
+ echo '<div id="wcj_message" class="error">';
180
+ echo '<p>';
181
+ echo '<strong>';
182
+ echo sprintf( __( 'Please note that <em>%s</em> module is currently under development. Until stable module version is released, options can be changed or some options can be moved to paid plugin version.', 'woocommerce-jetpack' ), WCJ()->modules[ $current_section ]->short_desc );
183
  echo '</strong>';
184
  echo '</p>';
185
  echo '</div>';
309
  /**
310
  * output_dashboard_modules.
311
  *
312
+ * @version 2.9.0
313
  */
314
  function output_dashboard_modules( $settings, $cat_id = '' ) {
315
  $readme_html = '';
340
  $section = $the_feature['id'];
341
  $section = str_replace( 'wcj_', '', $section );
342
  $section = str_replace( '_enabled', '', $section );
343
+ if ( wcj_is_module_deprecated( $section, false, true ) ) {
344
+ continue;
345
+ }
346
  if ( '' != $cat_id ) {
347
  if ( 'active_modules_only' === $cat_id ) {
348
  if ( 'no' === get_option( $the_feature['id'] ) ) continue;
includes/admin/class-wcj-settings-custom-fields.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Settings Custom Fields
4
  *
5
- * @version 2.8.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -16,10 +16,11 @@ class WCJ_Settings_Custom_Fields {
16
  /**
17
  * Constructor.
18
  *
19
- * @version 2.8.0
20
  * @since 2.8.0
21
  */
22
  function __construct() {
 
23
  add_action( 'woocommerce_admin_field_wcj_number_plus_checkbox_start', array( $this, 'output_wcj_number_plus_checkbox_start' ) );
24
  add_action( 'woocommerce_admin_field_wcj_number_plus_checkbox_end', array( $this, 'output_wcj_number_plus_checkbox_end' ) );
25
  add_filter( 'woocommerce_admin_settings_sanitize_option', array( $this, 'format_wcj_number_plus_checkbox_end' ), PHP_INT_MAX, 3 );
@@ -30,6 +31,22 @@ class WCJ_Settings_Custom_Fields {
30
  add_action( 'woocommerce_admin_field_module_tools', array( $this, 'output_module_tools' ) );
31
  }
32
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  /**
34
  * format_wcj_number_plus_checkbox_end.
35
  *
2
  /**
3
  * Booster for WooCommerce - Settings Custom Fields
4
  *
5
+ * @version 2.9.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
16
  /**
17
  * Constructor.
18
  *
19
+ * @version 2.9.0
20
  * @since 2.8.0
21
  */
22
  function __construct() {
23
+ add_action( 'woocommerce_admin_field_wcj_save_settings_button', array( $this, 'output_wcj_save_settings_button' ) );
24
  add_action( 'woocommerce_admin_field_wcj_number_plus_checkbox_start', array( $this, 'output_wcj_number_plus_checkbox_start' ) );
25
  add_action( 'woocommerce_admin_field_wcj_number_plus_checkbox_end', array( $this, 'output_wcj_number_plus_checkbox_end' ) );
26
  add_filter( 'woocommerce_admin_settings_sanitize_option', array( $this, 'format_wcj_number_plus_checkbox_end' ), PHP_INT_MAX, 3 );
31
  add_action( 'woocommerce_admin_field_module_tools', array( $this, 'output_module_tools' ) );
32
  }
33
 
34
+ /**
35
+ * output_wcj_save_settings_button.
36
+ *
37
+ * @version 2.9.0
38
+ * @since 2.9.0
39
+ */
40
+ function output_wcj_save_settings_button( $value ) {
41
+ // Output
42
+ ?><tr valign="top">
43
+ <th scope="row" class="titledesc"></th>
44
+ <td class="forminp forminp-<?php echo sanitize_title( $value['type'] ) ?>">
45
+ <input name="save" class="button-primary woocommerce-save-button" type="submit" value="<?php echo esc_html( $value['title'] ); ?>">
46
+ </td>
47
+ </tr><?php
48
+ }
49
+
50
  /**
51
  * format_wcj_number_plus_checkbox_end.
52
  *
includes/admin/class-wcj-settings-manager.php ADDED
@@ -0,0 +1,149 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Settings Manager
4
+ *
5
+ * @version 2.9.0
6
+ * @version 2.9.0
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
+
12
+ if ( ! class_exists( 'WCJ_Settings_Manager' ) ) :
13
+
14
+ class WCJ_Settings_Manager {
15
+
16
+ /**
17
+ * Constructor.
18
+ *
19
+ * @version 2.9.0
20
+ * @version 2.9.0
21
+ */
22
+ function __construct() {
23
+ // Import / Export / Reset Booster's settings
24
+ add_action( 'wp_loaded', array( $this, 'manage_options' ), PHP_INT_MAX );
25
+ }
26
+
27
+ /**
28
+ * manage_options.
29
+ *
30
+ * @version 2.5.2
31
+ * @since 2.5.2
32
+ */
33
+ function manage_options() {
34
+ if ( is_admin() ) {
35
+ if ( isset( $_POST['booster_import_settings'] ) ) {
36
+ $this->manage_options_import();
37
+ }
38
+ if ( isset( $_POST['booster_export_settings'] ) ) {
39
+ $this->manage_options_export();
40
+ }
41
+ if ( isset( $_POST['booster_reset_settings'] ) ) {
42
+ $this->manage_options_reset();
43
+ }
44
+ }
45
+ }
46
+
47
+ /**
48
+ * manage_options_import.
49
+ *
50
+ * @version 2.5.4
51
+ * @since 2.5.2
52
+ */
53
+ function manage_options_import() {
54
+ global $wcj_notice;
55
+ if( ! isset( $_FILES['booster_import_settings_file']['tmp_name'] ) || '' == $_FILES['booster_import_settings_file']['tmp_name'] ) {
56
+ $wcj_notice .= __( 'Please upload a file to import!', 'woocommerce-jetpack' );
57
+ $import_settings = array();
58
+ unset( $_POST['booster_import_settings'] );
59
+ } else {
60
+ $import_counter = 0;
61
+ $import_settings = file_get_contents( $_FILES['booster_import_settings_file']['tmp_name'] );
62
+ $import_settings = explode( PHP_EOL, preg_replace( '~(*BSR_ANYCRLF)\R~', PHP_EOL, $import_settings ) );
63
+ if ( ! is_array( $import_settings ) || 2 !== count( $import_settings ) ) {
64
+ $wcj_notice .= __( 'Wrong file format!', 'woocommerce-jetpack' );
65
+ } else {
66
+ $import_header = $import_settings[0];
67
+ $required_header = 'Booster for WooCommerce';
68
+ if ( $required_header !== substr( $import_header, 0, strlen( $required_header ) ) ) {
69
+ $wcj_notice .= __( 'Wrong file format!', 'woocommerce-jetpack' );
70
+ } else {
71
+ $import_settings = json_decode( $import_settings[1], true );
72
+ foreach ( $import_settings as $import_key => $import_setting ) {
73
+ update_option( $import_key, $import_setting );
74
+ $import_counter++;
75
+ }
76
+ $wcj_notice .= sprintf( __( '%d options successfully imported.', 'woocommerce-jetpack' ), $import_counter );
77
+ }
78
+ }
79
+ }
80
+ }
81
+
82
+ /**
83
+ * manage_options_export.
84
+ *
85
+ * @version 2.9.0
86
+ * @since 2.5.2
87
+ */
88
+ function manage_options_export() {
89
+ $export_settings = array();
90
+ $export_counter = array();
91
+ foreach ( WCJ()->modules as $module ) {
92
+ $values = $module->get_settings();
93
+ foreach ( $values as $value ) {
94
+ if ( isset( $value['default'] ) && isset( $value['id'] ) ) {
95
+ if ( isset ( $_POST['booster_export_settings'] ) ) {
96
+ $export_settings[ $value['id'] ] = get_option( $value['id'], $value['default'] );
97
+ if ( ! isset( $export_counter[ $module->short_desc ] ) ) {
98
+ $export_counter[ $module->short_desc ] = 0;
99
+ }
100
+ $export_counter[ $module->short_desc ]++;
101
+ }
102
+ }
103
+ }
104
+ }
105
+ $export_settings = json_encode( $export_settings );
106
+ $export_settings = 'Booster for WooCommerce v' . get_option( 'booster_for_woocommerce_version', 'NA' ) . PHP_EOL . $export_settings;
107
+ header( "Content-Type: application/octet-stream" );
108
+ header( "Content-Disposition: attachment; filename=booster_settings.txt" );
109
+ header( "Content-Type: application/octet-stream" );
110
+ header( "Content-Type: application/download" );
111
+ header( "Content-Description: File Transfer" );
112
+ header( "Content-Length: " . strlen( $export_settings ) );
113
+ echo $export_settings;
114
+ die();
115
+ }
116
+
117
+ /**
118
+ * manage_options_reset.
119
+ *
120
+ * @version 2.9.0
121
+ * @since 2.5.2
122
+ */
123
+ function manage_options_reset() {
124
+ global $wcj_notice;
125
+ $delete_counter = 0;
126
+ foreach ( WCJ()->modules as $module ) {
127
+ $values = $module->get_settings();
128
+ foreach ( $values as $value ) {
129
+ if ( isset( $value['id'] ) ) {
130
+ if ( isset ( $_POST['booster_reset_settings'] ) ) {
131
+ require_once( ABSPATH . 'wp-includes/pluggable.php' );
132
+ if ( wcj_is_user_role( 'administrator' ) ) {
133
+ delete_option( $value['id'] );
134
+ $delete_counter++;
135
+ }
136
+ }
137
+ }
138
+ }
139
+ }
140
+ if ( $delete_counter > 0 ) {
141
+ $wcj_notice .= sprintf( __( '%d options successfully deleted.', 'woocommerce-jetpack' ), $delete_counter );
142
+ }
143
+ }
144
+
145
+ }
146
+
147
+ endif;
148
+
149
+ return new WCJ_Settings_Manager();
includes/admin/class-wcj-tools.php CHANGED
@@ -75,8 +75,7 @@ class WCJ_Tools {
75
  echo '</tr>';
76
  do_action( 'wcj_tools_' . 'dashboard' );
77
  echo '</table>';
78
- }
79
- else {
80
  do_action( 'wcj_tools_' . $active_tab );
81
  }
82
  }
75
  echo '</tr>';
76
  do_action( 'wcj_tools_' . 'dashboard' );
77
  echo '</table>';
78
+ } else {
 
79
  do_action( 'wcj_tools_' . $active_tab );
80
  }
81
  }
includes/admin/wcj-modules-cats.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * The WooCommerce Modules Array.
6
  *
7
- * @version 2.8.0
8
  * @since 2.2.0
9
  * @author Algoritmika Ltd.
10
  */
@@ -35,6 +35,7 @@ return array(
35
  'bulk_price_converter',
36
  'wholesale_price',
37
  'product_open_pricing',
 
38
  'price_by_user_role',
39
  'product_price_by_formula',
40
  'global_discount',
@@ -121,6 +122,7 @@ return array(
121
  'desc' => __( 'Order Custom Statuses, Order Minimum Amount, Order Numbers, Custom Shipping Methods and more.', 'woocommerce-jetpack' ),
122
  'all_cat_ids' => array(
123
  'shipping',
 
124
  'left_to_free_shipping',
125
  'shipping_calculator',
126
  'shipping_by_user_role',
@@ -129,6 +131,7 @@ return array(
129
  'order_min_amount',
130
  'order_numbers',
131
  'order_custom_statuses',
 
132
  ),
133
  ),
134
 
@@ -153,7 +156,10 @@ return array(
153
  'desc' => __( 'Emails, Reports, Export, Admin Tools, General Options and more.', 'woocommerce-jetpack' ),
154
  'all_cat_ids' => array(
155
  'general',
 
 
156
  'export',
 
157
  'old_slugs',
158
  'reports',
159
  'admin_tools',
4
  *
5
  * The WooCommerce Modules Array.
6
  *
7
+ * @version 2.9.0
8
  * @since 2.2.0
9
  * @author Algoritmika Ltd.
10
  */
35
  'bulk_price_converter',
36
  'wholesale_price',
37
  'product_open_pricing',
38
+ 'offer_price',
39
  'price_by_user_role',
40
  'product_price_by_formula',
41
  'global_discount',
122
  'desc' => __( 'Order Custom Statuses, Order Minimum Amount, Order Numbers, Custom Shipping Methods and more.', 'woocommerce-jetpack' ),
123
  'all_cat_ids' => array(
124
  'shipping',
125
+ 'shipping_options',
126
  'left_to_free_shipping',
127
  'shipping_calculator',
128
  'shipping_by_user_role',
131
  'order_min_amount',
132
  'order_numbers',
133
  'order_custom_statuses',
134
+ 'order_quantities',
135
  ),
136
  ),
137
 
156
  'desc' => __( 'Emails, Reports, Export, Admin Tools, General Options and more.', 'woocommerce-jetpack' ),
157
  'all_cat_ids' => array(
158
  'general',
159
+ 'breadcrumbs',
160
+ 'admin_bar',
161
  'export',
162
+ 'my_account',
163
  'old_slugs',
164
  'reports',
165
  'admin_tools',
includes/class-wcj-admin-bar.php ADDED
@@ -0,0 +1,584 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Module - Admin Bar
4
+ *
5
+ * @version 2.9.0
6
+ * @since 2.9.0
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
+
12
+ if ( ! class_exists( 'WCJ_Admin_Bar' ) ) :
13
+
14
+ class WCJ_Admin_Bar extends WCJ_Module {
15
+
16
+ /**
17
+ * Constructor.
18
+ *
19
+ * @version 2.9.0
20
+ * @since 2.9.0
21
+ * @todo (maybe) custom user nodes
22
+ * @todo (maybe) optional nodes selection
23
+ * @todo (maybe) add WooCommerce versions (from / to) to nodes
24
+ * @todo (maybe) customizable icons
25
+ * @todo (maybe) separate "Booster Active Modules" admin bar menu
26
+ * @todo (maybe) separate "Booster Modules" admin bar menu
27
+ * @todo (maybe) separate "Booster Tools" admin bar menu
28
+ * @todo (maybe) separate "WooCommerce Reports" admin bar menu
29
+ * @todo (maybe) separate "WooCommerce Products" admin bar menu
30
+ * @todo (maybe) separate "WooCommerce Settings" admin bar menu
31
+ */
32
+ function __construct() {
33
+
34
+ $this->id = 'admin_bar';
35
+ $this->short_desc = __( 'Admin Bar', 'woocommerce-jetpack' );
36
+ $this->desc = __( 'WooCommerce admin bar.', 'woocommerce-jetpack' );
37
+ $this->link_slug = 'woocommerce-admin-bar';
38
+ parent::__construct();
39
+
40
+ if ( $this->is_enabled() ) {
41
+ if ( 'yes' === get_option( 'wcj_admin_bar_wc_enabled', 'yes' ) ) {
42
+ add_action( 'admin_bar_menu', array( $this, 'add_woocommerce_admin_bar' ), PHP_INT_MAX );
43
+ add_action( 'wp_head', array( $this, 'add_woocommerce_admin_bar_icon_style' ) );
44
+ add_action( 'admin_head', array( $this, 'add_woocommerce_admin_bar_icon_style' ) );
45
+ }
46
+ if ( 'yes' === get_option( 'wcj_admin_bar_booster_enabled', 'yes' ) ) {
47
+ add_action( 'admin_bar_menu', array( $this, 'add_booster_admin_bar' ), PHP_INT_MAX );
48
+ add_action( 'wp_head', array( $this, 'add_booster_admin_bar_icon_style' ) );
49
+ add_action( 'admin_head', array( $this, 'add_booster_admin_bar_icon_style' ) );
50
+ }
51
+ add_action( 'woojetpack_after_settings_save', array( $this, 'reload_page_after_settings_save' ), PHP_INT_MAX, 2 );
52
+ }
53
+ }
54
+
55
+ /**
56
+ * reload_page_after_settings_save.
57
+ *
58
+ * @version 2.9.0
59
+ * @since 2.9.0
60
+ * @todo (maybe) somehow add "Your settings have been saved." admin notice
61
+ */
62
+ function reload_page_after_settings_save( $sections, $current_section ) {
63
+ // This function is needed so admin bar menus would appear immediately after module settings are saved (i.e. without additional page refresh)
64
+ if ( $this->id === $current_section ) {
65
+ wp_safe_redirect( add_query_arg( '', '' ) );
66
+ exit;
67
+ }
68
+ }
69
+
70
+ /**
71
+ * add_booster_admin_bar_icon_style.
72
+ *
73
+ * @version 2.9.0
74
+ * @since 2.9.0
75
+ */
76
+ function add_booster_admin_bar_icon_style() {
77
+ echo '<style type="text/css"> #wpadminbar #wp-admin-bar-booster .ab-icon:before { content: "\f185"; top: 3px; } </style>';
78
+ }
79
+
80
+ /**
81
+ * add_woocommerce_admin_bar_icon_style.
82
+ *
83
+ * @version 2.9.0
84
+ * @since 2.9.0
85
+ */
86
+ function add_woocommerce_admin_bar_icon_style() {
87
+ echo '<style type="text/css"> #wpadminbar #wp-admin-bar-wcj-wc .ab-icon:before { content: "\f174"; top: 3px; } </style>';
88
+ }
89
+
90
+ /**
91
+ * add_woocommerce_admin_bar_nodes.
92
+ *
93
+ * @version 2.9.0
94
+ * @since 2.9.0
95
+ */
96
+ function add_woocommerce_admin_bar_nodes( $wp_admin_bar, $nodes, $parent_id ) {
97
+ foreach ( $nodes as $node_id => $node ) {
98
+ $id = ( false !== $parent_id ? $parent_id . '-' . $node_id : $node_id );
99
+ $args = array(
100
+ 'parent' => $parent_id,
101
+ 'id' => $id,
102
+ 'title' => $node['title'],
103
+ 'href' => $node['href'],
104
+ 'meta' => array( 'title' => $node['title'] ),
105
+ );
106
+ if ( isset( $node['meta'] ) ) {
107
+ $args['meta'] = array_merge( $args['meta'], $node['meta'] );
108
+ }
109
+ $wp_admin_bar->add_node( $args );
110
+ if ( isset( $node['nodes'] ) ) {
111
+ // Recursion
112
+ $this->add_woocommerce_admin_bar_nodes( $wp_admin_bar, $node['nodes'], $id );
113
+ }
114
+ }
115
+ }
116
+
117
+ /**
118
+ * get_nodes_booster_modules.
119
+ *
120
+ * @version 2.9.0
121
+ * @since 2.9.0
122
+ * @todo (maybe) dashes instead of underscores
123
+ * @todo (maybe) dashboard > alphabetically - list all modules
124
+ * @todo (maybe) dashboard > by_category - list all modules
125
+ */
126
+ function get_nodes_booster_modules() {
127
+ $nodes = array();
128
+ $cats = include( wcj_plugin_path() . '/includes/admin/' . 'wcj-modules-cats.php' );
129
+ $active_modules = array();
130
+ foreach ( $cats as $id => $label_info ) {
131
+ $nodes[ $id ] = array(
132
+ 'title' => $label_info['label'],
133
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=' . $id ),
134
+ 'meta' => array( 'title' => strip_tags( $label_info['desc'] ) ),
135
+ );
136
+ if ( 'dashboard' === $id ) {
137
+ $nodes[ $id ]['nodes'] = array(
138
+ 'alphabetically' => array(
139
+ 'title' => __( 'Alphabetically', 'woocommerce-jetpack' ),
140
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=dashboard&section=alphabetically' ),
141
+ ),
142
+ 'by_category' => array(
143
+ 'title' => __( 'By Category', 'woocommerce-jetpack' ),
144
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=dashboard&section=by_category' ),
145
+ ),
146
+ 'active' => array(
147
+ 'title' => __( 'Active', 'woocommerce-jetpack' ),
148
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=dashboard&section=active' ),
149
+ ),
150
+ 'manager' => array(
151
+ 'title' => __( 'Manage Settings', 'woocommerce-jetpack' ),
152
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=dashboard&section=manager' ),
153
+ ),
154
+ );
155
+ } else {
156
+ foreach ( $label_info['all_cat_ids'] as $link_id ) {
157
+ if ( wcj_is_module_deprecated( $link_id, false, true ) ) {
158
+ continue;
159
+ }
160
+ $nodes[ $id ]['nodes'][ $link_id ] = array(
161
+ 'title' => WCJ()->modules[ $link_id ]->short_desc,
162
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=' . $id . '&section=' . $link_id ),
163
+ 'meta' => array( 'title' => WCJ()->modules[ $link_id ]->desc ),
164
+ 'nodes' => array(
165
+ 'settings' => array(
166
+ 'title' => __( 'Settings', 'woocommerce-jetpack' ),
167
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=' . $id . '&section=' . $link_id ),
168
+ ),
169
+ 'docs' => array(
170
+ 'title' => __( 'Documentation', 'woocommerce-jetpack' ),
171
+ 'href' => WCJ()->modules[ $link_id ]->link . '?utm_source=module_documentation&utm_medium=admin_bar_link&utm_campaign=booster_documentation',
172
+ 'meta' => array( 'target' => '_blank' ),
173
+ ),
174
+ ),
175
+ );
176
+ if ( WCJ()->modules[ $link_id ]->is_enabled() ) {
177
+ $active_modules[ $link_id ] = $nodes[ $id ]['nodes'][ $link_id ];
178
+ }
179
+ }
180
+ }
181
+ }
182
+ if ( ! empty( $active_modules ) ) {
183
+ usort( $active_modules, array( $this, 'usort_compare_by_title' ) );
184
+ $nodes['dashboard']['nodes']['active']['nodes'] = $active_modules;
185
+ }
186
+ return $nodes;
187
+ }
188
+
189
+ /**
190
+ * usort_compare_by_title.
191
+ *
192
+ * @version 2.9.0
193
+ * @since 2.9.0
194
+ */
195
+ function usort_compare_by_title( $a, $b ) {
196
+ if ( $a['title'] == $b['title'] ) {
197
+ return 0;
198
+ }
199
+ return ( $a['title'] < $b['title'] ) ? -1 : 1;
200
+ }
201
+
202
+ /**
203
+ * get_nodes_booster_tools.
204
+ *
205
+ * @version 2.9.0
206
+ * @since 2.9.0
207
+ */
208
+ function get_nodes_booster_tools() {
209
+ $nodes = array();
210
+ $tools = apply_filters( 'wcj_tools_tabs', array(
211
+ array(
212
+ 'id' => 'dashboard',
213
+ 'title' => __( 'Dashboard', 'woocommerce-jetpack' ),
214
+ 'desc' => __( 'This dashboard lets you check statuses and short descriptions of all available Booster for WooCommerce tools. Tools can be enabled through WooCommerce > Settings > Booster.', 'woocommerce-jetpack' ),
215
+ ),
216
+ ) );
217
+ foreach ( $tools as $tool ) {
218
+ $nodes[ $tool['id'] ] = array(
219
+ 'title' => $tool['title'],
220
+ 'href' => admin_url( 'admin.php?page=wcj-tools&tab=' . $tool['id'] ),
221
+ );
222
+ if ( isset( $tool['desc'] ) ) {
223
+ $nodes[ $tool['id'] ]['meta']['title'] = $tool['desc'];
224
+ }
225
+ }
226
+ return $nodes;
227
+ }
228
+
229
+ /**
230
+ * add_booster_admin_bar.
231
+ *
232
+ * @version 2.9.0
233
+ * @since 2.9.0
234
+ */
235
+ function add_booster_admin_bar( $wp_admin_bar ) {
236
+ $nodes = array(
237
+ 'booster' => array(
238
+ 'title' => '<span class="ab-icon"></span>' . __( 'Booster', 'woocommerce-jetpack' ),
239
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=jetpack' ),
240
+ 'meta' => array(
241
+ 'title' => __( 'Booster - Settings', 'woocommerce-jetpack' ),
242
+ ),
243
+ 'nodes' => array(
244
+ 'settings' => array(
245
+ 'title' => __( 'Settings', 'woocommerce-jetpack' ),
246
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=jetpack' ),
247
+ 'nodes' => $this->get_nodes_booster_modules(),
248
+ ),
249
+ 'tools' => array(
250
+ 'title' => __( 'Tools', 'woocommerce-jetpack' ),
251
+ 'href' => admin_url( 'admin.php?page=wcj-tools' ),
252
+ 'nodes' => $this->get_nodes_booster_tools(),
253
+ ),
254
+ ),
255
+ ),
256
+ );
257
+ $this->add_woocommerce_admin_bar_nodes( $wp_admin_bar, $nodes, false );
258
+ }
259
+
260
+ /**
261
+ * get_nodes_orders_reports.
262
+ *
263
+ * @version 2.9.0
264
+ * @since 2.9.0
265
+ */
266
+ function get_nodes_orders_reports() {
267
+ $nodes = array();
268
+ $reports = array(
269
+ 'sales_by_date' => __( 'Sales by date', 'woocommerce' ),
270
+ 'sales_by_product' => __( 'Sales by product', 'woocommerce' ),
271
+ 'sales_by_category' => __( 'Sales by category', 'woocommerce' ),
272
+ 'coupon_usage' => __( 'Coupons by date', 'woocommerce' ),
273
+ );
274
+ foreach ( $reports as $report_id => $report_title ) {
275
+ $nodes[ $report_id ] = array(
276
+ 'title' => $report_title,
277
+ 'href' => admin_url( 'admin.php?page=wc-reports&tab=orders&report=' . $report_id ),
278
+ 'nodes' => array(
279
+ '7day' => array(
280
+ 'title' => __( 'Last 7 days', 'woocommerce' ),
281
+ 'href' => admin_url( 'admin.php?page=wc-reports&tab=orders&report=' . $report_id . '&range=7day' ),
282
+ ),
283
+ 'month' => array(
284
+ 'title' => __( 'This month', 'woocommerce' ),
285
+ 'href' => admin_url( 'admin.php?page=wc-reports&tab=orders&report=' . $report_id . '&range=month' ),
286
+ ),
287
+ 'last-month' => array(
288
+ 'title' => __( 'Last month', 'woocommerce' ),
289
+ 'href' => admin_url( 'admin.php?page=wc-reports&tab=orders&report=' . $report_id . '&range=last_month' ),
290
+ ),
291
+ 'year' => array(
292
+ 'title' => __( 'Year', 'woocommerce' ),
293
+ 'href' => admin_url( 'admin.php?page=wc-reports&tab=orders&report=' . $report_id . '&range=year' ),
294
+ ),
295
+ ),
296
+ );
297
+ }
298
+ return $nodes;
299
+ }
300
+
301
+ /**
302
+ * add_woocommerce_admin_bar.
303
+ *
304
+ * @version 2.9.0
305
+ * @since 2.9.0
306
+ * @todo (maybe) reports > customers > customers > add dates
307
+ * @todo (maybe) reports > taxes > taxes_by_code > add dates
308
+ * @todo (maybe) reports > taxes > taxes_by_date > add dates
309
+ * @todo (maybe) settings > add custom sections (i.e. Booster and other plugins)
310
+ * @todo (maybe) extensions > add sections
311
+ */
312
+ function add_woocommerce_admin_bar( $wp_admin_bar ) {
313
+ $nodes = array(
314
+ 'wcj-wc' => array(
315
+ 'title' => '<span class="ab-icon"></span>' . __( 'WooCommerce', 'woocommerce' ),
316
+ 'href' => admin_url( 'admin.php?page=wc-settings' ),
317
+ 'meta' => array(
318
+ 'title' => __( 'WooCommerce settings', 'woocommerce' ),
319
+ ),
320
+ 'nodes' => array(
321
+ 'orders' => array(
322
+ 'title' => __( 'Orders', 'woocommerce' ),
323
+ 'href' => admin_url( 'edit.php?post_type=shop_order' ),
324
+ 'nodes' => array(
325
+ 'orders' => array(
326
+ 'title' => __( 'Orders', 'woocommerce' ),
327
+ 'href' => admin_url( 'edit.php?post_type=shop_order' ),
328
+ ),
329
+ 'add-order' => array(
330
+ 'title' => __( 'Add order', 'woocommerce' ),
331
+ 'href' => admin_url( 'post-new.php?post_type=shop_order' ),
332
+ ),
333
+ 'customers' => array(
334
+ 'title' => __( 'Customers', 'woocommerce' ),
335
+ 'href' => admin_url( 'users.php?role=customer' ),
336
+ ),
337
+ ),
338
+ ),
339
+ 'reports' => array(
340
+ 'title' => __( 'Reports', 'woocommerce' ),
341
+ 'href' => admin_url( 'admin.php?page=wc-reports' ),
342
+ 'nodes' => array(
343
+ 'orders' => array(
344
+ 'title' => __( 'Orders', 'woocommerce' ),
345
+ 'href' => admin_url( 'admin.php?page=wc-reports&tab=orders' ),
346
+ 'nodes' => $this->get_nodes_orders_reports(),
347
+ ),
348
+ 'customers' => array(
349
+ 'title' => __( 'Customers', 'woocommerce' ),
350
+ 'href' => admin_url( 'admin.php?page=wc-reports&tab=customers' ),
351
+ 'nodes' => array(
352
+ 'customers' => array(
353
+ 'title' => __( 'Customers vs. guests', 'woocommerce' ),
354
+ 'href' => admin_url( 'admin.php?page=wc-reports&tab=customers&report=customers' ),
355
+ ),
356
+ 'customer-list' => array(
357
+ 'title' => __( 'Customer list', 'woocommerce' ),
358
+ 'href' => admin_url( 'admin.php?page=wc-reports&tab=customers&report=customer_list' ),
359
+ ),
360
+ ),
361
+ ),
362
+ 'stock' => array(
363
+ 'title' => __( 'Stock', 'woocommerce' ),
364
+ 'href' => admin_url( 'admin.php?page=wc-reports&tab=stock' ),
365
+ 'nodes' => array(
366
+ 'low-in-stock' => array(
367
+ 'title' => __( 'Low in stock', 'woocommerce' ),
368
+ 'href' => admin_url( 'admin.php?page=wc-reports&tab=stock&report=low_in_stock' ),
369
+ ),
370
+ 'out-of-stock' => array(
371
+ 'title' => __( 'Out of stock', 'woocommerce' ),
372
+ 'href' => admin_url( 'admin.php?page=wc-reports&tab=stock&report=out_of_stock' ),
373
+ ),
374
+ 'most-stocked' => array(
375
+ 'title' => __( 'Most Stocked', 'woocommerce' ),
376
+ 'href' => admin_url( 'admin.php?page=wc-reports&tab=stock&report=most_stocked' ),
377
+ ),
378
+ ),
379
+ ),
380
+ 'taxes' => array(
381
+ 'title' => __( 'Taxes', 'woocommerce' ),
382
+ 'href' => admin_url( 'admin.php?page=wc-reports&tab=taxes' ),
383
+ 'nodes' => array(
384
+ 'taxes-by-code' => array(
385
+ 'title' => __( 'Taxes by code', 'woocommerce' ),
386
+ 'href' => admin_url( 'admin.php?page=wc-reports&tab=taxes&report=taxes_by_code' ),
387
+ ),
388
+ 'taxes-by-date' => array(
389
+ 'title' => __( 'Taxes by date', 'woocommerce' ),
390
+ 'href' => admin_url( 'admin.php?page=wc-reports&tab=taxes&report=taxes_by_date' ),
391
+ ),
392
+ ),
393
+ ),
394
+ ),
395
+ ),
396
+ 'products' => array(
397
+ 'title' => __( 'Products', 'woocommerce' ),
398
+ 'href' => admin_url( 'edit.php?post_type=product' ),
399
+ 'nodes' => array(
400
+ 'products' => array(
401
+ 'title' => __( 'Products', 'woocommerce' ),
402
+ 'href' => admin_url( 'edit.php?post_type=product' ),
403
+ ),
404
+ 'add-product' => array(
405
+ 'title' => __( 'Add product', 'woocommerce' ),
406
+ 'href' => admin_url( 'post-new.php?post_type=product' ),
407
+ ),
408
+ 'categories' => array(
409
+ 'title' => __( 'Categories', 'woocommerce' ),
410
+ 'href' => admin_url( 'edit-tags.php?taxonomy=product_cat&post_type=product' ),
411
+ ),
412
+ 'tags' => array(
413
+ 'title' => __( 'Tags', 'woocommerce' ),
414
+ 'href' => admin_url( 'edit-tags.php?taxonomy=product_tag&post_type=product' ),
415
+ ),
416
+ 'attributes' => array(
417
+ 'title' => __( 'Attributes', 'woocommerce' ),
418
+ 'href' => admin_url( 'edit.php?post_type=product&page=product_attributes' ),
419
+ ),
420
+ ),
421
+ ),
422
+ 'coupons' => array(
423
+ 'title' => __( 'Coupons', 'woocommerce' ),
424
+ 'href' => admin_url( 'edit.php?post_type=shop_coupon' ),
425
+ 'nodes' => array(
426
+ 'coupons' => array(
427
+ 'title' => __( 'Coupons', 'woocommerce' ),
428
+ 'href' => admin_url( 'edit.php?post_type=shop_coupon' ),
429
+ ),
430
+ 'add-coupon' => array(
431
+ 'title' => __( 'Add coupon', 'woocommerce' ),
432
+ 'href' => admin_url( 'post-new.php?post_type=shop_coupon' ),
433
+ ),
434
+ ),
435
+ ),
436
+ 'settings' => array(
437
+ 'title' => __( 'Settings', 'woocommerce' ),
438
+ 'href' => admin_url( 'admin.php?page=wc-settings' ),
439
+ 'nodes' => array(
440
+ 'general' => array(
441
+ 'title' => __( 'General', 'woocommerce' ),
442
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=general' ),
443
+ ),
444
+ 'products' => array(
445
+ 'title' => __( 'Products', 'woocommerce' ),
446
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=products' ),
447
+ 'nodes' => array(
448
+ 'general' => array(
449
+ 'title' => __( 'General', 'woocommerce' ),
450
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=products&section' ),
451
+ ),
452
+ 'display' => array(
453
+ 'title' => __( 'Display', 'woocommerce' ),
454
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=products&section=display' ),
455
+ ),
456
+ 'inventory' => array(
457
+ 'title' => __( 'Inventory', 'woocommerce' ),
458
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=products&section=inventory' ),
459
+ ),
460
+ 'downloadable' => array(
461
+ 'title' => __( 'Downloadable products', 'woocommerce' ),
462
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=products&section=downloadable' ),
463
+ ),
464
+ ),
465
+ ),
466
+ 'tax' => array(
467
+ 'title' => __( 'Tax', 'woocommerce' ),
468
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=tax' ),
469
+ 'nodes' => array(
470
+ 'tax-options' => array(
471
+ 'title' => __( 'Tax options', 'woocommerce' ),
472
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=tax&section' ),
473
+ ),
474
+ 'standard-rates' => array(
475
+ 'title' => __( 'Standard rates', 'woocommerce' ),
476
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=tax&section=standard' ),
477
+ ),
478
+ ),
479
+ ),
480
+ 'shipping' => array(
481
+ 'title' => __( 'Shipping', 'woocommerce' ),
482
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=shipping' ),
483
+ 'nodes' => array(
484
+ 'shipping-zones' => array(
485
+ 'title' => __( 'Shipping zones', 'woocommerce' ),
486
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=shipping&section' ),
487
+ ),
488
+ 'shipping-options' => array(
489
+ 'title' => __( 'Shipping options', 'woocommerce' ),
490
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=shipping&section=options' ),
491
+ ),
492
+ 'shipping-classes' => array(
493
+ 'title' => __( 'Shipping classes', 'woocommerce' ),
494
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=shipping&section=classes' ),
495
+ ),
496
+ ),
497
+ ),
498
+ 'checkout' => array(
499
+ 'title' => __( 'Checkout', 'woocommerce' ),
500
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=checkout' ),
501
+ 'nodes' => array(
502
+ 'checkout-options' => array(
503
+ 'title' => __( 'Checkout options', 'woocommerce' ),
504
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=checkout&section' ),
505
+ ),
506
+ 'bacs' => array(
507
+ 'title' => __( 'BACS', 'woocommerce' ),
508
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=checkout&section=bacs' ),
509
+ ),
510
+ 'cheque' => array(
511
+ 'title' => __( 'Check payments', 'woocommerce' ),
512
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=checkout&section=cheque' ),
513
+ ),
514
+ 'cod' => array(
515
+ 'title' => __( 'Cash on delivery', 'woocommerce' ),
516
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=checkout&section=cod' ),
517
+ ),
518
+ 'paypal' => array(
519
+ 'title' => __( 'PayPal', 'woocommerce' ),
520
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=checkout&section=paypal' ),
521
+ ),
522
+ ),
523
+ ),
524
+ 'account' => array(
525
+ 'title' => __( 'Account', 'woocommerce' ),
526
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=account' ),
527
+ ),
528
+ 'email' => array(
529
+ 'title' => __( 'Emails', 'woocommerce' ),
530
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=email' ),
531
+ ),
532
+ 'api' => array(
533
+ 'title' => __( 'API', 'woocommerce' ),
534
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=api' ),
535
+ 'nodes' => array(
536
+ 'settings' => array(
537
+ 'title' => __( 'Settings', 'woocommerce' ),
538
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=api&section' ),
539
+ ),
540
+ 'keys' => array(
541
+ 'title' => __( 'Keys/Apps', 'woocommerce' ),
542
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=api&section=keys' ),
543
+ ),
544
+ 'webhooks' => array(
545
+ 'title' => __( 'Webhooks', 'woocommerce' ),
546
+ 'href' => admin_url( 'admin.php?page=wc-settings&tab=api&section=webhooks' ),
547
+ ),
548
+ ),
549
+ ),
550
+ ),
551
+ ),
552
+ 'system-status' => array(
553
+ 'title' => __( 'System status', 'woocommerce' ),
554
+ 'href' => admin_url( 'admin.php?page=wc-status' ),
555
+ 'nodes' => array(
556
+ 'system-status' => array(
557
+ 'title' => __( 'System status', 'woocommerce' ),
558
+ 'href' => admin_url( 'admin.php?page=wc-status&tab=status' ),
559
+ ),
560
+ 'tools' => array(
561
+ 'title' => __( 'Tools', 'woocommerce' ),
562
+ 'href' => admin_url( 'admin.php?page=wc-status&tab=tools' ),
563
+ ),
564
+ 'logs' => array(
565
+ 'title' => __( 'Logs', 'woocommerce' ),
566
+ 'href' => admin_url( 'admin.php?page=wc-status&tab=logs' ),
567
+ ),
568
+ ),
569
+ ),
570
+ 'extensions' => array(
571
+ 'title' => __( 'Extensions', 'woocommerce' ),
572
+ 'href' => admin_url( 'admin.php?page=wc-addons' ),
573
+ ),
574
+ ),
575
+ ),
576
+ );
577
+ $this->add_woocommerce_admin_bar_nodes( $wp_admin_bar, $nodes, false );
578
+ }
579
+
580
+ }
581
+
582
+ endif;
583
+
584
+ return new WCJ_Admin_Bar();
includes/class-wcj-admin-tools.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Admin Tools
4
  *
5
- * @version 2.8.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -129,14 +129,15 @@ class WCJ_Admin_Tools extends WCJ_Module {
129
  /**
130
  * create_admin_tools_tool.
131
  *
132
- * @version 2.8.0
133
  */
134
  function create_admin_tools_tool() {
135
- // Notice
136
- $the_notice = '';
137
  if ( isset( $_GET['wcj_delete_log'] ) && wcj_is_user_role( 'administrator' ) ) {
138
  update_option( 'wcj_log', '' );
139
- $the_notice .= __( 'Log deleted successfully.', 'woocommerce-jetpack' );
 
 
140
  }
141
  // Header
142
  $the_tools = '';
@@ -144,12 +145,12 @@ class WCJ_Admin_Tools extends WCJ_Module {
144
  $the_tools .= '<p><a href="' . add_query_arg( 'wcj_delete_log', '1' ) . '">' . __( 'Delete Log', 'woocommerce-jetpack' ) . '</a></p>';
145
  // Log
146
  $the_log = '';
 
147
  $the_log .= '<pre>' . get_option( 'wcj_log', '' ) . '</pre>';
148
  // Final output
149
  $html = '';
150
  $html .= '<div class="wrap">';
151
  $html .= '<p>' . $the_tools . '</p>';
152
- $html .= '<p>' . $the_notice . '</p>';
153
  $html .= '<p>' . $the_log . '</p>';
154
  $html .= '</div>';
155
  echo $html;
2
  /**
3
  * Booster for WooCommerce - Module - Admin Tools
4
  *
5
+ * @version 2.9.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
129
  /**
130
  * create_admin_tools_tool.
131
  *
132
+ * @version 2.9.0
133
  */
134
  function create_admin_tools_tool() {
135
+ // Delete log
 
136
  if ( isset( $_GET['wcj_delete_log'] ) && wcj_is_user_role( 'administrator' ) ) {
137
  update_option( 'wcj_log', '' );
138
+ if ( wp_safe_redirect( remove_query_arg( 'wcj_delete_log' ) ) ) {
139
+ exit;
140
+ }
141
  }
142
  // Header
143
  $the_tools = '';
145
  $the_tools .= '<p><a href="' . add_query_arg( 'wcj_delete_log', '1' ) . '">' . __( 'Delete Log', 'woocommerce-jetpack' ) . '</a></p>';
146
  // Log
147
  $the_log = '';
148
+ $the_log .= '<p style="font-style:italic;color:gray;">' . sprintf( __( 'Now: %s', 'woocommerce-jetpack' ), date( 'Y-m-d H:i:s' ) ) . '</p>';
149
  $the_log .= '<pre>' . get_option( 'wcj_log', '' ) . '</pre>';
150
  // Final output
151
  $html = '';
152
  $html .= '<div class="wrap">';
153
  $html .= '<p>' . $the_tools . '</p>';
 
154
  $html .= '<p>' . $the_log . '</p>';
155
  $html .= '</div>';
156
  echo $html;
includes/class-wcj-breadcrumbs.php ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Module - Breadcrumbs
4
+ *
5
+ * @version 2.9.0
6
+ * @since 2.9.0
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
+
12
+ if ( ! class_exists( 'WCJ_Breadcrumbs' ) ) :
13
+
14
+ class WCJ_Breadcrumbs extends WCJ_Module {
15
+
16
+ /**
17
+ * Constructor.
18
+ *
19
+ * @version 2.9.0
20
+ * @since 2.9.0
21
+ * @todo recheck filter: `woocommerce_get_breadcrumb`
22
+ * @todo recheck filter: `woocommerce_structured_data_breadcrumblist`; action: `woocommerce_breadcrumb`;
23
+ * @todo recheck filter: `woocommerce_breadcrumb_defaults`; action: `woocommerce_breadcrumb`
24
+ */
25
+ function __construct() {
26
+
27
+ $this->id = 'breadcrumbs';
28
+ $this->short_desc = __( 'Breadcrumbs', 'woocommerce-jetpack' );
29
+ $this->desc = __( 'Customize WooCommerce breadcrumbs.', 'woocommerce-jetpack' );
30
+ $this->link_slug = 'woocommerce-breadcrumbs';
31
+ parent::__construct();
32
+
33
+ if ( $this->is_enabled() ) {
34
+ // Hide Breadcrumbs
35
+ if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_breadcrumbs_hide', 'no' ) ) ) {
36
+ add_filter( 'woocommerce_get_breadcrumb', '__return_false', PHP_INT_MAX );
37
+ add_action( 'wp_head', array( $this, 'hide_breadcrumbs_with_css' ) );
38
+ add_action( 'wp_loaded', array( $this, 'hide_breadcrumbs_by_removing_action' ), PHP_INT_MAX );
39
+ }
40
+ // Home URL
41
+ if ( 'yes' === get_option( 'wcj_breadcrumbs_change_home_url_enabled', 'no' ) ) {
42
+ add_filter( 'woocommerce_breadcrumb_home_url', array( $this, 'change_home_url' ), PHP_INT_MAX );
43
+ }
44
+ }
45
+ }
46
+
47
+ /**
48
+ * change_home_url.
49
+ *
50
+ * @version 2.9.0
51
+ * @since 2.9.0
52
+ */
53
+ function change_home_url( $_url ) {
54
+ return get_option( 'wcj_breadcrumbs_home_url', home_url() );
55
+ }
56
+
57
+ /**
58
+ * hide_breadcrumbs_with_css.
59
+ *
60
+ * @version 2.9.0
61
+ * @since 2.9.0
62
+ * @todo (maybe) add more identifiers
63
+ */
64
+ function hide_breadcrumbs_with_css() {
65
+ $identifiers = array(
66
+ '.woocommerce-breadcrumb',
67
+ '.woo-breadcrumbs',
68
+ '.breadcrumbs',
69
+ '.breadcrumb',
70
+ '#breadcrumbs',
71
+ );
72
+ echo '<style>' . implode( ', ', $identifiers ) . ' { display: none !important; }' . '</style>';
73
+ }
74
+
75
+ /**
76
+ * hide_breadcrumbs_by_removing_action.
77
+ *
78
+ * @version 2.9.0
79
+ * @since 2.9.0
80
+ * @see `add_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20, 0 );`
81
+ */
82
+ function hide_breadcrumbs_by_removing_action() {
83
+ remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20 );
84
+ }
85
+
86
+ }
87
+
88
+ endif;
89
+
90
+ return new WCJ_Breadcrumbs();
includes/class-wcj-checkout-custom-fields.php CHANGED
@@ -171,7 +171,7 @@ class WCJ_Checkout_Custom_Fields extends WCJ_Module {
171
  /**
172
  * add_custom_shipping_fields_to_formatted_address.
173
  */
174
- /* public function add_custom_shipping_fields_to_formatted_address( $fields, $order ) {
175
  for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
176
  //if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
177
  $the_section = get_option( 'wcj_checkout_custom_field_section_' . $i );
171
  /**
172
  * add_custom_shipping_fields_to_formatted_address.
173
  */
174
+ /* function add_custom_shipping_fields_to_formatted_address( $fields, $order ) {
175
  for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_checkout_custom_fields_total_number', 1 ) ); $i++ ) {
176
  //if ( 'yes' === get_option( 'wcj_checkout_custom_field_enabled_' . $i ) ) {
177
  $the_section = get_option( 'wcj_checkout_custom_field_section_' . $i );
includes/class-wcj-checkout-customization.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Checkout Customization
4
  *
5
- * @version 2.8.0
6
  * @since 2.7.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -16,14 +16,18 @@ class WCJ_Checkout_Customization extends WCJ_Module {
16
  /**
17
  * Constructor.
18
  *
19
- * @version 2.8.0
20
  * @since 2.7.0
 
 
 
 
21
  */
22
  function __construct() {
23
 
24
  $this->id = 'checkout_customization';
25
  $this->short_desc = __( 'Checkout Customization', 'woocommerce-jetpack' );
26
- $this->desc = __( 'Customize WooCommerce checkout - hide "Order Again" button etc.', 'woocommerce-jetpack' );
27
  $this->link_slug = 'woocommerce-checkout-customization';
28
  parent::__construct();
29
 
@@ -40,7 +44,75 @@ class WCJ_Checkout_Customization extends WCJ_Module {
40
  if ( 'yes' === get_option( 'wcj_checkout_hide_order_again', 'no' ) ) {
41
  add_action( 'init', array( $this, 'checkout_hide_order_again' ), PHP_INT_MAX );
42
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
  }
 
44
  }
45
 
46
  /**
2
  /**
3
  * Booster for WooCommerce - Module - Checkout Customization
4
  *
5
+ * @version 2.9.0
6
  * @since 2.7.0
7
  * @author Algoritmika Ltd.
8
  */
16
  /**
17
  * Constructor.
18
  *
19
+ * @version 2.9.0
20
  * @since 2.7.0
21
+ * @todo "Disable Fields on Checkout for Logged Users" - billing and shipping country ('select' type)
22
+ * @todo "Disable Fields on Checkout for Logged Users" - other core fields (e.g. account fields)
23
+ * @todo "Disable Fields on Checkout for Logged Users" - custom fields
24
+ * @todo "Disable Fields on Checkout for Logged Users" - add single option (probably checkbox) to disable all fields
25
  */
26
  function __construct() {
27
 
28
  $this->id = 'checkout_customization';
29
  $this->short_desc = __( 'Checkout Customization', 'woocommerce-jetpack' );
30
+ $this->desc = __( 'Customize WooCommerce checkout - hide "Order Again" button; disable selected fields on checkout for logged users and more.', 'woocommerce-jetpack' );
31
  $this->link_slug = 'woocommerce-checkout-customization';
32
  parent::__construct();
33
 
44
  if ( 'yes' === get_option( 'wcj_checkout_hide_order_again', 'no' ) ) {
45
  add_action( 'init', array( $this, 'checkout_hide_order_again' ), PHP_INT_MAX );
46
  }
47
+ // Disable Fields on Checkout for Logged Users
48
+ add_filter( 'woocommerce_checkout_fields' , array( $this, 'maybe_disable_fields' ), PHP_INT_MAX );
49
+ $checkout_fields_types = array(
50
+ 'country',
51
+ 'state',
52
+ 'textarea',
53
+ 'checkbox',
54
+ 'password',
55
+ 'text',
56
+ 'email',
57
+ 'tel',
58
+ 'number',
59
+ 'select',
60
+ 'radio',
61
+ );
62
+ foreach ( $checkout_fields_types as $checkout_fields_type ) {
63
+ add_filter( 'woocommerce_form_field_' . $checkout_fields_type, array( $this, 'maybe_add_description' ), PHP_INT_MAX, 4 );
64
+ }
65
+ }
66
+ }
67
+
68
+ /**
69
+ * maybe_add_description.
70
+ *
71
+ * @version 2.9.0
72
+ * @since 2.9.0
73
+ */
74
+ function maybe_add_description( $field, $key, $args, $value ) {
75
+ if ( is_user_logged_in() ) {
76
+ $fields_to_disable = get_option( 'wcj_checkout_customization_disable_fields_for_logged', '' );
77
+ if ( ! empty( $fields_to_disable ) ) {
78
+ if ( in_array( $key, $fields_to_disable ) ) {
79
+ $desc = get_option( 'wcj_checkout_customization_disable_fields_for_logged_message',
80
+ '<em>' . __( 'This field can not be changed', 'woocommerce-jetpack' ) . '</em>' );
81
+ $field = str_replace( '__WCJ_TEMPORARY_VALUE_TO_REPLACE__', $desc, $field );
82
+ }
83
+ }
84
+ }
85
+ return $field;
86
+ }
87
+
88
+ /**
89
+ * maybe_disable_fields.
90
+ *
91
+ * @version 2.9.0
92
+ * @since 2.9.0
93
+ * @see woocommerce_form_field
94
+ */
95
+ function maybe_disable_fields( $checkout_fields ) {
96
+ if ( is_user_logged_in() ) {
97
+ $fields_to_disable = get_option( 'wcj_checkout_customization_disable_fields_for_logged', '' );
98
+ if ( ! empty( $fields_to_disable ) ) {
99
+ foreach ( $fields_to_disable as $field_to_disable ) {
100
+ $section = explode( '_', $field_to_disable );
101
+ $section = $section[0];
102
+ if ( isset( $checkout_fields[ $section ][ $field_to_disable ] ) ) {
103
+ if ( ! isset( $checkout_fields[ $section ][ $field_to_disable ]['custom_attributes'] ) ) {
104
+ $checkout_fields[ $section ][ $field_to_disable ]['custom_attributes'] = array();
105
+ }
106
+ $checkout_fields[ $section ][ $field_to_disable ]['custom_attributes'] = array_merge(
107
+ $checkout_fields[ $section ][ $field_to_disable ]['custom_attributes'],
108
+ array( 'readonly' => 'readonly' )
109
+ );
110
+ $checkout_fields[ $section ][ $field_to_disable ]['description'] = '__WCJ_TEMPORARY_VALUE_TO_REPLACE__';
111
+ }
112
+ }
113
+ }
114
  }
115
+ return $checkout_fields;
116
  }
117
 
118
  /**
includes/class-wcj-currency-exchange-rates.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Currency Exchange Rates
4
  *
5
- * @version 2.8.0
6
  * @since 2.3.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -78,6 +78,94 @@ class WCJ_Currency_Exchange_Rates extends WCJ_Module {
78
  return $settings;
79
  }
80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
  }
82
 
83
  endif;
2
  /**
3
  * Booster for WooCommerce - Module - Currency Exchange Rates
4
  *
5
+ * @version 2.9.0
6
  * @since 2.3.0
7
  * @author Algoritmika Ltd.
8
  */
78
  return $settings;
79
  }
80
 
81
+ /**
82
+ * get_all_currencies_exchange_rates_currencies.
83
+ *
84
+ * @version 2.9.0
85
+ * @since 2.9.0
86
+ */
87
+ function get_all_currencies_exchange_rates_currencies() {
88
+ $currencies = array();
89
+ // Additional currencies (via filter)
90
+ $additional_currencies = apply_filters( 'wcj_currency_exchange_rates_additional_currencies', array() );
91
+ foreach ( $additional_currencies as $additional_currency ) {
92
+ $currencies[] = $additional_currency;
93
+ }
94
+ // Additional currencies (via custom currencies section)
95
+ $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_currency_exchange_custom_currencies_total_number', 1 ) );
96
+ for ( $i = 1; $i <= $total_number; $i++ ) {
97
+ if ( 'disabled' != ( $additional_currency = get_option( 'wcj_currency_exchange_custom_currencies_' . $i, 'disabled' ) ) ) {
98
+ $currencies[] = $additional_currency;
99
+ }
100
+ }
101
+ if ( wcj_is_module_enabled( 'price_by_country' ) ) {
102
+ // Currency Pairs - Price by Country
103
+ if ( 'manual' != apply_filters( 'booster_get_option', 'manual', get_option( 'wcj_price_by_country_auto_exchange_rates', 'manual' ) ) ) {
104
+ for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_price_by_country_total_groups_number', 1 ) ); $i++ ) {
105
+ $currency_to = get_option( 'wcj_price_by_country_exchange_rate_currency_group_' . $i );
106
+ $currencies[] = $currency_to;
107
+ }
108
+ }
109
+ }
110
+ if ( wcj_is_module_enabled( 'multicurrency' ) ) {
111
+ // Currency Pairs - Multicurrency
112
+ if ( 'manual' != apply_filters( 'booster_get_option', 'manual', get_option( 'wcj_multicurrency_exchange_rate_update_auto', 'manual' ) ) ) {
113
+ for ( $i = 1; $i <= apply_filters( 'booster_get_option', 2, get_option( 'wcj_multicurrency_total_number', 2 ) ); $i++ ) {
114
+ $currency_to = get_option( 'wcj_multicurrency_currency_' . $i );
115
+ $currencies[] = $currency_to;
116
+ }
117
+ }
118
+ }
119
+ if ( wcj_is_module_enabled( 'multicurrency_base_price' ) ) {
120
+ // Currency Pairs - Multicurrency Product Base Price
121
+ if ( 'manual' != apply_filters( 'booster_get_option', 'manual', get_option( 'wcj_multicurrency_base_price_exchange_rate_update', 'manual' ) ) ) {
122
+ for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_multicurrency_base_price_total_number', 1 ) ); $i++ ) {
123
+ $currency_to = get_option( 'wcj_multicurrency_base_price_currency_' . $i );
124
+ $currencies[] = $currency_to;
125
+ }
126
+ }
127
+ }
128
+ if ( wcj_is_module_enabled( 'currency_per_product' ) ) {
129
+ // Currency Pairs - Currency per Product
130
+ if ( 'manual' != apply_filters( 'booster_get_option', 'manual', get_option( 'wcj_currency_per_product_exchange_rate_update', 'manual' ) ) ) {
131
+ for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_currency_per_product_total_number', 1 ) ); $i++ ) {
132
+ $currency_to = get_option( 'wcj_currency_per_product_currency_' . $i );
133
+ $currencies[] = $currency_to;
134
+ }
135
+ }
136
+ }
137
+ if ( wcj_is_module_enabled( 'payment_gateways_currency' ) ) {
138
+ if ( 'manual' != apply_filters( 'booster_get_option', 'manual', get_option( 'wcj_gateways_currency_exchange_rate_update_auto', 'manual' ) ) ) {
139
+ // Currency Pairs - Gateway Currency
140
+ global $woocommerce;
141
+ $available_gateways = $woocommerce->payment_gateways->payment_gateways();
142
+ foreach ( $available_gateways as $key => $gateway ) {
143
+ $currency_to = get_option( 'wcj_gateways_currency_' . $key );
144
+ if ( 'no_changes' != $currency_to ) {
145
+ $currencies[] = $currency_to;
146
+ }
147
+ }
148
+ }
149
+ }
150
+ return $currencies;
151
+ }
152
+
153
+ /**
154
+ * get_all_currencies_exchange_rates_settings.
155
+ *
156
+ * @version 2.9.0
157
+ * @since 2.9.0
158
+ */
159
+ function get_all_currencies_exchange_rates_settings() {
160
+ $settings = array();
161
+ $currency_from = get_option( 'woocommerce_currency' );
162
+ $currencies = $this->get_all_currencies_exchange_rates_currencies();
163
+ foreach ( $currencies as $currency ) {
164
+ $settings = $this->add_currency_pair_setting( $currency_from, $currency, $settings );
165
+ }
166
+ return $settings;
167
+ }
168
+
169
  }
170
 
171
  endif;
includes/class-wcj-currency-per-product.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Currency per Product
4
  *
5
- * @version 2.8.0
6
  * @since 2.5.2
7
  * @author Algoritmika Ltd.
8
  */
@@ -106,10 +106,85 @@ class WCJ_Currency_Per_Product extends WCJ_Module {
106
  return $package_rates;
107
  }
108
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
109
  /**
110
  * validate_on_add_to_cart.
111
  *
112
- * @version 2.7.0
113
  * @since 2.7.0
114
  */
115
  function validate_on_add_to_cart( $passed, $product_id ) {
@@ -124,7 +199,7 @@ class WCJ_Currency_Per_Product extends WCJ_Module {
124
  }
125
  } elseif ( 'leave_same_currency' === $cart_checkout_behaviour ) {
126
  $shop_currency = get_option( 'woocommerce_currency' );
127
- $product_currency = get_post_meta( $product_id, '_' . 'wcj_currency_per_product_currency', true );
128
  if ( '' == $product_currency ) {
129
  $product_currency = $shop_currency;
130
  }
@@ -144,7 +219,7 @@ class WCJ_Currency_Per_Product extends WCJ_Module {
144
  /**
145
  * grouped_price_html.
146
  *
147
- * @version 2.7.0
148
  * @since 2.5.2
149
  */
150
  function grouped_price_html( $price_html, $_product ) {
@@ -166,8 +241,8 @@ class WCJ_Currency_Per_Product extends WCJ_Module {
166
  end( $child_prices );
167
  $max_price = current( $child_prices );
168
  $max_price_id = key( $child_prices );
169
- $min_currency_per_product_currency = get_post_meta( $min_price_id, '_' . 'wcj_currency_per_product_currency', true );
170
- $max_currency_per_product_currency = get_post_meta( $max_price_id, '_' . 'wcj_currency_per_product_currency', true );
171
  } else {
172
  $min_price = '';
173
  $max_price = '';
@@ -261,11 +336,11 @@ class WCJ_Currency_Per_Product extends WCJ_Module {
261
  /**
262
  * add_cart_item_data.
263
  *
264
- * @version 2.5.2
265
  * @since 2.5.2
266
  */
267
  function add_cart_item_data( $cart_item_data, $product_id, $variation_id ) {
268
- $currency_per_product_currency = get_post_meta( $product_id, '_' . 'wcj_currency_per_product_currency', true );
269
  if ( '' != $currency_per_product_currency ) {
270
  $cart_item_data['wcj_currency_per_product'] = $currency_per_product_currency;
271
  }
@@ -288,21 +363,33 @@ class WCJ_Currency_Per_Product extends WCJ_Module {
288
  /**
289
  * get_current_product_id_and_currency.
290
  *
291
- * @version 2.7.0
292
  * @since 2.7.0
293
  */
294
  function get_current_product_id_and_currency() {
295
- $the_ID = get_the_ID();
296
- if ( 0 == $the_ID && isset( $_REQUEST['product_id'] ) ) {
 
 
 
 
 
297
  $the_ID = $_REQUEST['product_id'];
298
  }
299
- if ( 0 == $the_ID && isset( $_POST['form'] ) ) { // WooCommerce Bookings plugin
300
  $posted = array();
301
  parse_str( $_POST['form'], $posted );
302
  $the_ID = isset( $posted['add-to-cart'] ) ? $posted['add-to-cart'] : 0;
303
  }
304
- if ( 0 != $the_ID && 'product' === get_post_type( $the_ID ) ) {
305
- $currency_per_product_currency = get_post_meta( $the_ID, '_' . 'wcj_currency_per_product_currency', true );
 
 
 
 
 
 
 
306
  return ( '' != $currency_per_product_currency ) ? $currency_per_product_currency : false;
307
  }
308
  return false;
2
  /**
3
  * Booster for WooCommerce - Module - Currency per Product
4
  *
5
+ * @version 2.9.0
6
  * @since 2.5.2
7
  * @author Algoritmika Ltd.
8
  */
106
  return $package_rates;
107
  }
108
 
109
+ /**
110
+ * get_users_as_options.
111
+ *
112
+ * @version 2.9.0
113
+ * @since 2.9.0
114
+ * @todo (maybe) move to global functions
115
+ */
116
+ function get_users_as_options() {
117
+ $users = array();
118
+ foreach ( get_users( 'orderby=display_name' ) as $user ) {
119
+ $users[ $user->ID ] = $user->display_name . ' ' . '[ID:' . $user->ID . ']';
120
+ }
121
+ return $users;
122
+ }
123
+
124
+ /**
125
+ * get_product_currency.
126
+ *
127
+ * @version 2.9.0
128
+ * @since 2.9.0
129
+ */
130
+ function get_product_currency( $product_id ) {
131
+ // By users or user roles
132
+ $do_check_by_users = ( 'yes' === get_option( 'wcj_currency_per_product_by_users_enabled', 'no' ) );
133
+ $do_check_by_user_roles = ( 'yes' === get_option( 'wcj_currency_per_product_by_user_roles_enabled', 'no' ) );
134
+ $do_check_by_product_cats = ( 'yes' === get_option( 'wcj_currency_per_product_by_product_cats_enabled', 'no' ) );
135
+ $do_check_by_product_tags = ( 'yes' === get_option( 'wcj_currency_per_product_by_product_tags_enabled', 'no' ) );
136
+ if ( $do_check_by_users || $do_check_by_user_roles || $do_check_by_product_cats || $do_check_by_product_tags ) {
137
+ if ( $do_check_by_users || $do_check_by_user_roles ) {
138
+ $product_author_id = get_post_field( 'post_author', $product_id );
139
+ }
140
+ if ( $do_check_by_product_cats ) {
141
+ $_product_cats = wcj_get_the_terms( $product_id, 'product_cat' );
142
+ }
143
+ if ( $do_check_by_product_tags ) {
144
+ $_product_tags = wcj_get_the_terms( $product_id, 'product_tag' );
145
+ }
146
+ $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_currency_per_product_total_number', 1 ) );
147
+ for ( $i = 1; $i <= $total_number; $i++ ) {
148
+ if ( $do_check_by_users ) {
149
+ $users = get_option( 'wcj_currency_per_product_users_' . $i, '' );
150
+ if ( ! empty( $users ) && in_array( $product_author_id, $users ) ) {
151
+ return get_option( 'wcj_currency_per_product_currency_' . $i );
152
+ }
153
+ }
154
+ if ( $do_check_by_user_roles ) {
155
+ $user_roles = get_option( 'wcj_currency_per_product_user_roles_' . $i, '' );
156
+ if ( ! empty( $user_roles ) && wcj_is_user_role( $user_roles, $product_author_id ) ) {
157
+ return get_option( 'wcj_currency_per_product_currency_' . $i );
158
+ }
159
+ }
160
+ if ( $do_check_by_product_cats ) {
161
+ $product_cats = get_option( 'wcj_currency_per_product_product_cats_' . $i, '' );
162
+ if ( ! empty( $_product_cats ) && ! empty( $product_cats ) ) {
163
+ $_intersect = array_intersect( $_product_cats, $product_cats );
164
+ if ( ! empty( $_intersect ) ) {
165
+ return get_option( 'wcj_currency_per_product_currency_' . $i );
166
+ }
167
+ }
168
+ }
169
+ if ( $do_check_by_product_tags ) {
170
+ $product_tags = get_option( 'wcj_currency_per_product_product_tags_' . $i, '' );
171
+ if ( ! empty( $_product_tags ) && ! empty( $product_tags ) ) {
172
+ $_intersect = array_intersect( $_product_tags, $product_tags );
173
+ if ( ! empty( $_intersect ) ) {
174
+ return get_option( 'wcj_currency_per_product_currency_' . $i );
175
+ }
176
+ }
177
+ }
178
+ }
179
+ }
180
+ // By product meta
181
+ return get_post_meta( $product_id, '_' . 'wcj_currency_per_product_currency', true );
182
+ }
183
+
184
  /**
185
  * validate_on_add_to_cart.
186
  *
187
+ * @version 2.9.0
188
  * @since 2.7.0
189
  */
190
  function validate_on_add_to_cart( $passed, $product_id ) {
199
  }
200
  } elseif ( 'leave_same_currency' === $cart_checkout_behaviour ) {
201
  $shop_currency = get_option( 'woocommerce_currency' );
202
+ $product_currency = $this->get_product_currency( $product_id );
203
  if ( '' == $product_currency ) {
204
  $product_currency = $shop_currency;
205
  }
219
  /**
220
  * grouped_price_html.
221
  *
222
+ * @version 2.9.0
223
  * @since 2.5.2
224
  */
225
  function grouped_price_html( $price_html, $_product ) {
241
  end( $child_prices );
242
  $max_price = current( $child_prices );
243
  $max_price_id = key( $child_prices );
244
+ $min_currency_per_product_currency = $this->get_product_currency( $min_price_id );
245
+ $max_currency_per_product_currency = $this->get_product_currency( $max_price_id );
246
  } else {
247
  $min_price = '';
248
  $max_price = '';
336
  /**
337
  * add_cart_item_data.
338
  *
339
+ * @version 2.9.0
340
  * @since 2.5.2
341
  */
342
  function add_cart_item_data( $cart_item_data, $product_id, $variation_id ) {
343
+ $currency_per_product_currency = $this->get_product_currency( $product_id );
344
  if ( '' != $currency_per_product_currency ) {
345
  $cart_item_data['wcj_currency_per_product'] = $currency_per_product_currency;
346
  }
363
  /**
364
  * get_current_product_id_and_currency.
365
  *
366
+ * @version 2.9.0
367
  * @since 2.7.0
368
  */
369
  function get_current_product_id_and_currency() {
370
+ // Get ID
371
+ $the_ID = false;
372
+ global $product;
373
+ if ( $product ) {
374
+ $the_ID = wcj_get_product_id_or_variation_parent_id( $product );
375
+ }
376
+ if ( ! $the_ID && isset( $_REQUEST['product_id'] ) ) {
377
  $the_ID = $_REQUEST['product_id'];
378
  }
379
+ if ( ! $the_ID && isset( $_POST['form'] ) ) { // WooCommerce Bookings plugin
380
  $posted = array();
381
  parse_str( $_POST['form'], $posted );
382
  $the_ID = isset( $posted['add-to-cart'] ) ? $posted['add-to-cart'] : 0;
383
  }
384
+ if ( ! $the_ID && '' != ( $eventon_wc_product_id = get_post_meta( get_the_ID(), 'tx_woocommerce_product_id', true ) ) ) { // EventON plugin
385
+ $the_ID = $eventon_wc_product_id;
386
+ }
387
+ if ( ! $the_ID ) {
388
+ $the_ID = get_the_ID();
389
+ }
390
+ // Get currency
391
+ if ( $the_ID && 'product' === get_post_type( $the_ID ) ) {
392
+ $currency_per_product_currency = $this->get_product_currency( $the_ID );
393
  return ( '' != $currency_per_product_currency ) ? $currency_per_product_currency : false;
394
  }
395
  return false;
includes/class-wcj-emails-verification.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Email Verification
4
  *
5
- * @version 2.8.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -50,15 +50,27 @@ class WCJ_Email_Verification extends WCJ_Module {
50
  /**
51
  * check_if_user_email_is_verified.
52
  *
53
- * @version 2.8.0
54
  * @since 2.8.0
55
  */
56
  function check_if_user_email_is_verified( $userdata ) {
57
- $error_message = do_shortcode( get_option( 'wcj_emails_verification_error_message',
58
- __( 'Your account has to be activated before you can login. You can resend email with verification link by clicking <a href="%resend_verification_url%">here</a>.', 'woocommerce-jetpack' )
59
- ) );
60
- $error_message = str_replace( '%resend_verification_url%', add_query_arg( 'wcj_user_id', $userdata->ID, wc_get_page_permalink( 'myaccount' ) ), $error_message );
61
- if ( ! get_user_meta( $userdata->ID, 'wcj_is_activated', true ) ) {
 
 
 
 
 
 
 
 
 
 
 
 
62
  $userdata = new WP_Error( 'booster_email_verified_error', $error_message );
63
  }
64
  return $userdata;
@@ -67,9 +79,10 @@ class WCJ_Email_Verification extends WCJ_Module {
67
  /**
68
  * reset_and_mail_activation_link.
69
  *
70
- * @version 2.8.0
71
  * @since 2.8.0
72
  * @todo %site_name% etc. in `wcj_emails_verification_email_subject`
 
73
  */
74
  function reset_and_mail_activation_link( $user_id ) {
75
  $user_info = get_userdata( $user_id );
@@ -84,7 +97,7 @@ class WCJ_Email_Verification extends WCJ_Module {
84
  __( 'Please activate your account', 'woocommerce-jetpack' ),
85
  get_option( 'wcj_emails_verification_email_subject',
86
  __( 'Please activate your account', 'woocommerce-jetpack' ) ) ) );
87
- update_user_meta( $user_id, 'wcj_is_activated', 0 );
88
  update_user_meta( $user_id, 'wcj_activation_code', $code );
89
  wc_mail( $user_info->user_email, $email_subject, $email_content );
90
  }
@@ -92,14 +105,14 @@ class WCJ_Email_Verification extends WCJ_Module {
92
  /**
93
  * process_email_verification.
94
  *
95
- * @version 2.8.0
96
  * @since 2.8.0
97
  */
98
  function process_email_verification(){
99
  if ( isset( $_GET['wcj_verify_email'] ) ) {
100
  $data = unserialize( base64_decode( $_GET['wcj_verify_email'] ) );
101
  if ( get_user_meta( $data['id'], 'wcj_activation_code', true ) == $data['code'] ) {
102
- update_user_meta( $data['id'], 'wcj_is_activated', 1 );
103
  wc_add_notice( do_shortcode( get_option( 'wcj_emails_verification_success_message',
104
  __( '<strong>Success:</strong> Your account has been activated!', 'woocommerce-jetpack' ) ) ) );
105
  if ( 'yes' === get_option( 'wcj_emails_verification_redirect_on_success', 'yes' ) ) {
@@ -108,8 +121,13 @@ class WCJ_Email_Verification extends WCJ_Module {
108
  header( wc_get_page_permalink( 'myaccount' ) );
109
  }
110
  } else {
111
- wc_add_notice( do_shortcode( get_option( 'wcj_emails_verification_failed_message',
112
- __( '<strong>Error:</strong> Activation failed, please contact our administrator.', 'woocommerce-jetpack' ), 'error' ) ) );
 
 
 
 
 
113
  }
114
  }
115
  if ( isset( $_GET['wcj_activate_account_message'] ) ) {
2
  /**
3
  * Booster for WooCommerce - Module - Email Verification
4
  *
5
+ * @version 2.9.0
6
  * @since 2.8.0
7
  * @author Algoritmika Ltd.
8
  */
50
  /**
51
  * check_if_user_email_is_verified.
52
  *
53
+ * @version 2.9.0
54
  * @since 2.8.0
55
  */
56
  function check_if_user_email_is_verified( $userdata ) {
57
+ if (
58
+ ( 'yes' === get_option( 'wcj_emails_verification_already_registered_enabled', 'no' ) && ! get_user_meta( $userdata->ID, 'wcj_is_activated', true ) ) ||
59
+ ( 'no' === get_option( 'wcj_emails_verification_already_registered_enabled', 'no' ) && '0' === get_user_meta( $userdata->ID, 'wcj_is_activated', true ) )
60
+ ) {
61
+ if ( isset( $userdata->roles ) && ! empty( $userdata->roles ) ) {
62
+ if ( ! is_array( $userdata->roles ) ) {
63
+ $userdata->roles = array( $userdata->roles );
64
+ }
65
+ $_intersect = array_intersect( $userdata->roles, get_option( 'wcj_emails_verification_skip_user_roles', array( 'administrator' ) ) );
66
+ if ( ! empty( $_intersect ) ) {
67
+ return $userdata;
68
+ }
69
+ }
70
+ $error_message = do_shortcode( get_option( 'wcj_emails_verification_error_message',
71
+ __( 'Your account has to be activated before you can login. You can resend email with verification link by clicking <a href="%resend_verification_url%">here</a>.', 'woocommerce-jetpack' )
72
+ ) );
73
+ $error_message = str_replace( '%resend_verification_url%', add_query_arg( 'wcj_user_id', $userdata->ID, wc_get_page_permalink( 'myaccount' ) ), $error_message );
74
  $userdata = new WP_Error( 'booster_email_verified_error', $error_message );
75
  }
76
  return $userdata;
79
  /**
80
  * reset_and_mail_activation_link.
81
  *
82
+ * @version 2.9.0
83
  * @since 2.8.0
84
  * @todo %site_name% etc. in `wcj_emails_verification_email_subject`
85
+ * @todo ticket #5373 - unexpected issue with "Activation failed, please contact our administrator" message
86
  */
87
  function reset_and_mail_activation_link( $user_id ) {
88
  $user_info = get_userdata( $user_id );
97
  __( 'Please activate your account', 'woocommerce-jetpack' ),
98
  get_option( 'wcj_emails_verification_email_subject',
99
  __( 'Please activate your account', 'woocommerce-jetpack' ) ) ) );
100
+ update_user_meta( $user_id, 'wcj_is_activated', '0' );
101
  update_user_meta( $user_id, 'wcj_activation_code', $code );
102
  wc_mail( $user_info->user_email, $email_subject, $email_content );
103
  }
105
  /**
106
  * process_email_verification.
107
  *
108
+ * @version 2.9.0
109
  * @since 2.8.0
110
  */
111
  function process_email_verification(){
112
  if ( isset( $_GET['wcj_verify_email'] ) ) {
113
  $data = unserialize( base64_decode( $_GET['wcj_verify_email'] ) );
114
  if ( get_user_meta( $data['id'], 'wcj_activation_code', true ) == $data['code'] ) {
115
+ update_user_meta( $data['id'], 'wcj_is_activated', '1' );
116
  wc_add_notice( do_shortcode( get_option( 'wcj_emails_verification_success_message',
117
  __( '<strong>Success:</strong> Your account has been activated!', 'woocommerce-jetpack' ) ) ) );
118
  if ( 'yes' === get_option( 'wcj_emails_verification_redirect_on_success', 'yes' ) ) {
121
  header( wc_get_page_permalink( 'myaccount' ) );
122
  }
123
  } else {
124
+ $_notice = do_shortcode(
125
+ get_option( 'wcj_emails_verification_failed_message',
126
+ __( '<strong>Error:</strong> Activation failed, please contact our administrator. You can resend email with verification link by clicking <a href="%resend_verification_url%">here</a>.', 'woocommerce-jetpack' )
127
+ )
128
+ );
129
+ $_notice = str_replace( '%resend_verification_url%', add_query_arg( 'wcj_user_id', $data['id'], wc_get_page_permalink( 'myaccount' ) ), $_notice );
130
+ wc_add_notice( $_notice, 'error' );
131
  }
132
  }
133
  if ( isset( $_GET['wcj_activate_account_message'] ) ) {
includes/class-wcj-emails.php CHANGED
@@ -16,6 +16,7 @@ class WCJ_Emails extends WCJ_Module {
16
  * Constructor.
17
  *
18
  * @version 2.8.0
 
19
  */
20
  function __construct() {
21
 
16
  * Constructor.
17
  *
18
  * @version 2.8.0
19
+ * @todo meta customizer - check "gravity-forms-emails-woocommerce" plugin
20
  */
21
  function __construct() {
22
 
includes/class-wcj-empty-cart-button.php CHANGED
@@ -17,6 +17,7 @@ class WCJ_Empty_Cart_Button extends WCJ_Module {
17
  * Constructor.
18
  *
19
  * @version 2.8.0
 
20
  */
21
  function __construct() {
22
 
17
  * Constructor.
18
  *
19
  * @version 2.8.0
20
+ * @todo copy additional options form "Empty Cart Button" plugin
21
  */
22
  function __construct() {
23
 
includes/class-wcj-eu-vat-number.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - EU VAT Number
4
  *
5
- * @version 2.8.0
6
  * @since 2.3.9
7
  * @author Algoritmika Ltd.
8
  */
@@ -286,11 +286,11 @@ class WCJ_EU_VAT_Number extends WCJ_Module {
286
  /**
287
  * enqueue_scripts.
288
  *
289
- * @version 2.6.0
290
  */
291
  function enqueue_scripts() {
292
  if ( 'yes' === get_option( 'wcj_eu_vat_number_validate', 'yes' ) ) {
293
- wp_enqueue_script( 'wcj-eu-vat-number', wcj_plugin_url() . '/includes/js/eu-vat-number.js', array(), WCJ()->version, true );
294
  wp_localize_script( 'wcj-eu-vat-number', 'ajax_object', array(
295
  'ajax_url' => admin_url( 'admin-ajax.php' ),
296
  'add_progress_text' => get_option( 'wcj_eu_vat_number_add_progress_text', 'no' ),
@@ -305,7 +305,7 @@ class WCJ_EU_VAT_Number extends WCJ_Module {
305
  /**
306
  * wcj_validate_eu_vat_number.
307
  *
308
- * @version 2.6.0
309
  */
310
  function wcj_validate_eu_vat_number( $param ) {
311
  // if ( ! isset( $_GET['wcj_validate_eu_vat_number'] ) ) return;
@@ -318,10 +318,10 @@ class WCJ_EU_VAT_Number extends WCJ_Module {
318
  $location = wc_format_country_state_string( apply_filters( 'woocommerce_customer_default_location', get_option( 'woocommerce_default_country' ) ) );
319
  }
320
  $is_valid = ( $location['country'] === $eu_vat_number_country_to_check ) ?
321
- validate_VAT( $eu_vat_number_country_to_check, $eu_vat_number_to_check ) :
322
  false;
323
  } else {
324
- $is_valid = validate_VAT( $eu_vat_number_country_to_check, $eu_vat_number_to_check );
325
  }
326
  } else {
327
  $is_valid = null;
2
  /**
3
  * Booster for WooCommerce - Module - EU VAT Number
4
  *
5
+ * @version 2.9.0
6
  * @since 2.3.9
7
  * @author Algoritmika Ltd.
8
  */
286
  /**
287
  * enqueue_scripts.
288
  *
289
+ * @version 2.9.0
290
  */
291
  function enqueue_scripts() {
292
  if ( 'yes' === get_option( 'wcj_eu_vat_number_validate', 'yes' ) ) {
293
+ wp_enqueue_script( 'wcj-eu-vat-number', wcj_plugin_url() . '/includes/js/wcj-eu-vat-number.js', array(), WCJ()->version, true );
294
  wp_localize_script( 'wcj-eu-vat-number', 'ajax_object', array(
295
  'ajax_url' => admin_url( 'admin-ajax.php' ),
296
  'add_progress_text' => get_option( 'wcj_eu_vat_number_add_progress_text', 'no' ),
305
  /**
306
  * wcj_validate_eu_vat_number.
307
  *
308
+ * @version 2.9.0
309
  */
310
  function wcj_validate_eu_vat_number( $param ) {
311
  // if ( ! isset( $_GET['wcj_validate_eu_vat_number'] ) ) return;
318
  $location = wc_format_country_state_string( apply_filters( 'woocommerce_customer_default_location', get_option( 'woocommerce_default_country' ) ) );
319
  }
320
  $is_valid = ( $location['country'] === $eu_vat_number_country_to_check ) ?
321
+ wcj_validate_vat( $eu_vat_number_country_to_check, $eu_vat_number_to_check ) :
322
  false;
323
  } else {
324
+ $is_valid = wcj_validate_vat( $eu_vat_number_country_to_check, $eu_vat_number_to_check );
325
  }
326
  } else {
327
  $is_valid = null;
includes/class-wcj-export-import.php CHANGED
@@ -20,7 +20,7 @@ class WCJ_Export_Import extends WCJ_Module {
20
  * @version 2.8.0
21
  * @since 2.5.4
22
  */
23
- public function __construct() {
24
 
25
  $this->id = 'export';
26
  $this->short_desc = __( 'Export', 'woocommerce-jetpack' );
20
  * @version 2.8.0
21
  * @since 2.5.4
22
  */
23
+ function __construct() {
24
 
25
  $this->id = 'export';
26
  $this->short_desc = __( 'Export', 'woocommerce-jetpack' );
includes/class-wcj-general.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - General
4
  *
5
- * @version 2.8.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -15,7 +15,7 @@ class WCJ_General extends WCJ_Module {
15
  /**
16
  * Constructor.
17
  *
18
- * @version 2.8.0
19
  */
20
  function __construct() {
21
 
@@ -39,22 +39,29 @@ class WCJ_General extends WCJ_Module {
39
 
40
  if ( $this->is_enabled() ) {
41
 
 
 
 
 
 
 
42
  if ( 'yes' === get_option( 'wcj_product_revisions_enabled', 'no' ) ) {
43
  add_filter( 'woocommerce_register_post_type_product', array( $this, 'enable_product_revisions' ) );
44
  }
45
 
 
46
  if ( 'yes' === get_option( 'wcj_general_shortcodes_in_text_widgets_enabled' ) ) {
47
  add_filter( 'widget_text', 'do_shortcode' );
48
  }
49
 
 
50
  if ( 'yes' === get_option( 'wcj_paypal_email_per_product_enabled', 'no' ) ) {
51
-
52
  add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
53
  add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
54
-
55
  add_filter( 'woocommerce_payment_gateways', array( $this, 'maybe_change_paypal_email' ) );
56
  }
57
 
 
58
  if ( 'yes' === get_option( 'wcj_session_expiration_section_enabled', 'no' ) ) {
59
  add_filter( 'wc_session_expiring', array( $this, 'change_session_expiring' ), PHP_INT_MAX );
60
  add_filter( 'wc_session_expiration', array( $this, 'change_session_expiration' ), PHP_INT_MAX );
@@ -65,6 +72,73 @@ class WCJ_General extends WCJ_Module {
65
  add_action( 'wp_loaded', array( $this, 'maybe_apply_url_coupon' ), PHP_INT_MAX );
66
  }
67
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  }
69
  }
70
 
2
  /**
3
  * Booster for WooCommerce - Module - General
4
  *
5
+ * @version 2.9.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
15
  /**
16
  * Constructor.
17
  *
18
+ * @version 2.9.0
19
  */
20
  function __construct() {
21
 
39
 
40
  if ( $this->is_enabled() ) {
41
 
42
+ // Recalculate cart totals
43
+ if ( 'yes' === get_option( 'wcj_general_advanced_recalculate_cart_totals', 'no' ) ) {
44
+ add_action( 'wp_loaded', array( $this, 'fix_mini_cart' ), PHP_INT_MAX );
45
+ }
46
+
47
+ // Product revisions
48
  if ( 'yes' === get_option( 'wcj_product_revisions_enabled', 'no' ) ) {
49
  add_filter( 'woocommerce_register_post_type_product', array( $this, 'enable_product_revisions' ) );
50
  }
51
 
52
+ // Shortcodes in text widgets
53
  if ( 'yes' === get_option( 'wcj_general_shortcodes_in_text_widgets_enabled' ) ) {
54
  add_filter( 'widget_text', 'do_shortcode' );
55
  }
56
 
57
+ // PayPal email per product
58
  if ( 'yes' === get_option( 'wcj_paypal_email_per_product_enabled', 'no' ) ) {
 
59
  add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
60
  add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
 
61
  add_filter( 'woocommerce_payment_gateways', array( $this, 'maybe_change_paypal_email' ) );
62
  }
63
 
64
+ // Session expiration
65
  if ( 'yes' === get_option( 'wcj_session_expiration_section_enabled', 'no' ) ) {
66
  add_filter( 'wc_session_expiring', array( $this, 'change_session_expiring' ), PHP_INT_MAX );
67
  add_filter( 'wc_session_expiration', array( $this, 'change_session_expiration' ), PHP_INT_MAX );
72
  add_action( 'wp_loaded', array( $this, 'maybe_apply_url_coupon' ), PHP_INT_MAX );
73
  }
74
 
75
+ // Booster role user changer
76
+ if ( wcj_is_booster_role_changer_enabled() ) {
77
+ add_action( 'admin_bar_menu', array( $this, 'add_user_role_changer' ), PHP_INT_MAX );
78
+ add_action( 'init', array( $this, 'change_user_role_meta' ) );
79
+ }
80
+ }
81
+ }
82
+
83
+ /**
84
+ * change_user_role_meta.
85
+ *
86
+ * @version 2.9.0
87
+ * @since 2.9.0
88
+ * @todo (maybe) optionally via cookies
89
+ */
90
+ function change_user_role_meta() {
91
+ if ( isset( $_GET['wcj_booster_user_role'] ) ) {
92
+ $current_user_id = get_current_user_id();
93
+ update_user_meta( $current_user_id, '_' . 'wcj_booster_user_role', $_GET['wcj_booster_user_role'] );
94
+ }
95
+ }
96
+
97
+ /**
98
+ * add_user_role_changer.
99
+ *
100
+ * @version 2.9.0
101
+ * @since 2.9.0
102
+ */
103
+ function add_user_role_changer( $wp_admin_bar ) {
104
+ $current_user_id = get_current_user_id();
105
+ $user_roles = wcj_get_user_roles_options();
106
+ if ( '' != ( $current_booster_user_role = get_user_meta( $current_user_id, '_' . 'wcj_booster_user_role', true ) ) ) {
107
+ $current_booster_user_role = ( isset( $user_roles[ $current_booster_user_role ] ) ) ? $user_roles[ $current_booster_user_role ] : $current_booster_user_role;
108
+ $current_booster_user_role = ' [' . $current_booster_user_role . ']';
109
+ }
110
+ $args = array(
111
+ 'parent' => false,
112
+ 'id' => 'booster-user-role-changer',
113
+ 'title' => __( 'Booster User Role', 'woocommerce-jetpack' ) . $current_booster_user_role,
114
+ 'href' => false,
115
+ );
116
+ $wp_admin_bar->add_node( $args );
117
+ foreach ( $user_roles as $user_role_key => $user_role_name ) {
118
+ $args = array(
119
+ 'parent' => 'booster-user-role-changer',
120
+ 'id' => 'booster-user-role-changer-role-' . $user_role_key,
121
+ 'title' => $user_role_name,
122
+ 'href' => add_query_arg( 'wcj_booster_user_role', $user_role_key ),
123
+ );
124
+ $wp_admin_bar->add_node( $args );
125
+ }
126
+ }
127
+
128
+ /**
129
+ * fix_mini_cart.
130
+ *
131
+ * @version 2.5.2
132
+ * @since 2.5.2
133
+ * @todo this is only temporary solution!
134
+ */
135
+ function fix_mini_cart() {
136
+ if ( ! is_admin() || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
137
+ if ( null !== ( $wc = WC() ) ) {
138
+ if ( isset( $wc->cart ) ) {
139
+ $wc->cart->calculate_totals();
140
+ }
141
+ }
142
  }
143
  }
144
 
includes/class-wcj-my-account.php ADDED
@@ -0,0 +1,109 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Module - My Account
4
+ *
5
+ * @version 2.9.0
6
+ * @since 2.9.0
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
+
12
+ if ( ! class_exists( 'WCJ_My_Account' ) ) :
13
+
14
+ class WCJ_My_Account extends WCJ_Module {
15
+
16
+ /**
17
+ * Constructor.
18
+ *
19
+ * @version 2.9.0
20
+ * @since 2.9.0
21
+ */
22
+ function __construct() {
23
+
24
+ $this->id = 'my_account';
25
+ $this->short_desc = __( 'My Account', 'woocommerce-jetpack' );
26
+ $this->desc = __( 'WooCommerce "My Account" page customization.', 'woocommerce-jetpack' );
27
+ $this->link_slug = 'woocommerce-my-account';
28
+ parent::__construct();
29
+
30
+ if ( $this->is_enabled() ) {
31
+ add_filter( 'woocommerce_my_account_my_orders_actions', array( $this, 'maybe_add_my_account_order_actions' ), 10, 2 );
32
+ add_action( 'wp_footer', array( $this, 'maybe_add_js_conformation' ) );
33
+ add_action( 'init', array( $this, 'process_woocommerce_mark_order_status' ) );
34
+ }
35
+ }
36
+
37
+ /*
38
+ * maybe_add_my_account_order_actions.
39
+ *
40
+ * @version 2.9.0
41
+ * @since 2.9.0
42
+ * @see http://snippet.fm/snippets/add-order-complete-action-to-woocommerce-my-orders-customer-table/
43
+ */
44
+ function maybe_add_my_account_order_actions( $actions, $order ) {
45
+ $statuses_to_add = get_option( 'wcj_my_account_add_order_status_actions', '' );
46
+ if ( ! empty( $statuses_to_add ) ) {
47
+ $all_statuses = wcj_get_order_statuses_v2();
48
+ foreach ( $statuses_to_add as $status_to_add ) {
49
+ if ( $status_to_add != $order->get_status() ) {
50
+ $actions[ 'wcj_mark_' . $status_to_add . '_by_customer' ] = array(
51
+ 'url' => wp_nonce_url( add_query_arg( array(
52
+ 'wcj_action' => 'wcj_woocommerce_mark_order_status',
53
+ 'status' => $status_to_add,
54
+ 'order_id' => $order->get_id() ) ), 'wcj-woocommerce-mark-order-status' ),
55
+ 'name' => $all_statuses[ $status_to_add ],
56
+ );
57
+ }
58
+ }
59
+ }
60
+ return $actions;
61
+ }
62
+
63
+ /*
64
+ * maybe_add_js_conformation.
65
+ *
66
+ * @version 2.9.0
67
+ * @since 2.9.0
68
+ */
69
+ function maybe_add_js_conformation() {
70
+ $statuses_to_add = get_option( 'wcj_my_account_add_order_status_actions', '' );
71
+ if ( ! empty( $statuses_to_add ) ) {
72
+ echo '<script>';
73
+ foreach ( $statuses_to_add as $status_to_add ) {
74
+ echo 'jQuery("a.wcj_mark_' . $status_to_add . '_by_customer").each( function() { jQuery(this).attr("onclick", "return confirm(\'' .
75
+ __( 'Are you sure?', 'woocommerce-jetpack' ) . '\')") } );';
76
+ }
77
+ echo '</script>';
78
+ }
79
+ }
80
+
81
+ /*
82
+ * process_woocommerce_mark_order_status.
83
+ *
84
+ * @version 2.9.0
85
+ * @since 2.9.0
86
+ */
87
+ function process_woocommerce_mark_order_status() {
88
+ if (
89
+ isset( $_GET['wcj_action'] ) && 'wcj_woocommerce_mark_order_status' === $_GET['wcj_action'] &&
90
+ isset( $_GET['status'] ) &&
91
+ isset( $_GET['order_id'] ) &&
92
+ isset( $_GET['_wpnonce'] )
93
+ ) {
94
+ if ( wp_verify_nonce( $_GET['_wpnonce'], 'wcj-woocommerce-mark-order-status' ) ) {
95
+ $_order = wc_get_order( $_GET['order_id'] );
96
+ if ( $_order->get_customer_id() === get_current_user_id() ) {
97
+ $_order->update_status( $_GET['status'] );
98
+ wp_safe_redirect( remove_query_arg( array( 'wcj_action', 'status', 'order_id', '_wpnonce' ) ) );
99
+ exit;
100
+ }
101
+ }
102
+ }
103
+ }
104
+
105
+ }
106
+
107
+ endif;
108
+
109
+ return new WCJ_My_Account();
includes/class-wcj-offer-price.php ADDED
@@ -0,0 +1,433 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Module - Offer Price
4
+ *
5
+ * @version 2.9.0
6
+ * @since 2.9.0
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
+
12
+ if ( ! class_exists( 'WCJ_Offer_Price' ) ) :
13
+
14
+ class WCJ_Offer_Price extends WCJ_Module {
15
+
16
+ /**
17
+ * Constructor.
18
+ *
19
+ * @version 2.9.0
20
+ * @since 2.9.0
21
+ * @todo css - better default colors
22
+ * @todo settings - more info about position priorities, e.g.: __( 'Standard priorities for "Inside single product summary": title - 5, rating - 10, price - 10, excerpt - 20, add to cart - 30, meta - 40, sharing - 50', 'woocommerce-jetpack' )
23
+ * @todo (maybe) better solution for the form hook (instead of `woocommerce_before_main_content`)
24
+ * @todo (maybe) css - customizable colors, fonts etc.
25
+ * @todo (maybe) per product settings - add "use global values/use values below" for price step etc. (instead of placeholders etc.)
26
+ * @todo (maybe) recheck multicurrency
27
+ * @todo (maybe) more "Make an offer" button position options (on both single and archives)
28
+ * @todo (maybe) variations and grouped products
29
+ * @todo (maybe) add shortcode
30
+ * @todo (maybe) offers history - option for disabling
31
+ * @todo (maybe) offers history - global (i.e. for all products)
32
+ */
33
+ function __construct() {
34
+
35
+ $this->id = 'offer_price';
36
+ $this->short_desc = __( 'Offer Your Price', 'woocommerce-jetpack' );
37
+ $this->desc = __( 'Let your customers to suggest their price for products in WooCommerce.', 'woocommerce-jetpack' );
38
+ $this->link_slug = 'woocommerce-offer-your-product-price';
39
+ parent::__construct();
40
+
41
+ if ( $this->is_enabled() ) {
42
+ if ( 'disable' != ( $_hook = get_option( 'wcj_offer_price_button_position', 'woocommerce_single_product_summary' ) ) ) {
43
+ add_action(
44
+ $_hook,
45
+ array( $this, 'add_offer_price_button' ),
46
+ get_option( 'wcj_offer_price_button_position_priority', 31 )
47
+ );
48
+ }
49
+ if ( 'disable' != ( $_hook = apply_filters( 'booster_get_option', 'disable', get_option( 'wcj_offer_price_button_position_archives', 'disable' ) ) ) ) {
50
+ add_action(
51
+ $_hook,
52
+ array( $this, 'add_offer_price_button' ),
53
+ get_option( 'wcj_offer_price_button_position_priority_archives', 10 )
54
+ );
55
+ }
56
+ add_action( 'woocommerce_before_main_content', array( $this, 'add_offer_price_form' ) );
57
+ add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
58
+ add_action( 'init', array( $this, 'offer_price' ) );
59
+ if ( 'per_product' === apply_filters( 'booster_get_option', 'all_products', get_option( 'wcj_offer_price_enabled_type', 'all_products' ) ) ) {
60
+ add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
61
+ add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
62
+ }
63
+ // Offer history
64
+ add_action( 'add_meta_boxes', array( $this, 'add_offer_price_history_meta_box' ) );
65
+ add_action( 'save_post_product', array( $this, 'delete_offer_price_product_history' ), PHP_INT_MAX, 2 );
66
+ }
67
+ }
68
+
69
+ /**
70
+ * delete_offer_price_product_history.
71
+ *
72
+ * @version 2.9.0
73
+ * @since 2.9.0
74
+ * @todo (maybe) add successful deletion notice
75
+ */
76
+ function delete_offer_price_product_history( $post_id, $post ) {
77
+ if ( isset( $_POST['wcj_offer_price_delete_history'] ) ) {
78
+ delete_post_meta( $post_id, '_' . 'wcj_price_offers' );
79
+ add_action( 'admin_notices', array( $this, 'notice_delete_offer_price_product_history' ) );
80
+ }
81
+ }
82
+
83
+ /**
84
+ * add_offer_price_history_meta_box.
85
+ *
86
+ * @version 2.9.0
87
+ * @since 2.9.0
88
+ */
89
+ function add_offer_price_history_meta_box() {
90
+ add_meta_box(
91
+ 'wc-booster-offer-price-history',
92
+ __( 'Booster: Offer Price History', 'woocommerce-jetpack' ),
93
+ array( $this, 'create_offer_price_history_meta_box' ),
94
+ 'product',
95
+ 'normal',
96
+ 'high'
97
+ );
98
+ }
99
+
100
+ /**
101
+ * create_offer_price_history_meta_box.
102
+ *
103
+ * @version 2.9.0
104
+ * @since 2.9.0
105
+ */
106
+ function create_offer_price_history_meta_box() {
107
+ if ( '' == ( $price_offers = get_post_meta( get_the_ID(), '_' . 'wcj_price_offers', true ) ) ) {
108
+ echo '<em>' . __( 'No price offers yet.', 'woocommerce-jetpack' ) . '</em>';
109
+ } else {
110
+ $average_offers = array();
111
+ $table_data = array();
112
+ $table_data[] = array(
113
+ __( 'Date', 'woocommerce-jetpack' ),
114
+ __( 'Price', 'woocommerce-jetpack' ),
115
+ __( 'Message', 'woocommerce-jetpack' ),
116
+ __( 'Name', 'woocommerce-jetpack' ),
117
+ __( 'Email', 'woocommerce-jetpack' ),
118
+ __( 'Customer ID', 'woocommerce-jetpack' ),
119
+ __( 'Sent to', 'woocommerce-jetpack' ),
120
+ );
121
+ $date_ant_time_format = get_option( 'date_format' ) . ' ' . get_option( 'time_format' );
122
+ $price_offers = array_reverse( $price_offers );
123
+ foreach ( $price_offers as $price_offer ) {
124
+ $table_data[] = array(
125
+ date_i18n( $date_ant_time_format, $price_offer['offer_timestamp'] ),
126
+ wc_price( $price_offer['offered_price'], array( 'currency' => $price_offer['currency_code'] ) ),
127
+ $price_offer['customer_message'],
128
+ $price_offer['customer_name'],
129
+ $price_offer['customer_email'],
130
+ $price_offer['customer_id'],
131
+ $price_offer['sent_to'] . ( 'yes' === $price_offer['copy_to_customer'] ? '<br>' . $price_offer['customer_email'] : '' ),
132
+ );
133
+ if ( ! isset( $average_offers[ $price_offer['currency_code'] ] ) ) {
134
+ $average_offers[ $price_offer['currency_code'] ] = array( 'total_offers' => 0, 'offers_sum' => 0 );
135
+ }
136
+ $average_offers[ $price_offer['currency_code'] ]['total_offers']++;
137
+ $average_offers[ $price_offer['currency_code'] ]['offers_sum'] += $price_offer['offered_price'];
138
+ }
139
+ echo wcj_get_table_html( $table_data, array( 'table_class' => 'widefat striped' ) );
140
+ foreach ( $average_offers as $average_offer_currency_code => $average_offer_data ) {
141
+ echo '<p>' . sprintf( __( 'Average offer: %s (from %s offer(s))', 'woocommerce-jetpack' ),
142
+ wc_price( ( $average_offer_data['offers_sum'] / $average_offer_data['total_offers'] ), array( 'currency' => $average_offer_currency_code ) ),
143
+ $average_offer_data['total_offers']
144
+ ) . '</p>';
145
+ }
146
+ echo '<p>' .
147
+ '<input type="checkbox" id="wcj_offer_price_delete_history" name="wcj_offer_price_delete_history">' .
148
+ '<label for="wcj_offer_price_delete_history">' . __( 'Delete history', 'woocommerce-jetpack' ) . '</label>' .
149
+ wc_help_tip( __( 'Update product after checking the box.', 'woocommerce-jetpack' ) ) .
150
+ '</p>';
151
+ }
152
+ }
153
+
154
+ /**
155
+ * enqueue_scripts.
156
+ *
157
+ * @version 2.9.0
158
+ * @since 2.9.0
159
+ * @see https://www.w3schools.com/howto/howto_css_modals.asp
160
+ * @todo (maybe) enqueue only if really needed
161
+ */
162
+ function enqueue_scripts() {
163
+ wp_enqueue_style( 'wcj-offer-price', wcj_plugin_url() . '/includes/css/wcj-offer-price.css', array(), WCJ()->version );
164
+ wp_enqueue_script( 'wcj-offer-price-js', wcj_plugin_url() . '/includes/js/wcj-offer-price.js', array( 'jquery' ), WCJ()->version, true );
165
+ }
166
+
167
+ /**
168
+ * is_offer_price_enabled_for_product.
169
+ *
170
+ * @version 2.9.0
171
+ * @since 2.9.0
172
+ */
173
+ function is_offer_price_enabled_for_product( $product_id ) {
174
+ switch ( apply_filters( 'booster_get_option', 'all_products', get_option( 'wcj_offer_price_enabled_type', 'all_products' ) ) ) {
175
+ case 'all_products':
176
+ return true;
177
+ case 'empty_prices':
178
+ $_product = wc_get_product( $product_id );
179
+ return ( '' === $_product->get_price() );
180
+ case 'per_product':
181
+ return ( 'yes' === get_post_meta( $product_id, '_' . 'wcj_offer_price_enabled', true ) );
182
+ }
183
+ }
184
+
185
+ /**
186
+ * get_wcj_data_array.
187
+ *
188
+ * @version 2.9.0
189
+ * @since 2.9.0
190
+ * @todo (maybe) rethink `str_replace( '\'', '"', ... )`
191
+ */
192
+ function get_wcj_data_array( $product_id ) {
193
+ $is_per_product_enabled = ( 'per_product' === apply_filters( 'booster_get_option', 'all_products', get_option( 'wcj_offer_price_enabled_type', 'all_products' ) ) );
194
+ // Price input - price step
195
+ $price_step = ( ! $is_per_product_enabled || '' === ( $price_step_per_product = get_post_meta( $product_id, '_' . 'wcj_offer_price_price_step', true ) ) ?
196
+ get_option( 'wcj_offer_price_price_step', get_option( 'woocommerce_price_num_decimals' ) ) :
197
+ $price_step_per_product
198
+ );
199
+ $price_step = sprintf( "%f", ( 1 / pow( 10, absint( $price_step ) ) ) );
200
+ // Price input - min price
201
+ $min_price = ( ! $is_per_product_enabled || '' === ( $min_price_per_product = get_post_meta( $product_id, '_' . 'wcj_offer_price_min_price', true ) ) ?
202
+ get_option( 'wcj_offer_price_min_price', 0 ) :
203
+ $min_price_per_product
204
+ );
205
+ // Price input - max price
206
+ $max_price = ( ! $is_per_product_enabled || '' === ( $max_price_per_product = get_post_meta( $product_id, '_' . 'wcj_offer_price_max_price', true ) ) ?
207
+ get_option( 'wcj_offer_price_max_price', 0 ) :
208
+ $max_price_per_product
209
+ );
210
+ // Price input - default price
211
+ $default_price = ( ! $is_per_product_enabled || '' === ( $default_price_per_product = get_post_meta( $product_id, '_' . 'wcj_offer_price_default_price', true ) ) ?
212
+ get_option( 'wcj_offer_price_default_price', 0 ) :
213
+ $default_price_per_product
214
+ );
215
+ // Price input - label
216
+ $price_label = str_replace(
217
+ '%currency_symbol%',
218
+ get_woocommerce_currency_symbol(),
219
+ get_option( 'wcj_offer_price_price_label', sprintf( __( 'Your price (%s)', 'woocommerce-jetpack' ), '%currency_symbol%' ) )
220
+ );
221
+ // Offer form - header
222
+ $form_header = str_replace(
223
+ '%product_title%',
224
+ get_the_title(),
225
+ get_option( 'wcj_offer_price_form_header_template', '<h3>' . sprintf( __( 'Suggest your price for %s', 'woocommerce-jetpack' ), '%product_title%' ) . '</h3>' )
226
+ );
227
+ return array(
228
+ 'price_step' => $price_step,
229
+ 'min_price' => $min_price,
230
+ 'max_price' => $max_price,
231
+ 'default_price' => $default_price,
232
+ 'price_label' => str_replace( '\'', '"', $price_label ),
233
+ 'form_header' => str_replace( '\'', '"', $form_header ),
234
+ 'product_id' => $product_id,
235
+ );
236
+ }
237
+
238
+ /**
239
+ * add_offer_price_form.
240
+ *
241
+ * @version 2.9.0
242
+ * @since 2.9.0
243
+ * @todo (maybe) fix when empty header
244
+ * @todo (maybe) style options for input fields (class, style)
245
+ * @todo (maybe) form template
246
+ * @todo (maybe) do_shortcode in form header and footer
247
+ * @todo (maybe) logged user - check `nickname` and `billing_email`
248
+ * @todo (maybe) better required asterix default
249
+ * @todo (maybe) optional, additional and custom form fields
250
+ */
251
+ function add_offer_price_form() {
252
+ // Prepare logged user data
253
+ $customer_name = '';
254
+ $customer_email = '';
255
+ $customer_id = 0;
256
+ if ( is_user_logged_in() ) {
257
+ $current_user = wp_get_current_user();
258
+ $customer_id = $current_user->ID;
259
+ if ( '' != ( $meta = get_user_meta( $current_user->ID, 'nickname', true ) ) ) {
260
+ $customer_name = $meta;
261
+ }
262
+ if ( '' != ( $meta = get_user_meta( $current_user->ID, 'billing_email', true ) ) ) {
263
+ $customer_email = $meta;
264
+ }
265
+ }
266
+ // Header
267
+ $offer_form_header = '<div class="wcj-offer-modal-header">' .
268
+ '<span class="wcj-offer-price-form-close">&times;</span>' . '<div id="wcj-offer-form-header"></div>' .
269
+ '</div>';
270
+ // Footer
271
+ $offer_form_footer = ( '' != ( $footer_template = get_option( 'wcj_offer_price_form_footer_template', '' ) ) ?
272
+ '<div class="wcj-offer-price-modal-footer">' . /* do_shortcode */( $footer_template ) . '</div>' : '' );
273
+ // Required HTML
274
+ $required_html = get_option( 'wcj_offer_price_form_required_html', ' <abbr class="required" title="required">*</abbr>' );
275
+ // Content - price
276
+ $offer_form_content_price = '<label for="wcj-offer-price-price">' .
277
+ '<span id="wcj-offer-price-price-label"></span>' . $required_html . '</label>' . '<br>' .
278
+ '<input type="number" required id="wcj-offer-price-price" name="wcj-offer-price-price">';
279
+ // Content - email
280
+ $offer_form_content_email = '<label for="wcj-offer-price-customer-email">' . get_option( 'wcj_offer_price_customer_email', __( 'Your email', 'woocommerce-jetpack' ) ) .
281
+ $required_html . '</label>' . '<br>' .
282
+ '<input type="email" required id="wcj-offer-price-customer-email" name="wcj-offer-price-customer-email" value="' . $customer_email . '">';
283
+ // Content - name
284
+ $offer_form_content_name = '<label for="wcj-offer-price-customer-name">' . get_option( 'wcj_offer_price_customer_name', __( 'Your name', 'woocommerce-jetpack' ) ) .
285
+ '</label>' . '<br>' .
286
+ '<input type="text" id="wcj-offer-price-customer-name" name="wcj-offer-price-customer-name" value="' . $customer_name . '">';
287
+ // Content - message
288
+ $offer_form_content_message = '<label for="wcj-offer-price-message">' . get_option( 'wcj_offer_price_customer_message', __( 'Your message', 'woocommerce-jetpack' ) ) . '</label>' . '<br>' .
289
+ '<textarea id="wcj-offer-price-message" name="wcj-offer-price-message"></textarea>';
290
+ // Content - button
291
+ $offer_form_content_button = '<input type="submit" id="wcj-offer-price-submit" name="wcj-offer-price-submit" value="' .
292
+ get_option( 'wcj_offer_price_form_button_label', __( 'Send', 'woocommerce-jetpack' ) ) . '">';
293
+ // Content - copy
294
+ $offer_form_content_copy = '<label for="wcj-offer-price-customer-copy">' . get_option( 'wcj_offer_price_customer_copy', __( 'Send a copy to your email', 'woocommerce-jetpack' ) ) .
295
+ '</label>' . ' ' .
296
+ '<input type="checkbox" id="wcj-offer-price-customer-copy" name="wcj-offer-price-customer-copy" value="yes">';
297
+ // Content
298
+ $offer_form_content = '<div class="wcj-offer-price-modal-body">' .
299
+ '<form method="post" id="wcj-offer-price-form">' .
300
+ '<p>' . $offer_form_content_price . '</p>' .
301
+ '<p>' . $offer_form_content_email . '</p>' .
302
+ '<p>' . $offer_form_content_name . '</p>' .
303
+ '<p>' . $offer_form_content_message . '</p>' .
304
+ '<p>' . $offer_form_content_button . '</p>' .
305
+ '<p>' . $offer_form_content_copy . '</p>' .
306
+ '<input type="hidden" id="wcj-offer-price-product-id" name="wcj-offer-price-product-id">' .
307
+ '<input type="hidden" name="wcj-offer-price-customer-id" value="' . $customer_id . '">' .
308
+ '</form>' .
309
+ '</div>';
310
+ // Final form
311
+ echo '<div id="wcj-offer-price-modal" class="wcj-offer-price-modal">' .
312
+ '<div class="wcj-offer-price-modal-content">' .
313
+ $offer_form_header .
314
+ $offer_form_content .
315
+ $offer_form_footer .
316
+ '</div>' .
317
+ '</div>';
318
+ }
319
+
320
+ /**
321
+ * add_offer_price_button.
322
+ *
323
+ * @version 2.9.0
324
+ * @since 2.9.0
325
+ */
326
+ function add_offer_price_button() {
327
+ $product_id = get_the_ID();
328
+ // Check if enabled for current product
329
+ if ( ! $this->is_offer_price_enabled_for_product( $product_id ) ) {
330
+ return;
331
+ }
332
+ // The button
333
+ echo '<p>' .
334
+ '<button type="submit"' .
335
+ ' name="wcj-offer-price-button"' .
336
+ ' class="wcj-offer-price-button"' .
337
+ ' value="' . $product_id . '"' .
338
+ ' class="' . get_option( 'wcj_offer_price_button_class', 'button' ) . '"' .
339
+ ' style="' . get_option( 'wcj_offer_price_button_style', '' ) . '"' .
340
+ ' wcj_data=\'' . json_encode( $this->get_wcj_data_array( $product_id ) ) . '\'' .
341
+ '>' .
342
+ get_option( 'wcj_offer_price_button_label', __( 'Make an offer', 'woocommerce-jetpack' ) ) .
343
+ '</button>' .
344
+ '</p>';
345
+ }
346
+
347
+ /**
348
+ * offer_price.
349
+ *
350
+ * @version 2.9.0
351
+ * @since 2.9.0
352
+ * @todo (maybe) separate customer copy email template and subject
353
+ * @todo (maybe) redirect (no notice though)
354
+ * @todo (maybe) `%product_title%` etc. in notice
355
+ * @todo (maybe) fix "From" header
356
+ * @todo (maybe) check if mail has really been sent
357
+ * @todo (maybe) sanitize $_POST
358
+ */
359
+ function offer_price() {
360
+ if ( isset( $_POST['wcj-offer-price-submit'] ) ) {
361
+ $product_id = $_POST['wcj-offer-price-product-id'];
362
+ $_product = wc_get_product( $product_id );
363
+ // Email address
364
+ $email_address = get_option( 'wcj_offer_price_email_address', '%admin_email%' );
365
+ if ( '' == $email_address ) {
366
+ $email_address = get_option( 'admin_email' );
367
+ } else {
368
+ $admin_email = get_option( 'admin_email' );
369
+ if (
370
+ ( $product_author_id = get_post_field( 'post_author', $product_id ) ) &&
371
+ ( $product_user_info = get_userdata( $product_author_id ) ) &&
372
+ isset( $product_user_info->user_email )
373
+ ) {
374
+ $product_author_email = $product_user_info->user_email;
375
+ } else {
376
+ $product_author_email = $admin_email;
377
+ }
378
+ $email_address = str_replace( array( '%admin_email%', '%product_author_email%' ), array( $admin_email, $product_author_email ), $email_address );
379
+ }
380
+ // Price offer array
381
+ $price_offer = array(
382
+ 'offer_timestamp' => current_time( 'timestamp' ),
383
+ 'product_title' => $_product->get_title(),
384
+ 'offered_price' => $_POST['wcj-offer-price-price'],
385
+ 'currency_code' => get_woocommerce_currency(),
386
+ 'customer_message' => $_POST['wcj-offer-price-message'],
387
+ 'customer_name' => $_POST['wcj-offer-price-customer-name'],
388
+ 'customer_email' => $_POST['wcj-offer-price-customer-email'],
389
+ 'customer_id' => $_POST['wcj-offer-price-customer-id'],
390
+ 'copy_to_customer' => ( isset( $_POST['wcj-offer-price-customer-copy'] ) ? $_POST['wcj-offer-price-customer-copy'] : 'no' ),
391
+ 'sent_to' => $email_address,
392
+ );
393
+ // Email content
394
+ $email_template = get_option( 'wcj_offer_price_email_template',
395
+ sprintf( __( 'Product: %s', 'woocommerce-jetpack' ), '%product_title%' ) . '<br>' . PHP_EOL .
396
+ sprintf( __( 'Offered price: %s', 'woocommerce-jetpack' ), '%offered_price%' ) . '<br>' . PHP_EOL .
397
+ sprintf( __( 'From: %s %s', 'woocommerce-jetpack' ), '%customer_name%', '%customer_email%' ) . '<br>' . PHP_EOL .
398
+ sprintf( __( 'Message: %s', 'woocommerce-jetpack' ), '%customer_message%' )
399
+ );
400
+ $replaced_values = array(
401
+ '%product_title%' => $price_offer['product_title'],
402
+ '%offered_price%' => wc_price( $price_offer['offered_price'] ),
403
+ '%customer_message%' => $price_offer['customer_message'],
404
+ '%customer_name%' => $price_offer['customer_name'],
405
+ '%customer_email%' => $price_offer['customer_email'],
406
+ );
407
+ $email_content = str_replace( array_keys( $replaced_values ), array_values( $replaced_values ), $email_template );
408
+ // Email subject and headers
409
+ $email_subject = get_option( 'wcj_offer_price_email_subject', __( 'Price Offer', 'woocommerce-jetpack' ) );
410
+ $email_headers = 'Content-Type: text/html' . "\r\n" .
411
+ 'From: ' . $price_offer['customer_name'] . ' <' . $price_offer['customer_email'] . '>' . "\r\n" .
412
+ 'Reply-To: ' . $price_offer['customer_email'] . "\r\n";
413
+ // Send email
414
+ wc_mail( $email_address, $email_subject, $email_content, $email_headers );
415
+ if ( 'yes' === $price_offer['copy_to_customer'] ) {
416
+ wc_mail( $price_offer['customer_email'], $email_subject, $email_content, $email_headers );
417
+ }
418
+ // Notice
419
+ wc_add_notice( get_option( 'wcj_offer_price_customer_notice', __( 'Your price offer has been sent.', 'woocommerce-jetpack' ) ), 'notice' );
420
+ // Product meta (Offer Price History)
421
+ if ( '' == ( $price_offers = get_post_meta( $product_id, '_' . 'wcj_price_offers', true ) ) ) {
422
+ $price_offers = array();
423
+ }
424
+ $price_offers[] = $price_offer;
425
+ update_post_meta( $product_id, '_' . 'wcj_price_offers', $price_offers );
426
+ }
427
+ }
428
+
429
+ }
430
+
431
+ endif;
432
+
433
+ return new WCJ_Offer_Price();
includes/class-wcj-order-custom-statuses.php CHANGED
@@ -424,6 +424,8 @@ class WCJ_Order_Custom_Statuses extends WCJ_Module {
424
 
425
  /**
426
  * get_order_statuses.
 
 
427
  */
428
  function get_order_statuses() {
429
  $result = array();
424
 
425
  /**
426
  * get_order_statuses.
427
+ *
428
+ * @todo use `wcj_get_order_statuses_v2`
429
  */
430
  function get_order_statuses() {
431
  $result = array();
includes/class-wcj-order-min-amount.php CHANGED
@@ -2,9 +2,10 @@
2
  /**
3
  * Booster for WooCommerce - Module - Order Minimum Amount
4
  *
5
- * @version 2.8.0
6
  * @since 2.5.7
7
  * @author Algoritmika Ltd.
 
8
  */
9
 
10
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
@@ -55,7 +56,7 @@ class WCJ_Order_Min_Amount extends WCJ_Module {
55
  add_action( 'woocommerce_checkout_process', array( $this, 'order_minimum_amount' ) );
56
  add_action( 'woocommerce_before_cart', array( $this, 'order_minimum_amount' ) );
57
  if ( 'yes' === get_option( 'wcj_order_minimum_amount_stop_from_seeing_checkout', 'no' ) ) {
58
- add_action( 'wp', array( $this, 'stop_from_seeing_checkout' ), 100 );
59
  }
60
  }
61
  }
@@ -105,8 +106,8 @@ class WCJ_Order_Min_Amount extends WCJ_Module {
105
  /**
106
  * order_minimum_amount.
107
  *
108
- * @version 2.7.0
109
- * @todo wc_print_notice or wc_add_notice?
110
  */
111
  function order_minimum_amount() {
112
  $minimum = $this->get_order_minimum_amount_with_user_roles();
@@ -115,14 +116,15 @@ class WCJ_Order_Min_Amount extends WCJ_Module {
115
  }
116
  $cart_total = $this->get_cart_total_for_minimal_order_amount();
117
  if ( $cart_total < $minimum ) {
118
- if( is_cart() ) {
119
  if ( 'yes' === get_option( 'wcj_order_minimum_amount_cart_notice_enabled', 'no' ) ) {
120
- wc_print_notice(
 
121
  sprintf( apply_filters( 'booster_get_option', 'You must have an order with a minimum of %s to place your order, your current order total is %s.', get_option( 'wcj_order_minimum_amount_cart_notice_message' ) ),
122
  wc_price( $minimum ),
123
  wc_price( $cart_total )
124
  ),
125
- 'notice'
126
  );
127
  }
128
  } else {
2
  /**
3
  * Booster for WooCommerce - Module - Order Minimum Amount
4
  *
5
+ * @version 2.9.0
6
  * @since 2.5.7
7
  * @author Algoritmika Ltd.
8
+ * @todo order max amount
9
  */
10
 
11
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
56
  add_action( 'woocommerce_checkout_process', array( $this, 'order_minimum_amount' ) );
57
  add_action( 'woocommerce_before_cart', array( $this, 'order_minimum_amount' ) );
58
  if ( 'yes' === get_option( 'wcj_order_minimum_amount_stop_from_seeing_checkout', 'no' ) ) {
59
+ add_action( 'wp', array( $this, 'stop_from_seeing_checkout' ), 100 );
60
  }
61
  }
62
  }
106
  /**
107
  * order_minimum_amount.
108
  *
109
+ * @version 2.9.0
110
+ * @todo `wcj_order_minimum_amount_checkout_notice_type`
111
  */
112
  function order_minimum_amount() {
113
  $minimum = $this->get_order_minimum_amount_with_user_roles();
116
  }
117
  $cart_total = $this->get_cart_total_for_minimal_order_amount();
118
  if ( $cart_total < $minimum ) {
119
+ if ( is_cart() ) {
120
  if ( 'yes' === get_option( 'wcj_order_minimum_amount_cart_notice_enabled', 'no' ) ) {
121
+ $notice_function = get_option( 'wcj_order_minimum_amount_cart_notice_function', 'wc_print_notice' );
122
+ $notice_function(
123
  sprintf( apply_filters( 'booster_get_option', 'You must have an order with a minimum of %s to place your order, your current order total is %s.', get_option( 'wcj_order_minimum_amount_cart_notice_message' ) ),
124
  wc_price( $minimum ),
125
  wc_price( $cart_total )
126
  ),
127
+ get_option( 'wcj_order_minimum_amount_cart_notice_type', 'notice' )
128
  );
129
  }
130
  } else {
includes/class-wcj-order-quantities.php ADDED
@@ -0,0 +1,200 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Module - Order Min/Max Quantities
4
+ *
5
+ * @version 2.9.0
6
+ * @since 2.9.0
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
+
12
+ if ( ! class_exists( 'WCJ_Order_Quantities' ) ) :
13
+
14
+ class WCJ_Order_Quantities extends WCJ_Module {
15
+
16
+ /**
17
+ * Constructor.
18
+ *
19
+ * @version 2.9.0
20
+ * @since 2.9.0
21
+ * @todo quantities per item - per product
22
+ * @todo (maybe) do not allow to add/remove items (instead of just printing messages)
23
+ * @todo (maybe) order quantities by user roles
24
+ */
25
+ function __construct() {
26
+
27
+ $this->id = 'order_quantities';
28
+ $this->short_desc = __( 'Order Min/Max Quantities', 'woocommerce-jetpack' );
29
+ $this->desc = __( 'Set min/max product quantities in WooCommerce order.', 'woocommerce-jetpack' );
30
+ $this->link_slug = 'woocommerce-order-min-max-quantities';
31
+ parent::__construct();
32
+
33
+ if ( $this->is_enabled() ) {
34
+ if ( 'yes' === get_option( 'wcj_order_quantities_max_section_enabled', 'no' ) || 'yes' === get_option( 'wcj_order_quantities_min_section_enabled', 'no' ) ) {
35
+ add_action( 'woocommerce_checkout_process', array( $this, 'check_order_quantities' ) );
36
+ add_action( 'woocommerce_before_cart', array( $this, 'check_order_quantities' ) );
37
+ if ( 'yes' === get_option( 'wcj_order_quantities_stop_from_seeing_checkout', 'no' ) ) {
38
+ add_action( 'wp', array( $this, 'stop_from_seeing_checkout' ), PHP_INT_MAX );
39
+ }
40
+ }
41
+ }
42
+ }
43
+
44
+ /**
45
+ * stop_from_seeing_checkout.
46
+ *
47
+ * @version 2.9.0
48
+ * @since 2.9.0
49
+ */
50
+ function stop_from_seeing_checkout() {
51
+ if ( ! isset( WC()->cart ) ) {
52
+ return;
53
+ }
54
+ if ( ! is_checkout() ) {
55
+ return;
56
+ }
57
+ $cart_item_quantities = WC()->cart->get_cart_item_quantities();
58
+ if ( empty( $cart_item_quantities ) || ! is_array( $cart_item_quantities ) ) {
59
+ return;
60
+ }
61
+ $cart_total_quantity = array_sum( $cart_item_quantities );
62
+ if ( 'yes' === get_option( 'wcj_order_quantities_max_section_enabled', 'no' ) ) {
63
+ if ( ! $this->check_quantities( 'max', $cart_item_quantities, $cart_total_quantity, false, true ) ) {
64
+ wp_safe_redirect( WC()->cart->get_cart_url() );
65
+ exit;
66
+ }
67
+ }
68
+ if ( 'yes' === get_option( 'wcj_order_quantities_min_section_enabled', 'no' ) ) {
69
+ if ( ! $this->check_quantities( 'min', $cart_item_quantities, $cart_total_quantity, false, true ) ) {
70
+ wp_safe_redirect( WC()->cart->get_cart_url() );
71
+ exit;
72
+ }
73
+ }
74
+ }
75
+
76
+ /**
77
+ * print_message.
78
+ *
79
+ * @version 2.9.0
80
+ * @since 2.9.0
81
+ */
82
+ function print_message( $message_type, $_is_cart, $required_quantity, $total_quantity, $_product_id = 0 ) {
83
+ if ( $_is_cart ) {
84
+ if ( 'no' === get_option( 'wcj_order_quantities_cart_notice_enabled', 'no' ) ) {
85
+ return;
86
+ }
87
+ }
88
+ switch ( $message_type ) {
89
+ case 'max_cart_total_quantity':
90
+ $replaced_values = array(
91
+ '%max_cart_total_quantity%' => $required_quantity,
92
+ '%cart_total_quantity%' => $total_quantity,
93
+ );
94
+ $message_template = get_option( 'wcj_order_quantities_max_cart_total_message',
95
+ __( 'Maximum allowed order quantity is %max_cart_total_quantity%. Your current order quantity is %cart_total_quantity%.', 'woocommerce-jetpack' ) );
96
+ break;
97
+ case 'min_cart_total_quantity':
98
+ $replaced_values = array(
99
+ '%min_cart_total_quantity%' => $required_quantity,
100
+ '%cart_total_quantity%' => $total_quantity,
101
+ );
102
+ $message_template = get_option( 'wcj_order_quantities_min_cart_total_message',
103
+ __( 'Minimum allowed order quantity is %min_cart_total_quantity%. Your current order quantity is %cart_total_quantity%.', 'woocommerce-jetpack' ) );
104
+ break;
105
+ case 'max_per_item_quantity':
106
+ $_product = wc_get_product( $_product_id );
107
+ $replaced_values = array(
108
+ '%max_per_item_quantity%' => $required_quantity,
109
+ '%item_quantity%' => $total_quantity,
110
+ '%product_title%' => $_product->get_title(),
111
+ );
112
+ $message_template = get_option( 'wcj_order_quantities_max_per_item_message',
113
+ __( 'Maximum allowed quantity for %product_title% is %max_per_item_quantity%. Your current item quantity is %item_quantity%.', 'woocommerce-jetpack' ) );
114
+ break;
115
+ case 'min_per_item_quantity':
116
+ $_product = wc_get_product( $_product_id );
117
+ $replaced_values = array(
118
+ '%min_per_item_quantity%' => $required_quantity,
119
+ '%item_quantity%' => $total_quantity,
120
+ '%product_title%' => $_product->get_title(),
121
+ );
122
+ $message_template = get_option( 'wcj_order_quantities_min_per_item_message',
123
+ __( 'Minimum allowed quantity for %product_title% is %min_per_item_quantity%. Your current item quantity is %item_quantity%.', 'woocommerce-jetpack' ) );
124
+ break;
125
+ }
126
+ $_notice = str_replace( array_keys( $replaced_values ), array_values( $replaced_values ), $message_template );
127
+ if ( $_is_cart ) {
128
+ wc_print_notice( $_notice, 'notice' );
129
+ } else {
130
+ wc_add_notice( $_notice, 'error' );
131
+ }
132
+ }
133
+
134
+ /**
135
+ * check_quantities.
136
+ *
137
+ * @version 2.9.0
138
+ * @since 2.9.0
139
+ */
140
+ function check_quantities( $min_or_max, $cart_item_quantities, $cart_total_quantity, $_is_cart, $_return ) {
141
+ if ( 0 != ( $min_or_max_cart_total_quantity = get_option( 'wcj_order_quantities_' . $min_or_max . '_cart_total_quantity', 0 ) ) ) {
142
+ if (
143
+ ( 'max' === $min_or_max && $cart_total_quantity > $min_or_max_cart_total_quantity ) ||
144
+ ( 'min' === $min_or_max && $cart_total_quantity < $min_or_max_cart_total_quantity )
145
+ ) {
146
+ if ( $_return ) {
147
+ return false;
148
+ } else {
149
+ $this->print_message( $min_or_max . '_cart_total_quantity', $_is_cart, $min_or_max_cart_total_quantity, $cart_total_quantity );
150
+ }
151
+ }
152
+ }
153
+ if ( 0 != ( $max_or_max_per_item_quantity = apply_filters( 'booster_get_option', 0, get_option( 'wcj_order_quantities_' . $min_or_max . '_per_item_quantity', 0 ) ) ) ) {
154
+ foreach ( $cart_item_quantities as $_product_id => $cart_item_quantity ) {
155
+ if (
156
+ ( 'max' === $min_or_max && $cart_item_quantity > $max_or_max_per_item_quantity ) ||
157
+ ( 'min' === $min_or_max && $cart_item_quantity < $max_or_max_per_item_quantity )
158
+ ) {
159
+ if ( $_return ) {
160
+ return false;
161
+ } else {
162
+ $this->print_message( $min_or_max . '_per_item_quantity', $_is_cart, $max_or_max_per_item_quantity, $cart_item_quantity, $_product_id );
163
+ }
164
+ }
165
+ }
166
+ }
167
+ if ( $_return ) {
168
+ return true;
169
+ }
170
+ }
171
+
172
+ /**
173
+ * check_order_quantities.
174
+ *
175
+ * @version 2.9.0
176
+ * @since 2.9.0
177
+ */
178
+ function check_order_quantities() {
179
+ if ( ! isset( WC()->cart ) ) {
180
+ return;
181
+ }
182
+ $cart_item_quantities = WC()->cart->get_cart_item_quantities();
183
+ if ( empty( $cart_item_quantities ) || ! is_array( $cart_item_quantities ) ) {
184
+ return;
185
+ }
186
+ $cart_total_quantity = array_sum( $cart_item_quantities );
187
+ $_is_cart = is_cart();
188
+ if ( 'yes' === get_option( 'wcj_order_quantities_max_section_enabled', 'no' ) ) {
189
+ $this->check_quantities( 'max', $cart_item_quantities, $cart_total_quantity, $_is_cart, false );
190
+ }
191
+ if ( 'yes' === get_option( 'wcj_order_quantities_min_section_enabled', 'no' ) ) {
192
+ $this->check_quantities( 'min', $cart_item_quantities, $cart_total_quantity, $_is_cart, false );
193
+ }
194
+ }
195
+
196
+ }
197
+
198
+ endif;
199
+
200
+ return new WCJ_Order_Quantities();
includes/class-wcj-orders.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Orders
4
  *
5
- * @version 2.8.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -15,7 +15,7 @@ class WCJ_Orders extends WCJ_Module {
15
  /**
16
  * Constructor.
17
  *
18
- * @version 2.8.0
19
  */
20
  function __construct() {
21
 
@@ -70,7 +70,56 @@ class WCJ_Orders extends WCJ_Module {
70
  if ( 'yes' === get_option( 'wcj_order_admin_list_columns_order_enabled', 'no' ) ) {
71
  add_filter( 'manage_edit-shop_order_columns', array( $this, 'rearange_order_columns' ), PHP_INT_MAX - 1 );
72
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  }
 
74
  }
75
 
76
  /**
2
  /**
3
  * Booster for WooCommerce - Module - Orders
4
  *
5
+ * @version 2.9.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
15
  /**
16
  * Constructor.
17
  *
18
+ * @version 2.9.0
19
  */
20
  function __construct() {
21
 
70
  if ( 'yes' === get_option( 'wcj_order_admin_list_columns_order_enabled', 'no' ) ) {
71
  add_filter( 'manage_edit-shop_order_columns', array( $this, 'rearange_order_columns' ), PHP_INT_MAX - 1 );
72
  }
73
+
74
+ // Maybe make sortable custom columns
75
+ add_filter( 'manage_edit-shop_order_sortable_columns', array( $this, 'shop_order_sortable_columns' ) );
76
+ add_action( 'pre_get_posts', array( $this, 'shop_order_pre_get_posts_order_by_column' ), 1 );
77
+ }
78
+ }
79
+
80
+ /**
81
+ * shop_order_pre_get_posts_order_by_column.
82
+ *
83
+ * @version 2.9.0
84
+ * @since 2.9.0
85
+ * @todo add sortable to "Billing Country" and "Currency Code"
86
+ * @todo move custom columns section (probably with reordering and multiple status sections) to new module (e.g. (Admin) Order(s) List) - same with products custom columns
87
+ * @todo (maybe) add filtering to custom columns (as it's done for "Billing Country" and "Currency Code")
88
+ */
89
+ function shop_order_pre_get_posts_order_by_column( $query ) {
90
+ if (
91
+ $query->is_main_query() &&
92
+ ( $orderby = $query->get( 'orderby' ) ) &&
93
+ isset( $query->query['post_type'] ) && 'shop_order' === $query->query['post_type'] &&
94
+ isset( $query->is_admin ) && 1 == $query->is_admin
95
+ ) {
96
+ if ( 'wcj_orders_custom_column_' === substr( $orderby, 0, 25 ) ) {
97
+ $index = substr( $orderby, 25 );
98
+ $query->set( 'orderby', get_option( 'wcj_orders_list_custom_columns_sortable_' . $index, 'no' ) ); // 'meta_value' or 'meta_value_num'
99
+ $query->set( 'meta_key', get_option( 'wcj_orders_list_custom_columns_sortable_key_' . $index, '' ) );
100
+ }
101
+ }
102
+ }
103
+
104
+ /**
105
+ * Make columns sortable.
106
+ *
107
+ * @version 2.9.0
108
+ * @since 2.9.0
109
+ * @param array $columns
110
+ * @return array
111
+ */
112
+ function shop_order_sortable_columns( $columns ) {
113
+ $custom = array();
114
+ $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_orders_list_custom_columns_total_number', 1 ) );
115
+ for ( $i = 1; $i <= $total_number; $i++ ) {
116
+ if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_enabled_' . $i, 'no' ) ) {
117
+ if ( 'no' != get_option( 'wcj_orders_list_custom_columns_sortable_' . $i, 'no' ) && '' != get_option( 'wcj_orders_list_custom_columns_sortable_key_' . $i, '' ) ) {
118
+ $custom[ 'wcj_orders_custom_column_' . $i ] = 'wcj_orders_custom_column_' . $i;
119
+ }
120
+ }
121
  }
122
+ return ( ! empty( $custom ) ? wp_parse_args( $custom, $columns ) : $columns );
123
  }
124
 
125
  /**
includes/class-wcj-payment-gateways-currency.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Gateways Currency
4
  *
5
- * @version 2.8.0
6
  * @since 2.3.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -185,9 +185,11 @@ class WCJ_Payment_Gateways_Currency extends WCJ_Module {
185
 
186
  /**
187
  * register_script.
 
 
188
  */
189
  function register_script() {
190
- wp_register_script( 'wcj-payment-gateways-checkout', trailingslashit( plugin_dir_url( __FILE__ ) ) . 'js/checkout.js', array( 'jquery' ), false, true );
191
  }
192
 
193
  /**
2
  /**
3
  * Booster for WooCommerce - Module - Gateways Currency
4
  *
5
+ * @version 2.9.0
6
  * @since 2.3.0
7
  * @author Algoritmika Ltd.
8
  */
185
 
186
  /**
187
  * register_script.
188
+ *
189
+ * @version 2.9.0
190
  */
191
  function register_script() {
192
+ wp_register_script( 'wcj-payment-gateways-checkout', trailingslashit( plugin_dir_url( __FILE__ ) ) . 'js/wcj-checkout.js', array( 'jquery' ), WCJ()->version, true );
193
  }
194
 
195
  /**
includes/class-wcj-payment-gateways-fees.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Gateways Fees and Discounts
4
  *
5
- * @version 2.8.2
6
  * @since 2.2.2
7
  * @author Algoritmika Ltd.
8
  */
@@ -35,13 +35,13 @@ class WCJ_Payment_Gateways_Fees extends WCJ_Module {
35
  /**
36
  * enqueue_checkout_script.
37
  *
38
- * @version 2.7.0
39
  */
40
  function enqueue_checkout_script() {
41
  if( ! is_checkout() ) {
42
  return;
43
  }
44
- wp_enqueue_script( 'wcj-payment-gateways-checkout', trailingslashit( plugin_dir_url( __FILE__ ) ) . 'js/checkout.js', array( 'jquery' ), WCJ()->version, true );
45
  }
46
 
47
  /**
2
  /**
3
  * Booster for WooCommerce - Module - Gateways Fees and Discounts
4
  *
5
+ * @version 2.9.0
6
  * @since 2.2.2
7
  * @author Algoritmika Ltd.
8
  */
35
  /**
36
  * enqueue_checkout_script.
37
  *
38
+ * @version 2.9.0
39
  */
40
  function enqueue_checkout_script() {
41
  if( ! is_checkout() ) {
42
  return;
43
  }
44
+ wp_enqueue_script( 'wcj-payment-gateways-checkout', trailingslashit( plugin_dir_url( __FILE__ ) ) . 'js/wcj-checkout.js', array( 'jquery' ), WCJ()->version, true );
45
  }
46
 
47
  /**
includes/class-wcj-pdf-invoicing.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - PDF Invoicing
4
  *
5
- * @version 2.8.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -307,20 +307,49 @@ class WCJ_PDF_Invoicing extends WCJ_Module {
307
  }
308
  }
309
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
310
  /**
311
  * generate_pdf_on_init.
312
  *
313
- * @version 2.5.6
314
  */
315
  function generate_pdf_on_init() {
316
 
317
  // Check if all is OK
318
- if (
319
- ( true !== $this->get_invoice ) ||
320
- ( 0 == $this->order_id ) ||
321
- ( ! is_user_logged_in() ) ||
322
- ( ! current_user_can( 'administrator' ) && ! is_shop_manager() && get_current_user_id() != intval( get_post_meta( $this->order_id, '_customer_user', true ) ) )
323
- ) {
324
  return;
325
  }
326
 
2
  /**
3
  * Booster for WooCommerce - Module - PDF Invoicing
4
  *
5
+ * @version 2.9.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
307
  }
308
  }
309
 
310
+ /**
311
+ * check_user_roles.
312
+ *
313
+ * @version 2.9.0
314
+ * @since 2.9.0
315
+ * @todo apply user role checking to other actions - create etc.
316
+ * @todo check if `current_user_can( 'administrator' )` is the same as checking role directly
317
+ */
318
+ function check_user_roles() {
319
+ if ( get_current_user_id() == intval( get_post_meta( $this->order_id, '_customer_user', true ) ) ) {
320
+ return true;
321
+ }
322
+ $allowed_user_roles = get_option( 'wcj_invoicing_' . $this->invoice_type_id . '_roles', array( 'administrator', 'shop_manager' ) );
323
+ if ( empty( $allowed_user_roles ) ) {
324
+ $allowed_user_roles = array( 'administrator' );
325
+ }
326
+ if ( wcj_is_user_role( $allowed_user_roles ) ) {
327
+ return true;
328
+ } else {
329
+ add_action( 'admin_notices', array( $this, 'wrong_user_role_notice' ) );
330
+ return false;
331
+ }
332
+ }
333
+
334
+ /**
335
+ * wrong_user_role_notice.
336
+ *
337
+ * @version 2.9.0
338
+ * @since 2.9.0
339
+ */
340
+ function wrong_user_role_notice() {
341
+ echo '<div class="notice notice-error is-dismissible"><p>' . __( 'You are not allowed to view the invoice.', 'woocommerce-jetpack' ) . '</p></div>';
342
+ }
343
+
344
  /**
345
  * generate_pdf_on_init.
346
  *
347
+ * @version 2.9.0
348
  */
349
  function generate_pdf_on_init() {
350
 
351
  // Check if all is OK
352
+ if ( true !== $this->get_invoice || 0 == $this->order_id || ! is_user_logged_in() || ! $this->check_user_roles() ) {
 
 
 
 
 
353
  return;
354
  }
355
 
includes/class-wcj-price-by-user-role.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Price by User Role
4
  *
5
- * @version 2.8.2
6
  * @since 2.5.0
7
  * @author Algoritmika Ltd.
8
  * @todo Fix "Make Empty Price" option for variable products
@@ -157,7 +157,7 @@ class WCJ_Price_By_User_Role extends WCJ_Module {
157
  /**
158
  * change_price.
159
  *
160
- * @version 2.8.0
161
  * @since 2.5.0
162
  */
163
  function change_price( $price, $_product ) {
@@ -208,6 +208,17 @@ class WCJ_Price_By_User_Role extends WCJ_Module {
208
  }
209
  }
210
 
 
 
 
 
 
 
 
 
 
 
 
211
  // By category
212
  $categories = apply_filters( 'booster_get_option', '', get_option( 'wcj_price_by_user_role_categories', '' ) );
213
  if ( ! empty( $categories ) ) {
2
  /**
3
  * Booster for WooCommerce - Module - Price by User Role
4
  *
5
+ * @version 2.9.0
6
  * @since 2.5.0
7
  * @author Algoritmika Ltd.
8
  * @todo Fix "Make Empty Price" option for variable products
157
  /**
158
  * change_price.
159
  *
160
+ * @version 2.9.0
161
  * @since 2.5.0
162
  */
163
  function change_price( $price, $_product ) {
208
  }
209
  }
210
 
211
+ // Maybe disable for_products on sale
212
+ if ( 'yes' === get_option( 'wcj_price_by_user_role_disable_for_products_on_sale', 'no' ) ) {
213
+ wcj_remove_change_price_hooks( $this, PHP_INT_MAX - 200 );
214
+ if ( $_product && $_product->is_on_sale() ) {
215
+ wcj_add_change_price_hooks( $this, PHP_INT_MAX - 200 );
216
+ return $price;
217
+ } else {
218
+ wcj_add_change_price_hooks( $this, PHP_INT_MAX - 200 );
219
+ }
220
+ }
221
+
222
  // By category
223
  $categories = apply_filters( 'booster_get_option', '', get_option( 'wcj_price_by_user_role_categories', '' ) );
224
  if ( ! empty( $categories ) ) {
includes/class-wcj-product-add-to-cart.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Product Add To Cart
4
  *
5
- * @version 2.8.0
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -16,7 +16,7 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
16
  /**
17
  * Constructor.
18
  *
19
- * @version 2.8.0
20
  */
21
  function __construct() {
22
 
@@ -40,6 +40,7 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
40
  'yes' === get_option( 'wcj_add_to_cart_button_per_product_enabled', 'no' ) ||
41
  'yes' === get_option( 'wcj_add_to_cart_button_custom_loop_url_per_product_enabled', 'no' ) ||
42
  'yes' === get_option( 'wcj_add_to_cart_button_ajax_per_product_enabled', 'no' ) ||
 
43
  'per_product' === get_option( 'wcj_add_to_cart_on_visit_enabled', 'no' )
44
  ) {
45
  add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
@@ -55,8 +56,8 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
55
  }
56
 
57
  // Local Redirect
58
- if ( 'yes' === get_option( 'wcj_add_to_cart_redirect_enabled', 'no' ) ) {
59
- add_filter( 'woocommerce_add_to_cart_redirect', array( $this, 'redirect_to_url' ), PHP_INT_MAX );
60
  }
61
 
62
  // Add to Cart on Visit
@@ -67,7 +68,7 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
67
  // Variable Add to Cart Template
68
  if ( 'yes' === apply_filters( 'booster_get_option', 'wcj', get_option( 'wcj_add_to_cart_variable_as_radio_enabled', 'no' ) ) ) {
69
  add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_variable_add_to_cart_scripts' ) );
70
- add_filter( 'wc_get_template', array( $this, 'change_variable_add_to_cart_template' ), PHP_INT_MAX, 5 );
71
  }
72
 
73
  // Replace Add to Cart Loop with Single
@@ -325,11 +326,11 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
325
  /**
326
  * enqueue_variable_add_to_cart_scripts.
327
  *
328
- * @version 2.4.8
329
  * @since 2.4.8
330
  */
331
  function enqueue_variable_add_to_cart_scripts() {
332
- wp_enqueue_script( 'wcj-variations', wcj_plugin_url() . '/includes/js/wcj-variations-frontend.js', array( 'jquery' ) );
333
  }
334
 
335
  /**
@@ -337,7 +338,6 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
337
  *
338
  * @version 2.4.8
339
  * @since 2.4.8
340
- * @todo fix - variations images to changing (maybe check Crowdfunding plugin)
341
  */
342
  function change_variable_add_to_cart_template( $located, $template_name, $args, $template_path, $default_path ) {
343
  if ( 'single-product/add-to-cart/variable.php' == $template_name ) {
@@ -347,21 +347,38 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
347
  }
348
 
349
  /*
350
- * redirect_to_url.
 
 
351
  */
352
- function redirect_to_url( $url ) {
353
- global $woocommerce;
354
- $checkout_url = get_option( 'wcj_add_to_cart_redirect_url' );
355
- if ( '' === $checkout_url ) {
356
- $checkout_url = $woocommerce->cart->get_checkout_url();
 
 
 
 
 
 
 
357
  }
358
- return $checkout_url;
 
 
 
 
 
 
 
359
  }
360
 
361
  /*
362
  * Add item to cart on visit.
363
  *
364
- * @version 2.7.0
 
365
  */
366
  function add_to_cart_on_visit() {
367
  if ( ! is_admin() && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) && is_product() && ( $product_id = get_the_ID() ) ) {
@@ -382,10 +399,21 @@ class WCJ_Product_Add_To_Cart extends WCJ_Module {
382
  }
383
  }
384
  // Product not found - add it
385
- WC()->cart->add_to_cart( $product_id );
386
  } else {
387
  // No products in cart - add it
388
- WC()->cart->add_to_cart( $product_id );
 
 
 
 
 
 
 
 
 
 
 
389
  }
390
  }
391
  }
2
  /**
3
  * Booster for WooCommerce - Module - Product Add To Cart
4
  *
5
+ * @version 2.9.0
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  */
16
  /**
17
  * Constructor.
18
  *
19
+ * @version 2.9.0
20
  */
21
  function __construct() {
22
 
40
  'yes' === get_option( 'wcj_add_to_cart_button_per_product_enabled', 'no' ) ||
41
  'yes' === get_option( 'wcj_add_to_cart_button_custom_loop_url_per_product_enabled', 'no' ) ||
42
  'yes' === get_option( 'wcj_add_to_cart_button_ajax_per_product_enabled', 'no' ) ||
43
+ 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_add_to_cart_redirect_per_product_enabled', 'no' ) ) ||
44
  'per_product' === get_option( 'wcj_add_to_cart_on_visit_enabled', 'no' )
45
  ) {
46
  add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
56
  }
57
 
58
  // Local Redirect
59
+ if ( 'yes' === get_option( 'wcj_add_to_cart_redirect_enabled', 'no' ) || 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_add_to_cart_redirect_per_product_enabled', 'no' ) ) ) {
60
+ add_filter( 'woocommerce_add_to_cart_redirect', array( $this, 'maybe_redirect_to_url' ), PHP_INT_MAX );
61
  }
62
 
63
  // Add to Cart on Visit
68
  // Variable Add to Cart Template
69
  if ( 'yes' === apply_filters( 'booster_get_option', 'wcj', get_option( 'wcj_add_to_cart_variable_as_radio_enabled', 'no' ) ) ) {
70
  add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_variable_add_to_cart_scripts' ) );
71
+ add_filter( 'wc_get_template', array( $this, 'change_variable_add_to_cart_template' ), PHP_INT_MAX, 5 );
72
  }
73
 
74
  // Replace Add to Cart Loop with Single
326
  /**
327
  * enqueue_variable_add_to_cart_scripts.
328
  *
329
+ * @version 2.9.0
330
  * @since 2.4.8
331
  */
332
  function enqueue_variable_add_to_cart_scripts() {
333
+ wp_enqueue_script( 'wcj-variations', wcj_plugin_url() . '/includes/js/wcj-variations-frontend.js', array( 'jquery' ), WCJ()->version, true );
334
  }
335
 
336
  /**
338
  *
339
  * @version 2.4.8
340
  * @since 2.4.8
 
341
  */
342
  function change_variable_add_to_cart_template( $located, $template_name, $args, $template_path, $default_path ) {
343
  if ( 'single-product/add-to-cart/variable.php' == $template_name ) {
347
  }
348
 
349
  /*
350
+ * maybe_redirect_to_url.
351
+ *
352
+ * @version 2.9.0
353
  */
354
+ function maybe_redirect_to_url( $url, $product_id = false ) {
355
+ if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_add_to_cart_redirect_per_product_enabled', 'no' ) ) && ( $product_id || isset( $_REQUEST['add-to-cart'] ) ) ) {
356
+ if ( ! $product_id ) {
357
+ $product_id = apply_filters( 'woocommerce_add_to_cart_product_id', absint( $_REQUEST['add-to-cart'] ) );
358
+ }
359
+ if ( 'yes' === get_post_meta( $product_id, '_' . 'wcj_add_to_cart_redirect_enabled', true ) ) {
360
+ $redirect_url = get_post_meta( $product_id, '_' . 'wcj_add_to_cart_redirect_url', true );
361
+ if ( '' === $redirect_url ) {
362
+ $redirect_url = WC()->cart->get_checkout_url();
363
+ }
364
+ return $redirect_url;
365
+ }
366
  }
367
+ if ( 'yes' === get_option( 'wcj_add_to_cart_redirect_enabled', 'no' ) ) {
368
+ $redirect_url = get_option( 'wcj_add_to_cart_redirect_url', '' );
369
+ if ( '' === $redirect_url ) {
370
+ $redirect_url = WC()->cart->get_checkout_url();
371
+ }
372
+ return $redirect_url;
373
+ }
374
+ return $url;
375
  }
376
 
377
  /*
378
  * Add item to cart on visit.
379
  *
380
+ * @version 2.9.0
381
+ * @todo (maybe) optionally add product every time page is visited (instead of only once)
382
  */
383
  function add_to_cart_on_visit() {
384
  if ( ! is_admin() && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) && is_product() && ( $product_id = get_the_ID() ) ) {
399
  }
400
  }
401
  // Product not found - add it
402
+ $was_added_to_cart = WC()->cart->add_to_cart( $product_id );
403
  } else {
404
  // No products in cart - add it
405
+ $was_added_to_cart = WC()->cart->add_to_cart( $product_id );
406
+ }
407
+ // Maybe perform add to cart redirect
408
+ if ( false !== $was_added_to_cart && (
409
+ 'yes' === get_option( 'wcj_add_to_cart_redirect_enabled', 'no' ) ||
410
+ 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_add_to_cart_redirect_per_product_enabled', 'no' ) )
411
+ ) ) {
412
+ if ( $redirect_url = $this->maybe_redirect_to_url( false, $product_id ) ) {
413
+ if ( wp_safe_redirect( $redirect_url ) ) {
414
+ exit;
415
+ }
416
+ }
417
  }
418
  }
419
  }
includes/class-wcj-product-by-country.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * Booster for WooCommerce - Module - Product by Country
4
  *
5
- * @version 2.8.0
6
  * @since 2.5.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -16,7 +16,7 @@ class WCJ_Product_By_Country extends WCJ_Module {
16
  /**
17
  * Constructor.
18
  *
19
- * @version 2.8.0
20
  * @since 2.5.0
21
  */
22
  function __construct() {
@@ -29,14 +29,100 @@ class WCJ_Product_By_Country extends WCJ_Module {
29
  parent::__construct();
30
 
31
  if ( $this->is_enabled() ) {
 
32
  add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
33
  add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
 
34
  if ( ! is_admin() || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
35
- add_filter( 'woocommerce_product_is_visible', array( $this, 'product_by_country' ), PHP_INT_MAX, 2 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  }
37
  }
38
  }
39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  /**
41
  * product_by_country.
42
  *
1
  <?php
2
  /**
3
+ * Booster for WooCommerce - Module - Product Visibility by Country
4
  *
5
+ * @version 2.9.0
6
  * @since 2.5.0
7
  * @author Algoritmika Ltd.
8
  */
16
  /**
17
  * Constructor.
18
  *
19
+ * @version 2.9.0
20
  * @since 2.5.0
21
  */
22
  function __construct() {
29
  parent::__construct();
30
 
31
  if ( $this->is_enabled() ) {
32
+ // Product meta box
33
  add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
34
  add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
35
+ // Core
36
  if ( ! is_admin() || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
37
+ if ( 'yes' === get_option( 'wcj_product_by_country_visibility', 'yes' ) ) {
38
+ add_filter( 'woocommerce_product_is_visible', array( $this, 'product_by_country' ), PHP_INT_MAX, 2 );
39
+ }
40
+ if ( 'yes' === get_option( 'wcj_product_by_country_purchasable', 'no' ) ) {
41
+ add_filter( 'woocommerce_is_purchasable', array( $this, 'product_by_country_purchasable' ), PHP_INT_MAX, 2 );
42
+ }
43
+ if ( 'yes' === get_option( 'wcj_product_by_country_query', 'no' ) ) {
44
+ add_action( 'pre_get_posts', array( $this, 'product_by_country_pre_get_posts' ) );
45
+ }
46
+
47
+ }
48
+ // Admin products list
49
+ if ( 'yes' === get_option( 'wcj_product_by_country_add_column_visible_countries', 'no' ) ) {
50
+ add_filter( 'manage_edit-product_columns', array( $this, 'add_product_columns' ), PHP_INT_MAX );
51
+ add_action( 'manage_product_posts_custom_column', array( $this, 'render_product_column' ), PHP_INT_MAX );
52
  }
53
  }
54
  }
55
 
56
+ /**
57
+ * add_product_columns.
58
+ *
59
+ * @version 2.9.0
60
+ * @since 2.9.0
61
+ */
62
+ function add_product_columns( $columns ) {
63
+ $columns[ 'wcj_product_by_country_visible_countries' ] = __( 'Countries', 'woocommerce-jetpack' );
64
+ return $columns;
65
+ }
66
+
67
+ /**
68
+ * render_product_column.
69
+ *
70
+ * @version 2.9.0
71
+ * @since 2.9.0
72
+ */
73
+ function render_product_column( $column ) {
74
+ if ( 'wcj_product_by_country_visible_countries' === $column ) {
75
+ if ( $countries = get_post_meta( get_the_ID(), '_' . 'wcj_product_by_country_visible', true ) ) {
76
+ if ( is_array( $countries ) ) {
77
+ echo implode( ', ', $countries );
78
+ }
79
+ }
80
+ }
81
+ }
82
+
83
+ /**
84
+ * product_by_country_pre_get_posts.
85
+ *
86
+ * @version 2.9.0
87
+ * @since 2.9.0
88
+ */
89
+ function product_by_country_pre_get_posts( $query ) {
90
+ if ( is_admin() ) {
91
+ return;
92
+ }
93
+ remove_action( 'pre_get_posts', array( $this, 'product_by_country_pre_get_posts' ) );
94
+ // Get the country by IP
95
+ $location = WC_Geolocation::geolocate_ip();
96
+ if ( empty( $location['country'] ) ) {
97
+ // Base fallback
98
+ $location = wc_format_country_state_string( apply_filters( 'woocommerce_customer_default_location', get_option( 'woocommerce_default_country' ) ) );
99
+ }
100
+ $country = ( isset( $location['country'] ) ) ? $location['country'] : '';
101
+ // Calculate `post__not_in`
102
+ $post__not_in = array();
103
+ $args = $query->query;
104
+ $args['fields'] = 'ids';
105
+ $loop = new WP_Query( $args );
106
+ foreach ( $loop->posts as $product_id ) {
107
+ $visible_countries = get_post_meta( $product_id, '_' . 'wcj_product_by_country_visible', true );
108
+ if ( is_array( $visible_countries ) && ! in_array( $country, $visible_countries ) ) {
109
+ $post__not_in[] = $product_id;
110
+ }
111
+ }
112
+ $query->set( 'post__not_in', $post__not_in );
113
+ add_action( 'pre_get_posts', array( $this, 'product_by_country_pre_get_posts' ) );
114
+ }
115
+
116
+ /**
117
+ * product_by_country_purchasable.
118
+ *
119
+ * @version 2.9.0
120
+ * @since 2.9.0
121
+ */
122
+ function product_by_country_purchasable( $purchasable, $_product ) {
123
+ return $this->product_by_country( $purchasable, wcj_get_product_id_or_variation_parent_id( $_product ) );
124
+ }
125
+
126
  /**
127
  * product_by_country.
128
  *
includes/class-wcj-product-by-user-role.php CHANGED
@@ -18,6 +18,7 @@ class WCJ_Product_By_User_Role extends WCJ_Module {
18
  *
19
  * @version 2.8.0
20
  * @since 2.5.5
 
21
  */
22
  function __construct() {
23
 
@@ -50,7 +51,8 @@ class WCJ_Product_By_User_Role extends WCJ_Module {
50
  *
51
  * @version 2.7.0
52
  * @since 2.6.0
53
- * @todo add same option to all "Product Visibility" modules (e.g. "Product Visibility by Country")
 
54
  */
55
  function product_by_user_role_pre_get_posts( $query ) {
56
  if ( is_admin() ) {
18
  *
19
  * @version 2.8.0
20
  * @since 2.5.5
21
+ * @todo add "Admin Products List Column" option (same as in "Product Visibility by Country" module)
22
  */
23
  function __construct() {
24
 
51
  *
52
  * @version 2.7.0
53
  * @since 2.6.0
54
+ * @todo (maybe) add global function for this, as similar code is in "Product Visibility by Country" module
55
+ * @todo check if `purchasable` and `pre_get_posts` hooks should be added to other "Product Visibility" modules
56
  */
57
  function product_by_user_role_pre_get_posts( $query ) {
58
  if ( is_admin() ) {
includes/class-wcj-product-by-user.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Product by User
4
  *
5
- * @version 2.8.0
6
  * @since 2.5.2
7
  * @author Algoritmika Ltd.
8
  */
@@ -16,8 +16,9 @@ class WCJ_Product_By_User extends WCJ_Module {
16
  /**
17
  * Constructor.
18
  *
19
- * @version 2.8.0
20
  * @since 2.5.2
 
21
  */
22
  function __construct() {
23
 
@@ -28,6 +29,12 @@ class WCJ_Product_By_User extends WCJ_Module {
28
  $this->extra_desc = __( 'Use <strong>[wcj_product_add_new]</strong> shortcode to add product upload form to frontend.', 'woocommerce-jetpack' );
29
  parent::__construct();
30
 
 
 
 
 
 
 
31
  if ( $this->is_enabled() ) {
32
  if ( 'yes' === get_option( 'wcj_product_by_user_add_to_my_account', 'yes' ) ) {
33
  add_filter( 'woocommerce_account_menu_items', array( $this, 'add_my_products_tab_my_account_page' ) );
@@ -37,6 +44,41 @@ class WCJ_Product_By_User extends WCJ_Module {
37
  }
38
  }
39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  /*
41
  * Change endpoint title.
42
  *
2
  /**
3
  * Booster for WooCommerce - Module - Product by User
4
  *
5
+ * @version 2.9.0
6
  * @since 2.5.2
7
  * @author Algoritmika Ltd.
8
  */
16
  /**
17
  * Constructor.
18
  *
19
+ * @version 2.9.0
20
  * @since 2.5.2
21
+ * @todo run `add_my_products_endpoint` only if module is enabled
22
  */
23
  function __construct() {
24
 
29
  $this->extra_desc = __( 'Use <strong>[wcj_product_add_new]</strong> shortcode to add product upload form to frontend.', 'woocommerce-jetpack' );
30
  parent::__construct();
31
 
32
+ // My Products endpoint
33
+ register_activation_hook( __FILE__, array( $this, 'add_my_products_endpoint_flush_rewrite_rules' ) );
34
+ register_deactivation_hook( __FILE__, array( $this, 'add_my_products_endpoint_flush_rewrite_rules' ) );
35
+ add_filter( 'query_vars', array( $this, 'add_my_products_endpoint_query_var' ), 0 );
36
+ add_action( 'init', array( $this, 'add_my_products_endpoint' ) );
37
+
38
  if ( $this->is_enabled() ) {
39
  if ( 'yes' === get_option( 'wcj_product_by_user_add_to_my_account', 'yes' ) ) {
40
  add_filter( 'woocommerce_account_menu_items', array( $this, 'add_my_products_tab_my_account_page' ) );
44
  }
45
  }
46
 
47
+ /**
48
+ * Flush rewrite rules on plugin activation.
49
+ *
50
+ * @version 2.5.7
51
+ * @since 2.5.7
52
+ */
53
+ function add_my_products_endpoint_flush_rewrite_rules() {
54
+ add_rewrite_endpoint( 'wcj-my-products', EP_ROOT | EP_PAGES );
55
+ flush_rewrite_rules();
56
+ }
57
+
58
+ /**
59
+ * Add new query var.
60
+ *
61
+ * @version 2.5.7
62
+ * @since 2.5.7
63
+ * @param array $vars
64
+ * @return array
65
+ */
66
+ function add_my_products_endpoint_query_var( $vars ) {
67
+ $vars[] = 'wcj-my-products';
68
+ return $vars;
69
+ }
70
+
71
+ /**
72
+ * Register new endpoint to use inside My Account page.
73
+ *
74
+ * @version 2.5.7
75
+ * @since 2.5.7
76
+ * @see https://developer.wordpress.org/reference/functions/add_rewrite_endpoint/
77
+ */
78
+ function add_my_products_endpoint() {
79
+ add_rewrite_endpoint( 'wcj-my-products', EP_ROOT | EP_PAGES );
80
+ }
81
+
82
  /*
83
  * Change endpoint title.
84
  *
includes/class-wcj-product-custom-info.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Product Info
4
  *
5
- * @version 2.8.0
6
  * @since 2.4.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -41,32 +41,71 @@ class WCJ_Product_Custom_info extends WCJ_Module {
41
  }
42
  }
43
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  /**
45
  * add_product_custom_info.
46
  *
47
- * @version 2.4.6
48
  */
49
  function add_product_custom_info() {
50
- $current_filter = current_filter();
 
51
  $current_filter_priority = wcj_current_filter_priority();
52
  $single_or_archive_array = array( 'single', 'archive' );
53
  foreach ( $single_or_archive_array as $single_or_archive ) {
54
  $default_hook = ( 'single' === $single_or_archive ) ? 'woocommerce_after_single_product_summary' : 'woocommerce_after_shop_loop_item_title';
55
  for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_product_custom_info_total_number_' . $single_or_archive, 1 ) ); $i++ ) {
56
- if (
57
- '' != get_option( 'wcj_product_custom_info_content_' . $single_or_archive . '_' . $i ) &&
58
- $current_filter === get_option( 'wcj_product_custom_info_hook_' . $single_or_archive . '_' . $i, $default_hook ) &&
59
- $current_filter_priority == get_option( 'wcj_product_custom_info_priority_' . $single_or_archive . '_' . $i, 10 )
60
- ) {
61
- $products_to_exclude = get_option( 'wcj_product_custom_info_products_to_exclude_' . $single_or_archive . '_' . $i );
62
- $products_to_include = get_option( 'wcj_product_custom_info_products_to_include_' . $single_or_archive . '_' . $i );
63
- $product_id = get_the_ID();
64
- if (
65
- ( empty( $products_to_exclude ) || ! in_array( $product_id, $products_to_exclude ) ) &&
66
- ( empty( $products_to_include ) || in_array( $product_id, $products_to_include ) )
67
- ) {
68
- echo do_shortcode( get_option( 'wcj_product_custom_info_content_' . $single_or_archive . '_' . $i ) );
69
- }
70
  }
71
  }
72
  }
2
  /**
3
  * Booster for WooCommerce - Module - Product Info
4
  *
5
+ * @version 2.9.0
6
  * @since 2.4.0
7
  * @author Algoritmika Ltd.
8
  */
41
  }
42
  }
43
 
44
+ /**
45
+ * is_visible.
46
+ *
47
+ * @version 2.9.0
48
+ * @since 2.9.0
49
+ */
50
+ function is_visible( $product_id, $current_filter, $current_filter_priority, $default_hook, $single_or_archive, $i ) {
51
+ return (
52
+ $this->check_content_and_filter( $current_filter, $current_filter_priority, $default_hook, $single_or_archive, $i ) &&
53
+ $this->check_included_and_excluded( $product_id, $single_or_archive, $i )
54
+ );
55
+ }
56
+
57
+ /**
58
+ * check_content_and_filter.
59
+ *
60
+ * @version 2.9.0
61
+ * @since 2.9.0
62
+ */
63
+ function check_content_and_filter( $current_filter, $current_filter_priority, $default_hook, $single_or_archive, $i ) {
64
+ return (
65
+ '' != get_option( 'wcj_product_custom_info_content_' . $single_or_archive . '_' . $i ) &&
66
+ $current_filter === get_option( 'wcj_product_custom_info_hook_' . $single_or_archive . '_' . $i, $default_hook ) &&
67
+ $current_filter_priority == get_option( 'wcj_product_custom_info_priority_' . $single_or_archive . '_' . $i, 10 )
68
+ );
69
+ }
70
+
71
+ /**
72
+ * check_included_and_excluded.
73
+ *
74
+ * @version 2.9.0
75
+ * @since 2.9.0
76
+ */
77
+ function check_included_and_excluded( $product_id, $single_or_archive, $i ) {
78
+ $product_cats_to_include = get_option( 'wcj_product_custom_info_product_cats_to_include_' . $single_or_archive . '_' . $i );
79
+ $product_cats_to_exclude = get_option( 'wcj_product_custom_info_product_cats_to_exclude_' . $single_or_archive . '_' . $i );
80
+ $product_tags_to_include = get_option( 'wcj_product_custom_info_product_tags_to_include_' . $single_or_archive . '_' . $i );
81
+ $product_tags_to_exclude = get_option( 'wcj_product_custom_info_product_tags_to_exclude_' . $single_or_archive . '_' . $i );
82
+ $products_to_exclude = get_option( 'wcj_product_custom_info_products_to_exclude_' . $single_or_archive . '_' . $i );
83
+ $products_to_include = get_option( 'wcj_product_custom_info_products_to_include_' . $single_or_archive . '_' . $i );
84
+ return (
85
+ ( empty( $product_cats_to_exclude ) || ! wcj_is_product_term( $product_id, $product_cats_to_exclude, 'product_cat' ) ) &&
86
+ ( empty( $product_cats_to_include ) || wcj_is_product_term( $product_id, $product_cats_to_include, 'product_cat' ) ) &&
87
+ ( empty( $product_tags_to_exclude ) || ! wcj_is_product_term( $product_id, $product_tags_to_exclude, 'product_tag' ) ) &&
88
+ ( empty( $product_tags_to_include ) || wcj_is_product_term( $product_id, $product_tags_to_include, 'product_tag' ) ) &&
89
+ ( empty( $products_to_exclude ) || ! in_array( $product_id, $products_to_exclude ) ) &&
90
+ ( empty( $products_to_include ) || in_array( $product_id, $products_to_include ) )
91
+ );
92
+ }
93
+
94
  /**
95
  * add_product_custom_info.
96
  *
97
+ * @version 2.9.0
98
  */
99
  function add_product_custom_info() {
100
+ $product_id = get_the_ID();
101
+ $current_filter = current_filter();
102
  $current_filter_priority = wcj_current_filter_priority();
103
  $single_or_archive_array = array( 'single', 'archive' );
104
  foreach ( $single_or_archive_array as $single_or_archive ) {
105
  $default_hook = ( 'single' === $single_or_archive ) ? 'woocommerce_after_single_product_summary' : 'woocommerce_after_shop_loop_item_title';
106
  for ( $i = 1; $i <= apply_filters( 'booster_get_option', 1, get_option( 'wcj_product_custom_info_total_number_' . $single_or_archive, 1 ) ); $i++ ) {
107
+ if ( $this->is_visible( $product_id, $current_filter, $current_filter_priority, $default_hook, $single_or_archive, $i ) ) {
108
+ echo do_shortcode( get_option( 'wcj_product_custom_info_content_' . $single_or_archive . '_' . $i ) );
 
 
 
 
 
 
 
 
 
 
 
 
109
  }
110
  }
111
  }
includes/class-wcj-product-images.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Product Images
4
  *
5
- * @version 2.8.0
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -93,15 +93,15 @@ class WCJ_Product_Images extends WCJ_Module {
93
  /**
94
  * customize_archive_product_image_html.
95
  *
96
- * @version 2.5.2
97
  * @since 2.2.6
98
  */
99
  function customize_archive_product_image_html() {
100
  $post_id = get_the_ID();
101
  if ( $post_id > 0 && '' != get_post_meta( $post_id, '_' . 'wcj_product_images_meta_custom_on_archives', true ) ) {
102
- echo get_post_meta( $post_id, '_' . 'wcj_product_images_meta_custom_on_archives', true );
103
  } elseif ( '' != get_option( 'wcj_product_images_custom_on_archives', '' ) ) {
104
- echo get_option( 'wcj_product_images_custom_on_archives' );
105
  }
106
  }
107
 
@@ -130,13 +130,13 @@ class WCJ_Product_Images extends WCJ_Module {
130
  /**
131
  * customize_single_product_image_html.
132
  *
133
- * @version 2.8.0
134
  */
135
  function customize_single_product_image_html( $image_link, $post_id ) {
136
  if ( '' != ( $html_single = get_post_meta( $post_id, '_' . 'wcj_product_images_meta_custom_on_single', true ) ) ) {
137
- return $html_single;
138
  } elseif ( '' != ( $html_global = get_option( 'wcj_product_images_custom_on_single', '' ) ) ) {
139
- return $html_global;
140
  } elseif ( 'yes' === get_option( 'wcj_product_images_hide_on_single', 'no' ) ) {
141
  return '';
142
  } elseif ( 'yes' === get_post_meta( $post_id, '_' . 'wcj_product_images_hide_image_on_single', true ) ) {
@@ -148,12 +148,12 @@ class WCJ_Product_Images extends WCJ_Module {
148
  /**
149
  * customize_single_product_image_thumbnail_html.
150
  *
151
- * @version 2.5.2
152
  */
153
  function customize_single_product_image_thumbnail_html( $image_link ) {
154
  $post_id = get_the_ID();
155
  if ( '' != get_option( 'wcj_product_images_thumbnails_custom_on_single', '' ) ) {
156
- return get_option( 'wcj_product_images_thumbnails_custom_on_single' );
157
  } elseif ( 'yes' === get_option( 'wcj_product_images_thumbnails_hide_on_single', 'no' ) ) {
158
  return '';
159
  } elseif ( $post_id > 0 && 'yes' === get_post_meta( $post_id, '_' . 'wcj_product_images_hide_thumb_on_single', true ) ) {
2
  /**
3
  * Booster for WooCommerce - Module - Product Images
4
  *
5
+ * @version 2.9.0
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  */
93
  /**
94
  * customize_archive_product_image_html.
95
  *
96
+ * @version 2.9.0
97
  * @since 2.2.6
98
  */
99
  function customize_archive_product_image_html() {
100
  $post_id = get_the_ID();
101
  if ( $post_id > 0 && '' != get_post_meta( $post_id, '_' . 'wcj_product_images_meta_custom_on_archives', true ) ) {
102
+ echo do_shortcode( get_post_meta( $post_id, '_' . 'wcj_product_images_meta_custom_on_archives', true ) );
103
  } elseif ( '' != get_option( 'wcj_product_images_custom_on_archives', '' ) ) {
104
+ echo do_shortcode( get_option( 'wcj_product_images_custom_on_archives' ) );
105
  }
106
  }
107
 
130
  /**
131
  * customize_single_product_image_html.
132
  *
133
+ * @version 2.9.0
134
  */
135
  function customize_single_product_image_html( $image_link, $post_id ) {
136
  if ( '' != ( $html_single = get_post_meta( $post_id, '_' . 'wcj_product_images_meta_custom_on_single', true ) ) ) {
137
+ return do_shortcode( $html_single );
138
  } elseif ( '' != ( $html_global = get_option( 'wcj_product_images_custom_on_single', '' ) ) ) {
139
+ return do_shortcode( $html_global );
140
  } elseif ( 'yes' === get_option( 'wcj_product_images_hide_on_single', 'no' ) ) {
141
  return '';
142
  } elseif ( 'yes' === get_post_meta( $post_id, '_' . 'wcj_product_images_hide_image_on_single', true ) ) {
148
  /**
149
  * customize_single_product_image_thumbnail_html.
150
  *
151
+ * @version 2.9.0
152
  */
153
  function customize_single_product_image_thumbnail_html( $image_link ) {
154
  $post_id = get_the_ID();
155
  if ( '' != get_option( 'wcj_product_images_thumbnails_custom_on_single', '' ) ) {
156
+ return do_shortcode( get_option( 'wcj_product_images_thumbnails_custom_on_single' ) );
157
  } elseif ( 'yes' === get_option( 'wcj_product_images_thumbnails_hide_on_single', 'no' ) ) {
158
  return '';
159
  } elseif ( $post_id > 0 && 'yes' === get_post_meta( $post_id, '_' . 'wcj_product_images_hide_thumb_on_single', true ) ) {
includes/class-wcj-product-input-fields.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Product Input Fields
4
  *
5
- * @version 2.8.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -88,16 +88,20 @@ class WCJ_Product_Input_Fields extends WCJ_Module {
88
 
89
  /**
90
  * register_script.
 
 
91
  */
92
  function register_scripts() {
93
- wp_register_script( 'wcj-product-input-fields', WCJ()->plugin_url() . '/includes/js/product-input-fields.js', array( 'jquery' ), false, true );
94
  }
95
 
96
  /**
97
  * enqueue_checkout_script.
98
  */
99
  function enqueue_scripts() {
100
- if( ! is_product() ) return;
 
 
101
  wp_enqueue_script( 'wcj-product-input-fields' );
102
  }
103
 
2
  /**
3
  * Booster for WooCommerce - Module - Product Input Fields
4
  *
5
+ * @version 2.9.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
88
 
89
  /**
90
  * register_script.
91
+ *
92
+ * @version 2.9.0
93
  */
94
  function register_scripts() {
95
+ wp_register_script( 'wcj-product-input-fields', wcj_plugin_url() . '/includes/js/wcj-product-input-fields.js', array( 'jquery' ), WCJ()->version, true );
96
  }
97
 
98
  /**
99
  * enqueue_checkout_script.
100
  */
101
  function enqueue_scripts() {
102
+ if( ! is_product() ) {
103
+ return;
104
+ }
105
  wp_enqueue_script( 'wcj-product-input-fields' );
106
  }
107
 
includes/class-wcj-product-listings.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Product Listings
4
  *
5
- * @version 2.8.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -15,7 +15,7 @@ class WCJ_Product_Listings extends WCJ_Module {
15
  /**
16
  * Constructor.
17
  *
18
- * @version 2.8.0
19
  */
20
  function __construct() {
21
  $this->id = 'product_listings';
@@ -37,6 +37,96 @@ class WCJ_Product_Listings extends WCJ_Module {
37
 
38
  // Tax Incl./Excl. by product/category
39
  add_filter( 'option_woocommerce_tax_display_shop', array( $this, 'tax_display' ), PHP_INT_MAX );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  }
41
  }
42
 
2
  /**
3
  * Booster for WooCommerce - Module - Product Listings
4
  *
5
+ * @version 2.9.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
15
  /**
16
  * Constructor.
17
  *
18
+ * @version 2.9.0
19
  */
20
  function __construct() {
21
  $this->id = 'product_listings';
37
 
38
  // Tax Incl./Excl. by product/category
39
  add_filter( 'option_woocommerce_tax_display_shop', array( $this, 'tax_display' ), PHP_INT_MAX );
40
+
41
+ // Admin list - custom columns
42
+ if ( 'yes' === get_option( 'wcj_products_admin_list_custom_columns_enabled', 'no' ) ) {
43
+ add_filter( 'manage_edit-product_columns', array( $this, 'add_product_columns' ), PHP_INT_MAX );
44
+ add_action( 'manage_product_posts_custom_column', array( $this, 'render_product_column' ), PHP_INT_MAX );
45
+ }
46
+
47
+ // Admin list - columns order
48
+ if ( 'yes' === get_option( 'wcj_products_admin_list_columns_order_enabled', 'no' ) ) {
49
+ add_filter( 'manage_edit-product_columns', array( $this, 'rearange_product_columns' ), PHP_INT_MAX );
50
+ }
51
+ }
52
+ }
53
+
54
+ /**
55
+ * rearange_product_columns.
56
+ *
57
+ * @version 2.9.0
58
+ * @since 2.9.0
59
+ */
60
+ function rearange_product_columns( $columns ) {
61
+ $reordered_columns = get_option( 'wcj_products_admin_list_columns_order', $this->get_products_default_columns_in_order() );
62
+ $reordered_columns = explode( PHP_EOL, $reordered_columns );
63
+ $reordered_columns_result = array();
64
+ if ( ! empty( $reordered_columns ) ) {
65
+ foreach ( $reordered_columns as $column_id ) {
66
+ $column_id = str_replace( "\n", '', $column_id );
67
+ $column_id = str_replace( "\r", '', $column_id );
68
+ if ( '' != $column_id && isset( $columns[ $column_id ] ) ) {
69
+ $reordered_columns_result[ $column_id ] = $columns[ $column_id ];
70
+ unset( $columns[ $column_id ] );
71
+ }
72
+ }
73
+ }
74
+ return array_merge( $reordered_columns_result, $columns );
75
+ }
76
+
77
+ /**
78
+ * get_products_default_columns_in_order.
79
+ *
80
+ * @version 2.9.0
81
+ * @since 2.9.0
82
+ */
83
+ function get_products_default_columns_in_order() {
84
+ $columns = array(
85
+ 'cb',
86
+ 'thumb',
87
+ 'name',
88
+ 'sku',
89
+ 'is_in_stock',
90
+ 'price',
91
+ 'product_cat',
92
+ 'product_tag',
93
+ 'featured',
94
+ 'product_type',
95
+ 'date',
96
+ );
97
+ return implode( PHP_EOL, $columns );
98
+ }
99
+
100
+ /**
101
+ * add_product_columns.
102
+ *
103
+ * @version 2.9.0
104
+ * @since 2.9.0
105
+ */
106
+ function add_product_columns( $columns ) {
107
+ $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_products_admin_list_custom_columns_total_number', 1 ) );
108
+ for ( $i = 1; $i <= $total_number; $i++ ) {
109
+ if ( 'yes' === get_option( 'wcj_products_admin_list_custom_columns_enabled_' . $i, 'no' ) ) {
110
+ $columns[ 'wcj_products_custom_column_' . $i ] = get_option( 'wcj_products_admin_list_custom_columns_label_' . $i, '' );
111
+ }
112
+ }
113
+ return $columns;
114
+ }
115
+
116
+ /**
117
+ * render_product_column.
118
+ *
119
+ * @version 2.9.0
120
+ * @since 2.9.0
121
+ */
122
+ function render_product_column( $column ) {
123
+ $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_products_admin_list_custom_columns_total_number', 1 ) );
124
+ for ( $i = 1; $i <= $total_number; $i++ ) {
125
+ if ( 'yes' === get_option( 'wcj_products_admin_list_custom_columns_enabled_' . $i, 'no' ) ) {
126
+ if ( 'wcj_products_custom_column_' . $i === $column ) {
127
+ echo do_shortcode( get_option( 'wcj_products_admin_list_custom_columns_value_' . $i, '' ) );
128
+ }
129
+ }
130
  }
131
  }
132
 
includes/class-wcj-product-open-pricing.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Product Open Pricing
4
  *
5
- * @version 2.8.2
6
  * @since 2.4.8
7
  * @author Algoritmika Ltd.
8
  */
@@ -16,7 +16,7 @@ class WCJ_Product_Open_Pricing extends WCJ_Module {
16
  /**
17
  * Constructor.
18
  *
19
- * @version 2.8.0
20
  * @since 2.4.8
21
  */
22
  function __construct() {
@@ -34,7 +34,9 @@ class WCJ_Product_Open_Pricing extends WCJ_Module {
34
  add_filter( 'woocommerce_product_variation_get_price',array( $this, 'get_open_price' ), PHP_INT_MAX, 2 );
35
  add_filter( 'woocommerce_get_price_html', array( $this, 'hide_original_price' ), PHP_INT_MAX, 2 );
36
  add_filter( 'woocommerce_get_variation_price_html', array( $this, 'hide_original_price' ), PHP_INT_MAX, 2 );
37
- add_filter( 'woocommerce_is_sold_individually', array( $this, 'hide_quantity_input_field' ), PHP_INT_MAX, 2 );
 
 
38
  add_filter( 'woocommerce_is_purchasable', array( $this, 'is_purchasable' ), PHP_INT_MAX, 2 );
39
  add_filter( 'woocommerce_product_supports', array( $this, 'disable_add_to_cart_ajax' ), PHP_INT_MAX, 3 );
40
  add_filter( 'woocommerce_product_add_to_cart_url', array( $this, 'add_to_cart_url' ), PHP_INT_MAX, 2 );
2
  /**
3
  * Booster for WooCommerce - Module - Product Open Pricing
4
  *
5
+ * @version 2.9.0
6
  * @since 2.4.8
7
  * @author Algoritmika Ltd.
8
  */
16
  /**
17
  * Constructor.
18
  *
19
+ * @version 2.9.0
20
  * @since 2.4.8
21
  */
22
  function __construct() {
34
  add_filter( 'woocommerce_product_variation_get_price',array( $this, 'get_open_price' ), PHP_INT_MAX, 2 );
35
  add_filter( 'woocommerce_get_price_html', array( $this, 'hide_original_price' ), PHP_INT_MAX, 2 );
36
  add_filter( 'woocommerce_get_variation_price_html', array( $this, 'hide_original_price' ), PHP_INT_MAX, 2 );
37
+ if ( 'yes' === get_option( 'wcj_product_open_price_disable_quantity', 'yes' ) ) {
38
+ add_filter( 'woocommerce_is_sold_individually', array( $this, 'hide_quantity_input_field' ), PHP_INT_MAX, 2 );
39
+ }
40
  add_filter( 'woocommerce_is_purchasable', array( $this, 'is_purchasable' ), PHP_INT_MAX, 2 );
41
  add_filter( 'woocommerce_product_supports', array( $this, 'disable_add_to_cart_ajax' ), PHP_INT_MAX, 3 );
42
  add_filter( 'woocommerce_product_add_to_cart_url', array( $this, 'add_to_cart_url' ), PHP_INT_MAX, 2 );
includes/class-wcj-products-per-page.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Products per Page
4
  *
5
- * @version 2.8.0
6
  * @since 2.6.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -20,6 +20,7 @@ class WCJ_Products_Per_Page extends WCJ_Module {
20
  * @since 2.6.0
21
  * @todo position priority for every hook
22
  * @todo post or get
 
23
  */
24
  function __construct() {
25
 
@@ -41,15 +42,15 @@ class WCJ_Products_Per_Page extends WCJ_Module {
41
  /**
42
  * add_products_per_page_form.
43
  *
44
- * @version 2.6.0
45
  * @since 2.5.3
46
  */
47
  function add_products_per_page_form() {
48
 
49
  global $wp_query;
50
 
51
- if ( isset( $_POST['wcj_products_per_page'] ) ) {
52
- $products_per_page = $_POST['wcj_products_per_page'];
53
  } elseif ( isset( $_COOKIE['wcj_products_per_page'] ) ) {
54
  $products_per_page = $_COOKIE['wcj_products_per_page'];
55
  } else {
@@ -65,14 +66,7 @@ class WCJ_Products_Per_Page extends WCJ_Module {
65
  $products_to = ( $paged - 1 ) * $products_per_page + $wp_query->post_count;
66
  $products_total = $wp_query->found_posts;
67
 
68
- $html = '';
69
- $html .= '<div class="clearfix"></div>';
70
- $html .= '<div>';
71
- $html .= '<form action="' . remove_query_arg( 'paged' ) . '" method="POST">';
72
- $the_text = get_option( 'wcj_products_per_page_text',
73
- __( 'Products <strong>%from% - %to%</strong> from <strong>%total%</strong>. Products on page %select_form%', 'woocommerce-jetpack' ) );
74
  $select_form = '<select name="wcj_products_per_page" id="wcj_products_per_page" class="sortby rounded_corners_class" onchange="this.form.submit()">';
75
- $html .= str_replace( array( '%from%', '%to%', '%total%', '%select_form%' ), array( $products_from, $products_to, $products_total, $select_form ), $the_text );
76
  $products_per_page_select_options = apply_filters( 'booster_get_option',
77
  '10|10' . PHP_EOL . '25|25' . PHP_EOL . '50|50' . PHP_EOL . '100|100' . PHP_EOL . 'All|-1',
78
  get_option( 'wcj_products_per_page_select_options', '10|10' . PHP_EOL . '25|25' . PHP_EOL . '50|50' . PHP_EOL . '100|100' . PHP_EOL . 'All|-1' ) );
@@ -86,12 +80,19 @@ class WCJ_Products_Per_Page extends WCJ_Module {
86
  $sort_id = str_replace( "\r", '', $sort_id );
87
  $sort_name = str_replace( "\n", '', $sort_name );
88
  $sort_name = str_replace( "\r", '', $sort_name );
89
- $html .= '<option value="' . $sort_id . '" ' . selected( $products_per_page, $sort_id, false ) . ' >' . $sort_name . '</option>';
90
  }
91
  }
92
- $html .= '</select>';
 
 
 
 
 
 
 
93
  $html .= '</form>';
94
- $html .= '</div>';
95
 
96
  echo $html;
97
  }
@@ -99,19 +100,19 @@ class WCJ_Products_Per_Page extends WCJ_Module {
99
  /**
100
  * set_products_per_page_number.
101
  *
102
- * @version 2.6.0
103
  * @since 2.5.3
104
  */
105
- function set_products_per_page_number( $the_number ) {
106
- if ( isset( $_POST['wcj_products_per_page'] ) ) {
107
- $the_number = $_POST['wcj_products_per_page'];
108
- setcookie( 'wcj_products_per_page', $the_number, ( time() + 1209600 ), '/', $_SERVER['SERVER_NAME'], false );
109
  } elseif ( isset( $_COOKIE['wcj_products_per_page'] ) ) {
110
- $the_number = $_COOKIE['wcj_products_per_page'];
111
  } else {
112
- $the_number = get_option( 'wcj_products_per_page_default', 10 );
113
  }
114
- return $the_number;
115
  }
116
 
117
  }
2
  /**
3
  * Booster for WooCommerce - Module - Products per Page
4
  *
5
+ * @version 2.9.0
6
  * @since 2.6.0
7
  * @author Algoritmika Ltd.
8
  */
20
  * @since 2.6.0
21
  * @todo position priority for every hook
22
  * @todo post or get
23
+ * @todo cookie - optional (or at least add description in admin settings)
24
  */
25
  function __construct() {
26
 
42
  /**
43
  * add_products_per_page_form.
44
  *
45
+ * @version 2.9.0
46
  * @since 2.5.3
47
  */
48
  function add_products_per_page_form() {
49
 
50
  global $wp_query;
51
 
52
+ if ( isset( $_REQUEST['wcj_products_per_page'] ) ) {
53
+ $products_per_page = $_REQUEST['wcj_products_per_page'];
54
  } elseif ( isset( $_COOKIE['wcj_products_per_page'] ) ) {
55
  $products_per_page = $_COOKIE['wcj_products_per_page'];
56
  } else {
66
  $products_to = ( $paged - 1 ) * $products_per_page + $wp_query->post_count;
67
  $products_total = $wp_query->found_posts;
68
 
 
 
 
 
 
 
69
  $select_form = '<select name="wcj_products_per_page" id="wcj_products_per_page" class="sortby rounded_corners_class" onchange="this.form.submit()">';
 
70
  $products_per_page_select_options = apply_filters( 'booster_get_option',
71
  '10|10' . PHP_EOL . '25|25' . PHP_EOL . '50|50' . PHP_EOL . '100|100' . PHP_EOL . 'All|-1',
72
  get_option( 'wcj_products_per_page_select_options', '10|10' . PHP_EOL . '25|25' . PHP_EOL . '50|50' . PHP_EOL . '100|100' . PHP_EOL . 'All|-1' ) );
80
  $sort_id = str_replace( "\r", '', $sort_id );
81
  $sort_name = str_replace( "\n", '', $sort_name );
82
  $sort_name = str_replace( "\r", '', $sort_name );
83
+ $select_form .= '<option value="' . $sort_id . '" ' . selected( $products_per_page, $sort_id, false ) . ' >' . $sort_name . '</option>';
84
  }
85
  }
86
+ $select_form .= '</select>';
87
+
88
+ $html = '';
89
+ $html .= get_option( 'wcj_products_per_page_text_before', '<div class="clearfix"></div><div>' );
90
+ $html .= '<form action="' . remove_query_arg( 'paged' ) . '" method="POST">';
91
+ $the_text = get_option( 'wcj_products_per_page_text',
92
+ __( 'Products <strong>%from% - %to%</strong> from <strong>%total%</strong>. Products on page %select_form%', 'woocommerce-jetpack' ) );
93
+ $html .= str_replace( array( '%from%', '%to%', '%total%', '%select_form%' ), array( $products_from, $products_to, $products_total, $select_form ), $the_text );
94
  $html .= '</form>';
95
+ $html .= get_option( 'wcj_products_per_page_text_after', '</div>' );
96
 
97
  echo $html;
98
  }
100
  /**
101
  * set_products_per_page_number.
102
  *
103
+ * @version 2.9.0
104
  * @since 2.5.3
105
  */
106
+ function set_products_per_page_number( $products_per_page ) {
107
+ if ( isset( $_REQUEST['wcj_products_per_page'] ) ) {
108
+ $products_per_page = $_REQUEST['wcj_products_per_page'];
109
+ setcookie( 'wcj_products_per_page', $products_per_page, ( time() + 1209600 ), '/', $_SERVER['SERVER_NAME'], false );
110
  } elseif ( isset( $_COOKIE['wcj_products_per_page'] ) ) {
111
+ $products_per_page = $_COOKIE['wcj_products_per_page'];
112
  } else {
113
+ $products_per_page = get_option( 'wcj_products_per_page_default', 10 );
114
  }
115
+ return $products_per_page;
116
  }
117
 
118
  }
includes/class-wcj-purchase-data.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * Booster for WooCommerce - Module - Product Cost Price
4
  *
5
- * @version 2.8.0
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -16,25 +16,126 @@ class WCJ_Purchase_Data extends WCJ_Module {
16
  /**
17
  * Constructor.
18
  *
19
- * @version 2.8.0
 
 
 
20
  */
21
  function __construct() {
22
 
23
  $this->id = 'purchase_data';
24
- $this->short_desc = __( 'Product Cost Price', 'woocommerce-jetpack' );
25
  $this->desc = __( 'Save WooCommerce product purchase costs data for admin reports.', 'woocommerce-jetpack' );
26
- $this->link_slug = 'woocommerce-product-cost-price';
27
  parent::__construct();
28
 
 
 
 
 
 
 
 
29
  if ( $this->is_enabled() ) {
30
 
 
31
  add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
32
  add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
33
 
34
- if ( 'yes' === get_option( 'wcj_purchase_data_custom_columns_profit', 'yes' ) || 'yes' === get_option( 'wcj_purchase_data_custom_columns_purchase_cost', 'no' ) ) {
 
 
 
 
35
  add_filter( 'manage_edit-shop_order_columns', array( $this, 'add_order_columns' ), PHP_INT_MAX - 2 );
36
  add_action( 'manage_shop_order_posts_custom_column', array( $this, 'render_order_columns' ), PHP_INT_MAX );
37
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  }
39
  }
40
 
1
  <?php
2
  /**
3
+ * Booster for WooCommerce - Module - Cost of Goods (formerly Product Cost Price)
4
  *
5
+ * @version 2.9.0
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  */
16
  /**
17
  * Constructor.
18
  *
19
+ * @version 2.9.0
20
+ * @todo (maybe) pre-calculate profit for orders
21
+ * @todo (maybe) "Apply costs to orders that do not have costs set"
22
+ * @todo (maybe) "Apply costs to all orders, overriding previous costs"
23
  */
24
  function __construct() {
25
 
26
  $this->id = 'purchase_data';
27
+ $this->short_desc = __( 'Cost of Goods', 'woocommerce-jetpack' );
28
  $this->desc = __( 'Save WooCommerce product purchase costs data for admin reports.', 'woocommerce-jetpack' );
29
+ $this->link_slug = 'woocommerce-cost-of-goods';
30
  parent::__construct();
31
 
32
+ $this->add_tools( array(
33
+ 'import_from_wc_cog' => array(
34
+ 'title' => __( '"WooCommerce Cost of Goods" Data Import', 'woocommerce-jetpack' ),
35
+ 'desc' => __( 'Import products costs from "WooCommerce Cost of Goods".', 'woocommerce-jetpack' ),
36
+ ),
37
+ ) );
38
+
39
  if ( $this->is_enabled() ) {
40
 
41
+ // Products meta boxes
42
  add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
43
  add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
44
 
45
+ // Orders columns
46
+ if (
47
+ 'yes' === get_option( 'wcj_purchase_data_custom_columns_profit', 'yes' ) ||
48
+ 'yes' === get_option( 'wcj_purchase_data_custom_columns_purchase_cost', 'no' )
49
+ ) {
50
  add_filter( 'manage_edit-shop_order_columns', array( $this, 'add_order_columns' ), PHP_INT_MAX - 2 );
51
  add_action( 'manage_shop_order_posts_custom_column', array( $this, 'render_order_columns' ), PHP_INT_MAX );
52
  }
53
+
54
+ // Products columns
55
+ if (
56
+ 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_purchase_data_custom_products_columns_purchase_cost', 'no' ) ) ||
57
+ 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_purchase_data_custom_products_columns_profit', 'no' ) )
58
+ ) {
59
+ add_filter( 'manage_edit-product_columns', array( $this, 'add_product_columns' ), PHP_INT_MAX );
60
+ add_action( 'manage_product_posts_custom_column', array( $this, 'render_product_columns' ), PHP_INT_MAX );
61
+ }
62
+ }
63
+ }
64
+
65
+ /**
66
+ * create_import_from_wc_cog_tool.
67
+ *
68
+ * @version 2.9.0
69
+ * @since 2.9.0
70
+ */
71
+ function create_import_from_wc_cog_tool() {
72
+ // Action and Products list
73
+ $perform_import = ( isset( $_POST['wcj_import_from_wc_cog'] ) );
74
+ $table_data = array();
75
+ $table_data[] = array(
76
+ __( 'Product ID', 'woocommerce-jetpack' ),
77
+ __( 'Product Title', 'woocommerce-jetpack' ),
78
+ __( 'WooCommerce Cost of Goods (source)', 'woocommerce-jetpack' ),
79
+ __( 'Booster: Product cost (destination)', 'woocommerce-jetpack' ),
80
+ );
81
+ foreach ( wcj_get_products( array(), 'any', 512, true ) as $product_id => $product_title ) {
82
+ $wc_cog_cost = get_post_meta( $product_id, '_wc_cog_cost', true );
83
+ if ( $perform_import ) {
84
+ update_post_meta( $product_id, '_wcj_purchase_price', $wc_cog_cost );
85
+ }
86
+ $wcj_purchase_price = get_post_meta( $product_id, '_wcj_purchase_price', true );
87
+ $table_data[] = array( $product_id, $product_title, $wc_cog_cost, $wcj_purchase_price );
88
+ }
89
+ // Button form
90
+ $button_form = '';
91
+ $button_form .= '<form method="post" action="">';
92
+ $button_form .= '<input type="submit" name="wcj_import_from_wc_cog" class="button-primary" value="' . __( 'Import', 'woocommerce-jetpack' ) . '"' .
93
+ ' onclick="return confirm(\'' . __( 'Are you sure?', 'woocommerce-jetpack' ) . '\')">';
94
+ $button_form .= '</form>';
95
+ // Output
96
+ $html = '';
97
+ $html .= '<div class="wrap">';
98
+ $html .= '<p>' . $this->get_tool_header_html( 'import_from_wc_cog' ) . '</p>';
99
+ $html .= '<p>' . $button_form . '</p>';
100
+ $html .= '<p>' . wcj_get_table_html( $table_data, array( 'table_heading_type' => 'horizontal', 'table_class' => 'widefat striped' ) ) . '</p>';
101
+ $html .= '</div>';
102
+ echo $html;
103
+ }
104
+
105
+ /**
106
+ * add_product_columns.
107
+ *
108
+ * @version 2.9.0
109
+ * @since 2.9.0
110
+ * @todo (maybe) output columns immediately after standard "Price"
111
+ */
112
+ function add_product_columns( $columns ) {
113
+ if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_purchase_data_custom_products_columns_purchase_cost', 'no' ) ) ) {
114
+ $columns['purchase_cost'] = __( 'Cost', 'woocommerce-jetpack' );
115
+ }
116
+ if ( 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_purchase_data_custom_products_columns_profit', 'no' ) ) ) {
117
+ $columns['profit'] = __( 'Profit', 'woocommerce-jetpack' );
118
+ }
119
+ return $columns;
120
+ }
121
+
122
+ /**
123
+ * render_product_columns.
124
+ *
125
+ * @version 2.9.0
126
+ * @since 2.9.0
127
+ * @todo variable products when `if ( 'no' === get_option( 'wcj_purchase_data_variable_as_simple_enabled', 'no' ) )`
128
+ */
129
+ function render_product_columns( $column ) {
130
+ if ( 'profit' === $column || 'purchase_cost' === $column ) {
131
+ $product_id = get_the_ID();
132
+ $purchase_cost = wc_get_product_purchase_price( $product_id );
133
+ if ( 'purchase_cost' === $column ) {
134
+ echo wc_price( $purchase_cost );
135
+ } elseif ( 'profit' === $column ) {
136
+ $_product = wc_get_product( $product_id );
137
+ echo wc_price( $_product->get_price() - $purchase_cost );
138
+ }
139
  }
140
  }
141
 
includes/class-wcj-reports.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - Reports
4
  *
5
- * @version 2.8.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -24,7 +24,7 @@ class WCJ_Reports extends WCJ_Module {
24
  /**
25
  * Constructor.
26
  *
27
- * @version 2.8.0
28
  */
29
  function __construct() {
30
 
@@ -44,6 +44,7 @@ class WCJ_Reports extends WCJ_Module {
44
 
45
  include_once( 'reports/wcj-class-reports-customers.php' );
46
  include_once( 'reports/wcj-class-reports-stock.php' );
 
47
  include_once( 'reports/wcj-class-reports-sales.php' );
48
  include_once( 'reports/wcj-class-reports-monthly-sales.php' );
49
 
@@ -101,7 +102,7 @@ class WCJ_Reports extends WCJ_Module {
101
  /**
102
  * add_custom_order_reports_ranges_to_admin_bar.
103
  *
104
- * @version 2.8.0
105
  */
106
  function add_custom_order_reports_ranges_to_admin_bar( $wp_admin_bar ) {
107
  $is_reports = ( isset( $_GET['page'] ) && 'wc-reports' === $_GET['page'] );
@@ -118,65 +119,8 @@ class WCJ_Reports extends WCJ_Module {
118
  );
119
  $wp_admin_bar->add_node( $args );
120
 
121
- $custom_ranges = array(
122
- 'last_14_days' => array(
123
- 'title' => __( 'Last 14 Days', 'woocommerce-jetpack' ),
124
- 'start_date' => date( 'Y-m-d', strtotime( '-14 days' ) ),
125
- 'end_date' => date( 'Y-m-d' ),
126
- ),
127
- 'last_30_days' => array(
128
- 'title' => __( 'Last 30 Days', 'woocommerce-jetpack' ),
129
- 'start_date' => date( 'Y-m-d', strtotime( '-30 days' ) ),
130
- 'end_date' => date( 'Y-m-d' ),
131
- ),
132
- 'last_3_months' => array(
133
- 'title' => __( 'Last 3 Months', 'woocommerce-jetpack' ),
134
- 'start_date' => date( 'Y-m-d', strtotime( '-3 months' ) ),
135
- 'end_date' => date( 'Y-m-d' ),
136
- ),
137
- 'last_6_months' => array(
138
- 'title' => __( 'Last 6 Months', 'woocommerce-jetpack' ),
139
- 'start_date' => date( 'Y-m-d', strtotime( '-6 months' ) ),
140
- 'end_date' => date( 'Y-m-d' ),
141
- ),
142
- 'last_12_months' => array(
143
- 'title' => __( 'Last 12 Months', 'woocommerce-jetpack' ),
144
- 'start_date' => date( 'Y-m-d', strtotime( '-12 months' ) ),
145
- 'end_date' => date( 'Y-m-d' ),
146
- ),
147
- 'last_24_months' => array(
148
- 'title' => __( 'Last 24 Months', 'woocommerce-jetpack' ),
149
- 'start_date' => date( 'Y-m-d', strtotime( '-24 months' ) ),
150
- 'end_date' => date( 'Y-m-d' ),
151
- ),
152
- 'last_36_months' => array(
153
- 'title' => __( 'Last 36 Months', 'woocommerce-jetpack' ),
154
- 'start_date' => date( 'Y-m-d', strtotime( '-36 months' ) ),
155
- 'end_date' => date( 'Y-m-d' ),
156
- ),
157
- 'same_days_last_month' => array(
158
- 'title' => __( 'Same Days Last Month', 'woocommerce-jetpack' ),
159
- 'start_date' => date( 'Y-m-01', strtotime( '-1 month' ) ),
160
- 'end_date' => date( 'Y-m-d', strtotime( '-1 month' ) ),
161
- ),
162
- 'same_days_last_year' => array(
163
- 'title' => __( 'Same Days Last Year', 'woocommerce-jetpack' ),
164
- 'start_date' => date( 'Y-m-01', strtotime( '-1 year' ) ),
165
- 'end_date' => date( 'Y-m-d', strtotime( '-1 year' ) ),
166
- ),
167
- 'last_year' => array(
168
- 'title' => __( 'Last Year', 'woocommerce-jetpack' ),
169
- 'start_date' => date( 'Y-01-01', strtotime( '-1 year' ) ),
170
- 'end_date' => date( 'Y-12-31', strtotime( '-1 year' ) ),
171
- ),
172
- /* 'last_week' => array(
173
- 'title' => __( 'Last Week', 'woocommerce-jetpack' ),
174
- 'start_date' => date( 'Y-m-d', strtotime( 'last monday' ) ),
175
- 'end_date' => date( 'Y-m-d', strtotime( 'last sunday' ) ),
176
- ), */
177
- );
178
  $custom_range_nonce = wp_create_nonce( 'custom_range' );
179
- foreach ( $custom_ranges as $custom_range_id => $custom_range ) {
180
  $node = array(
181
  'parent' => $parent,
182
  'id' => $parent . '_' . $custom_range_id,
@@ -211,6 +155,17 @@ class WCJ_Reports extends WCJ_Module {
211
  echo $report->get_report();
212
  }
213
 
 
 
 
 
 
 
 
 
 
 
 
214
  /**
215
  * get_report_monthly_sales.
216
  * @version 2.4.7
@@ -243,13 +198,20 @@ class WCJ_Reports extends WCJ_Module {
243
  /**
244
  * Add reports to WooCommerce > Reports > Sales
245
  *
246
- * @version 2.5.3
247
  * @since 2.3.0
248
  */
249
  function add_sales_reports( $reports ) {
250
 
 
 
 
 
 
 
 
251
  $reports['orders']['reports']['booster_products_sales'] = array(
252
- 'title' => __( 'Booster: Product Sales', 'woocommerce-jetpack' ),
253
  'description' => '',
254
  'hide_title' => false,
255
  'callback' => array( $this, 'get_report_sales' ),
2
  /**
3
  * Booster for WooCommerce - Module - Reports
4
  *
5
+ * @version 2.9.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
24
  /**
25
  * Constructor.
26
  *
27
+ * @version 2.9.0
28
  */
29
  function __construct() {
30
 
44
 
45
  include_once( 'reports/wcj-class-reports-customers.php' );
46
  include_once( 'reports/wcj-class-reports-stock.php' );
47
+ include_once( 'reports/wcj-class-reports-sales-daily.php' );
48
  include_once( 'reports/wcj-class-reports-sales.php' );
49
  include_once( 'reports/wcj-class-reports-monthly-sales.php' );
50
 
102
  /**
103
  * add_custom_order_reports_ranges_to_admin_bar.
104
  *
105
+ * @version 2.9.0
106
  */
107
  function add_custom_order_reports_ranges_to_admin_bar( $wp_admin_bar ) {
108
  $is_reports = ( isset( $_GET['page'] ) && 'wc-reports' === $_GET['page'] );
119
  );
120
  $wp_admin_bar->add_node( $args );
121
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
122
  $custom_range_nonce = wp_create_nonce( 'custom_range' );
123
+ foreach ( wcj_get_reports_custom_ranges() as $custom_range_id => $custom_range ) {
124
  $node = array(
125
  'parent' => $parent,
126
  'id' => $parent . '_' . $custom_range_id,
155
  echo $report->get_report();
156
  }
157
 
158
+ /**
159
+ * get_report_products_sales_daily.
160
+ *
161
+ * @version 2.9.0
162
+ * @since 2.9.0
163
+ */
164
+ function get_report_products_sales_daily() {
165
+ $report = new WCJ_Reports_Product_Sales_Daily();
166
+ echo $report->get_report();
167
+ }
168
+
169
  /**
170
  * get_report_monthly_sales.
171
  * @version 2.4.7
198
  /**
199
  * Add reports to WooCommerce > Reports > Sales
200
  *
201
+ * @version 2.9.0
202
  * @since 2.3.0
203
  */
204
  function add_sales_reports( $reports ) {
205
 
206
+ $reports['orders']['reports']['booster_products_sales_daily'] = array(
207
+ 'title' => __( 'Booster: Product Sales (Daily)', 'woocommerce-jetpack' ),
208
+ 'description' => '',
209
+ 'hide_title' => false,
210
+ 'callback' => array( $this, 'get_report_products_sales_daily' ),
211
+ );
212
+
213
  $reports['orders']['reports']['booster_products_sales'] = array(
214
+ 'title' => __( 'Booster: Product Sales (Monthly)', 'woocommerce-jetpack' ),
215
  'description' => '',
216
  'hide_title' => false,
217
  'callback' => array( $this, 'get_report_sales' ),
includes/class-wcj-shipping-options.php ADDED
@@ -0,0 +1,183 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Module - Shipping Options
4
+ *
5
+ * @version 2.9.0
6
+ * @since 2.9.0
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
11
+
12
+ if ( ! class_exists( 'WCJ_Shipping_Options' ) ) :
13
+
14
+ class WCJ_Shipping_Options extends WCJ_Module {
15
+
16
+ /**
17
+ * Constructor.
18
+ *
19
+ * @version 2.9.0
20
+ * @since 2.9.0
21
+ */
22
+ function __construct() {
23
+
24
+ $this->id = 'shipping_options';
25
+ $this->short_desc = __( 'Shipping Options', 'woocommerce-jetpack' );
26
+ $this->desc = __( 'Add descriptions and icons to shipping methods on frontend.', 'woocommerce-jetpack') . ' ' .
27
+ __( 'Hide WooCommerce shipping when free is available.', 'woocommerce-jetpack') . ' ' .
28
+ __( 'Grant free shipping on per product basis.', 'woocommerce-jetpack');
29
+ $this->link_slug = 'woocommerce-shipping-options';
30
+ parent::__construct();
31
+
32
+ if ( $this->is_enabled() ) {
33
+
34
+ // Hide if free is available
35
+ if ( 'yes' === get_option( 'wcj_shipping_hide_if_free_available_all', 'no' ) ) {
36
+ add_filter( 'woocommerce_package_rates', array( $this, 'hide_shipping_when_free_is_available' ), 10, 2 );
37
+ }
38
+ add_filter( 'woocommerce_shipping_settings', array( $this, 'add_hide_shipping_if_free_available_fields' ), 100 );
39
+
40
+ // Shipping Descriptions
41
+ if ( 'yes' === get_option( 'wcj_shipping_description_enabled', 'no' ) ) {
42
+ add_filter( 'woocommerce_cart_shipping_method_full_label', array( $this, 'shipping_description' ), PHP_INT_MAX, 2 );
43
+ }
44
+
45
+ // Shipping Icons
46
+ if ( 'yes' === get_option( 'wcj_shipping_icons_enabled', 'no' ) ) {
47
+ add_filter( 'woocommerce_cart_shipping_method_full_label', array( $this, 'shipping_icon' ), PHP_INT_MAX, 2 );
48
+ }
49
+
50
+ // Free shipping by product
51
+ if ( 'yes' === get_option( 'wcj_shipping_free_shipping_by_product_enabled', 'no' ) ) {
52
+ add_filter( 'woocommerce_shipping_free_shipping_is_available', array( $this, 'free_shipping_by_product' ), PHP_INT_MAX, 2 );
53
+ }
54
+ }
55
+ }
56
+
57
+ /**
58
+ * free_shipping_by_product.
59
+ *
60
+ * @version 2.6.0
61
+ * @since 2.6.0
62
+ * @return bool
63
+ */
64
+ function free_shipping_by_product( $is_available, $package ) {
65
+ $free_shipping_granting_products = get_option( 'wcj_shipping_free_shipping_by_product_products', '' );
66
+ if ( empty( $free_shipping_granting_products ) ) {
67
+ return $is_available;
68
+ }
69
+ $free_shipping_granting_products_type = apply_filters( 'booster_get_option', 'all', get_option( 'wcj_shipping_free_shipping_by_product_type', 'all' ) );
70
+ $package_grants_free_shipping = false;
71
+ foreach( $package['contents'] as $item ) {
72
+ if ( in_array( $item['product_id'], $free_shipping_granting_products ) ) {
73
+ if ( 'at_least_one' === $free_shipping_granting_products_type ) {
74
+ return true;
75
+ } elseif ( ! $package_grants_free_shipping ) {
76
+ $package_grants_free_shipping = true;
77
+ }
78
+ } else {
79
+ if ( 'all' === $free_shipping_granting_products_type ) {
80
+ return $is_available;
81
+ }
82
+ }
83
+ }
84
+ return ( $package_grants_free_shipping ) ? true : $is_available;
85
+ }
86
+
87
+ /**
88
+ * shipping_icon.
89
+ *
90
+ * @version 2.6.0
91
+ * @since 2.5.6
92
+ */
93
+ function shipping_icon( $label, $method ) {
94
+ $shipping_icons_visibility = apply_filters( 'booster_get_option', 'both', get_option( 'wcj_shipping_icons_visibility', 'both' ) );
95
+ if ( 'checkout_only' === $shipping_icons_visibility && is_cart() ) {
96
+ return $label;
97
+ }
98
+ if ( 'cart_only' === $shipping_icons_visibility && is_checkout() ) {
99
+ return $label;
100
+ }
101
+ if ( '' != ( $icon_url = get_option( 'wcj_shipping_icon_' . $method->method_id, '' ) ) ) {
102
+ $style_html = ( '' != ( $style = get_option( 'wcj_shipping_icons_style', 'display:inline;' ) ) ) ? 'style="' . $style . '" ' : '';
103
+ $img = '<img ' . $style_html . 'class="wcj_shipping_icon" id="wcj_shipping_icon_' . $method->method_id . '" src="' . $icon_url . '">';
104
+ $label = ( 'before' === get_option( 'wcj_shipping_icons_position', 'before' ) ) ? $img . ' ' . $label : $label . ' ' . $img;
105
+ }
106
+ return $label;
107
+ }
108
+
109
+ /**
110
+ * shipping_description.
111
+ *
112
+ * @version 2.6.0
113
+ * @since 2.5.6
114
+ */
115
+ function shipping_description( $label, $method ) {
116
+ $shipping_descriptions_visibility = apply_filters( 'booster_get_option', 'both', get_option( 'wcj_shipping_descriptions_visibility', 'both' ) );
117
+ if ( 'checkout_only' === $shipping_descriptions_visibility && is_cart() ) {
118
+ return $label;
119
+ }
120
+ if ( 'cart_only' === $shipping_descriptions_visibility && is_checkout() ) {
121
+ return $label;
122
+ }
123
+ if ( '' != ( $desc = get_option( 'wcj_shipping_description_' . $method->method_id, '' ) ) ) {
124
+ $label .= $desc;
125
+ }
126
+ return $label;
127
+ }
128
+
129
+ /**
130
+ * hide_shipping_when_free_is_available.
131
+ *
132
+ * @version 2.5.3
133
+ * @todo if ( 'yes' === get_option( 'wcj_shipping_hide_if_free_available_local_delivery' ) ) { unset( $rates['local_delivery'] ); }
134
+ */
135
+ function hide_shipping_when_free_is_available( $rates, $package ) {
136
+ $free_shipping_rates = array();
137
+ $is_free_shipping_available = false;
138
+ foreach ( $rates as $rate_key => $rate ) {
139
+ if ( false !== strpos( $rate_key, 'free_shipping' ) ) {
140
+ $is_free_shipping_available = true;
141
+ $free_shipping_rates[ $rate_key ] = $rate;
142
+ }
143
+ }
144
+ return ( $is_free_shipping_available ) ? $free_shipping_rates : $rates;
145
+ }
146
+
147
+ /**
148
+ * add_hide_shipping_if_free_available_fields.
149
+ *
150
+ * @version 2.5.3
151
+ */
152
+ function add_hide_shipping_if_free_available_fields( $settings ) {
153
+ $updated_settings = array();
154
+ foreach ( $settings as $section ) {
155
+ $updated_settings[] = $section;
156
+ if ( isset( $section['id'] ) && 'woocommerce_ship_to_destination' === $section['id'] ) {
157
+ /* $updated_settings[] = array(
158
+ 'title' => __( 'Booster: Hide shipping', 'woocommerce-jetpack' ),
159
+ 'desc' => __( 'Hide local delivery when free is available', 'woocommerce-jetpack' ),
160
+ 'desc_tip' => __( '', 'woocommerce-jetpack' ),
161
+ 'id' => 'wcj_shipping_hide_if_free_available_local_delivery',
162
+ 'default' => 'no',
163
+ 'type' => 'checkbox',
164
+ 'checkboxgroup' => 'start',
165
+ ); */
166
+ $updated_settings[] = array(
167
+ 'title' => __( 'Booster: Hide shipping', 'woocommerce-jetpack' ),
168
+ 'desc' => __( 'Hide all when free is available', 'woocommerce-jetpack' ),
169
+ 'id' => 'wcj_shipping_hide_if_free_available_all',
170
+ 'default' => 'no',
171
+ 'type' => 'checkbox',
172
+ /* 'checkboxgroup' => 'end', */
173
+ );
174
+ }
175
+ }
176
+ return $updated_settings;
177
+ }
178
+
179
+ }
180
+
181
+ endif;
182
+
183
+ return new WCJ_Shipping_Options();
includes/class-wcj-shipping.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /**
3
- * Booster for WooCommerce - Module - Shipping
4
  *
5
- * @version 2.8.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -15,171 +15,22 @@ class WCJ_Shipping extends WCJ_Module {
15
  /**
16
  * Constructor.
17
  *
18
- * @version 2.8.0
19
- * @todo "custom shipping" to new module
20
  */
21
  function __construct() {
22
 
23
  $this->id = 'shipping';
24
- $this->short_desc = __( 'Shipping', 'woocommerce-jetpack' );
25
- $this->desc =
26
- __( 'Add multiple custom shipping methods to WooCommerce.', 'woocommerce-jetpack' ) . ' ' .
27
- __( 'Add descriptions and icons to shipping methods on frontend.', 'woocommerce-jetpack') . ' ' .
28
- __( 'Hide WooCommerce shipping when free is available.', 'woocommerce-jetpack');
29
- $this->link_slug = 'woocommerce-shipping';
30
  parent::__construct();
31
 
32
  if ( $this->is_enabled() ) {
33
-
34
- // Custom Shipping
35
  include_once( 'shipping/class-wc-shipping-wcj-custom.php' );
36
  if ( 'yes' === get_option( 'wcj_shipping_custom_shipping_w_zones_enabled', 'no' ) ) {
37
  include_once( 'shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php' );
38
  }
39
-
40
- // Hide if free is available
41
- if ( 'yes' === get_option( 'wcj_shipping_hide_if_free_available_all', 'no' ) ) {
42
- add_filter( 'woocommerce_package_rates', array( $this, 'hide_shipping_when_free_is_available' ), 10, 2 );
43
- }
44
- add_filter( 'woocommerce_shipping_settings', array( $this, 'add_hide_shipping_if_free_available_fields' ), 100 );
45
-
46
- // Shipping Descriptions
47
- if ( 'yes' === get_option( 'wcj_shipping_description_enabled', 'no' ) ) {
48
- add_filter( 'woocommerce_cart_shipping_method_full_label', array( $this, 'shipping_description' ), PHP_INT_MAX, 2 );
49
- }
50
-
51
- // Shipping Icons
52
- if ( 'yes' === get_option( 'wcj_shipping_icons_enabled', 'no' ) ) {
53
- add_filter( 'woocommerce_cart_shipping_method_full_label', array( $this, 'shipping_icon' ), PHP_INT_MAX, 2 );
54
- }
55
-
56
- // Free shipping by product
57
- if ( 'yes' === get_option( 'wcj_shipping_free_shipping_by_product_enabled', 'no' ) ) {
58
- add_filter( 'woocommerce_shipping_free_shipping_is_available', array( $this, 'free_shipping_by_product' ), PHP_INT_MAX, 2 );
59
- }
60
- }
61
- }
62
-
63
- /**
64
- * free_shipping_by_product.
65
- *
66
- * @version 2.6.0
67
- * @since 2.6.0
68
- * @return bool
69
- */
70
- function free_shipping_by_product( $is_available, $package ) {
71
- $free_shipping_granting_products = get_option( 'wcj_shipping_free_shipping_by_product_products', '' );
72
- if ( empty( $free_shipping_granting_products ) ) {
73
- return $is_available;
74
- }
75
- $free_shipping_granting_products_type = apply_filters( 'booster_get_option', 'all', get_option( 'wcj_shipping_free_shipping_by_product_type', 'all' ) );
76
- $package_grants_free_shipping = false;
77
- foreach( $package['contents'] as $item ) {
78
- if ( in_array( $item['product_id'], $free_shipping_granting_products ) ) {
79
- if ( 'at_least_one' === $free_shipping_granting_products_type ) {
80
- return true;
81
- } elseif ( ! $package_grants_free_shipping ) {
82
- $package_grants_free_shipping = true;
83
- }
84
- } else {
85
- if ( 'all' === $free_shipping_granting_products_type ) {
86
- return $is_available;
87
- }
88
- }
89
- }
90
- return ( $package_grants_free_shipping ) ? true : $is_available;
91
- }
92
-
93
- /**
94
- * shipping_icon.
95
- *
96
- * @version 2.6.0
97
- * @since 2.5.6
98
- */
99
- function shipping_icon( $label, $method ) {
100
- $shipping_icons_visibility = apply_filters( 'booster_get_option', 'both', get_option( 'wcj_shipping_icons_visibility', 'both' ) );
101
- if ( 'checkout_only' === $shipping_icons_visibility && is_cart() ) {
102
- return $label;
103
- }
104
- if ( 'cart_only' === $shipping_icons_visibility && is_checkout() ) {
105
- return $label;
106
- }
107
- if ( '' != ( $icon_url = get_option( 'wcj_shipping_icon_' . $method->method_id, '' ) ) ) {
108
- $style_html = ( '' != ( $style = get_option( 'wcj_shipping_icons_style', 'display:inline;' ) ) ) ? 'style="' . $style . '" ' : '';
109
- $img = '<img ' . $style_html . 'class="wcj_shipping_icon" id="wcj_shipping_icon_' . $method->method_id . '" src="' . $icon_url . '">';
110
- $label = ( 'before' === get_option( 'wcj_shipping_icons_position', 'before' ) ) ? $img . ' ' . $label : $label . ' ' . $img;
111
- }
112
- return $label;
113
- }
114
-
115
- /**
116
- * shipping_description.
117
- *
118
- * @version 2.6.0
119
- * @since 2.5.6
120
- */
121
- function shipping_description( $label, $method ) {
122
- $shipping_descriptions_visibility = apply_filters( 'booster_get_option', 'both', get_option( 'wcj_shipping_descriptions_visibility', 'both' ) );
123
- if ( 'checkout_only' === $shipping_descriptions_visibility && is_cart() ) {
124
- return $label;
125
- }
126
- if ( 'cart_only' === $shipping_descriptions_visibility && is_checkout() ) {
127
- return $label;
128
- }
129
- if ( '' != ( $desc = get_option( 'wcj_shipping_description_' . $method->method_id, '' ) ) ) {
130
- $label .= $desc;
131
- }
132
- return $label;
133
- }
134
-
135
- /**
136
- * hide_shipping_when_free_is_available.
137
- *
138
- * @version 2.5.3
139
- * @todo if ( 'yes' === get_option( 'wcj_shipping_hide_if_free_available_local_delivery' ) ) { unset( $rates['local_delivery'] ); }
140
- */
141
- function hide_shipping_when_free_is_available( $rates, $package ) {
142
- $free_shipping_rates = array();
143
- $is_free_shipping_available = false;
144
- foreach ( $rates as $rate_key => $rate ) {
145
- if ( false !== strpos( $rate_key, 'free_shipping' ) ) {
146
- $is_free_shipping_available = true;
147
- $free_shipping_rates[ $rate_key ] = $rate;
148
- }
149
- }
150
- return ( $is_free_shipping_available ) ? $free_shipping_rates : $rates;
151
- }
152
-
153
- /**
154
- * add_hide_shipping_if_free_available_fields.
155
- *
156
- * @version 2.5.3
157
- */
158
- function add_hide_shipping_if_free_available_fields( $settings ) {
159
- $updated_settings = array();
160
- foreach ( $settings as $section ) {
161
- $updated_settings[] = $section;
162
- if ( isset( $section['id'] ) && 'woocommerce_ship_to_destination' === $section['id'] ) {
163
- /* $updated_settings[] = array(
164
- 'title' => __( 'Booster: Hide shipping', 'woocommerce-jetpack' ),
165
- 'desc' => __( 'Hide local delivery when free is available', 'woocommerce-jetpack' ),
166
- 'desc_tip' => __( '', 'woocommerce-jetpack' ),
167
- 'id' => 'wcj_shipping_hide_if_free_available_local_delivery',
168
- 'default' => 'no',
169
- 'type' => 'checkbox',
170
- 'checkboxgroup' => 'start',
171
- ); */
172
- $updated_settings[] = array(
173
- 'title' => __( 'Booster: Hide shipping', 'woocommerce-jetpack' ),
174
- 'desc' => __( 'Hide all when free is available', 'woocommerce-jetpack' ),
175
- 'id' => 'wcj_shipping_hide_if_free_available_all',
176
- 'default' => 'no',
177
- 'type' => 'checkbox',
178
- /* 'checkboxgroup' => 'end', */
179
- );
180
- }
181
  }
182
- return $updated_settings;
183
  }
184
 
185
  }
1
  <?php
2
  /**
3
+ * Booster for WooCommerce - Module - Custom Shipping
4
  *
5
+ * @version 2.9.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
15
  /**
16
  * Constructor.
17
  *
18
+ * @version 2.9.0
 
19
  */
20
  function __construct() {
21
 
22
  $this->id = 'shipping';
23
+ $this->short_desc = __( 'Custom Shipping', 'woocommerce-jetpack' );
24
+ $this->desc = __( 'Add multiple custom shipping methods to WooCommerce.', 'woocommerce-jetpack' );
25
+ $this->link_slug = 'woocommerce-custom-shipping';
 
 
 
26
  parent::__construct();
27
 
28
  if ( $this->is_enabled() ) {
 
 
29
  include_once( 'shipping/class-wc-shipping-wcj-custom.php' );
30
  if ( 'yes' === get_option( 'wcj_shipping_custom_shipping_w_zones_enabled', 'no' ) ) {
31
  include_once( 'shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php' );
32
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  }
 
34
  }
35
 
36
  }
includes/class-wcj-sku.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Module - SKU
4
  *
5
- * @version 2.8.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -15,14 +15,13 @@ class WCJ_SKU extends WCJ_Module {
15
  /**
16
  * Constructor.
17
  *
18
- * @version 2.8.0
19
- * @todo `woocommerce_duplicate_product` (check SKU plugin)
20
  */
21
  function __construct() {
22
 
23
  $this->id = 'sku';
24
  $this->short_desc = __( 'SKU', 'woocommerce-jetpack' );
25
- $this->desc = __( 'Generate WooCommerce SKUs automatically.', 'woocommerce-jetpack' );
26
  $this->link_slug = 'woocommerce-sku';
27
  $this->extra_desc = __( 'When enabled - all new products will be given (autogenerated) SKU.', 'woocommerce-jetpack' ) . '<br>' .
28
  __( 'If you wish to set SKUs for existing products, use "Autogenerate SKUs" Tool.', 'woocommerce-jetpack' );
@@ -36,18 +35,27 @@ class WCJ_SKU extends WCJ_Module {
36
  ) );
37
 
38
  if ( $this->is_enabled() ) {
39
-
40
  if ( 'yes' === get_option( 'wcj_sku_new_products_generate_enabled', 'yes' ) ) {
41
- add_action( 'wp_insert_post', array( $this, 'set_sku_for_new_product' ), PHP_INT_MAX, 3 );
 
42
  }
43
-
44
  if ( 'yes' === get_option( 'wcj_sku_allow_duplicates_enabled', 'no' ) ) {
45
  add_filter( 'wc_product_has_unique_sku', '__return_false', PHP_INT_MAX );
46
  }
47
-
48
  if ( 'yes' === get_option( 'wcj_sku_add_to_customer_emails', 'no' ) ) {
49
  add_filter( 'woocommerce_email_order_items_args', array( $this, 'add_sku_to_customer_emails' ), PHP_INT_MAX, 1 );
50
  }
 
 
 
 
 
 
 
 
51
  }
52
  }
53
 
@@ -63,24 +71,48 @@ class WCJ_SKU extends WCJ_Module {
63
  }
64
 
65
  /**
66
- * get_available_variations.
67
  *
68
- * @version 2.7.0
69
  * @since 2.4.8
70
  */
71
  function get_all_variations( $_product ) {
72
  $all_variations = array();
73
  foreach ( $_product->get_children() as $child_id ) {
74
- $variation = ( WCJ_IS_WC_VERSION_BELOW_3 ? $_product->get_child( $child_id ) : wc_get_product( $child_id ) );
75
- $all_variations[] = $_product->get_available_variation( $variation );
 
76
  }
77
  return $all_variations;
78
  }
79
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
  /**
81
  * set_sku_with_variable.
82
  *
83
- * @version 2.7.0
84
  * @todo `as_variable_with_suffix` - handle cases with more than 26 variations
85
  */
86
  function set_sku_with_variable( $product_id, $is_preview ) {
@@ -89,8 +121,9 @@ class WCJ_SKU extends WCJ_Module {
89
  $sku_number = rand();
90
  } */
91
  if ( 'sequential' === apply_filters( 'booster_get_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
92
- $sku_number = $this->sequential_counter;
93
- $this->sequential_counter++;
 
94
  } else { // if 'product_id'
95
  $sku_number = $product_id;
96
  }
@@ -105,25 +138,25 @@ class WCJ_SKU extends WCJ_Module {
105
  $variations = $this->get_all_variations( $product );
106
  if ( 'as_variable' === $variation_handling ) {
107
  foreach ( $variations as $variation ) {
108
- $this->set_sku( $variation['variation_id'], $sku_number, '', $is_preview, $product_id, $product );
109
  }
110
- }
111
- else if ( 'as_variation' === $variation_handling ) {
112
  foreach ( $variations as $variation ) {
113
  if ( 'sequential' === apply_filters( 'booster_get_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
114
- $sku_number = $this->sequential_counter;
115
- $this->sequential_counter++;
 
116
  } else { // if 'product_id'
117
  $sku_number = $variation['variation_id'];
118
  }
119
- $this->set_sku( $variation['variation_id'], $sku_number, '', $is_preview, $product_id, $product );
120
  }
121
  }
122
  else if ( 'as_variable_with_suffix' === $variation_handling ) {
123
  $variation_suffixes = 'abcdefghijklmnopqrstuvwxyz';
124
  $abc = 0;
125
  foreach ( $variations as $variation ) {
126
- $this->set_sku( $variation['variation_id'], $sku_number, $variation_suffixes[ $abc++ ], $is_preview, $product_id, $product );
127
  if ( 26 == $abc ) {
128
  $abc = 0;
129
  }
@@ -135,7 +168,7 @@ class WCJ_SKU extends WCJ_Module {
135
  /**
136
  * set_sku.
137
  *
138
- * @version 2.7.0
139
  */
140
  function set_sku( $product_id, $sku_number, $variation_suffix, $is_preview, $parent_product_id, $_product ) {
141
 
@@ -155,17 +188,22 @@ class WCJ_SKU extends WCJ_Module {
155
  }
156
  }
157
 
158
- $the_sku = ( $do_generate_new_sku ) ? sprintf( '%s%s%0' . get_option( 'wcj_sku_minimum_number_length', 0 ) . 'd%s%s%s',
159
- apply_filters( 'booster_get_option', '', $category_prefix ),
160
- get_option( 'wcj_sku_prefix', '' ),
161
- $sku_number,
162
- get_option( 'wcj_sku_suffix', '' ),
163
- $variation_suffix,
164
- $category_suffix
165
- ) : $old_sku;
 
 
 
 
 
166
 
167
  if ( $is_preview ) {
168
- echo '<tr>' .
169
  '<td>' . $this->product_counter++ . '</td>' .
170
  '<td>' . $product_id . '</td>' .
171
  '<td>' . $_product->get_title() . '</td>' .
@@ -179,17 +217,54 @@ class WCJ_SKU extends WCJ_Module {
179
  }
180
 
181
  /**
182
- * set_all_products_skus.
183
  *
184
- * @version 2.7.0
 
185
  */
186
- function set_all_products_skus( $is_preview ) {
187
  if ( 'sequential' === apply_filters( 'booster_get_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
188
  $this->sequential_counter = apply_filters( 'booster_get_option', 1, get_option( 'wcj_sku_number_generation_sequential', 1 ) );
 
 
 
 
 
 
 
 
189
  }
190
- $limit = 256;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
191
  $offset = 0;
192
- while ( TRUE ) {
193
  $posts = new WP_Query( array(
194
  'posts_per_page' => $limit,
195
  'offset' => $offset,
@@ -198,7 +273,7 @@ class WCJ_SKU extends WCJ_Module {
198
  'order' => 'ASC',
199
  'orderby' => 'date',
200
  'fields' => 'ids',
201
- ));
202
  if ( ! $posts->have_posts() ) {
203
  break;
204
  }
@@ -207,40 +282,45 @@ class WCJ_SKU extends WCJ_Module {
207
  }
208
  $offset += $limit;
209
  }
210
- wp_reset_postdata();
211
- if ( 'sequential' === apply_filters( 'booster_get_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) && ! $is_preview ) {
212
- update_option( 'wcj_sku_number_generation_sequential', $this->sequential_counter );
213
- }
 
 
 
 
 
 
 
 
 
214
  }
215
 
216
  /**
217
  * set_sku_for_new_product.
218
  *
219
- * @version 2.5.2
220
  */
221
  function set_sku_for_new_product( $post_ID, $post, $update ) {
222
  if ( 'product' != $post->post_type ) {
223
  return;
224
  }
225
  if ( false === $update ) {
226
- if ( 'sequential' === apply_filters( 'booster_get_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
227
- $this->sequential_counter = apply_filters( 'booster_get_option', 1, get_option( 'wcj_sku_number_generation_sequential', 1 ) );
228
- }
229
  $this->set_sku_with_variable( $post_ID, false );
230
- if ( 'sequential' === apply_filters( 'booster_get_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
231
- update_option( 'wcj_sku_number_generation_sequential', $this->sequential_counter );
232
- }
233
  }
234
  }
235
 
236
  /**
237
  * create_sku_tool
238
  *
239
- * @version 2.7.0
240
  */
241
  function create_sku_tool() {
242
  $result_message = '';
243
- $is_preview = ( isset( $_POST['preview_sku'] ) ) ? true : false;
244
  if ( isset( $_POST['set_sku'] ) || isset( $_POST['preview_sku'] ) ) {
245
  $this->product_counter = 1;
246
  $preview_html = '<table class="widefat" style="width:50%; min-width: 300px; margin-top: 10px;">';
@@ -253,21 +333,78 @@ class WCJ_SKU extends WCJ_Module {
253
  '<th>' . __( 'SKU', 'woocommerce-jetpack' ) . '</th>' .
254
  '<th>' . __( 'Old SKU', 'woocommerce-jetpack' ) . '</th>' .
255
  '</tr>';
256
- ob_start();
257
  $this->set_all_products_skus( $is_preview );
258
- $preview_html .= ob_get_clean();
259
  $preview_html .= '</table>';
260
  $result_message = '<p><div class="updated"><p><strong>' . __( 'SKUs generated and set successfully!', 'woocommerce-jetpack' ) . '</strong></p></div></p>';
261
  }
262
- ?><div>
263
- <?php echo $this->get_tool_header_html( 'sku' ); ?>
264
- <?php if ( ! $is_preview ) echo $result_message; ?>
265
- <form method="post" action="">
266
- <input class="button-primary" type="submit" name="preview_sku" id="preview_sku" value="<?php _e( 'Preview SKUs', 'woocommerce-jetpack' ); ?>">
267
- <input class="button-primary" type="submit" name="set_sku" value="<?php _e( 'Set SKUs', 'woocommerce-jetpack' ); ?>">
268
- </form>
269
- <?php if ( $is_preview ) echo $preview_html; ?>
270
- </div><?php
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
271
  }
272
 
273
  }
2
  /**
3
  * Booster for WooCommerce - Module - SKU
4
  *
5
+ * @version 2.9.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
15
  /**
16
  * Constructor.
17
  *
18
+ * @version 2.9.0
 
19
  */
20
  function __construct() {
21
 
22
  $this->id = 'sku';
23
  $this->short_desc = __( 'SKU', 'woocommerce-jetpack' );
24
+ $this->desc = __( 'Generate WooCommerce SKUs automatically. Search by SKU on frontend.', 'woocommerce-jetpack' );
25
  $this->link_slug = 'woocommerce-sku';
26
  $this->extra_desc = __( 'When enabled - all new products will be given (autogenerated) SKU.', 'woocommerce-jetpack' ) . '<br>' .
27
  __( 'If you wish to set SKUs for existing products, use "Autogenerate SKUs" Tool.', 'woocommerce-jetpack' );
35
  ) );
36
 
37
  if ( $this->is_enabled() ) {
38
+ // New product
39
  if ( 'yes' === get_option( 'wcj_sku_new_products_generate_enabled', 'yes' ) ) {
40
+ add_action( 'wp_insert_post', array( $this, 'set_sku_for_new_product' ), PHP_INT_MAX, 3 );
41
+ add_action( 'woocommerce_duplicate_product', array( $this, 'set_new_product_sku_on_duplicate' ), PHP_INT_MAX, 2 );
42
  }
43
+ // Allow duplicates
44
  if ( 'yes' === get_option( 'wcj_sku_allow_duplicates_enabled', 'no' ) ) {
45
  add_filter( 'wc_product_has_unique_sku', '__return_false', PHP_INT_MAX );
46
  }
47
+ // SKU in emails
48
  if ( 'yes' === get_option( 'wcj_sku_add_to_customer_emails', 'no' ) ) {
49
  add_filter( 'woocommerce_email_order_items_args', array( $this, 'add_sku_to_customer_emails' ), PHP_INT_MAX, 1 );
50
  }
51
+ // Search by SKU
52
+ if ( 'yes' === get_option( 'wcj_sku_search_enabled', 'no' ) ) {
53
+ add_filter( 'pre_get_posts', array( $this, 'add_search_by_sku_to_frontend' ), PHP_INT_MAX );
54
+ }
55
+ // Disable SKU
56
+ if ( 'yes' === get_option( 'wcj_sku_disabled', 'no' ) ) {
57
+ add_filter( 'wc_product_sku_enabled', '__return_false', PHP_INT_MAX );
58
+ }
59
  }
60
  }
61
 
71
  }
72
 
73
  /**
74
+ * get_all_variations.
75
  *
76
+ * @version 2.9.0
77
  * @since 2.4.8
78
  */
79
  function get_all_variations( $_product ) {
80
  $all_variations = array();
81
  foreach ( $_product->get_children() as $child_id ) {
82
+ if ( $variation = ( WCJ_IS_WC_VERSION_BELOW_3 ? $_product->get_child( $child_id ) : wc_get_product( $child_id ) ) ) {
83
+ $all_variations[] = $_product->get_available_variation( $variation );
84
+ }
85
  }
86
  return $all_variations;
87
  }
88
 
89
+ /**
90
+ * get_sequential_counter.
91
+ *
92
+ * @version 2.9.0
93
+ * @since 2.9.0
94
+ */
95
+ function get_sequential_counter( $product_id ) {
96
+ if ( 'yes' === get_option( 'wcj_sku_number_generation_sequential_by_cat', 'no' ) ) {
97
+ $product_terms = get_the_terms( $product_id, 'product_cat' );
98
+ if ( is_array( $product_terms ) ) {
99
+ foreach ( $product_terms as $term ) {
100
+ $sku_number = $this->sequential_counter_cats[ $term->term_id ];
101
+ $this->sequential_counter_cats[ $term->term_id ]++;
102
+ return $sku_number;
103
+ }
104
+ }
105
+ }
106
+ // Cats disabled or no category found
107
+ $sku_number = $this->sequential_counter;
108
+ $this->sequential_counter++;
109
+ return $sku_number;
110
+ }
111
+
112
  /**
113
  * set_sku_with_variable.
114
  *
115
+ * @version 2.9.0
116
  * @todo `as_variable_with_suffix` - handle cases with more than 26 variations
117
  */
118
  function set_sku_with_variable( $product_id, $is_preview ) {
121
  $sku_number = rand();
122
  } */
123
  if ( 'sequential' === apply_filters( 'booster_get_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
124
+ $sku_number = $this->get_sequential_counter( $product_id );
125
+ } elseif ( 'hash_crc32' === apply_filters( 'booster_get_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
126
+ $sku_number = sprintf( "%u", crc32( $product_id ) );
127
  } else { // if 'product_id'
128
  $sku_number = $product_id;
129
  }
138
  $variations = $this->get_all_variations( $product );
139
  if ( 'as_variable' === $variation_handling ) {
140
  foreach ( $variations as $variation ) {
141
+ $this->set_sku( $variation['variation_id'], $sku_number, '', $is_preview, $product_id, wc_get_product( $variation['variation_id'] ) );
142
  }
143
+ } elseif ( 'as_variation' === $variation_handling ) {
 
144
  foreach ( $variations as $variation ) {
145
  if ( 'sequential' === apply_filters( 'booster_get_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
146
+ $sku_number = $this->get_sequential_counter( $product_id );
147
+ } elseif ( 'hash_crc32' === apply_filters( 'booster_get_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
148
+ $sku_number = sprintf( "%u", crc32( $variation['variation_id'] ) );
149
  } else { // if 'product_id'
150
  $sku_number = $variation['variation_id'];
151
  }
152
+ $this->set_sku( $variation['variation_id'], $sku_number, '', $is_preview, $product_id, wc_get_product( $variation['variation_id'] ) );
153
  }
154
  }
155
  else if ( 'as_variable_with_suffix' === $variation_handling ) {
156
  $variation_suffixes = 'abcdefghijklmnopqrstuvwxyz';
157
  $abc = 0;
158
  foreach ( $variations as $variation ) {
159
+ $this->set_sku( $variation['variation_id'], $sku_number, $variation_suffixes[ $abc++ ], $is_preview, $product_id, wc_get_product( $variation['variation_id'] ) );
160
  if ( 26 == $abc ) {
161
  $abc = 0;
162
  }
168
  /**
169
  * set_sku.
170
  *
171
+ * @version 2.9.0
172
  */
173
  function set_sku( $product_id, $sku_number, $variation_suffix, $is_preview, $parent_product_id, $_product ) {
174
 
188
  }
189
  }
190
 
191
+ $format_template = get_option( 'wcj_sku_template',
192
+ '{category_prefix}{prefix}{sku_number}{suffix}{category_suffix}{variation_suffix}' );
193
+ $replace_values = array(
194
+ '{category_prefix}' => apply_filters( 'booster_get_option', '', $category_prefix ),
195
+ // '{tag_prefix}' => $tag_prefix,
196
+ '{prefix}' => get_option( 'wcj_sku_prefix', '' ),
197
+ '{sku_number}' => sprintf( '%0' . get_option( 'wcj_sku_minimum_number_length', 0 ) . 's', $sku_number ),
198
+ '{suffix}' => get_option( 'wcj_sku_suffix', '' ),
199
+ // '{tag_suffix}' => $tag_suffix,
200
+ '{category_suffix}' => $category_suffix,
201
+ '{variation_suffix}' => $variation_suffix,
202
+ );
203
+ $the_sku = ( $do_generate_new_sku ) ? str_replace( array_keys( $replace_values ), array_values( $replace_values ), $format_template ) : $old_sku;
204
 
205
  if ( $is_preview ) {
206
+ $this->preview_buffer .= '<tr>' .
207
  '<td>' . $this->product_counter++ . '</td>' .
208
  '<td>' . $product_id . '</td>' .
209
  '<td>' . $_product->get_title() . '</td>' .
217
  }
218
 
219
  /**
220
+ * maybe_get_sequential_counters.
221
  *
222
+ * @version 2.9.0
223
+ * @since 2.9.0
224
  */
225
+ function maybe_get_sequential_counters() {
226
  if ( 'sequential' === apply_filters( 'booster_get_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
227
  $this->sequential_counter = apply_filters( 'booster_get_option', 1, get_option( 'wcj_sku_number_generation_sequential', 1 ) );
228
+ if ( 'yes' === get_option( 'wcj_sku_number_generation_sequential_by_cat', 'no' ) ) {
229
+ $this->product_categories = get_terms( 'product_cat', 'orderby=name&hide_empty=0' );
230
+ if ( ! empty( $this->product_categories ) && ! is_wp_error( $this->product_categories ) ) {
231
+ foreach ( $this->product_categories as $product_category ) {
232
+ $this->sequential_counter_cats[ $product_category->term_id ] = get_option( 'wcj_sku_counter_cat_' . $product_category->term_id, 1 );
233
+ }
234
+ }
235
+ }
236
  }
237
+ }
238
+
239
+ /**
240
+ * maybe_save_sequential_counters.
241
+ *
242
+ * @version 2.9.0
243
+ * @since 2.9.0
244
+ */
245
+ function maybe_save_sequential_counters( $is_preview = false ) {
246
+ if ( 'sequential' === apply_filters( 'booster_get_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) && ! $is_preview ) {
247
+ update_option( 'wcj_sku_number_generation_sequential', $this->sequential_counter );
248
+ if ( 'yes' === get_option( 'wcj_sku_number_generation_sequential_by_cat', 'no' ) ) {
249
+ if ( ! empty( $this->product_categories ) && ! is_wp_error( $this->product_categories ) ) {
250
+ foreach ( $this->product_categories as $product_category ) {
251
+ update_option( 'wcj_sku_counter_cat_' . $product_category->term_id, $this->sequential_counter_cats[ $product_category->term_id ] );
252
+ }
253
+ }
254
+ }
255
+ }
256
+ }
257
+
258
+ /**
259
+ * set_all_products_skus.
260
+ *
261
+ * @version 2.9.0
262
+ */
263
+ function set_all_products_skus( $is_preview ) {
264
+ $this->maybe_get_sequential_counters();
265
+ $limit = 512;
266
  $offset = 0;
267
+ while ( true ) {
268
  $posts = new WP_Query( array(
269
  'posts_per_page' => $limit,
270
  'offset' => $offset,
273
  'order' => 'ASC',
274
  'orderby' => 'date',
275
  'fields' => 'ids',
276
+ ) );
277
  if ( ! $posts->have_posts() ) {
278
  break;
279
  }
282
  }
283
  $offset += $limit;
284
  }
285
+ $this->maybe_save_sequential_counters( $is_preview );
286
+ }
287
+
288
+ /**
289
+ * set_new_product_sku_on_duplicate.
290
+ *
291
+ * @version 2.9.0
292
+ * @since 2.9.0
293
+ */
294
+ function set_new_product_sku_on_duplicate( $post_ID, $post ) {
295
+ $this->maybe_get_sequential_counters();
296
+ $this->set_sku_with_variable( $post_ID, false );
297
+ $this->maybe_save_sequential_counters();
298
  }
299
 
300
  /**
301
  * set_sku_for_new_product.
302
  *
303
+ * @version 2.9.0
304
  */
305
  function set_sku_for_new_product( $post_ID, $post, $update ) {
306
  if ( 'product' != $post->post_type ) {
307
  return;
308
  }
309
  if ( false === $update ) {
310
+ $this->maybe_get_sequential_counters();
 
 
311
  $this->set_sku_with_variable( $post_ID, false );
312
+ $this->maybe_save_sequential_counters();
 
 
313
  }
314
  }
315
 
316
  /**
317
  * create_sku_tool
318
  *
319
+ * @version 2.9.0
320
  */
321
  function create_sku_tool() {
322
  $result_message = '';
323
+ $is_preview = ( isset( $_POST['preview_sku'] ) );
324
  if ( isset( $_POST['set_sku'] ) || isset( $_POST['preview_sku'] ) ) {
325
  $this->product_counter = 1;
326
  $preview_html = '<table class="widefat" style="width:50%; min-width: 300px; margin-top: 10px;">';
333
  '<th>' . __( 'SKU', 'woocommerce-jetpack' ) . '</th>' .
334
  '<th>' . __( 'Old SKU', 'woocommerce-jetpack' ) . '</th>' .
335
  '</tr>';
336
+ $this->preview_buffer = '';
337
  $this->set_all_products_skus( $is_preview );
338
+ $preview_html .= $this->preview_buffer;
339
  $preview_html .= '</table>';
340
  $result_message = '<p><div class="updated"><p><strong>' . __( 'SKUs generated and set successfully!', 'woocommerce-jetpack' ) . '</strong></p></div></p>';
341
  }
342
+ $html = '';
343
+ $html .= '<div class="wrap">';
344
+ $html .= $this->get_tool_header_html( 'sku' );
345
+ if ( ! $is_preview ) {
346
+ $html .= $result_message;
347
+ }
348
+ $html .= '<form method="post" action="">';
349
+ $html .= '<input class="button-primary" type="submit" name="preview_sku" id="preview_sku" value="' . __( 'Preview SKUs', 'woocommerce-jetpack' ) . '">';
350
+ $html .= ' ';
351
+ $html .= '<input class="button-primary" type="submit" name="set_sku" id="set_sku" value="' . __( 'Set SKUs', 'woocommerce-jetpack' ) . '">';
352
+ $html .= '</form>';
353
+ if ( $is_preview ) {
354
+ $html .= $preview_html;
355
+ }
356
+ $html .= '</div>';
357
+ echo $html;
358
+ }
359
+
360
+ /**
361
+ * search_post_join.
362
+ *
363
+ * @version 2.9.0
364
+ * @since 2.9.0
365
+ */
366
+ function search_post_join( $join = '' ) {
367
+ global $wp_the_query;
368
+ if ( empty( $wp_the_query->query_vars['wc_query'] ) || empty( $wp_the_query->query_vars['s'] ) ) {
369
+ return $join;
370
+ }
371
+ $join .= "INNER JOIN wp_postmeta AS wcj_sku ON (wp_posts.ID = wcj_sku.post_id)";
372
+ return $join;
373
+ }
374
+
375
+ /**
376
+ * search_post_where.
377
+ *
378
+ * @version 2.9.0
379
+ * @since 2.9.0
380
+ */
381
+ function search_post_where( $where = '' ) {
382
+ global $wp_the_query;
383
+ if ( empty( $wp_the_query->query_vars['wc_query'] ) || empty( $wp_the_query->query_vars['s'] ) ) {
384
+ return $where;
385
+ }
386
+ $where = preg_replace( "/post_title LIKE ('%[^%]+%')/", "post_title LIKE $1) OR (wcj_sku.meta_key = '_sku' AND CAST(wcj_sku.meta_value AS CHAR) LIKE $1 ", $where );
387
+ return $where;
388
+ }
389
+
390
+ /*
391
+ * add_search_by_sku_to_frontend.
392
+ *
393
+ * @version 2.9.0
394
+ * @since 2.9.0
395
+ */
396
+ function add_search_by_sku_to_frontend( $query ) {
397
+ if (
398
+ isset( $query->query ) &&
399
+ ! $query->is_admin &&
400
+ $query->is_search &&
401
+ ! empty( $query->query_vars['wc_query'] ) &&
402
+ ! empty( $query->query_vars['s'] ) &&
403
+ 'product' === $query->query_vars['post_type']
404
+ ) {
405
+ add_filter( 'posts_join', array( $this, 'search_post_join' ) );
406
+ add_filter( 'posts_where', array( $this, 'search_post_where' ) );
407
+ }
408
  }
409
 
410
  }
includes/classes/class-wcj-invoice.php CHANGED
@@ -18,7 +18,7 @@ class WCJ_Invoice {
18
  /**
19
  * Constructor.
20
  */
21
- public function __construct( $order_id, $invoice_type ) {
22
  $this->order_id = $order_id;
23
  $this->invoice_type = $invoice_type;
24
  }
18
  /**
19
  * Constructor.
20
  */
21
+ function __construct( $order_id, $invoice_type ) {
22
  $this->order_id = $order_id;
23
  $this->invoice_type = $invoice_type;
24
  }
includes/classes/class-wcj-module.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce Module
4
  *
5
- * @version 2.8.0
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -213,7 +213,8 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
213
  /**
214
  * create_meta_box.
215
  *
216
- * @version 2.8.0
 
217
  */
218
  function create_meta_box() {
219
  $current_post_id = get_the_ID();
@@ -270,6 +271,9 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
270
  if ( isset( $option['custom_attributes'] ) ) {
271
  $input_ending = ' ' . $option['custom_attributes'] . $input_ending;
272
  }
 
 
 
273
  }
274
  switch ( $option['type'] ) {
275
  case 'price':
@@ -307,7 +311,7 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
307
  /**
308
  * is_enabled.
309
  */
310
- public function is_enabled() {
311
  $the_id = ( 'module' === $this->type ) ? $this->id : $this->parent_id;
312
  return ( 'yes' === get_option( 'wcj_' . $the_id . '_enabled' ) ) ? true : false;
313
  }
@@ -316,7 +320,7 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
316
  * add_enabled_option.
317
  * only for `module`
318
  *
319
- public function add_enabled_option( $settings ) {
320
  $all_settings = $this->get_settings();
321
  $settings[] = $all_settings[1];
322
  return $settings;
@@ -449,7 +453,7 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
449
  * @version 2.3.10
450
  * @since 2.3.10
451
  */
452
- public function add_module_tools_info_to_tools_dashboard() {
453
  $is_enabled_html = ( $this->is_enabled() ) ?
454
  '<span style="color:green;font-style:italic;">' . __( 'enabled', 'woocommerce-jetpack' ) . '</span>' :
455
  '<span style="color:gray;font-style:italic;">' . __( 'disabled', 'woocommerce-jetpack' ) . '</span>';
2
  /**
3
  * Booster for WooCommerce Module
4
  *
5
+ * @version 2.9.0
6
  * @since 2.2.0
7
  * @author Algoritmika Ltd.
8
  */
213
  /**
214
  * create_meta_box.
215
  *
216
+ * @version 2.9.0
217
+ * @todo placeholder for textarea
218
  */
219
  function create_meta_box() {
220
  $current_post_id = get_the_ID();
271
  if ( isset( $option['custom_attributes'] ) ) {
272
  $input_ending = ' ' . $option['custom_attributes'] . $input_ending;
273
  }
274
+ if ( isset( $option['placeholder'] ) ) {
275
+ $input_ending = ' placeholder="' . $option['placeholder'] . '"' . $input_ending;
276
+ }
277
  }
278
  switch ( $option['type'] ) {
279
  case 'price':
311
  /**
312
  * is_enabled.
313
  */
314
+ function is_enabled() {
315
  $the_id = ( 'module' === $this->type ) ? $this->id : $this->parent_id;
316
  return ( 'yes' === get_option( 'wcj_' . $the_id . '_enabled' ) ) ? true : false;
317
  }
320
  * add_enabled_option.
321
  * only for `module`
322
  *
323
+ function add_enabled_option( $settings ) {
324
  $all_settings = $this->get_settings();
325
  $settings[] = $all_settings[1];
326
  return $settings;
453
  * @version 2.3.10
454
  * @since 2.3.10
455
  */
456
+ function add_module_tools_info_to_tools_dashboard() {
457
  $is_enabled_html = ( $this->is_enabled() ) ?
458
  '<span style="color:green;font-style:italic;">' . __( 'enabled', 'woocommerce-jetpack' ) . '</span>' :
459
  '<span style="color:gray;font-style:italic;">' . __( 'disabled', 'woocommerce-jetpack' ) . '</span>';
includes/classes/class-wcj-pdf-invoice.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce PDF Invoice
4
  *
5
- * @version 2.8.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -15,118 +15,18 @@ class WCJ_PDF_Invoice extends WCJ_Invoice {
15
  /**
16
  * Constructor.
17
  */
18
- public function __construct( $order_id, $invoice_type ) {
19
  parent::__construct( $order_id, $invoice_type );
20
  }
21
 
22
- /**
23
- * check_tcpdf_fonts.
24
- *
25
- * @version 2.7.0
26
- * @since 2.7.0
27
- * @todo use function - search for `check_tcpdf_fonts`
28
- * @todo optional "do not download" (then default fonts directory with basic fonts)
29
- * @todo check file size > 0 (not only if file exists in directory)
30
- * @todo check if it works ok with https://booster.io
31
- * @todo use `download_url()` instead of `file_get_contents()` or `curl` (in all Booster files)
32
- */
33
- /* function check_tcpdf_fonts() {
34
- $tcpdf_fonts_dir = wcj_get_wcj_uploads_dir( 'tcpdf_fonts' ) . '/';
35
- if ( ! file_exists( $tcpdf_fonts_dir ) ) {
36
- mkdir( $tcpdf_fonts_dir );
37
- }
38
- $tcpdf_fonts_dir_files = scandir( $tcpdf_fonts_dir );
39
- $tcpdf_fonts_files = array(
40
- 'angsanaupc.ctg.z',
41
- 'angsanaupc.php',
42
- 'angsanaupc.z',
43
- 'angsanaupcb.ctg.z',
44
- 'angsanaupcb.php',
45
- 'angsanaupcb.z',
46
- 'angsanaupcbi.ctg.z',
47
- 'angsanaupcbi.php',
48
- 'angsanaupcbi.z',
49
- 'angsanaupci.ctg.z',
50
- 'angsanaupci.php',
51
- 'angsanaupci.z',
52
- 'cordiaupc.ctg.z',
53
- 'cordiaupc.php',
54
- 'cordiaupc.z',
55
- 'cordiaupcb.ctg.z',
56
- 'cordiaupcb.php',
57
- 'cordiaupcb.z',
58
- 'cordiaupcbi.ctg.z',
59
- 'cordiaupcbi.php',
60
- 'cordiaupcbi.z',
61
- 'cordiaupci.ctg.z',
62
- 'cordiaupci.php',
63
- 'cordiaupci.z',
64
- 'courier.php',
65
- 'courierb.php',
66
- 'courierbi.php',
67
- 'courieri.php',
68
- 'dejavusans.ctg.z',
69
- 'dejavusans.php',
70
- 'dejavusans.z',
71
- 'dejavusansb.ctg.z',
72
- 'dejavusansb.php',
73
- 'dejavusansb.z',
74
- 'dejavusansbi.ctg.z',
75
- 'dejavusansbi.php',
76
- 'dejavusansbi.z',
77
- 'droidsansfallback.ctg.z',
78
- 'droidsansfallback.php',
79
- 'droidsansfallback.z',
80
- 'helvetica.php',
81
- 'helveticab.php',
82
- 'helveticabi.php',
83
- 'helveticai.php',
84
- 'symbol.php',
85
- 'thsarabun.ctg.z',
86
- 'thsarabun.php',
87
- 'thsarabun.z',
88
- 'thsarabunb.ctg.z',
89
- 'thsarabunb.php',
90
- 'thsarabunb.z',
91
- 'thsarabunbi.ctg.z',
92
- 'thsarabunbi.php',
93
- 'thsarabunbi.z',
94
- 'thsarabuni.ctg.z',
95
- 'thsarabuni.php',
96
- 'thsarabuni.z',
97
- 'times.php',
98
- 'timesb.php',
99
- 'timesbi.php',
100
- 'timesi.php',
101
- 'zapfdingbats.php',
102
- );
103
- require_once( ABSPATH . 'wp-admin/includes/file.php' );
104
- foreach ( $tcpdf_fonts_files as $tcpdf_fonts_file ) {
105
- if ( ! in_array( $tcpdf_fonts_file, $tcpdf_fonts_dir_files ) ) {
106
- $url = 'http://booster.io/tcpdf_fonts/' . $tcpdf_fonts_file;
107
- if ( '.php' === substr( $tcpdf_fonts_file, -4 ) ) {
108
- $url .= '.data';
109
- }
110
- $response_file_name = download_url( $url );
111
- if ( ! is_wp_error( $response_file_name ) ) {
112
- $response = file_get_contents( $response_file_name );
113
- if ( $response ) {
114
- file_put_contents( $tcpdf_fonts_dir . $tcpdf_fonts_file, $response );
115
- }
116
- unlink( $response_file_name );
117
- }
118
- }
119
- }
120
- } */
121
-
122
  /**
123
  * prepare_pdf.
124
  *
125
- * @version 2.5.2
126
  */
127
  function prepare_pdf() {
128
 
129
- // $this->check_tcpdf_fonts();
130
 
131
  $invoice_type = $this->invoice_type;
132
 
@@ -188,9 +88,11 @@ class WCJ_PDF_Invoice extends WCJ_Invoice {
188
  $pdf->SetPrintFooter( false );
189
  }
190
 
 
 
191
  // Set Header and Footer fonts
192
- $pdf->setHeaderFont( Array( /* PDF_FONT_NAME_MAIN */get_option( 'wcj_invoicing_' . $invoice_type . '_general_font_family', 'dejavusans' ), '', PDF_FONT_SIZE_MAIN ) );
193
- $pdf->setFooterFont( Array( /* PDF_FONT_NAME_DATA */get_option( 'wcj_invoicing_' . $invoice_type . '_general_font_family', 'dejavusans' ), '', PDF_FONT_SIZE_DATA ) );
194
 
195
  // Set default monospaced font
196
  $pdf->SetDefaultMonospacedFont( PDF_FONT_MONOSPACED );
@@ -220,16 +122,10 @@ class WCJ_PDF_Invoice extends WCJ_Invoice {
220
  $pdf->setFontSubsetting( true );
221
 
222
  // Set font
223
- /* if ( 'DroidSansFallback' === apply_filters( 'booster_get_option', 'dejavusans', get_option( 'wcj_invoicing_' . $invoice_type . '_general_font_family', 'dejavusans' ) ) ) {
224
  $pdf->addTTFfont( wcj_plugin_path() . '/includes/lib/tcpdf_min/fonts/' . 'DroidSansFallback.ttf' );
225
  } */
226
- // dejavusans is a UTF-8 Unicode font, if you only need to print standard ASCII chars, you can use core fonts like helvetica or times to reduce file size.
227
- $pdf->SetFont(
228
- apply_filters( 'booster_get_option', 'dejavusans', get_option( 'wcj_invoicing_' . $invoice_type . '_general_font_family', 'dejavusans' ) ),
229
- '',
230
- apply_filters( 'booster_get_option', 8, get_option( 'wcj_invoicing_' . $invoice_type . '_general_font_size', 8 ) ),
231
- '',
232
- true );
233
 
234
  // Add a page
235
  $pdf->AddPage();
2
  /**
3
  * Booster for WooCommerce PDF Invoice
4
  *
5
+ * @version 2.9.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
15
  /**
16
  * Constructor.
17
  */
18
+ function __construct( $order_id, $invoice_type ) {
19
  parent::__construct( $order_id, $invoice_type );
20
  }
21
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  /**
23
  * prepare_pdf.
24
  *
25
+ * @version 2.9.0
26
  */
27
  function prepare_pdf() {
28
 
29
+ wcj_check_and_maybe_download_tcpdf_fonts();
30
 
31
  $invoice_type = $this->invoice_type;
32
 
88
  $pdf->SetPrintFooter( false );
89
  }
90
 
91
+ $tcpdf_font = wcj_get_tcpdf_font( $invoice_type );
92
+
93
  // Set Header and Footer fonts
94
+ $pdf->setHeaderFont( Array( /* PDF_FONT_NAME_MAIN */ $tcpdf_font, '', PDF_FONT_SIZE_MAIN ) );
95
+ $pdf->setFooterFont( Array( /* PDF_FONT_NAME_DATA */ $tcpdf_font, '', PDF_FONT_SIZE_DATA ) );
96
 
97
  // Set default monospaced font
98
  $pdf->SetDefaultMonospacedFont( PDF_FONT_MONOSPACED );
122
  $pdf->setFontSubsetting( true );
123
 
124
  // Set font
125
+ /* if ( 'DroidSansFallback' === $tcpdf_font ) {
126
  $pdf->addTTFfont( wcj_plugin_path() . '/includes/lib/tcpdf_min/fonts/' . 'DroidSansFallback.ttf' );
127
  } */
128
+ $pdf->SetFont( $tcpdf_font, '', get_option( 'wcj_invoicing_' . $invoice_type . '_general_font_size', 8 ), '', true );
 
 
 
 
 
 
129
 
130
  // Add a page
131
  $pdf->AddPage();
includes/classes/class-wcj-product.php CHANGED
@@ -19,7 +19,7 @@ class WCJ_Product {
19
  /**
20
  * Constructor.
21
  */
22
- public function __construct( $product_id ) {
23
  $this->id = $product_id;
24
  // $this->product = wc_get_product( $this->id );
25
  }
@@ -29,7 +29,7 @@ class WCJ_Product {
29
  *
30
  * @version 2.4.8
31
  */
32
- public function get_purchase_price() {
33
  $purchase_price = 0;
34
  if ( 'yes' === get_option( 'wcj_purchase_price_enabled', 'yes' ) ) {
35
  $purchase_price += get_post_meta( $this->id, '_' . 'wcj_purchase_price' , true );
19
  /**
20
  * Constructor.
21
  */
22
+ function __construct( $product_id ) {
23
  $this->id = $product_id;
24
  // $this->product = wc_get_product( $this->id );
25
  }
29
  *
30
  * @version 2.4.8
31
  */
32
+ function get_purchase_price() {
33
  $purchase_price = 0;
34
  if ( 'yes' === get_option( 'wcj_purchase_price_enabled', 'yes' ) ) {
35
  $purchase_price += get_post_meta( $this->id, '_' . 'wcj_purchase_price' , true );
includes/classes/class-wcj-scripts.php ADDED
@@ -0,0 +1,151 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Scripts
4
+ *
5
+ * @version 2.9.0
6
+ * @since 2.9.0
7
+ * @author Algoritmika Ltd.
8
+ * @todo move this class to another directory
9
+ */
10
+
11
+ if ( ! defined( 'ABSPATH' ) ) exit;
12
+
13
+ if ( ! class_exists( 'WCJ_Scripts' ) ) :
14
+
15
+ class WCJ_Scripts {
16
+
17
+ /**
18
+ * Constructor.
19
+ *
20
+ * @version 2.9.0
21
+ * @since 2.9.0
22
+ */
23
+ function __construct() {
24
+ // Scripts - Admin
25
+ if ( is_admin() ) {
26
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_wcj_backend_scripts' ) );
27
+ if (
28
+ wcj_is_module_enabled( 'purchase_data' ) ||
29
+ wcj_is_module_enabled( 'pdf_invoicing' ) ||
30
+ wcj_is_module_enabled( 'crowdfunding' ) ||
31
+ wcj_is_module_enabled( 'reports' )
32
+ ) {
33
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_backend_scripts' ) );
34
+ }
35
+ }
36
+ // Scripts - Frontend
37
+ if (
38
+ wcj_is_module_enabled( 'product_input_fields' ) ||
39
+ wcj_is_module_enabled( 'checkout_custom_fields' ) ||
40
+ wcj_is_module_enabled( 'product_bookings' )
41
+ ){
42
+ add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_frontend_scripts' ) );
43
+ }
44
+ }
45
+
46
+ /**
47
+ * enqueue_wcj_backend_scripts.
48
+ *
49
+ * @version 2.5.3
50
+ * @since 2.5.3
51
+ */
52
+ function enqueue_wcj_backend_scripts() {
53
+ wp_enqueue_style( 'wcj-admin', wcj_plugin_url() . '/includes/css/wcj-admin.css' );
54
+ }
55
+
56
+ /**
57
+ * enqueue_backend_scripts.
58
+ *
59
+ * @version 2.4.0
60
+ */
61
+ function enqueue_backend_scripts() {
62
+ $this->maybe_enqueue_datepicker_scripts();
63
+ $this->maybe_enqueue_datepicker_style();
64
+ }
65
+
66
+ /**
67
+ * enqueue_frontend_scripts.
68
+ *
69
+ * @version 2.4.0
70
+ * @since 2.3.0
71
+ */
72
+ function enqueue_frontend_scripts() {
73
+ $this->maybe_enqueue_datepicker_scripts();
74
+ $this->maybe_enqueue_timepicker_scripts();
75
+ $this->maybe_enqueue_datepicker_style();
76
+ $this->maybe_enqueue_timepicker_style();
77
+ }
78
+
79
+ /**
80
+ * maybe_enqueue_datepicker_scripts.
81
+ *
82
+ * @version 2.9.0
83
+ * @since 2.4.0
84
+ */
85
+ function maybe_enqueue_datepicker_scripts() {
86
+ if ( ! wcj_is_module_enabled( 'general' ) || ( wcj_is_module_enabled( 'general' ) && 'no' === get_option( 'wcj_general_advanced_disable_datepicker_js', 'no' ) ) ) {
87
+ wp_enqueue_script( 'jquery-ui-datepicker' );
88
+ wp_enqueue_script( 'wcj-datepicker', wcj_plugin_url() . '/includes/js/wcj-datepicker.js',
89
+ array( 'jquery' ),
90
+ WCJ()->version,
91
+ true );
92
+ wp_enqueue_script( 'wcj-weekpicker', wcj_plugin_url() . '/includes/js/wcj-weekpicker.js',
93
+ array( 'jquery' ),
94
+ WCJ()->version,
95
+ true );
96
+ }
97
+ }
98
+
99
+ /**
100
+ * maybe_enqueue_timepicker_scripts.
101
+ *
102
+ * @version 2.9.0
103
+ * @since 2.4.0
104
+ */
105
+ function maybe_enqueue_timepicker_scripts() {
106
+ if ( ! wcj_is_module_enabled( 'general' ) || ( wcj_is_module_enabled( 'general' ) && 'no' === get_option( 'wcj_general_advanced_disable_timepicker_js', 'no' ) ) ) {
107
+ wp_enqueue_script( 'jquery-ui-timepicker',
108
+ wcj_plugin_url() . '/includes/lib/timepicker/jquery.timepicker.min.js',
109
+ array( 'jquery' ),
110
+ WCJ()->version,
111
+ true );
112
+ wp_enqueue_script( 'wcj-timepicker', wcj_plugin_url() . '/includes/js/wcj-timepicker.js',
113
+ array( 'jquery' ),
114
+ WCJ()->version,
115
+ true );
116
+ }
117
+ }
118
+
119
+ /**
120
+ * maybe_enqueue_datepicker_style.
121
+ *
122
+ * @version 2.9.0
123
+ * @since 2.4.0
124
+ */
125
+ function maybe_enqueue_datepicker_style() {
126
+ if ( ! wcj_is_module_enabled( 'general' ) || ( wcj_is_module_enabled( 'general' ) && 'no' === get_option( 'wcj_general_advanced_disable_datepicker_css', 'no' ) ) ) {
127
+ $datepicker_css_path = '//ajax.googleapis.com/ajax/libs/jqueryui/1.9.0/themes/base/jquery-ui.css';
128
+ if ( wcj_is_module_enabled( 'general' ) ) {
129
+ $datepicker_css_path = get_option( 'wcj_general_advanced_datepicker_css', $datepicker_css_path );
130
+ }
131
+ wp_enqueue_style( 'jquery-ui-style', $datepicker_css_path );
132
+ }
133
+ }
134
+
135
+ /**
136
+ * maybe_enqueue_timepicker_style.
137
+ *
138
+ * @version 2.9.0
139
+ * @since 2.4.0
140
+ */
141
+ function maybe_enqueue_timepicker_style() {
142
+ if ( ! wcj_is_module_enabled( 'general' ) || ( wcj_is_module_enabled( 'general' ) && 'no' === get_option( 'wcj_general_advanced_disable_timepicker_css', 'no' ) ) ) {
143
+ wp_enqueue_style( 'wcj-timepicker-style', wcj_plugin_url() . '/includes/lib/timepicker/jquery.timepicker.min.css', array(), WCJ()->version );
144
+ }
145
+ }
146
+
147
+ }
148
+
149
+ endif;
150
+
151
+ return new WCJ_Scripts();
includes/classes/class-wcj-tcpdf.php CHANGED
@@ -2,8 +2,9 @@
2
  /**
3
  * Booster for WooCommerce TCPDF
4
  *
5
- * @version 2.3.0
6
  * @author Algoritmika Ltd.
 
7
  */
8
 
9
  if ( ! defined( 'ABSPATH' ) ) exit;
@@ -14,48 +15,32 @@ if ( ! class_exists( 'WCJ_TCPDF' ) ) :
14
  require_once( wcj_plugin_path() . '/includes/lib/tcpdf_min/tcpdf.php' );
15
 
16
  class WCJ_TCPDF extends TCPDF {
17
-
18
  /**
19
  * set_invoice_type.
20
  */
21
- public function set_invoice_type( $invoice_type ) {
22
  $this->invoice_type = $invoice_type;
23
  }
24
 
25
- /**
26
- * Page header.
27
- *
28
- public function Header() {
29
- // Logo
30
- $image_file = K_PATH_IMAGES.'logo_example.jpg';
31
- $this->Image($image_file, 10, 10, 15, '', 'JPG', '', 'T', false, 300, '', false, false, 0, false, false, false);
32
- // Set font
33
- $this->SetFont('helvetica', 'B', 20);
34
- // Title
35
- $this->Cell(0, 15, '<< TCPDF Example 003 >>', 0, false, 'C', 0, '', 0, false, 'M', 'M');
36
- }
37
-
38
  /**
39
  * Page footer.
 
 
 
40
  */
41
- public function Footer() {
42
- // Position at 15 mm from bottom
43
- //$this->SetY(-15);
44
- // Set font
45
- //$this->SetFont('helvetica', 'I', 8);
46
-
47
  $invoice_type = $this->invoice_type;
48
- $footer_text = apply_filters( 'booster_get_option', 'Page %page_number% / %total_pages%', get_option( 'wcj_invoicing_' . $invoice_type . '_footer_text' ) );
49
- //$this->Cell( 0, 0, do_shortcode( $footer_text ), 0, false, 'L', 0, '', 0, false, 'T', 'M' );
50
  $footer_text = str_replace( '%page_number%', $this->getAliasNumPage(), $footer_text );
51
  $footer_text = str_replace( '%total_pages%', $this->getAliasNbPages(), $footer_text );
52
  $border_desc = array(
53
  'T' => array(
54
- 'color' => wcj_hex2rgb( get_option( 'wcj_invoicing_' . $invoice_type . '_footer_line_color' ) ),
55
  'width' => 0,
56
  ),
57
  );
58
- $footer_text_color_rgb = wcj_hex2rgb( get_option( 'wcj_invoicing_' . $invoice_type . '_footer_text_color' ) );
59
  $this->SetTextColor( $footer_text_color_rgb[0], $footer_text_color_rgb[1], $footer_text_color_rgb[2] );
60
  $this->writeHTMLCell( 0, 0, '', '', do_shortcode( $footer_text ), $border_desc, 1, 0, true, '', true );
61
  }
2
  /**
3
  * Booster for WooCommerce TCPDF
4
  *
5
+ * @version 2.9.0
6
  * @author Algoritmika Ltd.
7
+ * @todo (maybe) `Header()`
8
  */
9
 
10
  if ( ! defined( 'ABSPATH' ) ) exit;
15
  require_once( wcj_plugin_path() . '/includes/lib/tcpdf_min/tcpdf.php' );
16
 
17
  class WCJ_TCPDF extends TCPDF {
18
+
19
  /**
20
  * set_invoice_type.
21
  */
22
+ function set_invoice_type( $invoice_type ) {
23
  $this->invoice_type = $invoice_type;
24
  }
25
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  /**
27
  * Page footer.
28
+ *
29
+ * @version 2.9.0
30
+ * @todo (maybe) e.g. "Set font" - `$this->SetFont( 'helvetica', 'I', 8 );`
31
  */
32
+ function Footer() {
 
 
 
 
 
33
  $invoice_type = $this->invoice_type;
34
+ $footer_text = get_option( 'wcj_invoicing_' . $invoice_type . '_footer_text', __( 'Page %page_number% / %total_pages%', 'woocommerce-jetpack' ) );
 
35
  $footer_text = str_replace( '%page_number%', $this->getAliasNumPage(), $footer_text );
36
  $footer_text = str_replace( '%total_pages%', $this->getAliasNbPages(), $footer_text );
37
  $border_desc = array(
38
  'T' => array(
39
+ 'color' => wcj_hex2rgb( get_option( 'wcj_invoicing_' . $invoice_type . '_footer_line_color', '#cccccc' ) ),
40
  'width' => 0,
41
  ),
42
  );
43
+ $footer_text_color_rgb = wcj_hex2rgb( get_option( 'wcj_invoicing_' . $invoice_type . '_footer_text_color', '#cccccc' ) );
44
  $this->SetTextColor( $footer_text_color_rgb[0], $footer_text_color_rgb[1], $footer_text_color_rgb[2] );
45
  $this->writeHTMLCell( 0, 0, '', '', do_shortcode( $footer_text ), $border_desc, 1, 0, true, '', true );
46
  }
includes/css/wcj-offer-price.css ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * wcj-offer-price.
3
+ *
4
+ * @version 2.9.0
5
+ * @since 2.9.0
6
+ */
7
+
8
+ /* The Modal (background) */
9
+ .wcj-offer-price-modal {
10
+ display: none; /* Hidden by default */
11
+ position: fixed; /* Stay in place */
12
+ z-index: 999999; /* Sit on top */
13
+ padding-top: 100px; /* Location of the box */
14
+ left: 0;
15
+ top: 0;
16
+ width: 100%; /* Full width */
17
+ height: 100%; /* Full height */
18
+ overflow: auto; /* Enable scroll if needed */
19
+ background-color: rgb(0,0,0); /* Fallback color */
20
+ background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
21
+ }
22
+
23
+ /* Modal Content */
24
+ .wcj-offer-price-modal-content {
25
+ position: relative;
26
+ background-color: #fefefe;
27
+ margin: auto;
28
+ padding: 0;
29
+ border: 1px solid #888;
30
+ width: 80%;
31
+ box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19);
32
+ -webkit-animation-name: animatetop;
33
+ -webkit-animation-duration: 0.4s;
34
+ animation-name: animatetop;
35
+ animation-duration: 0.4s
36
+ }
37
+
38
+ /* Form */
39
+ #wcj-offer-price-form {
40
+ padding-top: 20px;
41
+ }
42
+
43
+ /* Add Animation */
44
+ @-webkit-keyframes animatetop {
45
+ from {top:-300px; opacity:0}
46
+ to {top:0; opacity:1}
47
+ }
48
+
49
+ @keyframes animatetop {
50
+ from {top:-300px; opacity:0}
51
+ to {top:0; opacity:1}
52
+ }
53
+
54
+ /* The Close Button */
55
+ .wcj-offer-price-form-close {
56
+ color: white;
57
+ float: right;
58
+ font-size: 28px;
59
+ font-weight: bold;
60
+ }
61
+
62
+ .wcj-offer-price-form-close:hover,
63
+ .wcj-offer-price-form-close:focus {
64
+ color: #000;
65
+ text-decoration: none;
66
+ cursor: pointer;
67
+ }
68
+
69
+ .wcj-offer-modal-header {
70
+ padding: 2px 16px;
71
+ background-color: #5cb85c;
72
+ color: white;
73
+ }
74
+
75
+ .wcj-offer-price-modal-body {padding: 2px 16px;}
76
+
77
+ .wcj-offer-price-modal-footer {
78
+ padding: 2px 16px;
79
+ background-color: #5cb85c;
80
+ color: white;
81
+ }
includes/emails/class-wc-email-wcj-custom.php CHANGED
@@ -71,7 +71,7 @@ class WC_Email_WCJ_Custom extends WC_Email {
71
  * @since 2.5.6
72
  * @return string
73
  */
74
- public function validate_custom_textarea_field( $key, $value ) {
75
  $value = is_null( $value ) ? '' : $value;
76
  /* return wp_kses( trim( stripslashes( $value ) ),
77
  array_merge(
@@ -93,7 +93,7 @@ class WC_Email_WCJ_Custom extends WC_Email {
93
  * @since 2.5.6
94
  * @return string
95
  */
96
- public function generate_custom_textarea_html( $key, $data ) {
97
  return $this->generate_textarea_html( $key, $data );
98
  }
99
 
@@ -106,7 +106,7 @@ class WC_Email_WCJ_Custom extends WC_Email {
106
  * @param mixed $empty_value
107
  * @return mixed
108
  */
109
- public function get_option( $key, $empty_value = null ) {
110
  $grandparent = get_parent_class( 'WC_Email' );
111
  $value = $grandparent::get_option( $key, $empty_value );
112
  return ( is_array( $value ) ) ? $value : apply_filters( 'woocommerce_email_get_option', __( $value ), $this, $value, $key, $empty_value );
71
  * @since 2.5.6
72
  * @return string
73
  */
74
+ function validate_custom_textarea_field( $key, $value ) {
75
  $value = is_null( $value ) ? '' : $value;
76
  /* return wp_kses( trim( stripslashes( $value ) ),
77
  array_merge(
93
  * @since 2.5.6
94
  * @return string
95
  */
96
+ function generate_custom_textarea_html( $key, $data ) {
97
  return $this->generate_textarea_html( $key, $data );
98
  }
99
 
106
  * @param mixed $empty_value
107
  * @return mixed
108
  */
109
+ function get_option( $key, $empty_value = null ) {
110
  $grandparent = get_parent_class( 'WC_Email' );
111
  $value = $grandparent::get_option( $key, $empty_value );
112
  return ( is_array( $value ) ) ? $value : apply_filters( 'woocommerce_email_get_option', __( $value ), $this, $value, $key, $empty_value );
includes/exchange-rates/class-wcj-exchange-rates-crons.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce Exchange Rates Crons
4
  *
5
- * @version 2.7.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -17,7 +17,7 @@ class WCJ_Exchange_Rates_Crons {
17
  *
18
  * @version 2.7.0
19
  */
20
- public function __construct() {
21
  $this->update_intervals = array(
22
  'minutely' => __( 'Update Every Minute', 'woocommerce-jetpack' ),
23
  'hourly' => __( 'Update Hourly', 'woocommerce-jetpack' ),
@@ -77,7 +77,8 @@ class WCJ_Exchange_Rates_Crons {
77
  /**
78
  * On the scheduled action hook, run a function.
79
  *
80
- * @version 2.7.0
 
81
  */
82
  function update_the_exchange_rates( $interval ) {
83
 
@@ -137,12 +138,29 @@ class WCJ_Exchange_Rates_Crons {
137
  }
138
  }
139
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
140
  // Currency Pairs - Final
141
  $rate_offset_percent = get_option( 'wcj_currency_exchange_rates_offset_percent', 0 );
142
  if ( 0 != $rate_offset_percent ) {
143
  $rate_offset_percent = 1 + ( $rate_offset_percent / 100 );
144
  }
145
  $rate_offset_fixed = get_option( 'wcj_currency_exchange_rates_offset_fixed', 0 );
 
 
 
146
  foreach ( $currency_pairs as $currency_pair ) {
147
  $currency_from = $currency_pair['currency_from'];
148
  $currency_to = $currency_pair['currency_to'];
@@ -154,9 +172,14 @@ class WCJ_Exchange_Rates_Crons {
154
  if ( 0 != $rate_offset_fixed ) {
155
  $the_rate = $the_rate + $rate_offset_fixed;
156
  }
 
 
 
157
  if ( $currency_from != $currency_to ) {
158
  foreach ( $currency_pair['option_name'] as $option_name ) {
159
- update_option( $option_name, $the_rate );
 
 
160
  }
161
  $field_id = 'wcj_currency_exchange_rates_' . sanitize_title( $currency_from . $currency_to );
162
  update_option( $field_id, $the_rate );
2
  /**
3
  * Booster for WooCommerce Exchange Rates Crons
4
  *
5
+ * @version 2.9.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
17
  *
18
  * @version 2.7.0
19
  */
20
+ function __construct() {
21
  $this->update_intervals = array(
22
  'minutely' => __( 'Update Every Minute', 'woocommerce-jetpack' ),
23
  'hourly' => __( 'Update Hourly', 'woocommerce-jetpack' ),
77
  /**
78
  * On the scheduled action hook, run a function.
79
  *
80
+ * @version 2.9.0
81
+ * @todo get currency pairs from "Currency Exchange Rates" module (see `get_all_currencies_exchange_rates_currencies()`)
82
  */
83
  function update_the_exchange_rates( $interval ) {
84
 
138
  }
139
  }
140
 
141
+ // Additional currencies (via filter)
142
+ $additional_currencies = apply_filters( 'wcj_currency_exchange_rates_additional_currencies', array() );
143
+ foreach ( $additional_currencies as $additional_currency ) {
144
+ $currency_pairs = $this->get_currency_pair( $currency_pairs, $additional_currency, false );
145
+ }
146
+
147
+ // Additional currencies (via custom currencies section)
148
+ $total_number = apply_filters( 'booster_get_option', 1, get_option( 'wcj_currency_exchange_custom_currencies_total_number', 1 ) );
149
+ for ( $i = 1; $i <= $total_number; $i++ ) {
150
+ if ( 'disabled' != ( $additional_currency = get_option( 'wcj_currency_exchange_custom_currencies_' . $i, 'disabled' ) ) ) {
151
+ $currency_pairs = $this->get_currency_pair( $currency_pairs, $additional_currency, false );
152
+ }
153
+ }
154
+
155
  // Currency Pairs - Final
156
  $rate_offset_percent = get_option( 'wcj_currency_exchange_rates_offset_percent', 0 );
157
  if ( 0 != $rate_offset_percent ) {
158
  $rate_offset_percent = 1 + ( $rate_offset_percent / 100 );
159
  }
160
  $rate_offset_fixed = get_option( 'wcj_currency_exchange_rates_offset_fixed', 0 );
161
+ if ( $rate_rounding_enabled = ( 'yes' === get_option( 'wcj_currency_exchange_rates_rounding_enabled', 'no' ) ) ) {
162
+ $rate_rounding_precision = get_option( 'wcj_currency_exchange_rates_rounding_precision', 0 );
163
+ }
164
  foreach ( $currency_pairs as $currency_pair ) {
165
  $currency_from = $currency_pair['currency_from'];
166
  $currency_to = $currency_pair['currency_to'];
172
  if ( 0 != $rate_offset_fixed ) {
173
  $the_rate = $the_rate + $rate_offset_fixed;
174
  }
175
+ if ( $rate_rounding_enabled ) {
176
+ $the_rate = round( $the_rate, $rate_rounding_precision );
177
+ }
178
  if ( $currency_from != $currency_to ) {
179
  foreach ( $currency_pair['option_name'] as $option_name ) {
180
+ if ( false != $option_name ) {
181
+ update_option( $option_name, $the_rate );
182
+ }
183
  }
184
  $field_id = 'wcj_currency_exchange_rates_' . sanitize_title( $currency_from . $currency_to );
185
  update_option( $field_id, $the_rate );
includes/exchange-rates/class-wcj-exchange-rates.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce Exchange Rates
4
  *
5
- * @version 2.6.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -15,7 +15,7 @@ class WCJ_Exchange_Rates {
15
  /**
16
  * Constructor.
17
  */
18
- public function __construct() {
19
 
20
  add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_exchange_rates_script' ) );
21
  add_action( 'admin_init', array( $this, 'register_script' ) );
@@ -26,9 +26,9 @@ class WCJ_Exchange_Rates {
26
  /**
27
  * register_script.
28
  *
29
- * @version 2.6.0
30
  */
31
- public function register_script() {
32
  if (
33
  isset( $_GET['section'] ) &&
34
  in_array( $_GET['section'], array(
@@ -40,7 +40,7 @@ class WCJ_Exchange_Rates {
40
  'currency_exchange_rates',
41
  ) )
42
  ) {
43
- wp_register_script( 'wcj-exchange-rates-ajax', trailingslashit( WCJ()->plugin_url() ) . 'includes/js/ajax_exchange_rates.js', array( 'jquery' ), WCJ()->version, true );
44
  wp_localize_script( 'wcj-exchange-rates-ajax', 'ajax_object', array(
45
  'ajax_url' => admin_url( 'admin-ajax.php' ),
46
  ) );
@@ -52,7 +52,7 @@ class WCJ_Exchange_Rates {
52
  *
53
  * @version 2.6.0
54
  */
55
- public function enqueue_exchange_rates_script() {
56
  if (
57
  isset( $_GET['section'] ) &&
58
  in_array( $_GET['section'], array(
2
  /**
3
  * Booster for WooCommerce Exchange Rates
4
  *
5
+ * @version 2.9.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
15
  /**
16
  * Constructor.
17
  */
18
+ function __construct() {
19
 
20
  add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_exchange_rates_script' ) );
21
  add_action( 'admin_init', array( $this, 'register_script' ) );
26
  /**
27
  * register_script.
28
  *
29
+ * @version 2.9.0
30
  */
31
+ function register_script() {
32
  if (
33
  isset( $_GET['section'] ) &&
34
  in_array( $_GET['section'], array(
40
  'currency_exchange_rates',
41
  ) )
42
  ) {
43
+ wp_register_script( 'wcj-exchange-rates-ajax', trailingslashit( wcj_plugin_url() ) . 'includes/js/wcj-ajax-exchange-rates.js', array( 'jquery' ), WCJ()->version, true );
44
  wp_localize_script( 'wcj-exchange-rates-ajax', 'ajax_object', array(
45
  'ajax_url' => admin_url( 'admin-ajax.php' ),
46
  ) );
52
  *
53
  * @version 2.6.0
54
  */
55
+ function enqueue_exchange_rates_script() {
56
  if (
57
  isset( $_GET['section'] ) &&
58
  in_array( $_GET['section'], array(
includes/functions/wcj-admin-functions.php ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Functions - Admin
4
+ *
5
+ * @version 2.9.0
6
+ * @since 2.9.0
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit;
11
+
12
+ if ( ! function_exists( 'wcj_message_replaced_values' ) ) {
13
+ /**
14
+ * wcj_message_replaced_values.
15
+ *
16
+ * @version 2.9.0
17
+ * @since 2.9.0
18
+ * @todo use this function in all applicable settings descriptions
19
+ */
20
+ function wcj_message_replaced_values( $values ) {
21
+ $message_template = ( 1 == count( $values ) ? __( 'Replaced value: %s', 'woocommerce-jetpack' ) : __( 'Replaced values: %s', 'woocommerce-jetpack' ) );
22
+ return sprintf( $message_template, '<code>' . implode( '</code>, <code>', $values ) . '</code>' );
23
+ }
24
+ }
25
+
26
+ if ( ! function_exists( 'wcj_get_5_rocket_image' ) ) {
27
+ /**
28
+ * wcj_get_5_rocket_image.
29
+ *
30
+ * @version 2.5.5
31
+ * @since 2.5.3
32
+ */
33
+ function wcj_get_5_rocket_image() {
34
+ return '<img class="wcj-rocket-icon" src="' . wcj_plugin_url() . '/assets/images/5-rockets.png' . '" title="">';
35
+ }
36
+ }
37
+
38
+ if ( ! function_exists( 'wcj_get_plus_message' ) ) {
39
+ /**
40
+ * wcj_get_plus_message.
41
+ *
42
+ * @version 2.9.0
43
+ */
44
+ function wcj_get_plus_message( $value, $message_type, $args = array() ) {
45
+
46
+ switch ( $message_type ) {
47
+
48
+ case 'global':
49
+ return '<div class="updated">
50
+ <p class="main"><strong>' . __( 'Install Booster Plus to unlock all features', 'woocommerce-jetpack' ) . '</strong></p>
51
+ <span>' . sprintf( __( 'Some settings fields are locked and you will need %s to modify all locked fields.', 'woocommerce-jetpack'), '<a href="https://booster.io/plus/" target="_blank">Booster for WooCommerce Plus</a>' ) . '</span>
52
+ <p><a href="https://booster.io/plus/" target="_blank" class="button button-primary">' . __( 'Buy now', 'woocommerce-jetpack' ) . '</a> <a href="https://booster.io" target="_blank" class="button">'. __( 'Visit Booster Site', 'woocommerce-jetpack' ) . '</a></p>
53
+ </div>';
54
+
55
+ case 'desc':
56
+ return sprintf( __( 'Get <a href="%s" target="_blank">Booster Plus</a> to change value.', 'woocommerce-jetpack' ), 'https://booster.io/plus/' );
57
+
58
+ case 'desc_advanced':
59
+ return sprintf( __( 'Get <a href="%s" target="_blank">Booster Plus</a> to enable "%s" option.', 'woocommerce-jetpack' ), 'https://booster.io/plus/', $args['option'] );
60
+
61
+ case 'desc_advanced_no_link':
62
+ return sprintf( __( 'Get Booster Plus to enable "%s" option.', 'woocommerce-jetpack' ), $args['option'] );
63
+
64
+ case 'desc_below':
65
+ return sprintf( __( 'Get <a href="%s" target="_blank">Booster Plus</a> to change values below.', 'woocommerce-jetpack' ), 'https://booster.io/plus/' );
66
+
67
+ case 'desc_above':
68
+ return sprintf( __( 'Get <a href="%s" target="_blank">Booster Plus</a> to change values above.', 'woocommerce-jetpack' ), 'https://booster.io/plus/' );
69
+
70
+ case 'desc_no_link':
71
+ return __( 'Get Booster Plus to change value.', 'woocommerce-jetpack' );
72
+
73
+ case 'readonly':
74
+ return array( 'readonly' => 'readonly' );
75
+
76
+ case 'disabled':
77
+ return array( 'disabled' => 'disabled' );
78
+
79
+ case 'readonly_string':
80
+ return 'readonly';
81
+
82
+ case 'disabled_string':
83
+ return 'disabled';
84
+ }
85
+
86
+ return $value;
87
+ }
88
+ }
includes/functions/wcj-core-functions.php ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Functions - Core
4
+ *
5
+ * @version 2.9.0
6
+ * @since 2.9.0
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit;
11
+
12
+ if ( ! function_exists( 'wcj_plugin_url' ) ) {
13
+ /**
14
+ * wcj_plugin_url.
15
+ *
16
+ * @version 2.3.0
17
+ */
18
+ function wcj_plugin_url() {
19
+ return untrailingslashit( plugin_dir_url( realpath( dirname( __FILE__ ) . '/..' ) ) );
20
+ }
21
+ }
22
+
23
+ if ( ! function_exists( 'wcj_plugin_path' ) ) {
24
+ /**
25
+ * Get the plugin path.
26
+ *
27
+ * @return string
28
+ */
29
+ function wcj_plugin_path() {
30
+ return untrailingslashit( realpath( plugin_dir_path( __FILE__ ) . '/../..' ) );
31
+ }
32
+ }
33
+
34
+ if ( ! function_exists( 'wcj_is_module_enabled' ) ) {
35
+ /*
36
+ * wcj_is_module_enabled.
37
+ *
38
+ * @version 2.9.0
39
+ * @since 2.4.0
40
+ * @return boolean
41
+ */
42
+ function wcj_is_module_enabled( $module_id ) {
43
+ return ( 'yes' === get_option( 'wcj_' . $module_id . '_enabled', 'no' ) );
44
+ }
45
+ }
includes/functions/wcj-country-functions.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Functions - Country
4
  *
5
- * @version 2.6.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -18,32 +18,28 @@ if ( ! function_exists( 'wcj_get_country_flag_by_code' ) ) {
18
  }
19
  }
20
 
21
- /**
22
- * wcj_get_customer_country.
23
- *
24
- * @return string
25
- */
26
  if ( ! function_exists( 'wcj_get_customer_country' ) ) {
 
 
 
 
 
 
27
  function wcj_get_customer_country( $user_id ) {
28
-
29
  $user_meta = get_user_meta( $user_id );
30
-
31
  $billing_country = isset( $user_meta['billing_country'][0] ) ? $user_meta['billing_country'][0] : '';
32
  $shipping_country = isset( $user_meta['shipping_country'][0] ) ? $user_meta['shipping_country'][0] : '';
33
-
34
- $customer_country = ( '' == $billing_country ) ? $shipping_country : $billing_country;
35
-
36
- return $customer_country;
37
  }
38
  }
39
 
40
- /**
41
- * wcj_get_european_union_countries_with_vat.
42
- *
43
- * @version 2.4.0
44
- * @return array
45
- */
46
  if ( ! function_exists( 'wcj_get_european_union_countries_with_vat' ) ) {
 
 
 
 
 
 
47
  function wcj_get_european_union_countries_with_vat() {
48
  return array(
49
  'AT' => 20,
@@ -81,30 +77,27 @@ if ( ! function_exists( 'wcj_get_european_union_countries_with_vat' ) ) {
81
  }
82
  }
83
 
84
- /**
85
- * Get country name by country code.
86
- *
87
- * @return string on success, boolean false otherwise
88
- */
89
  if ( ! function_exists( 'wcj_get_country_name_by_code' ) ) {
 
 
 
 
 
 
90
  function wcj_get_country_name_by_code( $country_code ) {
91
-
92
  $countries = wcj_get_countries();
93
-
94
- if ( isset( $countries[ $country_code ] ) ) return $countries[ $country_code ];
95
-
96
- return false;
97
  }
98
  }
99
 
100
- /**
101
- * Get all states array.
102
- *
103
- * @version 2.4.4
104
- * @since 2.4.4
105
- * @return array
106
- */
107
  if ( ! function_exists( 'wcj_get_states' ) ) {
 
 
 
 
 
 
 
108
  function wcj_get_states() {
109
  $base_country = WC()->countries->get_base_country();
110
  $states = WC()->countries->get_states( $base_country );
@@ -112,12 +105,13 @@ if ( ! function_exists( 'wcj_get_states' ) ) {
112
  }
113
  }
114
 
115
- /**
116
- * Get all countries array.
117
- *
118
- * @return array
119
- */
120
  if ( ! function_exists( 'wcj_get_countries' ) ) {
 
 
 
 
 
 
121
  function wcj_get_countries() {
122
  return array(
123
  'AF' => __( 'Afghanistan', 'woocommerce' ),
@@ -363,7 +357,197 @@ if ( ! function_exists( 'wcj_get_countries' ) ) {
363
  'WS' => __( 'Western Samoa', 'woocommerce' ),
364
  'YE' => __( 'Yemen', 'woocommerce' ),
365
  'ZM' => __( 'Zambia', 'woocommerce' ),
366
- 'ZW' => __( 'Zimbabwe', 'woocommerce' )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
367
  );
368
  }
369
  }
2
  /**
3
  * Booster for WooCommerce - Functions - Country
4
  *
5
+ * @version 2.9.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
18
  }
19
  }
20
 
 
 
 
 
 
21
  if ( ! function_exists( 'wcj_get_customer_country' ) ) {
22
+ /**
23
+ * wcj_get_customer_country.
24
+ *
25
+ * @version 2.9.0
26
+ * @return string
27
+ */
28
  function wcj_get_customer_country( $user_id ) {
 
29
  $user_meta = get_user_meta( $user_id );
 
30
  $billing_country = isset( $user_meta['billing_country'][0] ) ? $user_meta['billing_country'][0] : '';
31
  $shipping_country = isset( $user_meta['shipping_country'][0] ) ? $user_meta['shipping_country'][0] : '';
32
+ return ( '' == $billing_country ) ? $shipping_country : $billing_country;
 
 
 
33
  }
34
  }
35
 
 
 
 
 
 
 
36
  if ( ! function_exists( 'wcj_get_european_union_countries_with_vat' ) ) {
37
+ /**
38
+ * wcj_get_european_union_countries_with_vat.
39
+ *
40
+ * @version 2.4.0
41
+ * @return array
42
+ */
43
  function wcj_get_european_union_countries_with_vat() {
44
  return array(
45
  'AT' => 20,
77
  }
78
  }
79
 
 
 
 
 
 
80
  if ( ! function_exists( 'wcj_get_country_name_by_code' ) ) {
81
+ /**
82
+ * Get country name by country code.
83
+ *
84
+ * @version 2.9.0
85
+ * @return string on success, boolean false otherwise
86
+ */
87
  function wcj_get_country_name_by_code( $country_code ) {
 
88
  $countries = wcj_get_countries();
89
+ return ( isset( $countries[ $country_code ] ) ) ? $countries[ $country_code ] : false;
 
 
 
90
  }
91
  }
92
 
 
 
 
 
 
 
 
93
  if ( ! function_exists( 'wcj_get_states' ) ) {
94
+ /**
95
+ * Get all states array.
96
+ *
97
+ * @version 2.4.4
98
+ * @since 2.4.4
99
+ * @return array
100
+ */
101
  function wcj_get_states() {
102
  $base_country = WC()->countries->get_base_country();
103
  $states = WC()->countries->get_states( $base_country );
105
  }
106
  }
107
 
 
 
 
 
 
108
  if ( ! function_exists( 'wcj_get_countries' ) ) {
109
+ /**
110
+ * Get all countries array.
111
+ *
112
+ * @version 2.9.0
113
+ * @return array
114
+ */
115
  function wcj_get_countries() {
116
  return array(
117
  'AF' => __( 'Afghanistan', 'woocommerce' ),
357
  'WS' => __( 'Western Samoa', 'woocommerce' ),
358
  'YE' => __( 'Yemen', 'woocommerce' ),
359
  'ZM' => __( 'Zambia', 'woocommerce' ),
360
+ 'ZW' => __( 'Zimbabwe', 'woocommerce' ),
361
+ 'EU' => __( 'European Union', 'woocommerce' ),
362
+ );
363
+ }
364
+ }
365
+
366
+ if ( ! function_exists( 'wcj_get_currency_countries' ) ) {
367
+ /**
368
+ * wcj_get_currency_countries.
369
+ *
370
+ * 158 currencies.
371
+ * Three-letter currency code (ISO 4217) => Two-letter countries codes (ISO 3166-1 alpha-2).
372
+ *
373
+ * @version 2.9.0
374
+ * @since 2.9.0
375
+ */
376
+ function wcj_get_currency_countries() {
377
+ return array(
378
+ 'AFN' => array( 'AF' ),
379
+ 'ALL' => array( 'AL' ),
380
+ 'DZD' => array( 'DZ' ),
381
+ 'USD' => array( 'US', 'AS', 'IO', 'GU', 'MH', 'FM', 'MP', 'PW', 'PR', 'TC', 'UM', 'VI' ),
382
+ 'EUR' => array( 'AD', 'AT', 'BE', 'CY', 'EE', 'FI', 'FR', 'GF', 'TF', 'DE', 'GR', 'GP', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'MQ', 'YT', 'MC', 'ME', 'NL', 'PT', 'RE', 'PM', 'SM', 'SK', 'SI', 'ES' ),
383
+ 'AOA' => array( 'AO' ),
384
+ 'XCD' => array( 'KN', 'AI', 'AQ', 'AG', 'DM', 'GD', 'MS', 'LC', 'VC' ),
385
+ 'ARS' => array( 'AR' ),
386
+ 'AMD' => array( 'AM' ),
387
+ 'AWG' => array( 'AW' ),
388
+ 'AUD' => array( 'AU', 'CX', 'CC', 'HM', 'KI', 'NR', 'NF', 'TV' ),
389
+ 'AZN' => array( 'AZ' ),
390
+ 'BSD' => array( 'BS' ),
391
+ 'BHD' => array( 'BH' ),
392
+ 'BDT' => array( 'BD' ),
393
+ 'BBD' => array( 'BB' ),
394
+ 'BYR' => array( 'BY' ),
395
+ 'BZD' => array( 'BZ' ),
396
+ 'XOF' => array( 'SN', 'BJ', 'BF', 'ML', 'NE', 'TG' ),
397
+ 'BMD' => array( 'BM' ),
398
+ 'BTN' => array( 'BT' ),
399
+ 'BOB' => array( 'BO' ),
400
+ 'BAM' => array( 'BA' ),
401
+ 'BWP' => array( 'BW' ),
402
+ 'NOK' => array( 'NO', 'BV', 'SJ' ),
403
+ 'BRL' => array( 'BR' ),
404
+ 'BND' => array( 'BN' ),
405
+ 'BGN' => array( 'BG' ),
406
+ 'BIF' => array( 'BI' ),
407
+ 'KHR' => array( 'KH' ),
408
+ 'XAF' => array( 'CF', 'CM', 'TD', 'CG', 'GQ', 'GA' ),
409
+ 'CAD' => array( 'CA' ),
410
+ 'CVE' => array( 'CV' ),
411
+ 'KYD' => array( 'KY' ),
412
+ 'CLP' => array( 'CL' ),
413
+ 'CNY' => array( 'CN' ),
414
+ 'RMB' => array( 'CN' ),
415
+ 'HKD' => array( 'HK' ),
416
+ 'COP' => array( 'CO' ),
417
+ 'KMF' => array( 'KM' ),
418
+ 'CDF' => array( 'CD' ),
419
+ 'NZD' => array( 'NZ', 'CK', 'NU', 'PN', 'TK' ),
420
+ 'CRC' => array( 'CR' ),
421
+ 'HRK' => array( 'HR' ),
422
+ 'CUP' => array( 'CU' ),
423
+ 'CUC' => array( 'CU' ),
424
+ 'CZK' => array( 'CZ' ),
425
+ 'DKK' => array( 'DK', 'FO', 'GL' ),
426
+ 'DJF' => array( 'DJ' ),
427
+ 'DOP' => array( 'DO' ),
428
+ 'ECS' => array( 'EC' ),
429
+ 'EGP' => array( 'EG' ),
430
+ 'SVC' => array( 'SV' ),
431
+ 'ERN' => array( 'ER' ),
432
+ 'ETB' => array( 'ET' ),
433
+ 'FKP' => array( 'FK' ),
434
+ 'FJD' => array( 'FJ' ),
435
+ 'GMD' => array( 'GM' ),
436
+ 'GEL' => array( 'GE' ),
437
+ 'GHS' => array( 'GH' ),
438
+ 'GIP' => array( 'GI' ),
439
+ 'QTQ' => array( 'GT' ),
440
+ 'GTQ' => array( 'GT' ),
441
+ 'GGP' => array( 'GG' ),
442
+ 'GNF' => array( 'GN' ),
443
+ 'GWP' => array( 'GW' ),
444
+ 'GYD' => array( 'GY' ),
445
+ 'HTG' => array( 'HT' ),
446
+ 'HNL' => array( 'HN' ),
447
+ 'HUF' => array( 'HU' ),
448
+ 'ISK' => array( 'IS' ),
449
+ 'INR' => array( 'IN' ),
450
+ 'IDR' => array( 'ID' ),
451
+ 'IRR' => array( 'IR' ),
452
+ 'IQD' => array( 'IQ' ),
453
+ 'GBP' => array( 'GB', 'IM', 'JE', 'GS' ),
454
+ 'ILS' => array( 'IL' ),
455
+ 'JMD' => array( 'JM' ),
456
+ 'JPY' => array( 'JP' ),
457
+ 'JOD' => array( 'JO' ),
458
+ 'KZT' => array( 'KZ' ),
459
+ 'KES' => array( 'KE' ),
460
+ 'KPW' => array( 'KP' ),
461
+ 'KRW' => array( 'KR' ),
462
+ 'KWD' => array( 'KW' ),
463
+ 'KGS' => array( 'KG' ),
464
+ 'LAK' => array( 'LA' ),
465
+ 'KIP' => array( 'LA' ),
466
+ 'LBP' => array( 'LB' ),
467
+ 'LSL' => array( 'LS' ),
468
+ 'LRD' => array( 'LR' ),
469
+ 'LYD' => array( 'LY' ),
470
+ 'CHF' => array( 'CH', 'LI' ),
471
+ 'MKD' => array( 'MK' ),
472
+ 'MGF' => array( 'MG' ),
473
+ 'MGA' => array( 'MG' ),
474
+ 'MWK' => array( 'MW' ),
475
+ 'MYR' => array( 'MY' ),
476
+ 'MVR' => array( 'MV' ),
477
+ 'MRO' => array( 'MR' ),
478
+ 'MUR' => array( 'MU' ),
479
+ 'MXN' => array( 'MX' ),
480
+ 'MDL' => array( 'MD' ),
481
+ 'MNT' => array( 'MN' ),
482
+ 'MAD' => array( 'MA', 'EH' ),
483
+ 'MZN' => array( 'MZ' ),
484
+ 'MZM' => array( 'MZ' ),
485
+ 'MMK' => array( 'MM' ),
486
+ 'NAD' => array( 'NA' ),
487
+ 'NPR' => array( 'NP' ),
488
+ 'ANG' => array( 'AN' ),
489
+ 'XPF' => array( 'NC', 'WF' ),
490
+ 'NIO' => array( 'NI' ),
491
+ 'NGN' => array( 'NG' ),
492
+ 'OMR' => array( 'OM' ),
493
+ 'PKR' => array( 'PK' ),
494
+ 'PAB' => array( 'PA' ),
495
+ 'PGK' => array( 'PG' ),
496
+ 'PYG' => array( 'PY' ),
497
+ 'PEN' => array( 'PE' ),
498
+ 'PHP' => array( 'PH' ),
499
+ 'PLN' => array( 'PL' ),
500
+ 'QAR' => array( 'QA' ),
501
+ 'RON' => array( 'RO' ),
502
+ 'RUB' => array( 'RU' ),
503
+ 'RWF' => array( 'RW' ),
504
+ 'SHP' => array( 'SH' ),
505
+ 'WST' => array( 'WS' ),
506
+ 'STD' => array( 'ST' ),
507
+ 'SAR' => array( 'SA' ),
508
+ 'RSD' => array( 'RS' ),
509
+ 'SCR' => array( 'SC' ),
510
+ 'SLL' => array( 'SL' ),
511
+ 'SGD' => array( 'SG' ),
512
+ 'SBD' => array( 'SB' ),
513
+ 'SOS' => array( 'SO' ),
514
+ 'ZAR' => array( 'ZA' ),
515
+ 'SSP' => array( 'SS' ),
516
+ 'LKR' => array( 'LK' ),
517
+ 'SDG' => array( 'SD' ),
518
+ 'SRD' => array( 'SR' ),
519
+ 'SZL' => array( 'SZ' ),
520
+ 'SEK' => array( 'SE' ),
521
+ 'SYP' => array( 'SY' ),
522
+ 'TWD' => array( 'TW' ),
523
+ 'TJS' => array( 'TJ' ),
524
+ 'TZS' => array( 'TZ' ),
525
+ 'THB' => array( 'TH' ),
526
+ 'TOP' => array( 'TO' ),
527
+ 'TTD' => array( 'TT' ),
528
+ 'TND' => array( 'TN' ),
529
+ 'TRY' => array( 'TR' ),
530
+ 'TMT' => array( 'TM' ),
531
+ 'TMM' => array( 'TM' ),
532
+ 'UGX' => array( 'UG' ),
533
+ 'UAH' => array( 'UA' ),
534
+ 'AED' => array( 'AE' ),
535
+ 'UYU' => array( 'UY' ),
536
+ 'UZS' => array( 'UZ' ),
537
+ 'VUV' => array( 'VU' ),
538
+ 'VEF' => array( 'VE' ),
539
+ 'VND' => array( 'VN' ),
540
+ 'YER' => array( 'YE' ),
541
+ 'ZMW' => array( 'ZM' ),
542
+ 'ZMK' => array( 'ZM' ),
543
+ 'ZWD' => array( 'ZW' ),
544
+ 'GQE' => array( 'CF' ),
545
+ 'MOP' => array( 'MO' ),
546
+ // Former currencies
547
+ 'LTL' => array( 'LT' ),
548
+ 'LVL' => array( 'LV' ),
549
+ 'EEK' => array( 'EE' ),
550
+ 'SKK' => array( 'SK' ),
551
  );
552
  }
553
  }
includes/{currencies → functions}/wcj-currencies.php RENAMED
@@ -1,9 +1,10 @@
1
  <?php
2
  /**
3
- * Booster for WooCommerce Currencies Array
4
  *
5
- * @version 2.4.4
6
  * @author Algoritmika Ltd.
 
7
  */
8
 
9
  if ( ! function_exists( 'wcj_get_currencies_array' ) ) {
@@ -172,6 +173,9 @@ if ( ! function_exists( 'wcj_get_currencies_array' ) ) {
172
  array( 'code' => 'ZAR', 'symbol' => '&#82;', 'name' => __( 'South African rand', 'woocommerce' ) ),
173
  array( 'code' => 'ZMK', 'symbol' => 'ZMK', 'name' => __( 'Zambian kwacha', 'woocommerce-jetpack' ) ),
174
  array( 'code' => 'ZWD', 'symbol' => 'ZWD', 'name' => __( 'Zimbabwean dollar', 'woocommerce-jetpack' ) ),
 
 
 
175
  );
176
  }
177
  }
1
  <?php
2
  /**
3
+ * Booster for WooCommerce - Currencies Array
4
  *
5
+ * @version 2.9.0
6
  * @author Algoritmika Ltd.
7
+ * @todo move this to functions folder
8
  */
9
 
10
  if ( ! function_exists( 'wcj_get_currencies_array' ) ) {
173
  array( 'code' => 'ZAR', 'symbol' => '&#82;', 'name' => __( 'South African rand', 'woocommerce' ) ),
174
  array( 'code' => 'ZMK', 'symbol' => 'ZMK', 'name' => __( 'Zambian kwacha', 'woocommerce-jetpack' ) ),
175
  array( 'code' => 'ZWD', 'symbol' => 'ZWD', 'name' => __( 'Zimbabwean dollar', 'woocommerce-jetpack' ) ),
176
+ array( 'code' => 'BTC', 'symbol' => 'BTC', 'name' => __( 'Bitcoin', 'woocommerce-jetpack' ) ),
177
+ array( 'code' => 'ETH', 'symbol' => 'ETH', 'name' => __( 'Ethereum', 'woocommerce-jetpack' ) ),
178
+ array( 'code' => 'MYC', 'symbol' => 'MYC', 'name' => __( 'myCred', 'woocommerce-jetpack' ) ),
179
  );
180
  }
181
  }
includes/functions/wcj-date-time-functions.php ADDED
@@ -0,0 +1,160 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Functions - Date and Time
4
+ *
5
+ * @version 2.9.0
6
+ * @since 2.9.0
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit;
11
+
12
+ if ( ! function_exists( 'wcj_check_time_from' ) ) {
13
+ /**
14
+ * wcj_check_time_from.
15
+ *
16
+ * @version 2.8.0
17
+ * @since 2.8.0
18
+ */
19
+ function wcj_check_time_from( $time_from, $args ) {
20
+ $time_from = explode( ':', $time_from );
21
+ if ( isset( $time_from[0] ) && $args['hours_now'] < $time_from[0] ) {
22
+ return false;
23
+ }
24
+ if ( isset( $time_from[1] ) && $time_from[0] == $args['hours_now'] && $args['minutes_now'] < $time_from[1] ) {
25
+ return false;
26
+ }
27
+ return true;
28
+ }
29
+ }
30
+
31
+ if ( ! function_exists( 'wcj_check_time_to' ) ) {
32
+ /**
33
+ * wcj_check_time_to.
34
+ *
35
+ * @version 2.8.0
36
+ * @since 2.8.0
37
+ */
38
+ function wcj_check_time_to( $time_to, $args ) {
39
+ $time_to = explode( ':', $time_to );
40
+ if ( isset( $time_to[0] ) && $args['hours_now'] > $time_to[0] ) {
41
+ return false;
42
+ }
43
+ if ( isset( $time_to[1] ) && $time_to[0] == $args['hours_now'] && $args['minutes_now'] > $time_to[1] ) {
44
+ return false;
45
+ }
46
+ return true;
47
+ }
48
+ }
49
+
50
+ if ( ! function_exists( 'wcj_check_single_time' ) ) {
51
+ /**
52
+ * wcj_check_single_time.
53
+ *
54
+ * @version 2.8.0
55
+ * @since 2.8.0
56
+ */
57
+ function wcj_check_single_time( $_time, $args ) {
58
+ $_time = explode( '-', $_time );
59
+ if ( isset( $_time[0] ) ) {
60
+ if ( ! wcj_check_time_from( $_time[0], $args ) ) {
61
+ return false;
62
+ }
63
+ }
64
+ if ( isset( $_time[1] ) ) {
65
+ if ( ! wcj_check_time_to( $_time[1], $args ) ) {
66
+ return false;
67
+ }
68
+ }
69
+ return true;
70
+ }
71
+ }
72
+
73
+ if ( ! function_exists( 'wcj_check_time' ) ) {
74
+ /**
75
+ * wcj_check_time.
76
+ *
77
+ * @version 2.8.0
78
+ * @since 2.8.0
79
+ */
80
+ function wcj_check_time( $_time, $args = array() ) {
81
+ if ( empty( $args ) ) {
82
+ $time_now = current_time( 'timestamp' );
83
+ $args['hours_now'] = intval( date( 'H', $time_now ) );
84
+ $args['minutes_now'] = intval( date( 'i', $time_now ) );
85
+ }
86
+ $_time = explode( ',', $_time );
87
+ foreach ( $_time as $_single_time ) {
88
+ if ( wcj_check_single_time( $_single_time, $args ) ) {
89
+ return true;
90
+ }
91
+ }
92
+ return false;
93
+ }
94
+ }
95
+
96
+ if ( ! function_exists( 'wcj_date_format_php_to_js_v2' ) ) {
97
+ /*
98
+ * Matches each symbol of PHP date format standard
99
+ * with jQuery equivalent codeword
100
+ * http://stackoverflow.com/questions/16702398/convert-a-php-date-format-to-a-jqueryui-datepicker-date-format
101
+ *
102
+ * @author Tristan Jahier
103
+ * @version 2.4.0
104
+ * @since 2.4.0
105
+ */
106
+ function wcj_date_format_php_to_js_v2( $php_format ) {
107
+ $SYMBOLS_MATCHING = array(
108
+ // Day
109
+ 'd' => 'dd',
110
+ 'D' => 'D',
111
+ 'j' => 'd',
112
+ 'l' => 'DD',
113
+ 'N' => '',
114
+ 'S' => '',
115
+ 'w' => '',
116
+ 'z' => 'o',
117
+ // Week
118
+ 'W' => '',
119
+ // Month
120
+ 'F' => 'MM',
121
+ 'm' => 'mm',
122
+ 'M' => 'M',
123
+ 'n' => 'm',
124
+ 't' => '',
125
+ // Year
126
+ 'L' => '',
127
+ 'o' => '',
128
+ 'Y' => 'yy',
129
+ 'y' => 'y',
130
+ // Time
131
+ 'a' => '',
132
+ 'A' => '',
133
+ 'B' => '',
134
+ 'g' => '',
135
+ 'G' => '',
136
+ 'h' => '',
137
+ 'H' => '',
138
+ 'i' => '',
139
+ 's' => '',
140
+ 'u' => ''
141
+ );
142
+ $jqueryui_format = "";
143
+ $escaping = false;
144
+ for ( $i = 0; $i < strlen( $php_format ); $i++ ) {
145
+ $char = $php_format[ $i ];
146
+ if ( $char === '\\' ) { // PHP date format escaping character
147
+ $i++;
148
+ $jqueryui_format .= ( $escaping ) ? $php_format[ $i ] : '\'' . $php_format[ $i ];
149
+ $escaping = true;
150
+ } else {
151
+ if ( $escaping ) {
152
+ $jqueryui_format .= "'";
153
+ $escaping = false;
154
+ }
155
+ $jqueryui_format .= ( isset( $SYMBOLS_MATCHING[ $char ] ) ) ? $SYMBOLS_MATCHING[ $char ] : $char;
156
+ }
157
+ }
158
+ return $jqueryui_format;
159
+ }
160
+ }
includes/functions/wcj-debug-functions.php CHANGED
@@ -2,24 +2,30 @@
2
  /**
3
  * Booster for WooCommerce - Functions - Debug
4
  *
5
- * @version 1.0.0
6
- * @author Algoritmika Ltd.
7
  */
8
 
9
  if ( ! defined( 'ABSPATH' ) ) exit;
10
 
11
  // Debug Mode
12
- if ( 'yes' === get_option( 'wcj_admin_tools_enabled' ) && 'yes' === get_option( 'wcj_debuging_enabled', 'no' ) ) {
13
  error_reporting( E_ALL );
14
  }
15
 
16
- /**
17
- * wcj_log.
18
- */
19
  if ( ! function_exists( 'wcj_log' ) ) {
 
 
 
 
 
20
  function wcj_log( $message = '' ) {
21
- if ( 'no' === get_option( 'wcj_admin_tools_enabled' ) || 'no' === get_option( 'wcj_logging_enabled', 'no' ) ) return;
22
- if ( '' == $message ) $message = 'CHECKPOINT';
 
 
 
 
23
  if ( is_array( $message ) || is_object( $message ) ) {
24
  $message = print_r( $message, true );
25
  }
2
  /**
3
  * Booster for WooCommerce - Functions - Debug
4
  *
5
+ * @version 2.9.0
6
+ * @author Algoritmika Ltd.
7
  */
8
 
9
  if ( ! defined( 'ABSPATH' ) ) exit;
10
 
11
  // Debug Mode
12
+ if ( wcj_is_module_enabled( 'admin_tools' ) && 'yes' === get_option( 'wcj_debuging_enabled', 'no' ) ) {
13
  error_reporting( E_ALL );
14
  }
15
 
 
 
 
16
  if ( ! function_exists( 'wcj_log' ) ) {
17
+ /**
18
+ * wcj_log.
19
+ *
20
+ * @version 2.9.0
21
+ */
22
  function wcj_log( $message = '' ) {
23
+ if ( ! wcj_is_module_enabled( 'admin_tools' ) || 'no' === get_option( 'wcj_logging_enabled', 'no' ) ) {
24
+ return;
25
+ }
26
+ if ( '' == $message ) {
27
+ $message = 'CHECKPOINT';
28
+ }
29
  if ( is_array( $message ) || is_object( $message ) ) {
30
  $message = print_r( $message, true );
31
  }
includes/functions/wcj-eu-vat-functions.php ADDED
@@ -0,0 +1,123 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Functions - EU VAT
4
+ *
5
+ * @version 2.9.0
6
+ * @version 2.9.0
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit;
11
+
12
+ if ( ! function_exists( 'wcj_validate_vat_no_soap' ) ) {
13
+ /**
14
+ * wcj_validate_vat_no_soap.
15
+ *
16
+ * @version 2.9.0
17
+ * @since 2.5.7
18
+ * @return mixed: bool on successful checking (can be true or false), null otherwise
19
+ */
20
+ function wcj_validate_vat_no_soap( $country_code, $vat_number, $method ) {
21
+ $country_code = strtoupper( $country_code );
22
+ $api_url = "http://ec.europa.eu/taxation_customs/vies/viesquer.do?ms=" . $country_code . "&vat=" . $vat_number;
23
+ switch ( $method ) {
24
+ case 'file_get_contents':
25
+ if ( ini_get( 'allow_url_fopen' ) ) {
26
+ $response = file_get_contents( $api_url );
27
+ } else {
28
+ return null;
29
+ }
30
+ break;
31
+ default: // 'curl'
32
+ if ( function_exists( 'curl_version' ) ) {
33
+ $curl = curl_init( $api_url );
34
+ curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
35
+ $response = curl_exec( $curl );
36
+ curl_close( $curl );
37
+ } else {
38
+ return null;
39
+ }
40
+ break;
41
+ }
42
+ if ( false === $response ) {
43
+ return null;
44
+ }
45
+ return ( false !== strpos( $response, '="validStyle"' ) );
46
+ }
47
+ }
48
+
49
+ if ( ! function_exists( 'wcj_validate_vat_soap' ) ) {
50
+ /**
51
+ * wcj_validate_vat_soap.
52
+ *
53
+ * @version 2.9.0
54
+ * @return mixed: bool on successful checking (can be true or false), null otherwise
55
+ */
56
+ function wcj_validate_vat_soap( $country_code, $vat_number ) {
57
+ try {
58
+ if ( class_exists( 'SoapClient' ) ) {
59
+ $client = new SoapClient(
60
+ 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl',
61
+ array( 'exceptions' => true )
62
+ );
63
+ $result = $client->checkVat( array(
64
+ 'countryCode' => $country_code,
65
+ 'vatNumber' => $vat_number,
66
+ ) );
67
+ return ( isset( $result->valid ) ) ? $result->valid : null;
68
+ } else {
69
+ return null;
70
+ }
71
+ } catch( Exception $exception ) {
72
+ return null;
73
+ }
74
+ }
75
+ }
76
+
77
+ if ( ! function_exists( 'wcj_validate_vat_with_method' ) ) {
78
+ /**
79
+ * wcj_validate_vat_with_method.
80
+ *
81
+ * @version 2.9.0
82
+ * @since 2.9.0
83
+ * @return mixed: bool on successful checking (can be true or false), null otherwise
84
+ */
85
+ function wcj_validate_vat_with_method( $country_code, $vat_number, $method ) {
86
+ switch ( $method ) {
87
+ case 'soap':
88
+ return wcj_validate_vat_soap( $country_code, $vat_number );
89
+ default: // 'curl', 'file_get_contents'
90
+ return wcj_validate_vat_no_soap( $country_code, $vat_number, $method );
91
+ }
92
+ }
93
+ }
94
+
95
+ if ( ! function_exists( 'wcj_validate_vat' ) ) {
96
+ /**
97
+ * wcj_validate_vat.
98
+ *
99
+ * @version 2.9.0
100
+ * @since 2.9.0
101
+ * @return mixed: bool on successful checking (can be true or false), null otherwise
102
+ */
103
+ function wcj_validate_vat( $country_code, $vat_number ) {
104
+ $methods = array();
105
+ switch ( get_option( 'wcj_eu_vat_number_first_method', 'soap' ) ) {
106
+ case 'curl':
107
+ $methods = array( 'curl', 'file_get_contents', 'soap' );
108
+ break;
109
+ case 'file_get_contents':
110
+ $methods = array( 'file_get_contents', 'curl', 'soap' );
111
+ break;
112
+ default: // 'soap'
113
+ $methods = array( 'soap', 'curl', 'file_get_contents' );
114
+ break;
115
+ }
116
+ foreach ( $methods as $method ) {
117
+ if ( null !== ( $result = wcj_validate_vat_with_method( $country_code, $vat_number, $method ) ) ) {
118
+ return $result;
119
+ }
120
+ }
121
+ return null;
122
+ }
123
+ }
includes/functions/wcj-functions.php DELETED
@@ -1,1092 +0,0 @@
1
- <?php
2
- /**
3
- * Booster for WooCommerce - Functions
4
- *
5
- * @version 2.8.2
6
- * @author Algoritmika Ltd.
7
- */
8
-
9
- if ( ! defined( 'ABSPATH' ) ) exit;
10
-
11
- if ( ! function_exists( 'wcj_customer_get_country' ) ) {
12
- /**
13
- * wcj_customer_get_country.
14
- *
15
- * @version 2.8.0
16
- * @since 2.8.0
17
- */
18
- function wcj_customer_get_country() {
19
- return ( WCJ_IS_WC_VERSION_BELOW_3 ? WC()->customer->get_country() : WC()->customer->get_billing_country() );
20
- }
21
- }
22
-
23
- if ( ! function_exists( 'wcj_order_get_payment_method' ) ) {
24
- /**
25
- * wcj_order_get_payment_method.
26
- *
27
- * @version 2.8.2
28
- * @since 2.8.0
29
- */
30
- function wcj_order_get_payment_method( $_order ) {
31
- if ( ! $_order || ! is_object( $_order ) ) {
32
- return null;
33
- }
34
- if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
35
- return ( isset( $_order->payment_method ) ? $_order->payment_method : null );
36
- } else {
37
- return ( method_exists( $_order, 'get_payment_method' ) ? $_order->get_payment_method() : null );
38
- }
39
- }
40
- }
41
-
42
- if ( ! function_exists( 'wcj_check_time_from' ) ) {
43
- /**
44
- * wcj_check_time_from.
45
- *
46
- * @version 2.8.0
47
- * @since 2.8.0
48
- */
49
- function wcj_check_time_from( $time_from, $args ) {
50
- $time_from = explode( ':', $time_from );
51
- if ( isset( $time_from[0] ) && $args['hours_now'] < $time_from[0] ) {
52
- return false;
53
- }
54
- if ( isset( $time_from[1] ) && $time_from[0] == $args['hours_now'] && $args['minutes_now'] < $time_from[1] ) {
55
- return false;
56
- }
57
- return true;
58
- }
59
- }
60
-
61
- if ( ! function_exists( 'wcj_check_time_to' ) ) {
62
- /**
63
- * wcj_check_time_to.
64
- *
65
- * @version 2.8.0
66
- * @since 2.8.0
67
- */
68
- function wcj_check_time_to( $time_to, $args ) {
69
- $time_to = explode( ':', $time_to );
70
- if ( isset( $time_to[0] ) && $args['hours_now'] > $time_to[0] ) {
71
- return false;
72
- }
73
- if ( isset( $time_to[1] ) && $time_to[0] == $args['hours_now'] && $args['minutes_now'] > $time_to[1] ) {
74
- return false;
75
- }
76
- return true;
77
- }
78
- }
79
-
80
- if ( ! function_exists( 'wcj_check_single_time' ) ) {
81
- /**
82
- * wcj_check_single_time.
83
- *
84
- * @version 2.8.0
85
- * @since 2.8.0
86
- */
87
- function wcj_check_single_time( $_time, $args ) {
88
- $_time = explode( '-', $_time );
89
- if ( isset( $_time[0] ) ) {
90
- if ( ! wcj_check_time_from( $_time[0], $args ) ) {
91
- return false;
92
- }
93
- }
94
- if ( isset( $_time[1] ) ) {
95
- if ( ! wcj_check_time_to( $_time[1], $args ) ) {
96
- return false;
97
- }
98
- }
99
- return true;
100
- }
101
- }
102
-
103
- if ( ! function_exists( 'wcj_check_time' ) ) {
104
- /**
105
- * wcj_check_time.
106
- *
107
- * @version 2.8.0
108
- * @since 2.8.0
109
- */
110
- function wcj_check_time( $_time, $args = array() ) {
111
- if ( empty( $args ) ) {
112
- $time_now = current_time( 'timestamp' );
113
- $args['hours_now'] = intval( date( 'H', $time_now ) );
114
- $args['minutes_now'] = intval( date( 'i', $time_now ) );
115
- }
116
- $_time = explode( ',', $_time );
117
- foreach ( $_time as $_single_time ) {
118
- if ( wcj_check_single_time( $_single_time, $args ) ) {
119
- return true;
120
- }
121
- }
122
- return false;
123
- }
124
- }
125
-
126
- if ( ! function_exists( 'wcj_get_product_id' ) ) {
127
- /**
128
- * wcj_get_product_id.
129
- *
130
- * @version 2.7.0
131
- * @since 2.7.0
132
- */
133
- function wcj_get_product_id( $_product ) {
134
- if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
135
- return ( isset( $_product->variation_id ) ) ? $_product->variation_id : $_product->id;
136
- } else {
137
- return $_product->get_id();
138
- }
139
- }
140
- }
141
-
142
- if ( ! function_exists( 'wcj_get_product_id_or_variation_parent_id' ) ) {
143
- /**
144
- * wcj_get_product_id_or_variation_parent_id.
145
- *
146
- * @version 2.7.0
147
- * @since 2.7.0
148
- */
149
- function wcj_get_product_id_or_variation_parent_id( $_product ) {
150
- if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
151
- return $_product->id;
152
- } else {
153
- return ( $_product->is_type( 'variation' ) ) ? $_product->get_parent_id() : $_product->get_id();
154
- }
155
- }
156
- }
157
-
158
- if ( ! function_exists( 'wcj_get_product_status' ) ) {
159
- /**
160
- * wcj_get_product_status.
161
- *
162
- * @version 2.7.0
163
- * @since 2.7.0
164
- */
165
- function wcj_get_product_status( $_product ) {
166
- return ( WCJ_IS_WC_VERSION_BELOW_3 ) ? $_product->post->post_status : $_product->get_status();
167
- }
168
- }
169
-
170
- if ( ! function_exists( 'wcj_get_product_total_stock' ) ) {
171
- /**
172
- * wcj_get_product_total_stock.
173
- *
174
- * @version 2.7.0
175
- * @since 2.7.0
176
- */
177
- function wcj_get_product_total_stock( $_product ) {
178
- if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
179
- return $_product->get_total_stock();
180
- } else {
181
- if ( $_product->is_type( array( 'variable', 'grouped' ) ) ) {
182
- $total_stock = 0;
183
- foreach ( $_product->get_children() as $child_id ) {
184
- $child = wc_get_product( $child_id );
185
- $total_stock += $child->get_stock_quantity();
186
- }
187
- return $total_stock;
188
- } else {
189
- return $_product->get_stock_quantity();
190
- }
191
- }
192
- }
193
- }
194
-
195
- if ( ! function_exists( 'wcj_get_product_display_price' ) ) {
196
- /**
197
- * wcj_get_product_display_price.
198
- *
199
- * @version 2.8.0
200
- * @since 2.7.0
201
- */
202
- function wcj_get_product_display_price( $_product, $price = '', $qty = 1 ) {
203
- if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
204
- return $_product->get_display_price( $price, $qty );
205
- } else {
206
- $minus_sign = '';
207
- if ( $price < 0 ) {
208
- $minus_sign = '-';
209
- $price *= -1;
210
- }
211
- return $minus_sign . wc_get_price_to_display( $_product, array( 'price' => $price, 'qty' => $qty ) );
212
- }
213
- }
214
- }
215
-
216
- if ( ! function_exists( 'wcj_get_product_formatted_variation' ) ) {
217
- /**
218
- * wcj_get_product_formatted_variation.
219
- *
220
- * @version 2.7.0
221
- * @since 2.7.0
222
- */
223
- function wcj_get_product_formatted_variation( $variation, $flat = false, $include_names = true ) {
224
- if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
225
- return $variation->get_formatted_variation_attributes( $flat );
226
- } else {
227
- return wc_get_formatted_variation( $variation, $flat, $include_names );
228
- }
229
- }
230
- }
231
-
232
- if ( ! function_exists( 'wcj_get_order_id' ) ) {
233
- /**
234
- * wcj_get_order_id.
235
- *
236
- * @version 2.7.0
237
- * @since 2.7.0
238
- */
239
- function wcj_get_order_id( $_order ) {
240
- return ( WCJ_IS_WC_VERSION_BELOW_3 ) ? $_order->id : $_order->get_id();
241
- }
242
- }
243
-
244
- if ( ! function_exists( 'wcj_get_order_currency' ) ) {
245
- /**
246
- * wcj_get_order_currency.
247
- *
248
- * @version 2.7.0
249
- * @since 2.7.0
250
- */
251
- function wcj_get_order_currency( $_order ) {
252
- return ( WCJ_IS_WC_VERSION_BELOW_3 ? $_order->get_order_currency() : $_order->get_currency() );
253
- }
254
- }
255
-
256
- if ( ! function_exists( 'wcj_get_order_item_meta_info' ) ) {
257
- /**
258
- * wcj_get_order_item_meta_info.
259
- *
260
- * from woocommerce\includes\admin\meta-boxes\views\html-order-item-meta.php
261
- *
262
- * @version 2.8.0
263
- * @since 2.5.9
264
- */
265
- function wcj_get_order_item_meta_info( $item_id, $item, $_order, $exclude_wcj_meta = false, $_product = null ) {
266
- $meta_info = '';
267
- $metadata = ( WCJ_IS_WC_VERSION_BELOW_3 ? $_order->has_meta( $item_id ) : $item->get_meta_data() );
268
- if ( $metadata ) {
269
- $meta_info = array();
270
- foreach ( $metadata as $meta ) {
271
-
272
- $_meta_key = ( WCJ_IS_WC_VERSION_BELOW_3 ? $meta['meta_key'] : $meta->key );
273
- $_meta_value = ( WCJ_IS_WC_VERSION_BELOW_3 ? $meta['meta_value'] : $meta->value );
274
-
275
- // Skip hidden core fields
276
- if ( in_array( $_meta_key, apply_filters( 'woocommerce_hidden_order_itemmeta', array(
277
- '_qty',
278
- '_tax_class',
279
- '_product_id',
280
- '_variation_id',
281
- '_line_subtotal',
282
- '_line_subtotal_tax',
283
- '_line_total',
284
- '_line_tax',
285
- 'method_id',
286
- 'cost'
287
- ) ) ) ) {
288
- continue;
289
- }
290
-
291
- if ( $exclude_wcj_meta && ( 'wcj' === substr( $_meta_key, 0, 3 ) || '_wcj' === substr( $_meta_key, 0, 4 ) ) ) {
292
- continue;
293
- }
294
-
295
- if ( $exclude_wcj_meta && 'is_custom' === $_meta_key ) {
296
- continue;
297
- }
298
-
299
- // Skip serialised meta
300
- if ( is_serialized( $_meta_value ) || is_array( $_meta_value ) ) {
301
- continue;
302
- }
303
-
304
- // Get attribute data
305
- if ( taxonomy_exists( wc_sanitize_taxonomy_name( $_meta_key ) ) ) {
306
- $term = get_term_by( 'slug', $_meta_value, wc_sanitize_taxonomy_name( $_meta_key ) );
307
- $_meta_key = wc_attribute_label( wc_sanitize_taxonomy_name( $_meta_key ) );
308
- $_meta_value = isset( $term->name ) ? $term->name : $_meta_value;
309
- } else {
310
- $the_product = null;
311
- if ( is_object( $_product ) ) {
312
- $the_product = $_product;
313
- } elseif ( is_object( $item ) ) {
314
- $the_product = $_order->get_product_from_item( $item );
315
- }
316
- $_meta_key = ( is_object( $the_product ) ) ? wc_attribute_label( $_meta_key, $the_product ) : $_meta_key;
317
- }
318
- $meta_info[] = wp_kses_post( rawurldecode( $_meta_key ) ) . ': ' . wp_kses_post( rawurldecode( $_meta_value ) );
319
- }
320
- $meta_info = implode( ', ', $meta_info );
321
- }
322
- return $meta_info;
323
- }
324
- }
325
-
326
- if ( ! function_exists( 'wcj_get_product_image_url' ) ) {
327
- /**
328
- * wcj_get_product_image_url.
329
- *
330
- * @version 2.5.7
331
- * @since 2.5.7
332
- * @todo placeholder
333
- */
334
- function wcj_get_product_image_url( $product_id, $image_size = 'shop_thumbnail' ) {
335
- if ( has_post_thumbnail( $product_id ) ) {
336
- $image_url = get_the_post_thumbnail_url( $product_id, $image_size );
337
- } elseif ( ( $parent_id = wp_get_post_parent_id( $product_id ) ) && has_post_thumbnail( $parent_id ) ) {
338
- $image_url = get_the_post_thumbnail_url( $parent_id, $image_size );
339
- } else {
340
- $image_url = '';
341
- }
342
- return $image_url;
343
- }
344
- }
345
-
346
- if ( ! function_exists( 'wcj_is_bot' ) ) {
347
- /**
348
- * wcj_is_bot.
349
- *
350
- * @version 2.5.7
351
- * @since 2.5.6
352
- */
353
- function wcj_is_bot() {
354
- return ( isset( $_SERVER['HTTP_USER_AGENT'] ) && preg_match( '/Google-Structured-Data-Testing-Tool|bot|crawl|slurp|spider/i', $_SERVER['HTTP_USER_AGENT'] ) ) ? true : false;
355
- }
356
- }
357
-
358
- if ( ! function_exists( 'wcj_get_rocket_icon' ) ) {
359
- /**
360
- * wcj_get_rocket_icon.
361
- *
362
- * @version 2.5.5
363
- * @since 2.5.3
364
- */
365
- function wcj_get_rocket_icon() {
366
- return '<img class="wcj-rocket-icon" src="' . wcj_plugin_url() . '/assets/images/rocket-icon.png' . '" title="">';
367
- }
368
- }
369
-
370
- if ( ! function_exists( 'wcj_get_5_rocket_image' ) ) {
371
- /**
372
- * wcj_get_5_rocket_image.
373
- *
374
- * @version 2.5.5
375
- * @since 2.5.3
376
- */
377
- function wcj_get_5_rocket_image() {
378
- return '<img class="wcj-rocket-icon" src="' . wcj_plugin_url() . '/assets/images/5-rockets.png' . '" title="">';
379
- }
380
- }
381
-
382
- if ( ! function_exists( 'wcj_add_files_upload_form_to_checkout_frontend' ) ) {
383
- /**
384
- * wcj_add_files_upload_form_to_checkout_frontend.
385
- *
386
- * @version 2.5.2
387
- * @since 2.5.2
388
- */
389
- function wcj_add_files_upload_form_to_checkout_frontend() {
390
- WCJ()->modules['checkout_files_upload']->add_files_upload_form_to_checkout_frontend_all( true );
391
- }
392
- }
393
-
394
- if ( ! function_exists( 'wcj_variation_radio_button' ) ) {
395
- /**
396
- * wcj_variation_radio_button.
397
- *
398
- * @version 2.5.0
399
- * @since 2.4.8
400
- */
401
- function wcj_variation_radio_button( $_product, $variation ) {
402
- $attributes_html = '';
403
- $variation_attributes_display_values = array();
404
- $is_checked = true;
405
- foreach ( $variation['attributes'] as $attribute_full_name => $attribute_value ) {
406
-
407
- $attributes_html .= ' ' . $attribute_full_name . '="' . $attribute_value . '"';
408
-
409
- $attribute_name = $attribute_full_name;
410
- $prefix = 'attribute_';
411
- if ( substr( $attribute_full_name, 0, strlen( $prefix ) ) === $prefix ) {
412
- $attribute_name = substr( $attribute_full_name, strlen( $prefix ) );
413
- }
414
-
415
- $checked = isset( $_REQUEST[ 'attribute_' . sanitize_title( $attribute_name ) ] ) ? wc_clean( $_REQUEST[ 'attribute_' . sanitize_title( $attribute_name ) ] ) : $_product->get_variation_default_attribute( $attribute_name );
416
- if ( $checked != $attribute_value ) $is_checked = false;
417
-
418
- $terms = get_terms( $attribute_name );
419
- foreach ( $terms as $term ) {
420
- if ( is_object( $term ) && isset( $term->slug ) && $term->slug === $attribute_value && isset( $term->name ) ) {
421
- $attribute_value = $term->name;
422
- }
423
- }
424
-
425
- $variation_attributes_display_values[] = $attribute_value;
426
-
427
- }
428
- $variation_title = implode( ', ', $variation_attributes_display_values ) . ' (' . wc_price( $variation['display_price'] ) . ')';
429
- $variation_id = $variation['variation_id'];
430
- $is_checked = checked( $is_checked, true, false );
431
-
432
- echo '<td style="width:10%;">';
433
- echo '<input id="wcj_variation_' . $variation_id . '" name="wcj_variations" type="radio"' . $attributes_html . ' variation_id="' . $variation_id . '"' . $is_checked . '>';
434
- echo '</td>';
435
- echo '<td>';
436
- echo '<label for="wcj_variation_' . $variation_id . '">';
437
- echo $variation_title;
438
- if ( '' != ( $variation_description = get_post_meta( $variation_id, '_variation_description', true ) ) ) {
439
- echo '<br>';
440
- // echo '<small>' . $variation['variation_description'] . '</small>';
441
- echo '<small>' . $variation_description . '</small>';
442
- }
443
- echo '</label>';
444
- echo '</td>';
445
- }
446
- }
447
-
448
- if ( ! function_exists( 'wcj_current_filter_priority' ) ) {
449
- /*
450
- * wcj_current_filter_priority.
451
- *
452
- * @version 2.5.8
453
- * @since 2.4.6
454
- */
455
- function wcj_current_filter_priority() {
456
- global $wp_filter;
457
- $current_filter_data = $wp_filter[ current_filter() ];
458
- if ( class_exists( 'WP_Hook' ) && is_a( $current_filter_data, 'WP_Hook' ) ) {
459
- // since WordPress v4.7
460
- return $current_filter_data->current_priority();
461
- } else {
462
- // before WordPress v4.7
463
- return key( $current_filter_data );
464
- }
465
- }
466
- }
467
-
468
- if ( ! function_exists( 'wcj_maybe_unserialize_and_implode' ) ) {
469
- /*
470
- * wcj_maybe_unserialize_and_implode.
471
- *
472
- * @version 2.8.0
473
- * @since 2.8.0
474
- * @return string
475
- * @todo `if ( ! is_array() )`
476
- */
477
- function wcj_maybe_unserialize_and_implode( $value, $glue = ' ' ) {
478
- if ( is_serialized( $value ) ) {
479
- $value = unserialize( $value );
480
- if ( is_array( $value ) ) {
481
- $value = implode( $glue, $value );
482
- }
483
- }
484
- return $value;
485
- }
486
- }
487
-
488
- if ( ! function_exists( 'wcj_get_product_input_fields' ) ) {
489
- /*
490
- * wcj_get_product_input_fields.
491
- *
492
- * @version 2.8.0
493
- * @since 2.4.4
494
- * @return string
495
- */
496
- function wcj_get_product_input_fields( $item ) {
497
- $product_input_fields = array();
498
- if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
499
- foreach ( $item as $key => $value ) {
500
- if ( false !== strpos( $key, 'wcj_product_input_fields_' ) ) {
501
- $product_input_fields[] = wcj_maybe_unserialize_and_implode( $value );
502
- }
503
- }
504
- } else {
505
- foreach ( $item->get_meta_data() as $value ) {
506
- if ( isset( $value->key ) && isset( $value->value ) && false !== strpos( $value->key, 'wcj_product_input_fields_' ) ) {
507
- $product_input_fields[] = wcj_maybe_unserialize_and_implode( $value->value );
508
- }
509
- }
510
- }
511
- return ( ! empty( $product_input_fields ) ) ? implode( ', ', $product_input_fields ) : '';
512
- }
513
- }
514
-
515
- if ( ! function_exists( 'wcj_get_left_to_free_shipping' ) ) {
516
- /*
517
- * wcj_get_left_to_free_shipping.
518
- *
519
- * @version 2.5.8
520
- * @since 2.4.4
521
- * @return string
522
- */
523
- function wcj_get_left_to_free_shipping( $content, $multiply_by = 1 ) {
524
- if ( '' == $content ) {
525
- $content = __( '%left_to_free% left to free shipping', 'woocommerce-jetpack' );
526
- }
527
- $min_free_shipping_amount = 0;
528
- $current_wc_version = get_option( 'woocommerce_version', null );
529
- if ( version_compare( $current_wc_version, '2.6.0', '<' ) ) {
530
- $free_shipping = new WC_Shipping_Free_Shipping();
531
- if ( in_array( $free_shipping->requires, array( 'min_amount', 'either', 'both' ) ) ) {
532
- $min_free_shipping_amount = $free_shipping->min_amount;
533
- }
534
- } else {
535
- $legacy_free_shipping = new WC_Shipping_Legacy_Free_Shipping();
536
- if ( 'yes' === $legacy_free_shipping->enabled ) {
537
- if ( in_array( $legacy_free_shipping->requires, array( 'min_amount', 'either', 'both' ) ) ) {
538
- $min_free_shipping_amount = $legacy_free_shipping->min_amount;
539
- }
540
- }
541
- if ( 0 == $min_free_shipping_amount ) {
542
- if ( function_exists( 'WC' ) && ( $wc_shipping = WC()->shipping ) && ( $wc_cart = WC()->cart ) ) {
543
- if ( $wc_shipping->enabled ) {
544
- if ( $packages = $wc_cart->get_shipping_packages() ) {
545
- $shipping_methods = $wc_shipping->load_shipping_methods( $packages[0] );
546
- foreach ( $shipping_methods as $shipping_method ) {
547
- if ( 'yes' === $shipping_method->enabled && 0 != $shipping_method->instance_id ) {
548
- if ( 'WC_Shipping_Free_Shipping' === get_class( $shipping_method ) ) {
549
- if ( in_array( $shipping_method->requires, array( 'min_amount', 'either', 'both' ) ) ) {
550
- $min_free_shipping_amount = $shipping_method->min_amount;
551
- break;
552
- }
553
- }
554
- }
555
- }
556
- }
557
- }
558
- }
559
- }
560
- }
561
- if ( 0 != $min_free_shipping_amount ) {
562
- if ( isset( WC()->cart->cart_contents_total ) ) {
563
- $total = ( WC()->cart->prices_include_tax ) ? WC()->cart->cart_contents_total + array_sum( WC()->cart->taxes ) : WC()->cart->cart_contents_total;
564
- if ( $total >= $min_free_shipping_amount ) {
565
- return do_shortcode( get_option( 'wcj_shipping_left_to_free_info_content_reached', __( 'You have Free delivery', 'woocommerce-jetpack' ) ) );
566
- } else {
567
- $content = str_replace( '%left_to_free%', wc_price( ( $min_free_shipping_amount - $total ) * $multiply_by ), $content );
568
- $content = str_replace( '%free_shipping_min_amount%', wc_price( ( $min_free_shipping_amount ) * $multiply_by ), $content );
569
- return $content;
570
- }
571
- }
572
- }
573
- }
574
- }
575
-
576
- /*
577
- * wcj_get_cart_filters()
578
- *
579
- * @version 2.4.4
580
- * @since 2.4.4
581
- * @return array
582
- */
583
- if ( ! function_exists( 'wcj_get_cart_filters' ) ) {
584
- function wcj_get_cart_filters() {
585
- return array(
586
- 'woocommerce_before_cart' => __( 'Before cart', 'woocommerce-jetpack' ),
587
- 'woocommerce_before_cart_table' => __( 'Before cart table', 'woocommerce-jetpack' ),
588
- 'woocommerce_before_cart_contents' => __( 'Before cart contents', 'woocommerce-jetpack' ),
589
- 'woocommerce_cart_contents' => __( 'Cart contents', 'woocommerce-jetpack' ),
590
- 'woocommerce_cart_coupon' => __( 'Cart coupon', 'woocommerce-jetpack' ),
591
- 'woocommerce_cart_actions' => __( 'Cart actions', 'woocommerce-jetpack' ),
592
- 'woocommerce_after_cart_contents' => __( 'After cart contents', 'woocommerce-jetpack' ),
593
- 'woocommerce_after_cart_table' => __( 'After cart table', 'woocommerce-jetpack' ),
594
- 'woocommerce_cart_collaterals' => __( 'Cart collaterals', 'woocommerce-jetpack' ),
595
- 'woocommerce_after_cart' => __( 'After cart', 'woocommerce-jetpack' ),
596
-
597
- 'woocommerce_before_cart_totals' => __( 'Before cart totals', 'woocommerce-jetpack' ),
598
- 'woocommerce_cart_totals_before_shipping' => __( 'Cart totals: Before shipping', 'woocommerce-jetpack' ),
599
- 'woocommerce_cart_totals_after_shipping' => __( 'Cart totals: After shipping', 'woocommerce-jetpack' ),
600
- 'woocommerce_cart_totals_before_order_total' => __( 'Cart totals: Before order total', 'woocommerce-jetpack' ),
601
- 'woocommerce_cart_totals_after_order_total' => __( 'Cart totals: After order total', 'woocommerce-jetpack' ),
602
- 'woocommerce_proceed_to_checkout' => __( 'Proceed to checkout', 'woocommerce-jetpack' ),
603
- 'woocommerce_after_cart_totals' => __( 'After cart totals', 'woocommerce-jetpack' ),
604
-
605
- 'woocommerce_before_shipping_calculator' => __( 'Before shipping calculator', 'woocommerce-jetpack' ),
606
- 'woocommerce_after_shipping_calculator' => __( 'After shipping calculator', 'woocommerce-jetpack' ),
607
-
608
- 'woocommerce_cart_is_empty' => __( 'If cart is empty', 'woocommerce-jetpack' ),
609
- );
610
- }
611
- }
612
-
613
- /*
614
- * wcj_is_module_enabled()
615
- *
616
- * @version 2.4.0
617
- * @since 2.4.0
618
- * @return boolean
619
- */
620
- if ( ! function_exists( 'wcj_is_module_enabled' ) ) {
621
- function wcj_is_module_enabled( $module_id ) {
622
- return ( 'yes' === get_option( 'wcj_' . $module_id . '_enabled', 'no' ) ) ? true : false;
623
- }
624
- }
625
-
626
- if ( ! function_exists( 'wcj_get_rates_for_tax_class' ) ) {
627
- /* Used by admin settings page.
628
- *
629
- * @param string $tax_class
630
- *
631
- * @return array|null|object
632
- *
633
- * @version 2.3.10
634
- * @since 2.3.10
635
- */
636
- function wcj_get_rates_for_tax_class( $tax_class ) {
637
- global $wpdb;
638
-
639
- // Get all the rates and locations. Snagging all at once should significantly cut down on the number of queries.
640
- $rates = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM `{$wpdb->prefix}woocommerce_tax_rates` WHERE `tax_rate_class` = %s ORDER BY `tax_rate_order`;", sanitize_title( $tax_class ) ) );
641
- $locations = $wpdb->get_results( "SELECT * FROM `{$wpdb->prefix}woocommerce_tax_rate_locations`" );
642
-
643
- // Set the rates keys equal to their ids.
644
- $rates = array_combine( wp_list_pluck( $rates, 'tax_rate_id' ), $rates );
645
-
646
- // Drop the locations into the rates array.
647
- foreach ( $locations as $location ) {
648
- // Don't set them for unexistent rates.
649
- if ( ! isset( $rates[ $location->tax_rate_id ] ) ) {
650
- continue;
651
- }
652
- // If the rate exists, initialize the array before appending to it.
653
- if ( ! isset( $rates[ $location->tax_rate_id ]->{$location->location_type} ) ) {
654
- $rates[ $location->tax_rate_id ]->{$location->location_type} = array();
655
- }
656
- $rates[ $location->tax_rate_id ]->{$location->location_type}[] = $location->location_code;
657
- }
658
-
659
- return $rates;
660
- }
661
- }
662
-
663
- /*
664
- * wcj_get_select_options()
665
- *
666
- * @version 2.5.5
667
- * @since 2.3.0
668
- * @return array
669
- */
670
- if ( ! function_exists( 'wcj_get_select_options' ) ) {
671
- function wcj_get_select_options( $select_options_raw, $do_sanitize = true ) {
672
- $select_options_raw = explode( PHP_EOL, $select_options_raw );
673
- $select_options = array();
674
- foreach ( $select_options_raw as $select_options_title ) {
675
- $select_options_key = ( $do_sanitize ) ? sanitize_title( $select_options_title ) : $select_options_title;
676
- $select_options[ $select_options_key ] = $select_options_title;
677
- }
678
- return $select_options;
679
- }
680
- }
681
-
682
- /*
683
- * is_frontend()
684
- *
685
- * @since 2.2.6
686
- * @return boolean
687
- */
688
- if ( ! function_exists( 'wcj_is_frontend' ) ) {
689
- function wcj_is_frontend() {
690
- return ( ! is_admin() || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) ? true : false;
691
- }
692
- }
693
-
694
- /**
695
- * wcj_get_wcj_uploads_dir.
696
- */
697
- if ( ! function_exists( 'wcj_get_wcj_uploads_dir' ) ) {
698
- function wcj_get_wcj_uploads_dir( $subdir = '' ) {
699
- $upload_dir = wp_upload_dir();
700
- $upload_dir = $upload_dir['basedir'];
701
- $upload_dir = $upload_dir . '/woocommerce_uploads/wcj_uploads';
702
- if ( '' != $subdir ) $upload_dir = $upload_dir . '/' . $subdir;
703
- return $upload_dir;
704
- }
705
- }
706
-
707
- /**
708
- * wcj_is_product_wholesale_enabled_per_product.
709
- *
710
- * @version 2.5.0
711
- * @since 2.5.0
712
- */
713
- if ( ! function_exists( 'wcj_is_product_wholesale_enabled_per_product' ) ) {
714
- function wcj_is_product_wholesale_enabled_per_product( $product_id ) {
715
- return (
716
- 'yes' === get_option( 'wcj_wholesale_price_per_product_enable', 'yes' ) &&
717
- 'yes' === get_post_meta( $product_id, '_' . 'wcj_wholesale_price_per_product_enabled', true )
718
- ) ? true : false;
719
- }
720
- }
721
-
722
- /**
723
- * wcj_is_product_wholesale_enabled.
724
- *
725
- * @version 2.5.4
726
- */
727
- if ( ! function_exists( 'wcj_is_product_wholesale_enabled' ) ) {
728
- function wcj_is_product_wholesale_enabled( $product_id ) {
729
- if ( wcj_is_module_enabled( 'wholesale_price' ) ) {
730
- if ( wcj_is_product_wholesale_enabled_per_product( $product_id ) ) {
731
- return true;
732
- } else {
733
- $products_to_include_passed = false;
734
- $products_to_include = get_option( 'wcj_wholesale_price_products_to_include', array() );
735
- if ( empty ( $products_to_include ) ) {
736
- $products_to_include_passed = true;
737
- } else {
738
- foreach ( $products_to_include as $id ) {
739
- if ( $product_id == $id ) {
740
- $products_to_include_passed = true;
741
- }
742
- }
743
- }
744
- $products_to_exclude_passed = false;
745
- $products_to_exclude = get_option( 'wcj_wholesale_price_products_to_exclude', array() );
746
- if ( empty ( $products_to_exclude ) ) {
747
- $products_to_exclude_passed = true;
748
- } else {
749
- foreach ( $products_to_exclude as $id ) {
750
- if ( $product_id == $id ) {
751
- $products_to_exclude_passed = false;
752
- }
753
- }
754
- }
755
- return ( $products_to_include_passed && $products_to_exclude_passed );
756
- }
757
- }
758
- return false;
759
- }
760
- }
761
-
762
- /**
763
- * add_wcj_get_products_filter.
764
- */
765
- add_action( 'init', 'add_wcj_get_products_filter' );
766
- if ( ! function_exists( 'add_wcj_get_products_filter' ) ) {
767
- function add_wcj_get_products_filter() {
768
- add_filter( 'wcj_get_products_filter', 'wcj_get_products' );
769
- }
770
- }
771
-
772
- if ( ! function_exists( 'wcj_get_products' ) ) {
773
- /**
774
- * wcj_get_products.
775
- *
776
- * @version 2.8.0
777
- */
778
- function wcj_get_products( $products = array(), $post_status = 'any', $block_size = 256, $add_variations = false ) {
779
- $offset = 0;
780
- while( true ) {
781
- $args = array(
782
- 'post_type' => 'product',
783
- 'post_status' => $post_status,
784
- 'posts_per_page' => $block_size,
785
- 'offset' => $offset,
786
- 'orderby' => 'title',
787
- 'order' => 'ASC',
788
- 'fields' => 'ids',
789
- );
790
- $loop = new WP_Query( $args );
791
- if ( ! $loop->have_posts() ) {
792
- break;
793
- }
794
- foreach ( $loop->posts as $post_id ) {
795
- $products[ $post_id ] = get_the_title( $post_id );
796
- if ( $add_variations ) {
797
- $_product = wc_get_product( $post_id );
798
- if ( $_product->is_type( 'variable' ) ) {
799
- foreach ( $_product->get_children() as $child_id ) {
800
- $products[ $child_id ] = get_the_title( $child_id );
801
- }
802
- }
803
- }
804
- }
805
- $offset += $block_size;
806
- }
807
- return $products;
808
- }
809
- }
810
-
811
- if ( ! function_exists( 'wcj_product_has_terms' ) ) {
812
- /**
813
- * wcj_product_has_terms.
814
- *
815
- * @version 2.8.2
816
- * @version 2.8.2
817
- */
818
- function wcj_product_has_terms( $_product, $_values, $_term ) {
819
- if ( is_string( $_values ) ) {
820
- $_values = explode( ',', $_values );
821
- }
822
- if ( empty( $_values ) ) {
823
- return false;
824
- }
825
- $product_categories = get_the_terms( wcj_get_product_id_or_variation_parent_id( $_product ), $_term );
826
- if ( empty( $product_categories ) ) {
827
- return false;
828
- }
829
- foreach ( $product_categories as $product_category ) {
830
- foreach ( $_values as $_value ) {
831
- if ( $product_category->slug === $_value ) {
832
- return true;
833
- }
834
- }
835
- }
836
- return false;
837
- }
838
- }
839
-
840
- if ( ! function_exists( 'wcj_get_terms' ) ) {
841
- /**
842
- * wcj_get_terms.
843
- *
844
- * @version 2.8.0
845
- * @version 2.8.0
846
- */
847
- function wcj_get_terms( $args ) {
848
- if ( ! is_array( $args ) ) {
849
- $_taxonomy = $args;
850
- $args = array(
851
- 'taxonomy' => $_taxonomy,
852
- 'orderby' => 'name',
853
- 'hide_empty' => false,
854
- );
855
- }
856
- global $wp_version;
857
- if ( version_compare( $wp_version, '4.5.0', '>=' ) ) {
858
- $_terms = get_terms( $args );
859
- } else {
860
- $_taxonomy = $args['taxonomy'];
861
- unset( $args['taxonomy'] );
862
- $_terms = get_terms( $_taxonomy, $args );
863
- }
864
- $_terms_options = array();
865
- if ( ! empty( $_terms ) && ! is_wp_error( $_terms ) ){
866
- foreach ( $_terms as $_term ) {
867
- $_terms_options[ $_term->term_id ] = $_term->name;
868
- }
869
- }
870
- return $_terms_options;
871
- }
872
- }
873
-
874
- if ( ! function_exists( 'wcj_get_product' ) ) {
875
- /*
876
- * wcj_get_product.
877
- */
878
- function wcj_get_product( $product_id = 0 ) {
879
- if ( 0 == $product_id ) $product_id = get_the_ID();
880
- $the_product = new WCJ_Product( $product_id );
881
- return $the_product;
882
- }
883
- }
884
-
885
- if ( ! function_exists( 'validate_vat_no_soap' ) ) {
886
- /**
887
- * validate_vat_no_soap.
888
- *
889
- * @version 2.6.0
890
- * @since 2.5.7
891
- * @return mixed: bool on successful checking (can be true or false), null otherwise
892
- */
893
- function validate_vat_no_soap( $country_code, $vat_number ) {
894
- $country_code = strtoupper( $country_code );
895
- $api_url = "http://ec.europa.eu/taxation_customs/vies/viesquer.do?ms=" . $country_code . "&vat=" . $vat_number;
896
- if ( ini_get( 'allow_url_fopen' ) ) {
897
- $response = file_get_contents( $api_url );
898
- } elseif ( function_exists( 'curl_version' ) ) {
899
- $curl = curl_init( $api_url );
900
- curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
901
- $response = curl_exec( $curl );
902
- curl_close( $curl );
903
- } else {
904
- return null;
905
- }
906
- if ( false === $response ) {
907
- return null;
908
- }
909
- return ( false !== strpos( $response, '="validStyle"' ) ) ? true : false;
910
- }
911
- }
912
-
913
- if ( ! function_exists( 'validate_VAT' ) ) {
914
- /**
915
- * validate_VAT.
916
- *
917
- * @version 2.5.7
918
- * @return mixed: bool on successful checking (can be true or false), null otherwise
919
- */
920
- function validate_VAT( $country_code, $vat_number ) {
921
- try {
922
- if ( class_exists( 'SoapClient' ) ) {
923
- $client = new SoapClient(
924
- 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl',
925
- array( 'exceptions' => true )
926
- );
927
- $result = $client->checkVat( array(
928
- 'countryCode' => $country_code,
929
- 'vatNumber' => $vat_number,
930
- ) );
931
- return ( isset( $result->valid ) ) ? $result->valid : null;
932
- } else {
933
- return validate_vat_no_soap( $country_code, $vat_number );
934
- }
935
- } catch( Exception $exception ) {
936
- return null;
937
- }
938
- }
939
- }
940
-
941
- if ( ! function_exists( 'wcj_plugin_url' ) ) {
942
- /**
943
- * wcj_plugin_url.
944
- *
945
- * @version 2.3.0
946
- * @todo remove this function
947
- */
948
- function wcj_plugin_url() {
949
- return untrailingslashit( plugin_dir_url( realpath( dirname( __FILE__ ) . '/..' ) ) );
950
- }
951
- }
952
-
953
- if ( ! function_exists( 'wcj_plugin_path' ) ) {
954
- /**
955
- * Get the plugin path.
956
- *
957
- * @return string
958
- */
959
- function wcj_plugin_path() {
960
- return untrailingslashit( realpath( plugin_dir_path( __FILE__ ) . '/../..' ) );
961
- }
962
- }
963
-
964
- if ( ! function_exists( 'wcj_date_format_php_to_js_v2' ) ) {
965
- /*
966
- * Matches each symbol of PHP date format standard
967
- * with jQuery equivalent codeword
968
- * http://stackoverflow.com/questions/16702398/convert-a-php-date-format-to-a-jqueryui-datepicker-date-format
969
- *
970
- * @author Tristan Jahier
971
- * @version 2.4.0
972
- * @since 2.4.0
973
- */
974
- function wcj_date_format_php_to_js_v2( $php_format ) {
975
- $SYMBOLS_MATCHING = array(
976
- // Day
977
- 'd' => 'dd',
978
- 'D' => 'D',
979
- 'j' => 'd',
980
- 'l' => 'DD',
981
- 'N' => '',
982
- 'S' => '',
983
- 'w' => '',
984
- 'z' => 'o',
985
- // Week
986
- 'W' => '',
987
- // Month
988
- 'F' => 'MM',
989
- 'm' => 'mm',
990
- 'M' => 'M',
991
- 'n' => 'm',
992
- 't' => '',
993
- // Year
994
- 'L' => '',
995
- 'o' => '',
996
- 'Y' => 'yy',
997
- 'y' => 'y',
998
- // Time
999
- 'a' => '',
1000
- 'A' => '',
1001
- 'B' => '',
1002
- 'g' => '',
1003
- 'G' => '',
1004
- 'h' => '',
1005
- 'H' => '',
1006
- 'i' => '',
1007
- 's' => '',
1008
- 'u' => ''
1009
- );
1010
- $jqueryui_format = "";
1011
- $escaping = false;
1012
- for ( $i = 0; $i < strlen( $php_format ); $i++ ) {
1013
- $char = $php_format[ $i ];
1014
- if ( $char === '\\' ) { // PHP date format escaping character
1015
- $i++;
1016
- $jqueryui_format .= ( $escaping ) ? $php_format[ $i ] : '\'' . $php_format[ $i ];
1017
- $escaping = true;
1018
- } else {
1019
- if ( $escaping ) {
1020
- $jqueryui_format .= "'";
1021
- $escaping = false;
1022
- }
1023
- $jqueryui_format .= ( isset( $SYMBOLS_MATCHING[ $char ] ) ) ? $SYMBOLS_MATCHING[ $char ] : $char;
1024
- }
1025
- }
1026
- return $jqueryui_format;
1027
- }
1028
- }
1029
-
1030
- if ( ! function_exists( 'wcj_hex2rgb' ) ) {
1031
- /**
1032
- * wcj_hex2rgb.
1033
- */
1034
- function wcj_hex2rgb( $hex ) {
1035
- return sscanf( $hex, "#%2x%2x%2x" );
1036
- }
1037
- }
1038
-
1039
- if ( ! function_exists( 'wcj_get_the_ip' ) ) {
1040
- /**
1041
- * wcj_get_the_ip.
1042
- *
1043
- * @see http://stackoverflow.com/questions/3003145/how-to-get-the-client-ip-address-in-php
1044
- */
1045
- function wcj_get_the_ip( ) {
1046
- $ip = null;
1047
- if ( ! empty( $_SERVER['HTTP_CLIENT_IP'] ) ) {
1048
- $ip = $_SERVER['HTTP_CLIENT_IP'];
1049
- } elseif ( ! empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
1050
- $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
1051
- } else {
1052
- $ip = $_SERVER['REMOTE_ADDR'];
1053
- }
1054
- return $ip;
1055
- }
1056
- }
1057
-
1058
- if ( ! function_exists( 'wcj_get_shortcodes_list' ) ) {
1059
- /**
1060
- * wcj_get_shortcodes_list.
1061
- */
1062
- function wcj_get_shortcodes_list() {
1063
- $the_array = apply_filters( 'wcj_shortcodes_list', array() );
1064
- return implode( ', ', $the_array )/* . ' (' . count( $the_array ) . ')' */;
1065
- }
1066
- }
1067
-
1068
- if ( ! function_exists( 'wcj_get_order_statuses' ) ) {
1069
- /**
1070
- * wcj_get_order_statuses.
1071
- */
1072
- function wcj_get_order_statuses( $cut_the_prefix ) {
1073
- $order_statuses = array(
1074
- 'wc-pending' => _x( 'Pending Payment', 'Order status', 'woocommerce' ),
1075
- 'wc-processing' => _x( 'Processing', 'Order status', 'woocommerce' ),
1076
- 'wc-on-hold' => _x( 'On Hold', 'Order status', 'woocommerce' ),
1077
- 'wc-completed' => _x( 'Completed', 'Order status', 'woocommerce' ),
1078
- 'wc-cancelled' => _x( 'Cancelled', 'Order status', 'woocommerce' ),
1079
- 'wc-refunded' => _x( 'Refunded', 'Order status', 'woocommerce' ),
1080
- 'wc-failed' => _x( 'Failed', 'Order status', 'woocommerce' ),
1081
- );
1082
- $order_statuses = apply_filters( 'wc_order_statuses', $order_statuses );
1083
- if ( $cut_the_prefix ) {
1084
- $order_statuses_no_prefix = array();
1085
- foreach ( $order_statuses as $status => $desc ) {
1086
- $order_statuses_no_prefix[ substr( $status, 3 ) ] = $desc;
1087
- }
1088
- return $order_statuses_no_prefix;
1089
- }
1090
- return $order_statuses;
1091
- }
1092
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/functions/wcj-general-functions.php ADDED
@@ -0,0 +1,404 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Functions
4
+ *
5
+ * @version 2.9.0
6
+ * @author Algoritmika Ltd.
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) exit;
10
+
11
+ if ( ! function_exists( 'wcj_is_module_deprecated' ) ) {
12
+ /**
13
+ * wcj_is_module_deprecated.
14
+ *
15
+ * @version 2.9.0
16
+ * @since 2.9.0
17
+ * @return array|false
18
+ */
19
+ function wcj_is_module_deprecated( $module_id, $by_module_option = false, $check_for_disabled = false ) {
20
+ if ( $check_for_disabled ) {
21
+ $module_option = ( $by_module_option ? $module_id : 'wcj_' . $module_id . '_enabled' );
22
+ if ( 'yes' === get_option( $module_option, 'no' ) ) {
23
+ return false;
24
+ }
25
+ }
26
+ if ( $by_module_option ) {
27
+ $module_id = str_replace( array( 'wcj_', '_enabled' ), '', $module_id );
28
+ }
29
+ $deprecated_and_replacement_modules = array(
30
+ 'product_info' => array(
31
+ 'cat' => 'products',
32
+ 'module' => 'product_custom_info',
33
+ 'title' => __( 'Product Info', 'woocommerce-jetpack' ),
34
+ ),
35
+ );
36
+ if ( ! array_key_exists( $module_id, $deprecated_and_replacement_modules ) ) {
37
+ return false;
38
+ } else {
39
+ return ( isset( $deprecated_and_replacement_modules[ $module_id ] ) ? $deprecated_and_replacement_modules[ $module_id ] : array() );
40
+ }
41
+ }
42
+ }
43
+
44
+ if ( ! function_exists( 'wcj_customer_get_country' ) ) {
45
+ /**
46
+ * wcj_customer_get_country.
47
+ *
48
+ * @version 2.8.0
49
+ * @since 2.8.0
50
+ */
51
+ function wcj_customer_get_country() {
52
+ return ( WCJ_IS_WC_VERSION_BELOW_3 ? WC()->customer->get_country() : WC()->customer->get_billing_country() );
53
+ }
54
+ }
55
+
56
+ if ( ! function_exists( 'wcj_is_bot' ) ) {
57
+ /**
58
+ * wcj_is_bot.
59
+ *
60
+ * @version 2.5.7
61
+ * @since 2.5.6
62
+ */
63
+ function wcj_is_bot() {
64
+ return ( isset( $_SERVER['HTTP_USER_AGENT'] ) && preg_match( '/Google-Structured-Data-Testing-Tool|bot|crawl|slurp|spider/i', $_SERVER['HTTP_USER_AGENT'] ) ) ? true : false;
65
+ }
66
+ }
67
+
68
+ if ( ! function_exists( 'wcj_add_files_upload_form_to_checkout_frontend' ) ) {
69
+ /**
70
+ * wcj_add_files_upload_form_to_checkout_frontend.
71
+ *
72
+ * @version 2.5.2
73
+ * @since 2.5.2
74
+ */
75
+ function wcj_add_files_upload_form_to_checkout_frontend() {
76
+ WCJ()->modules['checkout_files_upload']->add_files_upload_form_to_checkout_frontend_all( true );
77
+ }
78
+ }
79
+
80
+ if ( ! function_exists( 'wcj_variation_radio_button' ) ) {
81
+ /**
82
+ * wcj_variation_radio_button.
83
+ *
84
+ * @version 2.5.0
85
+ * @since 2.4.8
86
+ */
87
+ function wcj_variation_radio_button( $_product, $variation ) {
88
+ $attributes_html = '';
89
+ $variation_attributes_display_values = array();
90
+ $is_checked = true;
91
+ foreach ( $variation['attributes'] as $attribute_full_name => $attribute_value ) {
92
+
93
+ $attributes_html .= ' ' . $attribute_full_name . '="' . $attribute_value . '"';
94
+
95
+ $attribute_name = $attribute_full_name;
96
+ $prefix = 'attribute_';
97
+ if ( substr( $attribute_full_name, 0, strlen( $prefix ) ) === $prefix ) {
98
+ $attribute_name = substr( $attribute_full_name, strlen( $prefix ) );
99
+ }
100
+
101
+ $checked = isset( $_REQUEST[ 'attribute_' . sanitize_title( $attribute_name ) ] ) ? wc_clean( $_REQUEST[ 'attribute_' . sanitize_title( $attribute_name ) ] ) : $_product->get_variation_default_attribute( $attribute_name );
102
+ if ( $checked != $attribute_value ) $is_checked = false;
103
+
104
+ $terms = get_terms( $attribute_name );
105
+ foreach ( $terms as $term ) {
106
+ if ( is_object( $term ) && isset( $term->slug ) && $term->slug === $attribute_value && isset( $term->name ) ) {
107
+ $attribute_value = $term->name;
108
+ }
109
+ }
110
+
111
+ $variation_attributes_display_values[] = $attribute_value;
112
+
113
+ }
114
+ $variation_title = implode( ', ', $variation_attributes_display_values ) . ' (' . wc_price( $variation['display_price'] ) . ')';
115
+ $variation_id = $variation['variation_id'];
116
+ $is_checked = checked( $is_checked, true, false );
117
+
118
+ echo '<td style="width:10%;">';
119
+ echo '<input id="wcj_variation_' . $variation_id . '" name="wcj_variations" type="radio"' . $attributes_html . ' variation_id="' . $variation_id . '"' . $is_checked . '>';
120
+ echo '</td>';
121
+ echo '<td>';
122
+ echo '<label for="wcj_variation_' . $variation_id . '">';
123
+ echo $variation_title;
124
+ if ( '' != ( $variation_description = get_post_meta( $variation_id, '_variation_description', true ) ) ) {
125
+ echo '<br>';
126
+ // echo '<small>' . $variation['variation_description'] . '</small>';
127
+ echo '<small>' . $variation_description . '</small>';
128
+ }
129
+ echo '</label>';
130
+ echo '</td>';
131
+ }
132
+ }
133
+
134
+ if ( ! function_exists( 'wcj_current_filter_priority' ) ) {
135
+ /*
136
+ * wcj_current_filter_priority.
137
+ *
138
+ * @version 2.5.8
139
+ * @since 2.4.6
140
+ */
141
+ function wcj_current_filter_priority() {
142
+ global $wp_filter;
143
+ $current_filter_data = $wp_filter[ current_filter() ];
144
+ if ( class_exists( 'WP_Hook' ) && is_a( $current_filter_data, 'WP_Hook' ) ) {
145
+ // since WordPress v4.7
146
+ return $current_filter_data->current_priority();
147
+ } else {
148
+ // before WordPress v4.7
149
+ return key( $current_filter_data );
150
+ }
151
+ }
152
+ }
153
+
154
+ if ( ! function_exists( 'wcj_maybe_unserialize_and_implode' ) ) {
155
+ /*
156
+ * wcj_maybe_unserialize_and_implode.
157
+ *
158
+ * @version 2.8.0
159
+ * @since 2.8.0
160
+ * @return string
161
+ * @todo `if ( ! is_array() )`
162
+ */
163
+ function wcj_maybe_unserialize_and_implode( $value, $glue = ' ' ) {
164
+ if ( is_serialized( $value ) ) {
165
+ $value = unserialize( $value );
166
+ if ( is_array( $value ) ) {
167
+ $value = implode( $glue, $value );
168
+ }
169
+ }
170
+ return $value;
171
+ }
172
+ }
173
+
174
+ if ( ! function_exists( 'wcj_get_left_to_free_shipping' ) ) {
175
+ /*
176
+ * wcj_get_left_to_free_shipping.
177
+ *
178
+ * @version 2.5.8
179
+ * @since 2.4.4
180
+ * @return string
181
+ */
182
+ function wcj_get_left_to_free_shipping( $content, $multiply_by = 1 ) {
183
+ if ( '' == $content ) {
184
+ $content = __( '%left_to_free% left to free shipping', 'woocommerce-jetpack' );
185
+ }
186
+ $min_free_shipping_amount = 0;
187
+ $current_wc_version = get_option( 'woocommerce_version', null );
188
+ if ( version_compare( $current_wc_version, '2.6.0', '<' ) ) {
189
+ $free_shipping = new WC_Shipping_Free_Shipping();
190
+ if ( in_array( $free_shipping->requires, array( 'min_amount', 'either', 'both' ) ) ) {
191
+ $min_free_shipping_amount = $free_shipping->min_amount;
192
+ }
193
+ } else {
194
+ $legacy_free_shipping = new WC_Shipping_Legacy_Free_Shipping();
195
+ if ( 'yes' === $legacy_free_shipping->enabled ) {
196
+ if ( in_array( $legacy_free_shipping->requires, array( 'min_amount', 'either', 'both' ) ) ) {
197
+ $min_free_shipping_amount = $legacy_free_shipping->min_amount;
198
+ }
199
+ }
200
+ if ( 0 == $min_free_shipping_amount ) {
201
+ if ( function_exists( 'WC' ) && ( $wc_shipping = WC()->shipping ) && ( $wc_cart = WC()->cart ) ) {
202
+ if ( $wc_shipping->enabled ) {
203
+ if ( $packages = $wc_cart->get_shipping_packages() ) {
204
+ $shipping_methods = $wc_shipping->load_shipping_methods( $packages[0] );
205
+ foreach ( $shipping_methods as $shipping_method ) {
206
+ if ( 'yes' === $shipping_method->enabled && 0 != $shipping_method->instance_id ) {
207
+ if ( 'WC_Shipping_Free_Shipping' === get_class( $shipping_method ) ) {
208
+ if ( in_array( $shipping_method->requires, array( 'min_amount', 'either', 'both' ) ) ) {
209
+ $min_free_shipping_amount = $shipping_method->min_amount;
210
+ break;
211
+ }
212
+ }
213
+ }
214
+ }
215
+ }
216
+ }
217
+ }
218
+ }
219
+ }
220
+ if ( 0 != $min_free_shipping_amount ) {
221
+ if ( isset( WC()->cart->cart_contents_total ) ) {
222
+ $total = ( WC()->cart->prices_include_tax ) ? WC()->cart->cart_contents_total + array_sum( WC()->cart->taxes ) : WC()->cart->cart_contents_total;
223
+ if ( $total >= $min_free_shipping_amount ) {
224
+ return do_shortcode( get_option( 'wcj_shipping_left_to_free_info_content_reached', __( 'You have Free delivery', 'woocommerce-jetpack' ) ) );
225
+ } else {
226
+ $content = str_replace( '%left_to_free%', wc_price( ( $min_free_shipping_amount - $total ) * $multiply_by ), $content );
227
+ $content = str_replace( '%free_shipping_min_amount%', wc_price( ( $min_free_shipping_amount ) * $multiply_by ), $content );
228
+ return $content;
229
+ }
230
+ }
231
+ }
232
+ }
233
+ }
234
+
235
+ if ( ! function_exists( 'wcj_get_cart_filters' ) ) {
236
+ /*
237
+ * wcj_get_cart_filters()
238
+ *
239
+ * @version 2.4.4
240
+ * @since 2.4.4
241
+ * @return array
242
+ */
243
+ function wcj_get_cart_filters() {
244
+ return array(
245
+ 'woocommerce_before_cart' => __( 'Before cart', 'woocommerce-jetpack' ),
246
+ 'woocommerce_before_cart_table' => __( 'Before cart table', 'woocommerce-jetpack' ),
247
+ 'woocommerce_before_cart_contents' => __( 'Before cart contents', 'woocommerce-jetpack' ),
248
+ 'woocommerce_cart_contents' => __( 'Cart contents', 'woocommerce-jetpack' ),
249
+ 'woocommerce_cart_coupon' => __( 'Cart coupon', 'woocommerce-jetpack' ),
250
+ 'woocommerce_cart_actions' => __( 'Cart actions', 'woocommerce-jetpack' ),
251
+ 'woocommerce_after_cart_contents' => __( 'After cart contents', 'woocommerce-jetpack' ),
252
+ 'woocommerce_after_cart_table' => __( 'After cart table', 'woocommerce-jetpack' ),
253
+ 'woocommerce_cart_collaterals' => __( 'Cart collaterals', 'woocommerce-jetpack' ),
254
+ 'woocommerce_after_cart' => __( 'After cart', 'woocommerce-jetpack' ),
255
+
256
+ 'woocommerce_before_cart_totals' => __( 'Before cart totals', 'woocommerce-jetpack' ),
257
+ 'woocommerce_cart_totals_before_shipping' => __( 'Cart totals: Before shipping', 'woocommerce-jetpack' ),
258
+ 'woocommerce_cart_totals_after_shipping' => __( 'Cart totals: After shipping', 'woocommerce-jetpack' ),
259
+ 'woocommerce_cart_totals_before_order_total' => __( 'Cart totals: Before order total', 'woocommerce-jetpack' ),
260
+ 'woocommerce_cart_totals_after_order_total' => __( 'Cart totals: After order total', 'woocommerce-jetpack' ),
261
+ 'woocommerce_proceed_to_checkout' => __( 'Proceed to checkout', 'woocommerce-jetpack' ),
262
+ 'woocommerce_after_cart_totals' => __( 'After cart totals', 'woocommerce-jetpack' ),
263
+
264
+ 'woocommerce_before_shipping_calculator' => __( 'Before shipping calculator', 'woocommerce-jetpack' ),
265
+ 'woocommerce_after_shipping_calculator' => __( 'After shipping calculator', 'woocommerce-jetpack' ),
266
+
267
+ 'woocommerce_cart_is_empty' => __( 'If cart is empty', 'woocommerce-jetpack' ),
268
+ );
269
+ }
270
+ }
271
+
272
+ if ( ! function_exists( 'wcj_get_rates_for_tax_class' ) ) {
273
+ /* Used by admin settings page.
274
+ *
275
+ * @param string $tax_class
276
+ *
277
+ * @return array|null|object
278
+ *
279
+ * @version 2.3.10
280
+ * @since 2.3.10
281
+ */
282
+ function wcj_get_rates_for_tax_class( $tax_class ) {
283
+ global $wpdb;
284
+
285
+ // Get all the rates and locations. Snagging all at once should significantly cut down on the number of queries.
286
+ $rates = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM `{$wpdb->prefix}woocommerce_tax_rates` WHERE `tax_rate_class` = %s ORDER BY `tax_rate_order`;", sanitize_title( $tax_class ) ) );
287
+ $locations = $wpdb->get_results( "SELECT * FROM `{$wpdb->prefix}woocommerce_tax_rate_locations`" );
288
+
289
+ // Set the rates keys equal to their ids.
290
+ $rates = array_combine( wp_list_pluck( $rates, 'tax_rate_id' ), $rates );
291
+
292
+ // Drop the locations into the rates array.
293
+ foreach ( $locations as $location ) {
294
+ // Don't set them for unexistent rates.
295
+ if ( ! isset( $rates[ $location->tax_rate_id ] ) ) {
296
+ continue;
297
+ }
298
+ // If the rate exists, initialize the array before appending to it.
299
+ if ( ! isset( $rates[ $location->tax_rate_id ]->{$location->location_type} ) ) {
300
+ $rates[ $location->tax_rate_id ]->{$location->location_type} = array();
301
+ }
302
+ $rates[ $location->tax_rate_id ]->{$location->location_type}[] = $location->location_code;
303
+ }
304
+
305
+ return $rates;
306
+ }
307
+ }
308
+
309
+ if ( ! function_exists( 'wcj_get_select_options' ) ) {
310
+ /*
311
+ * wcj_get_select_options()
312
+ *
313
+ * @version 2.5.5
314
+ * @since 2.3.0
315
+ * @return array
316
+ */
317
+ function wcj_get_select_options( $select_options_raw, $do_sanitize = true ) {
318
+ $select_options_raw = explode( PHP_EOL, $select_options_raw );
319
+ $select_options = array();
320
+ foreach ( $select_options_raw as $select_options_title ) {
321
+ $select_options_key = ( $do_sanitize ) ? sanitize_title( $select_options_title ) : $select_options_title;
322
+ $select_options[ $select_options_key ] = $select_options_title;
323
+ }
324
+ return $select_options;
325
+ }
326
+ }
327
+
328
+ if ( ! function_exists( 'wcj_is_frontend' ) ) {
329
+ /*
330
+ * is_frontend()
331
+ *
332
+ * @since 2.2.6
333
+ * @return boolean
334
+ */
335
+ function wcj_is_frontend() {
336
+ return ( ! is_admin() || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) ? true : false;
337
+ }
338
+ }
339
+
340
+ if ( ! function_exists( 'wcj_get_wcj_uploads_dir' ) ) {
341
+ /**
342
+ * wcj_get_wcj_uploads_dir.
343
+ *
344
+ * @version 2.9.0
345
+ * @todo no need to `mkdir` after `wcj_get_wcj_uploads_dir`
346
+ */
347
+ function wcj_get_wcj_uploads_dir( $subdir = '' ) {
348
+ $upload_dir = wp_upload_dir();
349
+ $upload_dir = $upload_dir['basedir'];
350
+ $upload_dir = $upload_dir . '/woocommerce_uploads';
351
+ if ( ! file_exists( $upload_dir ) ) {
352
+ mkdir( $upload_dir, 0755, true );
353
+ }
354
+ $upload_dir = $upload_dir . '/wcj_uploads';
355
+ if ( ! file_exists( $upload_dir ) ) {
356
+ mkdir( $upload_dir, 0755, true );
357
+ }
358
+ if ( '' != $subdir ) {
359
+ $upload_dir = $upload_dir . '/' . $subdir;
360
+ if ( ! file_exists( $upload_dir ) ) {
361
+ mkdir( $upload_dir, 0755, true );
362
+ }
363
+ }
364
+ return $upload_dir;
365
+ }
366
+ }
367
+
368
+ if ( ! function_exists( 'wcj_hex2rgb' ) ) {
369
+ /**
370
+ * wcj_hex2rgb.
371
+ */
372
+ function wcj_hex2rgb( $hex ) {
373
+ return sscanf( $hex, "#%2x%2x%2x" );
374
+ }
375
+ }
376
+
377
+ if ( ! function_exists( 'wcj_get_the_ip' ) ) {
378
+ /**
379
+ * wcj_get_the_ip.
380
+ *
381
+ * @see http://stackoverflow.com/questions/3003145/how-to-get-the-client-ip-address-in-php
382
+ */
383
+ function wcj_get_the_ip( ) {
384
+ $ip = null;
385
+ if ( ! empty( $_SERVER['HTTP_CLIENT_IP'] ) ) {
386
+ $ip = $_SERVER['HTTP_CLIENT_IP'];
387
+ } elseif ( ! empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
388
+ $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
389
+ } else {
390
+ $ip = $_SERVER['REMOTE_ADDR'];
391
+ }
392
+ return $ip;
393
+ }
394
+ }
395
+
396
+ if ( ! function_exists( 'wcj_get_shortcodes_list' ) ) {
397
+ /**
398
+ * wcj_get_shortcodes_list.
399
+ */
400
+ function wcj_get_shortcodes_list() {
401
+ $the_array = apply_filters( 'wcj_shortcodes_list', array() );
402
+ return implode( ', ', $the_array )/* . ' (' . count( $the_array ) . ')' */;
403
+ }
404
+ }
includes/functions/wcj-invoicing-functions.php CHANGED
@@ -2,10 +2,200 @@
2
  /**
3
  * Booster for WooCommerce - Functions - Invoicing
4
  *
5
- * @version 2.7.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  if ( ! function_exists( 'wcj_get_invoice_types' ) ) {
10
  /*
11
  * wcj_get_invoice_types.
@@ -123,11 +313,17 @@ if ( ! function_exists( 'wcj_get_invoice' ) ) {
123
  if ( ! function_exists( 'wcj_get_invoice_date' ) ) {
124
  /*
125
  * wcj_get_invoice_date.
 
 
126
  */
127
  function wcj_get_invoice_date( $order_id, $invoice_type_id, $extra_days, $date_format ) {
128
  $the_invoice = wcj_get_invoice( $order_id, $invoice_type_id );
129
- $extra_days_in_sec = $extra_days * 24 * 60 * 60;
130
- return date_i18n( $date_format, date( $the_invoice->get_invoice_date() ) + $extra_days_in_sec );
 
 
 
 
131
  }
132
  }
133
 
2
  /**
3
  * Booster for WooCommerce - Functions - Invoicing
4
  *
5
+ * @version 2.9.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
9
+ if ( ! function_exists( 'wcj_get_fonts_list' ) ) {
10
+ /**
11
+ * wcj_get_fonts_list.
12
+ *
13
+ * @version 2.9.0
14
+ * @since 2.9.0
15
+ */
16
+ function wcj_get_fonts_list() {
17
+ return array(
18
+ 'angsanaupc.ctg.z',
19
+ 'angsanaupc.php',
20
+ 'angsanaupc.z',
21
+ 'angsanaupcb.ctg.z',
22
+ 'angsanaupcb.php',
23
+ 'angsanaupcb.z',
24
+ 'angsanaupcbi.ctg.z',
25
+ 'angsanaupcbi.php',
26
+ 'angsanaupcbi.z',
27
+ 'angsanaupci.ctg.z',
28
+ 'angsanaupci.php',
29
+ 'angsanaupci.z',
30
+ 'cid0ct.php',
31
+ 'cordiaupc.ctg.z',
32
+ 'cordiaupc.php',
33
+ 'cordiaupc.z',
34
+ 'cordiaupcb.ctg.z',
35
+ 'cordiaupcb.php',
36
+ 'cordiaupcb.z',
37
+ 'cordiaupcbi.ctg.z',
38
+ 'cordiaupcbi.php',
39
+ 'cordiaupcbi.z',
40
+ 'cordiaupci.ctg.z',
41
+ 'cordiaupci.php',
42
+ 'cordiaupci.z',
43
+ 'courier.php',
44
+ 'courierb.php',
45
+ 'courierbi.php',
46
+ 'courieri.php',
47
+ 'dejavusans.ctg.z',
48
+ 'dejavusans.php',
49
+ 'dejavusans.z',
50
+ 'dejavusansb.ctg.z',
51
+ 'dejavusansb.php',
52
+ 'dejavusansb.z',
53
+ 'dejavusansbi.ctg.z',
54
+ 'dejavusansbi.php',
55
+ 'dejavusansbi.z',
56
+ 'droidsansfallback.ctg.z',
57
+ 'droidsansfallback.php',
58
+ 'droidsansfallback.z',
59
+ 'helvetica.php',
60
+ 'helveticab.php',
61
+ 'helveticabi.php',
62
+ 'helveticai.php',
63
+ 'stsongstdlight.php',
64
+ 'symbol.php',
65
+ 'thsarabun.ctg.z',
66
+ 'thsarabun.php',
67
+ 'thsarabun.z',
68
+ 'thsarabunb.ctg.z',
69
+ 'thsarabunb.php',
70
+ 'thsarabunb.z',
71
+ 'thsarabunbi.ctg.z',
72
+ 'thsarabunbi.php',
73
+ 'thsarabunbi.z',
74
+ 'thsarabuni.ctg.z',
75
+ 'thsarabuni.php',
76
+ 'thsarabuni.z',
77
+ 'times.php',
78
+ 'timesb.php',
79
+ 'timesbi.php',
80
+ 'timesi.php',
81
+ 'uni2cid_aj16.php',
82
+ 'zapfdingbats.php',
83
+ );
84
+ }
85
+ }
86
+
87
+ if ( ! function_exists( 'wcj_get_tcpdf_font' ) ) {
88
+ /**
89
+ * wcj_get_tcpdf_font.
90
+ *
91
+ * @version 2.9.0
92
+ * @since 2.9.0
93
+ */
94
+ function wcj_get_tcpdf_font( $invoice_type ) {
95
+ return ( wcj_check_tcpdf_fonts_version( true ) ?
96
+ get_option( 'wcj_invoicing_' . $invoice_type . '_general_font_family', 'helvetica' ) :
97
+ get_option( 'wcj_invoicing_' . $invoice_type . '_general_font_family_fallback', 'helvetica' )
98
+ );
99
+ }
100
+ }
101
+
102
+ if ( ! function_exists( 'wcj_get_tcpdf_fonts_version' ) ) {
103
+ /**
104
+ * wcj_get_tcpdf_fonts_version.
105
+ *
106
+ * @version 2.9.0
107
+ * @since 2.9.0
108
+ */
109
+ function wcj_get_tcpdf_fonts_version() {
110
+ return '2.9.0';
111
+ }
112
+ }
113
+
114
+ if ( ! function_exists( 'wcj_check_tcpdf_fonts_version' ) ) {
115
+ /**
116
+ * wcj_check_tcpdf_fonts_version.
117
+ *
118
+ * @version 2.9.0
119
+ * @since 2.9.0
120
+ */
121
+ function wcj_check_tcpdf_fonts_version( $force_file_check = false ) {
122
+ if ( 'yes' === get_option( 'wcj_invoicing_fonts_manager_do_not_download', 'no' ) ) {
123
+ return false;
124
+ }
125
+ $result = ( 0 == version_compare( get_option( 'wcj_invoicing_fonts_version', null ), wcj_get_tcpdf_fonts_version() ) );
126
+ if ( $result && $force_file_check ) {
127
+ $tcpdf_fonts_dir = wcj_get_wcj_uploads_dir( 'tcpdf_fonts' ) . '/';
128
+ $tcpdf_fonts_dir_files = scandir( $tcpdf_fonts_dir );
129
+ $tcpdf_fonts_files = wcj_get_fonts_list();
130
+ foreach ( $tcpdf_fonts_files as $tcpdf_fonts_file ) {
131
+ if ( ! in_array( $tcpdf_fonts_file, $tcpdf_fonts_dir_files ) ) {
132
+ return false;
133
+ }
134
+ }
135
+ }
136
+ return $result;
137
+ }
138
+ }
139
+
140
+ if ( ! function_exists( 'wcj_check_and_maybe_download_tcpdf_fonts' ) ) {
141
+ /**
142
+ * wcj_check_and_maybe_download_tcpdf_fonts.
143
+ *
144
+ * @version 2.9.0
145
+ * @since 2.9.0
146
+ * @todo (maybe) check file size > 0 or even for exact size (not only if file exists in directory)
147
+ * @todo (maybe) use `download_url()` instead of `file_get_contents()` or `curl` (in all Booster files)
148
+ */
149
+ function wcj_check_and_maybe_download_tcpdf_fonts( $force_download = false ) {
150
+ if ( 'yes' === get_option( 'wcj_invoicing_fonts_manager_do_not_download', 'no' ) ) {
151
+ return false;
152
+ }
153
+ if ( ! $force_download ) {
154
+ if ( wcj_check_tcpdf_fonts_version( true ) ) {
155
+ return true;
156
+ }
157
+ if ( ( (int) current_time( 'timestamp' ) - get_option( 'wcj_invoicing_fonts_version_timestamp', null ) ) < 60 * 60 ) {
158
+ return false;
159
+ }
160
+ }
161
+ update_option( 'wcj_invoicing_fonts_version_timestamp', (int) current_time( 'timestamp' ) );
162
+ $tcpdf_fonts_dir = wcj_get_wcj_uploads_dir( 'tcpdf_fonts' ) . '/';
163
+ if ( ! file_exists( $tcpdf_fonts_dir ) ) {
164
+ mkdir( $tcpdf_fonts_dir );
165
+ }
166
+ $tcpdf_fonts_dir_files = scandir( $tcpdf_fonts_dir );
167
+ $tcpdf_fonts_files = wcj_get_fonts_list();
168
+ require_once( ABSPATH . 'wp-admin/includes/file.php' );
169
+ foreach ( $tcpdf_fonts_files as $tcpdf_fonts_file ) {
170
+ if ( ! in_array( $tcpdf_fonts_file, $tcpdf_fonts_dir_files ) ) {
171
+ $url = 'http://storage.algoritmika.com/booster/tcpdf_fonts/' . $tcpdf_fonts_file;
172
+ if ( '.php' === substr( $tcpdf_fonts_file, -4 ) ) {
173
+ $url .= '.data';
174
+ }
175
+ $response_file_name = download_url( $url );
176
+ if ( ! is_wp_error( $response_file_name ) ) {
177
+ if ( $response = file_get_contents( $response_file_name ) ) {
178
+ if ( ! file_put_contents( $tcpdf_fonts_dir . $tcpdf_fonts_file, $response ) ) {
179
+ return false;
180
+ }
181
+ } else {
182
+ return false;
183
+ }
184
+ unlink( $response_file_name );
185
+ } else {
186
+ return false;
187
+ }
188
+ }
189
+ }
190
+ if (
191
+ update_option( 'wcj_invoicing_fonts_version', wcj_get_tcpdf_fonts_version() ) &&
192
+ update_option( 'wcj_invoicing_fonts_version_timestamp', (int) current_time( 'timestamp' ) )
193
+ ) {
194
+ return true;
195
+ }
196
+ }
197
+ }
198
+
199
  if ( ! function_exists( 'wcj_get_invoice_types' ) ) {
200
  /*
201
  * wcj_get_invoice_types.
313
  if ( ! function_exists( 'wcj_get_invoice_date' ) ) {
314
  /*
315
  * wcj_get_invoice_date.
316
+ *
317
+ * @version 2.9.0
318
  */
319
  function wcj_get_invoice_date( $order_id, $invoice_type_id, $extra_days, $date_format ) {
320
  $the_invoice = wcj_get_invoice( $order_id, $invoice_type_id );
321
+ if ( $invoice_date_timestamp = $the_invoice->get_invoice_date() ) {
322
+ $extra_days_in_sec = $extra_days * 24 * 60 * 60;
323
+ return date_i18n( $date_format, $invoice_date_timestamp + $extra_days_in_sec );
324
+ } else {
325
+ return '';
326
+ }
327
  }
328
  }
329
 
includes/functions/wcj-order-functions.php ADDED
@@ -0,0 +1,168 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Functions - Order
4
+ *
5
+ * @version 2.9.0
6
+ * @since 2.9.0
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit;
11
+
12
+ if ( ! function_exists( 'wcj_get_order_id' ) ) {
13
+ /**
14
+ * wcj_get_order_id.
15
+ *
16
+ * @version 2.7.0
17
+ * @since 2.7.0
18
+ */
19
+ function wcj_get_order_id( $_order ) {
20
+ return ( WCJ_IS_WC_VERSION_BELOW_3 ) ? $_order->id : $_order->get_id();
21
+ }
22
+ }
23
+
24
+ if ( ! function_exists( 'wcj_get_order_currency' ) ) {
25
+ /**
26
+ * wcj_get_order_currency.
27
+ *
28
+ * @version 2.7.0
29
+ * @since 2.7.0
30
+ */
31
+ function wcj_get_order_currency( $_order ) {
32
+ return ( WCJ_IS_WC_VERSION_BELOW_3 ? $_order->get_order_currency() : $_order->get_currency() );
33
+ }
34
+ }
35
+
36
+ if ( ! function_exists( 'wcj_get_order_item_meta_info' ) ) {
37
+ /**
38
+ * wcj_get_order_item_meta_info.
39
+ *
40
+ * from woocommerce\includes\admin\meta-boxes\views\html-order-item-meta.php
41
+ *
42
+ * @version 2.8.0
43
+ * @since 2.5.9
44
+ */
45
+ function wcj_get_order_item_meta_info( $item_id, $item, $_order, $exclude_wcj_meta = false, $_product = null ) {
46
+ $meta_info = '';
47
+ $metadata = ( WCJ_IS_WC_VERSION_BELOW_3 ? $_order->has_meta( $item_id ) : $item->get_meta_data() );
48
+ if ( $metadata ) {
49
+ $meta_info = array();
50
+ foreach ( $metadata as $meta ) {
51
+
52
+ $_meta_key = ( WCJ_IS_WC_VERSION_BELOW_3 ? $meta['meta_key'] : $meta->key );
53
+ $_meta_value = ( WCJ_IS_WC_VERSION_BELOW_3 ? $meta['meta_value'] : $meta->value );
54
+
55
+ // Skip hidden core fields
56
+ if ( in_array( $_meta_key, apply_filters( 'woocommerce_hidden_order_itemmeta', array(
57
+ '_qty',
58
+ '_tax_class',
59
+ '_product_id',
60
+ '_variation_id',
61
+ '_line_subtotal',
62
+ '_line_subtotal_tax',
63
+ '_line_total',
64
+ '_line_tax',
65
+ 'method_id',
66
+ 'cost'
67
+ ) ) ) ) {
68
+ continue;
69
+ }
70
+
71
+ if ( $exclude_wcj_meta && ( 'wcj' === substr( $_meta_key, 0, 3 ) || '_wcj' === substr( $_meta_key, 0, 4 ) ) ) {
72
+ continue;
73
+ }
74
+
75
+ if ( $exclude_wcj_meta && 'is_custom' === $_meta_key ) {
76
+ continue;
77
+ }
78
+
79
+ // Skip serialised meta
80
+ if ( is_serialized( $_meta_value ) || is_array( $_meta_value ) ) {
81
+ continue;
82
+ }
83
+
84
+ // Get attribute data
85
+ if ( taxonomy_exists( wc_sanitize_taxonomy_name( $_meta_key ) ) ) {
86
+ $term = get_term_by( 'slug', $_meta_value, wc_sanitize_taxonomy_name( $_meta_key ) );
87
+ $_meta_key = wc_attribute_label( wc_sanitize_taxonomy_name( $_meta_key ) );
88
+ $_meta_value = isset( $term->name ) ? $term->name : $_meta_value;
89
+ } else {
90
+ $the_product = null;
91
+ if ( is_object( $_product ) ) {
92
+ $the_product = $_product;
93
+ } elseif ( is_object( $item ) ) {
94
+ $the_product = $_order->get_product_from_item( $item );
95
+ }
96
+ $_meta_key = ( is_object( $the_product ) ) ? wc_attribute_label( $_meta_key, $the_product ) : $_meta_key;
97
+ }
98
+ $meta_info[] = wp_kses_post( rawurldecode( $_meta_key ) ) . ': ' . wp_kses_post( rawurldecode( $_meta_value ) );
99
+ }
100
+ $meta_info = implode( ', ', $meta_info );
101
+ }
102
+ return $meta_info;
103
+ }
104
+ }
105
+
106
+ if ( ! function_exists( 'wcj_get_order_statuses' ) ) {
107
+ /**
108
+ * wcj_get_order_statuses.
109
+ */
110
+ function wcj_get_order_statuses( $cut_the_prefix ) {
111
+ $order_statuses = array(
112
+ 'wc-pending' => _x( 'Pending Payment', 'Order status', 'woocommerce' ),
113
+ 'wc-processing' => _x( 'Processing', 'Order status', 'woocommerce' ),
114
+ 'wc-on-hold' => _x( 'On Hold', 'Order status', 'woocommerce' ),
115
+ 'wc-completed' => _x( 'Completed', 'Order status', 'woocommerce' ),
116
+ 'wc-cancelled' => _x( 'Cancelled', 'Order status', 'woocommerce' ),
117
+ 'wc-refunded' => _x( 'Refunded', 'Order status', 'woocommerce' ),
118
+ 'wc-failed' => _x( 'Failed', 'Order status', 'woocommerce' ),
119
+ );
120
+ $order_statuses = apply_filters( 'wc_order_statuses', $order_statuses );
121
+ if ( $cut_the_prefix ) {
122
+ $order_statuses_no_prefix = array();
123
+ foreach ( $order_statuses as $status => $desc ) {
124
+ $order_statuses_no_prefix[ substr( $status, 3 ) ] = $desc;
125
+ }
126
+ return $order_statuses_no_prefix;
127
+ }
128
+ return $order_statuses;
129
+ }
130
+ }
131
+
132
+ if ( ! function_exists( 'wcj_get_order_statuses_v2' ) ) {
133
+ /**
134
+ * wcj_get_order_statuses_v2.
135
+ *
136
+ * @version 2.9.0
137
+ * @since 2.9.0
138
+ * @todo check `wcj_get_order_statuses`
139
+ */
140
+ function wcj_get_order_statuses_v2() {
141
+ $result = array();
142
+ $statuses = function_exists( 'wc_get_order_statuses' ) ? wc_get_order_statuses() : array();
143
+ foreach( $statuses as $status => $status_name ) {
144
+ $result[ substr( $status, 3 ) ] = $statuses[ $status ];
145
+ }
146
+ return $result;
147
+ }
148
+ }
149
+
150
+ if ( ! function_exists( 'wcj_order_get_payment_method' ) ) {
151
+ /**
152
+ * wcj_order_get_payment_method.
153
+ *
154
+ * @version 2.8.2
155
+ * @since 2.8.0
156
+ */
157
+ function wcj_order_get_payment_method( $_order ) {
158
+ if ( ! $_order || ! is_object( $_order ) ) {
159
+ return null;
160
+ }
161
+ if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
162
+ return ( isset( $_order->payment_method ) ? $_order->payment_method : null );
163
+ } else {
164
+ return ( method_exists( $_order, 'get_payment_method' ) ? $_order->get_payment_method() : null );
165
+ }
166
+ }
167
+ }
168
+
includes/functions/wcj-price-currency-functions.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Functions - Price and Currency
4
  *
5
- * @version 2.7.0
6
  * @since 2.7.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -41,6 +41,39 @@ if ( ! function_exists( 'wcj_add_change_price_hooks' ) ) {
41
  }
42
  }
43
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  if ( ! function_exists( 'wcj_get_currency_exchange_rate_product_base_currency' ) ) {
45
  /**
46
  * wcj_get_currency_exchange_rate_product_base_currency.
@@ -368,8 +401,6 @@ if ( ! function_exists( 'wcj_get_currencies_names_and_symbols' ) ) {
368
  return $currency_names_and_symbols;
369
  } */
370
  if ( 'all' === $scope || 'no_custom' === $scope ) {
371
- // $currencies = include( wcj_plugin_path() . '/includes/currencies/wcj-currencies.php' );
372
- // include( wcj_plugin_path() . '/includes/currencies/wcj-currencies.php' );
373
  $currencies = wcj_get_currencies_array();
374
  foreach( $currencies as $data ) {
375
  switch ( $result ) {
2
  /**
3
  * Booster for WooCommerce - Functions - Price and Currency
4
  *
5
+ * @version 2.9.0
6
  * @since 2.7.0
7
  * @author Algoritmika Ltd.
8
  */
41
  }
42
  }
43
 
44
+ if ( ! function_exists( 'wcj_remove_change_price_hooks' ) ) {
45
+ /**
46
+ * wcj_remove_change_price_hooks.
47
+ *
48
+ * @version 2.9.0
49
+ * @since 2.9.0
50
+ * @todo make one function from this and `wcj_add_change_price_hooks()`
51
+ */
52
+ function wcj_remove_change_price_hooks( $module_object, $priority, $include_shipping = true ) {
53
+ // Prices
54
+ remove_filter( WCJ_PRODUCT_GET_PRICE_FILTER, array( $module_object, 'change_price' ), $priority );
55
+ remove_filter( WCJ_PRODUCT_GET_SALE_PRICE_FILTER, array( $module_object, 'change_price' ), $priority );
56
+ remove_filter( WCJ_PRODUCT_GET_REGULAR_PRICE_FILTER, array( $module_object, 'change_price' ), $priority );
57
+ // Variations
58
+ remove_filter( 'woocommerce_variation_prices_price', array( $module_object, 'change_price' ), $priority );
59
+ remove_filter( 'woocommerce_variation_prices_regular_price', array( $module_object, 'change_price' ), $priority );
60
+ remove_filter( 'woocommerce_variation_prices_sale_price', array( $module_object, 'change_price' ), $priority );
61
+ remove_filter( 'woocommerce_get_variation_prices_hash', array( $module_object, 'get_variation_prices_hash' ), $priority );
62
+ if ( ! WCJ_IS_WC_VERSION_BELOW_3 ) {
63
+ remove_filter( 'woocommerce_product_variation_get_price', array( $module_object, 'change_price' ), $priority );
64
+ remove_filter( 'woocommerce_product_variation_get_regular_price', array( $module_object, 'change_price' ), $priority );
65
+ remove_filter( 'woocommerce_product_variation_get_sale_price', array( $module_object, 'change_price' ), $priority );
66
+ }
67
+ // Shipping
68
+ if ( $include_shipping ) {
69
+ remove_filter( 'woocommerce_package_rates', array( $module_object, 'change_price_shipping' ), $priority );
70
+ }
71
+ // Grouped products
72
+ remove_filter( 'woocommerce_get_price_including_tax', array( $module_object, 'change_price_grouped' ), $priority );
73
+ remove_filter( 'woocommerce_get_price_excluding_tax', array( $module_object, 'change_price_grouped' ), $priority );
74
+ }
75
+ }
76
+
77
  if ( ! function_exists( 'wcj_get_currency_exchange_rate_product_base_currency' ) ) {
78
  /**
79
  * wcj_get_currency_exchange_rate_product_base_currency.
401
  return $currency_names_and_symbols;
402
  } */
403
  if ( 'all' === $scope || 'no_custom' === $scope ) {
 
 
404
  $currencies = wcj_get_currencies_array();
405
  foreach( $currencies as $data ) {
406
  switch ( $result ) {
includes/functions/wcj-product-functions.php ADDED
@@ -0,0 +1,378 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Functions - Product
4
+ *
5
+ * @version 2.9.0
6
+ * @since 2.9.0
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit;
11
+
12
+ if ( ! function_exists( 'wcj_get_product' ) ) {
13
+ /*
14
+ * wcj_get_product.
15
+ */
16
+ function wcj_get_product( $product_id = 0 ) {
17
+ if ( 0 == $product_id ) $product_id = get_the_ID();
18
+ $the_product = new WCJ_Product( $product_id );
19
+ return $the_product;
20
+ }
21
+ }
22
+
23
+ if ( ! function_exists( 'wcj_get_product_id' ) ) {
24
+ /**
25
+ * wcj_get_product_id.
26
+ *
27
+ * @version 2.9.0
28
+ * @since 2.7.0
29
+ */
30
+ function wcj_get_product_id( $_product ) {
31
+ if ( ! $_product || ! is_object( $_product ) ) {
32
+ return 0;
33
+ }
34
+ if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
35
+ return ( isset( $_product->variation_id ) ) ? $_product->variation_id : $_product->id;
36
+ } else {
37
+ return $_product->get_id();
38
+ }
39
+ }
40
+ }
41
+
42
+ if ( ! function_exists( 'wcj_get_product_id_or_variation_parent_id' ) ) {
43
+ /**
44
+ * wcj_get_product_id_or_variation_parent_id.
45
+ *
46
+ * @version 2.9.0
47
+ * @since 2.7.0
48
+ */
49
+ function wcj_get_product_id_or_variation_parent_id( $_product ) {
50
+ if ( ! $_product || ! is_object( $_product ) ) {
51
+ return 0;
52
+ }
53
+ if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
54
+ return $_product->id;
55
+ } else {
56
+ return ( $_product->is_type( 'variation' ) ) ? $_product->get_parent_id() : $_product->get_id();
57
+ }
58
+ }
59
+ }
60
+
61
+ if ( ! function_exists( 'wcj_get_product_status' ) ) {
62
+ /**
63
+ * wcj_get_product_status.
64
+ *
65
+ * @version 2.7.0
66
+ * @since 2.7.0
67
+ */
68
+ function wcj_get_product_status( $_product ) {
69
+ return ( WCJ_IS_WC_VERSION_BELOW_3 ) ? $_product->post->post_status : $_product->get_status();
70
+ }
71
+ }
72
+
73
+ if ( ! function_exists( 'wcj_get_product_total_stock' ) ) {
74
+ /**
75
+ * wcj_get_product_total_stock.
76
+ *
77
+ * @version 2.7.0
78
+ * @since 2.7.0
79
+ */
80
+ function wcj_get_product_total_stock( $_product ) {
81
+ if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
82
+ return $_product->get_total_stock();
83
+ } else {
84
+ if ( $_product->is_type( array( 'variable', 'grouped' ) ) ) {
85
+ $total_stock = 0;
86
+ foreach ( $_product->get_children() as $child_id ) {
87
+ $child = wc_get_product( $child_id );
88
+ $total_stock += $child->get_stock_quantity();
89
+ }
90
+ return $total_stock;
91
+ } else {
92
+ return $_product->get_stock_quantity();
93
+ }
94
+ }
95
+ }
96
+ }
97
+
98
+ if ( ! function_exists( 'wcj_get_product_display_price' ) ) {
99
+ /**
100
+ * wcj_get_product_display_price.
101
+ *
102
+ * @version 2.8.0
103
+ * @since 2.7.0
104
+ */
105
+ function wcj_get_product_display_price( $_product, $price = '', $qty = 1 ) {
106
+ if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
107
+ return $_product->get_display_price( $price, $qty );
108
+ } else {
109
+ $minus_sign = '';
110
+ if ( $price < 0 ) {
111
+ $minus_sign = '-';
112
+ $price *= -1;
113
+ }
114
+ return $minus_sign . wc_get_price_to_display( $_product, array( 'price' => $price, 'qty' => $qty ) );
115
+ }
116
+ }
117
+ }
118
+
119
+ if ( ! function_exists( 'wcj_get_product_formatted_variation' ) ) {
120
+ /**
121
+ * wcj_get_product_formatted_variation.
122
+ *
123
+ * @version 2.7.0
124
+ * @since 2.7.0
125
+ */
126
+ function wcj_get_product_formatted_variation( $variation, $flat = false, $include_names = true ) {
127
+ if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
128
+ return $variation->get_formatted_variation_attributes( $flat );
129
+ } else {
130
+ return wc_get_formatted_variation( $variation, $flat, $include_names );
131
+ }
132
+ }
133
+ }
134
+
135
+ if ( ! function_exists( 'wcj_get_product_image_url' ) ) {
136
+ /**
137
+ * wcj_get_product_image_url.
138
+ *
139
+ * @version 2.5.7
140
+ * @since 2.5.7
141
+ * @todo placeholder
142
+ */
143
+ function wcj_get_product_image_url( $product_id, $image_size = 'shop_thumbnail' ) {
144
+ if ( has_post_thumbnail( $product_id ) ) {
145
+ $image_url = get_the_post_thumbnail_url( $product_id, $image_size );
146
+ } elseif ( ( $parent_id = wp_get_post_parent_id( $product_id ) ) && has_post_thumbnail( $parent_id ) ) {
147
+ $image_url = get_the_post_thumbnail_url( $parent_id, $image_size );
148
+ } else {
149
+ $image_url = '';
150
+ }
151
+ return $image_url;
152
+ }
153
+ }
154
+
155
+ if ( ! function_exists( 'wcj_get_product_input_fields' ) ) {
156
+ /*
157
+ * wcj_get_product_input_fields.
158
+ *
159
+ * @version 2.8.0
160
+ * @since 2.4.4
161
+ * @return string
162
+ */
163
+ function wcj_get_product_input_fields( $item ) {
164
+ $product_input_fields = array();
165
+ if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
166
+ foreach ( $item as $key => $value ) {
167
+ if ( false !== strpos( $key, 'wcj_product_input_fields_' ) ) {
168
+ $product_input_fields[] = wcj_maybe_unserialize_and_implode( $value );
169
+ }
170
+ }
171
+ } else {
172
+ foreach ( $item->get_meta_data() as $value ) {
173
+ if ( isset( $value->key ) && isset( $value->value ) && false !== strpos( $value->key, 'wcj_product_input_fields_' ) ) {
174
+ $product_input_fields[] = wcj_maybe_unserialize_and_implode( $value->value );
175
+ }
176
+ }
177
+ }
178
+ return ( ! empty( $product_input_fields ) ) ? implode( ', ', $product_input_fields ) : '';
179
+ }
180
+ }
181
+
182
+ if ( ! function_exists( 'wcj_get_products' ) ) {
183
+ /**
184
+ * wcj_get_products.
185
+ *
186
+ * @version 2.8.0
187
+ */
188
+ function wcj_get_products( $products = array(), $post_status = 'any', $block_size = 256, $add_variations = false ) {
189
+ $offset = 0;
190
+ while( true ) {
191
+ $args = array(
192
+ 'post_type' => 'product',
193
+ 'post_status' => $post_status,
194
+ 'posts_per_page' => $block_size,
195
+ 'offset' => $offset,
196
+ 'orderby' => 'title',
197
+ 'order' => 'ASC',
198
+ 'fields' => 'ids',
199
+ );
200
+ $loop = new WP_Query( $args );
201
+ if ( ! $loop->have_posts() ) {
202
+ break;
203
+ }
204
+ foreach ( $loop->posts as $post_id ) {
205
+ $products[ $post_id ] = get_the_title( $post_id );
206
+ if ( $add_variations ) {
207
+ $_product = wc_get_product( $post_id );
208
+ if ( $_product->is_type( 'variable' ) ) {
209
+ foreach ( $_product->get_children() as $child_id ) {
210
+ $products[ $child_id ] = get_the_title( $child_id );
211
+ }
212
+ }
213
+ }
214
+ }
215
+ $offset += $block_size;
216
+ }
217
+ return $products;
218
+ }
219
+ }
220
+
221
+ if ( ! function_exists( 'wcj_product_has_terms' ) ) {
222
+ /**
223
+ * wcj_product_has_terms.
224
+ *
225
+ * @version 2.8.2
226
+ * @version 2.8.2
227
+ */
228
+ function wcj_product_has_terms( $_product, $_values, $_term ) {
229
+ if ( is_string( $_values ) ) {
230
+ $_values = explode( ',', $_values );
231
+ }
232
+ if ( empty( $_values ) ) {
233
+ return false;
234
+ }
235
+ $product_categories = get_the_terms( wcj_get_product_id_or_variation_parent_id( $_product ), $_term );
236
+ if ( empty( $product_categories ) ) {
237
+ return false;
238
+ }
239
+ foreach ( $product_categories as $product_category ) {
240
+ foreach ( $_values as $_value ) {
241
+ if ( $product_category->slug === $_value ) {
242
+ return true;
243
+ }
244
+ }
245
+ }
246
+ return false;
247
+ }
248
+ }
249
+
250
+ if ( ! function_exists( 'wcj_is_product_wholesale_enabled_per_product' ) ) {
251
+ /**
252
+ * wcj_is_product_wholesale_enabled_per_product.
253
+ *
254
+ * @version 2.5.0
255
+ * @since 2.5.0
256
+ */
257
+ function wcj_is_product_wholesale_enabled_per_product( $product_id ) {
258
+ return (
259
+ 'yes' === get_option( 'wcj_wholesale_price_per_product_enable', 'yes' ) &&
260
+ 'yes' === get_post_meta( $product_id, '_' . 'wcj_wholesale_price_per_product_enabled', true )
261
+ ) ? true : false;
262
+ }
263
+ }
264
+
265
+ if ( ! function_exists( 'wcj_is_product_wholesale_enabled' ) ) {
266
+ /**
267
+ * wcj_is_product_wholesale_enabled.
268
+ *
269
+ * @version 2.5.4
270
+ */
271
+ function wcj_is_product_wholesale_enabled( $product_id ) {
272
+ if ( wcj_is_module_enabled( 'wholesale_price' ) ) {
273
+ if ( wcj_is_product_wholesale_enabled_per_product( $product_id ) ) {
274
+ return true;
275
+ } else {
276
+ $products_to_include_passed = false;
277
+ $products_to_include = get_option( 'wcj_wholesale_price_products_to_include', array() );
278
+ if ( empty ( $products_to_include ) ) {
279
+ $products_to_include_passed = true;
280
+ } else {
281
+ foreach ( $products_to_include as $id ) {
282
+ if ( $product_id == $id ) {
283
+ $products_to_include_passed = true;
284
+ }
285
+ }
286
+ }
287
+ $products_to_exclude_passed = false;
288
+ $products_to_exclude = get_option( 'wcj_wholesale_price_products_to_exclude', array() );
289
+ if ( empty ( $products_to_exclude ) ) {
290
+ $products_to_exclude_passed = true;
291
+ } else {
292
+ foreach ( $products_to_exclude as $id ) {
293
+ if ( $product_id == $id ) {
294
+ $products_to_exclude_passed = false;
295
+ }
296
+ }
297
+ }
298
+ return ( $products_to_include_passed && $products_to_exclude_passed );
299
+ }
300
+ }
301
+ return false;
302
+ }
303
+ }
304
+
305
+ if ( ! function_exists( 'wcj_get_the_terms' ) ) {
306
+ /**
307
+ * wcj_get_the_terms.
308
+ *
309
+ * @version 2.9.0
310
+ * @version 2.9.0
311
+ */
312
+ function wcj_get_the_terms( $product_id, $taxonomy ) {
313
+ $result = array();
314
+ $_terms = get_the_terms( $product_id, $taxonomy );
315
+ if ( ! empty( $_terms ) ) {
316
+ foreach( $_terms as $_term ) {
317
+ $result[] = $_term->term_id;
318
+ }
319
+ }
320
+ return $result;
321
+ }
322
+ }
323
+
324
+ if ( ! function_exists( 'wcj_is_product_term' ) ) {
325
+ /**
326
+ * wcj_is_product_term.
327
+ *
328
+ * @version 2.9.0
329
+ * @since 2.9.0
330
+ * @todo (maybe) check if $term_ids is empty
331
+ */
332
+ function wcj_is_product_term( $product_id, $term_ids, $taxonomy ) {
333
+ $product_terms = get_the_terms( $product_id, $taxonomy );
334
+ if ( empty( $product_terms ) ) {
335
+ return false;
336
+ }
337
+ foreach( $product_terms as $product_term ) {
338
+ if ( in_array( $product_term->term_id, $term_ids ) ) {
339
+ return true;
340
+ }
341
+ }
342
+ return false;
343
+ }
344
+ }
345
+
346
+ if ( ! function_exists( 'wcj_get_terms' ) ) {
347
+ /**
348
+ * wcj_get_terms.
349
+ *
350
+ * @version 2.8.0
351
+ * @version 2.8.0
352
+ */
353
+ function wcj_get_terms( $args ) {
354
+ if ( ! is_array( $args ) ) {
355
+ $_taxonomy = $args;
356
+ $args = array(
357
+ 'taxonomy' => $_taxonomy,
358
+ 'orderby' => 'name',
359
+ 'hide_empty' => false,
360
+ );
361
+ }
362
+ global $wp_version;
363
+ if ( version_compare( $wp_version, '4.5.0', '>=' ) ) {
364
+ $_terms = get_terms( $args );
365
+ } else {
366
+ $_taxonomy = $args['taxonomy'];
367
+ unset( $args['taxonomy'] );
368
+ $_terms = get_terms( $_taxonomy, $args );
369
+ }
370
+ $_terms_options = array();
371
+ if ( ! empty( $_terms ) && ! is_wp_error( $_terms ) ){
372
+ foreach ( $_terms as $_term ) {
373
+ $_terms_options[ $_term->term_id ] = $_term->name;
374
+ }
375
+ }
376
+ return $_terms_options;
377
+ }
378
+ }
includes/functions/wcj-reports-functions.php ADDED
@@ -0,0 +1,148 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Booster for WooCommerce - Functions - Reports
4
+ *
5
+ * @version 2.9.0
6
+ * @version 2.9.0
7
+ * @author Algoritmika Ltd.
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit;
11
+
12
+ if ( ! function_exists( 'wcj_get_product_sales_daily_report_columns' ) ) {
13
+ /*
14
+ * wcj_get_product_sales_daily_report_columns.
15
+ *
16
+ * @version 2.9.0
17
+ * @since 2.9.0
18
+ */
19
+ function wcj_get_product_sales_daily_report_columns() {
20
+ return array(
21
+ 'date' => __( 'Date', 'woocommerce-jetpack' ),
22
+ 'daily_total_sum' => __( 'Daily Total Sum', 'woocommerce-jetpack' ),
23
+ 'daily_total_quantity' => __( 'Daily Total Quantity', 'woocommerce-jetpack' ),
24
+ 'date' => __( 'Date', 'woocommerce-jetpack' ),
25
+ 'product_id' => __( 'Product ID', 'woocommerce-jetpack' ),
26
+ 'item_title' => __( 'Item Title', 'woocommerce-jetpack' ),
27
+ 'item_quantity' => __( 'Quantity', 'woocommerce-jetpack' ),
28
+ 'sum' => __( 'Sum', 'woocommerce-jetpack' ),
29
+ 'profit' => __( 'Profit', 'woocommerce-jetpack' ),
30
+ 'last_sale' => __( 'Last Sale Date', 'woocommerce-jetpack' ),
31
+ 'last_sale_order_id' => __( 'Last Sale Order ID', 'woocommerce-jetpack' ),
32
+ 'last_sale_order_status' => __( 'Last Sale Order Status', 'woocommerce-jetpack' ),
33
+ );
34
+ }
35
+ }
36
+
37
+ if ( ! function_exists( 'wcj_get_reports_standard_ranges' ) ) {
38
+ /*
39
+ * wcj_get_reports_standard_ranges.
40
+ *
41
+ * @version 2.9.0
42
+ * @since 2.9.0
43
+ */
44
+ function wcj_get_reports_standard_ranges() {
45
+ return array(
46
+ 'year' => array(
47
+ 'title' => __( 'Year', 'woocommerce' ),
48
+ 'start_date' => date( 'Y-01-01' ),
49
+ 'end_date' => date( 'Y-m-d' ),
50
+ ),
51
+ 'last_month' => array(
52
+ 'title' => __( 'Last month', 'woocommerce' ),
53
+ 'start_date' => date( 'Y-m-d', strtotime( 'first day of previous month' ) ),
54
+ 'end_date' => date( 'Y-m-d', strtotime( 'last day of previous month' ) ),
55
+ ),
56
+ 'this_month' => array(
57
+ 'title' => __( 'This month', 'woocommerce' ),
58
+ 'start_date' => date( 'Y-m-01' ),
59
+ 'end_date' => date( 'Y-m-d' ),
60
+ ),
61
+ 'last_7_days' => array(
62
+ 'title' => __( 'Last 7 days', 'woocommerce' ),
63
+ 'start_date' => date( 'Y-m-d', strtotime( '-7 days' ) ),
64
+ 'end_date' => date( 'Y-m-d' ),
65
+ ),
66
+ );
67
+ }
68
+ }
69
+
70
+ if ( ! function_exists( 'wcj_get_reports_custom_ranges' ) ) {
71
+ /*
72
+ * wcj_get_reports_custom_ranges.
73
+ *
74
+ * @version 2.9.0
75
+ * @since 2.9.0
76
+ */
77
+ function wcj_get_reports_custom_ranges() {
78
+ return array(
79
+ 'last_14_days' => array(
80
+ 'title' => __( 'Last 14 days', 'woocommerce-jetpack' ),
81
+ 'start_date' => date( 'Y-m-d', strtotime( '-14 days' ) ),
82
+ 'end_date' => date( 'Y-m-d' ),
83
+ ),
84
+ 'last_30_days' => array(
85
+ 'title' => __( 'Last 30 days', 'woocommerce-jetpack' ),
86
+ 'start_date' => date( 'Y-m-d', strtotime( '-30 days' ) ),
87
+ 'end_date' => date( 'Y-m-d' ),
88
+ ),
89
+ 'last_3_months' => array(
90
+ 'title' => __( 'Last 3 months', 'woocommerce-jetpack' ),
91
+ 'start_date' => date( 'Y-m-d', strtotime( '-3 months' ) ),
92
+ 'end_date' => date( 'Y-m-d' ),
93
+ ),
94
+ 'last_6_months' => array(
95
+ 'title' => __( 'Last 6 months', 'woocommerce-jetpack' ),
96
+ 'start_date' => date( 'Y-m-d', strtotime( '-6 months' ) ),
97
+ 'end_date' => date( 'Y-m-d' ),
98
+ ),
99
+ 'last_12_months' => array(
100
+ 'title' => __( 'Last 12 months', 'woocommerce-jetpack' ),
101
+ 'start_date' => date( 'Y-m-d', strtotime( '-12 months' ) ),
102
+ 'end_date' => date( 'Y-m-d' ),
103
+ ),
104
+ 'last_24_months' => array(
105
+ 'title' => __( 'Last 24 months', 'woocommerce-jetpack' ),
106
+ 'start_date' => date( 'Y-m-d', strtotime( '-24 months' ) ),
107
+ 'end_date' => date( 'Y-m-d' ),
108
+ ),
109
+ 'last_36_months' => array(
110
+ 'title' => __( 'Last 36 months', 'woocommerce-jetpack' ),
111
+ 'start_date' => date( 'Y-m-d', strtotime( '-36 months' ) ),
112
+ 'end_date' => date( 'Y-m-d' ),
113
+ ),
114
+ 'same_days_last_month' => array(
115
+ 'title' => __( 'Same days last month', 'woocommerce-jetpack' ),
116
+ 'start_date' => date( 'Y-m-01', strtotime( '-1 month' ) ),
117
+ 'end_date' => date( 'Y-m-d', strtotime( '-1 month' ) ),
118
+ ),
119
+ 'same_days_last_year' => array(
120
+ 'title' => __( 'Same days last year', 'woocommerce-jetpack' ),
121
+ 'start_date' => date( 'Y-m-01', strtotime( '-1 year' ) ),
122
+ 'end_date' => date( 'Y-m-d', strtotime( '-1 year' ) ),
123
+ ),
124
+ 'last_year' => array(
125
+ 'title' => __( 'Last year', 'woocommerce-jetpack' ),
126
+ 'start_date' => date( 'Y-01-01', strtotime( '-1 year' ) ),
127
+ 'end_date' => date( 'Y-12-31', strtotime( '-1 year' ) ),
128
+ ),
129
+ 'yesterday' => array(
130
+ 'title' => __( 'Yesterday', 'woocommerce-jetpack' ),
131
+ 'start_date' => date( 'Y-m-d', strtotime( '-1 day' ) ),
132
+ 'end_date' => date( 'Y-m-d', strtotime( '-1 day' ) ),
133
+ ),
134
+ 'today' => array(
135
+ 'title' => __( 'Today', 'woocommerce-jetpack' ),
136
+ 'start_date' => date( 'Y-m-d' ),
137
+ 'end_date' => date( 'Y-m-d' ),
138
+ ),
139
+ /*
140
+ 'last_week' => array(
141
+ 'title' => __( 'Last week', 'woocommerce-jetpack' ),
142
+ 'start_date' => date( 'Y-m-d', strtotime( 'last monday' ) ),
143
+ 'end_date' => date( 'Y-m-d', strtotime( 'last sunday' ) ),
144
+ ),
145
+ */
146
+ );
147
+ }
148
+ }
includes/functions/wcj-user-roles-functions.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Functions - User Roles
4
  *
5
- * @version 2.7.0
6
  * @since 2.7.0
7
  * @author Algoritmika Ltd.
8
  */
@@ -13,12 +13,12 @@ if ( ! function_exists( 'is_shop_manager' ) ) {
13
  /**
14
  * is_shop_manager.
15
  *
16
- * @return bool
 
17
  */
18
  function is_shop_manager( $user_id = 0 ) {
19
  $the_user = ( 0 == $user_id ) ? wp_get_current_user() : get_user_by( 'id', $user_id );
20
- // if ( isset( $the_user['roles'][0] ) && 'shop_manager' === $the_user['roles'][0] ) {
21
- return ( isset( $the_user->roles[0] ) && 'shop_manager' === $the_user->roles[0] ) ? true : false;
22
  }
23
  }
24
 
@@ -35,14 +35,51 @@ if ( ! function_exists( 'wcj_get_current_user_all_roles' ) ) {
35
  }
36
  }
37
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  if ( ! function_exists( 'wcj_get_current_user_first_role' ) ) {
39
  /**
40
  * wcj_get_current_user_first_role.
41
  *
42
- * @version 2.5.3
43
  * @since 2.5.3
44
  */
45
  function wcj_get_current_user_first_role() {
 
 
 
 
 
 
46
  $current_user = wp_get_current_user();
47
  return ( isset( $current_user->roles[0] ) && '' != $current_user->roles[0] ) ? $current_user->roles[0] : 'guest';
48
  }
@@ -96,15 +133,23 @@ if ( ! function_exists( 'wcj_is_user_role' ) ) {
96
  /**
97
  * wcj_is_user_role.
98
  *
99
- * @version 2.5.2
100
  * @since 2.5.0
101
  * @return bool
102
  */
103
  function wcj_is_user_role( $user_role, $user_id = 0 ) {
104
- $the_user = ( 0 == $user_id ) ? wp_get_current_user() : get_user_by( 'id', $user_id );
105
- if ( ! isset( $the_user->roles ) || empty( $the_user->roles ) ) {
106
- $the_user->roles = array( 'guest' );
 
 
 
 
 
 
 
 
 
107
  }
108
- return ( isset( $the_user->roles ) && is_array( $the_user->roles ) && in_array( $user_role, $the_user->roles ) ) ? true : false;
109
  }
110
- }
2
  /**
3
  * Booster for WooCommerce - Functions - User Roles
4
  *
5
+ * @version 2.9.0
6
  * @since 2.7.0
7
  * @author Algoritmika Ltd.
8
  */
13
  /**
14
  * is_shop_manager.
15
  *
16
+ * @version 2.9.0
17
+ * @return bool
18
  */
19
  function is_shop_manager( $user_id = 0 ) {
20
  $the_user = ( 0 == $user_id ) ? wp_get_current_user() : get_user_by( 'id', $user_id );
21
+ return ( isset( $the_user->roles[0] ) && 'shop_manager' === $the_user->roles[0] );
 
22
  }
23
  }
24
 
35
  }
36
  }
37
 
38
+ if ( ! function_exists( 'wcj_is_user_logged_in' ) ) {
39
+ /**
40
+ * wcj_is_user_logged_in.
41
+ *
42
+ * @version 2.9.0
43
+ * @since 2.9.0
44
+ */
45
+ function wcj_is_user_logged_in() {
46
+ if ( ! function_exists( 'is_user_logged_in' ) ) {
47
+ require_once( ABSPATH . 'wp-includes/pluggable.php' );
48
+ }
49
+ return is_user_logged_in();
50
+ }
51
+ }
52
+
53
+ if ( ! function_exists( 'wcj_is_booster_role_changer_enabled' ) ) {
54
+ /**
55
+ * wcj_is_booster_role_changer_enabled.
56
+ *
57
+ * @version 2.9.0
58
+ * @since 2.9.0
59
+ */
60
+ function wcj_is_booster_role_changer_enabled() {
61
+ return (
62
+ 'yes' === apply_filters( 'booster_get_option', 'no', get_option( 'wcj_general_user_role_changer_enabled', 'no' ) ) &&
63
+ wcj_is_user_logged_in() &&
64
+ wcj_is_user_role( get_option( 'wcj_general_user_role_changer_enabled_for', array( 'administrator', 'shop_manager' ) ) )
65
+ );
66
+ }
67
+ }
68
+
69
  if ( ! function_exists( 'wcj_get_current_user_first_role' ) ) {
70
  /**
71
  * wcj_get_current_user_first_role.
72
  *
73
+ * @version 2.9.0
74
  * @since 2.5.3
75
  */
76
  function wcj_get_current_user_first_role() {
77
+ if ( wcj_is_module_enabled( 'general' ) && wcj_is_booster_role_changer_enabled() ) {
78
+ $current_user_id = get_current_user_id();
79
+ if ( '' != ( $role_by_meta = get_user_meta( $current_user_id, '_' . 'wcj_booster_user_role', true ) ) ) {
80
+ return $role_by_meta;
81
+ }
82
+ }
83
  $current_user = wp_get_current_user();
84
  return ( isset( $current_user->roles[0] ) && '' != $current_user->roles[0] ) ? $current_user->roles[0] : 'guest';
85
  }
133
  /**
134
  * wcj_is_user_role.
135
  *
136
+ * @version 2.9.0
137
  * @since 2.5.0
138
  * @return bool
139
  */
140
  function wcj_is_user_role( $user_role, $user_id = 0 ) {
141
+ $_user = ( 0 == $user_id ) ? wp_get_current_user() : get_user_by( 'id', $user_id );
142
+ if ( ! isset( $_user->roles ) || empty( $_user->roles ) ) {
143
+ $_user->roles = array( 'guest' );
144
+ }
145
+ if ( ! is_array( $_user->roles ) ) {
146
+ return false;
147
+ }
148
+ if ( is_array( $user_role ) ) {
149
+ $_intersect = array_intersect( $user_role, $_user->roles );
150
+ return ( ! empty( $_intersect ) );
151
+ } else {
152
+ return ( in_array( $user_role, $_user->roles ) );
153
  }
 
154
  }
155
+ }
includes/gateways/class-wc-gateway-wcj-custom.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Custom Payment Gateway
4
  *
5
- * @version 2.8.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -17,14 +17,14 @@ if ( ! function_exists( 'init_wc_gateway_wcj_custom_class' ) ) {
17
  /**
18
  * WC_Gateway_WCJ_Custom_Template class.
19
  *
20
- * @version 2.8.0
21
  */
22
  class WC_Gateway_WCJ_Custom_Template extends WC_Payment_Gateway {
23
 
24
  /**
25
  * set_icon
26
  */
27
- /* public function set_icon() {
28
  $icon_url = get_option( 'wcj_payment_gateways_icons_woocommerce_wcj_custom_icon', '' );
29
  if ( $icon_url === '' )
30
  return $this->get_option( 'icon', '' );
@@ -36,7 +36,7 @@ if ( ! function_exists( 'init_wc_gateway_wcj_custom_class' ) ) {
36
  *
37
  * @version 2.5.7
38
  */
39
- public function init_form_fields() {
40
  global $woocommerce;
41
 
42
  $shipping_methods = array();
@@ -190,7 +190,7 @@ if ( ! function_exists( 'init_wc_gateway_wcj_custom_class' ) ) {
190
  * @version 2.5.6
191
  * @return bool
192
  */
193
- public function is_available() {
194
 
195
  // Check min amount
196
  $min_amount = apply_filters( 'booster_get_option', 0, $this->min_amount );
@@ -284,7 +284,7 @@ if ( ! function_exists( 'init_wc_gateway_wcj_custom_class' ) ) {
284
  /**
285
  * Output for the order received page.
286
  */
287
- public function thankyou_page() {
288
  if ( $this->instructions )
289
  echo do_shortcode( wpautop( wptexturize( $this->instructions ) ) );
290
  }
@@ -298,7 +298,7 @@ if ( ! function_exists( 'init_wc_gateway_wcj_custom_class' ) ) {
298
  * @param bool $sent_to_admin
299
  * @param bool $plain_text
300
  */
301
- public function email_instructions( $order, $sent_to_admin, $plain_text = false ) {
302
  if ( $this->instructions_in_email && ! $sent_to_admin && $this->id === wcj_order_get_payment_method( $order ) && $this->default_order_status === ( WCJ_IS_WC_VERSION_BELOW_3 ? $order->status : $order->get_status() ) ) {
303
  echo do_shortcode( wpautop( wptexturize( $this->instructions_in_email ) ) . PHP_EOL );
304
  }
@@ -307,19 +307,18 @@ if ( ! function_exists( 'init_wc_gateway_wcj_custom_class' ) ) {
307
  /**
308
  * Process the payment and return the result
309
  *
310
- * @version 2.4.0
311
  * @param int $order_id
312
  * @return array
313
  */
314
- public function process_payment( $order_id ) {
315
 
316
- $order = new WC_Order( $order_id );
317
 
318
  // Mark as on-hold (we're awaiting the payment)
319
- //$order->update_status( 'on-hold', __( 'Awaiting payment', 'woocommerce' ) );
320
  $statuses = $this->get_order_statuses();
321
  $note = isset( $statuses[ $this->default_order_status ] ) ? $statuses[ $this->default_order_status ] : '';
322
- $order->update_status( $this->default_order_status, $note );
323
 
324
  if ( 'yes' === $this->send_email_to_admin || 'yes' === $this->send_email_to_customer ) {
325
  $woocommerce_mailer = WC()->mailer();
@@ -328,7 +327,11 @@ if ( ! function_exists( 'init_wc_gateway_wcj_custom_class' ) ) {
328
  }
329
 
330
  // Reduce stock levels
331
- $order->reduce_order_stock();
 
 
 
 
332
 
333
  // Remove cart
334
  WC()->cart->empty_cart();
@@ -345,7 +348,7 @@ if ( ! function_exists( 'init_wc_gateway_wcj_custom_class' ) ) {
345
  *
346
  * @version 2.5.2
347
  */
348
- public function init( $id_count ) {
349
  $this->id = ( 1 === $id_count ) ? 'jetpack_custom_gateway' : 'jetpack_custom_gateway_' . $id_count;
350
  $this->has_fields = false;
351
  $this->method_title = get_option( 'wcj_custom_payment_gateways_admin_title_' . $id_count, __( 'Custom Gateway', 'woocommerce-jetpack' ) . ' #' . $id_count );
@@ -376,7 +379,7 @@ if ( ! function_exists( 'init_wc_gateway_wcj_custom_class' ) ) {
376
  /**
377
  * Constructor.
378
  */
379
- public function __construct() {
380
  }
381
  }
382
 
2
  /**
3
  * Booster for WooCommerce - Custom Payment Gateway
4
  *
5
+ * @version 2.9.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
17
  /**
18
  * WC_Gateway_WCJ_Custom_Template class.
19
  *
20
+ * @version 2.9.0
21
  */
22
  class WC_Gateway_WCJ_Custom_Template extends WC_Payment_Gateway {
23
 
24
  /**
25
  * set_icon
26
  */
27
+ /* function set_icon() {
28
  $icon_url = get_option( 'wcj_payment_gateways_icons_woocommerce_wcj_custom_icon', '' );
29
  if ( $icon_url === '' )
30
  return $this->get_option( 'icon', '' );
36
  *
37
  * @version 2.5.7
38
  */
39
+ function init_form_fields() {
40
  global $woocommerce;
41
 
42
  $shipping_methods = array();
190
  * @version 2.5.6
191
  * @return bool
192
  */
193
+ function is_available() {
194
 
195
  // Check min amount
196
  $min_amount = apply_filters( 'booster_get_option', 0, $this->min_amount );
284
  /**
285
  * Output for the order received page.
286
  */
287
+ function thankyou_page() {
288
  if ( $this->instructions )
289
  echo do_shortcode( wpautop( wptexturize( $this->instructions ) ) );
290
  }
298
  * @param bool $sent_to_admin
299
  * @param bool $plain_text
300
  */
301
+ function email_instructions( $order, $sent_to_admin, $plain_text = false ) {
302
  if ( $this->instructions_in_email && ! $sent_to_admin && $this->id === wcj_order_get_payment_method( $order ) && $this->default_order_status === ( WCJ_IS_WC_VERSION_BELOW_3 ? $order->status : $order->get_status() ) ) {
303
  echo do_shortcode( wpautop( wptexturize( $this->instructions_in_email ) ) . PHP_EOL );
304
  }
307
  /**
308
  * Process the payment and return the result
309
  *
310
+ * @version 2.9.0
311
  * @param int $order_id
312
  * @return array
313
  */
314
+ function process_payment( $order_id ) {
315
 
316
+ $order = wc_get_order( $order_id );
317
 
318
  // Mark as on-hold (we're awaiting the payment)
 
319
  $statuses = $this->get_order_statuses();
320
  $note = isset( $statuses[ $this->default_order_status ] ) ? $statuses[ $this->default_order_status ] : '';
321
+ $order->update_status( $this->default_order_status, $note ); // e.g. 'on-hold', __( 'Awaiting payment', 'woocommerce' )
322
 
323
  if ( 'yes' === $this->send_email_to_admin || 'yes' === $this->send_email_to_customer ) {
324
  $woocommerce_mailer = WC()->mailer();
327
  }
328
 
329
  // Reduce stock levels
330
+ if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
331
+ $order->reduce_order_stock();
332
+ } else {
333
+ wc_reduce_stock_levels( $order_id );
334
+ }
335
 
336
  // Remove cart
337
  WC()->cart->empty_cart();
348
  *
349
  * @version 2.5.2
350
  */
351
+ function init( $id_count ) {
352
  $this->id = ( 1 === $id_count ) ? 'jetpack_custom_gateway' : 'jetpack_custom_gateway_' . $id_count;
353
  $this->has_fields = false;
354
  $this->method_title = get_option( 'wcj_custom_payment_gateways_admin_title_' . $id_count, __( 'Custom Gateway', 'woocommerce-jetpack' ) . ' #' . $id_count );
379
  /**
380
  * Constructor.
381
  */
382
+ function __construct() {
383
  }
384
  }
385
 
includes/input-fields/class-wcj-product-input-fields-abstract.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Product Input Fields - Abstract
4
  *
5
- * @version 2.8.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -669,7 +669,7 @@ class WCJ_Product_Input_Fields_Abstract {
669
  /**
670
  * Adds product input values to order details (and emails).
671
  *
672
- * @version 2.8.0
673
  */
674
  function add_product_input_fields_to_order_item_name( $name, $item, $is_cart = false ) {
675
  $total_number = apply_filters( 'booster_get_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', $item['product_id'], 1 ) );
@@ -677,7 +677,10 @@ class WCJ_Product_Input_Fields_Abstract {
677
  return $name;
678
  }
679
  if ( $is_cart ) {
680
- $name .= '<dl style="font-size:smaller;">';
 
 
 
681
  }
682
  for ( $i = 1; $i <= $total_number; $i++ ) {
683
  $is_enabled = $this->get_value( 'wcj_product_input_fields_enabled_' . $this->scope . '_' . $i, $item['product_id'], 'no' );
@@ -708,20 +711,12 @@ class WCJ_Product_Input_Fields_Abstract {
708
  $value = ( isset( $value['name'] ) ) ? $value['name'] : '';
709
  }
710
  if ( '' != $value ) {
711
- if ( $is_cart ) {
712
- $name .= '<dt>' . $title . '</dt>' . '<dd>' . $value . '</dd>';
713
- } else {
714
- $name .= str_replace(
715
- array( '%title%', '%value%' ),
716
- array( $title, $value ),
717
- get_option( 'wcj_product_input_fields_frontend_view_order_table_format', '&nbsp;| %title% %value%' )
718
- );
719
- }
720
  }
721
  }
722
  }
723
  if ( $is_cart ) {
724
- $name .= '</dl>';
725
  }
726
  return $name;
727
  }
@@ -735,12 +730,59 @@ class WCJ_Product_Input_Fields_Abstract {
735
  return $this->add_product_input_fields_to_order_item_name( $name, $cart_item, true );
736
  }
737
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
738
  /**
739
  * add_product_input_fields_to_order_item_meta.
740
  *
741
  * @version 2.5.0
742
  */
743
- function add_product_input_fields_to_order_item_meta( $item_id, $values, $cart_item_key ) {
744
  $total_number = apply_filters( 'booster_get_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', $values['product_id'], 1 ) );
745
  for ( $i = 1; $i <= $total_number; $i++ ) {
746
  if ( array_key_exists( 'wcj_product_input_fields_' . $this->scope . '_' . $i , $values ) ) {
2
  /**
3
  * Booster for WooCommerce - Product Input Fields - Abstract
4
  *
5
+ * @version 2.9.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
669
  /**
670
  * Adds product input values to order details (and emails).
671
  *
672
+ * @version 2.9.0
673
  */
674
  function add_product_input_fields_to_order_item_name( $name, $item, $is_cart = false ) {
675
  $total_number = apply_filters( 'booster_get_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', $item['product_id'], 1 ) );
677
  return $name;
678
  }
679
  if ( $is_cart ) {
680
+ $name .= get_option( 'wcj_product_input_fields_cart_start_template', '<dl style="font-size:smaller;">' );
681
+ $item_template = get_option( 'wcj_product_input_fields_cart_field_template', '<dt>%title%</dt><dd>%value%</dd>' );
682
+ } else {
683
+ $item_template = get_option( 'wcj_product_input_fields_frontend_view_order_table_format', '&nbsp;| %title% %value%' );
684
  }
685
  for ( $i = 1; $i <= $total_number; $i++ ) {
686
  $is_enabled = $this->get_value( 'wcj_product_input_fields_enabled_' . $this->scope . '_' . $i, $item['product_id'], 'no' );
711
  $value = ( isset( $value['name'] ) ) ? $value['name'] : '';
712
  }
713
  if ( '' != $value ) {
714
+ $name .= str_replace( array( '%title%', '%value%' ), array( $title, $value ), $item_template );
 
 
 
 
 
 
 
 
715
  }
716
  }
717
  }
718
  if ( $is_cart ) {
719
+ $name .= get_option( 'wcj_product_input_fields_cart_end_template', '</dl>' );
720
  }
721
  return $name;
722
  }
730
  return $this->add_product_input_fields_to_order_item_name( $name, $cart_item, true );
731
  }
732
 
733
+ /**
734
+ * add_product_input_fields_to_cart_item_display_data.
735
+ *
736
+ * @version 2.9.0
737
+ * @since 2.9.0
738
+ */
739
+ function add_product_input_fields_to_cart_item_display_data( $item_data, $item ) {
740
+ $total_number = apply_filters( 'booster_get_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', $item['product_id'], 1 ) );
741
+ if ( $total_number < 1 ) {
742
+ return $item_data;
743
+ }
744
+ for ( $i = 1; $i <= $total_number; $i++ ) {
745
+ $is_enabled = $this->get_value( 'wcj_product_input_fields_enabled_' . $this->scope . '_' . $i, $item['product_id'], 'no' );
746
+ if ( ! ( 'on' === $is_enabled || 'yes' === $is_enabled ) ) {
747
+ continue;
748
+ }
749
+ $type = $this->get_value( 'wcj_product_input_fields_type_' . $this->scope . '_' . $i, $item['product_id'], '' );
750
+ $meta_key = 'wcj_product_input_fields_' . $this->scope . '_' . $i;
751
+ $meta_exists = array_key_exists( $meta_key, $item );
752
+ if ( $meta_exists ) {
753
+ $value = $item[ $meta_key ];
754
+ } elseif ( 'checkbox' === $type ) {
755
+ $value = 'off';
756
+ $meta_exists = true;
757
+ }
758
+ if ( $meta_exists ) {
759
+ $title = $this->get_value( 'wcj_product_input_fields_title_' . $this->scope . '_' . $i, $item['product_id'], '' );
760
+ $yes_value = $this->get_value( 'wcj_product_input_fields_type_checkbox_yes_' . $this->scope . '_' . $i, $item['product_id'], '' );
761
+ $no_value = $this->get_value( 'wcj_product_input_fields_type_checkbox_no_' . $this->scope . '_' . $i, $item['product_id'], '' );
762
+ if ( 'checkbox' === $type ) {
763
+ $value = ( 'on' === $value ) ? $yes_value : $no_value;
764
+ }
765
+ if ( 'file' === $type ) {
766
+ $value = maybe_unserialize( $value );
767
+ $value = ( isset( $value['name'] ) ) ? $value['name'] : '';
768
+ }
769
+ if ( '' != $value ) {
770
+ $item_data[] = array(
771
+ 'key' => $title,
772
+ 'display' => $value,
773
+ );
774
+ }
775
+ }
776
+ }
777
+ return $item_data;
778
+ }
779
+
780
  /**
781
  * add_product_input_fields_to_order_item_meta.
782
  *
783
  * @version 2.5.0
784
  */
785
+ function add_product_input_fields_to_order_item_meta( $item_id, $values, $cart_item_key ) {
786
  $total_number = apply_filters( 'booster_get_option', 1, $this->get_value( 'wcj_' . 'product_input_fields' . '_' . $this->scope . '_total_number', $values['product_id'], 1 ) );
787
  for ( $i = 1; $i <= $total_number; $i++ ) {
788
  if ( array_key_exists( 'wcj_product_input_fields_' . $this->scope . '_' . $i , $values ) ) {
includes/input-fields/class-wcj-product-input-fields-global.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Product Input Fields - Global
4
  *
5
- * @version 2.5.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -15,7 +15,7 @@ class WCJ_Product_Input_Fields_Global extends WCJ_Product_Input_Fields_Abstract
15
  /**
16
  * Constructor.
17
  *
18
- * @version 2.5.0
19
  */
20
  function __construct() {
21
 
@@ -33,7 +33,11 @@ class WCJ_Product_Input_Fields_Global extends WCJ_Product_Input_Fields_Abstract
33
  add_filter( 'woocommerce_get_cart_item_from_session', array( $this, 'get_cart_item_product_input_fields_from_session' ), 100, 3 );
34
 
35
  // Show details at cart, order details, emails
36
- add_filter( 'woocommerce_cart_item_name', array( $this, 'add_product_input_fields_to_cart_item_name' ), 100, 3 );
 
 
 
 
37
  add_filter( 'woocommerce_order_item_name', array( $this, 'add_product_input_fields_to_order_item_name' ), 100, 2 );
38
 
39
  // Add item meta from cart to order
2
  /**
3
  * Booster for WooCommerce - Product Input Fields - Global
4
  *
5
+ * @version 2.9.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
15
  /**
16
  * Constructor.
17
  *
18
+ * @version 2.9.0
19
  */
20
  function __construct() {
21
 
33
  add_filter( 'woocommerce_get_cart_item_from_session', array( $this, 'get_cart_item_product_input_fields_from_session' ), 100, 3 );
34
 
35
  // Show details at cart, order details, emails
36
+ if ( 'data' === get_option( 'wcj_product_input_fields_display_options', 'name' ) ) {
37
+ add_filter( 'woocommerce_get_item_data', array( $this, 'add_product_input_fields_to_cart_item_display_data' ), PHP_INT_MAX, 2 );
38
+ } else {
39
+ add_filter( 'woocommerce_cart_item_name', array( $this, 'add_product_input_fields_to_cart_item_name' ), 100, 3 );
40
+ }
41
  add_filter( 'woocommerce_order_item_name', array( $this, 'add_product_input_fields_to_order_item_name' ), 100, 2 );
42
 
43
  // Add item meta from cart to order
includes/input-fields/class-wcj-product-input-fields-per-product.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Booster for WooCommerce - Product Input Fields - per Product
4
  *
5
- * @version 2.5.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
@@ -15,13 +15,12 @@ class WCJ_Product_Input_Fields_Per_Product extends WCJ_Product_Input_Fields_Abst
15
  /**
16
  * Constructor.
17
  *
18
- * @version 2.5.0
19
  */
20
- public function __construct() {
21
 
22
  $this->scope = 'local';
23
 
24
- // Main hooks
25
  if ( 'yes' === get_option( 'wcj_product_input_fields_local_enabled' ) ) {
26
 
27
  // Product Edit
@@ -38,7 +37,11 @@ class WCJ_Product_Input_Fields_Per_Product extends WCJ_Product_Input_Fields_Abst
38
  add_filter( 'woocommerce_get_cart_item_from_session', array( $this, 'get_cart_item_product_input_fields_from_session' ), 100, 3 );
39
 
40
  // Show details at cart, order details, emails
41
- add_filter( 'woocommerce_cart_item_name', array( $this, 'add_product_input_fields_to_cart_item_name' ), 100, 3 );
 
 
 
 
42
  add_filter( 'woocommerce_order_item_name', array( $this, 'add_product_input_fields_to_order_item_name' ), 100, 2 );
43
 
44
  // Add item meta from cart to order
@@ -62,7 +65,7 @@ class WCJ_Product_Input_Fields_Per_Product extends WCJ_Product_Input_Fields_Abst
62
  /**
63
  * get_value.
64
  */
65
- public function get_value( $option_name, $product_id, $default ) {
66
  return get_post_meta( $product_id, '_' . $option_name, true );
67
  }
68
 
@@ -71,7 +74,7 @@ class WCJ_Product_Input_Fields_Per_Product extends WCJ_Product_Input_Fields_Abst
71
  *
72
  * @version 2.2.9
73
  */
74
- public function save_local_product_input_fields_on_product_edit( $post_id, $post ) {
75
 
76
  // Check that we are saving with input fields displayed.
77
  if ( ! isset( $_POST['woojetpack_product_input_fields_save_post'] ) )
@@ -103,7 +106,7 @@ class WCJ_Product_Input_Fields_Per_Product extends WCJ_Product_Input_Fields_Abst
103
  *
104
  * @version 2.4.8
105
  */
106
- public function add_local_product_input_fields_meta_box_to_product_edit() {
107
  add_meta_box(
108
  'wc-jetpack-product-input-fields',
109
  __( 'Booster: Product Input Fields', 'woocommerce-jetpack' ),
@@ -119,7 +122,7 @@ class WCJ_Product_Input_Fields_Per_Product extends WCJ_Product_Input_Fields_Abst
119
  *
120
  * @version 2.2.9
121
  */
122
- public function create_local_product_input_fields_meta_box() {
123
 
124
  $meta_box_id = 'product_input_fields';
125
  $meta_box_desc = __( 'Product Input Fields', 'woocommerce-jetpack' );
2
  /**
3
  * Booster for WooCommerce - Product Input Fields - per Product
4
  *
5
+ * @version 2.9.0
6
  * @author Algoritmika Ltd.
7
  */
8
 
15
  /**
16
  * Constructor.
17
  *
18
+ * @version 2.9.0
19
  */
20
+ function __construct() {
21
 
22
  $this->scope = 'local';
23
 
 
24
  if ( 'yes' === get_option( 'wcj_product_input_fields_local_enabled' ) ) {
25
 
26
  // Product Edit
37
  add_filter( 'woocommerce_get_cart_item_from_session', array( $this, 'get_cart_item_product_input_fields_from_session' ), 100, 3 );
38
 
39
  // Show details at cart, order details, emails
40
+ if ( 'data' === get_option( 'wcj_product_input_fields_display_options', 'name' ) ) {
41
+ add_filter( 'woocommerce_get_item_data', array( $this, 'add_product_input_fields_to_cart_item_display_data' ), PHP_INT_MAX, 2 );
42
+ } else {
43
+ add_filter( 'woocommerce_cart_item_name', array( $this, 'add_product_input_fields_to_cart_item_name' ), 100, 3 );
44
+ }
45
  add_filter( 'woocommerce_order_item_name', array( $this, 'add_product_input_fields_to_order_item_name' ), 100, 2 );
46
 
47
  // Add item meta from cart to order
65
  /**
66
  * get_value.
67
  */
68
+ function get_value( $option_name, $product_id, $default ) {
69
  return get_post_meta( $product_id, '_' . $option_name, true );
70
  }
71
 
74
  *
75
  * @version 2.2.9
76
  */
77
+ function save_local_product_input_fields_on_product_edit( $post_id, $post ) {
78
 
79
  // Check that we are saving with input fields displayed.
80
  if ( ! isset( $_POST['woojetpack_product_input_fields_save_post'] ) )
106
  *
107
  * @version 2.4.8
108
  */
109
+ function add_local_product_input_fields_meta_box_to_product_edit() {
110
  add_meta_box(
111
  'wc-jetpack-product-input-fields',
112
  __( 'Booster: Product Input Fields', 'woocommerce-jetpack' ),
122
  *
123
  * @version 2.2.9
124
  */
125
+ function create_local_product_input_fields_meta_box() {
126
 
127
  $meta_box_id = 'product_input_fields';
128
  $meta_box_desc = __( 'Product Input Fields', 'woocommerce-jetpack' );
includes/js/{ajax_exchange_rates.js → wcj-ajax-exchange-rates.js} RENAMED
@@ -1,5 +1,5 @@
1
  /**
2
- * ajax_exchange_rates.js
3
  *
4
  * @version 2.6.0
5
  */
1
  /**
2
+ * wcj-ajax-exchange-rates.js
3
  *
4
  * @version 2.6.0
5
  */
includes/js/{checkout.js → wcj-checkout.js} RENAMED
File without changes
includes/js/{eu-vat-number.js → wcj-eu-vat-number.js} RENAMED
File without changes
includes/js/wcj-offer-price.js ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * wcj-offer-price.
3
+ *
4
+ * @version 2.9.0
5
+ * @since 2.9.0
6
+ */
7
+
8
+ // Get the modal
9
+ var modal = jQuery('#wcj-offer-price-modal');
10
+
11
+ // When the user clicks on the button, fill in values and open the modal
12
+ jQuery('.wcj-offer-price-button').click(function(){
13
+ // Get data
14
+ var wcj_data = jQuery.parseJSON(jQuery(this).attr('wcj_data'));
15
+ // Fill in price input
16
+ var price_input = jQuery('#wcj-offer-price-price');
17
+ price_input.attr('step',wcj_data['price_step']);
18
+ price_input.attr('min',wcj_data['min_price']);
19
+ if (0 != wcj_data['max_price']){
20
+ price_input.attr('max',wcj_data['max_price']);
21
+ }
22
+ if (0 != wcj_data['default_price']){
23
+ price_input.val(wcj_data['default_price']);
24
+ }
25
+ jQuery('#wcj-offer-price-price-label').html(wcj_data['price_label']);
26
+ // Fill in form header
27
+ jQuery('#wcj-offer-form-header').html(wcj_data['form_header']);
28
+ // Product ID (hidden input)
29
+ jQuery('#wcj-offer-price-product-id').val(wcj_data['product_id']);
30
+ // Show the form
31
+ modal.css('display','block');
32
+ });
33
+
34
+ // When the user clicks on <span> (x), close the modal
35
+ jQuery('.wcj-offer-price-form-close').first().click(function(){
36
+ modal.css('display','none');
37
+ });
38
+
39
+ // When the user clicks anywhere outside of the modal, close it
40
+ jQuery(window).click(function(e){
41
+ if (modal.is(e.target)){
42
+ modal.css('display','none');
43
+ }
44
+ });
45
+
46
+ // When the user presses ESC, close the modal
47
+ jQuery(document).keyup(function(e){
48
+ if (27 === e.keyCode){ // esc
49
+ modal.css('display','none');
50
+ }
51
+ });
includes/js/{product-input-fields.js → wcj-product-input-fields.js} RENAMED
File without changes
includes/js/wcj-variations-frontend.js CHANGED
@@ -1,26 +1,109 @@
1
- jQuery(document).ready(function() {
2
- if(jQuery("input:radio[name='wcj_variations']").is(':checked')){
3
- var checked_radio = jQuery("input:radio[name='wcj_variations']:checked");
4
- var variation_id = checked_radio.attr("variation_id");
5
- jQuery("input:hidden[name='variation_id']").val(variation_id);
6
- jQuery(checked_radio[0].attributes).each(
7
- function(i, attribute){
8
- if(attribute.name.match("^attribute_")){
9
- jQuery("input:hidden[name='" + attribute.name + "']").val(attribute.value);
10
- }
11
- }
12
- );
 
 
 
 
 
13
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  jQuery("input:radio[name='wcj_variations']").change(
15
  function(){
16
- jQuery("input:hidden[name='variation_id']").val(jQuery(this).attr("variation_id"));
17
- jQuery(this.attributes).each(
18
- function(i, attribute){
19
- if(attribute.name.match("^attribute_")){
20
- jQuery("input:hidden[name='" + attribute.name + "']").val(attribute.value);
21
- }
22
- }
23
- );
24
  }
25
  );
26
- });
1
+ /**
2
+ * Booster for WooCommerce - Variations Radio Buttons
3
+ *
4
+ * @version 2.9.0
5
+ * @author Algoritmika Ltd.
6
+ */
7
+
8
+ /**
9
+ * maybe_hide_unavailable.
10
+ *
11
+ * @version 2.9.0
12
+ * @since 2.9.0
13
+ */
14
+ function maybe_hide_unavailable(variation) {
15
+ if ( ! variation.is_purchasable || ! variation.is_in_stock || ! variation.variation_is_visible ) {
16
+ jQuery( '.single_add_to_cart_button' ).removeClass( 'wc-variation-selection-needed' ).addClass( 'disabled wc-variation-is-unavailable' );
17
+ jQuery( '.woocommerce-variation-add-to-cart' ).removeClass( 'woocommerce-variation-add-to-cart-enabled' ).addClass( 'woocommerce-variation-add-to-cart-disabled' );
18
  }
19
+ }
20
+
21
+ /**
22
+ * process_variations.
23
+ *
24
+ * @version 2.9.0
25
+ * @since 2.9.0
26
+ */
27
+ function process_variations(variation_id) {
28
+ var data_product_variations = jQuery.parseJSON(jQuery("form.variations_form.cart").attr('data-product_variations'));
29
+ data_product_variations.forEach(function(variation){
30
+ if(variation_id == variation.variation_id){
31
+ maybe_hide_unavailable(variation);
32
+ jQuery("form.variations_form.cart").wc_variations_image_update(variation);
33
+ jQuery("div.woocommerce-variation-price").html(variation.price_html);
34
+ jQuery("div.woocommerce-variation-availability").html(variation.availability_html);
35
+ }
36
+ });
37
+ }
38
+
39
+ /**
40
+ * hide_all.
41
+ *
42
+ * @version 2.9.0
43
+ * @since 2.9.0
44
+ */
45
+ function hide_all() {
46
+ jQuery("div.woocommerce-variation-availability").hide();
47
+ jQuery("div.woocommerce-variation-price").hide();
48
+ jQuery( '.single_add_to_cart_button' ).removeClass( 'wc-variation-is-unavailable' ).addClass( 'disabled wc-variation-selection-needed' );
49
+ jQuery( '.woocommerce-variation-add-to-cart' ).removeClass( 'woocommerce-variation-add-to-cart-enabled' ).addClass( 'woocommerce-variation-add-to-cart-disabled' );
50
+ }
51
+
52
+ /**
53
+ * show_all.
54
+ *
55
+ * @version 2.9.0
56
+ * @since 2.9.0
57
+ */
58
+ function show_all() {
59
+ jQuery("div.woocommerce-variation-availability").show();
60
+ jQuery("div.woocommerce-variation-price").show();
61
+ jQuery( '.single_add_to_cart_button' ).removeClass( 'disabled wc-variation-selection-needed wc-variation-is-unavailable' );
62
+ jQuery( '.woocommerce-variation-add-to-cart' ).removeClass( 'woocommerce-variation-add-to-cart-disabled' ).addClass( 'woocommerce-variation-add-to-cart-enabled' );
63
+ }
64
+
65
+ /**
66
+ * fill_values.
67
+ *
68
+ * @version 2.9.0
69
+ * @since 2.9.0
70
+ */
71
+ function fill_values(variation_id,radio_element) {
72
+ jQuery("input:hidden[name='variation_id']").val(variation_id);
73
+ jQuery(radio_element.attributes).each(
74
+ function(i, attribute){
75
+ if(attribute.name.match("^attribute_")){
76
+ jQuery("input:hidden[name='" + attribute.name + "']").val(attribute.value);
77
+ }
78
+ }
79
+ );
80
+ }
81
+
82
+ /**
83
+ * document ready.
84
+ *
85
+ * @version 2.9.0
86
+ */
87
+ jQuery(document).ready(function() {
88
+ // Initial display
89
+ jQuery("form.variations_form.cart").on('wc_variation_form',function(){
90
+ if(jQuery("input:radio[name='wcj_variations']").is(':checked')){
91
+ show_all();
92
+ var checked_radio = jQuery("input:radio[name='wcj_variations']:checked");
93
+ var variation_id = checked_radio.attr("variation_id");
94
+ fill_values(variation_id, checked_radio[0]);
95
+ process_variations(variation_id);
96
+ } else {
97
+ hide_all();
98
+ }
99
+ });
100
+ // On change
101
  jQuery("input:radio[name='wcj_variations']").change(
102
  function(){
103
+ show_all();
104
+ var variation_id = jQuery(this).attr("variation_id");
105
+ fill_values(variation_id, this);
106
+ process_variations(variation_id);
 
 
 
 
107
  }
108
  );
109
+ });
includes/lib/tcpdf_min/config/tcpdf_config.php CHANGED
@@ -59,13 +59,10 @@
59
  */
60
  //define ('K_PATH_FONTS', K_PATH_MAIN.'fonts/');
61
  ////////////////////////////////////////////
62
- // Algoritmika - Booster version 2.7.0
63
- // TODO - search for `check_tcpdf_fonts`
64
- /*
65
- $tcpdf_fonts_dir = wp_upload_dir();
66
- $tcpdf_fonts_dir = $tcpdf_fonts_dir['basedir'] . '/woocommerce_uploads/wcj_uploads/tcpdf_fonts/';
67
- define ('K_PATH_FONTS', $tcpdf_fonts_dir );
68
- */
69
  ////////////////////////////////////////////
70
 
71
  /**
59
  */
60
  //define ('K_PATH_FONTS', K_PATH_MAIN.'fonts/');
61
  ////////////////////////////////////////////
62
+ // Algoritmika - Booster - version 2.9.0 / since 2.9.0
63
+ if ( wcj_check_tcpdf_fonts_version( true ) ) {
64
+ define( 'K_PATH_FONTS', wcj_get_wcj_uploads_dir( 'tcpdf_fonts' ) . '/' );
65
+ }
 
 
 
66
  ////////////////////////////////////////////
67
 
68
  /**
includes/lib/tcpdf_min/fonts/angsanaupc.ctg.z DELETED
Binary file
includes/lib/tcpdf_min/fonts/angsanaupc.php DELETED
@@ -1,48 +0,0 @@
1
- <?php
2
- $type='TrueTypeUnicode';
3
- $name='AngsanaUPC';
4
- $desc=array('Ascent'=>923,'Descent'=>-239,'CapHeight'=>5,'Flags'=>32,'FontBBox'=>'[-490 -410 791 941]','ItalicAngle'=>0,'StemV'=>70,'MissingWidth'=>600);
5
- $up=-50;
6
- $ut=25;
7
- $dw=600;
8
- $cw=array(
9
- 32=>165,33=>220,34=>270,35=>330,36=>330,37=>550,38=>513,39=>119,40=>220,41=>220,
10
- 42=>330,43=>372,44=>165,45=>220,46=>165,47=>183,48=>330,49=>330,50=>330,51=>330,
11
- 52=>330,53=>330,54=>330,55=>330,56=>330,57=>330,58=>183,59=>183,60=>372,61=>372,
12
- 62=>372,63=>293,64=>608,65=>477,66=>440,67=>440,68=>477,69=>403,70=>367,71=>477,
13
- 72=>477,73=>220,74=>257,75=>477,76=>403,77=>587,78=>477,79=>477,80=>367,81=>477,
14
- 82=>440,83=>367,84=>403,85=>477,86=>477,87=>623,88=>477,89=>477,90=>403,91=>220,
15
- 92=>183,93=>220,94=>310,95=>330,96=>220,97=>293,98=>330,99=>293,100=>330,101=>293,
16
- 102=>220,103=>330,104=>330,105=>183,106=>183,107=>330,108=>183,109=>513,110=>330,111=>330,
17
- 112=>330,113=>330,114=>220,115=>257,116=>183,117=>330,118=>330,119=>477,120=>330,121=>330,
18
- 122=>293,123=>317,124=>132,125=>317,126=>357,8364=>330,8218=>165,402=>330,8222=>293,8230=>660,
19
- 8224=>330,8225=>330,710=>220,8240=>660,352=>367,8249=>220,338=>587,8216=>220,8217=>220,8220=>293,
20
- 8221=>293,8226=>231,8211=>330,8212=>660,732=>220,8482=>647,353=>257,8250=>220,339=>477,376=>477,
21
- 161=>220,162=>330,163=>330,164=>330,165=>330,166=>132,167=>330,168=>220,169=>501,170=>182,
22
- 171=>330,172=>372,173=>220,174=>501,175=>330,176=>264,177=>362,178=>198,179=>198,180=>220,
23
- 181=>380,182=>299,183=>165,184=>220,185=>198,186=>205,187=>330,188=>495,189=>495,190=>495,
24
- 191=>293,192=>477,193=>477,194=>477,195=>477,196=>477,197=>477,198=>587,199=>440,200=>403,
25
- 201=>403,202=>403,203=>403,204=>220,205=>220,206=>220,207=>220,208=>477,209=>477,210=>477,
26
- 211=>477,212=>477,213=>477,214=>477,215=>372,216=>477,217=>477,218=>477,219=>477,220=>477,
27
- 221=>477,222=>367,223=>330,224=>293,225=>293,226=>293,227=>293,228=>293,229=>293,230=>440,
28
- 231=>293,232=>293,233=>293,234=>293,235=>293,236=>183,237=>183,238=>183,239=>183,240=>330,
29
- 241=>330,242=>330,243=>330,244=>330,245=>330,246=>330,247=>362,248=>330,249=>330,250=>330,
30
- 251=>330,252=>330,253=>330,254=>330,255=>330,63259=>0,63232=>378,63233=>0,63234=>0,63235=>0,
31
- 63236=>0,63237=>0,63238=>0,63239=>0,63240=>0,63241=>0,63242=>0,63243=>0,63244=>0,63245=>0,
32
- 63246=>0,63247=>525,63248=>0,63249=>0,63250=>0,63251=>0,63252=>0,63253=>0,63254=>0,63255=>0,
33
- 3584=>100,3585=>396,3586=>398,3587=>454,3588=>398,3589=>400,3590=>484,3591=>315,3592=>355,3593=>428,
34
- 3594=>405,3595=>440,3596=>506,3597=>522,3598=>420,3599=>425,3600=>378,3601=>524,3602=>521,3603=>534,
35
- 3604=>400,3605=>401,3606=>395,3607=>450,3608=>380,3609=>460,3610=>450,3611=>450,3612=>391,3613=>391,
36
- 3614=>464,3615=>464,3616=>414,3617=>420,3618=>343,3619=>342,3620=>395,3621=>395,3622=>415,3623=>354,
37
- 3624=>390,3625=>441,3626=>440,3627=>467,3628=>455,3629=>394,3630=>371,3631=>400,3632=>358,3633=>0,
38
- 3634=>285,3635=>285,3636=>0,3637=>0,3638=>0,3639=>0,3640=>0,3641=>0,3642=>0,63260=>221,
39
- 63261=>221,3647=>440,3648=>168,3649=>377,3650=>342,3651=>306,3652=>344,3653=>292,3654=>425,3655=>0,
40
- 3656=>0,3657=>0,3658=>0,3659=>0,3660=>0,3661=>0,3662=>0,3663=>428,3664=>402,3665=>404,
41
- 3666=>568,3667=>510,3668=>512,3669=>528,3670=>427,3671=>536,3672=>502,3673=>408,3674=>471,3675=>816,
42
- 63256=>0,63257=>0,63258=>0,9702=>220,305=>183,711=>220);
43
- $enc='';
44
- $diff='';
45
- $file='angsanaupc.z';
46
- $ctg='angsanaupc.ctg.z';
47
- $originalsize=95808;
48
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/lib/tcpdf_min/fonts/angsanaupc.z DELETED
Binary file
includes/lib/tcpdf_min/fonts/angsanaupcb.ctg.z DELETED
Binary file
includes/lib/tcpdf_min/fonts/angsanaupcb.php DELETED
@@ -1,48 +0,0 @@
1
- <?php
2
- $type='TrueTypeUnicode';
3
- $name='AngsanaUPC-Bold';
4
- $desc=array('Ascent'=>888,'Descent'=>-239,'CapHeight'=>4,'Flags'=>32,'FontBBox'=>'[-501 -433 783 995]','ItalicAngle'=>0,'StemV'=>120,'MissingWidth'=>600);
5
- $up=-50;
6
- $ut=25;
7
- $dw=600;
8
- $cw=array(
9
- 32=>165,33=>220,34=>366,35=>330,36=>330,37=>660,38=>550,39=>183,40=>220,41=>220,
10
- 42=>330,43=>376,44=>165,45=>220,46=>165,47=>183,48=>330,49=>330,50=>330,51=>330,
11
- 52=>330,53=>330,54=>330,55=>330,56=>330,57=>330,58=>220,59=>220,60=>376,61=>376,
12
- 62=>376,63=>330,64=>614,65=>477,66=>440,67=>477,68=>477,69=>440,70=>403,71=>513,
13
- 72=>513,73=>257,74=>330,75=>513,76=>440,77=>623,78=>477,79=>513,80=>403,81=>513,
14
- 82=>477,83=>367,84=>440,85=>477,86=>477,87=>660,88=>477,89=>477,90=>440,91=>220,
15
- 92=>183,93=>220,94=>384,95=>330,96=>220,97=>330,98=>367,99=>293,100=>367,101=>293,
16
- 102=>220,103=>330,104=>367,105=>183,106=>220,107=>367,108=>183,109=>550,110=>367,111=>330,
17
- 112=>367,113=>367,114=>293,115=>257,116=>220,117=>367,118=>330,119=>477,120=>330,121=>330,
18
- 122=>293,123=>260,124=>145,125=>260,126=>358,8364=>330,8218=>220,402=>330,8222=>330,8230=>660,
19
- 8224=>330,8225=>330,710=>220,8240=>660,352=>367,8249=>220,338=>660,8216=>220,8217=>220,8220=>330,
20
- 8221=>330,8226=>231,8211=>330,8212=>660,732=>220,8482=>660,353=>257,8250=>220,339=>477,376=>477,
21
- 161=>220,162=>330,163=>330,164=>330,165=>330,166=>146,167=>330,168=>220,169=>493,170=>198,
22
- 171=>330,172=>376,173=>220,174=>493,175=>330,176=>264,177=>362,178=>198,179=>198,180=>220,
23
- 181=>380,182=>356,183=>165,184=>220,185=>198,186=>218,187=>330,188=>495,189=>495,190=>495,
24
- 191=>330,192=>477,193=>477,194=>477,195=>477,196=>477,197=>477,198=>660,199=>477,200=>440,
25
- 201=>440,202=>440,203=>440,204=>257,205=>257,206=>257,207=>257,208=>477,209=>477,210=>513,
26
- 211=>513,212=>513,213=>513,214=>513,215=>376,216=>514,217=>477,218=>477,219=>477,220=>477,
27
- 221=>477,222=>403,223=>367,224=>330,225=>330,226=>330,227=>330,228=>330,229=>330,230=>477,
28
- 231=>293,232=>293,233=>293,234=>293,235=>293,236=>184,237=>184,238=>184,239=>184,240=>330,
29
- 241=>367,242=>330,243=>330,244=>330,245=>330,246=>330,247=>362,248=>330,249=>367,250=>367,
30
- 251=>367,252=>367,253=>330,254=>367,255=>330,63259=>0,63232=>386,63233=>0,63234=>0,63235=>0,
31
- 63236=>0,63237=>0,63238=>0,63239=>0,63240=>0,63241=>0,63242=>0,63243=>0,63244=>0,63245=>0,
32
- 63246=>0,63247=>540,63248=>0,63249=>0,63250=>0,63251=>0,63252=>0,63253=>0,63254=>0,63255=>0,
33
- 3584=>100,3585=>383,3586=>415,3587=>453,3588=>404,3589=>419,3590=>499,3591=>324,3592=>380,3593=>426,
34
- 3594=>403,3595=>470,3596=>527,3597=>545,3598=>444,3599=>449,3600=>386,3601=>526,3602=>561,3603=>543,
35
- 3604=>411,3605=>418,3606=>398,3607=>447,3608=>383,3609=>460,3610=>442,3611=>444,3612=>414,3613=>414,
36
- 3614=>494,3615=>494,3616=>433,3617=>435,3618=>370,3619=>349,3620=>387,3621=>383,3622=>437,3623=>360,
37
- 3624=>417,3625=>442,3626=>420,3627=>462,3628=>568,3629=>383,3630=>374,3631=>440,3632=>350,3633=>0,
38
- 3634=>284,3635=>284,3636=>0,3637=>0,3638=>0,3639=>0,3640=>0,3641=>0,3642=>0,63260=>221,
39
- 63261=>221,3647=>440,3648=>174,3649=>356,3650=>251,3651=>232,3652=>291,3653=>300,3654=>338,3655=>0,
40
- 3656=>0,3657=>0,3658=>0,3659=>0,3660=>0,3661=>0,3662=>0,3663=>357,3664=>380,3665=>358,
41
- 3666=>529,3667=>498,3668=>496,3669=>508,3670=>356,3671=>515,3672=>503,3673=>388,3674=>491,3675=>821,
42
- 63256=>0,63257=>0,63258=>0,9702=>220,305=>184,711=>220);
43
- $enc='';
44
- $diff='';
45
- $file='angsanaupcb.z';
46
- $ctg='angsanaupcb.ctg.z';
47
- $originalsize=91688;
48
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/lib/tcpdf_min/fonts/angsanaupcb.z DELETED
Binary file
includes/lib/tcpdf_min/fonts/angsanaupcbi.ctg.z DELETED
Binary file
includes/lib/tcpdf_min/fonts/angsanaupcbi.php DELETED
@@ -1,37 +0,0 @@
1
- <?php
2
- $type='TrueTypeUnicode';
3
- $name='AngsanaUPC-BoldItalic';
4
- $desc=array('Ascent'=>928,'Descent'=>-206,'CapHeight'=>-40,'Flags'=>96,'FontBBox'=>'[-458 -433 790 994]','ItalicAngle'=>-10,'StemV'=>120,'MissingWidth'=>600);
5
- $up=-50;
6
- $ut=25;
7
- $dw=600;
8
- $cw=array(
9
- 32=>165,33=>257,34=>366,35=>330,36=>330,37=>550,38=>513,39=>183,40=>220,41=>220,
10
- 42=>330,43=>376,44=>165,45=>220,46=>165,47=>183,48=>330,49=>330,50=>330,51=>330,
11
- 52=>330,53=>330,54=>330,55=>330,56=>330,57=>330,58=>220,59=>220,60=>376,61=>376,
12
- 62=>376,63=>330,64=>549,65=>440,66=>440,67=>440,68=>477,69=>440,70=>440,71=>477,
13
- 72=>513,73=>257,74=>330,75=>440,76=>403,77=>587,78=>477,79=>477,80=>403,81=>477,
14
- 82=>440,83=>367,84=>403,85=>477,86=>440,87=>587,88=>440,89=>403,90=>403,91=>220,
15
- 92=>183,93=>220,94=>376,95=>330,96=>220,97=>330,98=>330,99=>293,100=>330,101=>293,
16
- 102=>220,103=>330,104=>367,105=>183,106=>183,107=>330,108=>183,109=>513,110=>367,111=>330,
17
- 112=>330,113=>330,114=>257,115=>257,116=>183,117=>367,118=>293,119=>440,120=>330,121=>293,
18
- 122=>257,123=>230,124=>145,125=>230,126=>376,8364=>330,8230=>660,8216=>220,8217=>220,8220=>330,
19
- 8221=>330,8226=>231,8211=>330,8212=>660,63259=>0,63232=>386,63233=>0,63234=>0,63235=>0,63236=>0,
20
- 63237=>0,63238=>0,63239=>0,63240=>0,63241=>0,63242=>0,63243=>0,63244=>0,63245=>0,63246=>0,
21
- 63247=>540,63248=>0,63249=>0,63250=>0,63251=>0,63252=>0,63253=>0,63254=>0,63255=>0,3584=>100,
22
- 3585=>383,3586=>415,3587=>453,3588=>404,3589=>419,3590=>499,3591=>324,3592=>380,3593=>426,3594=>403,
23
- 3595=>470,3596=>527,3597=>545,3598=>444,3599=>449,3600=>363,3601=>526,3602=>561,3603=>543,3604=>411,
24
- 3605=>418,3606=>398,3607=>447,3608=>383,3609=>460,3610=>442,3611=>444,3612=>414,3613=>414,3614=>494,
25
- 3615=>489,3616=>433,3617=>435,3618=>370,3619=>349,3620=>387,3621=>383,3622=>437,3623=>360,3624=>417,
26
- 3625=>442,3626=>420,3627=>462,3628=>568,3629=>383,3630=>374,3631=>440,3633=>0,3632=>350,3634=>284,
27
- 3635=>284,3636=>0,3637=>0,3638=>0,3639=>0,3640=>0,3641=>0,3642=>0,63260=>221,63261=>221,
28
- 3647=>448,3648=>174,3649=>356,3650=>251,3651=>232,3652=>291,3653=>300,3654=>338,3655=>0,3656=>0,
29
- 3657=>0,3658=>0,3659=>0,3660=>2,3661=>0,3662=>0,3663=>357,3664=>380,3665=>358,3666=>529,
30
- 3667=>498,3668=>496,3669=>508,3670=>356,3671=>515,3672=>503,3673=>388,3674=>491,3675=>821,63256=>0,
31
- 63257=>0,63258=>0);
32
- $enc='';
33
- $diff='';
34
- $file='angsanaupcbi.z';
35
- $ctg='angsanaupcbi.ctg.z';
36
- $originalsize=76280;
37
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/lib/tcpdf_min/fonts/angsanaupcbi.z DELETED
Binary file
includes/lib/tcpdf_min/fonts/angsanaupci.ctg.z DELETED
Binary file
includes/lib/tcpdf_min/fonts/angsanaupci.php DELETED
@@ -1,37 +0,0 @@
1
- <?php
2
- $type='TrueTypeUnicode';
3
- $name='AngsanaUPC-Italic';
4
- $desc=array('Ascent'=>923,'Descent'=>-239,'CapHeight'=>-44,'Flags'=>96,'FontBBox'=>'[-434 -410 797 941]','ItalicAngle'=>-10,'StemV'=>70,'MissingWidth'=>600);
5
- $up=-50;
6
- $ut=25;
7
- $dw=600;
8
- $cw=array(
9
- 32=>165,33=>220,34=>277,35=>330,36=>330,37=>550,38=>513,39=>141,40=>220,41=>220,
10
- 42=>330,43=>445,44=>165,45=>220,46=>165,47=>183,48=>330,49=>330,50=>330,51=>330,
11
- 52=>330,53=>330,54=>330,55=>330,56=>330,57=>330,58=>220,59=>220,60=>445,61=>445,
12
- 62=>445,63=>330,64=>607,65=>403,66=>403,67=>440,68=>477,69=>403,70=>403,71=>477,
13
- 72=>477,73=>220,74=>293,75=>440,76=>367,77=>550,78=>440,79=>477,80=>403,81=>477,
14
- 82=>403,83=>330,84=>367,85=>477,86=>403,87=>550,88=>403,89=>367,90=>367,91=>257,
15
- 92=>183,93=>257,94=>279,95=>330,96=>220,97=>330,98=>330,99=>293,100=>330,101=>293,
16
- 102=>183,103=>330,104=>330,105=>183,106=>183,107=>293,108=>183,109=>477,110=>330,111=>330,
17
- 112=>330,113=>330,114=>257,115=>257,116=>183,117=>330,118=>293,119=>440,120=>293,121=>293,
18
- 122=>257,123=>264,124=>181,125=>264,126=>357,8364=>330,8230=>587,8216=>220,8217=>220,8220=>367,
19
- 8221=>367,8226=>231,8211=>330,8212=>587,63259=>0,63232=>378,63233=>0,63234=>0,63235=>0,63236=>0,
20
- 63237=>0,63238=>0,63239=>0,63240=>0,63241=>0,63242=>0,63243=>0,63244=>0,63245=>0,63246=>0,
21
- 63247=>525,63248=>0,63249=>0,63250=>0,63251=>0,63252=>0,63253=>0,63254=>0,63255=>0,3584=>100,
22
- 3585=>396,3586=>398,3587=>454,3588=>398,3589=>400,3590=>484,3591=>315,3592=>355,3593=>428,3594=>405,
23
- 3595=>440,3596=>506,3597=>522,3598=>420,3599=>425,3600=>378,3601=>524,3602=>521,3603=>534,3604=>400,
24
- 3605=>401,3606=>394,3607=>450,3608=>380,3609=>460,3610=>450,3611=>450,3612=>391,3613=>390,3614=>464,
25
- 3615=>464,3616=>414,3617=>420,3618=>343,3619=>342,3620=>395,3621=>395,3622=>415,3623=>354,3624=>390,
26
- 3625=>441,3626=>440,3627=>467,3628=>455,3629=>394,3630=>371,3631=>400,3633=>0,3632=>358,3634=>285,
27
- 3635=>290,3636=>0,3637=>0,3638=>0,3639=>0,3640=>0,3641=>0,3642=>0,63260=>221,63261=>221,
28
- 3647=>440,3648=>168,3649=>377,3650=>342,3651=>306,3652=>344,3653=>292,3654=>425,3655=>0,3656=>0,
29
- 3657=>0,3658=>0,3659=>0,3660=>0,3661=>0,3662=>0,3663=>428,3664=>402,3665=>404,3666=>568,
30
- 3667=>510,3668=>512,3669=>528,3670=>427,3671=>536,3672=>502,3673=>408,3674=>471,3675=>816,63256=>0,
31
- 63257=>0,63258=>0);
32
- $enc='';
33
- $diff='';
34
- $file='angsanaupci.z';
35
- $ctg='angsanaupci.ctg.z';
36
- $originalsize=75060;
37
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/lib/tcpdf_min/fonts/angsanaupci.z DELETED
Binary file
includes/lib/tcpdf_min/fonts/cordiaupc.ctg.z DELETED
Binary file
includes/lib/tcpdf_min/fonts/cordiaupc.php DELETED
@@ -1,48 +0,0 @@
1
- <?php
2
- $type='TrueTypeUnicode';
3
- $name='CordiaUPC';
4
- $desc=array('Ascent'=>893,'Descent'=>-254,'CapHeight'=>4,'Flags'=>32,'FontBBox'=>'[-452 -488 777 898]','ItalicAngle'=>0,'StemV'=>70,'MissingWidth'=>600);
5
- $up=-50;
6
- $ut=25;
7
- $dw=600;
8
- $cw=array(
9
- 32=>182,33=>218,34=>182,35=>365,36=>365,37=>583,38=>437,39=>146,40=>218,41=>218,
10
- 42=>255,43=>433,44=>182,45=>218,46=>182,47=>182,48=>365,49=>365,50=>365,51=>365,
11
- 52=>365,53=>365,54=>365,55=>365,56=>365,57=>365,58=>182,59=>182,60=>433,61=>433,
12
- 62=>433,63=>328,64=>524,65=>437,66=>437,67=>473,68=>473,69=>400,70=>365,71=>510,
13
- 72=>473,73=>182,74=>328,75=>437,76=>365,77=>546,78=>473,79=>510,80=>400,81=>510,
14
- 82=>437,83=>400,84=>365,85=>473,86=>400,87=>583,88=>400,89=>400,90=>400,91=>218,
15
- 92=>182,93=>218,94=>433,95=>328,96=>218,97=>365,98=>400,99=>365,100=>400,101=>365,
16
- 102=>182,103=>400,104=>365,105=>146,106=>146,107=>328,108=>146,109=>546,110=>365,111=>365,
17
- 112=>400,113=>400,114=>218,115=>328,116=>182,117=>365,118=>328,119=>473,120=>328,121=>328,
18
- 122=>328,123=>218,124=>146,125=>218,126=>433,8218=>151,402=>377,8222=>226,8230=>655,8224=>377,
19
- 8225=>377,710=>226,8240=>679,352=>400,8249=>226,338=>679,8216=>146,8217=>146,8220=>255,8221=>255,
20
- 8226=>328,8211=>328,8212=>655,732=>226,8482=>679,353=>328,8250=>226,339=>641,376=>400,161=>226,
21
- 162=>377,163=>377,164=>377,165=>377,166=>176,167=>377,168=>226,169=>500,170=>251,171=>377,
22
- 172=>396,173=>226,174=>500,175=>375,176=>271,177=>373,178=>226,179=>226,180=>226,181=>391,
23
- 182=>365,183=>188,184=>226,185=>226,186=>248,187=>377,188=>566,189=>566,190=>566,191=>415,
24
- 192=>437,193=>437,194=>437,195=>437,196=>437,197=>437,198=>679,199=>473,200=>400,201=>400,
25
- 202=>400,203=>400,204=>182,205=>182,206=>182,207=>182,208=>490,209=>473,210=>510,211=>510,
26
- 212=>510,213=>510,214=>510,215=>396,216=>528,217=>473,218=>473,219=>473,220=>473,221=>400,
27
- 222=>453,223=>415,224=>365,225=>365,226=>365,227=>365,228=>365,229=>365,230=>604,231=>365,
28
- 232=>365,233=>365,234=>365,235=>365,236=>188,237=>188,238=>188,239=>188,240=>377,241=>365,
29
- 242=>365,243=>365,244=>365,245=>365,246=>365,247=>373,248=>415,249=>365,250=>365,251=>365,
30
- 252=>365,253=>328,254=>377,255=>328,63259=>0,63232=>382,63233=>0,63234=>0,63235=>0,63236=>0,
31
- 63237=>0,63238=>0,63239=>0,63240=>0,63241=>0,63242=>0,63243=>0,63244=>0,63245=>0,63246=>0,
32
- 63247=>608,63248=>0,63249=>0,63250=>0,63251=>0,63252=>0,63253=>0,63254=>0,63255=>0,3584=>100,
33
- 3585=>400,3586=>376,3587=>400,3588=>417,3589=>417,3590=>487,3591=>313,3592=>382,3593=>405,3594=>382,
34
- 3595=>382,3596=>597,3597=>608,3598=>440,3599=>440,3600=>382,3601=>504,3602=>614,3603=>608,3604=>417,
35
- 3605=>417,3606=>400,3607=>429,3608=>359,3609=>429,3610=>446,3611=>446,3612=>405,3613=>405,3614=>463,
36
- 3615=>463,3616=>440,3617=>434,3618=>400,3619=>301,3620=>400,3621=>405,3622=>440,3623=>347,3624=>417,
37
- 3625=>475,3626=>405,3627=>429,3628=>463,3629=>394,3630=>382,3631=>359,3632=>359,3633=>0,3634=>347,
38
- 3635=>347,3636=>0,3637=>0,3638=>0,3639=>0,3640=>0,3641=>0,3642=>0,63260=>220,63261=>220,
39
- 3647=>437,3648=>202,3649=>376,3650=>243,3651=>278,3652=>260,3653=>347,3654=>376,3655=>0,3656=>0,
40
- 3657=>0,3658=>0,3659=>0,3660=>0,3661=>0,3662=>0,3663=>313,3664=>463,3665=>463,3666=>487,
41
- 3667=>487,3668=>487,3669=>487,3670=>463,3671=>487,3672=>487,3673=>487,3674=>409,3675=>792,63256=>0,
42
- 63257=>0,63258=>0,9702=>226,305=>188,711=>226);
43
- $enc='';
44
- $diff='';
45
- $file='cordiaupc.z';
46
- $ctg='cordiaupc.ctg.z';
47
- $originalsize=96088;
48
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/lib/tcpdf_min/fonts/cordiaupc.z DELETED
Binary file
includes/lib/tcpdf_min/fonts/cordiaupcb.ctg.z DELETED
Binary file
includes/lib/tcpdf_min/fonts/cordiaupcb.php DELETED
@@ -1,48 +0,0 @@
1
- <?php
2
- $type='TrueTypeUnicode';
3
- $name='CordiaUPC-Bold';
4
- $desc=array('Ascent'=>833,'Descent'=>-261,'CapHeight'=>3,'Flags'=>32,'FontBBox'=>'[-547 -417 791 833]','ItalicAngle'=>0,'StemV'=>120,'MissingWidth'=>600);
5
- $up=-50;
6
- $ut=25;
7
- $dw=600;
8
- $cw=array(
9
- 32=>224,33=>182,34=>233,35=>365,36=>365,37=>583,38=>437,39=>125,40=>218,41=>218,
10
- 42=>255,43=>383,44=>182,45=>218,46=>182,47=>182,48=>365,49=>365,50=>365,51=>365,
11
- 52=>365,53=>365,54=>365,55=>365,56=>365,57=>365,58=>182,59=>182,60=>383,61=>383,
12
- 62=>383,63=>365,64=>665,65=>437,66=>437,67=>473,68=>473,69=>437,70=>400,71=>510,
13
- 72=>473,73=>182,74=>328,75=>437,76=>365,77=>546,78=>473,79=>510,80=>437,81=>510,
14
- 82=>473,83=>437,84=>400,85=>473,86=>437,87=>618,88=>437,89=>437,90=>400,91=>182,
15
- 92=>182,93=>182,94=>307,95=>365,96=>218,97=>365,98=>365,99=>328,100=>365,101=>365,
16
- 102=>182,103=>365,104=>365,105=>146,106=>146,107=>328,108=>146,109=>546,110=>365,111=>365,
17
- 112=>365,113=>365,114=>218,115=>328,116=>182,117=>365,118=>328,119=>473,120=>328,121=>328,
18
- 122=>328,123=>219,124=>170,125=>219,126=>383,8218=>146,402=>365,8222=>218,8230=>655,8224=>365,
19
- 8225=>365,710=>218,8240=>655,352=>437,8249=>218,338=>655,8216=>146,8217=>146,8220=>218,8221=>218,
20
- 8226=>229,8211=>365,8212=>655,732=>218,8482=>655,353=>328,8250=>218,339=>619,376=>437,161=>218,
21
- 162=>365,163=>365,164=>365,165=>365,166=>170,167=>365,168=>218,169=>483,170=>243,171=>365,
22
- 172=>383,173=>218,174=>483,175=>362,176=>262,177=>360,178=>218,179=>218,180=>218,181=>377,
23
- 182=>352,183=>182,184=>218,185=>218,186=>239,187=>365,188=>546,189=>546,190=>546,191=>400,
24
- 192=>437,193=>437,194=>437,195=>437,196=>437,197=>437,198=>655,199=>473,200=>437,201=>437,
25
- 202=>437,203=>437,204=>182,205=>182,206=>182,207=>182,208=>473,209=>473,210=>510,211=>510,
26
- 212=>510,213=>510,214=>510,215=>383,216=>510,217=>473,218=>473,219=>473,220=>473,221=>437,
27
- 222=>437,223=>400,224=>365,225=>365,226=>365,227=>365,228=>365,229=>365,230=>583,231=>328,
28
- 232=>365,233=>365,234=>365,235=>365,236=>182,237=>182,238=>182,239=>182,240=>365,241=>365,
29
- 242=>365,243=>365,244=>365,245=>365,246=>365,247=>360,248=>400,249=>365,250=>365,251=>365,
30
- 252=>365,253=>328,254=>365,255=>328,63259=>0,63232=>395,63233=>0,63234=>0,63235=>0,63236=>0,
31
- 63237=>0,63238=>0,63239=>0,63240=>0,63241=>0,63242=>0,63243=>0,63244=>0,63245=>0,63246=>0,
32
- 63247=>625,63248=>0,63249=>0,63250=>0,63251=>0,63252=>0,63253=>0,63254=>0,63255=>0,3584=>100,
33
- 3585=>441,3586=>433,3587=>441,3588=>451,3589=>457,3590=>505,3591=>333,3592=>419,3593=>470,3594=>434,
34
- 3595=>436,3596=>626,3597=>626,3598=>485,3599=>489,3600=>399,3601=>544,3602=>627,3603=>624,3604=>458,
35
- 3605=>458,3606=>439,3607=>483,3608=>418,3609=>483,3610=>487,3611=>487,3612=>440,3613=>439,3614=>520,
36
- 3615=>523,3616=>479,3617=>472,3618=>430,3619=>363,3620=>438,3621=>444,3622=>482,3623=>373,3624=>448,
37
- 3625=>494,3626=>444,3627=>483,3628=>530,3629=>451,3630=>416,3631=>415,3632=>371,3633=>0,3634=>351,
38
- 3635=>351,3636=>0,3637=>0,3638=>0,3639=>0,3640=>0,3641=>0,3642=>0,63260=>224,63261=>224,
39
- 3647=>437,3648=>247,3649=>439,3650=>273,3651=>318,3652=>299,3653=>349,3654=>528,3655=>0,3656=>0,
40
- 3657=>0,3658=>0,3659=>0,3660=>0,3661=>0,3662=>0,3663=>503,3664=>425,3665=>436,3666=>466,
41
- 3667=>448,3668=>460,3669=>460,3670=>464,3671=>550,3672=>496,3673=>516,3674=>487,3675=>806,63256=>0,
42
- 63257=>0,63258=>0,9702=>218,305=>182,711=>218);
43
- $enc='';
44
- $diff='';
45
- $file='cordiaupcb.z';
46
- $ctg='cordiaupcb.ctg.z';
47
- $originalsize=82952;
48
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/lib/tcpdf_min/fonts/cordiaupcb.z DELETED
Binary file
includes/lib/tcpdf_min/fonts/cordiaupcbi.ctg.z DELETED
Binary file
includes/lib/tcpdf_min/fonts/cordiaupcbi.php DELETED
@@ -1,37 +0,0 @@
1
- <?php
2
- $type='TrueTypeUnicode';
3
- $name='CordiaUPC-BoldItalic';
4
- $desc=array('Ascent'=>833,'Descent'=>-262,'CapHeight'=>-21,'Flags'=>96,'FontBBox'=>'[-490 -399 797 833]','ItalicAngle'=>-10,'StemV'=>120,'MissingWidth'=>600);
5
- $up=-50;
6
- $ut=25;
7
- $dw=600;
8
- $cw=array(
9
- 32=>182,33=>182,34=>233,35=>365,36=>365,37=>583,38=>437,39=>125,40=>218,41=>218,
10
- 42=>255,43=>383,44=>182,45=>218,46=>182,47=>182,48=>365,49=>365,50=>365,51=>365,
11
- 52=>365,53=>365,54=>365,55=>365,56=>365,57=>365,58=>182,59=>182,60=>383,61=>383,
12
- 62=>383,63=>365,64=>665,65=>437,66=>437,67=>473,68=>473,69=>437,70=>400,71=>510,
13
- 72=>473,73=>182,74=>328,75=>437,76=>365,77=>546,78=>473,79=>510,80=>437,81=>510,
14
- 82=>473,83=>437,84=>400,85=>473,86=>437,87=>618,88=>437,89=>437,90=>400,91=>182,
15
- 92=>182,93=>182,94=>307,95=>365,96=>218,97=>365,98=>365,99=>328,100=>365,101=>365,
16
- 102=>182,103=>365,104=>365,105=>146,106=>146,107=>328,108=>146,109=>546,110=>365,111=>365,
17
- 112=>365,113=>365,114=>218,115=>328,116=>182,117=>365,118=>328,119=>473,120=>328,121=>328,
18
- 122=>328,123=>219,124=>170,125=>219,126=>383,8230=>655,8216=>146,8217=>146,8220=>218,8221=>218,
19
- 8226=>229,8211=>365,8212=>655,63259=>0,63232=>395,63233=>0,63234=>0,63235=>0,63236=>0,63237=>0,
20
- 63238=>0,63239=>0,63240=>0,63241=>0,63242=>0,63243=>0,63244=>0,63245=>0,63246=>0,63247=>625,
21
- 63248=>0,63249=>0,63250=>0,63251=>0,63252=>0,63253=>0,63254=>0,63255=>0,3584=>100,3585=>441,
22
- 3586=>433,3587=>441,3588=>451,3589=>457,3590=>505,3591=>333,3592=>419,3593=>470,3594=>434,3595=>436,
23
- 3596=>626,3597=>626,3598=>485,3599=>489,3600=>399,3601=>544,3602=>627,3603=>624,3604=>458,3605=>458,
24
- 3606=>439,3607=>483,3608=>418,3609=>483,3610=>487,3611=>487,3612=>439,3613=>439,3614=>523,3615=>523,
25
- 3616=>479,3617=>472,3618=>430,3619=>363,3620=>438,3621=>444,3622=>482,3623=>373,3624=>448,3625=>494,
26
- 3626=>444,3627=>483,3628=>530,3629=>451,3630=>416,3631=>415,3632=>371,3633=>0,3634=>351,3635=>351,
27
- 3636=>0,3637=>0,3638=>0,3639=>0,3640=>0,3641=>0,3642=>0,63260=>224,63261=>224,3647=>437,
28
- 3648=>247,3649=>439,3650=>273,3651=>318,3652=>299,3653=>349,3654=>528,3655=>0,3656=>0,3657=>0,
29
- 3658=>0,3659=>0,3660=>0,3661=>0,3662=>0,3663=>510,3664=>425,3665=>436,3666=>466,3667=>448,
30
- 3668=>460,3669=>460,3670=>464,3671=>550,3672=>496,3673=>516,3674=>487,3675=>806,63256=>0,63257=>0,
31
- 63258=>0);
32
- $enc='';
33
- $diff='';
34
- $file='cordiaupcbi.z';
35
- $ctg='cordiaupcbi.ctg.z';
36
- $originalsize=69840;
37
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/lib/tcpdf_min/fonts/cordiaupcbi.z DELETED
Binary file
includes/lib/tcpdf_min/fonts/cordiaupci.ctg.z DELETED
Binary file
includes/lib/tcpdf_min/fonts/cordiaupci.php DELETED
@@ -1,37 +0,0 @@
1
- <?php
2
- $type='TrueTypeUnicode';
3
- $name='CordiaUPC-Italic';
4
- $desc=array('Ascent'=>893,'Descent'=>-254,'CapHeight'=>-15,'Flags'=>96,'FontBBox'=>'[-394 -460 781 898]','ItalicAngle'=>-10,'StemV'=>70,'MissingWidth'=>600);
5
- $up=-50;
6
- $ut=25;
7
- $dw=600;
8
- $cw=array(
9
- 32=>220,33=>218,34=>182,35=>365,36=>365,37=>583,38=>437,39=>146,40=>218,41=>218,
10
- 42=>255,43=>433,44=>182,45=>218,46=>182,47=>182,48=>365,49=>365,50=>365,51=>365,
11
- 52=>365,53=>365,54=>365,55=>365,56=>365,57=>365,58=>182,59=>182,60=>433,61=>433,
12
- 62=>433,63=>328,64=>524,65=>437,66=>437,67=>473,68=>473,69=>400,70=>365,71=>510,
13
- 72=>473,73=>182,74=>328,75=>437,76=>365,77=>546,78=>473,79=>510,80=>400,81=>510,
14
- 82=>437,83=>400,84=>365,85=>473,86=>400,87=>583,88=>400,89=>400,90=>400,91=>218,
15
- 92=>182,93=>218,94=>433,95=>328,96=>218,97=>365,98=>400,99=>365,100=>400,101=>365,
16
- 102=>182,103=>400,104=>365,105=>146,106=>146,107=>328,108=>146,109=>546,110=>365,111=>365,
17
- 112=>400,113=>400,114=>218,115=>328,116=>182,117=>365,118=>328,119=>473,120=>328,121=>328,
18
- 122=>328,123=>218,124=>146,125=>218,126=>433,8230=>655,8216=>146,8217=>146,8220=>255,8221=>255,
19
- 8226=>328,8211=>328,8212=>655,63259=>0,63232=>382,63233=>0,63234=>0,63235=>0,63236=>0,63237=>0,
20
- 63238=>0,63239=>0,63240=>0,63241=>0,63242=>0,63243=>0,63244=>0,63245=>0,63246=>0,63247=>608,
21
- 63248=>0,63249=>0,63250=>0,63251=>0,63252=>0,63253=>0,63254=>0,63255=>0,3584=>100,3585=>400,
22
- 3586=>376,3587=>400,3588=>417,3589=>417,3590=>487,3591=>313,3592=>382,3593=>405,3594=>382,3595=>382,
23
- 3596=>597,3597=>608,3598=>440,3599=>440,3600=>382,3601=>504,3602=>614,3603=>608,3604=>417,3605=>417,
24
- 3606=>400,3607=>429,3608=>359,3609=>429,3610=>446,3611=>446,3612=>405,3613=>405,3614=>463,3615=>463,
25
- 3616=>440,3617=>434,3618=>400,3619=>301,3620=>400,3621=>405,3622=>440,3623=>347,3624=>417,3625=>475,
26
- 3626=>405,3627=>429,3628=>463,3629=>394,3630=>382,3631=>359,3632=>359,3633=>0,3634=>347,3635=>347,
27
- 3636=>0,3637=>0,3638=>0,3639=>0,3640=>0,3641=>0,3642=>0,63260=>220,63261=>220,3647=>437,
28
- 3648=>202,3649=>376,3650=>243,3651=>278,3652=>260,3653=>347,3654=>376,3655=>0,3656=>0,3657=>0,
29
- 3658=>0,3659=>0,3660=>0,3661=>0,3662=>0,3663=>313,3664=>463,3665=>463,3666=>487,3667=>487,
30
- 3668=>487,3669=>487,3670=>463,3671=>487,3672=>487,3673=>487,3674=>409,3675=>792,63256=>0,63257=>0,
31
- 63258=>0);
32
- $enc='';
33
- $diff='';
34
- $file='cordiaupci.z';
35
- $ctg='cordiaupci.ctg.z';
36
- $originalsize=75700;
37
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/lib/tcpdf_min/fonts/cordiaupci.z DELETED
Binary file
includes/lib/tcpdf_min/fonts/dejavusans.ctg.z DELETED
Binary file
includes/lib/tcpdf_min/fonts/dejavusans.php DELETED
@@ -1,16 +0,0 @@
1
- <?php
2
- // TCPDF FONT FILE DESCRIPTION
3
- $type='TrueTypeUnicode';
4
- $name='DejaVuSans';
5
- $up=-63;
6
- $ut=44;
7
- $dw=600;
8
- $diff='';
9
- $originalsize=741536;
10
- $enc='';
11
- $file='dejavusans.z';
12
- $ctg='dejavusans.ctg.z';
13
- $desc=array('Flags'=>32,'FontBBox'=>'[-1021 -415 1681 1167]','ItalicAngle'=>0,'Ascent'=>928,'Descent'=>-236,'Leading'=>0,'CapHeight'=>729,'XHeight'=>547,'StemV'=>34,'StemH'=>15,'AvgWidth'=>507,'MaxWidth'=>1735,'MissingWidth'=>600);
14
- $cbbox=array(0=>array(50,-177,550,705),32=>array(151,0,250,729),33=>array(151,0,250,729),34=>array(96,458,364,729),35=>array(77,0,761,718),36=>array(83,-147,553,760),37=>array(55,-14,895,742),38=>array(63,-14,749,742),39=>array(96,458,179,729),40=>array(86,-132,310,759),41=>array(80,-132,304,759),42=>array(30,286,470,742),43=>array(106,0,732,627),44=>array(77,-116,220,124),45=>array(49,234,312,314),46=>array(107,0,210,124),47=>array(0,-93,337,729),48=>array(66,-14,570,742),49=>array(110,0,544,729),50=>array(73,0,536,742),51=>array(76,-14,556,742),52=>array(49,0,580,729),53=>array(77,-14,549,729),54=>array(70,-14,573,742),55=>array(82,0,551,729),56=>array(68,-14,568,742),57=>array(63,-14,566,742),58=>array(117,0,220,517),59=>array(77,-116,220,517),60=>array(106,46,732,581),61=>array(106,172,732,454),62=>array(106,46,732,581),63=>array(72,0,461,742),64=>array(66,-174,930,704),65=>array(8,0,676,729),66=>array(98,0,615,729),67=>array(56,-14,644,742),68=>array(98,0,711,729),69=>array(98,0,568,729),70=>array(98,0,517,729),71=>array(56,-14,693,742),72=>array(98,0,654,729),73=>array(98,0,197,729),74=>array(-52,-200,197,729),75=>array(98,0,677,729),76=>array(98,0,552,729),77=>array(98,0,765,729),78=>array(98,0,650,729),79=>array(56,-14,731,742),80=>array(98,0,569,729),81=>array(56,-129,731,742),82=>array(98,0,666,729),83=>array(66,-14,579,742),84=>array(-3,0,614,729),85=>array(87,-14,645,729),86=>array(8,0,676,729),87=>array(33,0,956,729),88=>array(30,0,654,729),89=>array(-2,0,613,729),90=>array(45,0,640,729),91=>array(86,-132,293,760),92=>array(0,-93,337,729),93=>array(97,-132,304,760),94=>array(106,457,732,729),95=>array(-10,-236,510,-166),96=>array(83,617,317,800),97=>array(60,-14,522,560),98=>array(91,-14,580,760),99=>array(55,-14,488,560),100=>array(55,-14,544,760),101=>array(55,-14,562,560),102=>array(23,0,371,760),103=>array(55,-208,544,560),104=>array(91,0,549,760),105=>array(94,0,184,760),106=>array(-18,-208,184,760),107=>array(91,0,576,760),108=>array(94,0,184,760),109=>array(91,0,889,560),110=>array(91,0,549,560),111=>array(55,-14,557,560),112=>array(91,-208,580,560),113=>array(55,-208,544,560),114=>array(91,0,411,560),115=>array(54,-14,472,560),116=>array(27,0,368,702),117=>array(85,-14,543,560),118=>array(30,0,562,547),119=>array(42,0,776,547),120=>array(29,0,559,547),121=>array(30,-208,562,547),122=>array(43,0,482,547),123=>array(125,-163,511,760),124=>array(127,-236,210,764),125=>array(125,-163,511,760),126=>array(106,228,732,399),160=>array(151,0,250,729),161=>array(151,0,250,729),162=>array(84,-153,517,699),163=>array(63,0,548,742),164=>array(46,40,592,587),165=>array(40,0,595,729),166=>array(127,-171,210,699),167=>array(45,-95,454,742),168=>array(105,659,395,758),169=>array(138,0,862,725),170=>array(56,229,404,742),171=>array(77,69,518,517),172=>array(106,140,732,421),173=>array(49,234,312,314),174=>array(138,0,862,725),175=>array(104,673,396,745),176=>array(95,432,405,742),177=>array(106,0,732,627),178=>array(46,326,338,742),179=>array(48,319,350,742),180=>array(181,616,415,800),181=>array(85,-208,612,547),182=>array(77,-96,528,729),183=>array(107,285,210,409),184=>array(142,-193,344,0),185=>array(67,326,346,734),186=>array(47,229,424,742),187=>array(94,69,535,517),188=>array(67,-14,937,742),189=>array(67,-14,906,742),190=>array(48,-14,937,742),191=>array(70,-14,459,729),192=>array(8,0,676,927),193=>array(8,0,676,927),194=>array(8,0,676,928),195=>array(8,0,676,921),196=>array(8,0,676,913),197=>array(8,0,676,928),198=>array(4,0,910,729),199=>array(56,-193,644,742),200=>array(98,0,568,927),201=>array(98,0,568,927),202=>array(98,0,568,928),203=>array(98,0,568,913),204=>array(29,0,216,927),205=>array(79,0,265,927),206=>array(-1,0,297,928),207=>array(3,0,293,913),208=>array(5,0,716,729),209=>array(98,0,650,921),210=>array(56,-14,731,927),211=>array(56,-14,731,927),212=>array(56,-14,731,928),213=>array(56,-14,731,921),214=>array(56,-14,731,913),215=>array(137,31,701,596),216=>array(50,-34,737,761),217=>array(87,-14,645,927),218=>array(87,-14,645,927),219=>array(87,-14,645,928),220=>array(87,-14,645,913),221=>array(-2,0,613,927),222=>array(98,0,569,729),223=>array(91,-14,584,760),224=>array(60,-14,522,800),225=>array(60,-14,522,800),226=>array(60,-14,522,800),227=>array(60,-14,522,777),228=>array(60,-14,522,758),229=>array(60,-14,522,878),230=>array(60,-14,929,560),231=>array(55,-193,488,560),232=>array(55,-14,562,800),233=>array(55,-14,562,800),234=>array(55,-14,562,800),235=>array(55,-14,562,758),236=>array(-28,0,206,800),237=>array(70,0,304,800),238=>array(-17,0,295,800),239=>array(-6,0,284,758),240=>array(55,-14,557,760),241=>array(91,0,549,777),242=>array(55,-14,557,800),243=>array(55,-14,557,800),244=>array(55,-14,557,800),245=>array(55,-14,557,777),246=>array(55,-14,557,758),247=>array(106,73,732,554),248=>array(35,-46,576,592),249=>array(85,-14,543,800),250=>array(85,-14,543,800),251=>array(85,-14,543,800),252=>array(85,-14,543,758),253=>array(30,-208,562,800),254=>array(91,-208,580,760),255=>array(30,-208,562,758),256=>array(8,0,676,899),257=>array(60,-14,522,745),258=>array(8,0,676,946),259=>array(60,-14,522,765),260=>array(8,-193,706,729),261=>array(60,-193,563,560),262=>array(56,-14,644,927),263=>array(55,-14,488,800),264=>array(56,-14,644,928),265=>array(55,-14,488,800),266=>array(56,-14,644,914),267=>array(55,-14,488,760),268=>array(56,-14,644,928),269=>array(55,-14,488,800),270=>array(98,0,711,928),271=>array(55,-14,732,760),272=>array(5,0,716,729),273=>array(55,-14,619,760),274=>array(98,0,568,900),275=>array(55,-14,562,745),276=>array(98,0,568,928),277=>array(55,-14,562,785),278=>array(98,0,568,914),279=>array(55,-14,562,760),280=>array(98,-193,569,729),281=>array(55,-193,562,560),282=>array(98,0,568,925),283=>array(55,-14,562,797),284=>array(56,-14,693,928),285=>array(55,-208,544,800),286=>array(56,-14,693,928),287=>array(55,-208,544,785),288=>array(56,-14,693,914),289=>array(55,-208,544,760),290=>array(56,-250,693,742),291=>array(55,-208,544,775),292=>array(98,0,654,928),293=>array(-13,0,549,928),294=>array(98,0,818,729),295=>array(59,0,578,760),296=>array(-14,0,309,921),297=>array(-22,0,300,777),298=>array(1,0,293,899),299=>array(-7,0,285,745),300=>array(-5,0,300,928),301=>array(-14,0,292,785),302=>array(86,-193,268,729),303=>array(73,-193,255,760),304=>array(98,0,198,914),305=>array(94,0,184,560),306=>array(98,-200,492,729),307=>array(94,-208,461,760),308=>array(-52,-200,296,928),309=>array(-18,-208,295,800),310=>array(98,-235,677,729),311=>array(91,-235,576,760),312=>array(91,0,576,547),313=>array(98,0,552,928),314=>array(94,0,286,928),315=>array(98,-235,552,729),316=>array(66,-235,209,760),317=>array(98,0,552,729),318=>array(94,0,375,760),319=>array(98,0,552,729),320=>array(94,0,314,760),321=>array(-7,0,557,729),322=>array(1,0,285,760),323=>array(98,0,650,928),324=>array(91,0,549,803),325=>array(98,-235,650,729),326=>array(91,-235,549,560),327=>array(98,0,650,921),328=>array(91,0,549,800),329=>array(100,0,715,729),330=>array(98,-208,637,742),331=>array(91,-208,549,560),332=>array(56,-14,731,899),333=>array(55,-14,557,745),334=>array(56,-14,731,928),335=>array(55,-14,557,785),336=>array(56,-14,731,927),337=>array(55,-14,557,800),338=>array(56,0,1006,729),339=>array(55,-14,970,560),340=>array(98,0,666,928),341=>array(91,0,447,803),342=>array(98,-235,666,729),343=>array(63,-235,411,560),344=>array(98,0,666,921),345=>array(91,0,419,800),346=>array(66,-14,579,928),347=>array(54,-14,472,803),348=>array(66,-14,579,928),349=>array(54,-14,472,800),350=>array(66,-193,579,742),351=>array(54,-193,472,560),352=>array(66,-14,579,928),353=>array(54,-14,472,800),354=>array(-3,-193,614,729),355=>array(27,-193,368,702),356=>array(-3,0,614,921),357=>array(27,0,374,813),358=>array(-3,0,614,729),359=>array(27,0,368,702),360=>array(87,-14,645,921),361=>array(85,-14,543,777),362=>array(87,-14,645,899),363=>array(85,-14,543,745),364=>array(87,-14,645,928),365=>array(85,-14,543,785),366=>array(87,-14,645,929),367=>array(85,-14,543,849),368=>array(87,-14,645,927),369=>array(85,-14,546,800),370=>array(87,-193,645,729),371=>array(85,-193,613,560),372=>array(33,0,956,932),373=>array(42,0,776,803),374=>array(-2,0,613,932),375=>array(30,-208,562,803),376=>array(-2,0,613,913),377=>array(45,0,640,928),378=>array(43,0,482,803),379=>array(45,0,640,914),380=>array(43,0,482,760),381=>array(45,0,640,928),382=>array(43,0,482,800),383=>array(23,0,371,760),384=>array(16,-14,580,760),385=>array(-51,0,664,729),386=>array(98,0,615,729),387=>array(91,-14,580,760),388=>array(0,0,615,729),389=>array(0,-14,580,760),390=>array(56,-14,644,742),391=>array(56,-14,794,924),392=>array(55,-14,600,760),393=>array(5,0,716,729),394=>array(-51,0,760,729),395=>array(98,0,615,729),396=>array(55,-14,544,760),397=>array(55,-208,557,548),398=>array(64,0,534,729),399=>array(57,-14,731,742),400=>array(80,-14,560,742),401=>array(-52,-200,517,729),402=>array(-63,-208,371,760),403=>array(56,-14,824,924),404=>array(4,-210,683,729),405=>array(91,0,910,760),406=>array(98,0,347,729),407=>array(5,0,290,729),408=>array(98,0,746,742),409=>array(90,0,576,760),410=>array(5,0,271,760),411=>array(30,0,562,760),412=>array(87,-14,894,729),413=>array(-52,-200,650,729),414=>array(91,-208,549,560),415=>array(56,-14,731,742),416=>array(50,-14,764,760),417=>array(58,-14,603,615),418=>array(56,-14,851,742),419=>array(55,-208,668,560),420=>array(-51,0,618,729),421=>array(90,-208,580,760),422=>array(98,-129,666,729),423=>array(56,-14,569,742),424=>array(49,-14,467,560),425=>array(98,0,568,729),426=>array(-132,-208,355,760),427=>array(27,-208,368,702),428=>array(12,0,614,729),429=>array(27,0,368,760),430=>array(-3,-200,614,729),431=>array(84,-4,796,760),432=>array(86,-14,676,615),433=>array(38,-14,726,724),434=>array(98,-15,683,729),435=>array(-2,0,742,742),436=>array(30,-208,730,560),437=>array(45,0,640,729),438=>array(43,0,482,547),439=>array(78,-31,621,729),440=>array(45,-31,588,729),441=>array(51,-213,531,547),442=>array(55,-208,488,547),443=>array(73,0,536,742),444=>array(45,-31,622,729),445=>array(51,-213,531,547),446=>array(43,-14,456,702),447=>array(91,-208,580,560),448=>array(98,-208,197,729),449=>array(98,-208,394,729),450=>array(10,-208,451,729),451=>array(98,0,197,729),452=>array(98,0,1352,928),453=>array(98,0,1211,800),454=>array(55,-14,1071,800),455=>array(98,-200,768,729),456=>array(98,-208,733,760),457=>array(94,-208,367,760),458=>array(98,-200,868,729),459=>array(98,-208,839,760),460=>array(91,-208,733,760),461=>array(8,0,676,928),462=>array(60,-14,522,800),463=>array(-1,0,297,928),464=>array(-16,0,296,800),465=>array(56,-14,731,928),466=>array(55,-14,557,800),467=>array(87,-14,645,928),468=>array(85,-14,543,800),469=>array(87,-14,645,1025),470=>array(85,-14,543,899),471=>array(87,-14,645,1044),472=>array(85,-14,543,892),473=>array(87,-14,645,1044),474=>array(85,-14,543,892),475=>array(87,-14,645,1047),476=>array(85,-14,543,892),477=>array(55,-14,562,560),478=>array(8,0,676,1025),479=>array(60,-14,522,899),480=>array(8,0,676,1025),481=>array(60,-14,522,869),482=>array(4,0,910,900),483=>array(60,-14,929,743),484=>array(56,-14,752,742),485=>array(55,-208,622,560),486=>array(56,-14,693,928),487=>array(55,-208,544,798),488=>array(98,0,677,928),489=>array(-11,0,576,928),490=>array(56,-193,731,742),491=>array(55,-193,557,560),492=>array(56,-193,731,899),493=>array(55,-193,557,745),494=>array(78,-31,621,928),495=>array(43,-213,523,800),496=>array(-18,-208,299,800),497=>array(98,0,1352,729),498=>array(98,0,1211,729),499=>array(55,-14,1071,760),500=>array(56,-14,693,928),501=>array(55,-208,544,798),502=>array(98,-14,1022,729),503=>array(98,-208,626,742),504=>array(98,0,650,927),505=>array(91,0,549,799),506=>array(8,0,676,931),507=>array(60,-14,607,931),508=>array(4,0,910,928),509=>array(60,-14,929,798),510=>array(50,-34,737,928),511=>array(35,-46,576,798),512=>array(8,0,676,930),513=>array(60,-14,522,799),514=>array(8,0,676,901),515=>array(60,-14,522,785),516=>array(98,0,568,930),517=>array(55,-14,562,798),518=>array(98,0,568,901),519=>array(55,-14,562,785),520=>array(-43,0,306,930),521=>array(-30,0,313,798),522=>array(2,0,308,901),523=>array(-14,0,292,785),524=>array(56,-14,731,930),525=>array(55,-14,557,799),526=>array(56,-14,731,901),527=>array(55,-14,557,785),528=>array(97,0,666,930),529=>array(63,0,411,798),530=>array(98,0,666,901),531=>array(91,0,421,785),532=>array(87,-14,645,930),533=>array(85,-14,543,799),534=>array(87,-14,645,901),535=>array(85,-14,543,785),536=>array(66,-240,579,742),537=>array(54,-240,472,560),538=>array(-3,-240,614,729),539=>array(27,-240,368,702),540=>array(76,-210,556,742),541=>array(35,-211,467,560),542=>array(98,0,654,928),543=>array(-8,0,549,928),544=>array(98,-208,637,742),545=>array(55,-70,783,760),546=>array(55,-14,643,742),547=>array(55,-14,555,632),548=>array(45,-208,640,729),549=>array(43,-208,482,547),550=>array(8,0,676,914),551=>array(60,-14,522,760),552=>array(98,-193,568,729),553=>array(55,-193,562,560),554=>array(56,-14,731,1025),555=>array(55,-14,557,899),556=>array(56,-14,731,1025),557=>array(55,-14,557,864),558=>array(56,-14,731,914),559=>array(55,-14,557,760),560=>array(56,-14,731,1025),561=>array(55,-14,557,899),562=>array(-2,0,613,899),563=>array(30,-208,562,745),564=>array(67,-70,420,757),565=>array(91,-70,788,560),566=>array(27,-70,422,702),567=>array(-18,-208,184,547),568=>array(55,-14,943,760),569=>array(55,-208,943,560),570=>array(-1,-34,686,761),571=>array(6,-34,692,761),572=>array(4,-46,545,592),573=>array(5,0,552,729),574=>array(-38,-34,649,761),575=>array(54,-242,512,560),576=>array(43,-242,525,547),577=>array(39,0,569,729),578=>array(39,0,445,560),579=>array(5,0,615,729),580=>array(6,-14,726,729),581=>array(8,0,676,729),582=>array(98,-93,568,822),583=>array(55,-93,562,640),584=>array(-52,-200,290,729),585=>array(-18,-208,264,760),586=>array(56,-200,836,743),587=>array(55,-208,656,560),588=>array(5,0,666,729),589=>array(7,0,411,560),590=>array(-5,0,615,729),591=>array(5,-208,588,547),592=>array(85,-14,547,560),593=>array(55,-14,544,560),594=>array(91,-14,580,560),595=>array(91,-14,580,760),596=>array(62,-14,495,560),597=>array(55,-69,488,560),598=>array(55,-208,656,760),599=>array(55,-14,715,760),600=>array(55,-14,562,560),601=>array(55,-14,562,560),602=>array(61,-14,814,560),603=>array(65,-14,473,561),604=>array(65,-14,473,561),605=>array(65,-14,771,561),606=>array(55,-14,596,561),607=>array(-18,-208,264,547),608=>array(55,-208,715,760),609=>array(55,-208,544,547),610=>array(55,-14,539,560),611=>array(47,-210,549,547),612=>array(47,-14,549,547),613=>array(85,-208,543,547),614=>array(91,0,549,760),615=>array(91,-208,549,760),616=>array(7,0,265,760),617=>array(81,0,304,547),618=>array(57,0,314,547),619=>array(37,0,359,760),620=>array(38,0,416,760),621=>array(94,-208,296,760),622=>array(94,-213,651,760),623=>array(91,-13,889,548),624=>array(91,-208,889,548),625=>array(91,-208,889,560),626=>array(-18,-208,552,560),627=>array(91,-208,661,560),628=>array(87,0,549,547),629=>array(55,-14,557,560),630=>array(55,0,768,547),631=>array(72,-18,655,561),632=>array(55,-208,602,760),633=>array(0,-13,320,547),634=>array(0,-13,320,755),635=>array(0,-208,433,547),636=>array(91,-207,411,560),637=>array(91,-208,411,560),638=>array(64,0,437,560),639=>array(57,0,437,560),640=>array(91,0,574,547),641=>array(91,0,574,547),642=>array(54,-208,472,560),643=>array(-19,-208,355,760),644=>array(-19,-208,355,760),645=>array(27,-208,401,549),646=>array(-132,-208,355,760),647=>array(27,-156,368,546),648=>array(27,-208,370,702),649=>array(0,-14,634,547),650=>array(55,-15,564,547),651=>array(94,0,545,548),652=>array(30,0,562,547),653=>array(42,0,776,547),654=>array(30,0,562,760),655=>array(50,0,552,547),656=>array(43,-208,593,547),657=>array(43,-54,482,547),658=>array(43,-213,523,547),659=>array(53,-213,553,547),660=>array(43,0,456,759),661=>array(43,0,456,759),662=>array(43,0,456,759),663=>array(43,-213,456,760),664=>array(56,-14,731,742),665=>array(91,0,530,547),666=>array(55,-14,596,561),667=>array(55,-14,724,760),668=>array(91,0,563,547),669=>array(-132,-208,272,760),670=>array(91,-213,576,547),671=>array(91,0,493,547),672=>array(55,-208,746,759),673=>array(43,0,456,759),674=>array(43,0,456,759),675=>array(55,-14,970,760),676=>array(55,-213,1014,760),677=>array(55,-54,970,760),678=>array(27,0,781,702),679=>array(27,-208,629,760),680=>array(27,-70,723,702),681=>array(23,-208,804,760),682=>array(94,0,657,760),683=>array(94,0,610,760),684=>array(26,-15,489,640),685=>array(26,84,489,640),686=>array(0,-214,570,760),687=>array(0,-208,683,760),688=>array(57,326,346,751),689=>array(57,326,346,751),690=>array(-11,209,116,751),691=>array(57,326,259,640),692=>array(35,319,236,632),693=>array(35,209,307,632),694=>array(16,326,320,632),695=>array(26,326,489,632),696=>array(19,209,354,632),697=>array(78,557,203,800),698=>array(78,557,384,800),699=>array(85,489,228,729),700=>array(87,499,230,729),701=>array(96,616,239,856),702=>array(57,492,191,760),703=>array(57,492,191,760),704=>array(57,326,317,751),705=>array(57,326,317,751),706=>array(130,524,370,836),707=>array(130,524,370,836),708=>array(94,561,406,800),709=>array(94,561,406,800),710=>array(94,616,406,800),711=>array(94,616,406,800),712=>array(104,488,171,759),713=>array(104,673,396,745),714=>array(181,616,415,800),715=>array(83,617,317,800),716=>array(104,-148,171,123),717=>array(104,-156,396,-84),718=>array(83,-236,317,-54),719=>array(181,-236,415,-53),720=>array(54,0,229,517),721=>array(54,356,229,517),722=>array(57,249,191,517),723=>array(57,249,191,517),724=>array(140,229,360,448),725=>array(140,229,360,448),726=>array(49,125,341,417),727=>array(49,234,269,307),728=>array(97,645,403,785),729=>array(200,658,300,758),730=>array(116,610,384,878),731=>array(162,-193,344,0),732=>array(89,639,411,777),733=>array(117,616,460,800),734=>array(-0,233,334,504),735=>array(117,616,383,800),736=>array(57,208,374,632),737=>array(60,326,116,751),738=>array(57,326,320,648),739=>array(57,326,391,632),740=>array(57,326,317,751),741=>array(104,0,389,668),742=>array(104,0,389,668),743=>array(104,0,389,668),744=>array(104,0,389,668),745=>array(104,0,389,668),748=>array(94,-260,406,-21),749=>array(104,610,396,808),750=>array(85,489,428,729),755=>array(116,-240,384,28),759=>array(89,-192,411,-55),768=>array(-418,560,-184,800),769=>array(-320,560,-86,800),770=>array(-406,560,-94,800),771=>array(-412,639,-90,777),772=>array(-394,673,-102,745),773=>array(-510,686,10,755),774=>array(-407,645,-101,785),775=>array(-296,560,-206,760),776=>array(-395,560,-105,758),777=>array(-348,618,-129,810),778=>array(-385,610,-117,878),779=>array(-381,616,-38,800),780=>array(-404,560,-92,800),781=>array(-283,615,-217,832),782=>array(-383,615,-117,832),783=>array(-455,616,-112,800),784=>array(-407,645,-101,917),785=>array(-407,645,-101,785),786=>array(-235,489,-92,645),787=>array(-305,595,-187,844),788=>array(-305,595,-187,844),789=>array(-66,575,66,759),790=>array(-418,-266,-184,-83),791=>array(-320,-267,-86,-83),792=>array(-357,-240,-221,-24),793=>array(-279,-240,-143,-24),794=>array(-208,690,31,930),795=>array(-133,427,60,609),796=>array(-313,-241,-208,-32),797=>array(-370,-240,-130,-87),798=>array(-370,-240,-130,-87),799=>array(-357,-240,-143,-24),800=>array(-370,-184,-130,-117),801=>array(-315,-208,-23,63),802=>array(-317,-208,-25,63),803=>array(-296,-183,-206,-69),804=>array(-396,-183,-106,-84),805=>array(-355,-241,-146,-32),806=>array(-323,-240,-180,-84),807=>array(-358,-193,-156,0),808=>array(-338,-193,-156,0),809=>array(-283,-240,-217,-47),810=>array(-383,-211,-114,-50),811=>array(-452,-222,-51,-82),812=>array(-404,-240,-92,-57),813=>array(-407,-240,-95,-57),814=>array(-407,-222,-101,-82),815=>array(-407,-224,-101,-83),816=>array(-412,-222,-90,-84),817=>array(-394,-156,-102,-84),818=>array(-510,-236,10,-166),819=>array(-510,-236,10,-9),820=>array(-557,240,-41,381),821=>array(-316,221,-59,301),822=>array(-634,221,-0,301),823=>array(-574,-46,-33,592),824=>array(-741,-34,-54,761),825=>array(-291,-241,-187,-32),826=>array(-382,-206,-113,-44),827=>array(-359,-240,-139,-21),828=>array(-452,-222,-51,-82),829=>array(-354,619,-138,834),830=>array(-247,595,-109,853),831=>array(-510,528,10,755),832=>array(-418,617,-184,800),833=>array(-320,616,-86,800),834=>array(-412,639,-90,777),835=>array(-305,595,-187,844),836=>array(-387,659,-77,978),837=>array(-278,-208,-171,-45),838=>array(-396,639,-104,786),839=>array(-360,-226,-140,-35),840=>array(-365,-240,-135,-47),841=>array(-360,-240,-140,-21),842=>array(-411,616,-89,800),843=>array(-411,567,-89,850),844=>array(-411,596,-89,820),845=>array(-452,-230,-48,-30),846=>array(-350,-240,-150,-45),847=>array(-316,610,-184,878),849=>array(-316,610,-184,878),850=>array(-407,547,-101,855),851=>array(-354,-240,-138,-24),855=>array(-316,610,-184,878),856=>array(-103,658,-3,758),858=>array(-430,-241,-71,-32),860=>array(-445,-237,445,-60),861=>array(-445,802,445,979),862=>array(-445,855,445,927),863=>array(-445,-156,445,-84),864=>array(-354,756,354,894),865=>array(-445,752,445,929),866=>array(-442,-230,447,-30),880=>array(98,0,555,729),881=>array(94,0,477,547),882=>array(98,0,764,729),883=>array(98,0,549,729),884=>array(78,557,203,800),885=>array(78,-208,203,35),886=>array(98,0,650,729),887=>array(91,0,559,547),890=>array(214,-208,321,-45),891=>array(62,-14,495,560),892=>array(55,-14,488,560),893=>array(62,-14,495,560),894=>array(77,-116,220,517),900=>array(181,616,415,800),901=>array(105,659,415,978),902=>array(8,0,676,800),903=>array(107,285,210,409),904=>array(-12,0,682,800),905=>array(-6,0,765,800),906=>array(-9,0,311,800),908=>array(-7,-14,750,800),910=>array(-15,0,821,800),911=>array(-18,0,752,800),912=>array(2,0,313,978),913=>array(8,0,676,729),914=>array(98,0,615,729),915=>array(98,0,552,729),916=>array(8,0,676,729),917=>array(98,0,568,729),918=>array(45,0,640,729),919=>array(98,0,654,729),920=>array(56,-14,731,742),921=>array(98,0,197,729),922=>array(98,0,677,729),923=>array(8,0,676,729),924=>array(98,0,765,729),925=>array(98,0,650,729),926=>array(98,0,548,729),927=>array(56,-14,731,742),928=>array(98,0,654,729),929=>array(98,0,569,729),931=>array(98,0,568,729),932=>array(-3,0,614,729),933=>array(-2,0,613,729),934=>array(56,0,731,729),935=>array(30,0,654,729),936=>array(56,0,732,729),937=>array(38,0,726,738),938=>array(3,0,293,913),939=>array(-2,0,613,913),940=>array(55,-12,611,800),941=>array(65,-14,473,800),942=>array(91,-208,549,800),943=>array(81,0,324,800),944=>array(73,-14,521,978),945=>array(55,-12,611,559),946=>array(94,-208,566,766),947=>array(16,-208,562,547),948=>array(55,-14,557,742),949=>array(65,-14,473,561),950=>array(52,-210,496,760),951=>array(91,-208,549,560),952=>array(55,-11,557,768),953=>array(81,0,304,547),954=>array(93,0,565,547),955=>array(30,0,562,760),956=>array(85,-208,612,547),957=>array(36,0,512,547),958=>array(52,-210,500,760),959=>array(55,-14,557,560),960=>array(36,-19,574,547),961=>array(91,-208,580,560),962=>array(55,-210,488,560),963=>array(55,-14,604,547),964=>array(49,0,553,547),965=>array(73,-14,521,547),966=>array(55,-208,602,551),967=>array(29,-208,549,547),968=>array(55,-208,602,547),969=>array(66,-14,769,547),970=>array(2,0,311,758),971=>array(73,-14,521,758),972=>array(55,-14,557,800),973=>array(73,-14,521,800),974=>array(66,-14,769,800),975=>array(98,-208,677,729),976=>array(82,-11,538,768),977=>array(55,-11,557,768),978=>array(42,0,665,734),979=>array(-15,0,829,800),980=>array(42,0,665,913),981=>array(55,-208,602,760),982=>array(32,-14,803,547),983=>array(55,-206,600,550),984=>array(56,-207,731,742),985=>array(55,-208,557,560),986=>array(68,-210,583,729),987=>array(55,-210,540,547),988=>array(98,0,517,729),989=>array(-94,-208,409,760),990=>array(87,-2,604,729),991=>array(93,0,566,759),992=>array(56,-208,797,742),993=>array(58,-180,573,559),994=>array(56,-213,877,729),995=>array(66,-208,769,547),996=>array(56,-208,660,742),997=>array(55,-208,568,560),998=>array(98,-213,735,729),999=>array(22,-14,571,575),1000=>array(39,-208,630,745),1001=>array(49,-208,552,560),1002=>array(56,0,714,742),1003=>array(26,0,599,560),1004=>array(56,-14,643,758),1005=>array(55,-14,544,758),1006=>array(21,-208,589,729),1007=>array(27,-208,510,726),1008=>array(55,-7,600,550),1009=>array(91,-208,580,560),1010=>array(55,-14,488,560),1011=>array(-18,-208,184,760),1012=>array(56,-14,731,742),1013=>array(55,-14,480,560),1014=>array(96,-14,521,560),1015=>array(98,0,569,729),1016=>array(91,-208,580,760),1017=>array(56,-14,644,742),1018=>array(98,0,765,729),1019=>array(62,-208,587,547),1020=>array(42,-208,580,560),1021=>array(56,-14,644,742),1022=>array(56,-14,644,742),1023=>array(56,-14,644,742),1024=>array(98,0,568,927),1025=>array(98,0,568,913),1026=>array(-3,-200,709,729),1027=>array(98,0,552,927),1028=>array(56,-14,644,742),1029=>array(66,-14,579,742),1030=>array(98,0,197,729),1031=>array(3,0,293,913),1032=>array(-52,-200,197,729),1033=>array(41,0,1023,729),1034=>array(98,0,975,729),1035=>array(-3,0,709,729),1036=>array(98,0,690,927),1037=>array(98,0,650,927),1038=>array(17,0,592,928),1039=>array(98,-157,654,729),1040=>array(8,0,676,729),1041=>array(98,0,615,729),1042=>array(98,0,615,729),1043=>array(98,0,552,729),1044=>array(49,-157,732,729),1045=>array(98,0,568,729),1046=>array(20,0,1058,729),1047=>array(66,-14,575,742),1048=>array(98,0,650,729),1049=>array(98,0,650,928),1050=>array(98,0,690,729),1051=>array(41,0,653,729),1052=>array(98,0,765,729),1053=>array(98,0,654,729),1054=>array(56,-14,731,742),1055=>array(98,0,654,729),1056=>array(98,0,569,729),1057=>array(56,-14,644,742),1058=>array(-3,0,614,729),1059=>array(17,0,592,729),1060=>array(59,0,802,729),1061=>array(30,0,654,729),1062=>array(98,-157,737,729),1063=>array(85,0,587,729),1064=>array(98,0,971,729),1065=>array(98,-157,1054,729),1066=>array(29,0,762,729),1067=>array(98,0,784,729),1068=>array(98,0,615,729),1069=>array(54,-14,642,742),1070=>array(103,-14,1023,742),1071=>array(66,0,597,729),1072=>array(60,-14,522,560),1073=>array(55,-14,562,777),1074=>array(91,0,530,547),1075=>array(91,0,477,547),1076=>array(52,-138,639,547),1077=>array(55,-14,562,560),1078=>array(34,0,867,547),1079=>array(65,-14,473,561),1080=>array(91,0,559,547),1081=>array(91,0,559,760),1082=>array(91,0,571,547),1083=>array(37,0,556,547),1084=>array(91,0,664,547),1085=>array(91,0,563,547),1086=>array(55,-14,557,560),1087=>array(91,0,563,547),1088=>array(91,-208,580,560),1089=>array(55,-14,488,560),1090=>array(29,0,553,547),1091=>array(30,-208,562,547),1092=>array(55,-208,800,729),1093=>array(29,0,559,547),1094=>array(91,-138,635,547),1095=>array(73,0,500,547),1096=>array(91,0,824,547),1097=>array(91,-138,896,547),1098=>array(30,0,647,547),1099=>array(91,0,701,560),1100=>array(91,0,530,547),1101=>array(55,-14,488,560),1102=>array(94,-14,787,560),1103=>array(57,0,517,547),1104=>array(55,-14,562,802),1105=>array(55,-14,562,758),1106=>array(23,-208,570,760),1107=>array(91,0,480,803),1108=>array(55,-14,488,560),1109=>array(54,-14,472,560),1110=>array(94,0,184,760),1111=>array(-6,0,284,758),1112=>array(-18,-208,184,760),1113=>array(37,0,843,547),1114=>array(91,0,839,547),1115=>array(23,0,567,760),1116=>array(91,0,571,803),1117=>array(91,0,559,802),1118=>array(30,-208,562,760),1119=>array(91,-138,563,547),1120=>array(56,-14,877,729),1121=>array(66,-14,769,547),1122=>array(15,0,711,729),1123=>array(15,0,613,760),1124=>array(103,-14,888,742),1125=>array(94,-14,688,560),1126=>array(8,0,871,729),1127=>array(25,0,758,547),1128=>array(98,0,1135,729),1129=>array(94,0,977,547),1130=>array(56,0,731,729),1131=>array(52,0,560,547),1132=>array(98,0,971,729),1133=>array(94,0,772,547),1134=>array(56,-208,556,935),1135=>array(44,-193,473,753),1136=>array(8,0,844,729),1137=>array(24,-208,852,765),1138=>array(56,-14,731,742),1139=>array(55,-14,557,560),1140=>array(8,0,769,742),1141=>array(24,0,640,560),1142=>array(8,0,769,930),1143=>array(24,0,640,800),1144=>array(56,-208,962,742),1145=>array(55,-208,875,560),1146=>array(56,-14,897,742),1147=>array(55,-14,704,560),1148=>array(58,-14,1122,932),1149=>array(74,-14,954,758),1150=>array(56,-14,877,900),1151=>array(66,-14,769,734),1152=>array(56,-208,644,742),1153=>array(55,-208,488,560),1154=>array(29,-44,474,457),1155=>array(-519,608,-93,810),1156=>array(-372,645,4,788),1157=>array(-288,595,-169,797),1158=>array(-288,595,-169,797),1159=>array(-776,606,4,788),1160=>array(-1021,-180,409,922),1161=>array(-957,-280,345,1022),1162=>array(98,-208,748,928),1163=>array(94,-208,652,760),1164=>array(16,0,615,729),1165=>array(19,0,534,702),1166=>array(98,0,610,729),1167=>array(91,-208,580,560),1168=>array(98,0,552,878),1169=>array(91,0,477,700),1170=>array(35,0,617,729),1171=>array(27,0,542,547),1172=>array(98,-200,600,729),1173=>array(91,-208,505,547),1174=>array(20,-157,1071,729),1175=>array(34,-138,876,547),1176=>array(66,-193,575,742),1177=>array(65,-193,473,561),1178=>array(98,-157,713,729),1179=>array(91,-138,587,547),1180=>array(98,0,690,729),1181=>array(91,0,571,547),1182=>array(16,0,690,729),1183=>array(30,0,571,760),1184=>array(24,0,837,729),1185=>array(21,0,688,547),1186=>array(98,-157,752,729),1187=>array(94,-138,656,547),1188=>array(98,0,1009,729),1189=>array(94,0,862,547),1190=>array(98,-200,1057,729),1191=>array(94,-208,891,547),1192=>array(56,-14,871,743),1193=>array(55,-14,684,560),1194=>array(56,-193,644,742),1195=>array(55,-193,488,560),1196=>array(-3,-157,614,729),1197=>array(29,-138,553,547),1198=>array(-2,0,613,729),1199=>array(30,-208,562,547),1200=>array(-2,0,613,729),1201=>array(30,-208,562,547),1202=>array(30,-157,654,729),1203=>array(29,-138,559,547),1204=>array(-3,-157,910,729),1205=>array(2,-138,782,547),1206=>array(85,-157,686,729),1207=>array(73,-138,590,547),1208=>array(85,0,587,729),1209=>array(73,0,500,547),1210=>array(85,0,587,729),1211=>array(91,0,549,760),1212=>array(10,-14,885,742),1213=>array(7,-14,675,560),1214=>array(10,-184,885,742),1215=>array(7,-161,675,560),1216=>array(98,0,197,729),1217=>array(20,0,1058,928),1218=>array(34,0,867,785),1219=>array(98,-200,651,729),1220=>array(93,-208,566,547),1221=>array(26,-208,751,729),1222=>array(22,-208,646,547),1223=>array(98,-200,654,729),1224=>array(94,-208,566,547),1225=>array(98,-208,752,729),1226=>array(94,-208,656,547),1227=>array(85,-157,587,729),1228=>array(73,-138,500,547),1229=>array(98,-208,863,729),1230=>array(94,-208,750,547),1231=>array(94,0,184,760),1232=>array(8,0,676,946),1233=>array(60,-14,522,765),1234=>array(8,0,676,913),1235=>array(60,-14,522,758),1236=>array(4,0,910,729),1237=>array(60,-14,929,560),1238=>array(98,0,568,928),1239=>array(55,-14,562,785),1240=>array(57,-14,731,742),1241=>array(55,-14,562,560),1242=>array(57,-14,731,913),1243=>array(55,-14,562,758),1244=>array(20,0,1058,913),1245=>array(34,0,867,758),1246=>array(66,-14,575,913),1247=>array(65,-14,473,758),1248=>array(78,-31,621,729),1249=>array(43,-213,523,547),1250=>array(98,0,650,899),1251=>array(91,0,559,745),1252=>array(98,0,650,913),1253=>array(91,0,559,758),1254=>array(56,-14,731,913),1255=>array(55,-14,557,758),1256=>array(56,-14,731,742),1257=>array(55,-14,557,560),1258=>array(56,-14,731,913),1259=>array(55,-14,557,758),1260=>array(54,-14,642,913),1261=>array(55,-14,488,758),1262=>array(17,0,592,899),1263=>array(30,-208,562,745),1264=>array(17,0,592,913),1265=>array(30,-208,562,758),1266=>array(17,0,592,927),1267=>array(30,-208,562,800),1268=>array(85,0,587,913),1269=>array(73,0,500,758),1270=>array(98,-157,552,729),1271=>array(91,-138,477,547),1272=>array(98,0,784,913),1273=>array(91,0,701,758),1274=>array(35,-208,617,729),1275=>array(27,-208,542,547),1276=>array(30,-200,646,729),1277=>array(29,-208,549,547),1278=>array(30,0,654,729),1279=>array(29,0,559,547),1280=>array(71,0,588,729),1281=>array(55,0,495,547),1282=>array(71,-14,908,729),1283=>array(55,-14,806,547),1284=>array(98,-14,876,742),1285=>array(83,-14,784,561),1286=>array(98,-208,654,742),1287=>array(83,-208,564,561),1288=>array(26,-14,974,729),1289=>array(22,-14,866,547),1290=>array(98,-14,1022,729),1291=>array(94,-14,876,547),1292=>array(56,-14,692,742),1293=>array(55,-14,534,560),1294=>array(-3,-14,675,729),1295=>array(2,-14,620,547),1296=>array(80,-14,560,742),1297=>array(65,-14,473,561),1298=>array(41,-200,653,729),1299=>array(37,-208,556,547),1300=>array(41,0,1139,729),1301=>array(37,0,962,547),1302=>array(98,0,863,729),1303=>array(91,-208,832,560),1304=>array(66,0,967,729),1305=>array(57,-14,933,560),1306=>array(56,-129,731,742),1307=>array(55,-208,544,560),1308=>array(33,0,956,729),1309=>array(42,0,776,547),1310=>array(98,0,690,729),1311=>array(91,0,571,547),1312=>array(41,-200,1056,729),1313=>array(37,-208,881,547),1314=>array(98,-200,1057,729),1315=>array(91,-208,888,547),1316=>array(98,-157,752,729),1317=>array(91,-138,653,547),1329=>array(87,-29,680,729),1330=>array(87,0,650,743),1331=>array(45,0,729,743),1332=>array(44,0,724,743),1333=>array(87,-14,650,729),1334=>array(87,0,692,744),1335=>array(92,0,616,729),1336=>array(87,0,650,743),1337=>array(87,-14,835,743),1338=>array(45,-14,729,729),1339=>array(92,0,650,729),1340=>array(92,0,533,729),1341=>array(92,-14,849,729),1342=>array(129,-13,763,742),1343=>array(87,0,645,729),1344=>array(34,-26,638,729),1345=>array(82,-23,688,744),1346=>array(49,0,729,743),1347=>array(51,0,715,735),1348=>array(87,-14,767,729),1349=>array(71,-14,668,743),1350=>array(0,-14,680,729),1351=>array(78,-15,684,729),1352=>array(87,0,645,743),1353=>array(59,-28,664,744),1354=>array(44,0,713,743),1355=>array(82,0,686,744),1356=>array(87,0,767,743),1357=>array(87,-14,645,729),1358=>array(49,0,729,729),1359=>array(73,-14,632,741),1360=>array(87,0,645,743),1361=>array(78,-14,675,743),1362=>array(92,0,538,729),1363=>array(59,0,752,729),1364=>array(24,0,679,743),1365=>array(56,-14,731,742),1366=>array(54,-13,746,729),1369=>array(57,492,191,760),1370=>array(87,499,230,729),1371=>array(0,620,234,803),1372=>array(2,618,356,893),1373=>array(-0,617,233,800),1374=>array(4,613,401,866),1375=>array(44,618,462,760),1377=>array(85,-14,883,547),1378=>array(91,-208,549,560),1379=>array(55,-208,648,560),1380=>array(91,-208,653,560),1381=>array(85,-14,548,760),1382=>array(55,-208,648,560),1383=>array(91,0,490,760),1384=>array(91,-208,549,560),1385=>array(91,-208,738,560),1386=>array(55,-14,648,760),1387=>array(91,-208,549,760),1388=>array(91,-208,303,547),1389=>array(91,-208,889,760),1390=>array(55,-14,557,760),1391=>array(85,-208,543,760),1392=>array(91,0,549,760),1393=>array(52,-15,523,760),1394=>array(91,-208,653,560),1395=>array(68,-14,544,768),1396=>array(85,-14,647,760),1397=>array(-21,-208,181,547),1398=>array(-19,-14,543,760),1399=>array(0,-208,435,560),1400=>array(91,0,549,560),1401=>array(5,-208,370,547),1402=>array(85,-208,883,547),1403=>array(54,-208,494,561),1404=>array(91,0,609,560),1405=>array(85,-14,543,560),1406=>array(85,-208,647,760),1407=>array(85,-14,889,560),1408=>array(91,-208,549,560),1409=>array(54,-208,543,560),1410=>array(91,0,449,547),1411=>array(85,-208,889,760),1412=>array(20,-208,580,560),1413=>array(54,-14,556,560),1414=>array(34,-208,766,760),1415=>array(85,-14,812,760),1417=>array(117,0,220,415),1418=>array(49,212,312,314),1456=>array(283,-217,356,-22),1457=>array(83,-217,438,-22),1458=>array(125,-217,454,-22),1459=>array(125,-217,454,-22),1460=>array(283,-159,356,-85),1461=>array(222,-159,417,-85),1462=>array(222,-217,417,-22),1463=>array(173,-159,466,-85),1464=>array(173,-193,466,-46),1465=>array(0,625,73,698),1466=>array(0,625,73,698),1467=>array(148,-237,465,-17),1468=>array(288,237,361,310),1469=>array(283,-217,356,-22),1470=>array(49,472,312,552),1471=>array(173,625,466,698),1472=>array(102,-98,193,645),1473=>array(637,625,710,698),1474=>array(96,625,169,698),1475=>array(102,0,193,547),1478=>array(50,0,357,547),1479=>array(173,-217,466,-22),1488=>array(91,0,578,547),1489=>array(43,0,535,547),1490=>array(43,-5,383,547),1491=>array(43,0,511,547),1492=>array(91,0,563,547),1493=>array(91,0,182,547),1494=>array(43,0,303,547),1495=>array(91,0,563,547),1496=>array(90,-14,593,552),1497=>array(66,204,157,547),1498=>array(43,-208,446,547),1499=>array(43,0,474,547),1500=>array(43,0,492,729),1501=>array(91,0,573,547),1502=>array(43,0,588,555),1503=>array(91,-208,182,547),1504=>array(43,0,309,547),1505=>array(90,-14,593,547),1506=>array(43,-93,535,547),1507=>array(91,-208,549,547),1508=>array(91,0,569,547),1509=>array(43,-208,497,548),1510=>array(43,0,502,547),1511=>array(91,-208,633,546),1512=>array(43,0,474,547),1513=>array(43,0,666,547),1514=>array(10,-4,566,547),1520=>array(91,0,380,547),1521=>array(66,0,332,547),1522=>array(66,204,312,547),1523=>array(91,361,325,547),1524=>array(91,361,554,547),1542=>array(0,-20,607,892),1543=>array(0,-20,607,895),1545=>array(65,0,685,635),1546=>array(65,0,904,635),1548=>array(107,0,250,240),1557=>array(123,624,377,868),1563=>array(107,0,250,633),1567=>array(72,0,461,742),1569=>array(80,42,390,483),1570=>array(-37,0,315,939),1571=>array(53,0,220,999),1572=>array(-42,-244,406,588),1573=>array(53,-244,220,760),1574=>array(63,-131,719,588),1575=>array(94,0,184,760),1576=>array(63,-171,865,327),1577=>array(68,-28,453,513),1578=>array(63,-10,865,391),1579=>array(63,-10,865,513),1580=>array(77,-244,645,425),1581=>array(77,-244,645,425),1582=>array(77,-244,645,586),1583=>array(61,-19,388,415),1584=>array(61,-19,388,586),1585=>array(-42,-244,423,269),1586=>array(-42,-244,423,464),1587=>array(63,-244,1138,366),1588=>array(63,-244,1138,586),1589=>array(63,-244,1134,362),1590=>array(63,-244,1134,464),1591=>array(70,0,857,760),1592=>array(70,0,857,760),1593=>array(57,-244,587,521),1594=>array(57,-244,587,659),1600=>array(-10,0,303,90),1601=>array(63,-45,952,635),1602=>array(52,-215,701,635),1603=>array(70,-27,722,760),1604=>array(70,-152,637,760),1605=>array(68,-240,546,369),1606=>array(72,-162,660,464),1607=>array(68,-28,453,358),1608=>array(-42,-244,406,315),1609=>array(63,-131,719,411),1610=>array(63,-244,719,411),1611=>array(107,591,393,825),1612=>array(107,591,393,874),1613=>array(107,-239,393,-5),1614=>array(107,591,393,708),1615=>array(107,590,393,874),1616=>array(107,-137,393,-20),1617=>array(98,599,402,869),1618=>array(115,610,383,878),1619=>array(74,590,426,719),1620=>array(164,593,331,808),1621=>array(164,-244,331,-29),1623=>array(107,615,393,898),1626=>array(119,616,381,775),1632=>array(215,220,322,342),1633=>array(136,0,342,635),1634=>array(40,0,492,635),1635=>array(37,0,509,635),1636=>array(85,-10,457,641),1637=>array(66,-10,471,643),1638=>array(42,0,493,635),1639=>array(29,0,508,635),1640=>array(29,0,508,635),1641=>array(49,0,493,640),1642=>array(65,0,472,635),1643=>array(0,-110,300,318),1644=>array(87,499,230,729),1645=>array(42,101,502,537),1646=>array(63,-10,865,327),1647=>array(52,-215,701,481),1648=>array(223,602,277,887),1652=>array(60,649,227,864),1657=>array(63,-10,865,575),1658=>array(63,-10,865,513),1659=>array(63,-244,865,327),1660=>array(63,-180,865,391),1661=>array(63,-10,865,464),1662=>array(63,-244,865,327),1663=>array(63,-10,865,513),1664=>array(63,-244,865,327),1665=>array(77,-244,645,710),1666=>array(77,-244,645,708),1667=>array(77,-244,645,425),1668=>array(77,-244,645,425),1669=>array(77,-244,645,708),1670=>array(77,-244,645,425),1671=>array(77,-244,645,425),1672=>array(61,-19,388,746),1673=>array(61,-180,388,415),1674=>array(61,-171,388,415),1675=>array(61,-171,388,746),1676=>array(61,-19,388,586),1677=>array(61,-146,388,415),1678=>array(61,-19,388,708),1679=>array(61,-19,388,684),1680=>array(61,-19,388,708),1681=>array(-42,-244,469,648),1682=>array(-42,-244,473,556),1683=>array(-42,-244,507,269),1684=>array(-42,-244,474,269),1685=>array(-42,-244,634,269),1686=>array(-42,-244,474,269),1687=>array(-42,-244,439,464),1688=>array(-42,-244,439,586),1689=>array(-42,-244,439,586),1690=>array(63,-244,1138,464),1691=>array(63,-244,1138,366),1692=>array(63,-244,1138,586),1693=>array(63,-244,1134,362),1694=>array(63,-244,1134,586),1695=>array(70,0,857,760),1696=>array(57,-244,587,781),1697=>array(63,-45,952,481),1698=>array(63,-171,952,481),1699=>array(63,-171,952,635),1700=>array(63,-45,952,757),1701=>array(63,-293,952,481),1702=>array(63,-45,952,757),1703=>array(52,-215,701,635),1704=>array(52,-215,701,757),1705=>array(63,-43,895,760),1706=>array(63,-43,1000,760),1707=>array(63,-43,895,760),1708=>array(70,-27,722,760),1709=>array(70,-27,722,854),1710=>array(70,-293,722,760),1711=>array(63,-43,895,896),1712=>array(63,-43,895,896),1713=>array(63,-43,895,903),1714=>array(63,-171,895,896),1715=>array(63,-293,895,896),1716=>array(63,-43,895,1025),1717=>array(70,-152,723,971),1718=>array(70,-152,637,952),1719=>array(70,-152,684,1025),1720=>array(70,-391,637,760),1721=>array(72,-317,660,464),1722=>array(72,-162,660,366),1723=>array(72,-162,660,636),1724=>array(72,-330,660,464),1725=>array(72,-162,660,586),1726=>array(70,-33,638,487),1727=>array(77,-244,645,586),1734=>array(-42,-244,406,556),1740=>array(63,-131,719,411),1742=>array(63,-131,719,556),1749=>array(68,-28,453,358),1776=>array(215,220,322,342),1777=>array(136,0,342,635),1778=>array(40,0,492,635),1779=>array(37,0,509,635),1780=>array(40,0,471,643),1781=>array(52,-5,485,643),1782=>array(102,0,445,640),1783=>array(29,0,508,635),1784=>array(29,0,508,635),1785=>array(49,0,493,640),1984=>array(66,-14,570,742),1985=>array(110,0,544,729),1986=>array(110,0,530,729),1987=>array(110,0,530,729),1988=>array(110,0,530,729),1989=>array(110,0,530,729),1990=>array(110,0,530,729),1991=>array(104,0,532,729),1992=>array(104,0,532,729),1993=>array(77,0,560,741),1994=>array(94,0,184,729),1995=>array(55,-14,516,447),1996=>array(30,0,394,731),1997=>array(30,0,562,430),1998=>array(91,0,563,430),1999=>array(91,0,563,430),2000=>array(55,0,539,735),2001=>array(91,0,563,581),2002=>array(55,0,738,741),2003=>array(94,0,408,729),2004=>array(30,0,344,729),2005=>array(91,0,504,729),2006=>array(94,0,518,729),2007=>array(30,0,256,729),2008=>array(94,0,865,513),2009=>array(30,0,443,729),2010=>array(30,0,754,729),2011=>array(91,0,563,430),2012=>array(30,0,595,729),2013=>array(94,0,679,729),2014=>array(94,0,436,729),2015=>array(55,0,630,729),2016=>array(30,0,443,729),2017=>array(30,0,595,729),2018=>array(55,0,539,729),2019=>array(94,0,436,729),2020=>array(94,0,436,612),2021=>array(94,0,428,729),2022=>array(55,0,539,729),2023=>array(55,0,539,729),2027=>array(106,673,398,745),2028=>array(32,609,468,800),2029=>array(205,658,305,758),2030=>array(93,616,405,800),2031=>array(44,616,456,800),2032=>array(32,609,468,800),2033=>array(44,616,456,800),2034=>array(200,-184,300,-84),2035=>array(104,659,394,758),2036=>array(98,557,216,760),2037=>array(98,557,216,760),2040=>array(49,0,511,498),2041=>array(49,0,511,483),2042=>array(-10,0,371,72),3647=>array(86,-138,571,769),3713=>array(63,-10,607,560),3714=>array(68,-17,691,568),3716=>array(67,-10,619,568),3719=>array(53,-238,415,568),3720=>array(62,-0,574,575),3722=>array(68,-234,690,568),3725=>array(56,-8,619,573),3732=>array(91,-14,592,560),3733=>array(63,-15,564,579),3734=>array(0,-240,587,560),3735=>array(42,-8,599,571),3737=>array(46,-14,593,568),3738=>array(36,-8,556,561),3739=>array(36,-8,556,760),3740=>array(43,-8,725,614),3741=>array(91,-14,676,760),3742=>array(51,-8,636,561),3743=>array(51,-8,636,760),3745=>array(31,-14,636,547),3746=>array(56,-8,619,760),3747=>array(68,-8,634,568),3749=>array(39,-8,583,568),3751=>array(56,-13,558,560),3754=>array(39,-8,688,679),3755=>array(62,-12,762,575),3757=>array(56,-14,558,560),3758=>array(68,-8,684,605),3759=>array(99,-166,742,579),3760=>array(54,-13,589,563),3761=>array(-578,639,-43,880),3762=>array(60,0,473,560),3763=>array(-425,0,473,806),3764=>array(-594,615,-73,926),3765=>array(-594,615,0,926),3766=>array(-594,615,-73,926),3767=>array(-594,615,0,926),3768=>array(-376,-350,-161,-38),3769=>array(-418,-306,-152,-40),3771=>array(-578,639,-43,880),3772=>array(-611,-278,6,-39),3773=>array(63,-240,619,715),3776=>array(60,-14,324,560),3777=>array(60,-14,598,560),3778=>array(-22,-5,398,896),3779=>array(45,-14,490,892),3780=>array(92,-11,445,886),3782=>array(72,-232,574,557),3784=>array(-366,618,-278,792),3785=>array(-563,609,-45,891),3786=>array(-595,598,22,869),3787=>array(-462,609,-182,890),3788=>array(-611,636,6,875),3789=>array(-425,620,-220,806),3792=>array(66,-14,570,547),3793=>array(48,-75,582,576),3794=>array(48,-66,545,711),3795=>array(11,-9,692,830),3796=>array(48,-83,601,711),3797=>array(48,-83,601,711),3798=>array(43,-8,744,812),3799=>array(63,-240,607,560),3800=>array(73,-210,680,557),3801=>array(51,-4,621,571),3804=>array(62,-12,947,575),3805=>array(62,-12,973,575),4256=>array(59,-15,815,828),4257=>array(54,-0,704,828),4258=>array(54,-148,649,837),4259=>array(54,-15,781,828),4260=>array(49,0,552,837),4261=>array(39,0,714,837),4262=>array(29,-15,695,828),4263=>array(59,-15,885,837),4264=>array(29,0,390,874),4265=>array(59,0,561,828),4266=>array(29,-15,784,828),4267=>array(59,-15,824,828),4268=>array(63,0,566,828),4269=>array(49,-167,806,837),4270=>array(24,-15,717,837),4271=>array(39,0,566,828),4272=>array(54,-15,853,828),4273=>array(63,-15,567,828),4274=>array(63,-0,566,837),4275=>array(49,-182,806,837),4276=>array(49,0,817,834),4277=>array(44,0,680,828),4278=>array(64,-15,566,837),4279=>array(54,0,557,828),4280=>array(59,-15,562,828),4281=>array(63,0,566,828),4282=>array(59,-15,764,837),4283=>array(59,-15,810,828),4284=>array(63,-0,566,828),4285=>array(49,-15,574,837),4286=>array(63,-0,566,828),4287=>array(29,0,695,828),4288=>array(29,-15,785,828),4289=>array(63,0,566,828),4290=>array(54,-15,635,837),4291=>array(29,0,532,828),4292=>array(54,0,540,828),4293=>array(39,-15,699,837),4304=>array(49,-15,459,592),4305=>array(49,-14,469,837),4306=>array(44,-235,537,551),4307=>array(49,-230,759,547),4308=>array(49,-236,449,547),4309=>array(49,-236,459,547),4310=>array(20,-14,452,838),4311=>array(49,-14,752,547),4312=>array(49,0,469,547),4313=>array(44,-236,456,542),4314=>array(49,-230,1016,552),4315=>array(49,-15,459,837),4316=>array(63,-15,474,833),4317=>array(49,-0,737,547),4318=>array(49,-15,459,833),4319=>array(49,-236,458,551),4320=>array(49,0,747,833),4321=>array(63,-15,474,827),4322=>array(44,-236,610,680),4323=>array(5,-236,464,571),4324=>array(49,-236,766,547),4325=>array(49,-236,449,828),4326=>array(49,-230,737,546),4327=>array(49,-236,459,538),4328=>array(29,-15,454,837),4329=>array(63,0,474,837),4330=>array(44,-236,527,532),4331=>array(49,-14,458,828),4332=>array(64,-15,488,837),4333=>array(49,-236,471,827),4334=>array(63,-15,474,827),4335=>array(10,-235,444,572),4336=>array(49,-15,459,837),4337=>array(59,-15,469,837),4338=>array(49,-141,458,547),4339=>array(49,-236,459,546),4340=>array(49,-236,458,837),4341=>array(49,-15,515,837),4342=>array(49,-236,778,547),4343=>array(44,-236,508,547),4344=>array(49,-236,459,538),4345=>array(39,-236,532,551),4346=>array(49,-77,459,547),4347=>array(54,-10,394,484),4348=>array(49,420,270,837),5121=>array(8,1,676,730),5122=>array(8,0,676,1037),5123=>array(8,0,676,729),5124=>array(8,0,676,914),5125=>array(98,0,711,729),5126=>array(98,0,711,914),5127=>array(98,0,711,913),5129=>array(98,0,711,729),5130=>array(58,0,671,729),5131=>array(58,0,671,914),5132=>array(98,1,827,730),5133=>array(8,1,776,730),5134=>array(98,0,827,729),5135=>array(8,0,776,729),5136=>array(98,0,827,914),5137=>array(8,0,776,914),5138=>array(98,0,909,729),5139=>array(98,0,909,729),5140=>array(98,0,909,914),5141=>array(98,0,909,914),5142=>array(98,0,711,914),5143=>array(98,0,869,729),5144=>array(58,0,909,729),5145=>array(98,0,869,914),5146=>array(58,0,909,914),5147=>array(58,0,671,914),5149=>array(98,629,198,729),5150=>array(67,326,488,734),5151=>array(46,356,362,714),5152=>array(46,356,362,714),5153=>array(67,398,334,674),5154=>array(67,391,334,667),5155=>array(67,398,338,667),5156=>array(67,398,334,667),5157=>array(35,327,405,733),5158=>array(67,326,331,734),5159=>array(98,312,198,412),5160=>array(67,503,334,563),5161=>array(67,399,334,667),5162=>array(67,399,334,691),5163=>array(8,1,1028,730),5164=>array(8,0,847,729),5165=>array(98,0,892,729),5166=>array(58,0,1055,729),5167=>array(8,0,676,729),5168=>array(8,0,676,1037),5169=>array(8,0,676,729),5170=>array(8,0,676,914),5171=>array(58,0,671,729),5172=>array(58,0,671,914),5173=>array(58,0,671,913),5175=>array(58,0,671,729),5176=>array(58,0,671,729),5177=>array(58,0,671,914),5178=>array(98,0,827,729),5179=>array(8,0,776,729),5180=>array(98,0,827,729),5181=>array(8,0,776,729),5182=>array(98,0,827,914),5183=>array(8,0,776,914),5184=>array(98,0,869,729),5185=>array(58,0,909,729),5186=>array(98,0,869,914),5187=>array(58,0,909,914),5188=>array(98,0,869,729),5189=>array(58,0,909,729),5190=>array(98,0,869,914),5191=>array(58,0,909,914),5192=>array(58,0,671,913),5193=>array(67,326,453,734),5194=>array(67,326,137,734),5196=>array(87,-14,645,729),5197=>array(87,0,645,1037),5198=>array(87,0,645,743),5199=>array(87,0,645,914),5200=>array(58,0,671,729),5201=>array(58,0,671,914),5202=>array(58,0,671,913),5204=>array(58,0,671,729),5205=>array(59,0,672,729),5206=>array(59,0,672,914),5207=>array(98,-14,834,729),5208=>array(87,-14,831,729),5209=>array(98,0,834,743),5210=>array(87,0,831,743),5211=>array(98,0,834,914),5212=>array(87,0,831,914),5213=>array(98,0,869,729),5214=>array(58,0,842,729),5215=>array(98,0,869,914),5216=>array(58,0,842,914),5217=>array(98,0,889,729),5218=>array(59,0,842,729),5219=>array(98,0,889,914),5220=>array(59,0,842,914),5221=>array(117,0,889,729),5222=>array(67,326,379,734),5223=>array(87,-14,823,734),5224=>array(87,0,823,743),5225=>array(58,0,811,734),5226=>array(59,0,835,734),5227=>array(34,0,530,743),5228=>array(98,0,594,1037),5229=>array(98,0,594,743),5230=>array(98,0,594,914),5231=>array(34,-14,530,729),5232=>array(34,-14,530,914),5233=>array(34,-14,623,913),5234=>array(98,-14,594,729),5235=>array(98,-14,594,914),5236=>array(98,0,762,743),5237=>array(34,0,712,743),5238=>array(98,0,781,743),5239=>array(98,0,758,743),5240=>array(98,0,781,914),5241=>array(98,0,758,914),5242=>array(98,-14,762,729),5243=>array(34,-14,712,729),5244=>array(98,-14,762,914),5245=>array(34,-14,712,914),5246=>array(98,-14,781,729),5247=>array(98,-14,758,729),5248=>array(98,-14,781,914),5249=>array(98,-14,758,914),5250=>array(117,-14,781,729),5251=>array(67,318,379,734),5252=>array(27,318,340,734),5253=>array(34,0,696,743),5254=>array(98,0,720,743),5255=>array(34,-14,696,734),5256=>array(98,-14,720,734),5257=>array(34,0,530,743),5258=>array(98,0,594,1037),5259=>array(98,0,594,743),5260=>array(98,0,594,914),5261=>array(34,-14,530,729),5262=>array(34,-14,530,914),5263=>array(34,-14,623,913),5264=>array(98,-14,594,729),5265=>array(98,-14,594,914),5266=>array(98,0,762,743),5267=>array(34,0,712,743),5268=>array(98,0,781,743),5269=>array(98,0,758,743),5270=>array(98,0,781,914),5271=>array(98,0,758,914),5272=>array(98,-14,762,729),5273=>array(34,-14,712,729),5274=>array(98,-14,762,914),5275=>array(34,-14,712,914),5276=>array(98,-14,781,729),5277=>array(98,-14,758,729),5278=>array(98,-14,781,914),5279=>array(98,-14,758,914),5280=>array(117,-14,781,729),5281=>array(67,318,379,734),5282=>array(67,318,379,734),5283=>array(58,0,512,729),5284=>array(98,0,552,1037),5285=>array(98,0,552,729),5286=>array(98,0,552,914),5287=>array(58,0,512,729),5288=>array(58,0,512,914),5289=>array(58,0,607,913),5290=>array(98,0,552,729),5291=>array(98,0,552,914),5292=>array(98,0,651,729),5293=>array(58,0,710,729),5294=>array(98,0,741,729),5295=>array(98,0,706,729),5296=>array(98,0,741,914),5297=>array(98,0,706,914),5298=>array(98,0,651,729),5299=>array(58,0,710,729),5300=>array(98,0,651,914),5301=>array(58,0,710,914),5302=>array(98,0,741,729),5303=>array(98,0,706,729),5304=>array(98,0,741,914),5305=>array(98,0,706,914),5306=>array(117,0,741,729),5307=>array(67,326,331,734),5308=>array(67,326,453,734),5309=>array(67,326,331,734),5312=>array(58,-14,817,436),5313=>array(34,-14,793,755),5314=>array(34,-14,793,436),5315=>array(5,-14,765,636),5316=>array(58,0,817,450),5317=>array(58,0,817,636),5318=>array(58,0,817,635),5319=>array(34,0,793,450),5320=>array(34,0,793,636),5321=>array(98,-14,1035,436),5322=>array(58,-14,977,436),5323=>array(98,0,1025,450),5324=>array(34,0,793,450),5325=>array(98,0,1025,636),5326=>array(34,0,793,636),5327=>array(34,0,793,635),5328=>array(67,484,545,736),5329=>array(67,318,397,734),5330=>array(67,484,545,736),5331=>array(58,0,817,450),5332=>array(34,0,793,755),5333=>array(34,0,793,450),5334=>array(34,0,793,636),5335=>array(58,0,817,450),5336=>array(58,0,817,636),5337=>array(58,0,817,635),5338=>array(34,0,793,450),5339=>array(34,0,793,636),5340=>array(98,0,1035,450),5341=>array(58,0,977,450),5342=>array(98,0,1025,450),5343=>array(34,0,972,450),5344=>array(98,0,1025,636),5345=>array(34,0,972,636),5346=>array(98,0,1035,450),5347=>array(58,0,977,450),5348=>array(98,0,1035,636),5349=>array(58,0,977,636),5350=>array(98,0,1025,450),5351=>array(34,0,972,450),5352=>array(98,0,1025,636),5353=>array(34,0,972,636),5354=>array(67,484,545,736),5356=>array(58,0,671,729),5357=>array(34,0,505,729),5358=>array(98,0,649,1037),5359=>array(98,0,569,729),5360=>array(98,0,569,914),5361=>array(34,0,505,729),5362=>array(34,0,505,914),5363=>array(34,0,600,913),5364=>array(98,0,569,729),5365=>array(98,0,569,914),5366=>array(98,0,736,729),5367=>array(34,0,696,729),5368=>array(98,0,758,729),5369=>array(98,0,713,729),5370=>array(98,0,758,914),5371=>array(98,0,713,914),5372=>array(98,0,736,729),5373=>array(34,0,696,729),5374=>array(98,0,736,914),5375=>array(34,0,696,914),5376=>array(98,0,758,729),5377=>array(98,0,713,729),5378=>array(98,0,758,914),5379=>array(98,0,713,914),5380=>array(117,0,758,729),5381=>array(67,326,363,734),5382=>array(67,318,365,741),5383=>array(67,326,363,734),5392=>array(34,-14,678,743),5393=>array(34,-14,678,743),5394=>array(34,-14,678,914),5395=>array(34,-14,857,464),5396=>array(34,-14,857,636),5397=>array(34,-14,857,464),5398=>array(34,-14,857,636),5399=>array(98,-14,875,743),5400=>array(34,-14,814,743),5401=>array(98,-14,875,743),5402=>array(34,-14,814,743),5403=>array(98,-14,875,914),5404=>array(34,-14,814,914),5405=>array(98,-14,1106,464),5406=>array(34,-14,1042,464),5407=>array(98,-14,1106,636),5408=>array(34,-14,1042,636),5409=>array(98,-14,1106,464),5410=>array(34,-14,1042,464),5411=>array(98,-14,1106,636),5412=>array(34,-14,1042,636),5413=>array(67,476,585,737),5414=>array(58,0,529,729),5415=>array(98,0,569,1037),5416=>array(98,0,569,729),5417=>array(98,0,569,914),5418=>array(58,0,529,729),5419=>array(58,0,531,914),5420=>array(58,0,626,913),5421=>array(98,0,569,729),5422=>array(98,0,569,914),5423=>array(98,0,746,729),5424=>array(58,0,723,729),5425=>array(98,0,758,729),5426=>array(98,0,760,729),5427=>array(98,0,758,914),5428=>array(98,0,760,914),5429=>array(98,0,746,729),5430=>array(58,0,723,729),5431=>array(98,0,749,914),5432=>array(58,0,723,914),5433=>array(98,0,758,729),5434=>array(98,0,760,729),5435=>array(98,0,758,914),5436=>array(98,0,760,914),5437=>array(117,0,758,729),5438=>array(67,326,363,734),5440=>array(67,399,334,667),5441=>array(67,326,429,734),5442=>array(98,-14,857,436),5443=>array(58,-14,817,436),5444=>array(58,0,817,450),5445=>array(98,0,857,755),5446=>array(98,0,857,450),5447=>array(98,0,857,636),5448=>array(98,0,569,729),5449=>array(98,0,569,914),5450=>array(98,0,569,729),5451=>array(34,0,505,729),5452=>array(34,0,505,914),5453=>array(34,0,505,729),5454=>array(98,0,736,914),5455=>array(34,0,696,914),5456=>array(67,326,363,734),5458=>array(58,0,671,729),5459=>array(73,0,676,744),5460=>array(73,-15,676,1037),5461=>array(73,-15,676,729),5462=>array(73,-15,676,914),5463=>array(38,0,668,662),5464=>array(38,0,668,914),5465=>array(58,0,688,662),5466=>array(58,0,688,914),5467=>array(98,0,886,914),5468=>array(58,0,909,914),5469=>array(67,326,462,695),5470=>array(87,-14,645,743),5471=>array(87,-14,645,743),5472=>array(87,-14,645,743),5473=>array(87,-14,645,743),5474=>array(87,-14,645,914),5475=>array(87,-14,645,914),5476=>array(41,0,671,729),5477=>array(41,0,671,914),5478=>array(59,0,689,729),5479=>array(59,0,689,914),5480=>array(98,0,907,914),5481=>array(59,0,842,914),5482=>array(67,326,467,734),5492=>array(34,0,772,743),5493=>array(58,0,796,743),5494=>array(58,0,796,914),5495=>array(34,-14,772,729),5496=>array(34,-14,772,914),5497=>array(58,-14,796,729),5498=>array(58,-14,796,914),5499=>array(67,318,508,734),5500=>array(98,0,654,729),5501=>array(67,326,429,734),5502=>array(67,0,1013,1037),5503=>array(67,0,1013,743),5504=>array(67,0,1013,914),5505=>array(67,-14,949,734),5506=>array(67,-14,949,914),5507=>array(67,-14,1013,734),5508=>array(67,-14,1013,914),5509=>array(67,318,798,734),5514=>array(34,0,772,743),5515=>array(58,0,796,743),5516=>array(34,-14,772,729),5517=>array(58,-14,796,729),5518=>array(67,0,1225,1037),5519=>array(67,0,1225,743),5520=>array(67,0,1225,914),5521=>array(67,-14,904,736),5522=>array(67,-14,904,914),5523=>array(67,-14,1225,736),5524=>array(67,-14,1225,914),5525=>array(67,332,645,736),5526=>array(67,332,1018,736),5536=>array(34,0,793,692),5537=>array(34,0,793,692),5538=>array(58,-242,817,450),5539=>array(58,-242,817,636),5540=>array(34,-242,793,450),5541=>array(34,-242,793,636),5542=>array(67,338,545,736),5543=>array(58,0,627,729),5544=>array(16,0,585,729),5545=>array(16,0,585,914),5546=>array(58,0,627,729),5547=>array(58,0,627,914),5548=>array(16,0,585,729),5549=>array(16,0,585,914),5550=>array(5,326,363,734),5551=>array(98,-14,594,729),5598=>array(98,0,711,729),5601=>array(56,0,669,729),5702=>array(67,326,413,734),5703=>array(67,240,413,820),5742=>array(57,0,391,306),5743=>array(67,0,949,743),5744=>array(67,0,1211,743),5745=>array(67,0,1598,743),5746=>array(67,0,1598,914),5747=>array(67,-14,1277,736),5748=>array(67,-14,1277,914),5749=>array(67,-14,1598,736),5750=>array(67,-14,1598,914),5760=>array(-10,246,487,328),5761=>array(-10,-125,502,328),5762=>array(-10,-125,722,328),5763=>array(-10,-125,941,328),5764=>array(-10,-125,1160,328),5765=>array(-10,-125,1379,328),5766=>array(-10,246,502,697),5767=>array(-10,246,722,697),5768=>array(-10,246,941,697),5769=>array(-10,246,1160,697),5770=>array(-10,246,1379,697),5771=>array(-10,-125,508,697),5772=>array(-10,-125,728,697),5773=>array(-10,-125,948,697),5774=>array(-10,-125,1168,697),5775=>array(-10,-125,1389,697),5776=>array(-10,41,502,533),5777=>array(-10,41,722,533),5778=>array(-10,41,939,533),5779=>array(-10,41,1159,533),5780=>array(-10,41,1379,533),5781=>array(-10,-125,508,697),5782=>array(-10,-125,762,697),5783=>array(-10,-83,798,328),5784=>array(-10,-240,1214,328),5785=>array(-10,246,1160,902),5786=>array(-10,82,693,328),5787=>array(55,28,517,544),5788=>array(-10,28,452,544),7424=>array(30,0,562,547),7425=>array(5,0,669,547),7426=>array(60,-14,929,560),7427=>array(30,0,530,547),7428=>array(55,-14,488,560),7429=>array(91,0,550,547),7430=>array(18,0,550,547),7431=>array(91,0,443,547),7432=>array(63,-14,471,561),7433=>array(94,-213,184,547),7434=>array(0,-14,310,547),7435=>array(91,0,576,547),7436=>array(1,0,498,560),7437=>array(91,0,664,547),7438=>array(91,0,559,547),7439=>array(55,-14,557,560),7440=>array(62,-14,495,560),7441=>array(55,22,629,524),7442=>array(55,57,629,489),7443=>array(25,2,663,543),7444=>array(55,-14,970,560),7446=>array(55,273,557,560),7447=>array(55,-14,557,273),7448=>array(74,0,475,547),7449=>array(24,0,507,547),7450=>array(24,0,507,547),7451=>array(29,0,553,547),7452=>array(91,-16,510,547),7453=>array(85,37,646,495),7454=>array(85,38,857,496),7455=>array(23,-238,583,560),7456=>array(30,0,562,547),7457=>array(42,0,776,547),7458=>array(43,0,482,547),7459=>array(59,-14,466,547),7462=>array(87,0,498,560),7463=>array(30,0,562,547),7464=>array(74,0,490,547),7465=>array(74,0,475,547),7466=>array(44,0,546,547),7467=>array(37,0,556,547),7468=>array(5,326,426,734),7469=>array(2,326,573,734),7470=>array(62,326,388,734),7472=>array(62,326,448,734),7473=>array(62,326,358,734),7474=>array(41,326,336,734),7475=>array(35,318,437,742),7476=>array(62,326,412,734),7477=>array(62,326,124,734),7478=>array(-33,214,124,734),7479=>array(62,326,426,734),7480=>array(62,326,348,734),7481=>array(62,326,482,734),7482=>array(62,326,410,734),7483=>array(62,326,410,734),7484=>array(35,318,460,742),7485=>array(35,318,405,742),7486=>array(62,326,358,734),7487=>array(62,326,419,734),7488=>array(-2,326,387,734),7489=>array(55,318,406,734),7490=>array(21,326,603,734),7491=>array(38,318,329,640),7492=>array(38,318,329,640),7493=>array(35,318,343,640),7494=>array(38,318,585,640),7495=>array(57,318,365,751),7496=>array(35,318,343,751),7497=>array(35,318,354,640),7498=>array(35,318,354,640),7499=>array(41,318,298,640),7500=>array(40,318,297,640),7501=>array(35,209,343,640),7502=>array(60,207,116,632),7503=>array(57,326,363,751),7504=>array(57,326,560,640),7505=>array(57,209,346,640),7506=>array(35,318,351,640),7507=>array(35,318,307,640),7508=>array(35,479,351,640),7509=>array(35,318,351,479),7510=>array(57,209,365,640),7511=>array(17,326,232,719),7512=>array(54,318,342,632),7513=>array(54,347,407,604),7514=>array(57,319,560,633),7515=>array(19,326,354,632),7517=>array(59,209,357,755),7518=>array(10,209,354,632),7519=>array(35,318,351,742),7520=>array(35,209,379,635),7521=>array(18,209,346,633),7522=>array(60,0,116,425),7523=>array(57,0,259,313),7524=>array(54,-8,342,306),7525=>array(19,0,354,306),7526=>array(59,-117,357,429),7527=>array(10,-117,354,306),7528=>array(59,-117,367,313),7529=>array(35,-117,379,309),7530=>array(18,-117,346,307),7543=>array(91,-208,580,560),7544=>array(62,326,412,734),7547=>array(57,0,314,547),7549=>array(24,-208,643,560),7557=>array(71,-208,273,760),7579=>array(35,318,343,640),7580=>array(35,318,307,640),7581=>array(35,287,307,640),7582=>array(35,318,351,751),7583=>array(41,318,298,640),7584=>array(15,326,234,751),7585=>array(-11,209,170,632),7586=>array(35,209,343,632),7587=>array(54,209,342,632),7588=>array(36,326,198,751),7589=>array(60,326,187,632),7590=>array(36,326,198,632),7591=>array(36,326,198,632),7592=>array(-83,209,172,751),7593=>array(60,209,187,751),7594=>array(44,209,172,751),7595=>array(55,326,314,640),7596=>array(57,209,560,640),7597=>array(57,209,560,633),7598=>array(-11,209,348,640),7599=>array(57,209,417,640),7600=>array(55,326,346,640),7601=>array(35,318,351,640),7602=>array(35,210,351,751),7603=>array(34,209,297,640),7604=>array(-11,209,224,751),7605=>array(17,209,232,719),7606=>array(46,318,445,632),7607=>array(35,318,355,632),7608=>array(57,317,321,632),7609=>array(60,326,343,632),7610=>array(19,326,354,632),7611=>array(27,326,304,632),7612=>array(27,209,374,632),7613=>array(27,296,304,632),7614=>array(27,207,330,632),7615=>array(35,320,351,756),7620=>array(-456,616,-44,800),7621=>array(-456,616,-44,800),7622=>array(-456,616,-44,800),7623=>array(-456,616,-44,800),7624=>array(-468,616,-32,800),7625=>array(-468,616,-32,800),7680=>array(8,-241,676,729),7681=>array(60,-241,522,560),7682=>array(98,0,615,914),7683=>array(90,-14,580,915),7684=>array(98,-183,615,729),7685=>array(91,-183,580,760),7686=>array(98,-156,615,729),7687=>array(91,-156,580,760),7688=>array(56,-193,644,928),7689=>array(55,-193,488,800),7690=>array(98,0,711,914),7691=>array(55,-14,544,942),7692=>array(98,-183,711,729),7693=>array(55,-183,544,760),7694=>array(98,-156,711,729),7695=>array(55,-156,544,760),7696=>array(98,-192,711,729),7697=>array(55,-193,544,760),7698=>array(98,-240,711,729),7699=>array(55,-240,544,760),7700=>array(98,0,568,1044),7701=>array(55,-14,562,921),7702=>array(98,0,568,1044),7703=>array(55,-14,562,921),7704=>array(98,-213,568,729),7705=>array(55,-213,562,560),7706=>array(98,-192,568,729),7707=>array(55,-192,562,560),7708=>array(98,-193,568,928),7709=>array(55,-193,562,785),7710=>array(98,0,517,914),7711=>array(23,0,371,942),7712=>array(56,-14,693,887),7713=>array(55,-208,544,745),7714=>array(98,0,654,913),7715=>array(90,0,549,915),7716=>array(98,-183,654,729),7717=>array(91,-183,549,760),7718=>array(98,0,654,914),7719=>array(-9,0,549,913),7720=>array(8,-193,654,729),7721=>array(1,-193,549,760),7722=>array(98,-222,654,729),7723=>array(91,-222,549,760),7724=>array(0,-192,322,729),7725=>array(-22,-192,300,760),7726=>array(3,0,293,1044),7727=>array(-6,0,284,886),7728=>array(98,0,677,928),7729=>array(91,0,576,928),7730=>array(98,-183,677,729),7731=>array(91,-183,576,760),7732=>array(98,-156,677,729),7733=>array(91,-156,576,760),7734=>array(98,-183,552,729),7735=>array(98,-183,189,760),7736=>array(1,-183,552,927),7737=>array(-1,-183,291,899),7738=>array(98,-156,552,729),7739=>array(-6,-156,286,760),7740=>array(98,-240,552,729),7741=>array(-17,-240,295,760),7742=>array(98,0,765,928),7743=>array(91,0,889,800),7744=>array(98,0,765,914),7745=>array(91,0,889,760),7746=>array(98,-183,765,729),7747=>array(91,-183,889,560),7748=>array(98,0,650,914),7749=>array(91,0,549,760),7750=>array(98,-183,650,729),7751=>array(91,-183,549,560),7752=>array(98,-156,650,729),7753=>array(91,-156,549,560),7754=>array(98,-240,650,729),7755=>array(91,-240,549,560),7756=>array(56,-14,731,1044),7757=>array(55,-14,557,881),7758=>array(56,-14,731,1042),7759=>array(55,-14,557,882),7760=>array(56,-14,731,1044),7761=>array(55,-14,557,921),7762=>array(56,-14,731,1044),7763=>array(55,-14,557,921),7764=>array(98,0,569,928),7765=>array(91,-208,580,800),7766=>array(98,0,569,914),7767=>array(91,-208,580,760),7768=>array(98,0,666,913),7769=>array(91,0,411,760),7770=>array(98,-183,666,729),7771=>array(91,-183,411,560),7772=>array(98,-183,666,899),7773=>array(91,-183,411,745),7774=>array(98,-156,666,729),7775=>array(41,-156,411,560),7776=>array(66,-14,579,914),7777=>array(54,-14,472,760),7778=>array(66,-183,579,742),7779=>array(54,-183,472,560),7780=>array(66,-14,579,928),7781=>array(54,-14,485,800),7782=>array(66,-14,579,1042),7783=>array(54,-14,472,973),7784=>array(66,-183,579,914),7785=>array(54,-183,472,733),7786=>array(-3,0,614,914),7787=>array(27,0,368,942),7788=>array(-3,-183,614,729),7789=>array(27,-183,368,702),7790=>array(-3,-156,614,729),7791=>array(27,-156,390,702),7792=>array(-3,-240,614,729),7793=>array(27,-240,394,702),7794=>array(87,-183,645,729),7795=>array(85,-183,543,560),7796=>array(87,-192,645,729),7797=>array(85,-192,543,560),7798=>array(87,-213,645,729),7799=>array(85,-213,543,560),7800=>array(87,-14,645,1044),7801=>array(85,-14,543,990),7802=>array(87,-14,645,1025),7803=>array(85,-14,543,869),7804=>array(8,0,676,936),7805=>array(30,0,562,777),7806=>array(8,-183,676,729),7807=>array(30,-183,562,547),7808=>array(33,0,956,931),7809=>array(42,0,776,802),7810=>array(33,0,956,931),7811=>array(42,0,776,803),7812=>array(33,0,956,913),7813=>array(42,0,776,758),7814=>array(33,0,956,913),7815=>array(42,0,776,760),7816=>array(33,-183,956,729),7817=>array(42,-183,776,547),7818=>array(30,0,654,914),7819=>array(29,0,559,760),7820=>array(30,0,654,913),7821=>array(29,0,559,758),7822=>array(-2,0,613,914),7823=>array(30,-208,562,760),7824=>array(45,0,640,928),7825=>array(43,0,482,800),7826=>array(45,-183,640,729),7827=>array(43,-183,482,547),7828=>array(45,-156,640,729),7829=>array(43,-156,482,547),7830=>array(91,-156,549,760),7831=>array(2,0,368,913),7832=>array(42,0,776,878),7833=>array(30,-208,562,878),7834=>array(60,-14,672,760),7835=>array(23,0,371,942),7836=>array(1,0,371,760),7837=>array(23,0,371,760),7838=>array(87,-14,713,743),7839=>array(55,-14,557,742),7840=>array(8,-183,676,729),7841=>array(60,-183,522,560),7842=>array(8,0,676,992),7843=>array(60,-14,522,810),7844=>array(8,0,676,1028),7845=>array(60,-14,585,846),7846=>array(8,0,676,1028),7847=>array(60,-14,522,847),7848=>array(8,0,676,1044),7849=>array(60,-14,577,862),7850=>array(8,0,676,1057),7851=>array(60,-14,522,875),7852=>array(8,-183,676,928),7853=>array(60,-183,522,800),7854=>array(8,0,676,1044),7855=>array(60,-14,522,877),7856=>array(8,0,676,1044),7857=>array(60,-14,522,877),7858=>array(8,0,676,1068),7859=>array(60,-14,522,901),7860=>array(8,0,676,1043),7861=>array(60,-14,522,876),7862=>array(8,-183,676,946),7863=>array(60,-183,522,765),7864=>array(98,-183,568,729),7865=>array(55,-183,562,560),7866=>array(98,0,568,992),7867=>array(55,-14,562,810),7868=>array(98,0,568,921),7869=>array(55,-14,562,777),7870=>array(98,0,637,1028),7871=>array(55,-14,613,846),7872=>array(98,0,568,1028),7873=>array(55,-14,562,847),7874=>array(98,0,620,1044),7875=>array(55,-14,605,862),7876=>array(98,0,568,1057),7877=>array(55,-14,562,875),7878=>array(98,-183,568,928),7879=>array(55,-183,562,800),7880=>array(44,0,263,992),7881=>array(33,0,252,811),7882=>array(98,-183,197,729),7883=>array(93,-183,184,760),7884=>array(56,-183,731,742),7885=>array(55,-183,557,560),7886=>array(56,-14,731,992),7887=>array(55,-14,557,810),7888=>array(56,-14,731,1028),7889=>array(55,-14,601,846),7890=>array(56,-14,731,1028),7891=>array(55,-14,557,847),7892=>array(56,-14,731,1044),7893=>array(55,-14,592,862),7894=>array(56,-14,731,1057),7895=>array(55,-14,557,875),7896=>array(56,-183,731,928),7897=>array(55,-183,557,800),7898=>array(50,-14,764,927),7899=>array(58,-14,603,800),7900=>array(50,-14,764,927),7901=>array(58,-14,603,800),7902=>array(50,-14,764,992),7903=>array(58,-14,603,810),7904=>array(50,-14,764,921),7905=>array(58,-14,603,777),7906=>array(50,-183,764,760),7907=>array(58,-183,603,615),7908=>array(87,-183,645,729),7909=>array(85,-183,543,560),7910=>array(87,-14,645,992),7911=>array(85,-14,543,810),7912=>array(84,-4,796,927),7913=>array(86,-14,676,800),7914=>array(84,-4,796,927),7915=>array(86,-14,676,800),7916=>array(84,-4,796,992),7917=>array(86,-14,676,810),7918=>array(84,-4,796,921),7919=>array(86,-14,676,777),7920=>array(84,-183,796,760),7921=>array(86,-183,676,615),7922=>array(-2,0,613,931),7923=>array(30,-208,562,802),7924=>array(-2,-183,613,729),7925=>array(30,-208,562,547),7926=>array(-2,0,613,996),7927=>array(30,-208,562,813),7928=>array(-2,0,613,921),7929=>array(30,-208,562,777),7930=>array(98,0,764,729),7931=>array(16,0,462,760),7936=>array(55,-12,611,797),7937=>array(55,-12,611,797),7938=>array(55,-12,611,800),7939=>array(55,-12,611,800),7940=>array(55,-12,611,800),7941=>array(55,-12,611,800),7942=>array(55,-12,611,928),7943=>array(55,-12,611,928),7944=>array(8,0,676,797),7945=>array(8,0,676,797),7946=>array(2,0,869,800),7947=>array(3,0,869,800),7948=>array(3,0,761,800),7949=>array(2,0,793,800),7950=>array(3,0,700,928),7951=>array(2,0,734,928),7952=>array(65,-14,473,797),7953=>array(65,-14,473,797),7954=>array(65,-14,473,800),7955=>array(65,-14,473,800),7956=>array(65,-14,486,800),7957=>array(65,-14,501,800),7960=>array(3,0,647,797),7961=>array(3,0,647,797),7962=>array(2,0,902,800),7963=>array(3,0,911,800),7964=>array(3,0,834,800),7965=>array(2,0,864,800),7968=>array(91,-208,549,797),7969=>array(91,-208,549,797),7970=>array(91,-208,549,800),7971=>array(91,-208,549,800),7972=>array(91,-208,549,800),7973=>array(91,-208,549,800),7974=>array(91,-208,549,928),7975=>array(91,-208,549,928),7976=>array(3,0,739,797),7977=>array(3,0,737,797),7978=>array(2,0,988,800),7979=>array(3,0,991,800),7980=>array(3,0,929,800),7981=>array(2,0,953,800),7982=>array(3,0,835,928),7983=>array(2,0,849,928),7984=>array(76,0,304,797),7985=>array(71,0,304,797),7986=>array(-39,0,340,800),7987=>array(-34,0,347,800),7988=>array(2,0,362,800),7989=>array(-22,0,366,800),7990=>array(-26,0,304,928),7991=>array(-28,0,304,928),7992=>array(3,0,282,797),7993=>array(3,0,276,797),7994=>array(2,0,537,800),7995=>array(3,0,537,800),7996=>array(3,0,472,800),7997=>array(2,0,501,800),7998=>array(3,0,392,928),7999=>array(2,0,395,928),8000=>array(55,-14,557,797),8001=>array(55,-14,557,797),8002=>array(55,-14,557,800),8003=>array(55,-14,557,800),8004=>array(55,-14,557,800),8005=>array(55,-14,557,800),8008=>array(3,-14,748,797),8009=>array(3,-14,792,797),8010=>array(2,-14,1039,800),8011=>array(3,-14,1043,800),8012=>array(3,-14,882,800),8013=>array(2,-14,914,800),8016=>array(73,-14,521,797),8017=>array(73,-14,521,797),8018=>array(73,-14,521,800),8019=>array(73,-14,521,800),8020=>array(73,-14,521,800),8021=>array(73,-14,521,800),8022=>array(73,-14,521,928),8023=>array(73,-14,521,928),8025=>array(3,0,786,797),8027=>array(3,0,1000,800),8029=>array(2,0,1014,800),8031=>array(2,0,900,928),8032=>array(66,-14,769,797),8033=>array(66,-14,769,797),8034=>array(66,-14,769,800),8035=>array(66,-14,769,800),8036=>array(66,-14,769,800),8037=>array(66,-14,769,800),8038=>array(66,-14,769,928),8039=>array(66,-14,769,928),8040=>array(3,0,764,797),8041=>array(3,0,805,797),8042=>array(2,0,1051,800),8043=>array(3,0,1057,800),8044=>array(3,0,908,800),8045=>array(2,0,934,800),8046=>array(3,0,883,928),8047=>array(2,0,914,928),8048=>array(55,-12,611,800),8049=>array(55,-12,611,800),8050=>array(65,-14,473,800),8051=>array(65,-14,473,800),8052=>array(91,-208,549,800),8053=>array(91,-208,549,800),8054=>array(-56,0,304,800),8055=>array(81,0,324,800),8056=>array(55,-14,557,800),8057=>array(55,-14,557,800),8058=>array(73,-14,521,800),8059=>array(73,-14,521,800),8060=>array(66,-14,769,800),8061=>array(66,-14,769,800),8064=>array(55,-208,611,797),8065=>array(55,-208,611,797),8066=>array(55,-208,611,800),8067=>array(55,-208,611,800),8068=>array(55,-208,611,800),8069=>array(55,-208,611,800),8070=>array(55,-208,611,928),8071=>array(55,-208,611,928),8072=>array(8,-208,676,797),8073=>array(8,-208,676,797),8074=>array(2,-208,869,800),8075=>array(3,-208,869,800),8076=>array(3,-208,761,800),8077=>array(2,-208,793,800),8078=>array(3,-208,700,928),8079=>array(2,-208,734,928),8080=>array(91,-208,549,797),8081=>array(91,-208,549,797),8082=>array(91,-208,549,800),8083=>array(91,-208,549,800),8084=>array(91,-208,549,800),8085=>array(91,-208,549,800),8086=>array(91,-208,549,928),8087=>array(91,-208,549,928),8088=>array(3,-208,739,797),8089=>array(3,-208,737,797),8090=>array(2,-208,988,800),8091=>array(3,-208,991,800),8092=>array(3,-208,929,800),8093=>array(2,-208,953,800),8094=>array(3,-208,835,928),8095=>array(2,-208,849,928),8096=>array(66,-208,769,797),8097=>array(66,-208,769,797),8098=>array(66,-208,769,800),8099=>array(66,-208,769,800),8100=>array(66,-208,769,800),8101=>array(66,-208,769,800),8102=>array(66,-208,769,928),8103=>array(66,-208,769,928),8104=>array(3,-208,764,797),8105=>array(3,-208,805,797),8106=>array(2,-208,1051,800),8107=>array(3,-208,1057,800),8108=>array(3,-208,908,800),8109=>array(2,-208,934,800),8110=>array(3,-208,883,928),8111=>array(2,-208,914,928),8112=>array(55,-12,611,785),8113=>array(55,-12,611,745),8114=>array(55,-208,611,800),8115=>array(55,-208,611,559),8116=>array(55,-208,611,800),8118=>array(55,-12,611,777),8119=>array(55,-208,611,777),8120=>array(8,0,676,928),8121=>array(8,0,676,899),8122=>array(-2,0,708,800),8123=>array(8,0,676,800),8124=>array(8,-208,676,729),8125=>array(190,595,309,797),8126=>array(214,-208,321,-45),8127=>array(190,595,309,797),8128=>array(89,639,411,777),8129=>array(89,659,411,928),8130=>array(91,-208,549,800),8131=>array(91,-208,549,560),8132=>array(91,-208,549,800),8134=>array(91,-208,549,777),8135=>array(91,-208,549,777),8136=>array(-2,0,741,800),8137=>array(-12,0,682,800),8138=>array(-2,0,833,800),8139=>array(-6,0,765,800),8140=>array(98,-208,654,729),8141=>array(67,595,446,800),8142=>array(88,595,447,800),8143=>array(89,595,411,928),8144=>array(-10,0,304,785),8145=>array(-14,0,304,745),8146=>array(-20,0,304,978),8147=>array(2,0,313,978),8150=>array(-14,0,309,777),8151=>array(-13,0,310,928),8152=>array(-5,0,300,928),8153=>array(1,0,293,899),8154=>array(-2,0,377,800),8155=>array(-9,0,311,800),8157=>array(62,595,443,800),8158=>array(73,595,461,800),8159=>array(89,595,411,928),8160=>array(73,-14,521,785),8161=>array(73,-14,521,745),8162=>array(73,-14,521,978),8163=>array(73,-14,521,978),8164=>array(91,-208,580,797),8165=>array(91,-208,580,797),8166=>array(73,-14,521,777),8167=>array(73,-14,521,928),8168=>array(-2,0,613,928),8169=>array(-2,0,613,899),8170=>array(-2,0,847,800),8171=>array(-15,0,821,800),8172=>array(3,0,651,797),8173=>array(83,659,395,978),8174=>array(105,659,415,978),8175=>array(83,617,317,800),8178=>array(66,-208,769,800),8179=>array(66,-208,769,547),8180=>array(66,-208,769,800),8182=>array(66,-14,769,777),8183=>array(66,-208,769,777),8184=>array(-2,-14,885,800),8185=>array(-7,-14,750,800),8186=>array(-2,0,884,800),8187=>array(-18,0,752,800),8188=>array(38,-208,726,738),8189=>array(181,616,415,800),8190=>array(190,595,309,797),8192=>array(49,234,312,314),8193=>array(49,234,312,314),8194=>array(49,234,312,314),8195=>array(49,234,312,314),8196=>array(49,234,312,314),8197=>array(49,234,312,314),8198=>array(49,234,312,314),8199=>array(49,234,312,314),8200=>array(49,234,312,314),8201=>array(49,234,312,314),8202=>array(49,234,312,314),8203=>array(49,234,312,314),8204=>array(49,234,312,314),8205=>array(49,234,312,314),8206=>array(49,234,312,314),8207=>array(49,234,312,314),8208=>array(49,234,312,314),8209=>array(49,234,312,314),8210=>array(49,239,587,309),8211=>array(49,239,451,309),8212=>array(49,239,951,309),8213=>array(0,239,1000,309),8214=>array(127,-236,371,764),8215=>array(-10,-236,510,-9),8216=>array(85,489,228,729),8217=>array(87,499,230,729),8218=>array(85,-116,228,124),8219=>array(87,499,230,729),8220=>array(85,489,428,729),8221=>array(85,489,428,729),8222=>array(85,-116,428,124),8223=>array(85,489,428,729),8224=>array(28,-96,472,729),8225=>array(28,-96,472,729),8226=>array(150,227,440,516),8227=>array(150,188,479,555),8228=>array(115,0,219,124),8229=>array(115,0,552,124),8230=>array(115,0,885,124),8231=>array(107,302,210,426),8232=>array(55,-14,1287,742),8233=>array(55,-14,1287,742),8234=>array(55,-14,1287,742),8235=>array(55,-14,1287,742),8236=>array(55,-14,1287,742),8237=>array(55,-14,1287,742),8238=>array(55,-14,1287,742),8239=>array(55,-14,1287,742),8240=>array(55,-14,1287,742),8241=>array(55,-14,1681,742),8242=>array(20,547,203,729),8243=>array(20,547,350,729),8244=>array(20,547,496,729),8245=>array(20,547,203,729),8246=>array(20,547,350,729),8247=>array(20,547,496,729),8248=>array(5,-236,333,-30),8249=>array(77,69,306,517),8250=>array(94,69,323,517),8251=>array(95,2,740,725),8252=>array(72,0,414,729),8253=>array(72,0,461,742),8254=>array(-10,686,510,755),8255=>array(-43,-237,847,-60),8256=>array(-43,752,847,929),8257=>array(-42,-236,286,229),8258=>array(30,-29,970,814),8259=>array(108,313,400,421),8260=>array(-183,-14,350,742),8261=>array(86,-132,293,760),8262=>array(86,-132,293,760),8263=>array(36,0,886,742),8264=>array(72,0,661,742),8265=>array(72,0,661,742),8266=>array(49,-123,448,545),8267=>array(115,-96,566,729),8268=>array(105,220,395,509),8269=>array(105,220,395,509),8270=>array(30,-29,470,427),8271=>array(139,-116,282,517),8272=>array(-43,-237,847,929),8273=>array(30,-7,470,929),8274=>array(71,-93,408,729),8275=>array(49,228,951,399),8276=>array(-43,-240,847,-63),8277=>array(152,98,686,631),8278=>array(122,149,464,589),8279=>array(20,547,643,729),8280=>array(175,125,663,613),8281=>array(175,120,663,608),8282=>array(107,0,210,729),8283=>array(49,-138,749,867),8284=>array(55,0,783,729),8285=>array(107,39,210,655),8286=>array(107,8,210,683),8287=>array(42,319,366,742),8288=>array(42,319,366,742),8289=>array(42,319,366,742),8290=>array(42,319,366,742),8291=>array(42,319,366,742),8292=>array(42,319,366,742),8298=>array(42,319,366,742),8299=>array(42,319,366,742),8300=>array(42,319,366,742),8301=>array(42,319,366,742),8302=>array(42,319,366,742),8303=>array(42,319,366,742),8304=>array(42,319,366,742),8305=>array(60,326,116,751),8308=>array(31,326,369,734),8309=>array(50,319,353,734),8310=>array(45,319,369,742),8311=>array(53,326,354,734),8312=>array(43,319,365,742),8313=>array(41,319,364,742),8314=>array(67,326,461,677),8315=>array(67,479,461,525),8316=>array(67,422,461,581),8317=>array(54,252,195,751),8318=>array(50,252,191,751),8319=>array(57,326,346,640),8320=>array(42,-7,366,416),8321=>array(67,0,346,408),8322=>array(46,0,338,416),8323=>array(48,-7,350,416),8324=>array(31,0,369,408),8325=>array(50,-7,353,408),8326=>array(45,-7,369,416),8327=>array(53,0,354,408),8328=>array(43,-7,365,416),8329=>array(41,-7,364,416),8330=>array(67,0,461,351),8331=>array(67,152,461,199),8332=>array(67,96,461,254),8333=>array(54,-74,195,425),8334=>array(50,-74,191,425),8336=>array(38,-8,329,313),8337=>array(35,-8,354,313),8338=>array(35,-8,351,313),8339=>array(57,0,391,306),8340=>array(35,-8,354,313),8341=>array(57,0,346,425),8342=>array(57,0,363,425),8343=>array(60,0,116,425),8344=>array(57,0,560,313),8345=>array(57,0,346,313),8346=>array(57,-117,365,313),8347=>array(57,0,320,322),8348=>array(17,0,232,393),8352=>array(42,0,835,729),8353=>array(56,-44,593,778),8354=>array(47,-14,587,742),8355=>array(65,0,599,729),8356=>array(63,0,548,742),8357=>array(91,-93,889,640),8358=>array(57,0,691,729),8359=>array(98,-14,1226,729),8360=>array(98,-14,1025,729),8361=>array(29,0,960,729),8362=>array(46,-14,743,729),8363=>array(55,-156,619,760),8364=>array(0,-14,570,742),8365=>array(20,0,636,729),8366=>array(10,0,626,729),8367=>array(102,-222,1205,742),8368=>array(22,-14,569,742),8369=>array(33,0,579,729),8370=>array(45,-81,586,809),8371=>array(8,0,627,729),8372=>array(57,-14,717,742),8373=>array(81,-147,556,760),8376=>array(10,0,626,729),8377=>array(52,0,585,729),8378=>array(5,2,649,731),8400=>array(-491,635,-26,760),8401=>array(-470,635,-5,760),8406=>array(-470,560,-26,760),8407=>array(-470,560,-26,760),8411=>array(-491,560,-10,758),8412=>array(-586,560,86,758),8417=>array(-470,560,-26,760),8448=>array(33,-24,980,752),8449=>array(33,-24,999,752),8450=>array(56,-14,644,742),8451=>array(95,-14,1053,742),8452=>array(-21,0,637,729),8453=>array(29,-24,987,752),8454=>array(29,-24,1038,752),8455=>array(80,-14,560,742),8456=>array(54,-146,642,611),8457=>array(95,0,894,742),8459=>array(36,-14,943,748),8460=>array(1,-128,693,731),8461=>array(98,0,751,729),8462=>array(35,0,566,760),8463=>array(44,0,566,760),8464=>array(29,-15,432,742),8465=>array(52,-14,659,742),8466=>array(33,-14,679,743),8467=>array(-14,-14,353,742),8468=>array(16,-14,763,760),8469=>array(97,0,704,729),8470=>array(26,0,969,729),8471=>array(138,0,862,724),8472=>array(54,-221,658,495),8473=>array(98,0,666,729),8474=>array(56,-129,731,742),8475=>array(32,-9,764,774),8476=>array(41,-14,803,743),8477=>array(98,0,774,729),8478=>array(83,0,814,729),8479=>array(98,-107,666,847),8480=>array(126,443,770,730),8481=>array(-2,0,1023,547),8482=>array(144,447,784,729),8483=>array(8,-108,676,846),8484=>array(45,0,700,729),8485=>array(43,-213,523,760),8486=>array(38,0,726,738),8487=>array(38,-14,726,724),8488=>array(12,-149,573,783),8489=>array(33,0,255,547),8490=>array(98,0,677,729),8491=>array(8,0,676,928),8492=>array(45,0,734,772),8493=>array(63,-12,652,742),8494=>array(61,-12,793,647),8495=>array(42,-14,547,533),8496=>array(79,-14,565,742),8497=>array(41,-16,758,755),8498=>array(98,0,517,729),8499=>array(28,-28,1032,751),8500=>array(51,-12,411,395),8501=>array(50,-14,712,742),8502=>array(-2,-14,653,743),8503=>array(13,-35,407,742),8504=>array(42,-35,591,742),8505=>array(34,0,355,760),8506=>array(44,-21,915,654),8507=>array(74,0,1162,547),8508=>array(18,-8,685,547),8509=>array(0,-194,669,560),8510=>array(98,0,648,729),8511=>array(98,0,750,729),8512=>array(12,-192,791,719),8513=>array(80,-14,716,742),8514=>array(4,0,458,729),8515=>array(3,0,457,729),8516=>array(-2,0,613,729),8517=>array(42,0,786,729),8518=>array(44,-14,709,760),8519=>array(44,-14,572,560),8520=>array(39,0,313,760),8521=>array(-114,-208,313,760),8523=>array(29,-14,715,742),8526=>array(40,0,441,547),8528=>array(67,-14,922,742),8529=>array(67,-14,932,742),8530=>array(67,-14,1335,742),8531=>array(67,-14,918,742),8532=>array(46,-14,918,742),8533=>array(67,-14,921,742),8534=>array(46,-14,921,742),8535=>array(48,-14,921,742),8536=>array(31,-14,921,742),8537=>array(67,-14,937,742),8538=>array(50,-14,937,742),8539=>array(67,-14,933,742),8540=>array(48,-14,933,742),8541=>array(50,-14,933,742),8542=>array(53,-14,933,742),8543=>array(67,-14,751,742),8544=>array(98,0,197,729),8545=>array(98,0,394,729),8546=>array(98,0,591,729),8547=>array(98,0,915,729),8548=>array(8,0,676,729),8549=>array(8,0,824,729),8550=>array(8,0,1021,729),8551=>array(8,0,1219,729),8552=>array(98,0,886,729),8553=>array(30,0,654,729),8554=>array(30,0,835,729),8555=>array(30,0,1032,729),8556=>array(98,0,552,729),8557=>array(56,-14,644,742),8558=>array(98,0,711,729),8559=>array(98,0,765,729),8560=>array(94,0,184,760),8561=>array(94,0,364,760),8562=>array(94,0,543,760),8563=>array(94,0,782,760),8564=>array(30,0,562,547),8565=>array(30,0,717,760),8566=>array(30,0,897,760),8567=>array(30,0,1077,760),8568=>array(94,0,786,760),8569=>array(29,0,559,547),8570=>array(29,0,729,760),8571=>array(29,0,908,760),8572=>array(94,0,184,760),8573=>array(55,-14,488,560),8574=>array(55,-14,544,760),8575=>array(91,0,889,560),8576=>array(59,0,1186,729),8577=>array(98,0,711,729),8578=>array(59,0,1186,729),8579=>array(56,-14,644,742),8580=>array(62,-14,495,560),8581=>array(56,-208,644,742),8585=>array(42,-14,918,742),8592=>array(49,100,781,527),8593=>array(205,0,632,732),8594=>array(57,100,789,527),8595=>array(205,-3,632,729),8596=>array(49,100,789,527),8597=>array(205,-8,632,732),8598=>array(141,25,703,587),8599=>array(141,25,703,587),8600=>array(141,25,703,587),8601=>array(141,25,703,587),8602=>array(49,100,781,527),8603=>array(57,100,789,527),8604=>array(21,103,827,414),8605=>array(11,103,816,414),8606=>array(49,100,781,527),8607=>array(206,0,633,732),8608=>array(57,100,789,527),8609=>array(206,-3,633,729),8610=>array(49,100,781,527),8611=>array(57,100,789,527),8612=>array(49,100,781,527),8613=>array(206,0,632,732),8614=>array(57,100,789,527),8615=>array(206,-3,632,729),8616=>array(206,0,632,732),8617=>array(49,100,780,565),8618=>array(58,100,789,565),8619=>array(49,100,780,565),8620=>array(58,100,789,565),8621=>array(49,100,789,527),8622=>array(49,93,789,534),8623=>array(146,-2,702,730),8624=>array(169,0,629,743),8625=>array(209,0,669,743),8626=>array(169,-14,629,729),8627=>array(209,-14,669,729),8628=>array(233,-3,760,604),8629=>array(49,100,656,626),8630=>array(22,203,799,668),8631=>array(39,203,816,668),8632=>array(108,25,788,729),8633=>array(55,-46,783,673),8634=>array(103,62,762,680),8635=>array(77,62,736,680),8636=>array(49,272,781,527),8637=>array(49,100,781,355),8638=>array(377,0,632,732),8639=>array(205,0,460,732),8640=>array(57,272,789,527),8641=>array(57,100,789,355),8642=>array(377,0,632,732),8643=>array(205,0,460,732),8644=>array(49,-47,789,674),8645=>array(58,-3,779,732),8646=>array(49,-47,789,674),8647=>array(49,-47,781,674),8648=>array(59,0,779,732),8649=>array(58,-47,790,674),8650=>array(59,-3,779,729),8651=>array(49,7,789,620),8652=>array(49,7,789,620),8653=>array(49,100,781,527),8654=>array(49,94,789,533),8655=>array(57,100,789,527),8656=>array(49,100,781,527),8657=>array(206,0,633,732),8658=>array(57,100,789,527),8659=>array(206,-3,633,729),8660=>array(49,100,789,527),8661=>array(205,-8,633,732),8662=>array(141,-23,751,587),8663=>array(92,-23,703,587),8664=>array(92,25,703,636),8665=>array(141,25,751,636),8666=>array(49,100,781,527),8667=>array(57,100,789,527),8668=>array(49,100,781,527),8669=>array(57,100,789,527),8670=>array(205,0,632,732),8671=>array(205,-3,632,729),8672=>array(49,100,781,527),8673=>array(205,0,633,732),8674=>array(57,100,789,527),8675=>array(205,-3,633,729),8676=>array(52,99,781,528),8677=>array(57,99,786,528),8678=>array(27,65,781,562),8679=>array(171,0,667,754),8680=>array(35,65,789,562),8681=>array(171,-25,667,729),8682=>array(171,0,667,754),8683=>array(171,0,667,754),8684=>array(156,0,682,754),8685=>array(171,0,667,754),8686=>array(171,0,667,754),8687=>array(171,0,667,754),8688=>array(57,65,811,562),8689=>array(60,0,788,729),8690=>array(60,0,788,729),8691=>array(171,-25,667,754),8692=>array(57,100,789,527),8693=>array(58,-3,779,732),8694=>array(57,-193,789,820),8695=>array(49,94,781,533),8696=>array(57,94,789,533),8697=>array(49,94,789,533),8698=>array(49,94,781,533),8699=>array(57,94,789,533),8700=>array(49,94,789,533),8701=>array(27,96,781,531),8702=>array(57,96,811,531),8703=>array(27,96,811,531),8704=>array(8,0,676,729),8705=>array(66,-14,554,742),8706=>array(46,-14,471,662),8707=>array(98,0,568,729),8708=>array(98,-46,568,776),8709=>array(76,-10,795,710),8710=>array(-3,0,672,719),8711=>array(-3,0,672,719),8712=>array(85,-10,786,710),8713=>array(85,-138,786,835),8714=>array(106,76,612,550),8715=>array(85,-10,786,710),8716=>array(85,-138,786,835),8717=>array(106,76,612,550),8718=>array(146,0,490,485),8719=>array(76,-192,680,719),8720=>array(76,-192,680,719),8721=>array(12,-192,654,719),8722=>array(106,272,732,355),8723=>array(106,0,732,627),8724=>array(106,0,732,729),8725=>array(0,-93,337,729),8726=>array(192,-54,529,768),8727=>array(127,0,710,627),8728=>array(158,160,468,470),8729=>array(168,168,458,458),8730=>array(30,-20,637,811),8731=>array(30,-20,637,933),8732=>array(30,-20,637,924),8733=>array(107,112,607,487),8734=>array(107,112,726,487),8735=>array(138,99,700,661),8736=>array(85,0,786,729),8737=>array(85,-53,786,729),8738=>array(116,-3,732,727),8739=>array(211,-214,289,771),8740=>array(50,-214,451,771),8741=>array(133,-214,367,771),8742=>array(50,-214,451,771),8743=>array(129,0,603,579),8744=>array(129,0,603,579),8745=>array(129,0,603,579),8746=>array(129,0,603,579),8747=>array(57,-212,464,757),8748=>array(57,-212,732,757),8749=>array(57,-212,1000,757),8750=>array(57,-212,464,757),8751=>array(57,-212,732,757),8752=>array(57,-212,1000,757),8753=>array(57,-213,522,757),8754=>array(57,-212,514,757),8755=>array(57,-212,515,757),8756=>array(59,100,577,604),8757=>array(59,100,577,604),8758=>array(79,100,182,604),8759=>array(59,100,577,604),8760=>array(106,272,732,552),8761=>array(106,78,732,552),8762=>array(105,78,732,552),8763=>array(106,78,732,552),8764=>array(106,228,732,399),8765=>array(106,228,732,399),8766=>array(79,149,759,479),8767=>array(106,42,732,584),8768=>array(102,0,273,626),8769=>array(106,77,732,553),8770=>array(106,133,732,454),8771=>array(106,172,732,494),8772=>array(106,48,732,603),8773=>array(106,90,732,594),8774=>array(106,12,732,594),8775=>array(106,-5,732,657),8776=>array(106,133,732,494),8777=>array(106,2,732,625),8778=>array(106,90,732,598),8779=>array(106,59,732,602),8780=>array(106,90,732,594),8781=>array(105,105,732,521),8782=>array(106,26,732,601),8783=>array(106,172,732,601),8784=>array(106,172,732,625),8785=>array(106,1,732,625),8786=>array(106,2,733,625),8787=>array(106,2,733,625),8788=>array(101,151,899,476),8789=>array(100,151,900,475),8790=>array(106,172,732,454),8791=>array(106,172,732,760),8792=>array(106,172,732,662),8793=>array(106,172,732,812),8794=>array(106,172,732,812),8795=>array(106,172,732,849),8796=>array(106,172,732,854),8797=>array(106,172,732,764),8798=>array(106,172,732,760),8799=>array(106,172,732,856),8800=>array(106,19,732,608),8801=>array(106,90,732,537),8802=>array(106,-24,732,650),8803=>array(106,0,732,629),8804=>array(106,0,732,582),8805=>array(106,0,732,582),8806=>array(106,-83,732,638),8807=>array(106,-83,732,638),8808=>array(106,-164,732,638),8809=>array(106,-164,732,638),8810=>array(72,22,975,609),8811=>array(72,22,975,609),8812=>array(86,-132,378,759),8813=>array(105,13,732,613),8814=>array(106,2,732,674),8815=>array(106,-47,732,625),8816=>array(106,-102,732,667),8817=>array(106,-102,732,667),8818=>array(106,-55,732,582),8819=>array(106,-39,732,582),8820=>array(106,-105,732,664),8821=>array(106,-102,732,667),8822=>array(102,-87,732,686),8823=>array(102,-87,732,686),8824=>array(102,-197,732,797),8825=>array(102,-197,732,797),8826=>array(106,-38,732,664),8827=>array(106,-38,732,664),8828=>array(106,-105,732,667),8829=>array(106,-105,732,667),8830=>array(106,-85,732,667),8831=>array(106,-85,732,667),8832=>array(106,-61,732,764),8833=>array(106,-138,732,687),8834=>array(100,80,738,546),8835=>array(100,80,738,546),8836=>array(100,-96,738,726),8837=>array(100,-100,738,722),8838=>array(93,0,732,613),8839=>array(106,0,745,613),8840=>array(93,-116,732,730),8841=>array(106,-116,745,730),8842=>array(93,-73,732,614),8843=>array(93,-73,732,614),8844=>array(129,0,603,579),8845=>array(129,0,603,579),8846=>array(129,2,603,582),8847=>array(106,0,732,568),8848=>array(106,0,732,568),8849=>array(106,-83,732,630),8850=>array(106,-83,732,630),8851=>array(106,0,674,626),8852=>array(106,0,674,626),8853=>array(91,-14,747,643),8854=>array(91,-14,747,643),8855=>array(91,-14,747,643),8856=>array(91,-14,747,643),8857=>array(91,-14,747,643),8858=>array(91,-14,747,643),8859=>array(91,-14,747,643),8860=>array(91,-14,747,643),8861=>array(91,-14,747,643),8862=>array(91,-14,747,643),8863=>array(91,-14,747,643),8864=>array(91,-14,747,643),8865=>array(91,-14,747,643),8866=>array(85,0,786,700),8867=>array(85,0,786,700),8868=>array(85,0,786,700),8869=>array(85,0,786,700),8870=>array(85,0,436,700),8871=>array(85,0,436,700),8872=>array(85,0,786,700),8873=>array(85,0,786,700),8874=>array(85,0,786,700),8875=>array(85,0,786,700),8876=>array(85,-40,786,740),8877=>array(85,-40,786,740),8878=>array(85,-40,786,740),8879=>array(85,-40,786,740),8880=>array(106,-43,724,670),8881=>array(106,-43,724,670),8882=>array(106,15,732,612),8883=>array(106,15,732,612),8884=>array(106,-48,732,674),8885=>array(106,-48,732,674),8886=>array(59,175,941,454),8887=>array(59,175,941,454),8888=>array(48,175,790,454),8889=>array(59,-47,779,674),8890=>array(116,0,404,701),8891=>array(98,0,634,740),8892=>array(98,0,634,740),8893=>array(98,0,634,740),8894=>array(138,0,700,562),8895=>array(138,0,700,562),8896=>array(-3,-192,823,719),8897=>array(-3,-192,823,719),8898=>array(68,-192,752,719),8899=>array(68,-192,752,719),8900=>array(3,-233,491,807),8901=>array(107,285,210,409),8902=>array(122,149,504,512),8903=>array(106,15,732,613),8904=>array(106,-30,894,657),8905=>array(106,-30,894,657),8906=>array(106,-30,894,657),8907=>array(106,-30,894,657),8908=>array(106,-30,894,657),8909=>array(106,172,732,494),8910=>array(48,0,684,579),8911=>array(48,0,684,579),8912=>array(93,-3,732,630),8913=>array(106,-3,745,630),8914=>array(103,0,735,663),8915=>array(103,-14,735,649),8916=>array(186,0,652,729),8917=>array(106,-100,732,729),8918=>array(106,46,732,581),8919=>array(106,46,732,581),8920=>array(72,22,1350,609),8921=>array(72,22,1350,609),8922=>array(106,-228,732,854),8923=>array(106,-228,732,854),8924=>array(106,0,732,582),8925=>array(106,0,732,582),8926=>array(106,-105,732,667),8927=>array(106,-105,732,667),8928=>array(106,-178,732,764),8929=>array(106,-178,732,764),8930=>array(106,-141,732,767),8931=>array(106,-141,732,767),8932=>array(106,-94,732,619),8933=>array(106,-94,732,619),8934=>array(106,-138,732,582),8935=>array(106,-138,732,582),8936=>array(106,-169,732,667),8937=>array(110,-171,736,667),8938=>array(106,-130,732,756),8939=>array(106,-130,732,756),8940=>array(106,-189,732,815),8941=>array(104,-189,730,815),8942=>array(448,-93,551,715),8943=>array(115,249,884,373),8944=>array(115,-93,884,715),8945=>array(115,-93,884,715),8946=>array(43,-10,957,710),8947=>array(85,-10,786,710),8948=>array(106,76,612,550),8949=>array(85,-10,786,910),8950=>array(85,-10,786,853),8951=>array(106,76,612,686),8952=>array(85,-144,786,710),8953=>array(85,-10,786,710),8954=>array(43,-10,957,710),8955=>array(85,-10,786,710),8956=>array(106,76,612,550),8957=>array(85,-10,786,853),8958=>array(106,76,612,686),8959=>array(106,0,765,720),8960=>array(36,-18,567,514),8961=>array(56,162,540,443),8962=>array(71,0,563,596),8963=>array(205,481,632,732),8964=>array(205,0,632,251),8965=>array(205,0,632,406),8966=>array(205,0,632,513),8967=>array(154,-29,334,788),8968=>array(86,-132,293,760),8969=>array(97,-132,304,760),8970=>array(86,-132,293,760),8971=>array(97,-132,304,760),8972=>array(369,-77,759,313),8973=>array(49,-77,439,313),8974=>array(369,243,759,634),8975=>array(49,243,439,634),8976=>array(106,140,732,421),8977=>array(3,126,510,634),8984=>array(121,0,879,759),8985=>array(106,140,732,421),8988=>array(86,425,403,760),8989=>array(65,425,383,760),8990=>array(86,-70,403,264),8991=>array(65,-70,383,264),8992=>array(210,-250,497,928),8993=>array(21,-237,307,942),8996=>array(76,227,1076,575),8997=>array(76,0,1076,575),8998=>array(76,0,1414,760),8999=>array(76,0,1076,760),9000=>array(59,0,1385,729),9003=>array(0,0,1338,760),9004=>array(73,-91,800,748),9075=>array(81,0,304,547),9076=>array(91,-208,580,560),9077=>array(66,-14,769,547),9082=>array(55,-12,611,559),9085=>array(13,-228,745,102),9095=>array(76,0,1096,748),9108=>array(17,0,856,727),9115=>array(86,-252,414,946),9116=>array(86,-252,181,942),9117=>array(86,-240,414,942),9118=>array(86,-252,414,946),9119=>array(319,-252,414,942),9120=>array(86,-240,414,942),9121=>array(86,-252,414,928),9122=>array(86,-252,181,942),9123=>array(86,-240,414,942),9124=>array(86,-252,414,928),9125=>array(319,-252,414,935),9126=>array(86,-240,414,935),9127=>array(330,-261,668,928),9128=>array(82,-252,420,940),9129=>array(330,-240,668,940),9130=>array(330,-256,420,943),9131=>array(82,-261,420,928),9132=>array(330,-252,668,940),9133=>array(82,-240,420,940),9134=>array(210,-250,307,942),9166=>array(27,65,781,729),9167=>array(91,0,854,596),9187=>array(73,-91,800,748),9189=>array(3,75,766,444),9192=>array(43,-129,601,294),9250=>array(-62,-14,580,760),9251=>array(71,-228,563,102),9312=>array(74,-10,822,738),9313=>array(74,-10,822,738),9314=>array(74,-10,822,738),9315=>array(74,-10,822,738),9316=>array(74,-10,822,738),9317=>array(74,-10,822,738),9318=>array(74,-10,822,738),9319=>array(74,-10,822,738),9320=>array(74,-10,822,738),9321=>array(74,-10,822,738),9472=>array(-10,242,612,326),9473=>array(-10,200,612,368),9474=>array(262,-302,340,973),9475=>array(223,-302,379,973),9476=>array(-10,242,612,326),9477=>array(-10,200,612,368),9478=>array(262,-302,340,973),9479=>array(223,-302,379,973),9480=>array(-10,242,612,326),9481=>array(-10,200,612,368),9482=>array(262,-302,340,973),9483=>array(223,-302,379,973),9484=>array(262,-302,612,326),9485=>array(262,-302,612,368),9486=>array(223,-302,612,326),9487=>array(223,-302,612,368),9488=>array(-10,-302,340,326),9489=>array(-10,-302,340,368),9490=>array(-10,-302,379,326),9491=>array(-10,-302,379,368),9492=>array(262,242,612,973),9493=>array(262,200,612,973),9494=>array(223,242,612,973),9495=>array(223,200,612,973),9496=>array(-10,242,340,973),9497=>array(-10,200,340,973),9498=>array(-10,242,379,973),9499=>array(-10,200,379,973),9500=>array(262,-302,612,973),9501=>array(262,-302,612,973),9502=>array(223,-302,612,973),9503=>array(223,-302,612,973),9504=>array(223,-302,612,973),9505=>array(223,-302,612,973),9506=>array(223,-302,612,973),9507=>array(223,-302,612,973),9508=>array(-10,-302,340,973),9509=>array(-10,-302,340,973),9510=>array(-10,-302,379,973),9511=>array(-10,-302,379,973),9512=>array(-10,-302,379,973),9513=>array(-10,-302,379,973),9514=>array(-10,-302,379,973),9515=>array(-10,-302,379,973),9516=>array(-10,-302,612,326),9517=>array(-10,-302,612,368),9518=>array(-10,-302,612,368),9519=>array(-10,-302,612,368),9520=>array(-10,-302,612,326),9521=>array(-10,-302,612,368),9522=>array(-10,-302,612,368),9523=>array(-10,-302,612,368),9524=>array(-10,242,612,973),9525=>array(-10,200,612,973),9526=>array(-10,200,612,973),9527=>array(-10,200,612,973),9528=>array(-10,242,612,973),9529=>array(-10,200,612,973),9530=>array(-10,200,612,973),9531=>array(-10,200,612,973),9532=>array(-10,-302,612,973),9533=>array(-10,-302,612,973),9534=>array(-10,-302,612,973),9535=>array(-10,-302,612,973),9536=>array(-10,-302,612,973),9537=>array(-10,-302,612,973),9538=>array(-10,-302,612,973),9539=>array(-10,-302,612,973),9540=>array(-10,-302,612,973),9541=>array(-10,-302,612,973),9542=>array(-10,-302,612,973),9543=>array(-10,-302,612,973),9544=>array(-10,-302,612,973),9545=>array(-10,-302,612,973),9546=>array(-10,-302,612,973),9547=>array(-10,-302,612,973),9548=>array(-10,242,612,326),9549=>array(-10,200,612,368),9550=>array(262,-302,340,973),9551=>array(223,-302,379,973),9552=>array(-10,158,612,410),9553=>array(184,-302,418,973),9554=>array(262,-302,612,410),9555=>array(184,-302,612,326),9556=>array(184,-302,612,410),9557=>array(-10,-302,340,410),9558=>array(-10,-302,418,326),9559=>array(-10,-302,418,410),9560=>array(262,158,612,973),9561=>array(184,242,612,973),9562=>array(184,158,612,973),9563=>array(-10,158,340,973),9564=>array(-10,242,418,973),9565=>array(-10,158,418,973),9566=>array(262,-302,612,973),9567=>array(184,-302,612,973),9568=>array(184,-302,612,973),9569=>array(-10,-302,340,973),9570=>array(-10,-302,418,973),9571=>array(-10,-302,418,973),9572=>array(-10,-302,612,410),9573=>array(-10,-302,612,326),9574=>array(-10,-302,612,410),9575=>array(-10,158,612,973),9576=>array(-10,242,612,973),9577=>array(-10,158,612,973),9578=>array(-10,-302,612,973),9579=>array(-10,-302,612,973),9580=>array(-10,-302,612,973),9581=>array(262,-302,612,326),9582=>array(-10,-302,340,326),9583=>array(-10,242,340,973),9584=>array(262,242,612,973),9585=>array(-53,-302,655,973),9586=>array(-53,-302,655,973),9587=>array(-53,-302,655,973),9588=>array(-10,242,311,326),9589=>array(262,284,340,973),9590=>array(311,242,612,326),9591=>array(262,-302,340,284),9592=>array(-10,200,311,368),9593=>array(223,284,379,973),9594=>array(311,200,612,368),9595=>array(223,-302,379,284),9596=>array(-10,200,612,368),9597=>array(223,-302,379,973),9598=>array(-10,200,612,368),9599=>array(223,-302,379,973),9600=>array(-10,260,779,770),9601=>array(-10,-250,779,-123),9602=>array(-10,-250,779,-5),9603=>array(-10,-250,779,132),9604=>array(-10,-250,779,260),9605=>array(-10,-250,779,387),9606=>array(-10,-250,779,515),9607=>array(-10,-250,779,642),9608=>array(-10,-250,779,770),9609=>array(-10,-250,680,770),9610=>array(-10,-250,582,770),9611=>array(-10,-250,483,770),9612=>array(-10,-250,384,770),9613=>array(-10,-250,286,770),9614=>array(-10,-250,187,770),9615=>array(-10,-250,88,770),9616=>array(384,-250,778,770),9617=>array(-10,-250,680,770),9618=>array(-10,-250,775,770),9619=>array(-10,-250,779,770),9620=>array(-10,642,779,770),9621=>array(680,-250,778,770),9622=>array(-10,-250,385,260),9623=>array(384,-250,779,260),9624=>array(-10,260,385,770),9625=>array(-10,-250,779,770),9626=>array(-10,-250,779,770),9627=>array(-10,-250,779,770),9628=>array(-10,-250,779,770),9629=>array(384,260,779,770),9630=>array(-10,-250,779,770),9631=>array(-10,-250,779,770),9632=>array(91,-123,854,643),9633=>array(91,-123,854,643),9634=>array(91,-123,854,643),9635=>array(91,-123,854,643),9636=>array(91,-123,854,643),9637=>array(91,-123,854,643),9638=>array(91,-123,854,643),9639=>array(91,-123,854,643),9640=>array(91,-123,854,643),9641=>array(91,-123,854,643),9642=>array(91,11,587,509),9643=>array(91,11,587,509),9644=>array(91,75,854,444),9645=>array(91,75,854,444),9646=>array(91,-122,459,642),9647=>array(91,-122,459,642),9648=>array(3,75,766,444),9649=>array(3,75,766,444),9650=>array(3,-123,766,643),9651=>array(3,-123,766,643),9652=>array(3,11,499,509),9653=>array(3,11,499,509),9654=>array(3,-123,766,643),9655=>array(3,-123,766,643),9656=>array(3,11,499,509),9657=>array(3,11,499,509),9658=>array(3,11,766,509),9659=>array(3,11,766,509),9660=>array(3,-123,766,643),9661=>array(3,-123,766,643),9662=>array(3,11,499,509),9663=>array(3,11,499,509),9664=>array(3,-123,766,643),9665=>array(3,-123,766,643),9666=>array(3,11,499,509),9667=>array(3,11,499,509),9668=>array(3,11,766,509),9669=>array(3,11,766,509),9670=>array(3,-123,766,643),9671=>array(3,-123,766,643),9672=>array(3,-123,766,643),9673=>array(55,-125,818,645),9674=>array(3,-233,491,807),9675=>array(55,-125,818,645),9676=>array(56,-125,817,644),9677=>array(55,-125,818,645),9678=>array(55,-125,818,645),9679=>array(55,-123,818,641),9680=>array(55,-123,818,641),9681=>array(55,-123,818,641),9682=>array(55,-123,818,641),9683=>array(55,-123,818,641),9684=>array(55,-123,818,641),9685=>array(55,-123,818,641),9686=>array(55,-125,436,645),9687=>array(91,-125,472,645),9688=>array(91,-10,700,770),9689=>array(91,-250,879,770),9690=>array(91,260,879,770),9691=>array(91,-250,879,260),9692=>array(3,260,384,645),9693=>array(3,260,384,645),9694=>array(3,-125,384,260),9695=>array(3,-125,384,260),9696=>array(55,260,818,645),9697=>array(55,-125,818,260),9698=>array(3,-123,766,643),9699=>array(3,-123,766,643),9700=>array(3,-123,766,643),9701=>array(3,-123,766,643),9702=>array(150,227,440,516),9703=>array(91,-123,854,643),9704=>array(91,-123,854,643),9705=>array(91,-123,854,643),9706=>array(91,-123,854,643),9707=>array(91,-123,854,643),9708=>array(3,-123,766,643),9709=>array(3,-123,766,643),9710=>array(3,-123,766,643),9711=>array(55,-250,1064,770),9712=>array(91,-123,854,643),9713=>array(91,-123,854,643),9714=>array(91,-123,854,643),9715=>array(91,-123,854,643),9716=>array(55,-123,818,641),9717=>array(55,-123,818,641),9718=>array(55,-123,818,641),9719=>array(55,-123,818,641),9720=>array(3,-123,766,643),9721=>array(3,-123,766,643),9722=>array(3,-123,766,643),9723=>array(91,-66,739,585),9724=>array(91,-66,739,585),9725=>array(91,-17,642,537),9726=>array(91,-17,642,537),9727=>array(3,-123,766,643),9728=>array(83,0,813,729),9729=>array(51,-2,949,360),9730=>array(49,0,848,729),9731=>array(83,-0,813,927),9732=>array(64,0,833,880),9733=>array(65,-4,832,723),9734=>array(65,-4,832,723),9735=>array(83,2,490,729),9736=>array(83,0,813,731),9737=>array(83,0,813,730),9738=>array(61,0,828,727),9739=>array(61,0,828,723),9740=>array(61,-1,610,722),9741=>array(61,0,952,723),9742=>array(68,0,1177,729),9743=>array(71,0,1180,729),9744=>array(90,0,807,729),9745=>array(89,0,808,729),9746=>array(89,0,808,729),9747=>array(75,78,457,656),9748=>array(49,0,870,933),9749=>array(74,0,822,731),9750=>array(84,0,813,731),9751=>array(84,0,813,727),9752=>array(78,0,819,729),9753=>array(83,140,813,574),9754=>array(84,113,813,569),9755=>array(84,113,813,569),9756=>array(87,104,810,569),9757=>array(72,0,537,724),9758=>array(86,103,810,569),9759=>array(72,-3,537,720),9760=>array(61,0,835,730),9761=>array(84,0,813,730),9762=>array(83,0,813,730),9763=>array(49,0,848,730),9764=>array(49,-2,620,727),9765=>array(83,0,663,731),9766=>array(83,-1,566,731),9767=>array(83,0,701,911),9768=>array(83,0,462,730),9769=>array(83,-1,813,729),9770=>array(87,0,810,730),9771=>array(83,0,814,731),9772=>array(83,0,627,731),9773=>array(83,0,813,730),9774=>array(83,0,813,730),9775=>array(83,0,813,730),9776=>array(83,0,813,729),9777=>array(83,0,814,729),9778=>array(83,0,813,729),9779=>array(83,0,813,729),9780=>array(83,0,813,729),9781=>array(83,0,813,729),9782=>array(83,0,813,729),9783=>array(83,0,813,729),9784=>array(66,-11,831,735),9785=>array(83,-73,959,804),9786=>array(83,-73,959,804),9787=>array(83,-73,959,804),9788=>array(83,0,813,730),9789=>array(358,0,814,730),9790=>array(83,0,539,730),9791=>array(85,-102,528,732),9792=>array(85,-125,647,731),9793=>array(85,-14,647,843),9794=>array(79,-14,831,720),9795=>array(166,0,730,730),9796=>array(219,0,677,730),9797=>array(121,0,774,730),9798=>array(127,0,769,730),9799=>array(240,0,656,730),9800=>array(45,0,851,731),9801=>array(89,0,807,730),9802=>array(94,0,802,731),9803=>array(113,31,784,679),9804=>array(140,0,756,730),9805=>array(53,-180,843,730),9806=>array(83,52,813,653),9807=>array(34,-96,863,730),9808=>array(83,-0,813,730),9809=>array(94,0,802,730),9810=>array(86,153,810,579),9811=>array(157,0,739,730),9812=>array(98,0,798,730),9813=>array(110,0,786,730),9814=>array(167,-1,729,729),9815=>array(214,0,683,730),9816=>array(165,0,732,730),9817=>array(148,-0,748,730),9818=>array(98,0,798,730),9819=>array(110,0,786,730),9820=>array(167,-1,729,729),9821=>array(214,0,683,730),9822=>array(162,0,734,730),9823=>array(148,-0,748,730),9824=>array(158,0,738,729),9825=>array(90,0,806,727),9826=>array(168,0,728,729),9827=>array(111,0,785,729),9828=>array(157,0,739,729),9829=>array(89,0,808,729),9830=>array(168,0,728,729),9831=>array(111,0,785,732),9832=>array(105,-1,791,729),9833=>array(84,-5,339,729),9834=>array(84,-5,554,729),9835=>array(184,-102,712,729),9836=>array(92,-5,804,729),9837=>array(88,-3,392,731),9838=>array(84,0,273,731),9839=>array(84,0,400,731),9840=>array(84,0,664,731),9841=>array(64,0,701,731),9842=>array(84,0,813,709),9843=>array(76,16,820,731),9844=>array(76,16,820,731),9845=>array(76,16,820,731),9846=>array(76,16,820,731),9847=>array(76,16,820,731),9848=>array(76,16,820,731),9849=>array(76,16,820,731),9850=>array(76,16,820,731),9851=>array(84,0,812,704),9852=>array(83,0,814,731),9853=>array(83,0,814,731),9854=>array(83,0,814,731),9855=>array(149,1,747,731),9856=>array(73,0,797,725),9857=>array(73,0,797,725),9858=>array(73,0,797,725),9859=>array(73,0,797,725),9860=>array(73,0,797,725),9861=>array(73,0,797,725),9862=>array(83,0,813,731),9863=>array(83,0,813,731),9864=>array(83,0,813,731),9865=>array(83,0,813,731),9866=>array(83,0,813,98),9867=>array(83,0,813,98),9868=>array(83,0,813,413),9869=>array(83,0,813,413),9870=>array(83,0,813,413),9871=>array(83,0,813,413),9872=>array(168,3,728,731),9873=>array(168,3,728,731),9874=>array(52,0,844,731),9875=>array(97,-10,799,732),9876=>array(131,0,765,729),9877=>array(61,-10,479,732),9878=>array(59,-10,837,732),9879=>array(61,0,835,732),9880=>array(145,0,750,732),9881=>array(95,-17,802,727),9882=>array(128,-9,768,733),9883=>array(127,0,769,728),9884=>array(127,0,769,729),9888=>array(49,0,848,729),9889=>array(83,2,619,730),9890=>array(85,-125,919,731),9891=>array(79,-206,1023,720),9892=>array(85,-186,1109,856),9893=>array(85,-125,837,917),9894=>array(131,-14,727,869),9895=>array(101,-170,741,884),9896=>array(188,-14,650,869),9897=>array(4,133,829,596),9898=>array(187,133,651,596),9899=>array(187,133,651,596),9900=>array(247,194,591,537),9901=>array(174,194,664,537),9902=>array(41,169,797,560),9903=>array(5,194,833,536),9904=>array(103,237,757,540),9905=>array(211,42,626,698),9906=>array(85,-125,647,731),9907=>array(168,-125,646,731),9908=>array(86,-125,646,731),9909=>array(86,-125,646,731),9910=>array(59,-118,791,643),9911=>array(194,-104,595,710),9912=>array(158,-125,543,731),9920=>array(42,4,796,553),9921=>array(42,4,796,724),9922=>array(42,4,796,553),9923=>array(42,4,796,724),9954=>array(85,-14,647,843),9985=>array(11,190,803,635),9986=>array(42,141,784,588),9987=>array(11,94,803,539),9988=>array(36,119,824,613),9990=>array(42,-14,796,742),9991=>array(42,-14,796,742),9992=>array(59,21,782,708),9993=>array(64,107,773,622),9996=>array(212,0,561,742),9997=>array(21,83,802,678),9998=>array(89,75,724,710),9999=>array(26,198,819,530),10000=>array(89,75,724,710),10001=>array(43,185,757,544),10002=>array(67,209,757,520),10003=>array(150,97,667,630),10004=>array(116,87,721,631),10005=>array(126,72,711,657),10006=>array(85,31,752,698),10007=>array(118,-9,701,732),10008=>array(123,0,754,739),10009=>array(55,0,783,729),10010=>array(55,0,783,729),10011=>array(55,0,783,729),10012=>array(55,0,783,729),10013=>array(165,0,673,729),10014=>array(131,0,678,729),10015=>array(155,0,683,729),10016=>array(55,0,783,729),10017=>array(91,-13,747,744),10018=>array(41,-14,797,742),10019=>array(42,-12,796,742),10020=>array(41,-14,797,742),10021=>array(41,-13,797,743),10022=>array(42,-14,796,745),10023=>array(42,-14,796,745),10025=>array(23,-10,815,744),10026=>array(42,-14,796,742),10027=>array(23,-9,814,743),10028=>array(23,-10,815,744),10029=>array(23,-9,814,743),10030=>array(23,-9,814,743),10031=>array(23,-9,814,743),10032=>array(24,12,815,714),10033=>array(64,0,773,729),10034=>array(74,0,764,729),10035=>array(55,0,783,729),10036=>array(31,-14,787,742),10037=>array(41,-14,797,742),10038=>array(91,-14,747,742),10039=>array(41,-14,797,742),10040=>array(41,-14,797,742),10041=>array(41,-14,797,742),10042=>array(55,0,783,729),10043=>array(82,-14,756,742),10044=>array(82,-14,756,742),10045=>array(79,-14,759,742),10046=>array(79,-14,759,742),10047=>array(54,0,784,709),10048=>array(54,0,784,709),10049=>array(41,-14,797,742),10050=>array(42,-14,796,742),10051=>array(79,-14,759,742),10052=>array(89,0,749,729),10053=>array(76,0,762,729),10054=>array(63,2,773,729),10055=>array(79,-13,759,742),10056=>array(47,-13,791,730),10057=>array(47,-13,791,730),10058=>array(41,-13,797,743),10059=>array(41,-13,797,743),10061=>array(50,-10,847,738),10063=>array(60,-49,837,729),10064=>array(60,0,837,777),10065=>array(60,-49,837,729),10066=>array(60,0,837,777),10070=>array(83,-2,813,728),10072=>array(377,-240,460,760),10073=>array(336,-240,502,760),10074=>array(253,-240,585,760),10075=>array(85,395,264,729),10076=>array(59,395,237,729),10077=>array(85,395,479,729),10078=>array(59,395,453,729),10081=>array(155,-93,772,851),10082=>array(202,-17,636,742),10083=>array(163,-17,675,742),10084=>array(54,83,784,645),10085=>array(168,-1,729,729),10086=>array(62,21,724,702),10087=>array(78,169,759,564),10088=>array(196,-139,648,769),10089=>array(196,-139,648,769),10090=>array(264,-132,574,758),10091=>array(264,-132,574,758),10092=>array(215,-240,607,760),10093=>array(232,-240,623,760),10094=>array(142,-240,685,760),10095=>array(153,-240,696,760),10096=>array(167,-240,656,760),10097=>array(183,-240,672,760),10098=>array(346,-241,535,760),10099=>array(303,-241,492,760),10100=>array(175,-163,634,760),10101=>array(204,-163,663,760),10102=>array(74,-10,822,738),10103=>array(74,-10,822,738),10104=>array(74,-10,822,738),10105=>array(74,-10,822,738),10106=>array(74,-10,822,738),10107=>array(74,-10,822,738),10108=>array(74,-10,822,738),10109=>array(74,-10,822,738),10110=>array(74,-10,822,738),10111=>array(74,-10,822,738),10112=>array(4,-52,833,780),10113=>array(4,-52,833,780),10114=>array(4,-52,833,780),10115=>array(4,-52,833,780),10116=>array(4,-52,833,780),10117=>array(4,-52,833,780),10118=>array(4,-52,833,780),10119=>array(4,-52,833,780),10120=>array(4,-52,833,780),10121=>array(4,-52,833,780),10122=>array(4,-52,833,780),10123=>array(4,-52,833,780),10124=>array(4,-52,833,780),10125=>array(4,-52,833,780),10126=>array(4,-52,833,780),10127=>array(4,-52,833,780),10128=>array(4,-52,833,780),10129=>array(4,-52,833,780),10130=>array(4,-52,833,780),10131=>array(4,-52,833,780),10132=>array(57,75,789,552),10136=>array(123,55,682,614),10137=>array(57,100,789,527),10138=>array(123,13,682,572),10139=>array(57,129,789,498),10140=>array(57,57,764,570),10141=>array(57,100,789,527),10142=>array(57,100,789,527),10143=>array(57,100,789,527),10144=>array(57,100,789,527),10145=>array(57,65,811,562),10146=>array(111,94,789,533),10147=>array(111,94,789,533),10148=>array(111,-4,789,631),10149=>array(57,100,789,548),10150=>array(57,79,789,527),10151=>array(240,-7,606,634),10152=>array(57,100,789,527),10153=>array(57,75,765,552),10154=>array(57,75,765,552),10155=>array(21,12,794,586),10156=>array(21,12,794,586),10157=>array(135,0,774,574),10158=>array(135,0,774,574),10159=>array(62,49,799,574),10161=>array(62,49,799,574),10162=>array(154,-20,721,585),10163=>array(63,157,789,470),10164=>array(81,55,682,655),10165=>array(57,173,789,454),10166=>array(82,-29,682,572),10167=>array(82,55,682,655),10168=>array(57,172,789,455),10169=>array(82,-28,682,572),10170=>array(56,84,789,543),10171=>array(73,140,779,487),10172=>array(79,167,774,460),10173=>array(79,118,774,509),10174=>array(57,81,789,546),10181=>array(54,-163,352,769),10182=>array(39,-163,336,769),10208=>array(3,-233,491,807),10214=>array(86,-132,398,760),10215=>array(85,-132,398,760),10216=>array(89,-132,310,759),10217=>array(80,-132,301,759),10218=>array(89,-132,476,759),10219=>array(80,-132,467,759),10224=>array(44,0,794,732),10225=>array(43,-3,793,729),10226=>array(39,53,814,658),10227=>array(39,61,814,666),10228=>array(57,-14,1108,643),10229=>array(49,100,1376,527),10230=>array(57,100,1385,527),10231=>array(49,100,1385,527),10232=>array(49,100,1376,527),10233=>array(57,100,1385,527),10234=>array(49,100,1385,527),10235=>array(49,100,1376,527),10236=>array(57,100,1385,527),10237=>array(49,100,1376,527),10238=>array(57,100,1385,527),10239=>array(57,100,1385,527),10240=>array(146,635,293,781),10241=>array(146,635,293,781),10242=>array(146,358,293,504),10243=>array(146,358,293,781),10244=>array(146,82,293,228),10245=>array(146,82,293,781),10246=>array(146,82,293,504),10247=>array(146,82,293,781),10248=>array(439,635,586,781),10249=>array(146,635,586,781),10250=>array(146,358,586,781),10251=>array(146,358,586,781),10252=>array(146,82,586,781),10253=>array(146,82,586,781),10254=>array(146,82,586,781),10255=>array(146,82,586,781),10256=>array(439,358,586,504),10257=>array(146,358,586,781),10258=>array(146,358,586,504),10259=>array(146,358,586,781),10260=>array(146,82,586,504),10261=>array(146,82,586,781),10262=>array(146,82,586,504),10263=>array(146,82,586,781),10264=>array(439,358,586,781),10265=>array(146,358,586,781),10266=>array(146,358,586,781),10267=>array(146,358,586,781),10268=>array(146,82,586,781),10269=>array(146,82,586,781),10270=>array(146,82,586,781),10271=>array(146,82,586,781),10272=>array(439,82,586,228),10273=>array(146,82,586,781),10274=>array(146,82,586,504),10275=>array(146,82,586,781),10276=>array(146,82,586,228),10277=>array(146,82,586,781),10278=>array(146,82,586,504),10279=>array(146,82,586,781),10280=>array(439,82,586,781),10281=>array(146,82,586,781),10282=>array(146,82,586,781),10283=>array(146,82,586,781),10284=>array(146,82,586,781),10285=>array(146,82,586,781),10286=>array(146,82,586,781),10287=>array(146,82,586,781),10288=>array(439,82,586,504),10289=>array(146,82,586,781),10290=>array(146,82,586,504),10291=>array(146,82,586,781),10292=>array(146,82,586,504),10293=>array(146,82,586,781),10294=>array(146,82,586,504),10295=>array(146,82,586,781),10296=>array(439,82,586,781),10297=>array(146,82,586,781),10298=>array(146,82,586,781),10299=>array(146,82,586,781),10300=>array(146,82,586,781),10301=>array(146,82,586,781),10302=>array(146,82,586,781),10303=>array(146,82,586,781),10304=>array(146,-195,293,-49),10305=>array(146,-195,293,781),10306=>array(146,-195,293,504),10307=>array(146,-195,293,781),10308=>array(146,-195,293,228),10309=>array(146,-195,293,781),10310=>array(146,-195,293,504),10311=>array(146,-195,293,781),10312=>array(146,-195,586,781),10313=>array(146,-195,586,781),10314=>array(146,-195,586,781),10315=>array(146,-195,586,781),10316=>array(146,-195,586,781),10317=>array(146,-195,586,781),10318=>array(146,-195,586,781),10319=>array(146,-195,586,781),10320=>array(146,-195,586,504),10321=>array(146,-195,586,781),10322=>array(146,-195,586,504),10323=>array(146,-195,586,781),10324=>array(146,-195,586,504),10325=>array(146,-195,586,781),10326=>array(146,-195,586,504),10327=>array(146,-195,586,781),10328=>array(146,-195,586,781),10329=>array(146,-195,586,781),10330=>array(146,-195,586,781),10331=>array(146,-195,586,781),10332=>array(146,-195,586,781),10333=>array(146,-195,586,781),10334=>array(146,-195,586,781),10335=>array(146,-195,586,781),10336=>array(146,-195,586,228),10337=>array(146,-195,586,781),10338=>array(146,-195,586,504),10339=>array(146,-195,586,781),10340=>array(146,-195,586,228),10341=>array(146,-195,586,781),10342=>array(146,-195,586,504),10343=>array(146,-195,586,781),10344=>array(146,-195,586,781),10345=>array(146,-195,586,781),10346=>array(146,-195,586,781),10347=>array(146,-195,586,781),10348=>array(146,-195,586,781),10349=>array(146,-195,586,781),10350=>array(146,-195,586,781),10351=>array(146,-195,586,781),10352=>array(146,-195,586,504),10353=>array(146,-195,586,781),10354=>array(146,-195,586,504),10355=>array(146,-195,586,781),10356=>array(146,-195,586,504),10357=>array(146,-195,586,781),10358=>array(146,-195,586,504),10359=>array(146,-195,586,781),10360=>array(146,-195,586,781),10361=>array(146,-195,586,781),10362=>array(146,-195,586,781),10363=>array(146,-195,586,781),10364=>array(146,-195,586,781),10365=>array(146,-195,586,781),10366=>array(146,-195,586,781),10367=>array(146,-195,586,781),10368=>array(439,-195,586,-49),10369=>array(146,-195,586,781),10370=>array(146,-195,586,504),10371=>array(146,-195,586,781),10372=>array(146,-195,586,228),10373=>array(146,-195,586,781),10374=>array(146,-195,586,504),10375=>array(146,-195,586,781),10376=>array(439,-195,586,781),10377=>array(146,-195,586,781),10378=>array(146,-195,586,781),10379=>array(146,-195,586,781),10380=>array(146,-195,586,781),10381=>array(146,-195,586,781),10382=>array(146,-195,586,781),10383=>array(146,-195,586,781),10384=>array(439,-195,586,504),10385=>array(146,-195,586,781),10386=>array(146,-195,586,504),10387=>array(146,-195,586,781),10388=>array(146,-195,586,504),10389=>array(146,-195,586,781),10390=>array(146,-195,586,504),10391=>array(146,-195,586,781),10392=>array(439,-195,586,781),10393=>array(146,-195,586,781),10394=>array(146,-195,586,781),10395=>array(146,-195,586,781),10396=>array(146,-195,586,781),10397=>array(146,-195,586,781),10398=>array(146,-195,586,781),10399=>array(146,-195,586,781),10400=>array(439,-195,586,228),10401=>array(146,-195,586,781),10402=>array(146,-195,586,504),10403=>array(146,-195,586,781),10404=>array(146,-195,586,228),10405=>array(146,-195,586,781),10406=>array(146,-195,586,504),10407=>array(146,-195,586,781),10408=>array(439,-195,586,781),10409=>array(146,-195,586,781),10410=>array(146,-195,586,781),10411=>array(146,-195,586,781),10412=>array(146,-195,586,781),10413=>array(146,-195,586,781),10414=>array(146,-195,586,781),10415=>array(146,-195,586,781),10416=>array(439,-195,586,504),10417=>array(146,-195,586,781),10418=>array(146,-195,586,504),10419=>array(146,-195,586,781),10420=>array(146,-195,586,504),10421=>array(146,-195,586,781),10422=>array(146,-195,586,504),10423=>array(146,-195,586,781),10424=>array(439,-195,586,781),10425=>array(146,-195,586,781),10426=>array(146,-195,586,781),10427=>array(146,-195,586,781),10428=>array(146,-195,586,781),10429=>array(146,-195,586,781),10430=>array(146,-195,586,781),10431=>array(146,-195,586,781),10432=>array(146,-195,586,-49),10433=>array(146,-195,586,781),10434=>array(146,-195,586,504),10435=>array(146,-195,586,781),10436=>array(146,-195,586,228),10437=>array(146,-195,586,781),10438=>array(146,-195,586,504),10439=>array(146,-195,586,781),10440=>array(146,-195,586,781),10441=>array(146,-195,586,781),10442=>array(146,-195,586,781),10443=>array(146,-195,586,781),10444=>array(146,-195,586,781),10445=>array(146,-195,586,781),10446=>array(146,-195,586,781),10447=>array(146,-195,586,781),10448=>array(146,-195,586,504),10449=>array(146,-195,586,781),10450=>array(146,-195,586,504),10451=>array(146,-195,586,781),10452=>array(146,-195,586,504),10453=>array(146,-195,586,781),10454=>array(146,-195,586,504),10455=>array(146,-195,586,781),10456=>array(146,-195,586,781),10457=>array(146,-195,586,781),10458=>array(146,-195,586,781),10459=>array(146,-195,586,781),10460=>array(146,-195,586,781),10461=>array(146,-195,586,781),10462=>array(146,-195,586,781),10463=>array(146,-195,586,781),10464=>array(146,-195,586,228),10465=>array(146,-195,586,781),10466=>array(146,-195,586,504),10467=>array(146,-195,586,781),10468=>array(146,-195,586,228),10469=>array(146,-195,586,781),10470=>array(146,-195,586,504),10471=>array(146,-195,586,781),10472=>array(146,-195,586,781),10473=>array(146,-195,586,781),10474=>array(146,-195,586,781),10475=>array(146,-195,586,781),10476=>array(146,-195,586,781),10477=>array(146,-195,586,781),10478=>array(146,-195,586,781),10479=>array(146,-195,586,781),10480=>array(146,-195,586,504),10481=>array(146,-195,586,781),10482=>array(146,-195,586,504),10483=>array(146,-195,586,781),10484=>array(146,-195,586,504),10485=>array(146,-195,586,781),10486=>array(146,-195,586,504),10487=>array(146,-195,586,781),10488=>array(146,-195,586,781),10489=>array(146,-195,586,781),10490=>array(146,-195,586,781),10491=>array(146,-195,586,781),10492=>array(146,-195,586,781),10493=>array(146,-195,586,781),10494=>array(146,-195,586,781),10495=>array(146,-195,586,781),10502=>array(49,100,781,527),10503=>array(57,100,789,527),10506=>array(125,0,713,732),10507=>array(125,-3,713,729),10560=>array(39,63,644,838),10561=>array(39,63,644,838),10627=>array(125,-163,609,760),10628=>array(125,-163,609,760),10702=>array(106,-226,732,747),10703=>array(106,15,894,612),10704=>array(106,15,894,612),10705=>array(106,-30,894,657),10706=>array(106,-30,894,657),10707=>array(106,-30,894,657),10708=>array(106,-30,894,657),10709=>array(106,-30,894,657),10731=>array(3,-233,491,807),10746=>array(106,0,732,627),10747=>array(106,0,732,627),10752=>array(28,-198,972,748),10753=>array(28,-198,972,748),10754=>array(28,-198,972,748),10764=>array(57,-212,1268,757),10765=>array(57,-212,464,757),10766=>array(57,-212,464,757),10767=>array(57,-212,464,757),10768=>array(57,-212,464,757),10769=>array(57,-212,522,757),10770=>array(57,-212,464,757),10771=>array(57,-212,464,757),10772=>array(57,-212,555,757),10773=>array(57,-212,464,757),10774=>array(57,-212,464,757),10775=>array(-32,-212,553,757),10776=>array(57,-212,464,757),10777=>array(57,-212,464,757),10778=>array(57,-212,464,757),10779=>array(57,-212,469,872),10780=>array(52,-327,464,757),10799=>array(137,31,701,596),10858=>array(106,228,732,552),10859=>array(106,78,732,552),10877=>array(106,-123,732,581),10878=>array(106,-123,732,581),10879=>array(106,-123,733,581),10880=>array(106,-123,732,581),10881=>array(106,-123,732,644),10882=>array(106,-123,732,644),10883=>array(106,-123,733,759),10884=>array(106,-123,732,756),10885=>array(106,-132,732,663),10886=>array(106,-132,732,663),10887=>array(106,-121,732,582),10888=>array(106,-121,732,582),10889=>array(106,-204,732,663),10890=>array(106,-204,732,663),10891=>array(106,-311,732,791),10892=>array(106,-311,732,791),10893=>array(106,-124,732,663),10894=>array(106,-124,732,663),10895=>array(106,-241,732,756),10896=>array(106,-241,732,756),10897=>array(106,-229,732,730),10898=>array(106,-229,732,730),10899=>array(106,-224,732,741),10900=>array(106,-224,732,741),10901=>array(106,-61,732,644),10902=>array(106,-61,732,644),10903=>array(106,-61,733,644),10904=>array(106,-61,732,644),10905=>array(106,-36,732,685),10906=>array(106,-36,732,685),10907=>array(106,-31,732,725),10908=>array(106,-31,732,725),10909=>array(106,8,732,645),10910=>array(106,23,732,645),10911=>array(106,-176,732,729),10912=>array(106,-176,732,729),10926=>array(106,50,732,601),10927=>array(106,-24,732,667),10928=>array(106,-24,732,667),10929=>array(106,-145,732,667),10930=>array(106,-145,732,667),10931=>array(106,-121,732,662),10932=>array(106,-121,732,662),10933=>array(106,-195,732,662),10934=>array(106,-195,732,662),10935=>array(106,-191,732,693),10936=>array(106,-191,732,693),10937=>array(106,-259,732,693),10938=>array(106,-259,732,693),11001=>array(106,-171,732,585),11002=>array(106,-171,732,585),11008=>array(88,-27,703,587),11009=>array(141,-27,755,587),11010=>array(88,25,703,640),11011=>array(141,25,755,640),11012=>array(27,65,789,562),11013=>array(27,65,781,562),11014=>array(171,0,667,754),11015=>array(171,-25,667,729),11016=>array(88,-27,703,587),11017=>array(141,-27,755,587),11018=>array(88,25,703,640),11019=>array(141,25,755,640),11020=>array(27,65,789,562),11021=>array(171,-25,667,754),11022=>array(57,-3,790,355),11023=>array(57,272,790,630),11024=>array(35,-3,768,355),11025=>array(35,272,768,630),11026=>array(91,-123,854,643),11027=>array(91,-123,854,643),11028=>array(91,-123,854,643),11029=>array(91,-123,854,643),11030=>array(3,-123,766,643),11031=>array(3,-123,766,643),11032=>array(3,-123,766,643),11033=>array(3,-123,766,643),11034=>array(91,-123,854,643),11039=>array(18,-26,852,767),11040=>array(18,-26,852,767),11041=>array(73,-91,800,748),11042=>array(73,-91,800,748),11043=>array(17,-35,856,692),11044=>array(55,-250,1064,770),11091=>array(38,-47,832,788),11092=>array(38,-47,832,788),11360=>array(5,0,552,729),11361=>array(5,0,271,760),11362=>array(-20,0,552,729),11363=>array(5,0,569,729),11364=>array(98,-200,666,729),11365=>array(35,-46,576,592),11366=>array(-12,-93,384,822),11367=>array(98,-157,752,729),11368=>array(91,-138,639,760),11369=>array(98,-157,677,729),11370=>array(91,-138,576,760),11371=>array(45,-157,738,729),11372=>array(43,-138,572,547),11373=>array(56,-14,683,743),11374=>array(98,-200,765,729),11375=>array(8,0,676,729),11376=>array(56,-14,683,743),11377=>array(30,0,734,560),11378=>array(33,0,1128,742),11379=>array(42,0,961,560),11380=>array(51,0,562,587),11381=>array(98,0,555,729),11382=>array(94,0,477,547),11383=>array(55,-12,602,551),11385=>array(0,-13,320,760),11386=>array(55,-14,557,560),11387=>array(48,0,400,547),11388=>array(-11,-117,116,425),11389=>array(5,326,426,734),11390=>array(66,-242,598,742),11391=>array(45,-242,640,729),11520=>array(60,-63,544,547),11521=>array(24,-235,556,546),11522=>array(39,-235,535,546),11523=>array(62,-10,572,807),11524=>array(51,-235,537,546),11525=>array(39,-236,862,546),11526=>array(0,-8,575,816),11527=>array(53,0,900,546),11528=>array(69,0,542,546),11529=>array(51,-235,556,816),11530=>array(39,0,903,546),11531=>array(53,-8,595,816),11532=>array(39,0,544,816),11533=>array(51,0,887,546),11534=>array(51,0,556,546),11535=>array(69,-235,767,816),11536=>array(51,0,880,816),11537=>array(51,0,545,816),11538=>array(50,-235,536,546),11539=>array(51,-235,884,661),11540=>array(60,-235,892,546),11541=>array(49,-235,784,816),11542=>array(39,0,545,546),11543=>array(51,-235,556,547),11544=>array(51,-235,551,546),11545=>array(39,-235,541,816),11546=>array(42,-235,532,547),11547=>array(60,-9,596,816),11548=>array(39,-235,870,547),11549=>array(29,-235,545,546),11550=>array(47,-235,547,546),11551=>array(34,-235,547,567),11552=>array(39,0,875,546),11553=>array(49,-235,544,816),11554=>array(60,0,538,626),11555=>array(61,-235,553,816),11556=>array(51,-235,603,546),11557=>array(60,-8,841,816),11568=>array(55,-14,591,380),11569=>array(56,-14,832,742),11570=>array(56,-14,832,742),11571=>array(31,0,651,729),11572=>array(33,0,652,729),11573=>array(31,0,604,729),11574=>array(73,0,488,729),11575=>array(8,0,676,729),11576=>array(8,0,676,729),11577=>array(98,0,568,729),11578=>array(64,0,534,729),11579=>array(73,-14,609,742),11580=>array(107,0,811,729),11581=>array(45,0,665,729),11582=>array(73,0,437,729),11583=>array(45,0,665,729),11584=>array(56,-14,832,742),11585=>array(56,-52,832,781),11586=>array(73,0,197,729),11587=>array(20,0,610,729),11588=>array(98,0,654,729),11589=>array(30,0,654,729),11590=>array(73,0,454,729),11591=>array(45,0,629,729),11592=>array(73,301,571,426),11593=>array(98,0,568,729),11594=>array(54,0,448,729),11595=>array(54,-15,899,742),11596=>array(54,0,725,729),11597=>array(98,0,650,729),11598=>array(100,0,566,729),11599=>array(98,0,197,729),11600=>array(54,0,725,729),11601=>array(98,0,198,729),11602=>array(78,-14,705,729),11603=>array(48,-14,584,742),11604=>array(56,-14,832,742),11605=>array(56,-54,832,742),11606=>array(98,0,654,729),11607=>array(98,0,222,729),11608=>array(73,0,676,729),11609=>array(56,-14,832,742),11610=>array(56,-14,832,780),11611=>array(56,-14,681,742),11612=>array(49,0,719,729),11613=>array(30,0,654,729),11614=>array(56,-14,681,742),11615=>array(98,0,568,729),11616=>array(8,0,676,729),11617=>array(98,0,654,729),11618=>array(98,0,559,729),11619=>array(56,0,732,729),11620=>array(98,0,495,729),11621=>array(56,0,732,729),11631=>array(26,522,489,729),11800=>array(70,-14,459,728),11806=>array(106,78,732,399),11810=>array(86,403,293,760),11811=>array(97,403,304,760),11812=>array(86,-132,293,225),11813=>array(97,-132,304,225),11822=>array(72,0,461,742),19904=>array(83,-158,813,729),19905=>array(83,-158,813,729),19906=>array(83,-158,813,729),19907=>array(83,-158,813,729),19908=>array(83,-158,813,729),19909=>array(83,-158,813,729),19910=>array(83,-158,813,729),19911=>array(83,-158,813,729),19912=>array(83,-158,813,729),19913=>array(83,-158,814,729),19914=>array(83,-158,813,729),19915=>array(83,-158,813,729),19916=>array(83,-158,813,729),19917=>array(83,-158,813,729),19918=>array(83,-158,813,729),19919=>array(83,-158,813,729),19920=>array(83,-158,814,729),19921=>array(83,-158,813,729),19922=>array(83,-158,814,729),19923=>array(83,-158,813,729),19924=>array(83,-158,813,729),19925=>array(83,-158,813,729),19926=>array(83,-158,813,729),19927=>array(83,-158,813,729),19928=>array(83,-158,813,729),19929=>array(83,-158,813,729),19930=>array(83,-158,813,729),19931=>array(83,-158,814,729),19932=>array(83,-158,813,729),19933=>array(83,-158,813,729),19934=>array(83,-158,814,729),19935=>array(83,-158,813,729),19936=>array(83,-158,813,729),19937=>array(83,-158,813,729),19938=>array(83,-158,813,729),19939=>array(83,-158,813,729),19940=>array(83,-158,813,729),19941=>array(83,-158,814,729),19942=>array(83,-158,813,729),19943=>array(83,-158,813,729),19944=>array(83,-158,814,729),19945=>array(83,-158,813,729),19946=>array(83,-158,814,729),19947=>array(83,-158,813,729),19948=>array(83,-158,814,729),19949=>array(83,-158,813,729),19950=>array(83,-158,814,729),19951=>array(83,-158,813,729),19952=>array(83,-158,814,729),19953=>array(83,-158,813,729),19954=>array(83,-158,813,729),19955=>array(83,-158,813,729),19956=>array(83,-158,813,729),19957=>array(83,-158,814,729),19958=>array(83,-158,813,729),19959=>array(83,-158,813,729),19960=>array(83,-158,813,729),19961=>array(83,-158,814,729),19962=>array(83,-158,813,729),19963=>array(83,-158,814,729),19964=>array(83,-158,814,729),19965=>array(83,-158,813,729),19966=>array(83,-158,813,729),19967=>array(83,-158,813,729),42192=>array(98,0,615,729),42193=>array(98,0,569,729),42194=>array(34,0,505,729),42195=>array(98,0,711,729),42196=>array(-3,0,614,729),42197=>array(-3,0,614,729),42198=>array(56,-14,693,742),42199=>array(98,0,677,729),42200=>array(-21,0,558,729),42201=>array(0,-14,414,729),42202=>array(56,-14,644,742),42203=>array(56,-14,644,742),42204=>array(45,0,640,729),42205=>array(98,0,517,729),42206=>array(98,0,517,729),42207=>array(98,0,765,729),42208=>array(98,0,650,729),42209=>array(98,0,552,729),42210=>array(66,-14,579,742),42211=>array(98,0,666,729),42212=>array(29,0,597,729),42213=>array(8,0,676,729),42214=>array(8,0,676,729),42215=>array(98,0,654,729),42216=>array(80,-14,716,742),42217=>array(98,0,512,743),42218=>array(33,0,956,729),42219=>array(30,0,654,729),42220=>array(-2,0,613,729),42221=>array(71,0,588,729),42222=>array(8,0,676,729),42223=>array(8,0,676,729),42224=>array(98,0,568,729),42225=>array(64,0,534,729),42226=>array(98,0,197,729),42227=>array(56,-14,731,742),42228=>array(87,-14,645,729),42229=>array(87,0,645,743),42230=>array(4,0,458,729),42231=>array(56,0,669,729),42232=>array(85,0,214,155),42233=>array(71,-156,214,155),42234=>array(85,0,511,155),42235=>array(85,-156,511,155),42236=>array(71,-156,214,517),42237=>array(85,0,214,517),42238=>array(85,0,502,354),42239=>array(85,172,502,454),42564=>array(56,-14,569,742),42565=>array(49,-14,467,560),42566=>array(98,0,347,729),42567=>array(81,0,304,547),42572=>array(58,-14,1122,645),42573=>array(74,-14,954,471),42576=>array(29,0,931,729),42577=>array(30,0,817,560),42580=>array(56,-14,977,742),42581=>array(55,-14,748,560),42582=>array(103,0,968,729),42583=>array(94,-14,752,560),42594=>array(49,-157,1004,729),42595=>array(52,-138,863,547),42596=>array(41,0,1008,729),42597=>array(37,0,852,547),42598=>array(98,0,1120,729),42599=>array(91,0,959,547),42600=>array(56,-14,731,742),42601=>array(55,-14,557,560),42602=>array(56,-14,799,742),42603=>array(55,-14,658,560),42604=>array(56,-14,1302,742),42605=>array(55,-14,964,560),42606=>array(28,-208,851,743),42634=>array(-3,-200,758,729),42635=>array(29,-208,660,547),42636=>array(-3,0,614,729),42637=>array(29,0,553,547),42644=>array(85,0,587,729),42645=>array(91,0,549,760),42760=>array(104,0,389,668),42761=>array(104,0,389,668),42762=>array(104,0,389,668),42763=>array(104,0,389,668),42764=>array(104,0,389,668),42765=>array(104,0,389,668),42766=>array(104,0,389,668),42767=>array(104,0,389,668),42768=>array(104,0,389,668),42769=>array(104,0,389,668),42770=>array(104,0,389,668),42771=>array(104,0,389,668),42772=>array(104,0,389,668),42773=>array(104,0,389,668),42774=>array(104,0,389,668),42779=>array(50,326,319,736),42780=>array(50,324,319,734),42781=>array(95,326,158,734),42782=>array(95,326,158,734),42783=>array(95,0,158,408),42786=>array(67,0,350,729),42787=>array(67,0,321,547),42788=>array(56,224,411,742),42789=>array(56,42,411,560),42790=>array(98,-200,654,729),42791=>array(91,-208,549,760),42792=>array(-3,-213,819,729),42793=>array(27,-213,650,702),42794=>array(80,-14,560,742),42795=>array(65,-200,473,561),42800=>array(91,0,437,547),42801=>array(54,-14,472,560),42802=>array(8,0,1241,729),42803=>array(60,-14,894,560),42804=>array(8,-14,1147,742),42805=>array(60,-14,935,560),42806=>array(8,-14,1055,729),42807=>array(60,-14,890,560),42808=>array(8,0,963,729),42809=>array(60,-14,788,560),42810=>array(8,0,963,729),42811=>array(60,-14,788,560),42812=>array(8,-208,951,729),42813=>array(60,-208,788,560),42814=>array(56,-14,644,742),42815=>array(62,-14,495,560),42816=>array(5,0,677,729),42817=>array(7,0,580,760),42822=>array(98,0,675,729),42823=>array(94,0,298,760),42824=>array(41,0,576,729),42825=>array(59,0,368,760),42826=>array(5,-14,802,742),42827=>array(5,-14,694,560),42830=>array(56,-14,1302,742),42831=>array(55,-14,964,560),42832=>array(5,0,569,729),42833=>array(-2,-208,580,560),42834=>array(24,0,700,729),42835=>array(24,-208,720,560),42838=>array(56,-178,731,742),42839=>array(55,-208,637,560),42852=>array(5,0,569,729),42853=>array(-2,-208,580,760),42854=>array(5,0,569,729),42855=>array(-2,-208,580,760),42880=>array(5,0,459,729),42881=>array(94,-208,184,560),42882=>array(98,-208,637,742),42883=>array(91,-208,549,560),42889=>array(117,0,220,517),42890=>array(78,161,298,380),42891=>array(151,235,250,729),42892=>array(96,458,179,729),42893=>array(85,0,587,729),42894=>array(38,-208,416,760),42896=>array(98,-157,733,729),42897=>array(91,-138,621,560),42912=>array(2,-14,778,742),42913=>array(2,-208,633,560),42914=>array(2,0,677,729),42915=>array(2,0,577,760),42916=>array(2,0,746,729),42917=>array(2,0,633,560),42918=>array(2,0,693,729),42919=>array(2,0,411,560),42920=>array(2,-14,633,742),42921=>array(2,-14,519,560),42922=>array(-51,0,703,729),43002=>array(91,0,824,547),43003=>array(58,0,477,729),43004=>array(34,0,505,729),43005=>array(98,0,765,729),43006=>array(98,0,197,928),43007=>array(33,0,1167,729),61184=>array(95,602,323,668),61185=>array(69,451,342,668),61186=>array(54,301,361,668),61187=>array(47,150,368,668),61188=>array(44,0,372,668),61189=>array(69,451,342,668),61190=>array(95,451,323,518),61191=>array(69,301,342,518),61192=>array(54,150,361,518),61193=>array(47,0,368,518),61194=>array(54,301,361,668),61195=>array(69,301,342,518),61196=>array(95,301,323,367),61197=>array(69,150,342,367),61198=>array(54,0,361,367),61199=>array(47,150,368,668),61200=>array(54,150,361,518),61201=>array(69,150,342,367),61202=>array(95,150,323,217),61203=>array(69,0,342,217),61204=>array(44,0,372,668),61205=>array(47,0,368,518),61206=>array(54,0,361,367),61207=>array(69,0,342,217),61208=>array(95,0,323,66),61209=>array(104,0,171,668),61440=>array(73,0,903,732),61441=>array(73,0,903,732),61442=>array(73,0,903,732),61443=>array(73,0,903,732),62464=>array(54,-15,526,828),62465=>array(54,-15,526,828),62466=>array(54,-15,570,837),62467=>array(54,0,835,837),62468=>array(54,-15,526,837),62469=>array(54,-15,526,837),62470=>array(54,-15,599,837),62471=>array(54,-15,828,837),62472=>array(54,0,501,837),62473=>array(54,-15,526,828),62474=>array(54,0,1115,837),62475=>array(54,-15,525,837),62476=>array(63,-15,536,828),62477=>array(54,0,815,837),62478=>array(54,-15,526,828),62479=>array(54,-15,526,844),62480=>array(54,0,860,837),62481=>array(63,-15,536,828),62482=>array(54,-15,677,837),62483=>array(24,-15,519,837),62484=>array(54,-15,818,837),62485=>array(54,-15,526,828),62486=>array(54,-15,841,837),62487=>array(54,-15,525,829),62488=>array(54,-15,525,837),62489=>array(64,0,536,837),62490=>array(55,-15,595,828),62491=>array(54,-15,525,828),62492=>array(64,-15,536,837),62493=>array(54,-15,545,828),62494=>array(63,-15,536,828),62495=>array(24,-15,492,837),62496=>array(54,-15,526,837),62497=>array(59,-15,530,837),62498=>array(54,-79,526,837),62499=>array(54,-15,525,838),62500=>array(54,-15,532,838),62501=>array(54,-15,594,837),62502=>array(54,-15,901,838),62504=>array(60,-235,872,816),62505=>array(49,-230,759,853),62506=>array(49,-15,459,765),62507=>array(49,-15,459,777),62508=>array(49,-15,459,875),62509=>array(49,-15,459,818),62510=>array(49,-15,459,887),62511=>array(49,-15,459,809),62512=>array(49,-236,449,765),62513=>array(49,-236,449,799),62514=>array(49,-236,449,901),62515=>array(49,-236,449,809),62516=>array(49,0,469,765),62517=>array(49,0,469,799),62518=>array(49,0,469,809),62519=>array(49,-0,737,765),62520=>array(49,-0,737,777),62521=>array(49,-0,737,895),62522=>array(49,-0,737,799),62523=>array(49,-0,737,809),62524=>array(29,-236,488,765),62525=>array(29,-236,488,777),62526=>array(29,-236,488,904),62527=>array(29,-236,488,799),62528=>array(29,-236,488,809),62529=>array(29,-236,488,852),63173=>array(55,-14,557,760),64256=>array(23,0,708,760),64257=>array(23,0,536,760),64258=>array(23,0,536,760),64259=>array(23,0,873,760),64260=>array(23,0,873,760),64261=>array(23,0,662,760),64262=>array(54,-14,837,742),64275=>array(83,-14,1111,760),64276=>array(85,-14,1111,760),64277=>array(85,-208,1111,760),64278=>array(85,-208,1111,760),64279=>array(85,-208,1451,760),64285=>array(66,44,157,547),64286=>array(167,625,473,765),64287=>array(36,44,329,547),64288=>array(38,0,562,547),64289=>array(85,0,772,547),64290=>array(43,0,717,547),64291=>array(91,0,764,547),64292=>array(43,0,716,547),64293=>array(43,0,716,760),64294=>array(91,0,764,547),64295=>array(43,0,716,547),64296=>array(47,-4,716,547),64297=>array(106,272,732,627),64298=>array(43,0,666,698),64299=>array(38,0,666,698),64300=>array(43,0,666,698),64301=>array(43,0,666,698),64302=>array(91,-159,578,547),64303=>array(91,-193,578,547),64304=>array(91,-159,578,547),64305=>array(43,0,535,547),64306=>array(43,-5,383,547),64307=>array(43,0,511,547),64308=>array(91,0,563,547),64309=>array(43,0,265,547),64310=>array(43,0,363,547),64312=>array(90,-14,593,552),64313=>array(43,204,264,547),64314=>array(43,-208,446,547),64315=>array(43,0,474,547),64316=>array(43,0,492,729),64318=>array(43,0,588,555),64320=>array(43,0,309,547),64321=>array(90,-14,593,547),64323=>array(91,-208,549,547),64324=>array(91,0,569,547),64326=>array(43,0,502,547),64327=>array(91,-208,633,546),64328=>array(43,0,474,547),64329=>array(43,0,666,547),64330=>array(10,-4,566,547),64331=>array(91,0,182,698),64332=>array(43,0,535,698),64333=>array(43,0,474,698),64334=>array(91,0,569,698),64335=>array(43,0,571,760),64338=>array(63,-244,865,327),64339=>array(63,-244,992,327),64340=>array(-10,-244,191,293),64341=>array(-10,-244,312,293),64342=>array(63,-244,865,327),64343=>array(63,-244,992,327),64344=>array(-10,-244,244,293),64345=>array(-10,-244,312,293),64346=>array(63,-244,865,327),64347=>array(63,-244,992,327),64348=>array(-10,-244,244,293),64349=>array(-10,-244,312,293),64350=>array(63,-10,865,513),64351=>array(63,-10,992,513),64352=>array(-10,0,191,610),64353=>array(-10,0,312,610),64354=>array(63,-10,865,513),64355=>array(63,-10,992,513),64356=>array(-10,0,244,610),64357=>array(-10,0,312,610),64358=>array(63,-10,865,575),64359=>array(63,-10,992,575),64360=>array(-10,0,273,672),64361=>array(-10,0,312,672),64362=>array(63,-45,952,757),64363=>array(63,-44,1045,659),64364=>array(-10,0,406,757),64365=>array(-10,0,516,684),64366=>array(63,-45,952,757),64367=>array(63,-44,1045,659),64368=>array(-10,0,406,757),64369=>array(-10,0,516,684),64370=>array(77,-244,645,425),64371=>array(77,-244,655,425),64372=>array(-10,-220,545,398),64373=>array(-10,-220,655,398),64374=>array(77,-244,645,425),64375=>array(77,-244,655,425),64376=>array(-10,-98,545,398),64377=>array(-10,-98,655,398),64378=>array(77,-244,645,425),64379=>array(77,-244,655,425),64380=>array(-10,-220,545,398),64381=>array(-10,-220,655,398),64382=>array(77,-244,645,425),64383=>array(77,-244,655,425),64384=>array(-10,-220,545,398),64385=>array(-10,-220,655,398),64386=>array(61,-146,388,415),64387=>array(61,-146,535,415),64388=>array(61,-19,388,586),64389=>array(61,-19,535,586),64390=>array(61,-19,388,708),64391=>array(61,-19,535,708),64392=>array(61,-19,388,746),64393=>array(61,-19,535,746),64394=>array(-42,-244,439,586),64395=>array(-42,-244,562,586),64396=>array(-42,-244,469,648),64397=>array(-42,-244,562,648),64398=>array(63,-43,895,760),64399=>array(63,-43,981,760),64400=>array(-10,0,476,760),64401=>array(-10,0,562,760),64402=>array(63,-43,895,896),64403=>array(63,-43,981,896),64404=>array(-10,0,476,896),64405=>array(-10,0,562,896),64406=>array(63,-293,895,896),64407=>array(63,-293,981,896),64408=>array(-10,-269,476,896),64409=>array(-10,-269,562,896),64410=>array(63,-43,895,903),64411=>array(63,-43,981,903),64412=>array(-10,0,476,903),64413=>array(-10,0,562,903),64414=>array(72,-162,660,366),64415=>array(72,-244,771,284),64416=>array(72,-162,660,636),64417=>array(72,-244,771,514),64418=>array(-10,0,273,672),64419=>array(-10,0,312,672),64426=>array(70,-33,638,487),64427=>array(70,-244,642,333),64428=>array(-10,-33,467,487),64429=>array(-10,-244,471,333),64467=>array(70,-27,722,854),64468=>array(70,-27,853,854),64469=>array(-10,0,476,928),64470=>array(-10,0,562,928),64473=>array(-42,-244,406,556),64474=>array(-42,-244,526,556),64488=>array(-10,0,191,293),64489=>array(-10,0,312,293),64508=>array(63,-131,719,411),64509=>array(63,-133,843,251),64510=>array(-10,-146,244,293),64511=>array(-10,-146,312,293),65024=>array(-445,752,0,929),65025=>array(-445,752,0,929),65026=>array(-445,752,0,929),65027=>array(-445,752,0,929),65028=>array(-445,752,0,929),65029=>array(-445,752,0,929),65030=>array(-445,752,0,929),65031=>array(-445,752,0,929),65032=>array(-445,752,0,929),65033=>array(-445,752,0,929),65034=>array(-445,752,0,929),65035=>array(-445,752,0,929),65036=>array(-445,752,0,929),65037=>array(-445,752,0,929),65038=>array(-445,752,0,929),65039=>array(-445,752,0,929),65056=>array(-445,752,0,929),65057=>array(0,752,445,929),65058=>array(-354,756,0,894),65059=>array(0,756,354,894),65136=>array(4,591,289,825),65137=>array(-10,0,303,825),65138=>array(4,591,289,874),65139=>array(51,0,271,177),65140=>array(4,-239,289,-5),65142=>array(4,591,289,708),65143=>array(-10,0,303,708),65144=>array(4,590,289,874),65145=>array(-10,0,303,874),65146=>array(4,-137,289,-20),65147=>array(-10,-137,303,90),65148=>array(-6,599,299,869),65149=>array(-10,0,303,869),65150=>array(12,610,279,878),65151=>array(-10,0,303,878),65152=>array(80,42,390,483),65153=>array(-37,0,315,939),65154=>array(-37,0,315,939),65155=>array(53,0,220,1028),65156=>array(53,0,314,1028),65157=>array(-42,-244,406,588),65158=>array(-42,-244,526,588),65159=>array(53,-244,220,760),65160=>array(53,-244,314,760),65161=>array(63,-131,719,588),65162=>array(63,-133,843,466),65163=>array(-10,0,227,613),65164=>array(-10,0,312,613),65165=>array(94,0,184,760),65166=>array(94,0,314,760),65167=>array(63,-171,865,327),65168=>array(63,-171,992,327),65169=>array(-10,-146,191,293),65170=>array(-10,-146,312,293),65171=>array(68,-28,453,513),65172=>array(71,0,546,513),65173=>array(63,-10,865,391),65174=>array(63,-10,992,391),65175=>array(-10,0,244,488),65176=>array(-10,0,312,488),65177=>array(63,-10,865,513),65178=>array(63,-10,992,513),65179=>array(-10,0,244,610),65180=>array(-10,0,312,610),65181=>array(77,-244,645,425),65182=>array(77,-244,655,425),65183=>array(-10,-146,545,398),65184=>array(-10,-146,655,398),65185=>array(77,-244,645,425),65186=>array(77,-244,655,425),65187=>array(-10,0,545,398),65188=>array(-10,0,655,398),65189=>array(77,-244,645,586),65190=>array(77,-244,655,586),65191=>array(-10,0,545,537),65192=>array(-10,0,655,537),65193=>array(61,-19,388,415),65194=>array(61,-19,535,415),65195=>array(61,-19,388,586),65196=>array(61,-19,535,586),65197=>array(-42,-244,423,269),65198=>array(-42,-244,562,269),65199=>array(-42,-244,423,464),65200=>array(-42,-244,562,464),65201=>array(63,-244,1138,366),65202=>array(63,-244,1285,366),65203=>array(-10,-14,755,366),65204=>array(-10,-14,902,366),65205=>array(63,-244,1138,586),65206=>array(63,-244,1285,586),65207=>array(-10,-14,755,586),65208=>array(-10,-14,902,586),65209=>array(63,-244,1134,362),65210=>array(63,-244,1235,362),65211=>array(-10,0,774,362),65212=>array(-10,0,877,362),65213=>array(63,-244,1134,464),65214=>array(63,-244,1235,464),65215=>array(-10,0,774,464),65216=>array(-10,0,877,464),65217=>array(70,0,857,760),65218=>array(70,0,959,760),65219=>array(-10,0,729,760),65220=>array(-10,0,830,760),65221=>array(70,0,857,760),65222=>array(70,0,959,760),65223=>array(-10,0,729,760),65224=>array(-10,0,830,760),65225=>array(57,-244,587,521),65226=>array(57,-244,587,382),65227=>array(-10,0,496,521),65228=>array(-10,0,492,382),65229=>array(57,-244,587,659),65230=>array(57,-244,587,537),65231=>array(-10,0,496,659),65232=>array(-10,0,492,537),65233=>array(63,-45,952,635),65234=>array(63,-44,1045,537),65235=>array(-10,0,406,635),65236=>array(-10,0,516,562),65237=>array(52,-215,701,635),65238=>array(52,-244,844,500),65239=>array(-10,0,406,635),65240=>array(-10,0,516,562),65241=>array(70,-27,722,760),65242=>array(70,-27,853,760),65243=>array(-10,0,476,760),65244=>array(-10,0,562,760),65245=>array(70,-152,637,760),65246=>array(70,-152,767,760),65247=>array(-10,0,210,760),65248=>array(-10,0,341,760),65249=>array(68,-240,546,369),65250=>array(68,-240,675,307),65251=>array(-10,-25,456,303),65252=>array(-10,-24,588,303),65253=>array(72,-162,660,464),65254=>array(72,-244,771,342),65255=>array(-10,0,191,488),65256=>array(-10,0,312,488),65257=>array(68,-28,453,358),65258=>array(71,0,546,366),65259=>array(-10,-33,467,487),65260=>array(-10,-244,471,333),65261=>array(-42,-244,406,315),65262=>array(-42,-244,526,315),65263=>array(63,-131,719,411),65264=>array(63,-133,843,251),65265=>array(63,-244,719,411),65266=>array(63,-244,843,251),65267=>array(-10,-146,244,293),65268=>array(-10,-146,312,293),65269=>array(-103,-10,468,866),65270=>array(-103,-10,606,866),65271=>array(-13,-10,468,955),65272=>array(-13,-10,606,955),65273=>array(11,-244,468,760),65274=>array(11,-244,606,760),65275=>array(41,-10,468,760),65276=>array(41,-10,606,760),65279=>array(15,-84,1011,912),65529=>array(15,-84,1011,912),65530=>array(15,-84,1011,912),65531=>array(15,-84,1011,912),65532=>array(15,-84,1011,912),65533=>array(15,-84,1011,912),65535=>array(50,-177,550,705));
15
- $cw=array(0=>600,32=>318,33=>401,34=>460,35=>838,36=>636,37=>950,38=>780,39=>275,40=>390,41=>390,42=>500,43=>838,44=>318,45=>361,46=>318,47=>337,48=>636,49=>636,50=>636,51=>636,52=>636,53=>636,54=>636,55=>636,56=>636,57=>636,58=>337,59=>337,60=>838,61=>838,62=>838,63=>531,64=>1000,65=>684,66=>686,67=>698,68=>770,69=>632,70=>575,71=>775,72=>752,73=>295,74=>295,75=>656,76=>557,77=>863,78=>748,79=>787,80=>603,81=>787,82=>695,83=>635,84=>611,85=>732,86=>684,87=>989,88=>685,89=>611,90=>685,91=>390,92=>337,93=>390,94=>838,95=>500,96=>500,97=>613,98=>635,99=>550,100=>635,101=>615,102=>352,103=>635,104=>634,105=>278,106=>278,107=>579,108=>278,109=>974,110=>634,111=>612,112=>635,113=>635,114=>411,115=>521,116=>392,117=>634,118=>592,119=>818,120=>592,121=>592,122=>525,123=>636,124=>337,125=>636,126=>838,160=>318,161=>401,162=>636,163=>636,164=>636,165=>636,166=>337,167=>500,168=>500,169=>1000,170=>471,171=>612,172=>838,173=>361,174=>1000,175=>500,176=>500,177=>838,178=>401,179=>401,180=>500,181=>636,182=>636,183=>318,184=>500,185=>401,186=>471,187=>612,188=>969,189=>969,190=>969,191=>531,192=>684,193=>684,194=>684,195=>684,196=>684,197=>684,198=>974,199=>698,200=>632,201=>632,202=>632,203=>632,204=>295,205=>295,206=>295,207=>295,208=>775,209=>748,210=>787,211=>787,212=>787,213=>787,214=>787,215=>838,216=>787,217=>732,218=>732,219=>732,220=>732,221=>611,222=>605,223=>630,224=>613,225=>613,226=>613,227=>613,228=>613,229=>613,230=>982,231=>550,232=>615,233=>615,234=>615,235=>615,236=>278,237=>278,238=>278,239=>278,240=>612,241=>634,242=>612,243=>612,244=>612,245=>612,246=>612,247=>838,248=>612,249=>634,250=>634,251=>634,252=>634,253=>592,254=>635,255=>592,256=>684,257=>613,258=>684,259=>613,260=>684,261=>613,262=>698,263=>550,264=>698,265=>550,266=>698,267=>550,268=>698,269=>550,270=>770,271=>635,272=>775,273=>635,274=>632,275=>615,276=>632,277=>615,278=>632,279=>615,280=>632,281=>615,282=>632,283=>615,284=>775,285=>635,286=>775,287=>635,288=>775,289=>635,290=>775,291=>635,292=>752,293=>634,294=>916,295=>695,296=>295,297=>278,298=>295,299=>278,300=>295,301=>278,302=>295,303=>278,304=>295,305=>278,306=>590,307=>556,308=>295,309=>278,310=>656,311=>579,312=>579,313=>557,314=>278,315=>557,316=>278,317=>557,318=>375,319=>557,320=>342,321=>562,322=>284,323=>748,324=>634,325=>748,326=>634,327=>748,328=>634,329=>813,330=>748,331=>634,332=>787,333=>612,334=>787,335=>612,336=>787,337=>612,338=>1070,339=>1023,340=>695,341=>411,342=>695,343=>411,344=>695,345=>411,346=>635,347=>521,348=>635,349=>521,350=>635,351=>521,352=>635,353=>521,354=>611,355=>392,356=>611,357=>392,358=>611,359=>392,360=>732,361=>634,362=>732,363=>634,364=>732,365=>634,366=>732,367=>634,368=>732,369=>634,370=>732,371=>634,372=>989,373=>818,374=>611,375=>592,376=>611,377=>685,378=>525,379=>685,380=>525,381=>685,382=>525,383=>352,384=>635,385=>735,386=>686,387=>635,388=>686,389=>635,390=>703,391=>698,392=>550,393=>775,394=>819,395=>686,396=>635,397=>612,398=>632,399=>787,400=>614,401=>575,402=>352,403=>775,404=>687,405=>984,406=>354,407=>295,408=>746,409=>579,410=>278,411=>592,412=>974,413=>748,414=>634,415=>787,416=>913,417=>612,418=>949,419=>759,420=>652,421=>635,422=>695,423=>635,424=>521,425=>632,426=>336,427=>392,428=>611,429=>392,430=>611,431=>858,432=>634,433=>764,434=>721,435=>744,436=>730,437=>685,438=>525,439=>666,440=>666,441=>578,442=>525,443=>636,444=>666,445=>578,446=>510,447=>635,448=>295,449=>492,450=>459,451=>295,452=>1422,453=>1299,454=>1154,455=>835,456=>787,457=>457,458=>931,459=>924,460=>797,461=>684,462=>613,463=>295,464=>278,465=>787,466=>612,467=>732,468=>634,469=>732,470=>634,471=>732,472=>634,473=>732,474=>634,475=>732,476=>634,477=>615,478=>684,479=>613,480=>684,481=>613,482=>974,483=>982,484=>775,485=>635,486=>775,487=>635,488=>656,489=>579,490=>787,491=>612,492=>787,493=>612,494=>666,495=>578,496=>278,497=>1422,498=>1299,499=>1154,500=>775,501=>635,502=>1113,503=>682,504=>748,505=>634,506=>684,507=>613,508=>974,509=>982,510=>787,511=>612,512=>684,513=>613,514=>684,515=>613,516=>632,517=>615,518=>632,519=>615,520=>295,521=>278,522=>295,523=>278,524=>787,525=>612,526=>787,527=>612,528=>695,529=>411,530=>695,531=>411,532=>732,533=>634,534=>732,535=>634,536=>635,537=>521,538=>611,539=>392,540=>627,541=>521,542=>752,543=>634,544=>735,545=>838,546=>698,547=>610,548=>685,549=>525,550=>684,551=>613,552=>632,553=>615,554=>787,555=>612,556=>787,557=>612,558=>787,559=>612,560=>787,561=>612,562=>611,563=>592,564=>475,565=>843,566=>477,567=>278,568=>998,569=>998,570=>684,571=>698,572=>550,573=>557,574=>611,575=>521,576=>525,577=>603,578=>479,579=>686,580=>732,581=>684,582=>632,583=>615,584=>295,585=>278,586=>781,587=>635,588=>695,589=>411,590=>611,591=>592,592=>600,593=>635,594=>635,595=>635,596=>549,597=>550,598=>635,599=>696,600=>615,601=>615,602=>819,603=>541,604=>532,605=>775,606=>664,607=>278,608=>696,609=>635,610=>629,611=>596,612=>596,613=>634,614=>634,615=>634,616=>278,617=>338,618=>372,619=>396,620=>487,621=>278,622=>706,623=>974,624=>974,625=>974,626=>646,627=>642,628=>634,629=>612,630=>858,631=>728,632=>660,633=>414,634=>414,635=>414,636=>411,637=>411,638=>530,639=>530,640=>604,641=>604,642=>521,643=>336,644=>336,645=>461,646=>336,647=>392,648=>392,649=>634,650=>618,651=>598,652=>592,653=>818,654=>592,655=>611,656=>525,657=>525,658=>578,659=>578,660=>510,661=>510,662=>510,663=>510,664=>787,665=>580,666=>664,667=>708,668=>654,669=>292,670=>667,671=>507,672=>727,673=>510,674=>510,675=>1014,676=>1058,677=>1013,678=>830,679=>610,680=>778,681=>848,682=>706,683=>654,684=>515,685=>515,686=>661,687=>664,688=>404,689=>399,690=>175,691=>259,692=>295,693=>296,694=>379,695=>515,696=>373,697=>278,698=>460,699=>318,700=>318,701=>318,702=>307,703=>307,704=>370,705=>370,706=>500,707=>500,708=>500,709=>500,710=>500,711=>500,712=>275,713=>500,714=>500,715=>500,716=>275,717=>500,718=>500,719=>500,720=>337,721=>337,722=>307,723=>307,724=>500,725=>500,726=>390,727=>317,728=>500,729=>500,730=>500,731=>500,732=>500,733=>500,734=>315,735=>500,736=>426,737=>166,738=>373,739=>444,740=>370,741=>493,742=>493,743=>493,744=>493,745=>493,748=>500,749=>500,750=>518,755=>500,759=>500,768=>0,769=>0,770=>0,771=>0,772=>0,773=>0,774=>0,775=>0,776=>0,777=>0,778=>0,779=>0,780=>0,781=>0,782=>0,783=>0,784=>0,785=>0,786=>0,787=>0,788=>0,789=>0,790=>0,791=>0,792=>0,793=>0,794=>0,795=>0,796=>0,797=>0,798=>0,799=>0,800=>0,801=>0,802=>0,803=>0,804=>0,805=>0,806=>0,807=>0,808=>0,809=>0,810=>0,811=>0,812=>0,813=>0,814=>0,815=>0,816=>0,817=>0,818=>0,819=>0,820=>0,821=>0,822=>0,823=>0,824=>0,825=>0,826=>0,827=>0,828=>0,829=>0,830=>0,831=>0,832=>0,833=>0,834=>0,835=>0,836=>0,837=>0,838=>0,839=>0,840=>0,841=>0,842=>0,843=>0,844=>0,845=>0,846=>0,847=>0,849=>0,850=>0,851=>0,855=>0,856=>0,858=>0,860=>0,861=>0,862=>0,863=>0,864=>0,865=>0,866=>0,880=>654,881=>568,882=>862,883=>647,884=>278,885=>278,886=>748,887=>650,890=>500,891=>549,892=>550,893=>549,894=>337,900=>500,901=>500,902=>692,903=>318,904=>746,905=>871,906=>408,908=>813,910=>825,911=>826,912=>338,913=>684,914=>686,915=>557,916=>684,917=>632,918=>685,919=>752,920=>787,921=>295,922=>656,923=>684,924=>863,925=>748,926=>632,927=>787,928=>752,929=>603,931=>632,932=>611,933=>611,934=>787,935=>685,936=>787,937=>764,938=>295,939=>611,940=>659,941=>541,942=>634,943=>338,944=>579,945=>659,946=>638,947=>592,948=>612,949=>541,950=>544,951=>634,952=>612,953=>338,954=>589,955=>592,956=>636,957=>559,958=>558,959=>612,960=>602,961=>635,962=>587,963=>634,964=>602,965=>579,966=>660,967=>578,968=>660,969=>837,970=>338,971=>579,972=>612,973=>579,974=>837,975=>656,976=>614,977=>619,978=>699,979=>842,980=>699,981=>660,982=>837,983=>664,984=>787,985=>612,986=>648,987=>587,988=>575,989=>458,990=>660,991=>660,992=>865,993=>627,994=>934,995=>837,996=>758,997=>659,998=>792,999=>615,1000=>687,1001=>607,1002=>768,1003=>625,1004=>699,1005=>612,1006=>611,1007=>536,1008=>664,1009=>635,1010=>550,1011=>278,1012=>787,1013=>615,1014=>615,1015=>605,1016=>635,1017=>698,1018=>863,1019=>651,1020=>635,1021=>703,1022=>698,1023=>703,1024=>632,1025=>632,1026=>786,1027=>610,1028=>698,1029=>635,1030=>295,1031=>295,1032=>295,1033=>1094,1034=>1045,1035=>786,1036=>710,1037=>748,1038=>609,1039=>752,1040=>684,1041=>686,1042=>686,1043=>610,1044=>781,1045=>632,1046=>1077,1047=>641,1048=>748,1049=>748,1050=>710,1051=>752,1052=>863,1053=>752,1054=>787,1055=>752,1056=>603,1057=>698,1058=>611,1059=>609,1060=>861,1061=>685,1062=>776,1063=>686,1064=>1069,1065=>1094,1066=>833,1067=>882,1068=>686,1069=>698,1070=>1080,1071=>695,1072=>613,1073=>617,1074=>589,1075=>525,1076=>691,1077=>615,1078=>901,1079=>532,1080=>650,1081=>650,1082=>604,1083=>639,1084=>754,1085=>654,1086=>612,1087=>654,1088=>635,1089=>550,1090=>583,1091=>592,1092=>855,1093=>592,1094=>681,1095=>591,1096=>915,1097=>942,1098=>707,1099=>790,1100=>589,1101=>549,1102=>842,1103=>602,1104=>615,1105=>615,1106=>625,1107=>525,1108=>549,1109=>521,1110=>278,1111=>278,1112=>278,1113=>902,1114=>898,1115=>652,1116=>604,1117=>650,1118=>592,1119=>654,1120=>934,1121=>837,1122=>771,1123=>672,1124=>942,1125=>749,1126=>879,1127=>783,1128=>1160,1129=>1001,1130=>787,1131=>612,1132=>1027,1133=>824,1134=>636,1135=>541,1136=>856,1137=>876,1138=>787,1139=>612,1140=>781,1141=>665,1142=>781,1143=>665,1144=>992,1145=>904,1146=>953,1147=>758,1148=>1180,1149=>1028,1150=>934,1151=>837,1152=>698,1153=>550,1154=>502,1155=>0,1156=>0,1157=>0,1158=>0,1159=>0,1160=>418,1161=>418,1162=>772,1163=>677,1164=>686,1165=>589,1166=>603,1167=>635,1168=>610,1169=>525,1170=>675,1171=>590,1172=>624,1173=>530,1174=>1077,1175=>901,1176=>641,1177=>532,1178=>710,1179=>604,1180=>710,1181=>604,1182=>710,1183=>604,1184=>856,1185=>832,1186=>752,1187=>661,1188=>1014,1189=>877,1190=>1081,1191=>916,1192=>878,1193=>693,1194=>698,1195=>550,1196=>611,1197=>583,1198=>611,1199=>592,1200=>611,1201=>592,1202=>685,1203=>592,1204=>934,1205=>807,1206=>686,1207=>591,1208=>686,1209=>591,1210=>686,1211=>634,1212=>941,1213=>728,1214=>941,1215=>728,1216=>295,1217=>1077,1218=>901,1219=>656,1220=>604,1221=>776,1222=>670,1223=>752,1224=>661,1225=>776,1226=>681,1227=>686,1228=>591,1229=>888,1230=>774,1231=>278,1232=>684,1233=>613,1234=>684,1235=>613,1236=>974,1237=>982,1238=>632,1239=>615,1240=>787,1241=>615,1242=>787,1243=>615,1244=>1077,1245=>901,1246=>641,1247=>532,1248=>666,1249=>578,1250=>748,1251=>650,1252=>748,1253=>650,1254=>787,1255=>612,1256=>787,1257=>612,1258=>787,1259=>612,1260=>698,1261=>549,1262=>609,1263=>592,1264=>609,1265=>592,1266=>609,1267=>592,1268=>686,1269=>591,1270=>610,1271=>525,1272=>882,1273=>790,1274=>675,1275=>590,1276=>685,1277=>592,1278=>685,1279=>592,1280=>686,1281=>589,1282=>1006,1283=>897,1284=>975,1285=>869,1286=>679,1287=>588,1288=>1072,1289=>957,1290=>1113,1291=>967,1292=>775,1293=>660,1294=>773,1295=>711,1296=>614,1297=>541,1298=>752,1299=>639,1300=>1169,1301=>994,1302=>894,1303=>864,1304=>1032,1305=>986,1306=>787,1307=>635,1308=>989,1309=>818,1310=>710,1311=>604,1312=>1081,1313=>905,1314=>1081,1315=>912,1316=>793,1317=>683,1329=>766,1330=>732,1331=>753,1332=>753,1333=>732,1334=>772,1335=>640,1336=>732,1337=>859,1338=>753,1339=>691,1340=>533,1341=>922,1342=>863,1343=>732,1344=>716,1345=>766,1346=>753,1347=>767,1348=>792,1349=>728,1350=>729,1351=>757,1352=>732,1353=>713,1354=>800,1355=>768,1356=>792,1357=>732,1358=>753,1359=>705,1360=>694,1361=>744,1362=>538,1363=>811,1364=>757,1365=>787,1366=>790,1369=>307,1370=>318,1371=>234,1372=>361,1373=>238,1374=>405,1375=>500,1377=>974,1378=>634,1379=>658,1380=>663,1381=>634,1382=>635,1383=>515,1384=>634,1385=>738,1386=>658,1387=>634,1388=>271,1389=>980,1390=>623,1391=>634,1392=>634,1393=>608,1394=>634,1395=>629,1396=>634,1397=>271,1398=>634,1399=>499,1400=>634,1401=>404,1402=>974,1403=>560,1404=>648,1405=>634,1406=>634,1407=>974,1408=>634,1409=>633,1410=>435,1411=>974,1412=>636,1413=>609,1414=>805,1415=>812,1417=>337,1418=>361,1456=>0,1457=>0,1458=>0,1459=>0,1460=>0,1461=>0,1462=>0,1463=>0,1464=>0,1465=>0,1466=>0,1467=>0,1468=>0,1469=>0,1470=>361,1471=>0,1472=>295,1473=>0,1474=>0,1475=>295,1478=>441,1479=>0,1488=>668,1489=>578,1490=>412,1491=>546,1492=>653,1493=>272,1494=>346,1495=>653,1496=>648,1497=>224,1498=>537,1499=>529,1500=>568,1501=>664,1502=>679,1503=>272,1504=>400,1505=>649,1506=>626,1507=>640,1508=>625,1509=>540,1510=>593,1511=>709,1512=>564,1513=>708,1514=>657,1520=>471,1521=>423,1522=>331,1523=>416,1524=>645,1542=>637,1543=>637,1545=>757,1546=>977,1548=>323,1557=>0,1563=>318,1567=>531,1569=>470,1570=>278,1571=>278,1572=>483,1573=>278,1574=>783,1575=>278,1576=>941,1577=>524,1578=>941,1579=>941,1580=>646,1581=>646,1582=>646,1583=>445,1584=>445,1585=>483,1586=>483,1587=>1221,1588=>1221,1589=>1209,1590=>1209,1591=>925,1592=>925,1593=>597,1594=>597,1600=>293,1601=>1037,1602=>776,1603=>824,1604=>727,1605=>619,1606=>734,1607=>524,1608=>483,1609=>783,1610=>783,1611=>0,1612=>0,1613=>0,1614=>0,1615=>0,1616=>0,1617=>0,1618=>0,1619=>0,1620=>0,1621=>0,1623=>0,1626=>500,1632=>537,1633=>537,1634=>537,1635=>537,1636=>537,1637=>537,1638=>537,1639=>537,1640=>537,1641=>537,1642=>537,1643=>325,1644=>318,1645=>545,1646=>941,1647=>776,1648=>0,1652=>292,1657=>941,1658=>941,1659=>941,1660=>941,1661=>941,1662=>941,1663=>941,1664=>941,1665=>646,1666=>646,1667=>646,1668=>646,1669=>646,1670=>646,1671=>646,1672=>445,1673=>445,1674=>445,1675=>445,1676=>445,1677=>445,1678=>445,1679=>445,1680=>445,1681=>483,1682=>483,1683=>498,1684=>530,1685=>610,1686=>530,1687=>483,1688=>483,1689=>483,1690=>1221,1691=>1221,1692=>1221,1693=>1209,1694=>1209,1695=>925,1696=>597,1697=>1037,1698=>1037,1699=>1037,1700=>1037,1701=>1037,1702=>1037,1703=>776,1704=>776,1705=>895,1706=>1054,1707=>895,1708=>824,1709=>824,1710=>824,1711=>895,1712=>895,1713=>895,1714=>895,1715=>895,1716=>895,1717=>727,1718=>727,1719=>727,1720=>727,1721=>734,1722=>734,1723=>734,1724=>734,1725=>734,1726=>698,1727=>646,1734=>483,1740=>783,1742=>783,1749=>524,1776=>537,1777=>537,1778=>537,1779=>537,1780=>537,1781=>537,1782=>537,1783=>537,1784=>537,1785=>537,1984=>636,1985=>636,1986=>636,1987=>636,1988=>636,1989=>636,1990=>636,1991=>636,1992=>636,1993=>636,1994=>278,1995=>571,1996=>424,1997=>592,1998=>654,1999=>654,2000=>594,2001=>654,2002=>829,2003=>438,2004=>438,2005=>559,2006=>612,2007=>350,2008=>959,2009=>473,2010=>783,2011=>654,2012=>625,2013=>734,2014=>530,2015=>724,2016=>473,2017=>625,2018=>594,2019=>530,2020=>530,2021=>522,2022=>594,2023=>594,2027=>0,2028=>0,2029=>0,2030=>0,2031=>0,2032=>0,2033=>0,2034=>0,2035=>0,2036=>313,2037=>313,2040=>560,2041=>560,2042=>361,3647=>636,3713=>670,3714=>684,3716=>688,3719=>482,3720=>628,3722=>684,3725=>688,3732=>669,3733=>642,3734=>645,3735=>655,3737=>659,3738=>625,3739=>625,3740=>745,3741=>767,3742=>687,3743=>687,3745=>702,3746=>688,3747=>684,3749=>649,3751=>632,3754=>703,3755=>819,3757=>633,3758=>684,3759=>788,3760=>632,3761=>0,3762=>539,3763=>539,3764=>0,3765=>0,3766=>0,3767=>0,3768=>0,3769=>0,3771=>0,3772=>0,3773=>663,3776=>375,3777=>657,3778=>460,3779=>547,3780=>491,3782=>674,3784=>0,3785=>0,3786=>0,3787=>0,3788=>0,3789=>0,3792=>636,3793=>641,3794=>641,3795=>670,3796=>625,3797=>625,3798=>703,3799=>670,3800=>674,3801=>677,3804=>1028,3805=>1028,4256=>874,4257=>733,4258=>679,4259=>834,4260=>615,4261=>768,4262=>753,4263=>914,4264=>453,4265=>620,4266=>843,4267=>882,4268=>625,4269=>854,4270=>781,4271=>629,4272=>912,4273=>621,4274=>620,4275=>854,4276=>866,4277=>724,4278=>630,4279=>621,4280=>625,4281=>620,4282=>818,4283=>874,4284=>615,4285=>623,4286=>625,4287=>725,4288=>844,4289=>596,4290=>688,4291=>596,4292=>594,4293=>738,4304=>508,4305=>518,4306=>581,4307=>818,4308=>508,4309=>513,4310=>500,4311=>801,4312=>518,4313=>510,4314=>1064,4315=>522,4316=>522,4317=>786,4318=>508,4319=>518,4320=>796,4321=>522,4322=>654,4323=>522,4324=>825,4325=>513,4326=>786,4327=>518,4328=>518,4329=>522,4330=>571,4331=>522,4332=>518,4333=>520,4334=>522,4335=>454,4336=>508,4337=>518,4338=>508,4339=>508,4340=>518,4341=>554,4342=>828,4343=>552,4344=>508,4345=>571,4346=>508,4347=>448,4348=>324,5121=>684,5122=>684,5123=>684,5124=>684,5125=>769,5126=>769,5127=>769,5129=>769,5130=>769,5131=>769,5132=>835,5133=>834,5134=>835,5135=>834,5136=>835,5137=>834,5138=>967,5139=>1007,5140=>967,5141=>1007,5142=>769,5143=>967,5144=>1007,5145=>967,5146=>1007,5147=>769,5149=>256,5150=>543,5151=>423,5152=>423,5153=>389,5154=>389,5155=>393,5156=>389,5157=>466,5158=>385,5159=>256,5160=>389,5161=>389,5162=>389,5163=>1090,5164=>909,5165=>953,5166=>1117,5167=>684,5168=>684,5169=>684,5170=>684,5171=>729,5172=>729,5173=>729,5175=>729,5176=>729,5177=>729,5178=>835,5179=>684,5180=>835,5181=>834,5182=>835,5183=>834,5184=>967,5185=>1007,5186=>967,5187=>1007,5188=>967,5189=>1007,5190=>967,5191=>1007,5192=>729,5193=>508,5194=>192,5196=>732,5197=>732,5198=>732,5199=>732,5200=>730,5201=>730,5202=>730,5204=>730,5205=>730,5206=>730,5207=>921,5208=>889,5209=>921,5210=>889,5211=>921,5212=>889,5213=>928,5214=>900,5215=>928,5216=>900,5217=>947,5218=>900,5219=>947,5220=>900,5221=>947,5222=>434,5223=>877,5224=>877,5225=>866,5226=>890,5227=>628,5228=>628,5229=>628,5230=>628,5231=>628,5232=>628,5233=>628,5234=>628,5235=>628,5236=>860,5237=>771,5238=>815,5239=>816,5240=>815,5241=>816,5242=>860,5243=>771,5244=>860,5245=>771,5246=>815,5247=>816,5248=>815,5249=>816,5250=>815,5251=>407,5252=>407,5253=>750,5254=>775,5255=>750,5256=>775,5257=>628,5258=>628,5259=>628,5260=>628,5261=>628,5262=>628,5263=>628,5264=>628,5265=>628,5266=>860,5267=>771,5268=>815,5269=>816,5270=>815,5271=>816,5272=>860,5273=>771,5274=>860,5275=>771,5276=>815,5277=>816,5278=>815,5279=>816,5280=>815,5281=>435,5282=>435,5283=>610,5284=>557,5285=>557,5286=>557,5287=>610,5288=>610,5289=>610,5290=>557,5291=>557,5292=>749,5293=>769,5294=>746,5295=>764,5296=>746,5297=>764,5298=>749,5299=>769,5300=>749,5301=>769,5302=>746,5303=>764,5304=>746,5305=>764,5306=>746,5307=>386,5308=>508,5309=>386,5312=>852,5313=>852,5314=>852,5315=>852,5316=>852,5317=>852,5318=>852,5319=>852,5320=>852,5321=>1069,5322=>1035,5323=>1059,5324=>852,5325=>1059,5326=>852,5327=>852,5328=>600,5329=>453,5330=>600,5331=>852,5332=>852,5333=>852,5334=>852,5335=>852,5336=>852,5337=>852,5338=>852,5339=>852,5340=>1069,5341=>1035,5342=>1059,5343=>1030,5344=>1059,5345=>1030,5346=>1069,5347=>1035,5348=>1069,5349=>1035,5350=>1083,5351=>1030,5352=>1083,5353=>1030,5354=>600,5356=>729,5357=>603,5358=>603,5359=>603,5360=>603,5361=>603,5362=>603,5363=>603,5364=>603,5365=>603,5366=>834,5367=>754,5368=>792,5369=>771,5370=>792,5371=>771,5372=>834,5373=>754,5374=>834,5375=>754,5376=>792,5377=>771,5378=>792,5379=>771,5380=>792,5381=>418,5382=>420,5383=>418,5392=>712,5393=>712,5394=>712,5395=>892,5396=>892,5397=>892,5398=>892,5399=>910,5400=>872,5401=>910,5402=>872,5403=>910,5404=>872,5405=>1140,5406=>1100,5407=>1140,5408=>1100,5409=>1140,5410=>1100,5411=>1140,5412=>1100,5413=>641,5414=>627,5415=>627,5416=>627,5417=>627,5418=>627,5419=>627,5420=>627,5421=>627,5422=>627,5423=>844,5424=>781,5425=>816,5426=>818,5427=>816,5428=>818,5429=>844,5430=>781,5431=>844,5432=>781,5433=>816,5434=>818,5435=>816,5436=>818,5437=>816,5438=>418,5440=>389,5441=>484,5442=>916,5443=>916,5444=>916,5445=>916,5446=>916,5447=>916,5448=>603,5449=>603,5450=>603,5451=>603,5452=>603,5453=>603,5454=>834,5455=>754,5456=>418,5458=>729,5459=>684,5460=>684,5461=>684,5462=>684,5463=>726,5464=>726,5465=>726,5466=>726,5467=>924,5468=>1007,5469=>508,5470=>732,5471=>732,5472=>732,5473=>732,5474=>732,5475=>732,5476=>730,5477=>730,5478=>730,5479=>730,5480=>947,5481=>900,5482=>508,5492=>831,5493=>831,5494=>831,5495=>831,5496=>831,5497=>831,5498=>831,5499=>563,5500=>752,5501=>484,5502=>1047,5503=>1047,5504=>1047,5505=>1047,5506=>1047,5507=>1047,5508=>1047,5509=>825,5514=>831,5515=>831,5516=>831,5517=>831,5518=>1259,5519=>1259,5520=>1259,5521=>1002,5522=>1002,5523=>1259,5524=>1259,5525=>700,5526=>1073,5536=>852,5537=>852,5538=>852,5539=>852,5540=>852,5541=>852,5542=>600,5543=>643,5544=>643,5545=>643,5546=>643,5547=>643,5548=>643,5549=>643,5550=>418,5551=>628,5598=>770,5601=>767,5702=>468,5703=>468,5742=>444,5743=>1047,5744=>1310,5745=>1632,5746=>1632,5747=>1375,5748=>1375,5749=>1632,5750=>1632,5760=>477,5761=>493,5762=>712,5763=>931,5764=>1150,5765=>1370,5766=>493,5767=>712,5768=>931,5769=>1150,5770=>1370,5771=>498,5772=>718,5773=>938,5774=>1159,5775=>1379,5776=>493,5777=>712,5778=>930,5779=>1149,5780=>1370,5781=>498,5782=>752,5783=>789,5784=>1205,5785=>1150,5786=>683,5787=>507,5788=>507,7424=>592,7425=>717,7426=>982,7427=>586,7428=>550,7429=>605,7430=>605,7431=>491,7432=>541,7433=>278,7434=>395,7435=>579,7436=>583,7437=>754,7438=>650,7439=>612,7440=>550,7441=>684,7442=>684,7443=>684,7444=>1023,7446=>612,7447=>612,7448=>524,7449=>602,7450=>602,7451=>583,7452=>574,7453=>737,7454=>948,7455=>638,7456=>592,7457=>818,7458=>525,7459=>526,7462=>583,7463=>592,7464=>564,7465=>524,7466=>590,7467=>639,7468=>431,7469=>613,7470=>432,7472=>485,7473=>398,7474=>398,7475=>488,7476=>474,7477=>186,7478=>186,7479=>413,7480=>351,7481=>543,7482=>471,7483=>471,7484=>496,7485=>439,7486=>380,7487=>438,7488=>385,7489=>461,7490=>623,7491=>392,7492=>392,7493=>405,7494=>648,7495=>428,7496=>405,7497=>417,7498=>417,7499=>360,7500=>359,7501=>405,7502=>179,7503=>426,7504=>623,7505=>409,7506=>414,7507=>370,7508=>414,7509=>414,7510=>428,7511=>295,7512=>405,7513=>470,7514=>623,7515=>417,7517=>402,7518=>373,7519=>385,7520=>416,7521=>364,7522=>179,7523=>259,7524=>405,7525=>417,7526=>402,7527=>373,7528=>412,7529=>416,7530=>364,7543=>635,7544=>474,7547=>372,7549=>667,7557=>278,7579=>405,7580=>370,7581=>370,7582=>414,7583=>360,7584=>296,7585=>233,7586=>405,7587=>405,7588=>261,7589=>250,7590=>261,7591=>261,7592=>234,7593=>250,7594=>235,7595=>376,7596=>623,7597=>623,7598=>411,7599=>479,7600=>409,7601=>414,7602=>414,7603=>360,7604=>287,7605=>295,7606=>508,7607=>418,7608=>361,7609=>406,7610=>417,7611=>366,7612=>437,7613=>366,7614=>392,7615=>414,7620=>0,7621=>0,7622=>0,7623=>0,7624=>0,7625=>0,7680=>684,7681=>613,7682=>686,7683=>635,7684=>686,7685=>635,7686=>686,7687=>635,7688=>698,7689=>550,7690=>770,7691=>635,7692=>770,7693=>635,7694=>770,7695=>635,7696=>770,7697=>635,7698=>770,7699=>635,7700=>632,7701=>615,7702=>632,7703=>615,7704=>632,7705=>615,7706=>632,7707=>615,7708=>632,7709=>615,7710=>575,7711=>352,7712=>775,7713=>635,7714=>752,7715=>634,7716=>752,7717=>634,7718=>752,7719=>634,7720=>752,7721=>634,7722=>752,7723=>634,7724=>295,7725=>278,7726=>295,7727=>278,7728=>656,7729=>579,7730=>656,7731=>579,7732=>656,7733=>579,7734=>557,7735=>288,7736=>557,7737=>288,7738=>557,7739=>278,7740=>557,7741=>278,7742=>863,7743=>974,7744=>863,7745=>974,7746=>863,7747=>974,7748=>748,7749=>634,7750=>748,7751=>634,7752=>748,7753=>634,7754=>748,7755=>634,7756=>787,7757=>612,7758=>787,7759=>612,7760=>787,7761=>612,7762=>787,7763=>612,7764=>603,7765=>635,7766=>603,7767=>635,7768=>695,7769=>411,7770=>695,7771=>411,7772=>695,7773=>411,7774=>695,7775=>411,7776=>635,7777=>521,7778=>635,7779=>521,7780=>635,7781=>521,7782=>635,7783=>521,7784=>635,7785=>521,7786=>611,7787=>392,7788=>611,7789=>392,7790=>611,7791=>392,7792=>611,7793=>392,7794=>732,7795=>634,7796=>732,7797=>634,7798=>732,7799=>634,7800=>732,7801=>634,7802=>732,7803=>634,7804=>684,7805=>592,7806=>684,7807=>592,7808=>989,7809=>818,7810=>989,7811=>818,7812=>989,7813=>818,7814=>989,7815=>818,7816=>989,7817=>818,7818=>685,7819=>592,7820=>685,7821=>592,7822=>611,7823=>592,7824=>685,7825=>525,7826=>685,7827=>525,7828=>685,7829=>525,7830=>634,7831=>392,7832=>818,7833=>592,7834=>613,7835=>352,7836=>352,7837=>352,7838=>769,7839=>612,7840=>684,7841=>613,7842=>684,7843=>613,7844=>684,7845=>613,7846=>684,7847=>613,7848=>684,7849=>613,7850=>684,7851=>613,7852=>684,7853=>613,7854=>684,7855=>613,7856=>684,7857=>613,7858=>684,7859=>613,7860=>684,7861=>613,7862=>684,7863=>613,7864=>632,7865=>615,7866=>632,7867=>615,7868=>632,7869=>615,7870=>632,7871=>615,7872=>632,7873=>615,7874=>632,7875=>615,7876=>632,7877=>615,7878=>632,7879=>615,7880=>295,7881=>278,7882=>295,7883=>278,7884=>787,7885=>612,7886=>787,7887=>612,7888=>787,7889=>612,7890=>787,7891=>612,7892=>787,7893=>612,7894=>787,7895=>612,7896=>787,7897=>612,7898=>913,7899=>612,7900=>913,7901=>612,7902=>913,7903=>612,7904=>913,7905=>612,7906=>913,7907=>612,7908=>732,7909=>634,7910=>732,7911=>634,7912=>858,7913=>634,7914=>858,7915=>634,7916=>858,7917=>634,7918=>858,7919=>634,7920=>858,7921=>634,7922=>611,7923=>592,7924=>611,7925=>592,7926=>611,7927=>592,7928=>611,7929=>592,7930=>769,7931=>477,7936=>659,7937=>659,7938=>659,7939=>659,7940=>659,7941=>659,7942=>659,7943=>659,7944=>684,7945=>684,7946=>877,7947=>877,7948=>769,7949=>801,7950=>708,7951=>743,7952=>541,7953=>541,7954=>541,7955=>541,7956=>541,7957=>541,7960=>711,7961=>711,7962=>966,7963=>975,7964=>898,7965=>928,7968=>634,7969=>634,7970=>634,7971=>634,7972=>634,7973=>634,7974=>634,7975=>634,7976=>837,7977=>835,7978=>1086,7979=>1089,7980=>1027,7981=>1051,7982=>934,7983=>947,7984=>338,7985=>338,7986=>338,7987=>338,7988=>338,7989=>338,7990=>338,7991=>338,7992=>380,7993=>374,7994=>635,7995=>635,7996=>570,7997=>600,7998=>489,7999=>493,8000=>612,8001=>612,8002=>612,8003=>612,8004=>612,8005=>612,8008=>804,8009=>848,8010=>1095,8011=>1100,8012=>938,8013=>970,8016=>579,8017=>579,8018=>579,8019=>579,8020=>579,8021=>579,8022=>579,8023=>579,8025=>784,8027=>998,8029=>1012,8031=>897,8032=>837,8033=>837,8034=>837,8035=>837,8036=>837,8037=>837,8038=>837,8039=>837,8040=>802,8041=>843,8042=>1089,8043=>1095,8044=>946,8045=>972,8046=>921,8047=>952,8048=>659,8049=>659,8050=>541,8051=>548,8052=>634,8053=>654,8054=>338,8055=>338,8056=>612,8057=>612,8058=>579,8059=>579,8060=>837,8061=>837,8064=>659,8065=>659,8066=>659,8067=>659,8068=>659,8069=>659,8070=>659,8071=>659,8072=>684,8073=>684,8074=>877,8075=>877,8076=>769,8077=>801,8078=>708,8079=>743,8080=>634,8081=>634,8082=>634,8083=>634,8084=>634,8085=>634,8086=>634,8087=>634,8088=>837,8089=>835,8090=>1086,8091=>1089,8092=>1027,8093=>1051,8094=>934,8095=>947,8096=>837,8097=>837,8098=>837,8099=>837,8100=>837,8101=>837,8102=>837,8103=>837,8104=>802,8105=>843,8106=>1089,8107=>1095,8108=>946,8109=>972,8110=>921,8111=>952,8112=>659,8113=>659,8114=>659,8115=>659,8116=>659,8118=>659,8119=>659,8120=>684,8121=>684,8122=>716,8123=>692,8124=>684,8125=>500,8126=>500,8127=>500,8128=>500,8129=>500,8130=>634,8131=>634,8132=>654,8134=>634,8135=>634,8136=>805,8137=>746,8138=>931,8139=>871,8140=>752,8141=>500,8142=>500,8143=>500,8144=>338,8145=>338,8146=>338,8147=>338,8150=>338,8151=>338,8152=>295,8153=>295,8154=>475,8155=>408,8157=>500,8158=>500,8159=>500,8160=>579,8161=>579,8162=>579,8163=>579,8164=>635,8165=>635,8166=>579,8167=>579,8168=>611,8169=>611,8170=>845,8171=>825,8172=>685,8173=>500,8174=>500,8175=>500,8178=>837,8179=>837,8180=>837,8182=>837,8183=>837,8184=>941,8185=>813,8186=>922,8187=>826,8188=>764,8189=>500,8190=>500,8192=>500,8193=>1000,8194=>500,8195=>1000,8196=>330,8197=>250,8198=>167,8199=>636,8200=>318,8201=>200,8202=>100,8203=>0,8204=>0,8205=>0,8206=>0,8207=>0,8208=>361,8209=>361,8210=>636,8211=>500,8212=>1000,8213=>1000,8214=>500,8215=>500,8216=>318,8217=>318,8218=>318,8219=>318,8220=>518,8221=>518,8222=>518,8223=>518,8224=>500,8225=>500,8226=>590,8227=>590,8228=>334,8229=>667,8230=>1000,8231=>318,8232=>0,8233=>0,8234=>0,8235=>0,8236=>0,8237=>0,8238=>0,8239=>200,8240=>1342,8241=>1735,8242=>227,8243=>374,8244=>520,8245=>227,8246=>374,8247=>520,8248=>339,8249=>400,8250=>400,8251=>838,8252=>485,8253=>531,8254=>500,8255=>804,8256=>804,8257=>250,8258=>1000,8259=>500,8260=>167,8261=>390,8262=>390,8263=>922,8264=>733,8265=>733,8266=>497,8267=>636,8268=>500,8269=>500,8270=>500,8271=>337,8272=>804,8273=>500,8274=>450,8275=>1000,8276=>804,8277=>838,8278=>586,8279=>663,8280=>838,8281=>838,8282=>318,8283=>797,8284=>838,8285=>318,8286=>318,8287=>222,8288=>0,8289=>0,8290=>0,8291=>0,8292=>0,8298=>0,8299=>0,8300=>0,8301=>0,8302=>0,8303=>0,8304=>401,8305=>179,8308=>401,8309=>401,8310=>401,8311=>401,8312=>401,8313=>401,8314=>528,8315=>528,8316=>528,8317=>246,8318=>246,8319=>398,8320=>401,8321=>401,8322=>401,8323=>401,8324=>401,8325=>401,8326=>401,8327=>401,8328=>401,8329=>401,8330=>528,8331=>528,8332=>528,8333=>246,8334=>246,8336=>392,8337=>417,8338=>414,8339=>444,8340=>417,8341=>404,8342=>426,8343=>166,8344=>623,8345=>398,8346=>428,8347=>373,8348=>295,8352=>877,8353=>636,8354=>636,8355=>636,8356=>636,8357=>974,8358=>748,8359=>1272,8360=>1074,8361=>989,8362=>784,8363=>636,8364=>636,8365=>636,8366=>636,8367=>1272,8368=>636,8369=>636,8370=>636,8371=>636,8372=>774,8373=>636,8376=>636,8377=>636,8378=>679,8400=>0,8401=>0,8406=>0,8407=>0,8411=>0,8412=>0,8417=>0,8448=>1019,8449=>1019,8450=>698,8451=>1123,8452=>642,8453=>1019,8454=>1067,8455=>614,8456=>698,8457=>952,8459=>988,8460=>754,8461=>850,8462=>634,8463=>634,8464=>470,8465=>697,8466=>720,8467=>413,8468=>818,8469=>801,8470=>1040,8471=>1000,8472=>697,8473=>701,8474=>787,8475=>798,8476=>814,8477=>792,8478=>896,8479=>684,8480=>1020,8481=>1074,8482=>1000,8483=>684,8484=>745,8485=>578,8486=>764,8487=>764,8488=>616,8489=>338,8490=>656,8491=>684,8492=>786,8493=>703,8494=>854,8495=>592,8496=>605,8497=>786,8498=>575,8499=>1069,8500=>462,8501=>745,8502=>674,8503=>466,8504=>645,8505=>380,8506=>926,8507=>1194,8508=>702,8509=>728,8510=>654,8511=>849,8512=>811,8513=>775,8514=>557,8515=>557,8516=>611,8517=>819,8518=>708,8519=>615,8520=>351,8521=>351,8523=>780,8526=>526,8528=>969,8529=>969,8530=>1370,8531=>969,8532=>969,8533=>969,8534=>969,8535=>969,8536=>969,8537=>969,8538=>969,8539=>969,8540=>969,8541=>969,8542=>969,8543=>568,8544=>295,8545=>492,8546=>689,8547=>923,8548=>684,8549=>922,8550=>1120,8551=>1317,8552=>917,8553=>685,8554=>933,8555=>1131,8556=>557,8557=>698,8558=>770,8559=>863,8560=>278,8561=>458,8562=>637,8563=>812,8564=>592,8565=>811,8566=>991,8567=>1170,8568=>819,8569=>592,8570=>822,8571=>1002,8572=>278,8573=>550,8574=>635,8575=>974,8576=>1245,8577=>770,8578=>1245,8579=>703,8580=>549,8581=>698,8585=>969,8592=>838,8593=>838,8594=>838,8595=>838,8596=>838,8597=>838,8598=>838,8599=>838,8600=>838,8601=>838,8602=>838,8603=>838,8604=>838,8605=>838,8606=>838,8607=>838,8608=>838,8609=>838,8610=>838,8611=>838,8612=>838,8613=>838,8614=>838,8615=>838,8616=>838,8617=>838,8618=>838,8619=>838,8620=>838,8621=>838,8622=>838,8623=>838,8624=>838,8625=>838,8626=>838,8627=>838,8628=>838,8629=>838,8630=>838,8631=>838,8632=>838,8633=>838,8634=>838,8635=>838,8636=>838,8637=>838,8638=>838,8639=>838,8640=>838,8641=>838,8642=>838,8643=>838,8644=>838,8645=>838,8646=>838,8647=>838,8648=>838,8649=>838,8650=>838,8651=>838,8652=>838,8653=>838,8654=>838,8655=>838,8656=>838,8657=>838,8658=>838,8659=>838,8660=>838,8661=>838,8662=>838,8663=>838,8664=>838,8665=>838,8666=>838,8667=>838,8668=>838,8669=>838,8670=>838,8671=>838,8672=>838,8673=>838,8674=>838,8675=>838,8676=>838,8677=>838,8678=>838,8679=>838,8680=>838,8681=>838,8682=>838,8683=>838,8684=>838,8685=>838,8686=>838,8687=>838,8688=>838,8689=>838,8690=>838,8691=>838,8692=>838,8693=>838,8694=>838,8695=>838,8696=>838,8697=>838,8698=>838,8699=>838,8700=>838,8701=>838,8702=>838,8703=>838,8704=>684,8705=>636,8706=>517,8707=>632,8708=>632,8709=>871,8710=>669,8711=>669,8712=>871,8713=>871,8714=>718,8715=>871,8716=>871,8717=>718,8718=>636,8719=>757,8720=>757,8721=>674,8722=>838,8723=>838,8724=>838,8725=>337,8726=>637,8727=>838,8728=>626,8729=>626,8730=>637,8731=>637,8732=>637,8733=>714,8734=>833,8735=>838,8736=>896,8737=>896,8738=>838,8739=>500,8740=>500,8741=>500,8742=>500,8743=>732,8744=>732,8745=>732,8746=>732,8747=>521,8748=>789,8749=>1057,8750=>521,8751=>789,8752=>1057,8753=>521,8754=>521,8755=>521,8756=>636,8757=>636,8758=>260,8759=>636,8760=>838,8761=>838,8762=>838,8763=>838,8764=>838,8765=>838,8766=>838,8767=>838,8768=>375,8769=>838,8770=>838,8771=>838,8772=>838,8773=>838,8774=>838,8775=>838,8776=>838,8777=>838,8778=>838,8779=>838,8780=>838,8781=>838,8782=>838,8783=>838,8784=>838,8785=>838,8786=>839,8787=>839,8788=>1000,8789=>1000,8790=>838,8791=>838,8792=>838,8793=>838,8794=>838,8795=>838,8796=>838,8797=>838,8798=>838,8799=>838,8800=>838,8801=>838,8802=>838,8803=>838,8804=>838,8805=>838,8806=>838,8807=>838,8808=>838,8809=>838,8810=>1047,8811=>1047,8812=>464,8813=>838,8814=>838,8815=>838,8816=>838,8817=>838,8818=>838,8819=>838,8820=>838,8821=>838,8822=>838,8823=>838,8824=>838,8825=>838,8826=>838,8827=>838,8828=>838,8829=>838,8830=>838,8831=>838,8832=>838,8833=>838,8834=>838,8835=>838,8836=>838,8837=>838,8838=>838,8839=>838,8840=>838,8841=>838,8842=>838,8843=>838,8844=>732,8845=>732,8846=>732,8847=>838,8848=>838,8849=>838,8850=>838,8851=>780,8852=>780,8853=>838,8854=>838,8855=>838,8856=>838,8857=>838,8858=>838,8859=>838,8860=>838,8861=>838,8862=>838,8863=>838,8864=>838,8865=>838,8866=>871,8867=>871,8868=>871,8869=>871,8870=>521,8871=>521,8872=>871,8873=>871,8874=>871,8875=>871,8876=>871,8877=>871,8878=>871,8879=>871,8880=>838,8881=>838,8882=>838,8883=>838,8884=>838,8885=>838,8886=>1000,8887=>1000,8888=>838,8889=>838,8890=>521,8891=>732,8892=>732,8893=>732,8894=>838,8895=>838,8896=>820,8897=>820,8898=>820,8899=>820,8900=>494,8901=>318,8902=>626,8903=>838,8904=>1000,8905=>1000,8906=>1000,8907=>1000,8908=>1000,8909=>838,8910=>732,8911=>732,8912=>838,8913=>838,8914=>838,8915=>838,8916=>838,8917=>838,8918=>838,8919=>838,8920=>1422,8921=>1422,8922=>838,8923=>838,8924=>838,8925=>838,8926=>838,8927=>838,8928=>838,8929=>838,8930=>838,8931=>838,8932=>838,8933=>838,8934=>838,8935=>838,8936=>838,8937=>838,8938=>838,8939=>838,8940=>838,8941=>838,8942=>1000,8943=>1000,8944=>1000,8945=>1000,8946=>1000,8947=>871,8948=>718,8949=>871,8950=>871,8951=>718,8952=>871,8953=>871,8954=>1000,8955=>871,8956=>718,8957=>871,8958=>718,8959=>871,8960=>602,8961=>602,8962=>635,8963=>838,8964=>838,8965=>838,8966=>838,8967=>488,8968=>390,8969=>390,8970=>390,8971=>390,8972=>809,8973=>809,8974=>809,8975=>809,8976=>838,8977=>513,8984=>1000,8985=>838,8988=>469,8989=>469,8990=>469,8991=>469,8992=>521,8993=>521,8996=>1152,8997=>1152,8998=>1414,8999=>1152,9000=>1443,9003=>1414,9004=>873,9075=>338,9076=>635,9077=>837,9082=>659,9085=>757,9095=>1152,9108=>873,9115=>500,9116=>500,9117=>500,9118=>500,9119=>500,9120=>500,9121=>500,9122=>500,9123=>500,9124=>500,9125=>500,9126=>500,9127=>750,9128=>750,9129=>750,9130=>750,9131=>750,9132=>750,9133=>750,9134=>521,9166=>838,9167=>945,9187=>873,9189=>769,9192=>636,9250=>635,9251=>635,9312=>896,9313=>896,9314=>896,9315=>896,9316=>896,9317=>896,9318=>896,9319=>896,9320=>896,9321=>896,9472=>602,9473=>602,9474=>602,9475=>602,9476=>602,9477=>602,9478=>602,9479=>602,9480=>602,9481=>602,9482=>602,9483=>602,9484=>602,9485=>602,9486=>602,9487=>602,9488=>602,9489=>602,9490=>602,9491=>602,9492=>602,9493=>602,9494=>602,9495=>602,9496=>602,9497=>602,9498=>602,9499=>602,9500=>602,9501=>602,9502=>602,9503=>602,9504=>602,9505=>602,9506=>602,9507=>602,9508=>602,9509=>602,9510=>602,9511=>602,9512=>602,9513=>602,9514=>602,9515=>602,9516=>602,9517=>602,9518=>602,9519=>602,9520=>602,9521=>602,9522=>602,9523=>602,9524=>602,9525=>602,9526=>602,9527=>602,9528=>602,9529=>602,9530=>602,9531=>602,9532=>602,9533=>602,9534=>602,9535=>602,9536=>602,9537=>602,9538=>602,9539=>602,9540=>602,9541=>602,9542=>602,9543=>602,9544=>602,9545=>602,9546=>602,9547=>602,9548=>602,9549=>602,9550=>602,9551=>602,9552=>602,9553=>602,9554=>602,9555=>602,9556=>602,9557=>602,9558=>602,9559=>602,9560=>602,9561=>602,9562=>602,9563=>602,9564=>602,9565=>602,9566=>602,9567=>602,9568=>602,9569=>602,9570=>602,9571=>602,9572=>602,9573=>602,9574=>602,9575=>602,9576=>602,9577=>602,9578=>602,9579=>602,9580=>602,9581=>602,9582=>602,9583=>602,9584=>602,9585=>602,9586=>602,9587=>602,9588=>602,9589=>602,9590=>602,9591=>602,9592=>602,9593=>602,9594=>602,9595=>602,9596=>602,9597=>602,9598=>602,9599=>602,9600=>769,9601=>769,9602=>769,9603=>769,9604=>769,9605=>769,9606=>769,9607=>769,9608=>769,9609=>769,9610=>769,9611=>769,9612=>769,9613=>769,9614=>769,9615=>769,9616=>769,9617=>769,9618=>769,9619=>769,9620=>769,9621=>769,9622=>769,9623=>769,9624=>769,9625=>769,9626=>769,9627=>769,9628=>769,9629=>769,9630=>769,9631=>769,9632=>945,9633=>945,9634=>945,9635=>945,9636=>945,9637=>945,9638=>945,9639=>945,9640=>945,9641=>945,9642=>678,9643=>678,9644=>945,9645=>945,9646=>550,9647=>550,9648=>769,9649=>769,9650=>769,9651=>769,9652=>502,9653=>502,9654=>769,9655=>769,9656=>502,9657=>502,9658=>769,9659=>769,9660=>769,9661=>769,9662=>502,9663=>502,9664=>769,9665=>769,9666=>502,9667=>502,9668=>769,9669=>769,9670=>769,9671=>769,9672=>769,9673=>873,9674=>494,9675=>873,9676=>873,9677=>873,9678=>873,9679=>873,9680=>873,9681=>873,9682=>873,9683=>873,9684=>873,9685=>873,9686=>527,9687=>527,9688=>791,9689=>970,9690=>970,9691=>970,9692=>387,9693=>387,9694=>387,9695=>387,9696=>873,9697=>873,9698=>769,9699=>769,9700=>769,9701=>769,9702=>590,9703=>945,9704=>945,9705=>945,9706=>945,9707=>945,9708=>769,9709=>769,9710=>769,9711=>1119,9712=>945,9713=>945,9714=>945,9715=>945,9716=>873,9717=>873,9718=>873,9719=>873,9720=>769,9721=>769,9722=>769,9723=>830,9724=>830,9725=>732,9726=>732,9727=>769,9728=>896,9729=>1000,9730=>896,9731=>896,9732=>896,9733=>896,9734=>896,9735=>573,9736=>896,9737=>896,9738=>888,9739=>888,9740=>671,9741=>1013,9742=>1246,9743=>1250,9744=>896,9745=>896,9746=>896,9747=>532,9748=>896,9749=>896,9750=>896,9751=>896,9752=>896,9753=>896,9754=>896,9755=>896,9756=>896,9757=>609,9758=>896,9759=>609,9760=>896,9761=>896,9762=>896,9763=>896,9764=>669,9765=>746,9766=>649,9767=>784,9768=>545,9769=>896,9770=>896,9771=>896,9772=>710,9773=>896,9774=>896,9775=>896,9776=>896,9777=>896,9778=>896,9779=>896,9780=>896,9781=>896,9782=>896,9783=>896,9784=>896,9785=>1042,9786=>1042,9787=>1042,9788=>896,9789=>896,9790=>896,9791=>614,9792=>732,9793=>732,9794=>896,9795=>896,9796=>896,9797=>896,9798=>896,9799=>896,9800=>896,9801=>896,9802=>896,9803=>896,9804=>896,9805=>896,9806=>896,9807=>896,9808=>896,9809=>896,9810=>896,9811=>896,9812=>896,9813=>896,9814=>896,9815=>896,9816=>896,9817=>896,9818=>896,9819=>896,9820=>896,9821=>896,9822=>896,9823=>896,9824=>896,9825=>896,9826=>896,9827=>896,9828=>896,9829=>896,9830=>896,9831=>896,9832=>896,9833=>472,9834=>638,9835=>896,9836=>896,9837=>472,9838=>357,9839=>484,9840=>748,9841=>766,9842=>896,9843=>896,9844=>896,9845=>896,9846=>896,9847=>896,9848=>896,9849=>896,9850=>896,9851=>896,9852=>896,9853=>896,9854=>896,9855=>896,9856=>869,9857=>869,9858=>869,9859=>869,9860=>869,9861=>869,9862=>896,9863=>896,9864=>896,9865=>896,9866=>896,9867=>896,9868=>896,9869=>896,9870=>896,9871=>896,9872=>896,9873=>896,9874=>896,9875=>896,9876=>896,9877=>541,9878=>896,9879=>896,9880=>896,9881=>896,9882=>896,9883=>896,9884=>896,9888=>896,9889=>702,9890=>1004,9891=>1089,9892=>1175,9893=>903,9894=>838,9895=>838,9896=>838,9897=>838,9898=>838,9899=>838,9900=>838,9901=>838,9902=>838,9903=>838,9904=>844,9905=>838,9906=>732,9907=>732,9908=>732,9909=>732,9910=>850,9911=>732,9912=>732,9920=>838,9921=>838,9922=>838,9923=>838,9954=>732,9985=>838,9986=>838,9987=>838,9988=>838,9990=>838,9991=>838,9992=>838,9993=>838,9996=>838,9997=>838,9998=>838,9999=>838,10000=>838,10001=>838,10002=>838,10003=>838,10004=>838,10005=>838,10006=>838,10007=>838,10008=>838,10009=>838,10010=>838,10011=>838,10012=>838,10013=>838,10014=>838,10015=>838,10016=>838,10017=>838,10018=>838,10019=>838,10020=>838,10021=>838,10022=>838,10023=>838,10025=>838,10026=>838,10027=>838,10028=>838,10029=>838,10030=>838,10031=>838,10032=>838,10033=>838,10034=>838,10035=>838,10036=>838,10037=>838,10038=>838,10039=>838,10040=>838,10041=>838,10042=>838,10043=>838,10044=>838,10045=>838,10046=>838,10047=>838,10048=>838,10049=>838,10050=>838,10051=>838,10052=>838,10053=>838,10054=>838,10055=>838,10056=>838,10057=>838,10058=>838,10059=>838,10061=>896,10063=>896,10064=>896,10065=>896,10066=>896,10070=>896,10072=>838,10073=>838,10074=>838,10075=>322,10076=>322,10077=>538,10078=>538,10081=>838,10082=>838,10083=>838,10084=>838,10085=>838,10086=>838,10087=>838,10088=>838,10089=>838,10090=>838,10091=>838,10092=>838,10093=>838,10094=>838,10095=>838,10096=>838,10097=>838,10098=>838,10099=>838,10100=>838,10101=>838,10102=>896,10103=>896,10104=>896,10105=>896,10106=>896,10107=>896,10108=>896,10109=>896,10110=>896,10111=>896,10112=>838,10113=>838,10114=>838,10115=>838,10116=>838,10117=>838,10118=>838,10119=>838,10120=>838,10121=>838,10122=>838,10123=>838,10124=>838,10125=>838,10126=>838,10127=>838,10128=>838,10129=>838,10130=>838,10131=>838,10132=>838,10136=>838,10137=>838,10138=>838,10139=>838,10140=>838,10141=>838,10142=>838,10143=>838,10144=>838,10145=>838,10146=>838,10147=>838,10148=>838,10149=>838,10150=>838,10151=>838,10152=>838,10153=>838,10154=>838,10155=>838,10156=>838,10157=>838,10158=>838,10159=>838,10161=>838,10162=>838,10163=>838,10164=>838,10165=>838,10166=>838,10167=>838,10168=>838,10169=>838,10170=>838,10171=>838,10172=>838,10173=>838,10174=>838,10181=>390,10182=>390,10208=>494,10214=>495,10215=>495,10216=>390,10217=>390,10218=>556,10219=>556,10224=>838,10225=>838,10226=>838,10227=>838,10228=>1157,10229=>1434,10230=>1434,10231=>1434,10232=>1434,10233=>1434,10234=>1434,10235=>1434,10236=>1434,10237=>1434,10238=>1434,10239=>1434,10240=>732,10241=>732,10242=>732,10243=>732,10244=>732,10245=>732,10246=>732,10247=>732,10248=>732,10249=>732,10250=>732,10251=>732,10252=>732,10253=>732,10254=>732,10255=>732,10256=>732,10257=>732,10258=>732,10259=>732,10260=>732,10261=>732,10262=>732,10263=>732,10264=>732,10265=>732,10266=>732,10267=>732,10268=>732,10269=>732,10270=>732,10271=>732,10272=>732,10273=>732,10274=>732,10275=>732,10276=>732,10277=>732,10278=>732,10279=>732,10280=>732,10281=>732,10282=>732,10283=>732,10284=>732,10285=>732,10286=>732,10287=>732,10288=>732,10289=>732,10290=>732,10291=>732,10292=>732,10293=>732,10294=>732,10295=>732,10296=>732,10297=>732,10298=>732,10299=>732,10300=>732,10301=>732,10302=>732,10303=>732,10304=>732,10305=>732,10306=>732,10307=>732,10308=>732,10309=>732,10310=>732,10311=>732,10312=>732,10313=>732,10314=>732,10315=>732,10316=>732,10317=>732,10318=>732,10319=>732,10320=>732,10321=>732,10322=>732,10323=>732,10324=>732,10325=>732,10326=>732,10327=>732,10328=>732,10329=>732,10330=>732,10331=>732,10332=>732,10333=>732,10334=>732,10335=>732,10336=>732,10337=>732,10338=>732,10339=>732,10340=>732,10341=>732,10342=>732,10343=>732,10344=>732,10345=>732,10346=>732,10347=>732,10348=>732,10349=>732,10350=>732,10351=>732,10352=>732,10353=>732,10354=>732,10355=>732,10356=>732,10357=>732,10358=>732,10359=>732,10360=>732,10361=>732,10362=>732,10363=>732,10364=>732,10365=>732,10366=>732,10367=>732,10368=>732,10369=>732,10370=>732,10371=>732,10372=>732,10373=>732,10374=>732,10375=>732,10376=>732,10377=>732,10378=>732,10379=>732,10380=>732,10381=>732,10382=>732,10383=>732,10384=>732,10385=>732,10386=>732,10387=>732,10388=>732,10389=>732,10390=>732,10391=>732,10392=>732,10393=>732,10394=>732,10395=>732,10396=>732,10397=>732,10398=>732,10399=>732,10400=>732,10401=>732,10402=>732,10403=>732,10404=>732,10405=>732,10406=>732,10407=>732,10408=>732,10409=>732,10410=>732,10411=>732,10412=>732,10413=>732,10414=>732,10415=>732,10416=>732,10417=>732,10418=>732,10419=>732,10420=>732,10421=>732,10422=>732,10423=>732,10424=>732,10425=>732,10426=>732,10427=>732,10428=>732,10429=>732,10430=>732,10431=>732,10432=>732,10433=>732,10434=>732,10435=>732,10436=>732,10437=>732,10438=>732,10439=>732,10440=>732,10441=>732,10442=>732,10443=>732,10444=>732,10445=>732,10446=>732,10447=>732,10448=>732,10449=>732,10450=>732,10451=>732,10452=>732,10453=>732,10454=>732,10455=>732,10456=>732,10457=>732,10458=>732,10459=>732,10460=>732,10461=>732,10462=>732,10463=>732,10464=>732,10465=>732,10466=>732,10467=>732,10468=>732,10469=>732,10470=>732,10471=>732,10472=>732,10473=>732,10474=>732,10475=>732,10476=>732,10477=>732,10478=>732,10479=>732,10480=>732,10481=>732,10482=>732,10483=>732,10484=>732,10485=>732,10486=>732,10487=>732,10488=>732,10489=>732,10490=>732,10491=>732,10492=>732,10493=>732,10494=>732,10495=>732,10502=>838,10503=>838,10506=>838,10507=>838,10560=>683,10561=>683,10627=>734,10628=>734,10702=>838,10703=>1000,10704=>1000,10705=>1000,10706=>1000,10707=>1000,10708=>1000,10709=>1000,10731=>494,10746=>838,10747=>838,10752=>1000,10753=>1000,10754=>1000,10764=>1325,10765=>521,10766=>521,10767=>521,10768=>521,10769=>521,10770=>521,10771=>521,10772=>521,10773=>521,10774=>521,10775=>521,10776=>521,10777=>521,10778=>521,10779=>521,10780=>521,10799=>838,10858=>838,10859=>838,10877=>838,10878=>838,10879=>838,10880=>838,10881=>838,10882=>838,10883=>838,10884=>838,10885=>838,10886=>838,10887=>838,10888=>838,10889=>838,10890=>838,10891=>838,10892=>838,10893=>838,10894=>838,10895=>838,10896=>838,10897=>838,10898=>838,10899=>838,10900=>838,10901=>838,10902=>838,10903=>838,10904=>838,10905=>838,10906=>838,10907=>838,10908=>838,10909=>838,10910=>838,10911=>838,10912=>838,10926=>838,10927=>838,10928=>838,10929=>838,10930=>838,10931=>838,10932=>838,10933=>838,10934=>838,10935=>838,10936=>838,10937=>838,10938=>838,11001=>838,11002=>838,11008=>838,11009=>838,11010=>838,11011=>838,11012=>838,11013=>838,11014=>838,11015=>838,11016=>838,11017=>838,11018=>838,11019=>838,11020=>838,11021=>838,11022=>836,11023=>836,11024=>836,11025=>836,11026=>945,11027=>945,11028=>945,11029=>945,11030=>769,11031=>769,11032=>769,11033=>769,11034=>945,11039=>869,11040=>869,11041=>873,11042=>873,11043=>873,11044=>1119,11091=>869,11092=>869,11360=>557,11361=>278,11362=>557,11363=>603,11364=>695,11365=>613,11366=>392,11367=>752,11368=>634,11369=>656,11370=>579,11371=>685,11372=>525,11373=>781,11374=>863,11375=>684,11376=>781,11377=>734,11378=>1128,11379=>961,11380=>592,11381=>654,11382=>568,11383=>660,11385=>414,11386=>612,11387=>491,11388=>175,11389=>431,11390=>635,11391=>685,11520=>591,11521=>595,11522=>564,11523=>602,11524=>587,11525=>911,11526=>626,11527=>952,11528=>595,11529=>607,11530=>954,11531=>620,11532=>595,11533=>926,11534=>595,11535=>806,11536=>931,11537=>584,11538=>592,11539=>923,11540=>953,11541=>828,11542=>596,11543=>595,11544=>590,11545=>592,11546=>592,11547=>621,11548=>920,11549=>589,11550=>586,11551=>581,11552=>914,11553=>596,11554=>595,11555=>592,11556=>642,11557=>901,11568=>646,11569=>888,11570=>888,11571=>682,11572=>684,11573=>635,11574=>562,11575=>684,11576=>684,11577=>632,11578=>632,11579=>683,11580=>875,11581=>685,11582=>491,11583=>685,11584=>888,11585=>888,11586=>300,11587=>627,11588=>752,11589=>656,11590=>527,11591=>685,11592=>645,11593=>632,11594=>502,11595=>953,11596=>778,11597=>748,11598=>621,11599=>295,11600=>778,11601=>295,11602=>752,11603=>633,11604=>888,11605=>888,11606=>752,11607=>320,11608=>749,11609=>888,11610=>888,11611=>698,11612=>768,11613=>685,11614=>698,11615=>622,11616=>684,11617=>752,11618=>632,11619=>788,11620=>567,11621=>788,11631=>515,11800=>531,11806=>838,11810=>390,11811=>390,11812=>390,11813=>390,11822=>531,19904=>896,19905=>896,19906=>896,19907=>896,19908=>896,19909=>896,19910=>896,19911=>896,19912=>896,19913=>896,19914=>896,19915=>896,19916=>896,19917=>896,19918=>896,19919=>896,19920=>896,19921=>896,19922=>896,19923=>896,19924=>896,19925=>896,19926=>896,19927=>896,19928=>896,19929=>896,19930=>896,19931=>896,19932=>896,19933=>896,19934=>896,19935=>896,19936=>896,19937=>896,19938=>896,19939=>896,19940=>896,19941=>896,19942=>896,19943=>896,19944=>896,19945=>896,19946=>896,19947=>896,19948=>896,19949=>896,19950=>896,19951=>896,19952=>896,19953=>896,19954=>896,19955=>896,19956=>896,19957=>896,19958=>896,19959=>896,19960=>896,19961=>896,19962=>896,19963=>896,19964=>896,19965=>896,19966=>896,19967=>896,42192=>686,42193=>603,42194=>603,42195=>770,42196=>611,42197=>611,42198=>775,42199=>656,42200=>656,42201=>512,42202=>698,42203=>703,42204=>685,42205=>575,42206=>575,42207=>863,42208=>748,42209=>557,42210=>635,42211=>695,42212=>695,42213=>684,42214=>684,42215=>752,42216=>775,42217=>512,42218=>989,42219=>685,42220=>611,42221=>686,42222=>684,42223=>684,42224=>632,42225=>632,42226=>295,42227=>787,42228=>732,42229=>732,42230=>557,42231=>767,42232=>300,42233=>300,42234=>596,42235=>596,42236=>300,42237=>300,42238=>588,42239=>588,42564=>635,42565=>521,42566=>354,42567=>338,42572=>1180,42573=>1028,42576=>1029,42577=>906,42580=>1080,42581=>842,42582=>977,42583=>843,42594=>1062,42595=>912,42596=>1066,42597=>901,42598=>1178,42599=>1008,42600=>787,42601=>612,42602=>855,42603=>712,42604=>1358,42605=>1019,42606=>879,42634=>782,42635=>685,42636=>611,42637=>583,42644=>686,42645=>634,42760=>493,42761=>493,42762=>493,42763=>493,42764=>493,42765=>493,42766=>493,42767=>493,42768=>493,42769=>493,42770=>493,42771=>493,42772=>493,42773=>493,42774=>493,42779=>369,42780=>369,42781=>252,42782=>252,42783=>252,42786=>385,42787=>356,42788=>472,42789=>472,42790=>752,42791=>634,42792=>878,42793=>709,42794=>614,42795=>541,42800=>491,42801=>521,42802=>1250,42803=>985,42804=>1203,42805=>990,42806=>1142,42807=>981,42808=>971,42809=>818,42810=>971,42811=>818,42812=>959,42813=>818,42814=>703,42815=>549,42816=>656,42817=>583,42822=>680,42823=>392,42824=>582,42825=>427,42826=>807,42827=>704,42830=>1358,42831=>1019,42832=>603,42833=>635,42834=>734,42835=>774,42838=>787,42839=>635,42852=>605,42853=>635,42854=>605,42855=>635,42880=>557,42881=>278,42882=>735,42883=>634,42889=>337,42890=>376,42891=>401,42892=>275,42893=>686,42894=>487,42896=>772,42897=>667,42912=>775,42913=>635,42914=>656,42915=>579,42916=>748,42917=>634,42918=>695,42919=>411,42920=>635,42921=>521,42922=>801,43002=>915,43003=>575,43004=>603,43005=>863,43006=>295,43007=>1199,61184=>213,61185=>238,61186=>257,61187=>264,61188=>267,61189=>238,61190=>213,61191=>238,61192=>257,61193=>264,61194=>257,61195=>238,61196=>213,61197=>238,61198=>257,61199=>264,61200=>257,61201=>238,61202=>213,61203=>238,61204=>267,61205=>264,61206=>257,61207=>238,61208=>213,61209=>275,61440=>977,61441=>977,61442=>977,61443=>977,62464=>580,62465=>580,62466=>624,62467=>889,62468=>585,62469=>580,62470=>653,62471=>882,62472=>555,62473=>580,62474=>1168,62475=>589,62476=>590,62477=>869,62478=>580,62479=>589,62480=>914,62481=>590,62482=>731,62483=>583,62484=>872,62485=>589,62486=>895,62487=>589,62488=>589,62489=>590,62490=>649,62491=>589,62492=>589,62493=>599,62494=>590,62495=>516,62496=>580,62497=>584,62498=>580,62499=>580,62500=>581,62501=>638,62502=>955,62504=>931,62505=>808,62506=>508,62507=>508,62508=>508,62509=>508,62510=>508,62511=>508,62512=>508,62513=>508,62514=>508,62515=>508,62516=>518,62517=>518,62518=>518,62519=>787,62520=>787,62521=>787,62522=>787,62523=>787,62524=>546,62525=>546,62526=>546,62527=>546,62528=>546,62529=>546,63173=>612,64256=>689,64257=>630,64258=>630,64259=>967,64260=>967,64261=>686,64262=>861,64275=>1202,64276=>1202,64277=>1196,64278=>1186,64279=>1529,64285=>224,64286=>0,64287=>331,64288=>636,64289=>856,64290=>774,64291=>906,64292=>771,64293=>843,64294=>855,64295=>807,64296=>875,64297=>838,64298=>708,64299=>708,64300=>708,64301=>708,64302=>668,64303=>668,64304=>668,64305=>578,64306=>412,64307=>546,64308=>653,64309=>355,64310=>406,64312=>648,64313=>330,64314=>537,64315=>529,64316=>568,64318=>679,64320=>399,64321=>649,64323=>640,64324=>625,64326=>593,64327=>709,64328=>564,64329=>708,64330=>657,64331=>272,64332=>578,64333=>529,64334=>625,64335=>629,64338=>941,64339=>982,64340=>278,64341=>302,64342=>941,64343=>982,64344=>278,64345=>302,64346=>941,64347=>982,64348=>278,64349=>302,64350=>941,64351=>982,64352=>278,64353=>302,64354=>941,64355=>982,64356=>278,64357=>302,64358=>941,64359=>982,64360=>278,64361=>302,64362=>1037,64363=>1035,64364=>478,64365=>506,64366=>1037,64367=>1035,64368=>478,64369=>506,64370=>646,64371=>646,64372=>618,64373=>646,64374=>646,64375=>646,64376=>618,64377=>646,64378=>646,64379=>646,64380=>618,64381=>646,64382=>646,64383=>646,64384=>618,64385=>646,64386=>445,64387=>525,64388=>445,64389=>525,64390=>445,64391=>525,64392=>445,64393=>525,64394=>483,64395=>552,64396=>483,64397=>552,64398=>895,64399=>895,64400=>476,64401=>552,64402=>895,64403=>895,64404=>476,64405=>552,64406=>895,64407=>895,64408=>476,64409=>552,64410=>895,64411=>895,64412=>476,64413=>552,64414=>734,64415=>761,64416=>734,64417=>761,64418=>278,64419=>302,64426=>698,64427=>632,64428=>527,64429=>461,64467=>824,64468=>843,64469=>476,64470=>552,64473=>483,64474=>517,64488=>278,64489=>302,64508=>783,64509=>833,64510=>278,64511=>302,65024=>0,65025=>0,65026=>0,65027=>0,65028=>0,65029=>0,65030=>0,65031=>0,65032=>0,65033=>0,65034=>0,65035=>0,65036=>0,65037=>0,65038=>0,65039=>0,65056=>0,65057=>0,65058=>0,65059=>0,65136=>293,65137=>293,65138=>293,65139=>262,65140=>293,65142=>293,65143=>293,65144=>293,65145=>293,65146=>293,65147=>293,65148=>293,65149=>293,65150=>293,65151=>293,65152=>470,65153=>278,65154=>305,65155=>278,65156=>305,65157=>483,65158=>517,65159=>278,65160=>305,65161=>783,65162=>833,65163=>278,65164=>302,65165=>278,65166=>305,65167=>941,65168=>982,65169=>278,65170=>302,65171=>524,65172=>536,65173=>941,65174=>982,65175=>278,65176=>302,65177=>941,65178=>982,65179=>278,65180=>302,65181=>646,65182=>646,65183=>618,65184=>646,65185=>646,65186=>646,65187=>618,65188=>646,65189=>646,65190=>646,65191=>618,65192=>646,65193=>445,65194=>525,65195=>445,65196=>525,65197=>483,65198=>552,65199=>483,65200=>552,65201=>1221,65202=>1275,65203=>838,65204=>892,65205=>1221,65206=>1275,65207=>838,65208=>892,65209=>1209,65210=>1225,65211=>849,65212=>867,65213=>1209,65214=>1225,65215=>849,65216=>867,65217=>925,65218=>949,65219=>796,65220=>820,65221=>925,65222=>949,65223=>796,65224=>820,65225=>597,65226=>532,65227=>597,65228=>482,65229=>597,65230=>532,65231=>523,65232=>482,65233=>1037,65234=>1035,65235=>478,65236=>506,65237=>776,65238=>834,65239=>478,65240=>506,65241=>824,65242=>843,65243=>476,65244=>552,65245=>727,65246=>757,65247=>305,65248=>331,65249=>619,65250=>666,65251=>536,65252=>578,65253=>734,65254=>761,65255=>278,65256=>302,65257=>524,65258=>536,65259=>527,65260=>461,65261=>483,65262=>517,65263=>783,65264=>833,65265=>783,65266=>833,65267=>278,65268=>302,65269=>570,65270=>597,65271=>570,65272=>597,65273=>570,65274=>597,65275=>570,65276=>597,65279=>0,65529=>0,65530=>0,65531=>0,65532=>0,65533=>1025,65535=>600);
16
- // --- EOF ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/lib/tcpdf_min/fonts/dejavusans.z DELETED
Binary file
includes/lib/tcpdf_min/fonts/dejavusansb.ctg.z DELETED
Binary file
includes/lib/tcpdf_min/fonts/dejavusansb.php DELETED
@@ -1,16 +0,0 @@
1
- <?php
2
- // TCPDF FONT FILE DESCRIPTION
3
- $type='TrueTypeUnicode';
4
- $name='DejaVuSans-Bold';
5
- $up=-63;
6
- $ut=44;
7
- $dw=600;
8
- $diff='';
9
- $originalsize=693876;
10
- $enc='';
11
- $file='dejavusansb.z';
12
- $ctg='dejavusansb.ctg.z';
13
- $desc=array('Flags'=>32,'FontBBox'=>'[-1069 -415 1975 1174]','ItalicAngle'=>0,'Ascent'=>928,'Descent'=>-236,'Leading'=>0,'CapHeight'=>729,'XHeight'=>547,'StemV'=>60,'StemH'=>26,'AvgWidth'=>573,'MaxWidth'=>2016,'MissingWidth'=>600);
14
- $cbbox=array(0=>array(50,-177,550,705),32=>array(140,0,316,729),33=>array(140,0,316,729),34=>array(95,458,426,729),35=>array(68,0,770,718),36=>array(78,-147,628,760),37=>array(32,-14,970,742),38=>array(60,-14,830,742),39=>array(95,458,211,729),40=>array(86,-132,377,759),41=>array(80,-132,371,759),42=>array(20,278,503,742),43=>array(106,0,732,627),44=>array(53,-142,278,189),45=>array(54,217,361,359),46=>array(102,0,278,189),47=>array(0,-93,365,729),48=>array(48,-14,648,742),49=>array(113,0,627,729),50=>array(79,0,609,742),51=>array(67,-14,616,742),52=>array(45,0,650,729),53=>array(77,-14,626,729),54=>array(62,-14,642,741),55=>array(67,0,616,729),56=>array(61,-14,634,742),57=>array(52,-14,632,741),58=>array(112,0,288,547),59=>array(63,-142,288,547),60=>array(106,30,732,597),61=>array(106,144,732,482),62=>array(106,30,732,597),63=>array(69,0,515,742),64=>array(66,-174,929,703),65=>array(5,0,769,729),66=>array(92,0,692,729),67=>array(50,-14,670,742),68=>array(92,0,778,729),69=>array(92,0,610,729),70=>array(92,0,599,729),71=>array(50,-14,747,742),72=>array(92,0,745,729),73=>array(92,0,280,729),74=>array(-56,-200,280,729),75=>array(92,0,805,729),76=>array(92,0,610,729),77=>array(92,0,903,729),78=>array(92,0,745,729),79=>array(50,-14,800,742),80=>array(92,0,692,729),81=>array(50,-146,800,742),82=>array(92,0,750,729),83=>array(72,-14,647,742),84=>array(5,0,677,729),85=>array(92,-14,720,729),86=>array(5,0,769,729),87=>array(30,0,1072,729),88=>array(19,0,751,729),89=>array(-10,0,734,729),90=>array(45,0,680,729),91=>array(86,-132,389,760),92=>array(0,-93,365,729),93=>array(68,-132,371,760),94=>array(101,457,737,729),95=>array(0,-236,500,-143),96=>array(46,616,322,800),97=>array(43,-14,596,560),98=>array(84,-14,671,760),99=>array(43,-14,526,560),100=>array(45,-14,632,760),101=>array(43,-14,630,560),102=>array(19,0,444,760),103=>array(45,-216,632,559),104=>array(84,0,634,760),105=>array(84,0,259,760),106=>array(-33,-216,259,760),107=>array(84,0,684,760),108=>array(84,0,259,760),109=>array(83,0,963,560),110=>array(84,0,634,560),111=>array(43,-14,644,560),112=>array(84,-208,671,560),113=>array(45,-208,632,559),114=>array(84,0,490,560),115=>array(52,-14,548,560),116=>array(13,0,455,702),117=>array(78,-14,628,547),118=>array(15,0,637,547),119=>array(35,0,889,547),120=>array(15,0,630,547),121=>array(12,-216,634,547),122=>array(45,0,534,547),123=>array(125,-163,587,760),124=>array(127,-236,238,764),125=>array(125,-163,587,760),126=>array(106,212,732,415),160=>array(140,0,316,729),161=>array(140,0,316,729),162=>array(85,-153,567,699),163=>array(61,0,613,742),164=>array(36,30,601,596),165=>array(12,0,684,729),166=>array(127,-171,238,699),167=>array(7,-95,496,742),168=>array(96,654,404,774),169=>array(138,0,862,725),170=>array(77,182,489,742),171=>array(77,67,552,519),172=>array(106,140,732,444),173=>array(54,217,361,359),174=>array(138,0,862,725),175=>array(96,668,404,760),176=>array(87,424,412,749),177=>array(106,0,732,627),178=>array(53,326,382,742),179=>array(44,319,384,742),180=>array(178,616,454,800),181=>array(85,-209,704,547),182=>array(63,-96,549,729),183=>array(102,253,278,442),184=>array(128,-196,349,0),185=>array(60,326,382,734),186=>array(57,182,507,742),187=>array(94,67,569,519),188=>array(49,-14,957,742),189=>array(49,-14,987,742),190=>array(51,-14,957,742),191=>array(69,-14,515,729),192=>array(5,0,769,927),193=>array(5,0,769,927),194=>array(5,0,769,927),195=>array(5,0,769,931),196=>array(5,0,769,927),197=>array(5,0,769,928),198=>array(0,0,1012,729),199=>array(50,-196,670,742),200=>array(92,0,610,927),201=>array(92,0,610,927),202=>array(92,0,610,927),203=>array(92,0,610,927),204=>array(11,0,280,927),205=>array(92,0,337,927),206=>array(1,0,370,927),207=>array(32,0,339,927),208=>array(16,0,787,729),209=>array(92,0,745,928),210=>array(50,-14,800,927),211=>array(50,-14,800,927),212=>array(50,-14,800,927),213=>array(50,-14,800,928),214=>array(50,-14,800,927),215=>array(125,20,713,607),216=>array(22,-36,823,765),217=>array(92,-14,720,927),218=>array(92,-14,720,927),219=>array(92,-14,720,927),220=>array(92,-14,720,927),221=>array(-10,0,734,927),222=>array(92,0,692,729),223=>array(84,-14,676,760),224=>array(43,-14,596,800),225=>array(43,-14,596,800),226=>array(43,-14,596,800),227=>array(43,-14,596,778),228=>array(43,-14,596,774),229=>array(43,-14,596,888),230=>array(43,-14,1000,560),231=>array(43,-196,526,560),232=>array(43,-14,630,800),233=>array(43,-14,630,800),234=>array(43,-14,630,800),235=>array(43,-14,630,774),236=>array(-21,0,259,800),237=>array(84,0,387,800),238=>array(-13,0,355,800),239=>array(17,0,325,774),240=>array(43,-14,644,760),241=>array(84,0,634,778),242=>array(43,-14,644,800),243=>array(43,-14,644,800),244=>array(43,-14,644,800),245=>array(43,-14,644,778),246=>array(43,-14,644,774),247=>array(106,42,732,585),248=>array(38,-46,645,594),249=>array(78,-14,628,800),250=>array(78,-14,628,800),251=>array(78,-14,628,800),252=>array(78,-14,628,774),253=>array(12,-216,634,800),254=>array(84,-208,671,760),255=>array(12,-216,634,774),256=>array(5,0,769,914),257=>array(43,-14,596,763),258=>array(5,0,769,935),259=>array(43,-14,596,780),260=>array(5,-196,769,729),261=>array(43,-196,596,560),262=>array(50,-14,670,927),263=>array(43,-14,557,800),264=>array(50,-14,670,927),265=>array(43,-14,542,800),266=>array(50,-14,670,927),267=>array(43,-14,526,760),268=>array(50,-14,670,927),269=>array(43,-14,537,800),270=>array(92,0,778,927),271=>array(45,-14,871,760),272=>array(16,0,787,729),273=>array(45,-14,707,760),274=>array(92,0,610,914),275=>array(43,-14,630,763),276=>array(92,0,610,927),277=>array(43,-14,630,784),278=>array(92,0,610,927),279=>array(43,-14,630,760),280=>array(92,-196,610,729),281=>array(43,-196,630,560),282=>array(92,0,610,927),283=>array(43,-14,630,800),284=>array(50,-14,747,927),285=>array(45,-216,632,800),286=>array(50,-14,747,927),287=>array(45,-216,632,784),288=>array(50,-14,747,927),289=>array(45,-216,632,760),290=>array(50,-224,747,742),291=>array(45,-216,632,765),292=>array(92,0,745,927),293=>array(-9,0,634,927),294=>array(92,0,882,729),295=>array(81,0,709,760),296=>array(16,0,355,928),297=>array(1,0,341,778),298=>array(32,0,339,914),299=>array(18,0,325,763),300=>array(21,0,350,927),301=>array(7,0,335,784),302=>array(92,-196,366,729),303=>array(84,-196,345,760),304=>array(92,0,280,927),305=>array(84,0,259,547),306=>array(92,-200,651,729),307=>array(84,-216,602,760),308=>array(-56,-200,370,927),309=>array(-33,-216,355,800),310=>array(92,-209,805,729),311=>array(84,-209,684,760),312=>array(84,0,684,547),313=>array(92,0,610,928),314=>array(84,0,357,928),315=>array(92,-209,610,729),316=>array(71,-209,273,760),317=>array(92,0,610,729),318=>array(84,0,479,760),319=>array(92,0,610,729),320=>array(84,0,484,760),321=>array(-45,0,615,729),322=>array(-18,0,390,760),323=>array(92,0,745,928),324=>array(84,0,634,803),325=>array(92,-209,745,729),326=>array(84,-209,634,560),327=>array(92,0,745,927),328=>array(84,0,634,800),329=>array(51,0,891,729),330=>array(84,-200,730,742),331=>array(84,-216,634,560),332=>array(50,-14,800,914),333=>array(43,-14,644,763),334=>array(50,-14,800,927),335=>array(43,-14,644,787),336=>array(50,-14,800,927),337=>array(43,-14,644,800),338=>array(50,-1,1094,730),339=>array(43,-14,1046,560),340=>array(92,0,750,928),341=>array(84,0,515,803),342=>array(92,-209,750,729),343=>array(71,-209,490,560),344=>array(92,0,750,927),345=>array(84,0,490,800),346=>array(72,-14,647,928),347=>array(52,-14,548,803),348=>array(72,-14,647,927),349=>array(52,-14,548,800),350=>array(72,-196,647,742),351=>array(52,-196,548,560),352=>array(72,-14,647,927),353=>array(52,-14,548,800),354=>array(5,-196,677,729),355=>array(13,-196,455,702),356=>array(5,0,677,930),357=>array(13,0,507,814),358=>array(5,0,677,729),359=>array(13,0,455,702),360=>array(92,-14,720,928),361=>array(78,-14,628,778),362=>array(92,-14,720,914),363=>array(78,-14,628,763),364=>array(92,-14,720,927),365=>array(78,-14,628,784),366=>array(92,-14,720,929),367=>array(78,-14,628,881),368=>array(92,-14,720,927),369=>array(78,-14,628,800),370=>array(92,-196,720,729),371=>array(78,-196,716,547),372=>array(30,0,1072,931),373=>array(35,0,889,800),374=>array(-10,0,734,931),375=>array(12,-216,634,800),376=>array(-10,0,734,927),377=>array(45,0,680,928),378=>array(45,0,534,803),379=>array(45,0,680,929),380=>array(45,0,534,760),381=>array(45,0,680,927),382=>array(45,0,534,800),383=>array(19,0,444,760),384=>array(9,-14,671,760),385=>array(-68,0,741,729),386=>array(92,0,692,729),387=>array(84,-14,671,760),388=>array(40,0,731,729),389=>array(25,-14,696,760),390=>array(50,-14,670,742),391=>array(50,-14,818,924),392=>array(43,-14,643,724),393=>array(16,0,787,729),394=>array(-68,0,827,729),395=>array(70,0,669,729),396=>array(45,-14,632,760),397=>array(43,-222,645,560),398=>array(92,0,610,729),399=>array(51,-14,800,742),400=>array(67,-14,616,742),401=>array(-56,-200,599,729),402=>array(-57,-208,444,760),403=>array(50,-14,868,924),404=>array(2,-211,793,730),405=>array(84,0,1000,760),406=>array(92,0,428,729),407=>array(5,0,384,729),408=>array(92,0,805,742),409=>array(84,0,684,760),410=>array(5,0,355,760),411=>array(-11,0,562,760),412=>array(83,-13,963,729),413=>array(-56,-200,745,729),414=>array(84,-208,634,560),415=>array(50,-14,800,742),416=>array(53,-14,854,761),417=>array(46,-14,708,609),418=>array(50,-14,1007,742),419=>array(43,-216,826,560),420=>array(-68,0,741,729),421=>array(84,-208,671,760),422=>array(92,-146,760,729),423=>array(26,-14,601,742),424=>array(15,-14,511,560),425=>array(92,0,610,729),426=>array(-31,-217,561,760),427=>array(13,-216,455,702),428=>array(15,0,701,729),429=>array(13,0,455,760),430=>array(5,-200,677,729),431=>array(91,-14,833,761),432=>array(75,-14,733,609),433=>array(27,-14,823,728),434=>array(92,0,772,729),435=>array(-10,0,796,742),436=>array(12,-216,778,560),437=>array(45,0,680,729),438=>array(45,0,534,547),439=>array(72,-33,728,729),440=>array(41,-33,696,729),441=>array(37,-215,586,547),442=>array(57,-208,534,547),443=>array(79,0,609,742),444=>array(41,-33,728,729),445=>array(37,-215,586,547),446=>array(36,-15,525,702),447=>array(84,-208,671,560),448=>array(92,-208,280,729),449=>array(92,-208,566,729),450=>array(5,-208,536,729),451=>array(99,0,274,729),452=>array(92,0,1510,927),453=>array(92,0,1364,800),454=>array(45,-14,1250,800),455=>array(92,-200,917,729),456=>array(92,-216,896,760),457=>array(84,-216,602,760),458=>array(92,-200,1117,729),459=>array(92,-216,1096,760),460=>array(84,-216,971,760),461=>array(5,0,769,927),462=>array(43,-14,596,800),463=>array(3,0,371,927),464=>array(2,0,370,800),465=>array(50,-14,800,927),466=>array(43,-14,644,800),467=>array(92,-14,720,927),468=>array(78,-14,628,800),469=>array(92,-14,720,1040),470=>array(78,-14,628,914),471=>array(92,-14,720,1114),472=>array(78,-14,628,917),473=>array(92,-14,720,1114),474=>array(78,-14,628,917),475=>array(92,-14,720,1114),476=>array(78,-14,628,917),477=>array(43,-14,630,560),478=>array(5,0,769,1040),479=>array(43,-14,596,914),480=>array(5,0,769,1042),481=>array(43,-14,596,914),482=>array(0,0,1012,914),483=>array(43,-14,1000,758),484=>array(50,-14,792,742),485=>array(45,-216,674,559),486=>array(50,-14,747,927),487=>array(45,-216,632,800),488=>array(92,0,805,927),489=>array(-5,0,684,927),490=>array(50,-196,800,742),491=>array(43,-196,644,560),492=>array(50,-196,800,914),493=>array(43,-196,644,763),494=>array(72,-33,728,927),495=>array(43,-215,593,793),496=>array(-33,-216,359,800),497=>array(92,0,1510,729),498=>array(92,0,1364,729),499=>array(45,-14,1250,760),500=>array(50,-14,747,928),501=>array(45,-216,632,800),502=>array(92,-14,1186,729),503=>array(92,-208,737,742),504=>array(92,0,745,927),505=>array(84,0,634,800),506=>array(5,0,769,931),507=>array(43,-14,708,931),508=>array(0,0,1012,927),509=>array(43,-14,1000,800),510=>array(22,-36,823,927),511=>array(38,-46,645,800),512=>array(5,0,769,928),513=>array(43,-14,596,800),514=>array(5,0,769,923),515=>array(43,-14,596,784),516=>array(92,0,610,928),517=>array(43,-14,630,800),518=>array(92,0,610,923),519=>array(43,-14,630,784),520=>array(-41,0,377,928),521=>array(-3,0,381,800),522=>array(23,0,351,923),523=>array(7,0,335,784),524=>array(50,-14,800,928),525=>array(43,-14,644,800),526=>array(50,-14,800,923),527=>array(43,-14,644,784),528=>array(92,0,750,928),529=>array(58,0,490,800),530=>array(92,0,750,923),531=>array(84,0,490,784),532=>array(92,-14,720,928),533=>array(78,-14,628,800),534=>array(92,-14,720,923),535=>array(78,-14,628,784),536=>array(72,-239,647,742),537=>array(52,-239,548,560),538=>array(5,-239,677,729),539=>array(13,-239,455,702),540=>array(67,-210,616,742),541=>array(49,-211,544,560),542=>array(92,0,745,927),543=>array(-12,0,634,927),544=>array(84,-208,730,742),545=>array(45,-75,822,760),546=>array(61,-14,748,742),547=>array(43,-14,616,646),548=>array(45,-216,680,729),549=>array(45,-216,534,547),550=>array(5,0,769,927),551=>array(43,-14,596,760),552=>array(92,-192,610,729),553=>array(43,-196,630,560),554=>array(50,-14,800,1040),555=>array(43,-14,644,914),556=>array(50,-14,800,1040),557=>array(43,-14,644,898),558=>array(50,-14,800,927),559=>array(43,-14,644,760),560=>array(50,-14,800,1042),561=>array(43,-14,644,914),562=>array(-10,0,734,914),563=>array(12,-216,634,763),564=>array(84,-75,449,760),565=>array(84,-75,824,560),566=>array(13,-76,469,702),567=>array(-33,-216,259,547),568=>array(45,-14,1043,760),569=>array(45,-208,1043,560),570=>array(-14,-36,788,765),571=>array(-34,-36,768,765),572=>array(-7,-46,600,594),573=>array(-1,0,610,729),574=>array(-60,-36,742,765),575=>array(52,-240,595,560),576=>array(45,-240,595,547),577=>array(40,0,741,729),578=>array(42,0,573,560),579=>array(6,0,692,729),580=>array(23,-14,789,729),581=>array(5,0,769,729),582=>array(92,-93,610,822),583=>array(43,-93,630,640),584=>array(-56,-200,360,729),585=>array(-33,-216,360,760),586=>array(48,-200,927,741),587=>array(45,-216,800,560),588=>array(6,0,750,729),589=>array(-21,0,490,560),590=>array(-10,0,734,729),591=>array(-4,-216,656,547),592=>array(78,-14,631,560),593=>array(45,-14,632,560),594=>array(84,-14,671,560),595=>array(84,-14,671,760),596=>array(43,-14,526,560),597=>array(43,-69,526,560),598=>array(45,-216,750,760),599=>array(45,-14,801,760),600=>array(43,-14,630,560),601=>array(43,-14,630,560),602=>array(59,-14,885,560),603=>array(54,-14,493,560),604=>array(54,-14,493,560),605=>array(54,-14,769,560),606=>array(54,-14,665,560),607=>array(-33,-216,360,547),608=>array(45,-216,801,760),609=>array(45,-216,632,547),610=>array(43,-14,545,546),611=>array(25,-211,619,547),612=>array(25,-21,619,547),613=>array(78,-214,628,547),614=>array(84,0,634,760),615=>array(84,-216,634,760),616=>array(84,0,461,760),617=>array(83,0,356,547),618=>array(84,0,461,547),619=>array(84,0,475,760),620=>array(84,0,609,760),621=>array(85,-216,429,760),622=>array(84,-215,793,760),623=>array(79,-14,959,546),624=>array(79,-209,959,546),625=>array(83,-216,964,560),626=>array(-33,-216,634,560),627=>array(84,-216,802,560),628=>array(84,0,623,547),629=>array(43,-14,644,560),630=>array(43,-1,826,547),631=>array(51,0,630,574),632=>array(60,-208,729,760),633=>array(84,-13,490,547),634=>array(84,-13,490,760),635=>array(84,-216,659,547),636=>array(84,-208,490,560),637=>array(83,-216,490,560),638=>array(84,0,530,547),639=>array(84,0,530,547),640=>array(52,0,590,547),641=>array(52,0,590,547),642=>array(52,-216,548,560),643=>array(-33,-216,431,760),644=>array(-11,-216,444,760),645=>array(84,-216,539,560),646=>array(-31,-217,561,760),647=>array(13,-155,455,547),648=>array(13,-216,455,702),649=>array(84,-14,836,547),650=>array(79,-14,693,547),651=>array(83,0,625,547),652=>array(15,0,637,547),653=>array(35,0,889,547),654=>array(12,0,634,763),655=>array(64,0,660,547),656=>array(45,-216,703,547),657=>array(45,-69,617,547),658=>array(43,-215,593,547),659=>array(57,-215,593,547),660=>array(36,0,525,759),661=>array(36,0,525,759),662=>array(36,0,525,759),663=>array(36,-208,525,759),664=>array(50,-14,800,742),665=>array(84,0,589,547),666=>array(54,-14,665,560),667=>array(43,0,693,760),668=>array(84,0,607,547),669=>array(-170,-216,341,760),670=>array(84,-213,684,547),671=>array(84,0,499,547),672=>array(45,-208,801,760),673=>array(36,0,525,759),674=>array(36,0,525,759),675=>array(45,-14,1108,760),676=>array(45,-215,1167,760),677=>array(45,-55,1107,760),678=>array(13,0,928,702),679=>array(13,-216,777,760),680=>array(13,-69,881,702),681=>array(19,-216,979,760),682=>array(84,0,815,760),683=>array(84,0,732,760),684=>array(22,0,569,641),685=>array(22,86,345,641),686=>array(-89,-214,629,760),687=>array(-89,-216,797,760),688=>array(54,326,406,751),689=>array(54,326,406,751),690=>array(-21,205,166,751),691=>array(54,326,314,640),692=>array(54,319,314,632),693=>array(54,205,421,632),694=>array(14,326,358,632),695=>array(22,326,569,632),696=>array(8,205,406,632),697=>array(78,557,218,800),698=>array(78,557,437,800),699=>array(103,418,318,729),700=>array(63,418,278,729),701=>array(124,616,296,856),702=>array(116,481,255,760),703=>array(116,481,255,760),704=>array(23,326,336,751),705=>array(23,326,336,751),706=>array(130,517,370,843),707=>array(130,517,370,843),708=>array(87,561,413,800),709=>array(87,561,413,800),710=>array(66,616,434,800),711=>array(66,616,434,800),712=>array(107,488,199,759),713=>array(96,668,404,760),714=>array(178,616,454,800),715=>array(46,616,322,800),716=>array(107,-81,199,190),717=>array(96,-184,404,-92),718=>array(46,-236,322,-52),719=>array(178,-236,454,-52),720=>array(45,0,246,547),721=>array(45,361,246,547),722=>array(116,269,255,547),723=>array(116,269,255,547),724=>array(138,238,357,458),725=>array(141,238,360,458),726=>array(54,119,362,427),727=>array(54,229,274,317),728=>array(86,639,414,784),729=>array(183,654,317,774),730=>array(111,610,389,888),731=>array(167,-196,376,0),732=>array(80,638,420,778),733=>array(94,616,479,800),734=>array(0,213,360,524),735=>array(111,616,387,800),736=>array(16,208,390,633),737=>array(54,326,166,751),738=>array(33,318,351,640),739=>array(10,326,403,632),740=>array(23,326,336,751),741=>array(96,0,404,693),742=>array(96,0,404,693),743=>array(96,0,404,693),744=>array(96,0,404,693),745=>array(96,0,404,693),748=>array(88,-260,414,-21),749=>array(96,605,404,822),750=>array(92,418,554,729),755=>array(111,-240,389,38),759=>array(80,-196,420,-84),768=>array(-455,616,-179,800),769=>array(-326,616,-50,800),770=>array(-435,616,-67,800),771=>array(-424,638,-84,778),772=>array(-405,668,-97,760),773=>array(-500,663,0,755),774=>array(-409,639,-81,784),775=>array(-338,617,-164,760),776=>array(-402,654,-94,774),777=>array(-370,616,-122,843),778=>array(-390,610,-112,888),779=>array(-404,616,-19,800),780=>array(-435,616,-67,800),781=>array(-297,615,-205,832),782=>array(-390,615,-113,832),783=>array(-484,616,-100,800),784=>array(-409,639,-81,882),785=>array(-409,639,-81,784),786=>array(-271,418,-69,563),787=>array(-266,595,-132,844),788=>array(-266,595,-132,844),789=>array(-89,616,89,800),790=>array(-455,-276,-179,-93),791=>array(-326,-276,-50,-93),792=>array(-380,-240,-211,-6),793=>array(-295,-240,-126,-6),794=>array(-224,658,47,929),795=>array(-175,400,21,609),796=>array(-331,-240,-216,-11),797=>array(-386,-240,-115,-59),798=>array(-389,-240,-118,-59),799=>array(-370,-240,-136,-6),800=>array(-389,-202,-118,-110),801=>array(-423,-216,-79,117),802=>array(-419,-216,-75,117),803=>array(-338,-212,-164,-70),804=>array(-402,-212,-94,-92),805=>array(-365,-240,-135,-11),806=>array(-327,-239,-125,-93),807=>array(-372,-196,-151,0),808=>array(-333,-196,-124,0),809=>array(-297,-240,-205,-47),810=>array(-405,-237,-97,-54),811=>array(-450,-239,-51,-94),812=>array(-435,-240,-67,-57),813=>array(-435,-240,-67,-57),814=>array(-409,-239,-81,-94),815=>array(-409,-240,-81,-95),816=>array(-424,-234,-84,-94),817=>array(-405,-184,-97,-92),818=>array(-500,-236,0,-143),819=>array(-500,-236,0,-9),820=>array(-625,212,1,415),821=>array(-471,214,-94,309),822=>array(-837,214,-86,309),823=>array(-655,-46,-48,594),824=>array(-825,-36,-24,765),825=>array(-285,-240,-170,-11),826=>array(-405,-238,-97,-55),827=>array(-332,-241,-98,-6),828=>array(-450,-239,-51,-94),829=>array(-379,585,-123,842),830=>array(-267,595,-127,867),831=>array(-500,528,0,755),832=>array(-455,616,-179,800),833=>array(-323,616,-47,800),834=>array(-421,638,-81,778),835=>array(-266,595,-132,844),836=>array(-404,654,-55,978),837=>array(-286,-208,-179,-45),838=>array(-403,639,-97,786),839=>array(-360,-226,-140,-35),840=>array(-379,-240,-121,-47),841=>array(-367,-240,-133,-21),842=>array(-420,616,-80,800),843=>array(-420,567,-80,850),844=>array(-420,573,-80,835),845=>array(-459,-230,-41,-30),846=>array(-357,-240,-143,-45),847=>array(-320,610,-179,888),849=>array(-320,610,-179,888),850=>array(-409,640,-81,882),851=>array(-367,-240,-135,-9),855=>array(-320,610,-179,888),856=>array(-120,654,14,774),858=>array(-445,-240,-58,-11),860=>array(-433,-237,458,-79),861=>array(-433,802,458,960),862=>array(-445,797,445,889),863=>array(-445,-185,445,-93),864=>array(-362,756,362,894),865=>array(-445,769,445,927),866=>array(-449,-230,454,-30),880=>array(92,0,606,729),881=>array(84,0,481,547),882=>array(92,0,930,729),883=>array(92,0,744,729),884=>array(78,557,218,800),885=>array(78,-208,218,35),886=>array(92,0,745,729),887=>array(84,0,617,547),890=>array(202,-208,333,-45),891=>array(43,-14,526,560),892=>array(43,-14,526,560),893=>array(43,-14,526,560),894=>array(63,-142,288,547),900=>array(169,616,445,800),901=>array(96,654,445,978),902=>array(26,0,792,800),903=>array(102,253,278,442),904=>array(-24,0,771,800),905=>array(-18,0,915,800),906=>array(-21,0,450,800),908=>array(-19,-14,836,800),910=>array(-27,0,992,800),911=>array(-30,0,867,800),912=>array(23,-19,372,978),913=>array(5,0,769,729),914=>array(92,0,692,729),915=>array(92,0,610,729),916=>array(5,0,769,729),917=>array(92,0,610,729),918=>array(45,0,680,729),919=>array(92,0,745,729),920=>array(50,-14,800,742),921=>array(92,0,280,729),922=>array(92,0,805,729),923=>array(5,0,769,729),924=>array(92,0,903,729),925=>array(92,0,745,729),926=>array(98,0,548,729),927=>array(50,-14,800,742),928=>array(92,0,745,729),929=>array(92,0,692,729),931=>array(92,0,610,729),932=>array(5,0,677,729),933=>array(-10,0,734,729),934=>array(50,0,800,729),935=>array(19,0,751,729),936=>array(56,0,795,729),937=>array(27,0,823,742),938=>array(34,0,342,927),939=>array(-10,0,734,927),940=>array(48,-13,645,800),941=>array(54,-14,493,800),942=>array(84,-208,634,800),943=>array(77,-19,353,800),944=>array(78,-10,629,978),945=>array(48,-13,645,559),946=>array(84,-208,671,773),947=>array(15,-208,667,547),948=>array(43,-14,645,768),949=>array(54,-14,493,560),950=>array(43,-208,542,760),951=>array(84,-208,634,560),952=>array(43,-11,645,768),953=>array(78,-19,348,547),954=>array(84,0,655,547),955=>array(30,0,603,760),956=>array(85,-209,704,547),957=>array(15,0,635,547),958=>array(43,-208,542,760),959=>array(43,-14,644,560),960=>array(42,-19,732,547),961=>array(84,-208,671,562),962=>array(43,-208,526,560),963=>array(43,-14,727,547),964=>array(21,-19,612,547),965=>array(78,-10,629,547),966=>array(64,-208,725,552),967=>array(25,-208,620,547),968=>array(65,-208,724,547),969=>array(43,-13,826,547),970=>array(19,-19,355,774),971=>array(78,-10,629,774),972=>array(43,-14,644,800),973=>array(78,-10,629,800),974=>array(43,-13,826,800),975=>array(92,-208,805,729),976=>array(55,-11,575,768),977=>array(51,-11,612,768),978=>array(21,0,717,729),979=>array(-24,0,954,800),980=>array(21,0,717,927),981=>array(60,-208,729,760),982=>array(22,-13,843,547),983=>array(54,-205,688,548),984=>array(50,-208,800,742),985=>array(43,-208,644,560),986=>array(50,-208,678,729),987=>array(43,-208,541,547),988=>array(92,0,599,729),989=>array(-56,-208,437,760),990=>array(61,2,646,729),991=>array(82,0,571,759),992=>array(56,-208,843,742),993=>array(22,-180,537,559),994=>array(50,-213,1043,729),995=>array(59,-208,775,547),996=>array(50,-208,740,742),997=>array(45,-208,632,560),998=>array(92,-213,878,729),999=>array(21,-14,689,575),1000=>array(42,-208,692,745),1001=>array(46,-208,608,560),1002=>array(53,0,736,742),1003=>array(49,0,622,560),1004=>array(50,-14,715,758),1005=>array(83,-14,670,758),1006=>array(28,-208,654,729),1007=>array(27,-208,563,729),1008=>array(54,-7,688,548),1009=>array(84,-216,671,562),1010=>array(43,-14,526,560),1011=>array(-33,-216,259,760),1012=>array(50,-14,800,742),1013=>array(67,-14,550,560),1014=>array(81,-14,563,560),1015=>array(92,0,692,729),1016=>array(84,-208,671,760),1017=>array(50,-14,670,742),1018=>array(92,0,903,729),1019=>array(73,-208,649,547),1020=>array(33,-208,671,562),1021=>array(33,-14,653,742),1022=>array(50,-14,670,742),1023=>array(33,-14,653,742),1024=>array(92,0,610,927),1025=>array(92,0,610,927),1026=>array(5,-200,798,729),1027=>array(92,0,610,928),1028=>array(50,-14,670,742),1029=>array(72,-14,647,742),1030=>array(92,0,280,729),1031=>array(32,0,339,927),1032=>array(-56,-200,280,729),1033=>array(46,0,1102,729),1034=>array(92,0,1060,729),1035=>array(5,0,798,729),1036=>array(92,0,803,928),1037=>array(92,0,745,927),1038=>array(29,0,741,927),1039=>array(92,-157,745,729),1040=>array(5,0,769,729),1041=>array(92,0,692,729),1042=>array(92,0,692,729),1043=>array(92,0,610,729),1044=>array(60,-157,831,729),1045=>array(92,0,610,729),1046=>array(15,0,1209,729),1047=>array(66,-14,645,742),1048=>array(92,0,745,729),1049=>array(92,0,745,927),1050=>array(92,0,803,729),1051=>array(46,0,739,729),1052=>array(92,0,903,729),1053=>array(92,0,745,729),1054=>array(50,-14,800,742),1055=>array(92,0,745,729),1056=>array(92,0,692,729),1057=>array(50,-14,670,742),1058=>array(5,0,677,729),1059=>array(29,0,741,729),1060=>array(50,0,941,729),1061=>array(19,0,751,729),1062=>array(92,-157,868,729),1063=>array(81,0,716,729),1064=>array(92,0,1143,729),1065=>array(92,-157,1266,729),1066=>array(49,0,890,729),1067=>array(92,0,944,729),1068=>array(92,0,692,729),1069=>array(64,-14,684,742),1070=>array(92,-14,1119,742),1071=>array(64,0,678,729),1072=>array(43,-14,596,560),1073=>array(43,-14,655,792),1074=>array(84,0,589,547),1075=>array(84,0,499,547),1076=>array(56,-138,751,547),1077=>array(43,-14,630,560),1078=>array(15,0,980,547),1079=>array(49,-14,518,560),1080=>array(84,0,617,547),1081=>array(84,0,617,765),1082=>array(84,0,664,547),1083=>array(55,0,648,547),1084=>array(84,0,733,547),1085=>array(84,0,607,547),1086=>array(43,-14,644,560),1087=>array(84,0,607,547),1088=>array(84,-208,671,560),1089=>array(43,-14,526,560),1090=>array(4,0,575,547),1091=>array(12,-216,634,547),1092=>array(55,-208,937,760),1093=>array(15,0,630,547),1094=>array(84,-138,698,547),1095=>array(64,0,573,547),1096=>array(84,0,972,547),1097=>array(84,-138,1063,547),1098=>array(20,0,711,547),1099=>array(84,0,823,547),1100=>array(84,0,588,547),1101=>array(67,-14,550,560),1102=>array(84,-14,928,560),1103=>array(31,0,560,547),1104=>array(43,-14,630,803),1105=>array(43,-14,630,774),1106=>array(20,-216,669,760),1107=>array(84,0,520,803),1108=>array(43,-14,526,560),1109=>array(52,-14,548,560),1110=>array(84,0,259,760),1111=>array(17,0,325,774),1112=>array(-33,-216,259,760),1113=>array(44,0,942,547),1114=>array(84,0,912,547),1115=>array(20,0,656,760),1116=>array(84,0,664,803),1117=>array(84,0,617,803),1118=>array(12,-216,634,765),1119=>array(84,-138,607,547),1120=>array(50,-14,1043,729),1121=>array(43,-13,826,547),1122=>array(49,0,791,729),1123=>array(20,0,692,731),1124=>array(92,-14,948,742),1125=>array(84,-14,760,560),1126=>array(8,0,984,729),1127=>array(25,0,807,547),1128=>array(92,0,1351,729),1129=>array(84,0,1097,547),1130=>array(50,0,800,729),1131=>array(43,0,644,547),1132=>array(92,0,1137,729),1133=>array(84,0,964,547),1134=>array(54,-208,616,938),1135=>array(40,-193,493,756),1136=>array(9,0,1060,729),1137=>array(9,-208,1046,759),1138=>array(50,-14,800,742),1139=>array(43,-14,644,560),1140=>array(5,0,826,742),1141=>array(9,0,681,560),1142=>array(5,0,826,928),1143=>array(9,0,681,800),1144=>array(47,-216,1130,742),1145=>array(43,-216,1025,560),1146=>array(50,-14,1024,742),1147=>array(43,-14,820,560),1148=>array(57,-14,1348,928),1149=>array(47,-13,1126,828),1150=>array(50,-14,1043,910),1151=>array(43,-13,826,746),1152=>array(50,-208,670,742),1153=>array(43,-208,526,560),1154=>array(27,-33,521,488),1155=>array(-601,606,-85,822),1156=>array(-413,638,0,784),1157=>array(-365,595,-231,785),1158=>array(-365,595,-231,785),1159=>array(-796,592,4,788),1160=>array(-1069,-179,383,928),1161=>array(-996,-280,306,1022),1162=>array(92,-208,933,927),1163=>array(84,-208,782,765),1164=>array(23,0,692,729),1165=>array(0,0,567,702),1166=>array(92,0,702,729),1167=>array(84,-208,671,560),1168=>array(92,0,610,878),1169=>array(84,0,499,700),1170=>array(28,0,638,729),1171=>array(21,0,519,547),1172=>array(92,-200,728,729),1173=>array(84,-216,591,547),1174=>array(15,-157,1209,729),1175=>array(15,-138,980,547),1176=>array(66,-196,645,742),1177=>array(49,-196,518,560),1178=>array(92,-157,803,729),1179=>array(84,-138,664,547),1180=>array(92,0,803,729),1181=>array(84,0,664,547),1182=>array(23,0,803,729),1183=>array(7,0,664,760),1184=>array(24,0,1000,729),1185=>array(20,0,812,547),1186=>array(92,-157,932,729),1187=>array(84,-138,783,547),1188=>array(92,0,1075,729),1189=>array(84,0,847,547),1190=>array(92,-200,1193,729),1191=>array(84,-216,939,547),1192=>array(56,-14,924,743),1193=>array(55,-14,836,560),1194=>array(50,-196,670,742),1195=>array(43,-196,526,560),1196=>array(5,-157,677,729),1197=>array(4,-138,575,547),1198=>array(-10,0,734,729),1199=>array(12,-216,634,547),1200=>array(-10,0,734,729),1201=>array(12,-216,634,547),1202=>array(19,-157,751,729),1203=>array(15,-138,630,547),1204=>array(5,-157,1088,729),1205=>array(4,-138,976,547),1206=>array(81,-157,904,729),1207=>array(64,-138,749,547),1208=>array(81,0,716,729),1209=>array(64,0,573,547),1210=>array(81,0,716,729),1211=>array(84,0,634,760),1212=>array(7,-14,976,742),1213=>array(5,-14,761,560),1214=>array(7,-184,976,742),1215=>array(5,-161,761,560),1216=>array(92,0,280,729),1217=>array(15,0,1209,927),1218=>array(15,0,980,784),1219=>array(92,-200,769,729),1220=>array(84,-216,626,547),1221=>array(26,-208,926,729),1222=>array(21,-208,781,547),1223=>array(92,-200,745,729),1224=>array(84,-216,608,547),1225=>array(92,-208,933,729),1226=>array(84,-208,782,547),1227=>array(81,-157,716,729),1228=>array(64,-138,573,547),1229=>array(92,-208,1090,729),1230=>array(84,-208,908,547),1231=>array(84,0,259,760),1232=>array(5,0,769,935),1233=>array(43,-14,596,780),1234=>array(5,0,769,927),1235=>array(43,-14,596,774),1236=>array(0,0,1012,729),1237=>array(43,-14,1000,560),1238=>array(92,0,610,927),1239=>array(43,-14,630,784),1240=>array(51,-14,800,742),1241=>array(43,-14,630,560),1242=>array(51,-14,800,927),1243=>array(43,-14,630,774),1244=>array(15,0,1209,927),1245=>array(15,0,980,774),1246=>array(66,-14,645,927),1247=>array(49,-14,518,773),1248=>array(72,-33,728,729),1249=>array(43,-215,593,547),1250=>array(92,0,745,914),1251=>array(84,0,617,763),1252=>array(92,0,745,927),1253=>array(84,0,617,774),1254=>array(50,-14,800,927),1255=>array(43,-14,644,774),1256=>array(50,-14,800,742),1257=>array(43,-14,644,560),1258=>array(50,-14,800,927),1259=>array(43,-14,644,774),1260=>array(64,-14,684,927),1261=>array(67,-14,550,774),1262=>array(29,0,741,914),1263=>array(12,-216,634,763),1264=>array(29,0,741,927),1265=>array(12,-216,634,774),1266=>array(29,0,741,927),1267=>array(12,-216,634,800),1268=>array(81,0,716,927),1269=>array(64,0,573,774),1270=>array(92,-157,610,729),1271=>array(84,-138,499,547),1272=>array(92,0,944,927),1273=>array(84,0,823,774),1274=>array(28,-216,638,729),1275=>array(21,-217,519,547),1276=>array(19,-200,750,729),1277=>array(15,-216,620,547),1278=>array(19,0,751,729),1279=>array(15,0,630,547),1280=>array(70,0,670,729),1281=>array(44,0,524,547),1282=>array(70,-14,1081,729),1283=>array(44,-14,850,547),1284=>array(98,-14,1027,742),1285=>array(79,-14,836,560),1286=>array(98,-208,804,742),1287=>array(79,-208,668,560),1288=>array(26,-14,1150,729),1289=>array(21,-14,933,547),1290=>array(92,-14,1186,729),1291=>array(84,-14,939,547),1292=>array(50,-14,748,742),1293=>array(43,-14,544,546),1294=>array(5,-14,846,729),1295=>array(4,-14,709,547),1296=>array(67,-14,616,742),1297=>array(54,-14,493,560),1298=>array(46,-200,739,729),1299=>array(55,-216,648,547),1300=>array(46,0,1266,729),1301=>array(55,0,1053,547),1302=>array(92,0,1045,729),1303=>array(84,-208,964,560),1304=>array(64,0,1008,729),1305=>array(31,-14,965,560),1306=>array(50,-146,800,742),1307=>array(45,-208,632,559),1308=>array(30,0,1072,729),1309=>array(35,0,889,547),1310=>array(92,0,803,729),1311=>array(84,0,664,547),1312=>array(46,-200,1187,729),1313=>array(55,-216,980,547),1314=>array(92,-200,1193,729),1315=>array(84,-216,939,547),1316=>array(92,-157,933,729),1317=>array(84,-138,782,547),1329=>array(83,-38,731,729),1330=>array(83,0,655,743),1331=>array(26,0,728,743),1332=>array(22,0,731,743),1333=>array(83,-14,655,729),1334=>array(66,0,664,743),1335=>array(83,0,625,729),1336=>array(83,0,655,743),1337=>array(83,-13,903,742),1338=>array(26,-14,728,729),1339=>array(83,0,648,729),1340=>array(83,0,549,729),1341=>array(83,-14,888,729),1342=>array(62,-12,722,741),1343=>array(74,0,639,729),1344=>array(4,-46,598,729),1345=>array(66,-48,664,743),1346=>array(18,0,715,743),1347=>array(22,0,660,735),1348=>array(83,-14,780,729),1349=>array(57,-14,645,743),1350=>array(0,-14,697,729),1351=>array(57,-14,655,729),1352=>array(83,0,648,743),1353=>array(40,-48,638,743),1354=>array(18,0,789,743),1355=>array(57,0,654,743),1356=>array(83,0,780,743),1357=>array(92,-14,720,729),1358=>array(18,0,715,729),1359=>array(53,-14,641,743),1360=>array(83,0,648,743),1361=>array(57,-14,645,743),1362=>array(83,0,567,729),1363=>array(22,0,811,729),1364=>array(9,0,645,743),1365=>array(49,-14,799,742),1366=>array(44,-14,833,729),1369=>array(104,481,230,760),1370=>array(57,418,250,729),1371=>array(0,616,310,800),1372=>array(0,595,375,893),1373=>array(-7,614,290,847),1374=>array(0,586,460,878),1375=>array(40,618,434,893),1377=>array(71,-13,863,547),1378=>array(76,-208,571,560),1379=>array(40,-208,700,559),1380=>array(76,-208,703,560),1381=>array(71,-14,567,760),1382=>array(40,-208,700,559),1383=>array(76,0,532,760),1384=>array(76,-208,579,560),1385=>array(76,-208,756,560),1386=>array(40,-14,700,760),1387=>array(76,-208,571,760),1388=>array(76,-208,410,547),1389=>array(76,-208,909,760),1390=>array(40,-14,600,760),1391=>array(71,-208,567,760),1392=>array(76,0,571,760),1393=>array(26,-13,536,760),1394=>array(76,-208,703,560),1395=>array(62,-13,570,768),1396=>array(71,-13,699,760),1397=>array(-30,-216,233,547),1398=>array(-61,-13,567,760),1399=>array(13,-208,456,560),1400=>array(76,0,571,560),1401=>array(5,-208,375,547),1402=>array(71,-208,863,546),1403=>array(44,-208,533,560),1404=>array(76,0,622,560),1405=>array(71,-13,567,547),1406=>array(71,-208,699,760),1407=>array(71,-13,863,560),1408=>array(76,-208,571,560),1409=>array(44,-216,631,559),1410=>array(76,0,475,547),1411=>array(71,-208,863,760),1412=>array(-56,-208,604,560),1413=>array(44,-14,645,560),1414=>array(31,-190,774,760),1415=>array(71,-14,808,760),1417=>array(101,0,259,547),1418=>array(49,180,325,359),1456=>array(296,-229,394,-10),1457=>array(147,-229,501,-10),1458=>array(138,-229,492,-10),1459=>array(125,-229,492,-10),1460=>array(296,-171,394,-73),1461=>array(223,-171,467,-73),1462=>array(235,-229,455,-10),1463=>array(174,-171,516,0),1464=>array(187,-217,504,0),1465=>array(-24,547,73,723),1466=>array(-24,547,73,723),1467=>array(187,-239,528,-5),1468=>array(301,225,399,322),1469=>array(296,-217,394,-22),1470=>array(54,413,361,555),1471=>array(187,547,504,710),1472=>array(98,-98,273,645),1473=>array(753,613,851,710),1474=>array(137,613,235,710),1475=>array(98,0,273,547),1478=>array(78,0,462,547),1479=>array(187,-229,504,-10),1488=>array(84,0,644,547),1489=>array(43,0,567,547),1490=>array(43,-9,418,547),1491=>array(43,0,545,547),1492=>array(91,0,596,547),1493=>array(91,0,252,547),1494=>array(43,0,357,547),1495=>array(91,0,596,547),1496=>array(90,-13,624,553),1497=>array(66,164,228,547),1498=>array(43,-240,487,547),1499=>array(43,0,511,547),1500=>array(43,0,527,711),1501=>array(91,0,605,547),1502=>array(43,0,633,554),1503=>array(91,-240,252,547),1504=>array(43,0,362,547),1505=>array(90,-13,624,547),1506=>array(43,-101,575,547),1507=>array(91,-240,584,547),1508=>array(91,0,603,547),1509=>array(11,-240,543,548),1510=>array(33,0,564,547),1511=>array(91,-240,660,546),1512=>array(43,0,511,547),1513=>array(20,0,750,547),1514=>array(10,-4,592,547),1520=>array(91,0,574,547),1521=>array(66,0,524,547),1522=>array(66,164,500,547),1523=>array(84,361,360,547),1524=>array(84,361,626,547),1542=>array(-2,-20,630,892),1543=>array(-2,-20,630,897),1545=>array(65,0,811,635),1546=>array(65,0,1084,635),1548=>array(98,0,322,331),1557=>array(121,612,379,868),1563=>array(98,0,323,689),1567=>array(69,0,515,742),1569=>array(73,20,437,493),1570=>array(-20,0,362,955),1571=>array(75,0,259,993),1572=>array(-42,-244,547,603),1573=>array(76,-245,259,760),1574=>array(63,-107,863,603),1575=>array(84,0,259,760),1576=>array(63,-149,921,327),1577=>array(48,-30,540,513),1578=>array(63,-5,921,415),1579=>array(63,-5,921,537),1580=>array(77,-244,720,425),1581=>array(77,-244,720,425),1582=>array(77,-244,720,579),1583=>array(61,-15,442,415),1584=>array(61,-15,442,579),1585=>array(-42,-244,508,269),1586=>array(-42,-244,508,457),1587=>array(63,-244,1297,366),1588=>array(63,-244,1297,586),1589=>array(63,-244,1265,362),1590=>array(63,-244,1265,457),1591=>array(70,0,971,760),1592=>array(70,0,971,760),1593=>array(87,-244,720,521),1594=>array(87,-244,720,652),1600=>array(-10,0,352,125),1601=>array(63,-24,1082,627),1602=>array(52,-215,825,635),1603=>array(70,-27,814,760),1604=>array(70,-142,778,760),1605=>array(68,-244,660,369),1606=>array(62,-165,779,457),1607=>array(48,-30,540,358),1608=>array(-42,-244,547,322),1609=>array(63,-107,863,462),1610=>array(63,-244,863,462),1611=>array(107,591,393,825),1612=>array(107,591,393,881),1613=>array(107,-239,393,-5),1614=>array(107,591,393,723),1615=>array(107,590,393,881),1616=>array(107,-137,393,-5),1617=>array(88,599,412,869),1618=>array(115,610,383,878),1619=>array(59,584,441,735),1620=>array(154,601,335,822),1621=>array(155,-245,336,-23),1623=>array(107,615,393,906),1626=>array(99,616,401,775),1632=>array(218,195,392,366),1633=>array(140,0,431,635),1634=>array(12,0,598,635),1635=>array(12,0,597,635),1636=>array(74,-10,530,646),1637=>array(63,-10,547,643),1638=>array(37,0,574,635),1639=>array(15,0,596,635),1640=>array(15,0,596,635),1641=>array(32,0,590,640),1642=>array(65,0,545,635),1643=>array(0,-118,349,318),1644=>array(63,418,278,729),1645=>array(42,101,502,537),1646=>array(63,-5,921,327),1647=>array(52,-215,825,484),1648=>array(216,600,284,885),1652=>array(51,641,232,863),1657=>array(63,-5,921,599),1658=>array(63,-5,921,566),1659=>array(63,-244,921,327),1660=>array(63,-171,921,415),1661=>array(63,-5,921,566),1662=>array(63,-244,921,327),1663=>array(63,-5,921,566),1664=>array(63,-244,921,327),1665=>array(77,-244,720,725),1666=>array(77,-244,720,737),1667=>array(77,-244,720,425),1668=>array(77,-244,720,425),1669=>array(77,-244,720,737),1670=>array(77,-244,720,425),1671=>array(77,-244,720,425),1672=>array(61,-15,442,746),1673=>array(61,-180,442,415),1674=>array(61,-171,442,415),1675=>array(61,-171,442,746),1676=>array(61,-15,442,586),1677=>array(61,-146,442,415),1678=>array(61,-15,442,708),1679=>array(61,-15,442,684),1680=>array(61,-15,442,708),1681=>array(-42,-244,520,648),1682=>array(-42,-244,542,556),1683=>array(-42,-244,587,269),1684=>array(-42,-244,522,269),1685=>array(-42,-244,753,269),1686=>array(-42,-244,522,269),1687=>array(-42,-244,508,464),1688=>array(-42,-244,508,586),1689=>array(-42,-244,508,586),1690=>array(63,-244,1297,464),1691=>array(63,-244,1297,366),1692=>array(63,-244,1297,586),1693=>array(63,-244,1265,362),1694=>array(63,-244,1265,586),1695=>array(70,0,971,760),1696=>array(87,-244,720,781),1697=>array(63,-24,1082,484),1698=>array(63,-171,1082,484),1699=>array(63,-171,1082,635),1700=>array(63,-24,1082,786),1701=>array(63,-293,1082,484),1702=>array(63,-24,1082,786),1703=>array(52,-215,825,635),1704=>array(52,-215,825,757),1705=>array(63,-39,1024,760),1706=>array(63,-39,1194,760),1707=>array(63,-39,1024,760),1708=>array(70,-27,814,760),1709=>array(70,-27,814,854),1710=>array(70,-293,814,760),1711=>array(63,-39,1024,910),1712=>array(63,-39,1024,910),1713=>array(63,-39,1024,910),1714=>array(63,-171,1024,910),1715=>array(63,-293,1024,910),1716=>array(63,-39,1024,1025),1717=>array(70,-142,841,971),1718=>array(70,-142,778,952),1719=>array(70,-142,781,1025),1720=>array(70,-391,778,760),1721=>array(62,-317,779,464),1722=>array(62,-165,779,366),1723=>array(62,-165,779,636),1724=>array(62,-330,779,464),1725=>array(62,-165,779,586),1726=>array(70,-33,877,506),1727=>array(77,-244,720,579),1734=>array(-42,-244,547,556),1740=>array(63,-107,863,462),1742=>array(63,-107,863,556),1749=>array(48,-30,540,358),1776=>array(218,195,392,366),1777=>array(140,0,431,635),1778=>array(12,0,598,635),1779=>array(12,0,597,635),1780=>array(12,0,573,650),1781=>array(30,-8,580,643),1782=>array(85,0,514,645),1783=>array(15,0,596,635),1784=>array(15,0,596,635),1785=>array(32,0,590,640),1984=>array(48,-14,648,742),1985=>array(69,0,583,729),1986=>array(80,0,616,729),1987=>array(80,0,616,729),1988=>array(80,0,616,729),1989=>array(80,0,616,729),1990=>array(80,0,616,729),1991=>array(98,0,599,729),1992=>array(98,0,599,729),1993=>array(70,0,625,742),1994=>array(84,0,259,729),1995=>array(43,-14,504,465),1996=>array(15,0,529,729),1997=>array(15,0,637,451),1998=>array(84,0,607,451),1999=>array(84,0,607,451),2000=>array(46,0,548,742),2001=>array(84,0,607,667),2002=>array(43,0,820,742),2003=>array(84,0,467,729),2004=>array(84,0,467,729),2005=>array(84,0,584,729),2006=>array(84,0,604,729),2007=>array(15,0,360,729),2008=>array(84,0,938,532),2009=>array(15,0,491,729),2010=>array(15,0,811,729),2011=>array(84,0,607,451),2012=>array(15,0,637,729),2013=>array(84,0,869,729),2014=>array(84,0,543,729),2015=>array(43,0,692,729),2016=>array(15,0,491,729),2017=>array(15,0,637,729),2018=>array(43,0,531,729),2019=>array(84,0,543,729),2020=>array(84,0,543,581),2021=>array(84,0,543,729),2022=>array(43,0,531,729),2023=>array(43,0,531,729),2027=>array(95,668,403,760),2028=>array(63,638,438,777),2029=>array(185,654,319,774),2030=>array(65,616,433,800),2031=>array(33,616,438,803),2032=>array(63,638,438,777),2033=>array(33,616,438,803),2034=>array(183,-212,317,-92),2035=>array(96,654,404,774),2036=>array(63,418,278,729),2037=>array(103,418,318,729),2040=>array(84,0,607,562),2041=>array(84,0,607,564),2042=>array(-10,0,425,125),3647=>array(62,-147,638,760),3713=>array(43,-14,706,560),3714=>array(43,-14,723,560),3716=>array(43,-14,704,560),3719=>array(21,-241,521,561),3720=>array(42,0,705,560),3722=>array(40,-269,768,560),3725=>array(40,-24,713,610),3732=>array(42,-14,647,560),3733=>array(42,-19,647,561),3734=>array(-22,-240,684,560),3735=>array(20,-14,768,560),3737=>array(37,-15,681,560),3738=>array(38,-15,664,561),3739=>array(38,-15,664,760),3740=>array(60,-12,910,626),3741=>array(64,-14,762,760),3742=>array(76,-14,773,560),3743=>array(76,-14,773,760),3745=>array(24,-14,771,547),3746=>array(40,-23,713,760),3747=>array(48,-10,733,615),3749=>array(41,-33,693,560),3751=>array(33,-33,640,561),3754=>array(51,-21,819,724),3755=>array(44,-21,935,620),3757=>array(53,-20,662,606),3758=>array(48,-14,825,698),3759=>array(43,-259,897,648),3760=>array(36,-16,658,567),3761=>array(-653,610,-31,896),3762=>array(39,0,563,593),3763=>array(-479,0,563,875),3764=>array(-654,622,-62,950),3765=>array(-654,633,13,962),3766=>array(-654,622,-62,950),3767=>array(-654,633,13,962),3768=>array(-426,-385,-165,-55),3769=>array(-473,-316,-174,-28),3771=>array(-653,610,-31,896),3772=>array(-682,-311,15,-48),3773=>array(39,-220,691,776),3776=>array(83,-13,444,561),3777=>array(83,-13,818,561),3778=>array(-37,-14,458,936),3779=>array(23,-14,595,879),3780=>array(-15,-35,585,809),3782=>array(70,-240,688,582),3784=>array(-413,659,-297,844),3785=>array(-627,622,-22,918),3786=>array(-667,621,39,965),3787=>array(-521,612,-187,917),3788=>array(-682,603,15,866),3789=>array(-479,668,-229,875),3792=>array(66,-29,723,563),3793=>array(25,-139,721,586),3794=>array(31,-80,603,711),3795=>array(24,-14,882,981),3796=>array(48,-156,696,711),3797=>array(48,-156,696,711),3798=>array(64,-14,894,950),3799=>array(43,-240,706,560),3800=>array(72,-269,774,582),3801=>array(58,-14,858,564),3804=>array(44,-21,1301,620),3805=>array(44,-21,1305,620),4256=>array(47,-14,827,819),4257=>array(39,-0,719,819),4258=>array(37,-138,667,828),4259=>array(41,-15,793,819),4260=>array(29,0,572,828),4261=>array(24,0,729,828),4262=>array(15,-14,709,819),4263=>array(49,-14,890,828),4264=>array(4,0,415,862),4265=>array(39,0,581,819),4266=>array(18,-14,796,820),4267=>array(48,-14,837,819),4268=>array(43,0,586,819),4269=>array(37,-157,817,829),4270=>array(11,-14,731,822),4271=>array(20,0,585,823),4272=>array(43,-15,863,820),4273=>array(43,-15,587,820),4274=>array(43,-0,586,828),4275=>array(37,-170,817,828),4276=>array(37,0,828,825),4277=>array(28,0,695,820),4278=>array(44,0,586,828),4279=>array(34,0,577,820),4280=>array(39,-14,582,820),4281=>array(43,0,586,819),4282=>array(45,-14,778,827),4283=>array(46,-15,822,820),4284=>array(43,-0,586,819),4285=>array(29,-15,594,828),4286=>array(43,-0,586,819),4287=>array(15,0,726,819),4288=>array(18,-14,796,820),4289=>array(43,0,586,820),4290=>array(37,-15,652,828),4291=>array(9,0,552,820),4292=>array(33,0,561,820),4293=>array(24,-14,714,828),4304=>array(49,-14,505,599),4305=>array(49,-14,515,823),4306=>array(44,-232,578,561),4307=>array(49,-225,786,557),4308=>array(49,-232,496,557),4309=>array(49,-232,505,557),4310=>array(25,-14,502,828),4311=>array(49,-14,779,557),4312=>array(49,0,515,557),4313=>array(49,-232,506,542),4314=>array(49,-225,1025,562),4315=>array(49,-14,505,828),4316=>array(63,-14,520,819),4317=>array(49,-0,765,557),4318=>array(49,-14,505,818),4319=>array(49,-232,504,560),4320=>array(49,0,774,830),4321=>array(63,-14,520,818),4322=>array(49,-232,651,670),4323=>array(29,-232,533,604),4324=>array(49,-232,792,558),4325=>array(49,-232,496,818),4326=>array(49,-225,766,557),4327=>array(49,-232,505,549),4328=>array(20,-14,489,828),4329=>array(63,0,520,828),4330=>array(49,-232,573,548),4331=>array(49,-14,504,818),4332=>array(64,-15,534,828),4333=>array(49,-232,517,818),4334=>array(63,-14,520,818),4335=>array(24,-232,516,580),4336=>array(49,-15,505,823),4337=>array(49,-14,505,823),4338=>array(49,-146,504,557),4339=>array(49,-232,505,558),4340=>array(49,-232,504,828),4341=>array(49,-14,558,828),4342=>array(49,-232,803,557),4343=>array(49,-232,556,557),4344=>array(49,-232,505,549),4345=>array(44,-232,578,561),4346=>array(49,-111,505,557),4347=>array(49,0,399,500),4348=>array(24,400,294,828),5121=>array(5,0,769,729),5122=>array(5,0,769,1056),5123=>array(5,0,769,729),5124=>array(5,0,769,928),5125=>array(92,0,821,729),5126=>array(92,0,821,928),5127=>array(92,0,821,927),5129=>array(92,0,821,729),5130=>array(84,0,813,729),5131=>array(84,0,813,928),5132=>array(92,0,1013,729),5133=>array(5,0,925,729),5134=>array(92,0,1013,729),5135=>array(5,0,925,729),5136=>array(92,0,1013,928),5137=>array(5,0,925,928),5138=>array(92,0,1065,729),5139=>array(92,0,1056,729),5140=>array(92,0,1065,928),5141=>array(92,0,1056,928),5142=>array(92,0,821,928),5143=>array(92,0,1057,729),5144=>array(84,0,1058,729),5145=>array(92,0,1057,928),5146=>array(84,0,1058,928),5147=>array(84,0,813,928),5149=>array(92,607,226,728),5150=>array(60,326,473,734),5151=>array(31,338,379,722),5152=>array(31,338,379,722),5153=>array(60,392,338,711),5154=>array(60,352,338,670),5155=>array(60,392,338,670),5156=>array(60,392,338,670),5157=>array(31,327,518,749),5158=>array(60,326,414,734),5159=>array(92,304,226,424),5160=>array(60,494,338,569),5161=>array(60,392,338,670),5162=>array(60,392,338,693),5163=>array(5,0,1167,729),5164=>array(5,0,940,729),5165=>array(92,0,1170,729),5166=>array(84,0,1251,729),5167=>array(5,0,769,729),5168=>array(5,0,769,1056),5169=>array(5,0,769,729),5170=>array(5,0,769,928),5171=>array(73,0,802,729),5172=>array(73,0,802,928),5173=>array(73,0,802,927),5175=>array(73,0,802,729),5176=>array(73,0,802,729),5177=>array(73,0,802,928),5178=>array(92,0,1013,729),5179=>array(5,0,925,729),5180=>array(92,0,1013,729),5181=>array(5,0,925,729),5182=>array(92,0,1013,928),5183=>array(5,0,925,928),5184=>array(92,0,1046,729),5185=>array(73,0,1056,729),5186=>array(92,0,1046,928),5187=>array(73,0,1056,928),5188=>array(92,0,1046,729),5189=>array(73,0,1058,729),5190=>array(92,0,1046,928),5191=>array(73,0,1058,928),5192=>array(73,0,802,927),5193=>array(60,326,520,727),5194=>array(60,326,172,734),5196=>array(92,-14,720,729),5197=>array(92,0,720,1056),5198=>array(92,0,720,743),5199=>array(92,0,720,928),5200=>array(73,0,759,729),5201=>array(73,0,759,928),5202=>array(73,0,759,927),5204=>array(73,0,759,729),5205=>array(56,0,742,729),5206=>array(56,0,742,928),5207=>array(92,-14,964,729),5208=>array(92,-14,964,729),5209=>array(92,0,964,743),5210=>array(92,0,964,743),5211=>array(92,0,964,928),5212=>array(92,0,964,928),5213=>array(92,0,1003,729),5214=>array(73,0,970,729),5215=>array(92,0,1003,928),5216=>array(73,0,970,928),5217=>array(92,0,986,729),5218=>array(56,0,968,729),5219=>array(92,0,986,928),5220=>array(56,0,968,928),5221=>array(92,0,986,729),5222=>array(60,326,427,733),5223=>array(92,-14,949,734),5224=>array(92,0,949,743),5225=>array(73,0,967,734),5226=>array(56,0,960,734),5227=>array(41,0,651,743),5228=>array(92,0,702,1056),5229=>array(92,0,702,743),5230=>array(92,0,702,928),5231=>array(41,-14,651,729),5232=>array(41,-14,651,928),5233=>array(41,-14,708,927),5234=>array(92,-14,702,729),5235=>array(92,-14,702,928),5236=>array(92,0,937,743),5237=>array(41,0,891,743),5238=>array(92,0,939,743),5239=>array(92,0,891,743),5240=>array(92,0,939,928),5241=>array(92,0,891,928),5242=>array(92,-14,937,729),5243=>array(41,-14,891,729),5244=>array(92,-14,937,928),5245=>array(41,-14,891,928),5246=>array(92,-14,939,729),5247=>array(92,-14,891,729),5248=>array(92,-14,939,928),5249=>array(92,-14,891,928),5250=>array(92,-14,939,729),5251=>array(60,319,445,734),5252=>array(60,319,445,734),5253=>array(41,0,881,743),5254=>array(92,0,881,743),5255=>array(41,-14,881,734),5256=>array(92,-14,881,734),5257=>array(41,0,651,743),5258=>array(92,0,702,1056),5259=>array(92,0,702,743),5260=>array(92,0,702,928),5261=>array(41,-14,651,729),5262=>array(41,-14,651,928),5263=>array(41,-14,714,927),5264=>array(92,-14,702,729),5265=>array(92,-14,702,928),5266=>array(92,0,937,743),5267=>array(41,0,891,743),5268=>array(92,0,988,743),5269=>array(92,0,891,743),5270=>array(92,0,988,928),5271=>array(92,0,891,928),5272=>array(92,-14,937,729),5273=>array(41,-14,891,729),5274=>array(92,-14,937,928),5275=>array(41,-14,891,928),5276=>array(92,-14,988,729),5277=>array(92,-14,891,729),5278=>array(92,-14,988,928),5279=>array(92,-14,891,928),5280=>array(92,-14,988,729),5281=>array(60,319,445,734),5282=>array(60,319,445,734),5283=>array(27,0,535,729),5284=>array(92,0,599,1056),5285=>array(92,0,599,729),5286=>array(92,0,599,928),5287=>array(27,0,535,729),5288=>array(27,0,535,928),5289=>array(27,0,598,927),5290=>array(92,0,599,729),5291=>array(92,0,599,928),5292=>array(92,0,790,729),5293=>array(27,0,771,729),5294=>array(92,0,836,729),5295=>array(92,0,790,729),5296=>array(92,0,836,928),5297=>array(92,0,790,928),5298=>array(92,0,790,729),5299=>array(27,0,790,729),5300=>array(92,0,790,928),5301=>array(27,0,790,928),5302=>array(92,0,836,729),5303=>array(92,0,790,729),5304=>array(92,0,836,928),5305=>array(92,0,790,928),5306=>array(92,0,836,729),5307=>array(60,326,380,734),5308=>array(60,326,492,733),5309=>array(60,326,380,734),5312=>array(84,-14,947,468),5313=>array(41,-14,904,786),5314=>array(41,-14,904,468),5315=>array(41,-14,904,667),5316=>array(27,0,890,482),5317=>array(27,0,890,667),5318=>array(27,0,890,667),5319=>array(41,0,904,482),5320=>array(41,0,904,667),5321=>array(92,-14,1197,468),5322=>array(84,-14,1163,468),5323=>array(92,0,1172,482),5324=>array(41,0,1144,482),5325=>array(92,0,1172,667),5326=>array(41,0,1144,667),5327=>array(41,0,904,667),5328=>array(60,477,604,742),5329=>array(60,319,440,734),5330=>array(60,477,604,742),5331=>array(84,0,947,468),5332=>array(41,0,904,786),5333=>array(41,0,904,468),5334=>array(41,0,904,667),5335=>array(27,0,890,468),5336=>array(27,0,890,667),5337=>array(27,0,890,667),5338=>array(41,0,904,468),5339=>array(41,0,904,667),5340=>array(92,0,1190,468),5341=>array(84,0,1163,468),5342=>array(92,0,1199,468),5343=>array(41,0,1144,468),5344=>array(92,0,1199,667),5345=>array(41,0,1144,667),5346=>array(92,0,1187,468),5347=>array(27,0,1130,468),5348=>array(92,0,1187,667),5349=>array(27,0,1130,667),5350=>array(92,0,1199,468),5351=>array(41,0,1144,468),5352=>array(92,0,1199,667),5353=>array(41,0,1144,667),5354=>array(60,477,604,734),5356=>array(73,0,802,729),5357=>array(41,0,638,729),5358=>array(92,0,736,1056),5359=>array(92,0,689,729),5360=>array(92,0,689,928),5361=>array(41,0,638,729),5362=>array(41,0,638,928),5363=>array(41,0,694,927),5364=>array(92,0,689,729),5365=>array(92,0,689,928),5366=>array(92,0,906,729),5367=>array(41,0,875,729),5368=>array(92,0,926,729),5369=>array(92,0,905,729),5370=>array(92,0,926,928),5371=>array(92,0,905,928),5372=>array(92,0,906,729),5373=>array(41,0,875,729),5374=>array(92,0,906,928),5375=>array(41,0,875,928),5376=>array(92,0,926,729),5377=>array(92,0,905,729),5378=>array(92,0,926,928),5379=>array(92,0,905,928),5380=>array(92,0,926,729),5381=>array(60,326,437,734),5382=>array(60,319,404,742),5383=>array(60,326,437,734),5392=>array(41,-14,882,743),5393=>array(41,-14,882,743),5394=>array(41,-14,882,928),5395=>array(41,-14,1095,482),5396=>array(41,-14,1095,667),5397=>array(41,-14,1095,482),5398=>array(41,-14,1095,667),5399=>array(92,-14,1168,743),5400=>array(41,-14,1118,743),5401=>array(92,-14,1168,743),5402=>array(41,-14,1118,743),5403=>array(92,-14,1168,928),5404=>array(41,-14,1118,928),5405=>array(92,-14,1390,482),5406=>array(41,-14,1336,482),5407=>array(92,-14,1390,667),5408=>array(41,-14,1336,667),5409=>array(92,-14,1390,482),5410=>array(41,-14,1336,482),5411=>array(92,-14,1390,667),5412=>array(41,-14,1336,667),5413=>array(60,469,690,747),5414=>array(84,0,684,729),5415=>array(92,0,692,1056),5416=>array(92,0,692,729),5417=>array(92,0,692,928),5418=>array(84,0,684,729),5419=>array(84,0,684,928),5420=>array(84,0,750,927),5421=>array(92,0,692,729),5422=>array(92,0,692,928),5423=>array(92,0,911,729),5424=>array(84,0,919,729),5425=>array(92,0,929,729),5426=>array(92,0,912,729),5427=>array(92,0,929,928),5428=>array(92,0,912,928),5429=>array(92,0,911,729),5430=>array(84,0,919,729),5431=>array(92,0,911,928),5432=>array(84,0,919,928),5433=>array(92,0,929,729),5434=>array(92,0,912,729),5435=>array(92,0,929,928),5436=>array(92,0,912,928),5437=>array(92,0,929,928),5438=>array(60,326,438,734),5440=>array(60,392,338,670),5441=>array(60,326,454,734),5442=>array(92,-14,949,468),5443=>array(84,-14,941,468),5444=>array(27,0,884,482),5445=>array(92,0,949,786),5446=>array(92,0,949,482),5447=>array(92,0,949,667),5448=>array(92,0,692,729),5449=>array(92,0,692,928),5450=>array(92,0,692,729),5451=>array(41,0,641,729),5452=>array(41,0,641,928),5453=>array(41,0,641,729),5454=>array(92,0,911,928),5455=>array(41,0,875,928),5456=>array(60,326,438,727),5458=>array(73,0,802,729),5459=>array(51,0,769,743),5460=>array(51,-14,769,1056),5461=>array(51,-14,769,729),5462=>array(51,-14,769,928),5463=>array(73,0,844,663),5464=>array(73,0,844,928),5465=>array(84,0,855,663),5466=>array(84,0,855,928),5467=>array(92,0,1099,928),5468=>array(84,0,1058,928),5469=>array(60,311,546,675),5470=>array(92,-14,720,743),5471=>array(92,-14,720,743),5472=>array(92,-14,720,743),5473=>array(92,-14,720,743),5474=>array(92,-14,720,928),5475=>array(92,-14,720,928),5476=>array(54,0,759,729),5477=>array(54,0,759,928),5478=>array(56,0,762,729),5479=>array(56,0,762,928),5480=>array(92,0,1006,928),5481=>array(56,0,968,928),5482=>array(60,326,512,733),5492=>array(41,0,893,743),5493=>array(84,0,936,743),5494=>array(84,0,936,928),5495=>array(41,-14,893,729),5496=>array(41,-14,893,928),5497=>array(84,-14,936,729),5498=>array(84,-14,936,928),5499=>array(60,319,562,734),5500=>array(92,0,745,729),5501=>array(60,326,454,734),5502=>array(60,0,1197,1056),5503=>array(60,0,1197,743),5504=>array(60,0,1197,928),5505=>array(60,-14,1146,729),5506=>array(60,-14,1146,928),5507=>array(60,-14,1197,729),5508=>array(60,-14,1197,928),5509=>array(60,319,939,734),5514=>array(41,0,893,743),5515=>array(84,0,936,743),5516=>array(41,-14,893,729),5517=>array(84,-14,936,729),5518=>array(60,0,1550,1056),5519=>array(60,0,1550,743),5520=>array(60,0,1550,928),5521=>array(60,-14,1203,741),5522=>array(60,-14,1203,928),5523=>array(60,-14,1550,741),5524=>array(60,-14,1550,928),5525=>array(60,335,792,741),5526=>array(60,335,1217,741),5536=>array(41,0,904,709),5537=>array(41,0,904,709),5538=>array(27,-242,890,468),5539=>array(27,-242,890,667),5540=>array(41,-242,904,468),5541=>array(41,-242,904,667),5542=>array(60,344,604,734),5543=>array(84,0,771,729),5544=>array(5,0,692,729),5545=>array(5,0,692,928),5546=>array(84,0,771,729),5547=>array(84,0,771,928),5548=>array(5,0,692,729),5549=>array(5,0,692,928),5550=>array(15,326,438,734),5551=>array(92,-14,702,729),5598=>array(92,0,778,729),5601=>array(52,0,738,729),5702=>array(60,326,439,734),5703=>array(60,240,439,820),5742=>array(10,0,403,306),5743=>array(60,0,1146,743),5744=>array(60,0,1499,743),5745=>array(60,0,1975,743),5746=>array(60,0,1975,928),5747=>array(60,-14,1628,741),5748=>array(60,-14,1586,928),5749=>array(60,-14,1975,741),5750=>array(60,-14,1975,928),5760=>array(-10,219,553,354),5761=>array(-10,-125,646,354),5762=>array(-10,-125,955,354),5763=>array(-10,-125,1264,354),5764=>array(-10,-125,1572,354),5765=>array(-10,-125,1881,354),5766=>array(-10,219,637,697),5767=>array(-10,219,945,697),5768=>array(-10,219,1264,697),5769=>array(-10,219,1569,697),5770=>array(-10,219,1881,697),5771=>array(-10,-125,579,697),5772=>array(-10,-125,888,697),5773=>array(-10,-125,1198,697),5774=>array(-10,-125,1507,697),5775=>array(-10,-125,1817,697),5776=>array(-10,41,646,532),5777=>array(-10,41,955,532),5778=>array(-10,41,1264,532),5779=>array(-10,41,1572,532),5780=>array(-10,41,1881,532),5781=>array(-10,-125,579,697),5782=>array(-10,-125,948,697),5783=>array(-10,-109,798,354),5784=>array(-10,-254,1244,354),5785=>array(-10,219,1569,928),5786=>array(-10,14,750,354),5787=>array(55,-49,648,622),5788=>array(-10,-49,583,622),7424=>array(15,0,637,547),7425=>array(0,0,755,547),7426=>array(43,-14,1000,560),7427=>array(20,0,564,547),7428=>array(43,-14,526,560),7429=>array(84,-1,611,547),7430=>array(20,-1,611,547),7431=>array(92,0,480,547),7432=>array(54,-14,493,560),7433=>array(84,-213,259,547),7434=>array(44,-14,416,547),7435=>array(84,0,684,547),7436=>array(-18,0,499,547),7437=>array(84,0,733,547),7438=>array(84,0,617,547),7439=>array(43,-14,644,560),7440=>array(43,-14,526,560),7441=>array(43,-27,617,573),7442=>array(43,31,617,515),7443=>array(13,-28,653,579),7444=>array(43,-14,1046,560),7446=>array(43,273,644,560),7447=>array(44,-14,646,273),7448=>array(51,0,515,547),7449=>array(21,0,560,547),7450=>array(21,0,560,547),7451=>array(4,0,575,547),7452=>array(84,-14,607,547),7453=>array(85,10,646,560),7454=>array(69,10,857,561),7455=>array(19,-238,651,560),7456=>array(15,0,637,547),7457=>array(35,0,889,547),7458=>array(45,0,534,547),7459=>array(57,-14,581,547),7462=>array(84,0,499,547),7463=>array(15,0,637,547),7464=>array(84,0,607,547),7465=>array(51,0,515,547),7466=>array(84,0,698,547),7467=>array(55,0,648,547),7468=>array(3,326,484,734),7469=>array(0,326,638,734),7470=>array(58,326,436,734),7472=>array(58,326,490,734),7473=>array(58,326,384,734),7474=>array(58,326,384,734),7475=>array(31,318,471,742),7476=>array(58,326,469,734),7477=>array(58,326,176,734),7478=>array(-35,214,176,734),7479=>array(58,326,507,734),7480=>array(58,326,384,734),7481=>array(58,326,569,734),7482=>array(58,326,469,734),7483=>array(58,326,469,734),7484=>array(31,318,504,742),7485=>array(39,318,471,742),7486=>array(58,326,436,734),7487=>array(58,326,473,734),7488=>array(3,326,426,734),7489=>array(58,318,454,734),7490=>array(19,326,675,734),7491=>array(53,318,402,640),7492=>array(53,318,402,640),7493=>array(53,318,423,640),7494=>array(53,318,656,640),7495=>array(53,318,423,751),7496=>array(53,318,423,751),7497=>array(53,318,423,640),7498=>array(53,318,423,640),7499=>array(53,318,330,640),7500=>array(53,318,330,640),7501=>array(53,205,423,639),7502=>array(53,207,164,632),7503=>array(53,326,431,751),7504=>array(53,326,607,640),7505=>array(53,205,399,640),7506=>array(53,318,432,640),7507=>array(53,318,357,640),7508=>array(53,479,432,640),7509=>array(53,318,432,479),7510=>array(53,209,423,640),7511=>array(53,326,332,719),7512=>array(53,318,399,632),7513=>array(53,332,407,640),7514=>array(53,318,607,632),7515=>array(53,326,445,632),7517=>array(53,209,423,759),7518=>array(10,209,420,632),7519=>array(27,318,406,756),7520=>array(41,209,457,635),7521=>array(16,209,391,632),7522=>array(53,0,164,425),7523=>array(54,0,314,313),7524=>array(53,-8,399,306),7525=>array(53,0,445,306),7526=>array(53,-117,423,433),7527=>array(10,-117,420,306),7528=>array(53,-117,423,314),7529=>array(41,-117,457,309),7530=>array(16,-117,391,306),7543=>array(84,-216,671,559),7544=>array(58,326,469,734),7547=>array(84,0,461,547),7549=>array(5,-208,742,560),7557=>array(84,-216,434,760),7579=>array(53,318,423,640),7580=>array(53,318,357,640),7581=>array(53,288,357,640),7582=>array(53,318,432,751),7583=>array(53,318,330,640),7584=>array(53,326,321,751),7585=>array(53,205,292,632),7586=>array(53,205,423,632),7587=>array(53,207,399,632),7588=>array(53,326,291,751),7589=>array(53,326,226,632),7590=>array(53,326,291,632),7591=>array(53,326,291,632),7592=>array(53,205,375,751),7593=>array(53,205,270,751),7594=>array(53,205,274,751),7595=>array(53,326,314,632),7596=>array(53,205,608,640),7597=>array(53,209,607,632),7598=>array(53,205,506,640),7599=>array(53,205,505,640),7600=>array(53,326,393,632),7601=>array(53,318,432,640),7602=>array(53,209,486,751),7603=>array(53,205,366,640),7604=>array(53,205,340,751),7605=>array(53,205,332,719),7606=>array(53,318,527,632),7607=>array(53,298,438,632),7608=>array(53,318,383,632),7609=>array(53,326,395,632),7610=>array(53,326,445,632),7611=>array(53,326,361,632),7612=>array(53,205,468,632),7613=>array(53,288,414,632),7614=>array(53,206,399,632),7615=>array(53,320,370,756),7620=>array(-467,616,-35,800),7621=>array(-467,616,-35,800),7622=>array(-467,616,-35,800),7623=>array(-467,616,-35,800),7624=>array(-513,616,11,800),7625=>array(-513,616,11,800),7680=>array(5,-240,769,729),7681=>array(43,-240,596,560),7682=>array(92,0,692,928),7683=>array(84,-14,671,913),7684=>array(92,-212,692,729),7685=>array(84,-212,671,760),7686=>array(92,-184,692,729),7687=>array(84,-184,671,760),7688=>array(50,-196,670,927),7689=>array(43,-196,526,800),7690=>array(92,0,778,927),7691=>array(45,-14,632,942),7692=>array(92,-212,778,729),7693=>array(45,-212,632,760),7694=>array(92,-184,778,729),7695=>array(45,-184,632,760),7696=>array(92,-192,778,729),7697=>array(45,-196,632,760),7698=>array(92,-240,778,729),7699=>array(45,-240,632,760),7700=>array(92,0,610,1057),7701=>array(43,-14,630,927),7702=>array(92,0,610,1057),7703=>array(43,-14,630,927),7704=>array(92,-203,610,729),7705=>array(43,-203,630,560),7706=>array(92,-195,610,729),7707=>array(43,-195,630,560),7708=>array(92,-196,610,927),7709=>array(43,-196,630,784),7710=>array(92,0,599,928),7711=>array(19,0,444,942),7712=>array(50,-14,747,901),7713=>array(45,-216,632,760),7714=>array(92,0,745,928),7715=>array(84,0,634,913),7716=>array(92,-212,745,729),7717=>array(84,-212,634,760),7718=>array(92,0,745,927),7719=>array(23,0,634,927),7720=>array(45,-196,745,729),7721=>array(38,-196,634,760),7722=>array(92,-236,745,729),7723=>array(84,-236,634,760),7724=>array(16,-195,355,729),7725=>array(1,-195,341,760),7726=>array(40,0,378,1057),7727=>array(16,0,354,917),7728=>array(92,0,805,927),7729=>array(84,0,684,982),7730=>array(92,-212,805,729),7731=>array(84,-212,684,760),7732=>array(92,-184,805,729),7733=>array(84,-184,684,760),7734=>array(92,-212,610,729),7735=>array(83,-212,259,760),7736=>array(32,-212,610,942),7737=>array(18,-212,325,914),7738=>array(92,-184,610,729),7739=>array(20,-184,328,760),7740=>array(92,-240,610,729),7741=>array(-13,-240,355,760),7742=>array(92,0,903,927),7743=>array(83,0,963,800),7744=>array(92,0,903,928),7745=>array(83,0,963,760),7746=>array(92,-212,903,729),7747=>array(83,-212,963,560),7748=>array(92,0,745,928),7749=>array(84,0,634,760),7750=>array(92,-212,745,729),7751=>array(84,-212,634,560),7752=>array(92,-184,745,729),7753=>array(84,-184,634,560),7754=>array(92,-240,745,729),7755=>array(84,-240,634,560),7756=>array(50,-14,800,1057),7757=>array(43,-14,644,916),7758=>array(50,-14,800,1043),7759=>array(43,-14,644,900),7760=>array(50,-14,800,1057),7761=>array(43,-14,644,927),7762=>array(50,-14,800,1057),7763=>array(43,-14,644,927),7764=>array(92,0,692,927),7765=>array(84,-208,671,800),7766=>array(92,0,692,928),7767=>array(84,-208,671,760),7768=>array(92,0,750,928),7769=>array(84,0,490,760),7770=>array(92,-212,750,729),7771=>array(83,-212,490,560),7772=>array(92,-212,750,914),7773=>array(83,-212,490,759),7774=>array(92,-184,750,729),7775=>array(33,-184,490,560),7776=>array(72,-14,647,928),7777=>array(52,-14,548,760),7778=>array(72,-212,647,742),7779=>array(52,-212,548,560),7780=>array(72,-14,647,928),7781=>array(52,-14,548,816),7782=>array(72,-14,647,1053),7783=>array(52,-14,548,1002),7784=>array(72,-212,647,928),7785=>array(52,-212,548,762),7786=>array(5,0,677,927),7787=>array(13,0,455,942),7788=>array(5,-212,677,729),7789=>array(13,-212,455,702),7790=>array(5,-184,677,729),7791=>array(13,-184,455,702),7792=>array(5,-240,677,729),7793=>array(13,-240,455,702),7794=>array(92,-212,720,729),7795=>array(78,-212,628,547),7796=>array(92,-196,720,729),7797=>array(78,-195,628,547),7798=>array(92,-203,720,729),7799=>array(78,-203,628,547),7800=>array(92,-14,720,1057),7801=>array(78,-14,628,916),7802=>array(92,-14,720,1043),7803=>array(78,-14,628,887),7804=>array(5,0,769,928),7805=>array(15,0,637,778),7806=>array(5,-212,769,729),7807=>array(15,-212,637,547),7808=>array(30,0,1072,931),7809=>array(35,0,889,803),7810=>array(30,0,1072,931),7811=>array(35,0,889,803),7812=>array(30,0,1072,927),7813=>array(35,0,889,774),7814=>array(30,0,1072,927),7815=>array(35,0,889,760),7816=>array(30,-212,1072,729),7817=>array(35,-212,889,547),7818=>array(19,0,751,928),7819=>array(15,0,630,760),7820=>array(19,0,751,927),7821=>array(15,0,630,774),7822=>array(-10,0,734,928),7823=>array(12,-216,634,760),7824=>array(45,0,680,927),7825=>array(45,0,534,798),7826=>array(45,-212,680,729),7827=>array(45,-212,534,547),7828=>array(45,-184,680,729),7829=>array(45,-184,534,547),7830=>array(84,-184,634,760),7831=>array(13,0,455,927),7832=>array(35,0,889,888),7833=>array(12,-216,634,888),7834=>array(43,-14,758,760),7835=>array(19,0,444,942),7836=>array(-18,0,444,760),7837=>array(19,0,444,760),7838=>array(92,-14,823,743),7839=>array(43,-14,645,768),7840=>array(5,-212,769,729),7841=>array(43,-212,596,560),7842=>array(5,0,769,1025),7843=>array(43,-14,596,843),7844=>array(5,0,769,1054),7845=>array(43,-14,652,873),7846=>array(5,0,769,1054),7847=>array(43,-14,597,874),7848=>array(5,0,769,1093),7849=>array(43,-14,672,912),7850=>array(5,0,769,1068),7851=>array(43,-14,596,887),7852=>array(5,-212,769,927),7853=>array(43,-212,596,800),7854=>array(5,0,769,1057),7855=>array(43,-14,596,891),7856=>array(5,0,769,1057),7857=>array(43,-14,596,894),7858=>array(5,0,769,1123),7859=>array(43,-14,596,959),7860=>array(5,0,769,1068),7861=>array(43,-14,596,905),7862=>array(5,-212,769,935),7863=>array(43,-212,596,780),7864=>array(92,-212,610,729),7865=>array(43,-212,630,560),7866=>array(92,0,610,1025),7867=>array(43,-14,630,843),7868=>array(92,0,610,928),7869=>array(43,-14,630,778),7870=>array(92,0,684,1054),7871=>array(43,-14,688,873),7872=>array(92,0,621,1054),7873=>array(43,-14,630,874),7874=>array(92,0,686,1093),7875=>array(43,-14,681,912),7876=>array(92,0,610,1068),7877=>array(43,-14,630,887),7878=>array(92,-212,610,927),7879=>array(43,-212,630,800),7880=>array(66,0,313,1025),7881=>array(52,0,300,842),7882=>array(92,-212,280,729),7883=>array(83,-212,259,760),7884=>array(50,-212,800,742),7885=>array(43,-212,644,560),7886=>array(50,-14,800,1025),7887=>array(43,-14,644,843),7888=>array(50,-14,800,1054),7889=>array(43,-14,679,873),7890=>array(50,-14,800,1054),7891=>array(43,-14,644,874),7892=>array(50,-14,800,1093),7893=>array(43,-14,685,912),7894=>array(50,-14,800,1068),7895=>array(43,-14,644,887),7896=>array(50,-212,800,927),7897=>array(43,-212,644,800),7898=>array(53,-14,854,927),7899=>array(46,-14,708,800),7900=>array(53,-14,854,927),7901=>array(46,-14,708,800),7902=>array(53,-14,854,1025),7903=>array(46,-14,708,843),7904=>array(53,-14,854,928),7905=>array(46,-14,708,778),7906=>array(53,-212,854,761),7907=>array(46,-212,708,609),7908=>array(92,-212,720,729),7909=>array(78,-212,628,547),7910=>array(92,-14,720,1025),7911=>array(78,-14,628,843),7912=>array(91,-14,833,927),7913=>array(75,-14,733,800),7914=>array(91,-14,833,927),7915=>array(75,-14,733,800),7916=>array(91,-14,833,1025),7917=>array(75,-14,733,843),7918=>array(91,-14,833,928),7919=>array(75,-14,733,778),7920=>array(91,-212,833,761),7921=>array(75,-212,733,609),7922=>array(-10,0,734,931),7923=>array(12,-216,634,803),7924=>array(-10,-212,734,729),7925=>array(12,-216,634,547),7926=>array(-10,0,734,1029),7927=>array(12,-216,634,843),7928=>array(-10,0,734,928),7929=>array(12,-216,634,778),7930=>array(92,0,925,729),7931=>array(9,0,635,760),7936=>array(48,-13,645,785),7937=>array(48,-13,645,785),7938=>array(48,-13,645,800),7939=>array(48,-13,645,800),7940=>array(48,-13,645,800),7941=>array(48,-13,645,800),7942=>array(48,-13,645,928),7943=>array(48,-13,645,928),7944=>array(5,0,769,785),7945=>array(5,0,769,785),7946=>array(2,0,1036,800),7947=>array(3,0,1039,800),7948=>array(1,0,930,800),7949=>array(2,0,958,800),7950=>array(4,0,831,928),7951=>array(3,0,854,928),7952=>array(54,-14,493,785),7953=>array(54,-14,493,785),7954=>array(54,-14,498,800),7955=>array(54,-14,493,800),7956=>array(54,-14,531,800),7957=>array(54,-14,516,800),7960=>array(3,0,718,785),7961=>array(4,0,721,785),7962=>array(2,0,1026,800),7963=>array(3,0,1023,800),7964=>array(1,0,950,800),7965=>array(2,0,979,800),7968=>array(84,-208,634,785),7969=>array(84,-208,634,785),7970=>array(84,-208,634,800),7971=>array(84,-208,634,800),7972=>array(84,-208,634,800),7973=>array(84,-208,634,800),7974=>array(84,-208,634,928),7975=>array(84,-208,634,928),7976=>array(3,0,854,785),7977=>array(4,0,859,785),7978=>array(2,0,1159,800),7979=>array(3,0,1158,800),7980=>array(1,0,1088,800),7981=>array(2,0,1114,800),7982=>array(4,0,962,928),7983=>array(3,0,971,928),7984=>array(78,-19,348,785),7985=>array(78,-19,348,785),7986=>array(-27,-19,407,800),7987=>array(-58,-19,376,800),7988=>array(31,-19,446,800),7989=>array(-6,-19,438,800),7990=>array(-2,-19,348,928),7991=>array(-5,-19,348,928),7992=>array(3,0,391,785),7993=>array(4,0,397,785),7994=>array(2,0,685,800),7995=>array(3,0,693,800),7996=>array(1,0,620,800),7997=>array(2,0,646,800),7998=>array(4,0,512,928),7999=>array(3,0,512,928),8000=>array(43,-14,644,785),8001=>array(43,-14,644,785),8002=>array(43,-14,644,800),8003=>array(43,-14,644,800),8004=>array(43,-14,644,800),8005=>array(43,-14,644,800),8008=>array(3,-14,841,785),8009=>array(4,-14,883,785),8010=>array(2,-14,1171,800),8011=>array(3,-14,1173,800),8012=>array(1,-14,1002,800),8013=>array(2,-14,1032,800),8016=>array(78,-10,629,785),8017=>array(78,-10,629,785),8018=>array(78,-10,629,800),8019=>array(78,-10,629,800),8020=>array(78,-10,629,800),8021=>array(78,-10,629,800),8022=>array(78,-10,629,928),8023=>array(78,-10,629,928),8025=>array(4,0,940,785),8027=>array(3,0,1194,800),8029=>array(2,0,1208,800),8031=>array(3,0,1059,928),8032=>array(43,-13,826,785),8033=>array(43,-13,826,785),8034=>array(43,-13,826,800),8035=>array(43,-13,826,800),8036=>array(43,-13,826,800),8037=>array(43,-13,826,800),8038=>array(43,-13,826,928),8039=>array(43,-13,826,928),8040=>array(3,0,881,785),8041=>array(4,0,931,785),8042=>array(2,0,1219,800),8043=>array(3,-3,1224,800),8044=>array(1,0,1048,800),8045=>array(2,0,1078,800),8046=>array(4,0,1000,928),8047=>array(3,0,1048,928),8048=>array(48,-13,645,800),8049=>array(48,-13,645,800),8050=>array(54,-14,493,800),8051=>array(54,-14,493,800),8052=>array(84,-208,634,800),8053=>array(84,-208,634,800),8054=>array(-26,-19,348,800),8055=>array(77,-19,353,800),8056=>array(43,-14,644,800),8057=>array(43,-14,644,800),8058=>array(78,-10,629,800),8059=>array(78,-10,629,800),8060=>array(43,-13,826,800),8061=>array(43,-13,826,800),8064=>array(48,-208,645,785),8065=>array(48,-208,645,785),8066=>array(48,-208,645,800),8067=>array(48,-208,645,800),8068=>array(48,-208,645,800),8069=>array(48,-208,645,800),8070=>array(48,-208,645,928),8071=>array(48,-208,645,928),8072=>array(5,-208,769,785),8073=>array(5,-208,769,785),8074=>array(2,-208,1036,800),8075=>array(3,-208,1039,800),8076=>array(1,-208,930,800),8077=>array(2,-208,958,800),8078=>array(4,-208,831,928),8079=>array(3,-208,854,928),8080=>array(84,-208,634,785),8081=>array(84,-208,634,785),8082=>array(84,-208,634,800),8083=>array(84,-208,634,800),8084=>array(84,-208,634,800),8085=>array(84,-208,634,800),8086=>array(84,-208,634,928),8087=>array(84,-208,634,928),8088=>array(3,-208,854,785),8089=>array(4,-208,859,785),8090=>array(2,-208,1159,800),8091=>array(3,-208,1158,800),8092=>array(1,-208,1088,800),8093=>array(2,-208,1114,800),8094=>array(4,-208,962,928),8095=>array(3,-208,971,928),8096=>array(43,-208,826,785),8097=>array(43,-208,826,785),8098=>array(43,-208,826,800),8099=>array(43,-208,826,800),8100=>array(43,-208,826,800),8101=>array(43,-208,826,800),8102=>array(43,-208,826,928),8103=>array(43,-208,826,928),8104=>array(3,-208,881,785),8105=>array(4,-208,931,785),8106=>array(2,-208,1219,800),8107=>array(3,-208,1224,800),8108=>array(1,-208,1048,800),8109=>array(2,-208,1078,800),8110=>array(4,-208,1000,928),8111=>array(3,-208,1048,928),8112=>array(48,-13,645,784),8113=>array(48,-13,645,760),8114=>array(48,-208,645,800),8115=>array(48,-208,645,559),8116=>array(48,-208,645,800),8118=>array(48,-13,645,778),8119=>array(48,-208,645,778),8120=>array(5,0,769,927),8121=>array(5,0,769,914),8122=>array(-1,0,872,800),8123=>array(26,0,792,800),8124=>array(5,-208,769,729),8125=>array(183,595,317,785),8126=>array(202,-208,333,-45),8127=>array(183,595,317,785),8128=>array(80,638,420,778),8129=>array(80,654,420,928),8130=>array(84,-208,634,800),8131=>array(84,-208,634,560),8132=>array(84,-208,634,800),8134=>array(84,-208,634,778),8135=>array(84,-208,634,778),8136=>array(-1,0,856,800),8137=>array(-24,0,771,800),8138=>array(-1,0,988,800),8139=>array(-18,0,915,800),8140=>array(92,-208,745,729),8141=>array(34,595,468,800),8142=>array(63,595,478,800),8143=>array(80,595,420,928),8144=>array(3,-19,348,784),8145=>array(20,-19,348,760),8146=>array(-36,-19,348,978),8147=>array(23,-19,372,978),8150=>array(4,-19,348,778),8151=>array(-6,-19,348,928),8152=>array(21,0,350,927),8153=>array(32,0,339,914),8154=>array(-1,0,529,800),8155=>array(-21,0,450,800),8157=>array(40,595,474,800),8158=>array(45,595,489,800),8159=>array(80,595,420,928),8160=>array(78,-10,629,784),8161=>array(78,-10,629,760),8162=>array(78,-10,629,978),8163=>array(78,-10,629,978),8164=>array(84,-208,671,785),8165=>array(84,-208,671,785),8166=>array(78,-10,629,778),8167=>array(78,-10,629,928),8168=>array(-10,0,734,927),8169=>array(-10,0,734,914),8170=>array(-1,0,1030,800),8171=>array(-27,0,992,800),8172=>array(4,0,797,785),8173=>array(46,654,404,978),8174=>array(96,654,445,978),8175=>array(46,616,322,800),8178=>array(43,-208,826,800),8179=>array(43,-208,826,547),8180=>array(43,-208,826,800),8182=>array(43,-13,826,778),8183=>array(43,-208,826,778),8184=>array(-1,-14,1015,800),8185=>array(-19,-14,836,800),8186=>array(-1,0,1057,800),8187=>array(-30,0,867,800),8188=>array(27,-208,823,742),8189=>array(178,616,454,800),8190=>array(183,595,317,785),8192=>array(54,217,361,359),8193=>array(54,217,361,359),8194=>array(54,217,361,359),8195=>array(54,217,361,359),8196=>array(54,217,361,359),8197=>array(54,217,361,359),8198=>array(54,217,361,359),8199=>array(54,217,361,359),8200=>array(54,217,361,359),8201=>array(54,217,361,359),8202=>array(54,217,361,359),8203=>array(54,217,361,359),8204=>array(54,217,361,359),8205=>array(54,217,361,359),8206=>array(54,217,361,359),8207=>array(54,217,361,359),8208=>array(54,217,361,359),8209=>array(54,217,361,359),8210=>array(54,211,642,337),8211=>array(54,211,446,337),8212=>array(54,211,946,337),8213=>array(0,211,1000,337),8214=>array(127,-236,399,764),8215=>array(0,-236,500,-9),8216=>array(103,418,318,729),8217=>array(63,418,278,729),8218=>array(72,-122,287,189),8219=>array(63,418,278,729),8220=>array(103,418,565,729),8221=>array(92,418,554,729),8222=>array(72,-122,534,189),8223=>array(92,418,554,729),8224=>array(26,-96,470,729),8225=>array(25,-96,470,729),8226=>array(144,196,495,547),8227=>array(144,157,534,586),8228=>array(79,0,255,189),8229=>array(79,0,588,189),8230=>array(79,0,921,189),8231=>array(86,253,262,442),8232=>array(32,-14,1417,742),8233=>array(32,-14,1417,742),8234=>array(32,-14,1417,742),8235=>array(32,-14,1417,742),8236=>array(32,-14,1417,742),8237=>array(32,-14,1417,742),8238=>array(32,-14,1417,742),8239=>array(32,-14,1417,742),8240=>array(32,-14,1417,742),8241=>array(32,-14,1864,742),8242=>array(20,547,240,729),8243=>array(20,547,423,729),8244=>array(20,547,606,729),8245=>array(20,547,240,729),8246=>array(20,547,425,729),8247=>array(20,547,606,729),8248=>array(101,-238,632,29),8249=>array(77,67,318,519),8250=>array(94,67,335,519),8251=>array(72,0,900,829),8252=>array(69,0,558,729),8253=>array(69,0,515,742),8254=>array(0,663,500,755),8255=>array(-31,-237,859,-79),8256=>array(-31,769,859,927),8257=>array(-52,-235,296,231),8258=>array(20,-37,1003,832),8259=>array(96,220,404,358),8260=>array(-199,-14,366,742),8261=>array(86,-132,389,760),8262=>array(68,-132,371,760),8263=>array(34,0,996,742),8264=>array(69,0,760,742),8265=>array(69,0,760,742),8266=>array(49,-125,464,546),8267=>array(93,-96,579,729),8268=>array(75,189,425,541),8269=>array(75,189,425,541),8270=>array(20,0,503,464),8271=>array(104,-142,329,547),8272=>array(-31,-237,859,927),8273=>array(53,-14,439,797),8274=>array(30,-93,529,729),8275=>array(49,212,951,415),8276=>array(-31,-240,859,-82),8277=>array(152,98,686,631),8278=>array(110,93,574,645),8279=>array(20,547,789,729),8280=>array(76,21,762,708),8281=>array(126,71,712,657),8282=>array(102,0,280,729),8283=>array(49,-170,822,898),8284=>array(55,0,783,729),8285=>array(102,0,278,683),8286=>array(102,0,278,683),8287=>array(29,319,398,742),8288=>array(29,319,398,742),8289=>array(29,319,398,742),8290=>array(29,319,398,742),8291=>array(29,319,398,742),8292=>array(29,319,398,742),8298=>array(29,319,398,742),8299=>array(29,319,398,742),8300=>array(29,319,398,742),8301=>array(29,319,398,742),8302=>array(29,319,398,742),8303=>array(29,319,398,742),8304=>array(29,319,398,742),8305=>array(53,326,164,751),8308=>array(27,326,397,734),8309=>array(47,319,384,734),8310=>array(38,319,394,742),8311=>array(41,326,378,734),8312=>array(38,319,389,742),8313=>array(32,319,388,742),8314=>array(67,326,461,677),8315=>array(67,469,461,534),8316=>array(67,407,461,596),8317=>array(54,252,237,751),8318=>array(50,252,234,751),8319=>array(54,326,406,640),8320=>array(29,-7,398,416),8321=>array(60,0,382,408),8322=>array(53,0,382,416),8323=>array(44,-7,384,416),8324=>array(27,0,397,408),8325=>array(47,-7,384,408),8326=>array(38,-7,394,416),8327=>array(41,0,378,408),8328=>array(38,-7,389,416),8329=>array(32,-7,388,416),8330=>array(67,0,461,351),8331=>array(67,143,461,208),8332=>array(67,81,461,270),8333=>array(54,-74,237,425),8334=>array(50,-74,234,425),8336=>array(53,-8,402,313),8337=>array(53,-8,423,313),8338=>array(53,-8,432,313),8339=>array(10,0,403,306),8340=>array(53,-8,423,313),8341=>array(54,0,406,425),8342=>array(53,0,431,425),8343=>array(54,0,166,425),8344=>array(53,0,607,313),8345=>array(54,0,406,313),8346=>array(53,-117,423,313),8347=>array(33,-8,351,313),8348=>array(53,0,332,393),8352=>array(38,0,892,729),8353=>array(50,-44,634,778),8354=>array(29,-14,667,742),8355=>array(75,0,663,729),8356=>array(61,0,613,742),8357=>array(83,-93,963,640),8358=>array(43,0,794,729),8359=>array(92,-14,1470,729),8360=>array(92,-14,1157,729),8361=>array(13,0,1088,729),8362=>array(39,-14,859,729),8363=>array(30,-182,692,760),8364=>array(-19,-14,629,742),8365=>array(29,0,695,729),8366=>array(12,0,684,729),8367=>array(92,-223,1247,742),8368=>array(14,-14,648,742),8369=>array(34,0,696,729),8370=>array(50,-81,643,809),8371=>array(5,0,691,729),8372=>array(43,-14,816,742),8373=>array(72,-147,629,760),8376=>array(12,0,684,729),8377=>array(50,0,647,729),8378=>array(5,0,745,729),8400=>array(-498,628,-26,760),8401=>array(-470,628,1,760),8406=>array(-470,560,-26,760),8407=>array(-470,560,-26,760),8411=>array(-501,654,-1,774),8412=>array(-595,654,99,774),8417=>array(-470,560,-26,760),8448=>array(20,-24,1083,752),8449=>array(20,-24,1137,752),8450=>array(50,-14,670,742),8451=>array(87,-14,1147,749),8452=>array(64,0,832,729),8453=>array(20,-24,1064,752),8454=>array(20,-24,1117,752),8455=>array(67,-14,616,742),8456=>array(64,-146,684,611),8457=>array(87,0,1002,749),8459=>array(36,-14,1063,746),8460=>array(6,-125,809,747),8461=>array(100,0,788,729),8462=>array(31,0,654,760),8463=>array(10,0,625,760),8464=>array(36,-14,533,742),8465=>array(52,-14,659,743),8466=>array(37,-14,787,742),8467=>array(-14,-14,401,742),8468=>array(9,-14,936,760),8469=>array(92,0,745,729),8470=>array(34,0,1154,729),8471=>array(138,0,862,725),8472=>array(54,-221,658,495),8473=>array(92,0,709,729),8474=>array(50,-146,800,742),8475=>array(31,-14,904,768),8476=>array(41,-14,803,743),8477=>array(98,0,793,729),8478=>array(37,0,859,729),8479=>array(81,-112,694,887),8480=>array(127,444,792,731),8481=>array(3,0,1249,547),8482=>array(144,447,790,729),8483=>array(11,-113,729,885),8484=>array(45,0,709,729),8485=>array(26,-230,540,777),8486=>array(27,0,823,742),8487=>array(27,-14,823,728),8488=>array(-5,-159,670,729),8489=>array(1,0,271,566),8490=>array(92,0,805,729),8491=>array(5,0,769,928),8492=>array(41,-1,853,772),8493=>array(63,-19,767,742),8494=>array(61,-12,793,647),8495=>array(41,-14,591,533),8496=>array(72,-14,668,742),8497=>array(37,-14,860,773),8498=>array(92,0,599,729),8499=>array(38,-18,1156,751),8500=>array(29,-12,436,420),8501=>array(50,-14,761,742),8502=>array(19,-14,687,742),8503=>array(31,-35,439,742),8504=>array(63,-41,633,742),8505=>array(34,0,355,760),8506=>array(44,-27,932,723),8507=>array(69,0,1352,547),8508=>array(34,-14,765,547),8509=>array(-40,-208,700,561),8510=>array(92,0,627,729),8511=>array(92,0,771,729),8512=>array(12,-192,820,719),8513=>array(25,-14,723,742),8514=>array(9,0,527,729),8515=>array(43,0,561,729),8516=>array(0,0,744,729),8517=>array(21,0,786,729),8518=>array(34,-14,752,760),8519=>array(33,-14,635,560),8520=>array(15,0,353,760),8521=>array(-143,-216,354,760),8523=>array(41,-14,811,742),8526=>array(55,0,470,547),8528=>array(49,-14,983,742),8529=>array(49,-14,993,742),8530=>array(49,-14,1441,742),8531=>array(49,-14,989,742),8532=>array(53,-14,989,742),8533=>array(49,-14,989,742),8534=>array(53,-14,989,742),8535=>array(44,-14,989,742),8536=>array(27,-14,989,742),8537=>array(49,-14,999,742),8538=>array(47,-14,999,742),8539=>array(49,-14,994,742),8540=>array(44,-14,994,742),8541=>array(47,-14,994,742),8542=>array(41,-14,994,742),8543=>array(49,-14,814,742),8544=>array(92,0,280,729),8545=>array(92,0,566,729),8546=>array(92,0,853,729),8547=>array(92,0,1094,729),8548=>array(5,0,769,729),8549=>array(5,0,1007,729),8550=>array(5,0,1293,729),8551=>array(5,0,1580,729),8552=>array(92,0,1101,729),8553=>array(19,0,751,729),8554=>array(19,0,1028,729),8555=>array(19,0,1314,729),8556=>array(92,0,610,729),8557=>array(50,-14,670,742),8558=>array(92,0,778,729),8559=>array(92,0,903,729),8560=>array(84,0,259,760),8561=>array(84,0,523,760),8562=>array(84,0,788,760),8563=>array(84,0,946,760),8564=>array(15,0,637,547),8565=>array(15,0,878,760),8566=>array(15,0,1143,760),8567=>array(15,0,1407,760),8568=>array(84,0,954,760),8569=>array(15,0,630,547),8570=>array(15,0,885,760),8571=>array(15,0,1149,760),8572=>array(84,0,259,760),8573=>array(43,-14,526,560),8574=>array(45,-14,632,760),8575=>array(83,0,963,560),8576=>array(52,0,1236,729),8577=>array(92,0,778,729),8578=>array(52,0,1236,729),8579=>array(50,-14,670,742),8580=>array(43,-14,526,560),8581=>array(50,-208,670,742),8585=>array(29,-14,989,742),8592=>array(49,87,781,540),8593=>array(193,0,646,732),8594=>array(57,87,789,540),8595=>array(193,-3,646,729),8596=>array(49,87,789,540),8597=>array(193,-3,646,732),8598=>array(136,66,720,650),8599=>array(136,66,720,650),8600=>array(136,66,720,650),8601=>array(136,66,720,650),8602=>array(49,87,781,540),8603=>array(57,87,789,540),8604=>array(13,84,833,431),8605=>array(5,84,825,431),8606=>array(49,87,781,540),8607=>array(189,0,641,732),8608=>array(57,87,789,540),8609=>array(194,-3,646,729),8610=>array(49,87,793,540),8611=>array(45,87,789,540),8612=>array(49,87,781,540),8613=>array(193,0,646,732),8614=>array(57,87,789,540),8615=>array(193,0,646,732),8616=>array(193,0,646,732),8617=>array(49,87,781,565),8618=>array(57,87,789,565),8619=>array(49,87,781,565),8620=>array(57,87,789,565),8621=>array(49,87,789,540),8622=>array(49,86,789,541),8623=>array(123,-4,714,733),8624=>array(169,0,646,755),8625=>array(192,0,669,755),8626=>array(169,-26,646,729),8627=>array(192,-26,669,729),8628=>array(233,-3,772,621),8629=>array(49,87,673,626),8630=>array(11,198,816,685),8631=>array(22,198,828,685),8632=>array(118,13,788,729),8633=>array(49,-108,789,735),8634=>array(86,45,767,691),8635=>array(71,45,751,691),8636=>array(49,255,781,540),8637=>array(49,87,781,372),8638=>array(361,0,646,732),8639=>array(193,0,478,732),8640=>array(57,255,789,540),8641=>array(57,87,789,372),8642=>array(361,0,646,732),8643=>array(193,0,478,732),8644=>array(49,-59,789,686),8645=>array(47,-3,792,732),8646=>array(49,-59,789,686),8647=>array(49,-59,781,686),8648=>array(46,0,792,732),8649=>array(57,-59,789,686),8650=>array(46,-3,792,729),8651=>array(49,-5,789,632),8652=>array(49,-5,789,632),8653=>array(49,87,781,540),8654=>array(49,87,789,540),8655=>array(57,87,789,540),8656=>array(49,87,781,540),8657=>array(193,0,645,732),8658=>array(57,87,789,540),8659=>array(193,-3,645,729),8660=>array(49,87,789,540),8661=>array(193,-8,645,732),8662=>array(132,-26,755,596),8663=>array(88,-26,711,597),8664=>array(88,16,711,639),8665=>array(132,16,755,639),8666=>array(49,87,781,540),8667=>array(57,87,789,540),8668=>array(44,87,776,540),8669=>array(57,87,789,540),8670=>array(193,0,646,732),8671=>array(193,-3,646,729),8672=>array(49,87,781,540),8673=>array(193,0,646,732),8674=>array(57,87,789,540),8675=>array(193,-3,646,729),8676=>array(49,87,781,540),8677=>array(57,87,789,540),8678=>array(27,46,781,581),8679=>array(151,0,687,754),8680=>array(35,46,789,581),8681=>array(151,-25,687,729),8682=>array(151,0,687,754),8683=>array(151,0,687,754),8684=>array(151,0,687,754),8685=>array(151,0,687,754),8686=>array(151,0,687,754),8687=>array(151,0,687,754),8688=>array(35,46,789,581),8689=>array(60,0,788,729),8690=>array(60,0,788,729),8691=>array(151,-25,687,754),8692=>array(57,87,789,540),8693=>array(47,-3,792,732),8694=>array(57,-223,789,850),8695=>array(49,87,781,540),8696=>array(57,87,789,540),8697=>array(49,87,789,540),8698=>array(49,87,781,540),8699=>array(57,87,789,540),8700=>array(49,87,789,540),8701=>array(27,96,781,531),8702=>array(57,96,811,531),8703=>array(27,96,811,531),8704=>array(5,0,769,729),8705=>array(48,-14,629,742),8706=>array(29,-14,515,674),8707=>array(92,0,610,729),8708=>array(92,-46,610,775),8709=>array(47,-15,810,715),8710=>array(0,0,697,719),8711=>array(0,0,697,719),8712=>array(73,-2,824,730),8713=>array(73,-46,824,775),8714=>array(106,58,644,568),8715=>array(73,-2,824,730),8716=>array(73,-46,824,775),8717=>array(106,58,644,568),8718=>array(98,0,539,553),8719=>array(73,-192,712,719),8720=>array(73,-193,712,718),8721=>array(20,-192,697,719),8722=>array(106,256,732,371),8723=>array(106,0,732,627),8724=>array(49,0,647,729),8725=>array(0,-93,365,729),8726=>array(165,-49,530,772),8727=>array(118,0,720,626),8728=>array(150,151,475,477),8729=>array(102,253,278,442),8730=>array(37,-20,669,837),8731=>array(37,-20,669,933),8732=>array(36,-20,669,924),8733=>array(92,89,617,505),8734=>array(92,89,741,505),8735=>array(106,67,732,693),8736=>array(77,0,820,729),8737=>array(77,-44,820,729),8738=>array(116,-0,732,726),8739=>array(207,-207,322,773),8740=>array(48,-207,482,773),8741=>array(112,-207,417,773),8742=>array(48,-207,482,773),8743=>array(151,0,661,579),8744=>array(151,0,661,579),8745=>array(151,0,661,579),8746=>array(151,0,661,579),8747=>array(15,-227,548,754),8748=>array(15,-227,914,754),8749=>array(15,-227,1280,754),8750=>array(14,-227,548,754),8751=>array(38,-227,938,754),8752=>array(23,-227,1290,754),8753=>array(15,-227,616,754),8754=>array(14,-227,600,754),8755=>array(14,-227,588,754),8756=>array(60,78,637,647),8757=>array(60,78,637,647),8758=>array(59,79,235,647),8759=>array(60,78,637,647),8760=>array(106,256,732,631),8761=>array(106,45,800,584),8762=>array(106,-4,732,631),8763=>array(106,-34,732,660),8764=>array(106,212,732,415),8765=>array(106,212,732,415),8766=>array(65,131,772,497),8767=>array(106,42,732,584),8768=>array(85,0,289,626),8769=>array(106,76,732,551),8770=>array(106,110,732,482),8771=>array(106,144,732,517),8772=>array(106,0,732,637),8773=>array(106,37,732,628),8774=>array(106,-31,732,628),8775=>array(106,-86,732,726),8776=>array(106,110,732,517),8777=>array(106,8,732,614),8778=>array(106,37,732,628),8779=>array(106,-13,732,628),8780=>array(106,37,732,628),8781=>array(105,105,732,585),8782=>array(106,26,732,656),8783=>array(106,172,732,656),8784=>array(106,144,732,744),8785=>array(106,-117,732,743),8786=>array(105,-92,732,719),8787=>array(104,-92,731,719),8788=>array(98,102,965,520),8789=>array(96,102,966,520),8790=>array(106,144,732,482),8791=>array(106,144,732,839),8792=>array(106,144,732,704),8793=>array(106,144,732,840),8794=>array(106,144,732,840),8795=>array(106,144,732,959),8796=>array(106,144,732,952),8797=>array(106,144,732,762),8798=>array(106,144,732,786),8799=>array(106,144,732,903),8800=>array(106,-5,732,631),8801=>array(106,38,732,588),8802=>array(106,-69,732,695),8803=>array(106,-74,732,700),8804=>array(106,0,732,582),8805=>array(106,0,732,582),8806=>array(106,-106,732,617),8807=>array(106,-106,732,617),8808=>array(106,-185,732,617),8809=>array(106,-185,732,617),8810=>array(72,-34,974,660),8811=>array(72,-34,974,660),8812=>array(86,-132,414,759),8813=>array(105,-10,732,700),8814=>array(106,-4,732,690),8815=>array(106,-63,732,631),8816=>array(106,-112,732,645),8817=>array(106,-112,732,645),8818=>array(106,-84,732,582),8819=>array(106,-84,732,582),8820=>array(106,-112,732,645),8821=>array(106,-112,732,645),8822=>array(102,-119,732,678),8823=>array(102,-119,732,678),8824=>array(102,-221,732,779),8825=>array(102,-221,732,779),8826=>array(106,-55,732,681),8827=>array(106,-55,732,681),8828=>array(106,-177,732,684),8829=>array(106,-177,732,684),8830=>array(106,-132,732,684),8831=>array(106,-132,732,684),8832=>array(106,-89,732,781),8833=>array(106,-89,732,781),8834=>array(99,67,739,559),8835=>array(99,65,739,559),8836=>array(99,-96,739,726),8837=>array(99,-100,739,722),8838=>array(99,0,739,636),8839=>array(99,0,739,635),8840=>array(99,-124,739,759),8841=>array(99,-124,739,759),8842=>array(99,-97,739,636),8843=>array(99,-97,739,635),8844=>array(151,0,661,579),8845=>array(151,0,661,579),8846=>array(151,0,661,579),8847=>array(106,0,732,584),8848=>array(106,0,732,584),8849=>array(106,-115,732,667),8850=>array(106,-115,732,667),8851=>array(106,0,690,626),8852=>array(106,0,690,626),8853=>array(91,-14,747,643),8854=>array(91,-14,747,643),8855=>array(91,-14,747,643),8856=>array(91,-13,747,642),8857=>array(91,-14,747,643),8858=>array(91,-14,747,643),8859=>array(91,-14,747,643),8860=>array(91,-14,747,643),8861=>array(91,-14,747,643),8862=>array(77,-29,761,657),8863=>array(77,-29,761,657),8864=>array(77,-29,761,657),8865=>array(77,-29,761,657),8866=>array(85,0,829,705),8867=>array(85,0,829,705),8868=>array(85,0,829,705),8869=>array(85,0,829,705),8870=>array(85,0,457,705),8871=>array(85,0,457,705),8872=>array(85,0,829,705),8873=>array(85,0,829,705),8874=>array(85,0,829,705),8875=>array(85,0,829,705),8876=>array(85,-100,829,805),8877=>array(85,-100,829,805),8878=>array(85,-100,829,805),8879=>array(85,-100,829,805),8880=>array(106,-54,724,681),8881=>array(114,-54,732,681),8882=>array(106,-1,732,628),8883=>array(106,-1,732,628),8884=>array(106,-80,732,706),8885=>array(106,-80,732,706),8886=>array(60,151,940,477),8887=>array(60,151,940,477),8888=>array(60,151,778,477),8889=>array(43,-63,794,689),8890=>array(63,0,480,705),8891=>array(103,0,709,759),8892=>array(103,0,709,759),8893=>array(103,0,709,759),8894=>array(106,0,732,626),8895=>array(106,0,732,626),8896=>array(0,-192,843,719),8897=>array(0,-192,843,719),8898=>array(48,-192,794,719),8899=>array(48,-192,794,719),8900=>array(3,-233,491,807),8901=>array(102,253,278,442),8902=>array(83,112,543,549),8903=>array(106,-56,732,683),8904=>array(106,-48,894,674),8905=>array(106,-48,894,675),8906=>array(106,-48,894,675),8907=>array(106,-48,894,675),8908=>array(106,-48,894,675),8909=>array(106,144,732,517),8910=>array(49,0,763,579),8911=>array(49,0,763,579),8912=>array(93,-22,732,649),8913=>array(106,-22,745,649),8914=>array(83,0,755,639),8915=>array(83,-14,755,625),8916=>array(186,0,652,729),8917=>array(106,-100,732,729),8918=>array(106,30,732,597),8919=>array(106,30,732,597),8920=>array(72,-34,1350,660),8921=>array(72,-34,1350,660),8922=>array(106,-211,732,837),8923=>array(106,-211,732,837),8924=>array(106,0,732,582),8925=>array(106,0,732,582),8926=>array(106,-177,732,684),8927=>array(106,-177,732,684),8928=>array(106,-197,732,808),8929=>array(106,-263,732,742),8930=>array(106,-191,732,817),8931=>array(106,-191,732,817),8932=>array(106,-146,732,636),8933=>array(106,-146,732,636),8934=>array(106,-168,732,582),8935=>array(106,-168,732,582),8936=>array(106,-216,732,684),8937=>array(106,-216,732,684),8938=>array(106,-138,732,808),8939=>array(106,-138,732,808),8940=>array(106,-224,732,894),8941=>array(106,-224,732,894),8942=>array(412,-40,588,735),8943=>array(79,253,921,442),8944=>array(79,-40,921,735),8945=>array(79,-40,921,735),8946=>array(72,-2,1085,730),8947=>array(73,-2,824,730),8948=>array(106,58,644,568),8949=>array(73,-2,824,984),8950=>array(73,-2,824,919),8951=>array(106,58,644,741),8952=>array(73,-207,824,730),8953=>array(73,-2,824,730),8954=>array(72,-2,1085,730),8955=>array(73,-2,824,730),8956=>array(106,58,644,568),8957=>array(72,-2,824,919),8958=>array(106,58,644,741),8959=>array(106,0,791,732),8960=>array(31,-22,572,519),8961=>array(56,152,540,453),8962=>array(64,0,651,596),8963=>array(193,470,646,732),8964=>array(193,0,646,263),8965=>array(193,-12,646,423),8966=>array(193,-12,646,552),8967=>array(139,-39,349,798),8968=>array(86,-132,389,760),8969=>array(68,-132,371,760),8970=>array(86,-132,389,760),8971=>array(68,-132,371,760),8972=>array(352,-77,759,331),8973=>array(49,-77,457,331),8974=>array(352,226,759,634),8975=>array(49,226,457,634),8976=>array(106,140,732,444),8977=>array(3,113,536,646),8984=>array(84,0,843,759),8985=>array(106,140,732,444),8988=>array(86,425,403,760),8989=>array(65,425,383,760),8990=>array(86,-126,403,208),8991=>array(65,-126,383,208),8992=>array(235,-250,586,926),8993=>array(22,-240,373,940),8996=>array(76,215,1076,575),8997=>array(76,0,1076,575),8998=>array(76,0,1414,760),8999=>array(76,0,1076,760),9000=>array(59,0,1385,729),9003=>array(0,0,1338,760),9004=>array(73,-91,800,748),9075=>array(78,-19,348,547),9076=>array(84,-208,671,562),9077=>array(43,-13,826,547),9082=>array(48,-13,645,559),9085=>array(13,-228,850,99),9095=>array(76,0,1100,743),9108=>array(17,0,856,727),9115=>array(63,-252,438,928),9116=>array(63,-252,205,940),9117=>array(63,-240,438,940),9118=>array(63,-252,438,928),9119=>array(295,-252,438,940),9120=>array(63,-240,438,940),9121=>array(63,-252,438,928),9122=>array(63,-252,205,940),9123=>array(63,-240,438,940),9124=>array(63,-252,438,928),9125=>array(295,-252,438,940),9126=>array(63,-240,438,940),9127=>array(306,-261,668,928),9128=>array(82,-247,444,934),9129=>array(306,-240,668,934),9130=>array(306,-256,444,934),9131=>array(82,-261,444,928),9132=>array(306,-247,668,934),9133=>array(82,-240,444,934),9134=>array(235,-250,373,940),9166=>array(27,46,781,729),9167=>array(91,0,854,596),9187=>array(73,-91,800,748),9189=>array(3,75,766,444),9192=>array(39,-129,665,294),9250=>array(-81,-14,671,760),9251=>array(64,-228,651,99),9312=>array(59,-15,788,715),9313=>array(59,-15,788,715),9314=>array(59,-15,788,715),9315=>array(59,-15,788,715),9316=>array(59,-15,788,715),9317=>array(59,-15,788,715),9318=>array(59,-15,788,715),9319=>array(59,-15,788,715),9320=>array(59,-15,788,715),9321=>array(59,-15,788,715),9600=>array(-10,260,779,770),9601=>array(-10,-250,779,-123),9602=>array(-10,-250,779,-5),9603=>array(-10,-250,779,132),9604=>array(-10,-250,779,260),9605=>array(-10,-250,779,387),9606=>array(-10,-250,779,515),9607=>array(-10,-250,779,642),9608=>array(-10,-250,779,770),9609=>array(-10,-250,680,770),9610=>array(-10,-250,582,770),9611=>array(-10,-250,483,770),9612=>array(-10,-250,384,770),9613=>array(-10,-250,286,770),9614=>array(-10,-250,187,770),9615=>array(-10,-250,88,770),9616=>array(384,-250,778,770),9617=>array(-10,-250,680,770),9618=>array(-10,-250,779,770),9619=>array(-10,-250,779,770),9620=>array(-10,642,779,770),9621=>array(680,-250,778,770),9622=>array(-10,-250,385,260),9623=>array(384,-250,779,260),9624=>array(-10,260,385,770),9625=>array(-10,-250,779,770),9626=>array(-10,-250,779,770),9627=>array(-10,-250,779,770),9628=>array(-10,-250,779,770),9629=>array(384,260,779,770),9630=>array(-10,-250,779,770),9631=>array(-10,-250,779,770),9632=>array(91,-124,854,643),9633=>array(91,-124,854,643),9634=>array(91,-124,854,643),9635=>array(91,-124,854,643),9636=>array(91,-124,854,643),9637=>array(91,-124,854,643),9638=>array(91,-124,854,643),9639=>array(91,-124,854,643),9640=>array(91,-124,854,643),9641=>array(91,-124,854,643),9642=>array(91,11,587,509),9643=>array(91,11,587,509),9644=>array(91,75,854,444),9645=>array(91,75,854,444),9646=>array(91,-122,459,642),9647=>array(91,-122,459,642),9648=>array(3,75,766,444),9649=>array(3,75,766,444),9650=>array(3,-124,766,643),9651=>array(3,-124,766,643),9652=>array(3,11,499,509),9653=>array(3,11,499,509),9654=>array(3,-124,766,643),9655=>array(3,-124,766,643),9656=>array(3,11,499,509),9657=>array(3,11,499,509),9658=>array(3,11,766,509),9659=>array(3,11,766,509),9660=>array(3,-124,766,643),9661=>array(3,-124,766,643),9662=>array(3,11,499,509),9663=>array(3,11,499,509),9664=>array(3,-124,766,643),9665=>array(3,-124,766,643),9666=>array(3,11,499,509),9667=>array(3,11,499,509),9668=>array(3,11,766,509),9669=>array(3,11,766,509),9670=>array(3,-124,766,643),9671=>array(3,-124,766,643),9672=>array(3,-124,766,643),9673=>array(55,-125,818,645),9674=>array(3,-233,491,807),9675=>array(55,-125,818,645),9676=>array(56,-125,817,644),9677=>array(55,-125,818,645),9678=>array(55,-125,818,645),9679=>array(55,-123,818,641),9680=>array(55,-123,818,641),9681=>array(55,-123,818,641),9682=>array(55,-123,818,641),9683=>array(55,-123,818,641),9684=>array(55,-123,818,641),9685=>array(55,-123,818,641),9686=>array(55,-125,436,645),9687=>array(91,-125,472,645),9688=>array(91,-10,750,770),9689=>array(91,-250,879,770),9690=>array(91,260,879,770),9691=>array(91,-250,879,260),9692=>array(3,260,385,645),9693=>array(3,260,384,645),9694=>array(3,-125,384,260),9695=>array(3,-125,385,260),9696=>array(3,260,766,645),9697=>array(3,-125,766,260),9698=>array(3,-124,766,643),9699=>array(3,-124,766,643),9700=>array(3,-124,766,643),9701=>array(3,-124,766,643),9702=>array(144,196,495,547),9703=>array(91,-124,854,643),9704=>array(91,-124,854,643),9705=>array(91,-124,854,643),9706=>array(91,-124,854,643),9707=>array(91,-124,854,643),9708=>array(3,-124,766,643),9709=>array(3,-124,766,643),9710=>array(3,-124,766,643),9711=>array(55,-250,1064,770),9712=>array(91,-124,854,643),9713=>array(91,-124,854,643),9714=>array(91,-124,854,643),9715=>array(91,-124,854,643),9716=>array(55,-123,818,641),9717=>array(55,-123,818,641),9718=>array(55,-123,818,641),9719=>array(55,-123,818,641),9720=>array(3,-124,766,643),9721=>array(3,-124,766,643),9722=>array(3,-124,766,643),9723=>array(91,-66,739,585),9724=>array(91,-66,739,585),9725=>array(91,-17,642,537),9726=>array(91,-17,642,537),9727=>array(3,-124,766,643),9728=>array(83,0,813,729),9729=>array(51,-2,949,360),9730=>array(49,0,848,729),9731=>array(83,-0,813,927),9732=>array(64,0,833,880),9733=>array(65,-4,832,723),9734=>array(65,-4,832,723),9735=>array(83,2,490,729),9736=>array(83,0,813,731),9737=>array(83,0,813,730),9738=>array(61,0,828,727),9739=>array(61,0,828,723),9740=>array(61,-1,610,722),9741=>array(61,0,952,723),9742=>array(68,0,1177,729),9743=>array(71,0,1180,729),9744=>array(90,0,807,729),9745=>array(89,0,808,729),9746=>array(89,0,808,729),9747=>array(75,78,457,656),9748=>array(49,0,870,933),9749=>array(74,0,822,731),9750=>array(84,0,813,731),9751=>array(84,0,813,727),9752=>array(78,0,819,729),9753=>array(83,140,813,574),9754=>array(84,113,813,569),9755=>array(84,113,813,569),9756=>array(87,104,810,569),9757=>array(72,0,537,724),9758=>array(86,103,810,569),9759=>array(72,-3,537,720),9760=>array(61,0,835,730),9761=>array(84,0,813,730),9762=>array(83,0,813,730),9763=>array(49,0,848,730),9764=>array(49,-2,620,727),9765=>array(83,0,663,731),9766=>array(83,-1,566,731),9767=>array(83,0,701,911),9768=>array(83,0,462,730),9769=>array(83,-1,813,729),9770=>array(87,0,810,730),9771=>array(83,0,814,731),9772=>array(83,0,627,731),9773=>array(83,0,813,730),9774=>array(83,0,813,730),9775=>array(83,0,813,730),9776=>array(83,0,813,729),9777=>array(83,0,814,729),9778=>array(83,0,813,729),9779=>array(83,0,813,729),9780=>array(83,0,813,729),9781=>array(83,0,813,729),9782=>array(83,0,813,729),9783=>array(83,0,813,729),9784=>array(80,3,817,721),9785=>array(83,-73,959,804),9786=>array(83,-73,959,804),9787=>array(83,-73,959,804),9788=>array(83,0,813,730),9789=>array(358,0,814,730),9790=>array(83,0,539,730),9791=>array(85,-102,528,732),9792=>array(85,-125,647,731),9793=>array(85,-14,647,843),9794=>array(79,-14,831,720),9795=>array(166,0,730,730),9796=>array(219,0,677,730),9797=>array(121,0,774,730),9798=>array(127,0,769,730),9799=>array(240,0,656,730),9800=>array(45,0,851,731),9801=>array(89,0,807,730),9802=>array(94,0,802,731),9803=>array(113,31,784,679),9804=>array(140,0,756,730),9805=>array(53,-180,843,730),9806=>array(83,52,813,653),9807=>array(34,-96,863,730),9808=>array(83,-0,813,730),9809=>array(94,0,802,730),9810=>array(86,153,810,579),9811=>array(157,0,739,730),9812=>array(98,0,798,730),9813=>array(110,0,786,730),9814=>array(167,-1,729,729),9815=>array(214,0,683,730),9816=>array(165,0,732,730),9817=>array(148,-0,748,730),9818=>array(98,0,798,730),9819=>array(110,0,786,730),9820=>array(167,-1,729,729),9821=>array(214,0,683,730),9822=>array(162,0,734,730),9823=>array(148,-0,748,730),9824=>array(158,0,738,729),9825=>array(90,0,806,727),9826=>array(168,0,728,729),9827=>array(111,0,785,729),9828=>array(157,0,739,729),9829=>array(89,0,808,729),9830=>array(168,0,728,729),9831=>array(111,0,785,732),9832=>array(105,-1,791,729),9833=>array(84,-5,339,729),9834=>array(84,-5,554,729),9835=>array(184,-102,712,729),9836=>array(92,-5,804,729),9837=>array(88,-3,392,731),9838=>array(84,0,273,731),9839=>array(84,0,400,731),9840=>array(84,0,664,731),9841=>array(64,0,701,731),9842=>array(84,0,813,709),9843=>array(76,16,820,731),9844=>array(76,16,820,731),9845=>array(76,16,820,731),9846=>array(76,16,820,731),9847=>array(76,16,820,731),9848=>array(76,16,820,731),9849=>array(76,16,820,731),9850=>array(76,16,820,731),9851=>array(84,0,812,704),9852=>array(83,0,814,731),9853=>array(83,0,814,731),9854=>array(83,0,814,731),9855=>array(149,1,747,731),9856=>array(73,0,797,725),9857=>array(73,0,797,725),9858=>array(73,0,797,725),9859=>array(73,0,797,725),9860=>array(73,0,797,725),9861=>array(73,0,797,725),9862=>array(83,0,813,731),9863=>array(83,0,813,731),9864=>array(83,0,813,731),9865=>array(83,0,813,731),9866=>array(83,0,813,98),9867=>array(83,0,813,98),9868=>array(83,0,813,413),9869=>array(83,0,813,413),9870=>array(83,0,813,413),9871=>array(83,0,813,413),9872=>array(168,3,728,731),9873=>array(168,3,728,731),9874=>array(52,0,844,731),9875=>array(97,-10,799,732),9876=>array(131,0,765,729),9877=>array(61,-10,479,732),9878=>array(59,-10,837,732),9879=>array(61,0,835,732),9880=>array(145,0,750,732),9881=>array(95,-17,802,727),9882=>array(128,-9,768,733),9883=>array(127,0,769,728),9884=>array(127,0,769,729),9888=>array(49,0,848,729),9889=>array(83,2,619,730),9890=>array(85,-125,919,731),9891=>array(79,-206,1023,720),9892=>array(85,-186,1109,856),9893=>array(85,-125,837,917),9894=>array(131,-14,727,869),9895=>array(101,-170,741,884),9896=>array(188,-14,650,869),9897=>array(4,133,829,596),9898=>array(188,133,650,597),9899=>array(188,133,650,597),9900=>array(249,194,589,536),9901=>array(175,194,663,536),9902=>array(41,169,797,560),9903=>array(5,194,833,536),9904=>array(103,237,757,540),9905=>array(211,42,626,698),9906=>array(85,-125,647,731),9907=>array(168,-125,646,731),9908=>array(86,-125,646,731),9909=>array(86,-125,646,731),9910=>array(59,-118,791,643),9911=>array(194,-104,595,710),9912=>array(158,-125,543,731),9920=>array(42,4,796,553),9921=>array(42,4,796,724),9922=>array(42,4,796,553),9923=>array(42,4,796,724),9954=>array(85,-14,647,843),9985=>array(11,190,803,635),9986=>array(42,141,784,588),9987=>array(11,94,803,539),9988=>array(36,119,824,613),9990=>array(42,-14,796,742),9991=>array(42,-14,796,742),9992=>array(59,21,782,708),9993=>array(64,107,773,622),9996=>array(212,0,561,742),9997=>array(21,83,802,678),9998=>array(89,75,724,710),9999=>array(26,198,819,530),10000=>array(89,75,724,710),10001=>array(43,185,757,544),10002=>array(67,209,757,520),10003=>array(150,97,667,630),10004=>array(116,87,721,631),10005=>array(126,72,711,657),10006=>array(85,31,752,698),10007=>array(118,-9,701,732),10008=>array(123,0,754,739),10009=>array(55,0,783,729),10010=>array(55,0,783,729),10011=>array(55,0,783,729),10012=>array(55,0,783,729),10013=>array(165,0,673,729),10014=>array(131,0,678,729),10015=>array(155,0,683,729),10016=>array(55,0,783,729),10017=>array(91,-13,747,744),10018=>array(41,-14,797,742),10019=>array(42,-12,796,742),10020=>array(41,-14,797,742),10021=>array(41,-13,797,743),10022=>array(42,-14,796,745),10023=>array(42,-14,796,745),10025=>array(23,-9,814,743),10026=>array(42,-14,796,742),10027=>array(23,-9,814,743),10028=>array(23,-9,814,743),10029=>array(23,-9,814,743),10030=>array(23,-9,814,743),10031=>array(23,-9,814,743),10032=>array(24,12,815,714),10033=>array(64,0,773,729),10034=>array(74,0,764,729),10035=>array(55,0,783,729),10036=>array(31,-14,787,742),10037=>array(41,-14,797,742),10038=>array(91,-14,747,742),10039=>array(41,-14,797,742),10040=>array(41,-14,797,742),10041=>array(41,-14,797,742),10042=>array(55,0,783,729),10043=>array(82,-14,756,742),10044=>array(82,-14,756,742),10045=>array(84,-14,753,742),10046=>array(79,-14,759,742),10047=>array(54,0,784,709),10048=>array(54,0,784,709),10049=>array(41,-14,797,742),10050=>array(42,-14,796,742),10051=>array(79,-14,759,742),10052=>array(89,0,749,729),10053=>array(76,0,762,729),10054=>array(63,2,773,729),10055=>array(79,-13,759,742),10056=>array(47,-13,791,730),10057=>array(47,-13,791,730),10058=>array(41,-13,797,743),10059=>array(41,-13,797,743),10061=>array(50,-10,847,738),10063=>array(60,-49,837,729),10064=>array(60,0,837,777),10065=>array(60,-49,837,729),10066=>array(60,0,837,777),10070=>array(83,-2,813,728),10072=>array(377,-240,460,760),10073=>array(336,-240,502,760),10074=>array(253,-240,585,760),10075=>array(85,395,288,729),10076=>array(59,395,262,729),10077=>array(85,395,528,729),10078=>array(59,395,502,729),10081=>array(155,-93,772,851),10082=>array(202,-17,636,742),10083=>array(163,-17,675,742),10084=>array(54,83,784,645),10085=>array(168,-1,729,729),10086=>array(62,21,724,702),10087=>array(78,169,759,564),10088=>array(196,-139,648,769),10089=>array(196,-139,648,769),10090=>array(264,-132,574,758),10091=>array(264,-132,574,758),10092=>array(215,-240,607,760),10093=>array(232,-240,623,760),10094=>array(142,-240,685,760),10095=>array(153,-240,696,760),10096=>array(167,-240,656,760),10097=>array(183,-240,672,760),10098=>array(346,-241,535,760),10099=>array(303,-241,492,760),10100=>array(175,-163,634,760),10101=>array(204,-163,663,760),10102=>array(59,-15,788,715),10103=>array(59,-15,788,715),10104=>array(59,-15,788,715),10105=>array(59,-15,788,715),10106=>array(59,-15,788,715),10107=>array(59,-15,788,715),10108=>array(59,-15,788,715),10109=>array(59,-15,788,715),10110=>array(59,-15,788,715),10111=>array(59,-15,788,715),10112=>array(4,-52,833,780),10113=>array(4,-52,833,780),10114=>array(4,-52,833,780),10115=>array(4,-52,833,780),10116=>array(4,-52,833,780),10117=>array(4,-52,833,780),10118=>array(4,-52,833,780),10119=>array(4,-52,833,780),10120=>array(4,-52,833,780),10121=>array(4,-52,833,780),10122=>array(4,-52,833,780),10123=>array(4,-52,833,780),10124=>array(4,-52,833,780),10125=>array(4,-52,833,780),10126=>array(4,-52,833,780),10127=>array(4,-52,833,780),10128=>array(4,-52,833,780),10129=>array(4,-52,833,780),10130=>array(4,-52,833,780),10131=>array(4,-52,833,780),10132=>array(57,75,789,552),10136=>array(123,55,682,614),10137=>array(57,100,789,527),10138=>array(123,13,682,572),10139=>array(57,129,789,498),10140=>array(57,57,764,570),10141=>array(57,100,789,527),10142=>array(57,100,789,527),10143=>array(57,100,789,527),10144=>array(57,100,789,527),10145=>array(57,46,811,581),10146=>array(111,94,789,533),10147=>array(111,94,789,533),10148=>array(111,-4,789,631),10149=>array(57,100,789,548),10150=>array(57,79,789,527),10151=>array(240,-7,606,634),10152=>array(57,100,789,527),10153=>array(57,75,765,552),10154=>array(57,75,765,552),10155=>array(21,12,794,586),10156=>array(21,12,794,586),10157=>array(135,0,774,574),10158=>array(135,0,774,574),10159=>array(62,49,799,574),10161=>array(62,49,799,574),10162=>array(154,-20,721,585),10163=>array(63,157,789,470),10164=>array(81,55,682,655),10165=>array(57,173,789,454),10166=>array(82,-29,682,572),10167=>array(82,55,682,655),10168=>array(57,172,789,455),10169=>array(82,-28,682,572),10170=>array(56,84,789,543),10171=>array(73,140,779,487),10172=>array(79,167,774,460),10173=>array(79,118,774,509),10174=>array(57,81,789,546),10181=>array(54,-163,405,769),10182=>array(52,-163,403,769),10208=>array(3,-233,491,807),10214=>array(86,-132,419,760),10215=>array(86,-132,419,760),10216=>array(104,-132,377,759),10217=>array(80,-132,353,759),10218=>array(104,-132,641,759),10219=>array(80,-132,616,759),10224=>array(41,0,797,732),10225=>array(42,-3,798,729),10226=>array(9,45,816,685),10227=>array(22,45,830,685),10228=>array(57,-14,1108,643),10229=>array(49,87,1376,540),10230=>array(57,87,1385,540),10231=>array(49,87,1385,540),10232=>array(49,87,1376,540),10233=>array(57,87,1385,540),10234=>array(49,87,1385,540),10235=>array(49,87,1376,540),10236=>array(57,87,1385,540),10237=>array(49,87,1376,540),10238=>array(57,87,1385,540),10239=>array(57,87,1385,540),10240=>array(146,586,342,781),10241=>array(146,586,342,781),10242=>array(146,325,342,521),10243=>array(146,325,342,781),10244=>array(146,65,342,261),10245=>array(146,65,342,781),10246=>array(146,65,342,521),10247=>array(146,65,342,781),10248=>array(439,586,635,781),10249=>array(146,586,635,781),10250=>array(146,325,635,781),10251=>array(146,325,635,781),10252=>array(146,65,635,781),10253=>array(146,65,635,781),10254=>array(146,65,635,781),10255=>array(146,65,635,781),10256=>array(439,325,635,521),10257=>array(146,325,635,781),10258=>array(146,325,635,521),10259=>array(146,325,635,781),10260=>array(146,65,635,521),10261=>array(146,65,635,781),10262=>array(146,65,635,521),10263=>array(146,65,635,781),10264=>array(439,325,635,781),10265=>array(146,325,635,781),10266=>array(146,325,635,781),10267=>array(146,325,635,781),10268=>array(146,65,635,781),10269=>array(146,65,635,781),10270=>array(146,65,635,781),10271=>array(146,65,635,781),10272=>array(439,65,635,261),10273=>array(146,65,635,781),10274=>array(146,65,635,521),10275=>array(146,65,635,781),10276=>array(146,65,635,261),10277=>array(146,65,635,781),10278=>array(146,65,635,521),10279=>array(146,65,635,781),10280=>array(439,65,635,781),10281=>array(146,65,635,781),10282=>array(146,65,635,781),10283=>array(146,65,635,781),10284=>array(146,65,635,781),10285=>array(146,65,635,781),10286=>array(146,65,635,781),10287=>array(146,65,635,781),10288=>array(439,65,635,521),10289=>array(146,65,635,781),10290=>array(146,65,635,521),10291=>array(146,65,635,781),10292=>array(146,65,635,521),10293=>array(146,65,635,781),10294=>array(146,65,635,521),10295=>array(146,65,635,781),10296=>array(439,65,635,781),10297=>array(146,65,635,781),10298=>array(146,65,635,781),10299=>array(146,65,635,781),10300=>array(146,65,635,781),10301=>array(146,65,635,781),10302=>array(146,65,635,781),10303=>array(146,65,635,781),10304=>array(146,-195,342,0),10305=>array(146,-195,342,781),10306=>array(146,-195,342,521),10307=>array(146,-195,342,781),10308=>array(146,-195,342,261),10309=>array(146,-195,342,781),10310=>array(146,-195,342,521),10311=>array(146,-195,342,781),10312=>array(146,-195,635,781),10313=>array(146,-195,635,781),10314=>array(146,-195,635,781),10315=>array(146,-195,635,781),10316=>array(146,-195,635,781),10317=>array(146,-195,635,781),10318=>array(146,-195,635,781),10319=>array(146,-195,635,781),10320=>array(146,-195,635,521),10321=>array(146,-195,635,781),10322=>array(146,-195,635,521),10323=>array(146,-195,635,781),10324=>array(146,-195,635,521),10325=>array(146,-195,635,781),10326=>array(146,-195,635,521),10327=>array(146,-195,635,781),10328=>array(146,-195,635,781),10329=>array(146,-195,635,781),10330=>array(146,-195,635,781),10331=>array(146,-195,635,781),10332=>array(146,-195,635,781),10333=>array(146,-195,635,781),10334=>array(146,-195,635,781),10335=>array(146,-195,635,781),10336=>array(146,-195,635,261),10337=>array(146,-195,635,781),10338=>array(146,-195,635,521),10339=>array(146,-195,635,781),10340=>array(146,-195,635,261),10341=>array(146,-195,635,781),10342=>array(146,-195,635,521),10343=>array(146,-195,635,781),10344=>array(146,-195,635,781),10345=>array(146,-195,635,781),10346=>array(146,-195,635,781),10347=>array(146,-195,635,781),10348=>array(146,-195,635,781),10349=>array(146,-195,635,781),10350=>array(146,-195,635,781),10351=>array(146,-195,635,781),10352=>array(146,-195,635,521),10353=>array(146,-195,635,781),10354=>array(146,-195,635,521),10355=>array(146,-195,635,781),10356=>array(146,-195,635,521),10357=>array(146,-195,635,781),10358=>array(146,-195,635,521),10359=>array(146,-195,635,781),10360=>array(146,-195,635,781),10361=>array(146,-195,635,781),10362=>array(146,-195,635,781),10363=>array(146,-195,635,781),10364=>array(146,-195,635,781),10365=>array(146,-195,635,781),10366=>array(146,-195,635,781),10367=>array(146,-195,635,781),10368=>array(439,-195,635,0),10369=>array(146,-195,635,781),10370=>array(146,-195,635,521),10371=>array(146,-195,635,781),10372=>array(146,-195,635,261),10373=>array(146,-195,635,781),10374=>array(146,-195,635,521),10375=>array(146,-195,635,781),10376=>array(439,-195,635,781),10377=>array(146,-195,635,781),10378=>array(146,-195,635,781),10379=>array(146,-195,635,781),10380=>array(146,-195,635,781),10381=>array(146,-195,635,781),10382=>array(146,-195,635,781),10383=>array(146,-195,635,781),10384=>array(439,-195,635,521),10385=>array(146,-195,635,781),10386=>array(146,-195,635,521),10387=>array(146,-195,635,781),10388=>array(146,-195,635,521),10389=>array(146,-195,635,781),10390=>array(146,-195,635,521),10391=>array(146,-195,635,781),10392=>array(439,-195,635,781),10393=>array(146,-195,635,781),10394=>array(146,-195,635,781),10395=>array(146,-195,635,781),10396=>array(146,-195,635,781),10397=>array(146,-195,635,781),10398=>array(146,-195,635,781),10399=>array(146,-195,635,781),10400=>array(439,-195,635,261),10401=>array(146,-195,635,781),10402=>array(146,-195,635,521),10403=>array(146,-195,635,781),10404=>array(146,-195,635,261),10405=>array(146,-195,635,781),10406=>array(146,-195,635,521),10407=>array(146,-195,635,781),10408=>array(439,-195,635,781),10409=>array(146,-195,635,781),10410=>array(146,-195,635,781),10411=>array(146,-195,635,781),10412=>array(146,-195,635,781),10413=>array(146,-195,635,781),10414=>array(146,-195,635,781),10415=>array(146,-195,635,781),10416=>array(439,-195,635,521),10417=>array(146,-195,635,781),10418=>array(146,-195,635,521),10419=>array(146,-195,635,781),10420=>array(146,-195,635,521),10421=>array(146,-195,635,781),10422=>array(146,-195,635,521),10423=>array(146,-195,635,781),10424=>array(439,-195,635,781),10425=>array(146,-195,635,781),10426=>array(146,-195,635,781),10427=>array(146,-195,635,781),10428=>array(146,-195,635,781),10429=>array(146,-195,635,781),10430=>array(146,-195,635,781),10431=>array(146,-195,635,781),10432=>array(146,-195,635,0),10433=>array(146,-195,635,781),10434=>array(146,-195,635,521),10435=>array(146,-195,635,781),10436=>array(146,-195,635,261),10437=>array(146,-195,635,781),10438=>array(146,-195,635,521),10439=>array(146,-195,635,781),10440=>array(146,-195,635,781),10441=>array(146,-195,635,781),10442=>array(146,-195,635,781),10443=>array(146,-195,635,781),10444=>array(146,-195,635,781),10445=>array(146,-195,635,781),10446=>array(146,-195,635,781),10447=>array(146,-195,635,781),10448=>array(146,-195,635,521),10449=>array(146,-195,635,781),10450=>array(146,-195,635,521),10451=>array(146,-195,635,781),10452=>array(146,-195,635,521),10453=>array(146,-195,635,781),10454=>array(146,-195,635,521),10455=>array(146,-195,635,781),10456=>array(146,-195,635,781),10457=>array(146,-195,635,781),10458=>array(146,-195,635,781),10459=>array(146,-195,635,781),10460=>array(146,-195,635,781),10461=>array(146,-195,635,781),10462=>array(146,-195,635,781),10463=>array(146,-195,635,781),10464=>array(146,-195,635,261),10465=>array(146,-195,635,781),10466=>array(146,-195,635,521),10467=>array(146,-195,635,781),10468=>array(146,-195,635,261),10469=>array(146,-195,635,781),10470=>array(146,-195,635,521),10471=>array(146,-195,635,781),10472=>array(146,-195,635,781),10473=>array(146,-195,635,781),10474=>array(146,-195,635,781),10475=>array(146,-195,635,781),10476=>array(146,-195,635,781),10477=>array(146,-195,635,781),10478=>array(146,-195,635,781),10479=>array(146,-195,635,781),10480=>array(146,-195,635,521),10481=>array(146,-195,635,781),10482=>array(146,-195,635,521),10483=>array(146,-195,635,781),10484=>array(146,-195,635,521),10485=>array(146,-195,635,781),10486=>array(146,-195,635,521),10487=>array(146,-195,635,781),10488=>array(146,-195,635,781),10489=>array(146,-195,635,781),10490=>array(146,-195,635,781),10491=>array(146,-195,635,781),10492=>array(146,-195,635,781),10493=>array(146,-195,635,781),10494=>array(146,-195,635,781),10495=>array(146,-195,635,781),10502=>array(49,87,781,540),10503=>array(57,87,789,540),10506=>array(132,0,707,732),10507=>array(132,0,707,732),10560=>array(86,45,726,853),10561=>array(86,45,726,853),10627=>array(125,-163,628,760),10628=>array(125,-163,628,760),10702=>array(106,-258,732,800),10703=>array(106,-1,940,628),10704=>array(106,-1,940,628),10705=>array(106,-48,894,674),10706=>array(106,-48,894,674),10707=>array(106,-48,894,674),10708=>array(106,-48,894,675),10709=>array(106,-48,894,675),10731=>array(3,-233,491,807),10746=>array(106,0,732,627),10747=>array(106,0,732,627),10752=>array(28,-211,972,734),10753=>array(28,-211,972,734),10754=>array(28,-211,972,734),10764=>array(15,-227,1646,754),10765=>array(14,-227,548,754),10766=>array(14,-227,548,754),10767=>array(14,-227,548,754),10768=>array(14,-227,548,754),10769=>array(14,-227,576,754),10770=>array(14,-227,548,754),10771=>array(14,-227,548,754),10772=>array(14,-228,651,754),10773=>array(14,-227,548,754),10774=>array(14,-227,548,754),10775=>array(-30,-227,556,754),10776=>array(14,-227,548,754),10777=>array(14,-227,548,754),10778=>array(14,-227,548,754),10779=>array(15,-227,548,898),10780=>array(15,-372,548,754),10799=>array(125,20,713,607),10858=>array(106,212,732,660),10859=>array(106,-34,732,660),10877=>array(106,-150,732,632),10878=>array(106,-150,732,632),10879=>array(106,-150,732,632),10880=>array(106,-150,732,632),10881=>array(106,-150,732,688),10882=>array(106,-150,732,688),10883=>array(106,-150,732,827),10884=>array(106,-150,732,827),10885=>array(106,-217,732,630),10886=>array(106,-217,732,630),10887=>array(106,-124,732,582),10888=>array(106,-124,732,582),10889=>array(106,-281,732,630),10890=>array(106,-281,732,630),10891=>array(106,-303,732,814),10892=>array(106,-303,732,814),10893=>array(106,-183,732,653),10894=>array(106,-183,732,653),10895=>array(106,-245,732,765),10896=>array(106,-245,732,765),10897=>array(106,-278,732,782),10898=>array(106,-278,732,782),10899=>array(106,-263,732,771),10900=>array(106,-263,732,771),10901=>array(106,-50,732,733),10902=>array(106,-50,732,733),10903=>array(106,-50,732,733),10904=>array(106,-50,732,733),10905=>array(106,-45,732,678),10906=>array(106,-45,732,678),10907=>array(106,-81,732,724),10908=>array(106,-81,732,724),10909=>array(106,13,732,680),10910=>array(106,13,732,680),10911=>array(106,-239,732,746),10912=>array(106,-239,732,746),10926=>array(106,22,732,656),10927=>array(106,-83,732,684),10928=>array(106,-83,732,684),10929=>array(106,-246,732,684),10930=>array(106,-246,732,684),10931=>array(106,-205,732,672),10932=>array(106,-205,732,672),10933=>array(106,-304,732,672),10934=>array(106,-304,732,672),10935=>array(106,-252,732,713),10936=>array(106,-252,732,713),10937=>array(106,-316,732,713),10938=>array(106,-316,732,713),11001=>array(106,-195,732,609),11002=>array(106,-195,732,609),11008=>array(123,-23,744,598),11009=>array(94,-23,715,598),11010=>array(123,-23,744,598),11011=>array(94,-23,715,598),11012=>array(27,46,789,581),11013=>array(27,46,781,581),11014=>array(151,0,687,754),11015=>array(151,-25,687,729),11016=>array(123,-23,744,598),11017=>array(94,-23,715,598),11018=>array(123,-23,744,598),11019=>array(94,-23,715,598),11020=>array(27,46,789,581),11021=>array(151,-25,687,754),11022=>array(57,-25,800,372),11023=>array(57,255,800,652),11024=>array(38,-25,781,372),11025=>array(38,255,781,652),11026=>array(91,-124,854,643),11027=>array(91,-124,854,643),11028=>array(91,-124,854,643),11029=>array(91,-124,854,643),11030=>array(3,-124,766,643),11031=>array(3,-124,766,643),11032=>array(3,-124,766,643),11033=>array(3,-124,766,643),11034=>array(91,-124,854,643),11039=>array(18,-26,852,767),11040=>array(18,-26,852,767),11041=>array(73,-91,800,748),11042=>array(73,-91,800,748),11043=>array(17,-35,856,692),11044=>array(55,-250,1064,770),11091=>array(38,-47,832,788),11092=>array(38,-47,832,788),11360=>array(5,0,610,729),11361=>array(5,0,355,760),11362=>array(-17,0,610,729),11363=>array(6,0,692,729),11364=>array(92,-200,750,729),11365=>array(32,-46,639,594),11366=>array(13,-93,455,822),11367=>array(92,-157,932,729),11368=>array(84,-138,809,760),11369=>array(92,-157,805,729),11370=>array(84,-138,684,760),11371=>array(45,-157,768,729),11372=>array(45,-138,622,547),11373=>array(48,-14,769,741),11374=>array(92,-200,903,729),11375=>array(5,0,769,729),11376=>array(48,-14,769,741),11377=>array(15,0,778,560),11378=>array(30,0,1221,742),11379=>array(35,0,1056,560),11380=>array(38,0,637,586),11381=>array(92,0,606,729),11382=>array(84,0,481,547),11383=>array(64,0,725,552),11385=>array(84,-13,490,760),11386=>array(43,-14,644,560),11387=>array(78,0,467,547),11388=>array(-21,-121,166,425),11389=>array(3,326,484,734),11390=>array(72,-240,670,742),11391=>array(45,-240,680,729),11520=>array(45,-64,609,547),11521=>array(16,-232,625,546),11522=>array(41,-232,629,547),11523=>array(42,-10,585,807),11524=>array(40,-228,613,546),11525=>array(41,-228,988,546),11526=>array(20,-8,668,816),11527=>array(42,-9,974,547),11528=>array(39,0,589,547),11529=>array(41,-227,614,816),11530=>array(39,-9,985,546),11531=>array(42,-8,649,816),11532=>array(39,0,627,816),11533=>array(41,-8,988,546),11534=>array(41,-8,629,546),11535=>array(41,-228,846,816),11536=>array(42,-9,976,816),11537=>array(41,-9,630,816),11538=>array(46,-232,610,546),11539=>array(41,-228,984,661),11540=>array(45,-228,958,546),11541=>array(39,-228,978,816),11542=>array(44,0,628,546),11543=>array(41,-228,630,547),11544=>array(41,-232,627,546),11545=>array(44,-228,628,816),11546=>array(42,-232,610,547),11547=>array(43,-9,658,816),11548=>array(44,-228,989,547),11549=>array(44,-232,619,546),11550=>array(46,-232,639,546),11551=>array(44,-228,615,567),11552=>array(44,-9,1004,546),11553=>array(44,-228,619,816),11554=>array(42,-9,601,626),11555=>array(44,-228,622,816),11556=>array(42,-228,684,546),11557=>array(45,-8,959,816),11568=>array(55,-14,636,380),11569=>array(50,-14,892,742),11570=>array(50,-14,892,742),11571=>array(51,0,674,729),11572=>array(51,0,674,729),11573=>array(56,0,669,729),11574=>array(48,0,627,729),11575=>array(5,0,769,729),11576=>array(5,0,769,729),11577=>array(92,0,610,729),11578=>array(92,0,610,729),11579=>array(73,-14,729,742),11580=>array(73,0,916,729),11581=>array(92,0,754,729),11582=>array(92,0,549,729),11583=>array(92,0,754,729),11584=>array(50,-14,892,742),11585=>array(50,-84,892,815),11586=>array(92,0,281,729),11587=>array(21,0,720,729),11588=>array(92,0,745,729),11589=>array(-30,0,944,729),11590=>array(92,0,598,729),11591=>array(92,0,709,729),11592=>array(73,256,607,445),11593=>array(92,0,610,729),11594=>array(73,0,529,729),11595=>array(64,-14,892,742),11596=>array(82,0,695,729),11597=>array(92,0,745,729),11598=>array(92,0,610,729),11599=>array(92,0,280,729),11600=>array(82,0,695,729),11601=>array(92,0,281,729),11602=>array(42,-14,684,729),11603=>array(55,-14,636,742),11604=>array(50,-14,892,742),11605=>array(50,-95,892,742),11606=>array(92,0,745,729),11607=>array(92,0,281,729),11608=>array(92,0,744,729),11609=>array(50,-14,892,742),11610=>array(50,-14,892,823),11611=>array(50,-14,718,742),11612=>array(79,0,797,729),11613=>array(19,0,751,729),11614=>array(50,-14,718,742),11615=>array(92,0,610,729),11616=>array(5,0,769,729),11617=>array(92,0,745,729),11618=>array(92,0,599,729),11619=>array(50,0,800,729),11620=>array(92,0,654,729),11621=>array(50,0,800,729),11631=>array(64,490,651,729),11800=>array(69,-14,515,728),11807=>array(106,-34,732,415),11810=>array(86,403,389,760),11811=>array(68,403,371,760),11812=>array(86,-132,389,225),11813=>array(68,-132,371,225),11822=>array(69,0,515,742),19904=>array(83,-158,813,729),19905=>array(83,-158,813,729),19906=>array(83,-158,813,729),19907=>array(83,-158,813,729),19908=>array(83,-158,813,729),19909=>array(83,-158,813,729),19910=>array(83,-158,813,729),19911=>array(83,-158,813,729),19912=>array(83,-158,813,729),19913=>array(83,-158,814,729),19914=>array(83,-158,813,729),19915=>array(83,-158,813,729),19916=>array(83,-158,813,729),19917=>array(83,-158,813,729),19918=>array(83,-158,813,729),19919=>array(83,-158,813,729),19920=>array(83,-158,814,729),19921=>array(83,-158,813,729),19922=>array(83,-158,814,729),19923=>array(83,-158,813,729),19924=>array(83,-158,813,729),19925=>array(83,-158,813,729),19926=>array(83,-158,813,729),19927=>array(83,-158,813,729),19928=>array(83,-158,813,729),19929=>array(83,-158,813,729),19930=>array(83,-158,813,729),19931=>array(83,-158,814,729),19932=>array(83,-158,813,729),19933=>array(83,-158,813,729),19934=>array(83,-158,814,729),19935=>array(83,-158,813,729),19936=>array(83,-158,813,729),19937=>array(83,-158,813,729),19938=>array(83,-158,813,729),19939=>array(83,-158,813,729),19940=>array(83,-158,813,729),19941=>array(83,-158,814,729),19942=>array(83,-158,813,729),19943=>array(83,-158,813,729),19944=>array(83,-158,814,729),19945=>array(83,-158,813,729),19946=>array(83,-158,814,729),19947=>array(83,-158,813,729),19948=>array(83,-158,814,729),19949=>array(83,-158,813,729),19950=>array(83,-158,814,729),19951=>array(83,-158,813,729),19952=>array(83,-158,814,729),19953=>array(83,-158,813,729),19954=>array(83,-158,813,729),19955=>array(83,-158,813,729),19956=>array(83,-158,813,729),19957=>array(83,-158,814,729),19958=>array(83,-158,813,729),19959=>array(83,-158,813,729),19960=>array(83,-158,813,729),19961=>array(83,-158,814,729),19962=>array(83,-158,813,729),19963=>array(83,-158,814,729),19964=>array(83,-158,814,729),19965=>array(83,-158,813,729),19966=>array(83,-158,813,729),19967=>array(83,-158,813,729),42192=>array(92,0,692,729),42193=>array(92,0,692,729),42194=>array(41,0,641,729),42195=>array(92,0,778,729),42196=>array(5,0,677,729),42197=>array(5,0,677,729),42198=>array(50,-14,747,742),42199=>array(92,0,805,729),42200=>array(-30,0,683,729),42201=>array(0,-14,439,729),42202=>array(50,-14,670,742),42203=>array(50,-14,670,742),42204=>array(45,0,680,729),42205=>array(92,0,599,729),42206=>array(92,0,599,729),42207=>array(92,0,903,729),42208=>array(92,0,745,729),42209=>array(92,0,610,729),42210=>array(72,-14,647,742),42211=>array(92,0,750,729),42212=>array(20,0,678,729),42213=>array(5,0,769,729),42214=>array(5,0,769,729),42215=>array(92,0,745,729),42216=>array(25,-14,723,742),42217=>array(91,0,530,743),42218=>array(30,0,1072,729),42219=>array(19,0,751,729),42220=>array(-10,0,734,729),42221=>array(70,0,670,729),42222=>array(5,0,769,729),42223=>array(5,0,769,729),42224=>array(92,0,610,729),42225=>array(73,0,591,729),42226=>array(92,0,280,729),42227=>array(50,-14,800,742),42228=>array(92,-14,720,729),42229=>array(92,0,720,743),42230=>array(9,0,527,729),42231=>array(52,0,738,729),42232=>array(73,0,249,189),42233=>array(24,-142,249,189),42234=>array(73,0,601,189),42235=>array(73,-142,601,189),42236=>array(24,-142,249,547),42237=>array(73,0,249,547),42238=>array(73,0,515,405),42239=>array(73,134,515,492),42564=>array(26,-14,601,742),42565=>array(15,-14,511,560),42566=>array(92,0,428,729),42567=>array(83,0,356,547),42572=>array(57,-14,1348,654),42573=>array(47,-13,1126,547),42576=>array(49,0,1142,729),42577=>array(20,0,946,547),42580=>array(55,-14,1082,742),42581=>array(44,-14,888,560),42582=>array(92,0,1088,729),42583=>array(84,-14,880,560),42594=>array(60,-157,1058,729),42595=>array(56,-138,900,547),42596=>array(46,0,1069,729),42597=>array(55,0,888,547),42598=>array(92,0,1233,729),42599=>array(84,0,973,547),42600=>array(50,-14,800,742),42601=>array(43,-14,644,560),42602=>array(50,-14,987,742),42603=>array(43,-14,825,560),42604=>array(50,-14,1356,742),42605=>array(43,-14,1063,560),42606=>array(28,-208,933,743),42634=>array(5,-200,883,729),42635=>array(4,-216,709,547),42636=>array(5,0,677,729),42637=>array(4,0,575,547),42644=>array(81,0,716,729),42645=>array(84,0,634,760),42760=>array(96,0,404,693),42761=>array(96,0,404,693),42762=>array(96,0,404,693),42763=>array(96,0,404,693),42764=>array(96,0,404,693),42765=>array(96,0,404,693),42766=>array(96,0,404,693),42767=>array(96,0,404,693),42768=>array(96,0,404,693),42769=>array(96,0,404,693),42770=>array(96,0,404,693),42771=>array(96,0,404,693),42772=>array(96,0,404,693),42773=>array(96,0,404,693),42774=>array(96,0,404,693),42779=>array(58,326,342,736),42780=>array(58,324,342,734),42781=>array(88,326,199,734),42782=>array(88,326,199,734),42783=>array(88,0,199,408),42786=>array(67,0,409,729),42787=>array(67,0,355,547),42788=>array(56,224,479,742),42789=>array(56,42,479,560),42790=>array(92,-200,745,729),42791=>array(84,-216,634,760),42792=>array(5,-216,986,729),42793=>array(13,-215,810,702),42794=>array(67,-14,616,742),42795=>array(54,-202,493,560),42800=>array(92,0,473,547),42801=>array(52,-14,548,560),42802=>array(5,0,1344,729),42803=>array(43,-14,973,560),42804=>array(5,-14,1234,742),42805=>array(43,-14,1021,560),42806=>array(5,-14,1124,729),42807=>array(43,-14,970,560),42808=>array(5,0,1074,729),42809=>array(43,-14,907,560),42810=>array(5,0,1074,729),42811=>array(43,-14,907,560),42812=>array(5,-216,1030,729),42813=>array(43,-216,907,560),42814=>array(33,-14,653,742),42815=>array(43,-14,526,560),42816=>array(5,0,812,729),42817=>array(6,0,708,760),42822=>array(92,0,822,729),42823=>array(84,0,458,760),42824=>array(41,0,655,729),42825=>array(59,0,473,760),42826=>array(16,-14,902,742),42827=>array(5,-14,809,560),42830=>array(50,-14,1356,742),42831=>array(43,-14,1063,560),42832=>array(16,0,692,729),42833=>array(5,-208,671,560),42834=>array(34,0,907,729),42835=>array(34,-208,892,560),42838=>array(50,-188,800,742),42839=>array(45,-208,711,559),42852=>array(16,0,692,729),42853=>array(5,-208,671,760),42854=>array(16,0,692,729),42855=>array(5,-208,671,760),42880=>array(27,0,545,729),42881=>array(84,-208,259,547),42882=>array(84,-208,730,742),42883=>array(84,-208,634,560),42889=>array(112,0,288,547),42890=>array(83,141,303,405),42891=>array(140,245,316,729),42892=>array(95,458,211,729),42893=>array(81,0,716,729),42894=>array(84,-216,680,760),42896=>array(92,-157,868,729),42897=>array(84,-138,725,560),42912=>array(-11,-14,832,742),42913=>array(-11,-216,727,559),42914=>array(-11,0,805,729),42915=>array(-11,0,684,760),42916=>array(-11,0,848,729),42917=>array(-11,0,723,560),42918=>array(-11,0,781,729),42919=>array(-11,0,504,560),42920=>array(-11,-14,731,742),42921=>array(-11,-14,606,560),42922=>array(-68,0,794,729),43002=>array(84,0,972,547),43003=>array(84,0,591,729),43004=>array(41,0,641,729),43005=>array(92,0,903,729),43006=>array(92,0,280,928),43007=>array(31,0,1294,729),61184=>array(91,602,317,693),61185=>array(48,451,338,693),61186=>array(26,301,363,693),61187=>array(17,150,373,693),61188=>array(13,0,378,693),61189=>array(48,451,338,693),61190=>array(91,451,317,543),61191=>array(48,301,338,543),61192=>array(26,150,363,543),61193=>array(17,0,373,543),61194=>array(26,301,363,693),61195=>array(48,301,338,543),61196=>array(91,301,317,393),61197=>array(48,150,338,393),61198=>array(26,0,363,393),61199=>array(17,150,373,693),61200=>array(26,149,363,542),61201=>array(48,150,338,393),61202=>array(91,150,317,242),61203=>array(48,0,338,242),61204=>array(13,0,378,693),61205=>array(17,0,373,543),61206=>array(26,0,363,393),61207=>array(48,0,338,242),61208=>array(91,0,317,92),61209=>array(96,0,188,693),62464=>array(49,-14,563,819),62465=>array(49,-15,563,823),62466=>array(49,-14,604,828),62467=>array(49,0,853,828),62468=>array(49,-15,563,828),62469=>array(49,-15,563,828),62470=>array(29,-15,612,828),62471=>array(49,-14,846,828),62472=>array(49,0,541,828),62473=>array(49,-14,563,820),62474=>array(49,-6,1114,828),62475=>array(49,-14,563,828),62476=>array(63,-15,578,820),62477=>array(54,0,839,828),62478=>array(49,-15,563,819),62479=>array(49,-15,563,840),62480=>array(49,0,875,828),62481=>array(63,-14,578,819),62482=>array(44,-14,699,828),62483=>array(34,-14,570,828),62484=>array(49,-14,837,828),62485=>array(49,-14,563,819),62486=>array(49,0,858,828),62487=>array(49,-14,563,820),62488=>array(44,-14,558,828),62489=>array(64,0,579,828),62490=>array(50,-15,628,820),62491=>array(49,-14,563,819),62492=>array(63,-14,577,828),62493=>array(49,-14,581,820),62494=>array(63,-14,578,819),62495=>array(24,-14,546,828),62496=>array(49,-15,563,828),62497=>array(63,-15,577,828),62498=>array(49,-73,563,828),62499=>array(49,-15,563,830),62500=>array(49,-15,569,828),62501=>array(49,-14,627,828),62502=>array(49,-14,914,828),62504=>array(45,-228,960,816),62505=>array(54,-223,791,843),62506=>array(54,-14,510,761),62507=>array(54,-14,510,773),62508=>array(54,-14,510,866),62509=>array(54,-14,510,812),62510=>array(54,-14,510,877),62511=>array(54,-14,510,803),62512=>array(54,-232,501,761),62513=>array(54,-232,501,793),62514=>array(54,-232,501,891),62515=>array(54,-232,501,803),62516=>array(54,0,520,761),62517=>array(54,0,520,793),62518=>array(54,0,520,803),62519=>array(54,-0,770,761),62520=>array(54,-0,770,773),62521=>array(54,-0,770,884),62522=>array(54,-0,770,793),62523=>array(54,-0,770,803),62524=>array(54,-232,557,761),62525=>array(54,-232,557,773),62526=>array(54,-232,557,894),62527=>array(54,-232,557,793),62528=>array(54,-232,557,803),62529=>array(54,-232,557,844),63173=>array(43,-14,644,760),64256=>array(19,0,819,760),64257=>array(21,0,657,760),64258=>array(19,0,657,760),64259=>array(19,0,1031,760),64260=>array(19,0,1032,760),64261=>array(19,0,785,760),64262=>array(52,-14,997,742),64275=>array(74,-14,1300,760),64276=>array(78,-14,1301,760),64277=>array(78,-208,1300,760),64278=>array(78,-208,1300,760),64279=>array(78,-208,1629,760),64285=>array(66,32,228,547),64286=>array(182,635,510,780),64287=>array(66,32,500,547),64288=>array(38,0,590,547),64289=>array(85,0,855,547),64290=>array(43,0,731,547),64291=>array(91,0,778,547),64292=>array(43,0,730,547),64293=>array(43,0,730,739),64294=>array(91,0,778,547),64295=>array(43,0,730,547),64296=>array(47,-4,730,547),64297=>array(106,256,732,627),64298=>array(20,0,750,710),64299=>array(20,0,750,723),64300=>array(20,0,750,710),64301=>array(20,0,750,710),64302=>array(84,-171,644,547),64303=>array(84,-217,644,547),64304=>array(84,-171,644,547),64305=>array(43,0,567,547),64306=>array(43,-9,418,547),64307=>array(43,0,545,547),64308=>array(91,0,596,547),64309=>array(43,0,346,547),64310=>array(43,0,442,547),64312=>array(90,-13,624,553),64313=>array(43,164,369,547),64314=>array(43,-240,487,547),64315=>array(43,0,511,547),64316=>array(43,0,527,711),64318=>array(43,0,633,554),64320=>array(43,0,362,547),64321=>array(90,-13,624,547),64323=>array(91,-240,584,547),64324=>array(91,0,603,547),64326=>array(33,0,564,547),64327=>array(91,-240,660,546),64328=>array(43,0,511,547),64329=>array(20,0,750,547),64330=>array(10,-4,592,547),64331=>array(91,0,252,710),64332=>array(43,0,567,710),64333=>array(43,0,511,710),64334=>array(91,0,603,710),64335=>array(43,0,652,729),64338=>array(63,-244,921,327),64339=>array(63,-244,1068,327),64340=>array(-10,-244,292,293),64341=>array(-10,-244,418,293),64342=>array(63,-244,921,327),64343=>array(63,-244,1068,327),64344=>array(-10,-244,302,293),64345=>array(-10,-244,418,293),64346=>array(63,-244,921,327),64347=>array(63,-244,1068,327),64348=>array(-10,-244,302,293),64349=>array(-10,-244,418,293),64350=>array(63,-5,921,566),64351=>array(63,-5,1068,566),64352=>array(-10,0,292,640),64353=>array(-10,0,418,640),64354=>array(63,-5,921,566),64355=>array(63,-5,1068,566),64356=>array(-10,0,302,640),64357=>array(-10,0,418,640),64358=>array(63,-5,921,599),64359=>array(63,-5,1068,599),64360=>array(-10,0,333,672),64361=>array(-10,0,418,672),64362=>array(63,-24,1082,786),64363=>array(63,-29,1201,786),64364=>array(-10,0,575,786),64365=>array(-10,0,729,786),64366=>array(63,-24,1082,786),64367=>array(63,-29,1201,786),64368=>array(-10,0,575,786),64369=>array(-10,0,729,786),64370=>array(77,-244,720,425),64371=>array(77,-244,730,425),64372=>array(-10,-244,628,405),64373=>array(-10,-244,730,405),64374=>array(77,-244,720,425),64375=>array(77,-244,730,425),64376=>array(-10,-117,628,405),64377=>array(-10,-117,730,405),64378=>array(77,-244,720,425),64379=>array(77,-244,730,425),64380=>array(-10,-244,628,405),64381=>array(-10,-244,730,405),64382=>array(77,-244,720,425),64383=>array(77,-244,730,425),64384=>array(-10,-244,628,405),64385=>array(-10,-244,730,405),64386=>array(61,-146,442,415),64387=>array(61,-146,587,415),64388=>array(61,-15,442,586),64389=>array(61,-15,587,586),64390=>array(61,-15,442,708),64391=>array(61,-15,587,708),64392=>array(61,-15,442,746),64393=>array(61,-15,587,746),64394=>array(-42,-244,508,615),64395=>array(-42,-244,632,615),64396=>array(-42,-244,520,648),64397=>array(-42,-244,632,648),64398=>array(63,-39,1024,760),64399=>array(63,-39,1034,760),64400=>array(-10,0,582,760),64401=>array(-10,0,591,760),64402=>array(63,-39,1024,910),64403=>array(63,-39,1034,910),64404=>array(-10,0,582,910),64405=>array(-10,0,591,910),64406=>array(63,-293,1024,910),64407=>array(63,-293,1034,910),64408=>array(-10,-269,582,910),64409=>array(-10,-269,591,910),64410=>array(63,-39,1024,910),64411=>array(63,-39,1034,910),64412=>array(-10,0,582,910),64413=>array(-10,0,591,910),64414=>array(62,-165,779,366),64415=>array(62,-244,910,287),64416=>array(62,-165,779,636),64417=>array(62,-244,910,514),64418=>array(-10,0,333,672),64419=>array(-10,0,418,672),64426=>array(70,-33,877,506),64427=>array(70,-244,890,369),64428=>array(-10,-33,633,506),64429=>array(-10,-244,670,369),64467=>array(70,-27,814,854),64468=>array(70,-27,941,854),64469=>array(-10,0,582,928),64470=>array(-10,0,591,928),64473=>array(-42,-244,547,556),64474=>array(-42,-244,637,556),64488=>array(-10,0,292,293),64489=>array(-10,0,418,293),64508=>array(63,-107,863,462),64509=>array(63,-126,1021,291),64510=>array(-10,-166,302,293),64511=>array(-10,-166,418,293),65024=>array(-419,735,0,880),65025=>array(-419,735,0,880),65026=>array(-419,735,0,880),65027=>array(-419,735,0,880),65028=>array(-419,735,0,880),65029=>array(-419,735,0,880),65030=>array(-419,735,0,880),65031=>array(-419,735,0,880),65032=>array(-419,735,0,880),65033=>array(-419,735,0,880),65034=>array(-419,735,0,880),65035=>array(-419,735,0,880),65036=>array(-419,735,0,880),65037=>array(-419,735,0,880),65038=>array(-419,735,0,880),65039=>array(-419,735,0,880),65056=>array(-419,735,0,880),65057=>array(0,735,419,880),65058=>array(-362,756,0,894),65059=>array(0,756,362,894),65136=>array(28,591,313,825),65137=>array(-10,0,352,825),65138=>array(28,591,313,881),65139=>array(51,0,356,177),65140=>array(28,-239,313,-5),65142=>array(28,591,313,723),65143=>array(-10,0,352,723),65144=>array(28,590,313,881),65145=>array(-10,0,352,881),65146=>array(28,-137,313,-5),65147=>array(-10,-137,352,125),65148=>array(9,599,333,869),65149=>array(-10,0,352,869),65150=>array(36,610,304,878),65151=>array(-10,0,352,878),65152=>array(73,20,437,493),65153=>array(-20,0,362,955),65154=>array(-20,0,385,955),65155=>array(75,0,259,993),65156=>array(75,0,385,993),65157=>array(-42,-244,547,603),65158=>array(-42,-244,637,603),65159=>array(76,-245,259,760),65160=>array(76,-245,385,760),65161=>array(63,-107,863,603),65162=>array(63,-126,1021,480),65163=>array(-10,0,292,627),65164=>array(-10,0,418,627),65165=>array(84,0,259,760),65166=>array(84,0,385,760),65167=>array(63,-149,921,327),65168=>array(63,-149,1068,327),65169=>array(-10,-173,292,293),65170=>array(-10,-173,418,293),65171=>array(48,-30,540,513),65172=>array(65,0,616,513),65173=>array(63,-5,921,415),65174=>array(63,-5,1068,415),65175=>array(-10,0,302,488),65176=>array(-10,0,418,488),65177=>array(63,-5,921,537),65178=>array(63,-5,1068,537),65179=>array(-10,0,302,610),65180=>array(-10,0,418,610),65181=>array(77,-244,720,425),65182=>array(77,-244,730,425),65183=>array(-10,-173,628,405),65184=>array(-10,-173,730,405),65185=>array(77,-244,720,425),65186=>array(77,-244,730,425),65187=>array(-10,0,628,405),65188=>array(-10,0,730,405),65189=>array(77,-244,720,579),65190=>array(77,-244,730,579),65191=>array(-10,0,628,530),65192=>array(-10,0,730,530),65193=>array(61,-15,442,415),65194=>array(61,-15,587,415),65195=>array(61,-15,442,579),65196=>array(61,-15,587,579),65197=>array(-42,-244,508,269),65198=>array(-42,-244,632,269),65199=>array(-42,-244,508,457),65200=>array(-42,-244,632,457),65201=>array(63,-244,1297,366),65202=>array(63,-244,1423,366),65203=>array(-10,-14,901,366),65204=>array(-10,-14,1027,366),65205=>array(63,-244,1297,586),65206=>array(63,-244,1423,586),65207=>array(-10,-14,901,586),65208=>array(-10,-14,1027,586),65209=>array(63,-244,1265,362),65210=>array(63,-244,1374,362),65211=>array(-10,0,886,362),65212=>array(-10,0,995,362),65213=>array(63,-244,1265,457),65214=>array(63,-244,1374,457),65215=>array(-10,0,886,481),65216=>array(-10,0,995,481),65217=>array(70,0,971,760),65218=>array(70,0,1081,760),65219=>array(-10,0,875,760),65220=>array(-10,0,984,760),65221=>array(70,0,971,760),65222=>array(70,0,1081,760),65223=>array(-10,0,875,760),65224=>array(-10,0,984,760),65225=>array(87,-244,720,521),65226=>array(57,-244,693,382),65227=>array(-10,0,583,521),65228=>array(-10,0,574,382),65229=>array(87,-244,720,652),65230=>array(57,-244,693,530),65231=>array(-10,0,583,652),65232=>array(-10,0,574,530),65233=>array(63,-24,1082,627),65234=>array(63,-29,1201,627),65235=>array(-10,0,575,627),65236=>array(-10,0,729,627),65237=>array(52,-215,825,635),65238=>array(52,-244,911,476),65239=>array(-10,0,575,635),65240=>array(-10,0,729,635),65241=>array(70,-27,814,760),65242=>array(70,-27,941,760),65243=>array(-10,0,582,760),65244=>array(-10,0,591,760),65245=>array(70,-142,778,760),65246=>array(70,-142,902,760),65247=>array(-10,0,292,760),65248=>array(-10,0,418,760),65249=>array(68,-244,660,369),65250=>array(68,-244,794,311),65251=>array(-10,-23,546,311),65252=>array(-10,-23,680,311),65253=>array(62,-165,779,457),65254=>array(62,-244,910,383),65255=>array(-10,0,292,481),65256=>array(-10,0,418,481),65257=>array(48,-30,540,358),65258=>array(65,0,616,366),65259=>array(-10,-33,633,506),65260=>array(-10,-244,670,369),65261=>array(-42,-244,547,322),65262=>array(-42,-244,637,322),65263=>array(63,-107,863,462),65264=>array(63,-126,1021,291),65265=>array(63,-244,863,462),65266=>array(63,-244,1021,291),65267=>array(-10,-166,302,293),65268=>array(-10,-166,418,293),65269=>array(-62,-15,643,882),65270=>array(-62,-15,769,882),65271=>array(33,-15,643,944),65272=>array(33,-15,769,944),65273=>array(41,-245,643,760),65274=>array(41,-245,769,760),65275=>array(41,-15,643,760),65276=>array(41,-15,769,760),65279=>array(24,-139,1089,926),65529=>array(24,-139,1089,926),65530=>array(24,-139,1089,926),65531=>array(24,-139,1089,926),65532=>array(24,-139,1089,926),65533=>array(24,-139,1089,926),65535=>array(50,-177,550,705));
15
- $cw=array(0=>600,32=>348,33=>456,34=>521,35=>838,36=>696,37=>1002,38=>872,39=>306,40=>457,41=>457,42=>523,43=>838,44=>380,45=>415,46=>380,47=>365,48=>696,49=>696,50=>696,51=>696,52=>696,53=>696,54=>696,55=>696,56=>696,57=>696,58=>400,59=>400,60=>838,61=>838,62=>838,63=>580,64=>1000,65=>774,66=>762,67=>734,68=>830,69=>683,70=>683,71=>821,72=>837,73=>372,74=>372,75=>775,76=>637,77=>995,78=>837,79=>850,80=>733,81=>850,82=>770,83=>720,84=>682,85=>812,86=>774,87=>1103,88=>771,89=>724,90=>725,91=>457,92=>365,93=>457,94=>838,95=>500,96=>500,97=>675,98=>716,99=>593,100=>716,101=>678,102=>435,103=>716,104=>712,105=>343,106=>343,107=>665,108=>343,109=>1042,110=>712,111=>687,112=>716,113=>716,114=>493,115=>595,116=>478,117=>712,118=>652,119=>924,120=>645,121=>652,122=>582,123=>712,124=>365,125=>712,126=>838,160=>348,161=>456,162=>696,163=>696,164=>636,165=>696,166=>365,167=>500,168=>500,169=>1000,170=>564,171=>646,172=>838,173=>415,174=>1000,175=>500,176=>500,177=>838,178=>438,179=>438,180=>500,181=>736,182=>636,183=>380,184=>500,185=>438,186=>564,187=>646,188=>1035,189=>1035,190=>1035,191=>580,192=>774,193=>774,194=>774,195=>774,196=>774,197=>774,198=>1085,199=>734,200=>683,201=>683,202=>683,203=>683,204=>372,205=>372,206=>372,207=>372,208=>838,209=>837,210=>850,211=>850,212=>850,213=>850,214=>850,215=>838,216=>850,217=>812,218=>812,219=>812,220=>812,221=>724,222=>738,223=>719,224=>675,225=>675,226=>675,227=>675,228=>675,229=>675,230=>1048,231=>593,232=>678,233=>678,234=>678,235=>678,236=>343,237=>343,238=>343,239=>343,240=>687,241=>712,242=>687,243=>687,244=>687,245=>687,246=>687,247=>838,248=>687,249=>712,250=>712,251=>712,252=>712,253=>652,254=>716,255=>652,256=>774,257=>675,258=>774,259=>675,260=>774,261=>675,262=>734,263=>593,264=>734,265=>593,266=>734,267=>593,268=>734,269=>593,270=>830,271=>716,272=>838,273=>716,274=>683,275=>678,276=>683,277=>678,278=>683,279=>678,280=>683,281=>678,282=>683,283=>678,284=>821,285=>716,286=>821,287=>716,288=>821,289=>716,290=>821,291=>716,292=>837,293=>712,294=>974,295=>790,296=>372,297=>343,298=>372,299=>343,300=>372,301=>343,302=>372,303=>343,304=>372,305=>343,306=>744,307=>686,308=>372,309=>343,310=>775,311=>665,312=>665,313=>637,314=>343,315=>637,316=>343,317=>637,318=>479,319=>637,320=>557,321=>642,322=>371,323=>837,324=>712,325=>837,326=>712,327=>837,328=>712,329=>983,330=>837,331=>712,332=>850,333=>687,334=>850,335=>687,336=>850,337=>687,338=>1167,339=>1094,340=>770,341=>493,342=>770,343=>493,344=>770,345=>493,346=>720,347=>595,348=>720,349=>595,350=>720,351=>595,352=>720,353=>595,354=>682,355=>478,356=>682,357=>478,358=>682,359=>478,360=>812,361=>712,362=>812,363=>712,364=>812,365=>712,366=>812,367=>712,368=>812,369=>712,370=>812,371=>712,372=>1103,373=>924,374=>724,375=>652,376=>724,377=>725,378=>582,379=>725,380=>582,381=>725,382=>582,383=>435,384=>716,385=>811,386=>762,387=>716,388=>762,389=>716,390=>734,391=>734,392=>593,393=>838,394=>879,395=>757,396=>716,397=>688,398=>683,399=>849,400=>696,401=>683,402=>435,403=>821,404=>793,405=>1045,406=>436,407=>389,408=>775,409=>665,410=>360,411=>592,412=>1042,413=>837,414=>712,415=>850,416=>874,417=>687,418=>1083,419=>912,420=>782,421=>716,422=>770,423=>720,424=>595,425=>683,426=>552,427=>478,428=>707,429=>478,430=>682,431=>835,432=>712,433=>850,434=>813,435=>797,436=>778,437=>725,438=>582,439=>772,440=>772,441=>641,442=>582,443=>696,444=>772,445=>641,446=>573,447=>716,448=>372,449=>659,450=>544,451=>372,452=>1555,453=>1412,454=>1298,455=>1009,456=>980,457=>686,458=>1209,459=>1180,460=>1055,461=>774,462=>675,463=>372,464=>343,465=>850,466=>687,467=>812,468=>712,469=>812,470=>712,471=>812,472=>712,473=>812,474=>712,475=>812,476=>712,477=>678,478=>774,479=>675,480=>774,481=>675,482=>1085,483=>1048,484=>821,485=>716,486=>821,487=>716,488=>775,489=>665,490=>850,491=>687,492=>850,493=>687,494=>772,495=>582,496=>343,497=>1555,498=>1412,499=>1298,500=>821,501=>716,502=>1289,503=>787,504=>837,505=>712,506=>774,507=>675,508=>1085,509=>1048,510=>850,511=>687,512=>774,513=>675,514=>774,515=>675,516=>683,517=>678,518=>683,519=>678,520=>372,521=>343,522=>372,523=>343,524=>850,525=>687,526=>850,527=>687,528=>770,529=>493,530=>770,531=>493,532=>812,533=>712,534=>812,535=>712,536=>720,537=>595,538=>682,539=>478,540=>690,541=>607,542=>837,543=>712,544=>837,545=>865,546=>809,547=>659,548=>725,549=>582,550=>774,551=>675,552=>683,553=>678,554=>850,555=>687,556=>850,557=>687,558=>850,559=>687,560=>850,561=>687,562=>724,563=>652,564=>492,565=>867,566=>512,567=>343,568=>1088,569=>1088,570=>774,571=>734,572=>593,573=>637,574=>682,575=>595,576=>582,577=>782,578=>614,579=>762,580=>812,581=>774,582=>683,583=>678,584=>372,585=>343,586=>860,587=>791,588=>770,589=>493,590=>724,591=>652,592=>675,593=>716,594=>716,595=>716,596=>593,597=>593,598=>717,599=>792,600=>678,601=>678,602=>876,603=>557,604=>545,605=>815,606=>731,607=>343,608=>792,609=>716,610=>627,611=>644,612=>635,613=>712,614=>712,615=>712,616=>545,617=>440,618=>545,619=>559,620=>693,621=>343,622=>841,623=>1042,624=>1042,625=>1042,626=>712,627=>793,628=>707,629=>687,630=>909,631=>681,632=>796,633=>538,634=>538,635=>650,636=>493,637=>493,638=>596,639=>596,640=>642,641=>642,642=>595,643=>415,644=>435,645=>605,646=>552,647=>478,648=>478,649=>920,650=>772,651=>670,652=>652,653=>924,654=>652,655=>724,656=>694,657=>684,658=>641,659=>641,660=>573,661=>573,662=>573,663=>573,664=>850,665=>633,666=>731,667=>685,668=>691,669=>343,670=>732,671=>539,672=>792,673=>573,674=>573,675=>1156,676=>1214,677=>1155,678=>975,679=>769,680=>929,681=>1026,682=>862,683=>780,684=>591,685=>415,686=>677,687=>789,688=>456,689=>456,690=>219,691=>315,692=>315,693=>315,694=>411,695=>591,696=>417,697=>302,698=>521,699=>380,700=>380,701=>380,702=>366,703=>366,704=>326,705=>326,706=>500,707=>500,708=>500,709=>500,710=>500,711=>500,712=>306,713=>500,714=>500,715=>500,716=>306,717=>500,718=>500,719=>500,720=>337,721=>337,722=>366,723=>366,724=>500,725=>500,726=>416,727=>328,728=>500,729=>500,730=>500,731=>500,732=>500,733=>500,734=>351,735=>500,736=>412,737=>219,738=>381,739=>413,740=>326,741=>500,742=>500,743=>500,744=>500,745=>500,748=>500,749=>500,750=>657,755=>500,759=>500,768=>0,769=>0,770=>0,771=>0,772=>0,773=>0,774=>0,775=>0,776=>0,777=>0,778=>0,779=>0,780=>0,781=>0,782=>0,783=>0,784=>0,785=>0,786=>0,787=>0,788=>0,789=>0,790=>0,791=>0,792=>0,793=>0,794=>0,795=>0,796=>0,797=>0,798=>0,799=>0,800=>0,801=>0,802=>0,803=>0,804=>0,805=>0,806=>0,807=>0,808=>0,809=>0,810=>0,811=>0,812=>0,813=>0,814=>0,815=>0,816=>0,817=>0,818=>0,819=>0,820=>0,821=>0,822=>0,823=>0,824=>0,825=>0,826=>0,827=>0,828=>0,829=>0,830=>0,831=>0,832=>0,833=>0,834=>0,835=>0,836=>0,837=>0,838=>0,839=>0,840=>0,841=>0,842=>0,843=>0,844=>0,845=>0,846=>0,847=>0,849=>0,850=>0,851=>0,855=>0,856=>0,858=>0,860=>0,861=>0,862=>0,863=>0,864=>0,865=>0,866=>0,880=>698,881=>565,882=>1022,883=>836,884=>302,885=>302,886=>837,887=>701,890=>500,891=>593,892=>550,893=>549,894=>400,900=>441,901=>500,902=>797,903=>380,904=>846,905=>1009,906=>563,908=>891,910=>980,911=>894,912=>390,913=>774,914=>762,915=>637,916=>774,917=>683,918=>725,919=>837,920=>850,921=>372,922=>775,923=>774,924=>995,925=>837,926=>632,927=>850,928=>837,929=>733,931=>683,932=>682,933=>724,934=>850,935=>771,936=>850,937=>850,938=>372,939=>724,940=>687,941=>557,942=>712,943=>390,944=>675,945=>687,946=>716,947=>681,948=>687,949=>557,950=>591,951=>712,952=>687,953=>390,954=>710,955=>633,956=>736,957=>681,958=>591,959=>687,960=>791,961=>716,962=>593,963=>779,964=>638,965=>675,966=>782,967=>645,968=>794,969=>869,970=>390,971=>675,972=>687,973=>675,974=>869,975=>775,976=>651,977=>661,978=>746,979=>981,980=>746,981=>796,982=>869,983=>744,984=>850,985=>687,986=>734,987=>593,988=>683,989=>494,990=>702,991=>660,992=>919,993=>627,994=>1093,995=>837,996=>832,997=>716,998=>928,999=>744,1000=>733,1001=>650,1002=>789,1003=>671,1004=>752,1005=>716,1006=>682,1007=>590,1008=>744,1009=>716,1010=>593,1011=>343,1012=>850,1013=>645,1014=>644,1015=>738,1016=>716,1017=>734,1018=>995,1019=>732,1020=>716,1021=>698,1022=>734,1023=>698,1024=>683,1025=>683,1026=>878,1027=>637,1028=>734,1029=>720,1030=>372,1031=>372,1032=>372,1033=>1154,1034=>1130,1035=>878,1036=>817,1037=>837,1038=>771,1039=>837,1040=>774,1041=>762,1042=>762,1043=>637,1044=>891,1045=>683,1046=>1224,1047=>710,1048=>837,1049=>837,1050=>817,1051=>831,1052=>995,1053=>837,1054=>850,1055=>837,1056=>733,1057=>734,1058=>682,1059=>771,1060=>992,1061=>771,1062=>928,1063=>808,1064=>1235,1065=>1326,1066=>939,1067=>1036,1068=>762,1069=>734,1070=>1174,1071=>770,1072=>675,1073=>698,1074=>633,1075=>522,1076=>808,1077=>678,1078=>995,1079=>581,1080=>701,1081=>701,1082=>679,1083=>732,1084=>817,1085=>691,1086=>687,1087=>691,1088=>716,1089=>593,1090=>580,1091=>652,1092=>992,1093=>645,1094=>741,1095=>687,1096=>1062,1097=>1105,1098=>751,1099=>904,1100=>632,1101=>593,1102=>972,1103=>642,1104=>678,1105=>678,1106=>714,1107=>522,1108=>593,1109=>595,1110=>343,1111=>343,1112=>343,1113=>991,1114=>956,1115=>734,1116=>679,1117=>701,1118=>652,1119=>691,1120=>1093,1121=>869,1122=>840,1123=>736,1124=>1012,1125=>839,1126=>992,1127=>832,1128=>1358,1129=>1121,1130=>850,1131=>687,1132=>1236,1133=>1007,1134=>696,1135=>557,1136=>1075,1137=>1061,1138=>850,1139=>687,1140=>850,1141=>695,1142=>850,1143=>695,1144=>1148,1145=>1043,1146=>1074,1147=>863,1148=>1405,1149=>1173,1150=>1093,1151=>869,1152=>734,1153=>593,1154=>652,1155=>0,1156=>0,1157=>0,1158=>0,1159=>0,1160=>418,1161=>418,1162=>957,1163=>807,1164=>762,1165=>611,1166=>733,1167=>716,1168=>637,1169=>522,1170=>666,1171=>543,1172=>808,1173=>669,1174=>1224,1175=>995,1176=>710,1177=>581,1178=>775,1179=>679,1180=>817,1181=>679,1182=>817,1183=>679,1184=>1015,1185=>826,1186=>956,1187=>808,1188=>1103,1189=>874,1190=>1273,1191=>1017,1192=>952,1193=>858,1194=>734,1195=>593,1196=>682,1197=>580,1198=>724,1199=>652,1200=>724,1201=>652,1202=>771,1203=>645,1204=>1112,1205=>1000,1206=>808,1207=>687,1208=>808,1209=>687,1210=>808,1211=>712,1212=>1026,1213=>810,1214=>1026,1215=>810,1216=>372,1217=>1224,1218=>995,1219=>775,1220=>630,1221=>951,1222=>805,1223=>837,1224=>691,1225=>957,1226=>807,1227=>808,1228=>687,1229=>1115,1230=>933,1231=>343,1232=>774,1233=>675,1234=>774,1235=>675,1236=>1085,1237=>1048,1238=>683,1239=>678,1240=>849,1241=>678,1242=>849,1243=>678,1244=>1224,1245=>995,1246=>710,1247=>581,1248=>772,1249=>641,1250=>837,1251=>701,1252=>837,1253=>701,1254=>850,1255=>687,1256=>850,1257=>687,1258=>850,1259=>687,1260=>734,1261=>593,1262=>771,1263=>652,1264=>771,1265=>652,1266=>771,1267=>652,1268=>808,1269=>687,1270=>637,1271=>522,1272=>1036,1273=>904,1274=>666,1275=>543,1276=>771,1277=>645,1278=>771,1279=>645,1280=>762,1281=>608,1282=>1159,1283=>893,1284=>1119,1285=>920,1286=>828,1287=>693,1288=>1242,1289=>1017,1290=>1289,1291=>1013,1292=>839,1293=>638,1294=>938,1295=>803,1296=>696,1297=>557,1298=>831,1299=>732,1300=>1286,1301=>1068,1302=>1065,1303=>979,1304=>1082,1305=>1013,1306=>850,1307=>716,1308=>1103,1309=>924,1310=>817,1311=>679,1312=>1267,1313=>1059,1314=>1273,1315=>1017,1316=>957,1317=>807,1329=>813,1330=>729,1331=>728,1332=>731,1333=>729,1334=>733,1335=>652,1336=>720,1337=>903,1338=>728,1339=>666,1340=>558,1341=>961,1342=>788,1343=>713,1344=>651,1345=>730,1346=>715,1347=>704,1348=>780,1349=>689,1350=>715,1351=>708,1352=>731,1353=>677,1354=>867,1355=>711,1356=>780,1357=>731,1358=>715,1359=>693,1360=>666,1361=>698,1362=>576,1363=>833,1364=>698,1365=>763,1366=>855,1369=>330,1370=>342,1371=>308,1372=>374,1373=>313,1374=>461,1375=>468,1377=>938,1378=>642,1379=>704,1380=>708,1381=>642,1382=>644,1383=>565,1384=>642,1385=>756,1386=>704,1387=>643,1388=>310,1389=>984,1390=>638,1391=>643,1392=>643,1393=>603,1394=>643,1395=>642,1396=>643,1397=>309,1398=>643,1399=>486,1400=>643,1401=>366,1402=>938,1403=>573,1404=>666,1405=>643,1406=>643,1407=>934,1408=>643,1409=>643,1410=>479,1411=>934,1412=>648,1413=>620,1414=>813,1415=>812,1417=>360,1418=>374,1456=>0,1457=>0,1458=>0,1459=>0,1460=>0,1461=>0,1462=>0,1463=>0,1464=>0,1465=>0,1466=>0,1467=>0,1468=>0,1469=>0,1470=>415,1471=>0,1472=>372,1473=>0,1474=>0,1475=>372,1478=>497,1479=>0,1488=>728,1489=>610,1490=>447,1491=>588,1492=>687,1493=>343,1494=>400,1495=>687,1496=>679,1497=>294,1498=>578,1499=>566,1500=>605,1501=>696,1502=>724,1503=>343,1504=>453,1505=>680,1506=>666,1507=>675,1508=>658,1509=>661,1510=>653,1511=>736,1512=>602,1513=>758,1514=>683,1520=>664,1521=>567,1522=>519,1523=>444,1524=>710,1542=>667,1543=>667,1545=>884,1546=>1157,1548=>380,1557=>0,1563=>400,1567=>580,1569=>511,1570=>343,1571=>343,1572=>622,1573=>343,1574=>917,1575=>343,1576=>1005,1577=>590,1578=>1005,1579=>1005,1580=>721,1581=>721,1582=>721,1583=>513,1584=>513,1585=>576,1586=>576,1587=>1380,1588=>1380,1589=>1345,1590=>1345,1591=>1039,1592=>1039,1593=>683,1594=>683,1600=>342,1601=>1162,1602=>894,1603=>917,1604=>868,1605=>733,1606=>854,1607=>590,1608=>622,1609=>917,1610=>917,1611=>0,1612=>0,1613=>0,1614=>0,1615=>0,1616=>0,1617=>0,1618=>0,1619=>0,1620=>0,1621=>0,1623=>0,1626=>500,1632=>610,1633=>610,1634=>610,1635=>610,1636=>610,1637=>610,1638=>610,1639=>610,1640=>610,1641=>610,1642=>610,1643=>374,1644=>380,1645=>545,1646=>1005,1647=>894,1648=>0,1652=>292,1657=>1005,1658=>1005,1659=>1005,1660=>1005,1661=>1005,1662=>1005,1663=>1005,1664=>1005,1665=>721,1666=>721,1667=>721,1668=>721,1669=>721,1670=>721,1671=>721,1672=>445,1673=>445,1674=>445,1675=>445,1676=>445,1677=>445,1678=>445,1679=>445,1680=>445,1681=>576,1682=>576,1683=>576,1684=>576,1685=>681,1686=>576,1687=>576,1688=>576,1689=>576,1690=>1380,1691=>1380,1692=>1380,1693=>1345,1694=>1345,1695=>1039,1696=>683,1697=>1162,1698=>1162,1699=>1162,1700=>1162,1701=>1162,1702=>1162,1703=>894,1704=>894,1705=>1024,1706=>1271,1707=>1024,1708=>917,1709=>917,1710=>917,1711=>1024,1712=>1024,1713=>1024,1714=>1024,1715=>1024,1716=>1024,1717=>868,1718=>868,1719=>868,1720=>868,1721=>854,1722=>854,1723=>854,1724=>854,1725=>854,1726=>938,1727=>721,1734=>622,1740=>917,1742=>917,1749=>590,1776=>610,1777=>610,1778=>610,1779=>610,1780=>610,1781=>610,1782=>610,1783=>610,1784=>610,1785=>610,1984=>696,1985=>696,1986=>696,1987=>696,1988=>696,1989=>696,1990=>696,1991=>696,1992=>696,1993=>696,1994=>343,1995=>547,1996=>543,1997=>652,1998=>691,1999=>691,2000=>594,2001=>691,2002=>904,2003=>551,2004=>551,2005=>627,2006=>688,2007=>444,2008=>1022,2009=>506,2010=>826,2011=>691,2012=>652,2013=>912,2014=>627,2015=>707,2016=>506,2017=>652,2018=>574,2019=>627,2020=>627,2021=>627,2022=>574,2023=>574,2027=>0,2028=>0,2029=>0,2030=>0,2031=>0,2032=>0,2033=>0,2034=>0,2035=>0,2036=>380,2037=>380,2040=>691,2041=>691,2042=>415,3647=>696,3713=>790,3714=>748,3716=>749,3719=>569,3720=>742,3722=>744,3725=>761,3732=>706,3733=>704,3734=>747,3735=>819,3737=>730,3738=>727,3739=>727,3740=>922,3741=>827,3742=>866,3743=>866,3745=>836,3746=>761,3747=>770,3749=>769,3751=>713,3754=>827,3755=>1031,3757=>724,3758=>784,3759=>934,3760=>688,3761=>0,3762=>610,3763=>610,3764=>0,3765=>0,3766=>0,3767=>0,3768=>0,3769=>0,3771=>0,3772=>0,3773=>670,3776=>516,3777=>860,3778=>516,3779=>650,3780=>632,3782=>759,3784=>0,3785=>0,3786=>0,3787=>0,3788=>0,3789=>0,3792=>771,3793=>771,3794=>693,3795=>836,3796=>729,3797=>729,3798=>849,3799=>790,3800=>759,3801=>910,3804=>1363,3805=>1363,4256=>874,4257=>733,4258=>679,4259=>834,4260=>615,4261=>768,4262=>753,4263=>914,4264=>453,4265=>620,4266=>843,4267=>882,4268=>625,4269=>854,4270=>781,4271=>629,4272=>912,4273=>621,4274=>620,4275=>854,4276=>866,4277=>724,4278=>630,4279=>621,4280=>625,4281=>620,4282=>818,4283=>874,4284=>615,4285=>623,4286=>625,4287=>725,4288=>844,4289=>596,4290=>688,4291=>596,4292=>594,4293=>738,4304=>554,4305=>563,4306=>622,4307=>834,4308=>555,4309=>564,4310=>551,4311=>828,4312=>563,4313=>556,4314=>1074,4315=>568,4316=>568,4317=>814,4318=>554,4319=>563,4320=>823,4321=>568,4322=>700,4323=>591,4324=>852,4325=>560,4326=>814,4327=>563,4328=>553,4329=>568,4330=>622,4331=>568,4332=>553,4333=>566,4334=>568,4335=>540,4336=>554,4337=>559,4338=>553,4339=>554,4340=>553,4341=>587,4342=>853,4343=>604,4344=>563,4345=>622,4346=>554,4347=>448,4348=>324,5121=>774,5122=>774,5123=>774,5124=>774,5125=>905,5126=>905,5127=>905,5129=>905,5130=>905,5131=>905,5132=>1018,5133=>1009,5134=>1018,5135=>1009,5136=>1018,5137=>1009,5138=>1149,5139=>1140,5140=>1149,5141=>1140,5142=>905,5143=>1149,5144=>1142,5145=>1149,5146=>1142,5147=>905,5149=>310,5150=>529,5151=>425,5152=>425,5153=>395,5154=>395,5155=>395,5156=>395,5157=>564,5158=>470,5159=>310,5160=>395,5161=>395,5162=>395,5163=>1213,5164=>986,5165=>1216,5166=>1297,5167=>774,5168=>774,5169=>774,5170=>774,5171=>886,5172=>886,5173=>886,5175=>886,5176=>886,5177=>886,5178=>1018,5179=>1009,5180=>1018,5181=>1009,5182=>1018,5183=>1009,5184=>1149,5185=>1140,5186=>1149,5187=>1140,5188=>1149,5189=>1142,5190=>1149,5191=>1142,5192=>886,5193=>576,5194=>229,5196=>812,5197=>812,5198=>812,5199=>812,5200=>815,5201=>815,5202=>815,5204=>815,5205=>815,5206=>815,5207=>1056,5208=>1048,5209=>1056,5210=>1048,5211=>1056,5212=>1048,5213=>1060,5214=>1054,5215=>1060,5216=>1054,5217=>1060,5218=>1052,5219=>1060,5220=>1052,5221=>1060,5222=>483,5223=>1005,5224=>1005,5225=>1023,5226=>1017,5227=>743,5228=>743,5229=>743,5230=>743,5231=>743,5232=>743,5233=>743,5234=>743,5235=>743,5236=>1029,5237=>975,5238=>980,5239=>975,5240=>980,5241=>975,5242=>1029,5243=>975,5244=>1029,5245=>975,5246=>980,5247=>975,5248=>980,5249=>975,5250=>980,5251=>501,5252=>501,5253=>938,5254=>938,5255=>938,5256=>938,5257=>743,5258=>743,5259=>743,5260=>743,5261=>743,5262=>743,5263=>743,5264=>743,5265=>743,5266=>1029,5267=>975,5268=>1029,5269=>975,5270=>1029,5271=>975,5272=>1029,5273=>975,5274=>1029,5275=>975,5276=>1029,5277=>975,5278=>1029,5279=>975,5280=>1029,5281=>501,5282=>501,5283=>626,5284=>626,5285=>626,5286=>626,5287=>626,5288=>626,5289=>626,5290=>626,5291=>626,5292=>881,5293=>854,5294=>863,5295=>874,5296=>863,5297=>874,5298=>881,5299=>874,5300=>881,5301=>874,5302=>863,5303=>874,5304=>863,5305=>874,5306=>863,5307=>436,5308=>548,5309=>436,5312=>988,5313=>988,5314=>988,5315=>988,5316=>931,5317=>931,5318=>931,5319=>931,5320=>931,5321=>1238,5322=>1247,5323=>1200,5324=>1228,5325=>1200,5326=>1228,5327=>931,5328=>660,5329=>497,5330=>660,5331=>988,5332=>988,5333=>988,5334=>988,5335=>931,5336=>931,5337=>931,5338=>931,5339=>931,5340=>1231,5341=>1247,5342=>1283,5343=>1228,5344=>1283,5345=>1228,5346=>1228,5347=>1214,5348=>1228,5349=>1214,5350=>1283,5351=>1228,5352=>1283,5353=>1228,5354=>660,5356=>886,5357=>730,5358=>730,5359=>730,5360=>730,5361=>730,5362=>730,5363=>730,5364=>730,5365=>730,5366=>998,5367=>958,5368=>967,5369=>989,5370=>967,5371=>989,5372=>998,5373=>958,5374=>998,5375=>958,5376=>967,5377=>989,5378=>967,5379=>989,5380=>967,5381=>493,5382=>460,5383=>493,5392=>923,5393=>923,5394=>923,5395=>1136,5396=>1136,5397=>1136,5398=>1136,5399=>1209,5400=>1202,5401=>1209,5402=>1202,5403=>1209,5404=>1202,5405=>1431,5406=>1420,5407=>1431,5408=>1420,5409=>1431,5410=>1420,5411=>1431,5412=>1420,5413=>746,5414=>776,5415=>776,5416=>776,5417=>776,5418=>776,5419=>776,5420=>776,5421=>776,5422=>776,5423=>1003,5424=>1003,5425=>1013,5426=>996,5427=>1013,5428=>996,5429=>1003,5430=>1003,5431=>1003,5432=>1003,5433=>1013,5434=>996,5435=>1013,5436=>996,5437=>1013,5438=>495,5440=>395,5441=>510,5442=>1033,5443=>1033,5444=>976,5445=>976,5446=>976,5447=>976,5448=>733,5449=>733,5450=>733,5451=>733,5452=>733,5453=>733,5454=>1003,5455=>959,5456=>495,5458=>886,5459=>774,5460=>774,5461=>774,5462=>774,5463=>928,5464=>928,5465=>928,5466=>928,5467=>1172,5468=>1142,5469=>602,5470=>812,5471=>812,5472=>812,5473=>812,5474=>812,5475=>812,5476=>815,5477=>815,5478=>815,5479=>815,5480=>1060,5481=>1052,5482=>548,5492=>977,5493=>977,5494=>977,5495=>977,5496=>977,5497=>977,5498=>977,5499=>618,5500=>837,5501=>510,5502=>1238,5503=>1238,5504=>1238,5505=>1238,5506=>1238,5507=>1238,5508=>1238,5509=>989,5514=>977,5515=>977,5516=>977,5517=>977,5518=>1591,5519=>1591,5520=>1591,5521=>1295,5522=>1295,5523=>1591,5524=>1591,5525=>848,5526=>1273,5536=>988,5537=>988,5538=>931,5539=>931,5540=>931,5541=>931,5542=>660,5543=>776,5544=>776,5545=>776,5546=>776,5547=>776,5548=>776,5549=>776,5550=>495,5551=>743,5598=>830,5601=>830,5702=>496,5703=>496,5742=>413,5743=>1238,5744=>1591,5745=>2016,5746=>2016,5747=>1720,5748=>1678,5749=>2016,5750=>2016,5760=>543,5761=>637,5762=>945,5763=>1254,5764=>1563,5765=>1871,5766=>627,5767=>936,5768=>1254,5769=>1559,5770=>1871,5771=>569,5772=>877,5773=>1187,5774=>1497,5775=>1807,5776=>637,5777=>945,5778=>1240,5779=>1555,5780=>1871,5781=>569,5782=>569,5783=>789,5784=>1234,5785=>1559,5786=>740,5787=>638,5788=>638,7424=>652,7425=>833,7426=>1048,7427=>608,7428=>593,7429=>676,7430=>676,7431=>559,7432=>557,7433=>343,7434=>494,7435=>665,7436=>539,7437=>817,7438=>701,7439=>687,7440=>593,7441=>660,7442=>660,7443=>660,7444=>1094,7446=>687,7447=>687,7448=>556,7449=>642,7450=>642,7451=>580,7452=>634,7453=>737,7454=>948,7455=>695,7456=>652,7457=>924,7458=>582,7459=>646,7462=>539,7463=>652,7464=>691,7465=>556,7466=>781,7467=>732,7468=>487,7469=>683,7470=>480,7472=>523,7473=>430,7474=>430,7475=>517,7476=>527,7477=>234,7478=>234,7479=>488,7480=>401,7481=>626,7482=>527,7483=>527,7484=>535,7485=>509,7486=>461,7487=>485,7488=>430,7489=>511,7490=>695,7491=>458,7492=>458,7493=>479,7494=>712,7495=>479,7496=>479,7497=>479,7498=>479,7499=>386,7500=>386,7501=>479,7502=>219,7503=>487,7504=>664,7505=>456,7506=>488,7507=>414,7508=>488,7509=>488,7510=>479,7511=>388,7512=>456,7513=>462,7514=>664,7515=>501,7517=>451,7518=>429,7519=>433,7520=>493,7521=>406,7522=>219,7523=>315,7524=>456,7525=>501,7526=>451,7527=>429,7528=>451,7529=>493,7530=>406,7543=>716,7544=>527,7547=>545,7549=>747,7557=>514,7579=>479,7580=>414,7581=>414,7582=>488,7583=>386,7584=>377,7585=>348,7586=>479,7587=>456,7588=>347,7589=>281,7590=>347,7591=>347,7592=>431,7593=>326,7594=>330,7595=>370,7596=>664,7597=>664,7598=>562,7599=>562,7600=>448,7601=>488,7602=>542,7603=>422,7604=>396,7605=>388,7606=>583,7607=>494,7608=>399,7609=>451,7610=>501,7611=>417,7612=>523,7613=>470,7614=>455,7615=>425,7620=>0,7621=>0,7622=>0,7623=>0,7624=>0,7625=>0,7680=>774,7681=>675,7682=>762,7683=>716,7684=>762,7685=>716,7686=>762,7687=>716,7688=>734,7689=>593,7690=>830,7691=>716,7692=>830,7693=>716,7694=>830,7695=>716,7696=>830,7697=>716,7698=>830,7699=>716,7700=>683,7701=>678,7702=>683,7703=>678,7704=>683,7705=>678,7706=>683,7707=>678,7708=>683,7709=>678,7710=>683,7711=>435,7712=>821,7713=>716,7714=>837,7715=>712,7716=>837,7717=>712,7718=>837,7719=>712,7720=>837,7721=>712,7722=>837,7723=>712,7724=>372,7725=>343,7726=>372,7727=>343,7728=>775,7729=>665,7730=>775,7731=>665,7732=>775,7733=>665,7734=>637,7735=>343,7736=>637,7737=>343,7738=>637,7739=>343,7740=>637,7741=>343,7742=>995,7743=>1042,7744=>995,7745=>1042,7746=>995,7747=>1042,7748=>837,7749=>712,7750=>837,7751=>712,7752=>837,7753=>712,7754=>837,7755=>712,7756=>850,7757=>687,7758=>850,7759=>687,7760=>850,7761=>687,7762=>850,7763=>687,7764=>733,7765=>716,7766=>733,7767=>716,7768=>770,7769=>493,7770=>770,7771=>493,7772=>770,7773=>493,7774=>770,7775=>493,7776=>720,7777=>595,7778=>720,7779=>595,7780=>720,7781=>595,7782=>720,7783=>595,7784=>720,7785=>595,7786=>682,7787=>478,7788=>682,7789=>478,7790=>682,7791=>478,7792=>682,7793=>478,7794=>812,7795=>712,7796=>812,7797=>712,7798=>812,7799=>712,7800=>812,7801=>712,7802=>812,7803=>712,7804=>774,7805=>652,7806=>774,7807=>652,7808=>1103,7809=>924,7810=>1103,7811=>924,7812=>1103,7813=>924,7814=>1103,7815=>924,7816=>1103,7817=>924,7818=>771,7819=>645,7820=>771,7821=>645,7822=>724,7823=>652,7824=>725,7825=>582,7826=>725,7827=>582,7828=>725,7829=>582,7830=>712,7831=>478,7832=>924,7833=>652,7834=>675,7835=>435,7836=>435,7837=>435,7838=>896,7839=>687,7840=>774,7841=>675,7842=>774,7843=>675,7844=>774,7845=>675,7846=>774,7847=>675,7848=>774,7849=>675,7850=>774,7851=>675,7852=>774,7853=>675,7854=>774,7855=>675,7856=>774,7857=>675,7858=>774,7859=>675,7860=>774,7861=>675,7862=>774,7863=>675,7864=>683,7865=>678,7866=>683,7867=>678,7868=>683,7869=>678,7870=>683,7871=>678,7872=>683,7873=>678,7874=>683,7875=>678,7876=>683,7877=>678,7878=>683,7879=>678,7880=>372,7881=>343,7882=>372,7883=>343,7884=>850,7885=>687,7886=>850,7887=>687,7888=>850,7889=>687,7890=>850,7891=>687,7892=>850,7893=>687,7894=>850,7895=>687,7896=>850,7897=>687,7898=>874,7899=>687,7900=>874,7901=>687,7902=>874,7903=>687,7904=>874,7905=>687,7906=>874,7907=>687,7908=>812,7909=>712,7910=>812,7911=>712,7912=>835,7913=>712,7914=>835,7915=>712,7916=>835,7917=>712,7918=>835,7919=>712,7920=>835,7921=>712,7922=>724,7923=>652,7924=>724,7925=>652,7926=>724,7927=>652,7928=>724,7929=>652,7930=>953,7931=>644,7936=>687,7937=>687,7938=>687,7939=>687,7940=>687,7941=>687,7942=>687,7943=>687,7944=>774,7945=>774,7946=>1041,7947=>1043,7948=>935,7949=>963,7950=>835,7951=>859,7952=>557,7953=>557,7954=>557,7955=>557,7956=>557,7957=>557,7960=>792,7961=>794,7962=>1100,7963=>1096,7964=>1023,7965=>1052,7968=>712,7969=>712,7970=>712,7971=>712,7972=>712,7973=>712,7974=>712,7975=>712,7976=>945,7977=>951,7978=>1250,7979=>1250,7980=>1180,7981=>1206,7982=>1054,7983=>1063,7984=>390,7985=>390,7986=>390,7987=>390,7988=>390,7989=>390,7990=>390,7991=>390,7992=>483,7993=>489,7994=>777,7995=>785,7996=>712,7997=>738,7998=>604,7999=>604,8000=>687,8001=>687,8002=>687,8003=>687,8004=>687,8005=>687,8008=>892,8009=>933,8010=>1221,8011=>1224,8012=>1053,8013=>1082,8016=>675,8017=>675,8018=>675,8019=>675,8020=>675,8021=>675,8022=>675,8023=>675,8025=>930,8027=>1184,8029=>1199,8031=>1049,8032=>869,8033=>869,8034=>869,8035=>869,8036=>869,8037=>869,8038=>869,8039=>869,8040=>909,8041=>958,8042=>1246,8043=>1251,8044=>1076,8045=>1105,8046=>1028,8047=>1076,8048=>687,8049=>687,8050=>557,8051=>557,8052=>712,8053=>712,8054=>390,8055=>390,8056=>687,8057=>687,8058=>675,8059=>675,8060=>869,8061=>869,8064=>687,8065=>687,8066=>687,8067=>687,8068=>687,8069=>687,8070=>687,8071=>687,8072=>774,8073=>774,8074=>1041,8075=>1043,8076=>935,8077=>963,8078=>835,8079=>859,8080=>712,8081=>712,8082=>712,8083=>712,8084=>712,8085=>712,8086=>712,8087=>712,8088=>945,8089=>951,8090=>1250,8091=>1250,8092=>1180,8093=>1206,8094=>1054,8095=>1063,8096=>869,8097=>869,8098=>869,8099=>869,8100=>869,8101=>869,8102=>869,8103=>869,8104=>909,8105=>958,8106=>1246,8107=>1251,8108=>1076,8109=>1105,8110=>1028,8111=>1076,8112=>687,8113=>687,8114=>687,8115=>687,8116=>687,8118=>687,8119=>687,8120=>774,8121=>774,8122=>876,8123=>797,8124=>774,8125=>500,8126=>500,8127=>500,8128=>500,8129=>500,8130=>712,8131=>712,8132=>712,8134=>712,8135=>712,8136=>929,8137=>846,8138=>1080,8139=>1009,8140=>837,8141=>500,8142=>500,8143=>500,8144=>390,8145=>390,8146=>390,8147=>390,8150=>390,8151=>390,8152=>372,8153=>372,8154=>621,8155=>563,8157=>500,8158=>500,8159=>500,8160=>675,8161=>675,8162=>675,8163=>675,8164=>716,8165=>716,8166=>675,8167=>675,8168=>724,8169=>724,8170=>1020,8171=>980,8172=>838,8173=>500,8174=>500,8175=>500,8178=>869,8179=>869,8180=>869,8182=>869,8183=>869,8184=>1065,8185=>891,8186=>1084,8187=>894,8188=>850,8189=>500,8190=>500,8192=>500,8193=>1000,8194=>500,8195=>1000,8196=>330,8197=>250,8198=>167,8199=>696,8200=>380,8201=>200,8202=>100,8203=>0,8204=>0,8205=>0,8206=>0,8207=>0,8208=>415,8209=>415,8210=>696,8211=>500,8212=>1000,8213=>1000,8214=>500,8215=>500,8216=>380,8217=>380,8218=>380,8219=>380,8220=>657,8221=>657,8222=>657,8223=>657,8224=>500,8225=>500,8226=>639,8227=>639,8228=>333,8229=>667,8230=>1000,8231=>348,8232=>0,8233=>0,8234=>0,8235=>0,8236=>0,8237=>0,8238=>0,8239=>200,8240=>1440,8241=>1887,8242=>264,8243=>447,8244=>630,8245=>264,8246=>447,8247=>630,8248=>733,8249=>412,8250=>412,8251=>972,8252=>627,8253=>580,8254=>500,8255=>828,8256=>828,8257=>329,8258=>1023,8259=>500,8260=>167,8261=>457,8262=>457,8263=>1030,8264=>829,8265=>829,8266=>513,8267=>636,8268=>500,8269=>500,8270=>523,8271=>400,8272=>828,8273=>523,8274=>556,8275=>1000,8276=>828,8277=>838,8278=>684,8279=>813,8280=>838,8281=>838,8282=>380,8283=>872,8284=>838,8285=>380,8286=>380,8287=>222,8288=>0,8289=>0,8290=>0,8291=>0,8292=>0,8298=>0,8299=>0,8300=>0,8301=>0,8302=>0,8303=>0,8304=>438,8305=>219,8308=>438,8309=>438,8310=>438,8311=>438,8312=>438,8313=>438,8314=>528,8315=>528,8316=>528,8317=>288,8318=>288,8319=>456,8320=>438,8321=>438,8322=>438,8323=>438,8324=>438,8325=>438,8326=>438,8327=>438,8328=>438,8329=>438,8330=>528,8331=>528,8332=>528,8333=>288,8334=>288,8336=>458,8337=>479,8338=>488,8339=>413,8340=>479,8341=>456,8342=>487,8343=>219,8344=>664,8345=>456,8346=>479,8347=>381,8348=>388,8352=>929,8353=>696,8354=>696,8355=>696,8356=>696,8357=>1042,8358=>837,8359=>1518,8360=>1205,8361=>1103,8362=>904,8363=>696,8364=>696,8365=>696,8366=>696,8367=>1392,8368=>696,8369=>696,8370=>696,8371=>696,8372=>859,8373=>696,8376=>696,8377=>696,8378=>769,8400=>0,8401=>0,8406=>0,8407=>0,8411=>0,8412=>0,8417=>0,8448=>1120,8449=>1170,8450=>734,8451=>1211,8452=>896,8453=>1091,8454=>1144,8455=>614,8456=>698,8457=>1086,8459=>1073,8460=>913,8461=>888,8462=>712,8463=>712,8464=>597,8465=>697,8466=>856,8467=>472,8468=>974,8469=>837,8470=>1203,8471=>1000,8472=>697,8473=>750,8474=>850,8475=>938,8476=>814,8477=>801,8478=>896,8479=>710,8480=>1020,8481=>1281,8482=>1000,8483=>755,8484=>754,8485=>578,8486=>850,8487=>850,8488=>763,8489=>338,8490=>775,8491=>774,8492=>928,8493=>818,8494=>854,8495=>636,8496=>729,8497=>808,8498=>683,8499=>1184,8500=>465,8501=>794,8502=>731,8503=>494,8504=>684,8505=>380,8506=>945,8507=>1348,8508=>790,8509=>737,8510=>654,8511=>863,8512=>840,8513=>775,8514=>557,8515=>637,8516=>760,8517=>830,8518=>716,8519=>678,8520=>343,8521=>343,8523=>872,8526=>547,8528=>1035,8529=>1035,8530=>1483,8531=>1035,8532=>1035,8533=>1035,8534=>1035,8535=>1035,8536=>1035,8537=>1035,8538=>1035,8539=>1035,8540=>1035,8541=>1035,8542=>1035,8543=>615,8544=>372,8545=>659,8546=>945,8547=>1099,8548=>774,8549=>1099,8550=>1386,8551=>1672,8552=>1121,8553=>771,8554=>1120,8555=>1407,8556=>637,8557=>734,8558=>830,8559=>995,8560=>343,8561=>607,8562=>872,8563=>984,8564=>652,8565=>962,8566=>1227,8567=>1491,8568=>969,8569=>645,8570=>969,8571=>1233,8572=>343,8573=>593,8574=>716,8575=>1042,8576=>1289,8577=>830,8578=>1289,8579=>734,8580=>593,8581=>734,8585=>1035,8592=>838,8593=>838,8594=>838,8595=>838,8596=>838,8597=>838,8598=>838,8599=>838,8600=>838,8601=>838,8602=>838,8603=>838,8604=>838,8605=>838,8606=>838,8607=>838,8608=>838,8609=>838,8610=>838,8611=>838,8612=>838,8613=>838,8614=>838,8615=>838,8616=>838,8617=>838,8618=>838,8619=>838,8620=>838,8621=>838,8622=>838,8623=>838,8624=>838,8625=>838,8626=>838,8627=>838,8628=>838,8629=>838,8630=>838,8631=>838,8632=>838,8633=>838,8634=>838,8635=>838,8636=>838,8637=>838,8638=>838,8639=>838,8640=>838,8641=>838,8642=>838,8643=>838,8644=>838,8645=>838,8646=>838,8647=>838,8648=>838,8649=>838,8650=>838,8651=>838,8652=>838,8653=>838,8654=>838,8655=>838,8656=>838,8657=>838,8658=>838,8659=>838,8660=>838,8661=>838,8662=>838,8663=>838,8664=>838,8665=>838,8666=>838,8667=>838,8668=>838,8669=>838,8670=>838,8671=>838,8672=>838,8673=>838,8674=>838,8675=>838,8676=>838,8677=>838,8678=>838,8679=>838,8680=>838,8681=>838,8682=>838,8683=>838,8684=>838,8685=>838,8686=>838,8687=>838,8688=>838,8689=>838,8690=>838,8691=>838,8692=>838,8693=>838,8694=>838,8695=>838,8696=>838,8697=>838,8698=>838,8699=>838,8700=>838,8701=>838,8702=>838,8703=>838,8704=>774,8705=>696,8706=>544,8707=>683,8708=>683,8709=>856,8710=>697,8711=>697,8712=>896,8713=>896,8714=>750,8715=>896,8716=>896,8717=>750,8718=>636,8719=>787,8720=>787,8721=>718,8722=>838,8723=>838,8724=>696,8725=>365,8726=>696,8727=>838,8728=>626,8729=>380,8730=>667,8731=>667,8732=>667,8733=>712,8734=>833,8735=>838,8736=>896,8737=>896,8738=>838,8739=>500,8740=>500,8741=>500,8742=>500,8743=>812,8744=>812,8745=>812,8746=>812,8747=>610,8748=>929,8749=>1295,8750=>563,8751=>977,8752=>1313,8753=>563,8754=>563,8755=>563,8756=>696,8757=>696,8758=>294,8759=>696,8760=>838,8761=>838,8762=>838,8763=>838,8764=>838,8765=>838,8766=>838,8767=>838,8768=>375,8769=>838,8770=>838,8771=>838,8772=>838,8773=>838,8774=>838,8775=>838,8776=>838,8777=>838,8778=>838,8779=>838,8780=>838,8781=>838,8782=>838,8783=>838,8784=>838,8785=>838,8786=>838,8787=>838,8788=>1063,8789=>1063,8790=>838,8791=>838,8792=>838,8793=>838,8794=>838,8795=>838,8796=>838,8797=>838,8798=>838,8799=>838,8800=>838,8801=>838,8802=>838,8803=>838,8804=>838,8805=>838,8806=>838,8807=>838,8808=>841,8809=>841,8810=>1047,8811=>1047,8812=>500,8813=>838,8814=>838,8815=>838,8816=>838,8817=>838,8818=>838,8819=>838,8820=>838,8821=>838,8822=>838,8823=>838,8824=>838,8825=>838,8826=>838,8827=>838,8828=>838,8829=>838,8830=>838,8831=>838,8832=>838,8833=>838,8834=>838,8835=>838,8836=>838,8837=>838,8838=>838,8839=>838,8840=>838,8841=>838,8842=>838,8843=>838,8844=>812,8845=>812,8846=>812,8847=>838,8848=>838,8849=>838,8850=>838,8851=>796,8852=>796,8853=>838,8854=>838,8855=>838,8856=>838,8857=>838,8858=>838,8859=>838,8860=>838,8861=>838,8862=>838,8863=>838,8864=>838,8865=>838,8866=>914,8867=>914,8868=>914,8869=>914,8870=>542,8871=>542,8872=>914,8873=>914,8874=>914,8875=>914,8876=>914,8877=>914,8878=>914,8879=>914,8880=>838,8881=>838,8882=>838,8883=>838,8884=>838,8885=>838,8886=>1000,8887=>1000,8888=>838,8889=>838,8890=>542,8891=>812,8892=>812,8893=>812,8894=>838,8895=>838,8896=>843,8897=>843,8898=>843,8899=>843,8900=>494,8901=>380,8902=>626,8903=>838,8904=>1000,8905=>1000,8906=>1000,8907=>1000,8908=>1000,8909=>838,8910=>812,8911=>812,8912=>838,8913=>838,8914=>838,8915=>838,8916=>838,8917=>838,8918=>838,8919=>838,8920=>1422,8921=>1422,8922=>838,8923=>838,8924=>838,8925=>838,8926=>838,8927=>838,8928=>838,8929=>838,8930=>838,8931=>838,8932=>838,8933=>838,8934=>838,8935=>838,8936=>838,8937=>838,8938=>838,8939=>838,8940=>838,8941=>838,8942=>1000,8943=>1000,8944=>1000,8945=>1000,8946=>1158,8947=>896,8948=>750,8949=>896,8950=>896,8951=>750,8952=>896,8953=>896,8954=>1158,8955=>896,8956=>750,8957=>896,8958=>750,8959=>896,8960=>602,8961=>602,8962=>716,8963=>838,8964=>838,8965=>838,8966=>838,8967=>488,8968=>457,8969=>457,8970=>457,8971=>457,8972=>809,8973=>809,8974=>809,8975=>809,8976=>838,8977=>539,8984=>928,8985=>838,8988=>469,8989=>469,8990=>469,8991=>469,8992=>610,8993=>610,8996=>1152,8997=>1152,8998=>1414,8999=>1152,9000=>1443,9003=>1414,9004=>873,9075=>390,9076=>716,9077=>869,9082=>687,9085=>863,9095=>1152,9108=>873,9115=>500,9116=>500,9117=>500,9118=>500,9119=>500,9120=>500,9121=>500,9122=>500,9123=>500,9124=>500,9125=>500,9126=>500,9127=>750,9128=>750,9129=>750,9130=>750,9131=>750,9132=>750,9133=>750,9134=>610,9166=>838,9167=>945,9187=>873,9189=>769,9192=>696,9250=>716,9251=>716,9312=>847,9313=>847,9314=>847,9315=>847,9316=>847,9317=>847,9318=>847,9319=>847,9320=>847,9321=>847,9600=>769,9601=>769,9602=>769,9603=>769,9604=>769,9605=>769,9606=>769,9607=>769,9608=>769,9609=>769,9610=>769,9611=>769,9612=>769,9613=>769,9614=>769,9615=>769,9616=>769,9617=>769,9618=>769,9619=>769,9620=>769,9621=>769,9622=>769,9623=>769,9624=>769,9625=>769,9626=>769,9627=>769,9628=>769,9629=>769,9630=>769,9631=>769,9632=>945,9633=>945,9634=>945,9635=>945,9636=>945,9637=>945,9638=>945,9639=>945,9640=>945,9641=>945,9642=>678,9643=>678,9644=>945,9645=>945,9646=>550,9647=>550,9648=>769,9649=>769,9650=>769,9651=>769,9652=>502,9653=>502,9654=>769,9655=>769,9656=>502,9657=>502,9658=>769,9659=>769,9660=>769,9661=>769,9662=>502,9663=>502,9664=>769,9665=>769,9666=>502,9667=>502,9668=>769,9669=>769,9670=>769,9671=>769,9672=>769,9673=>873,9674=>494,9675=>873,9676=>873,9677=>873,9678=>873,9679=>873,9680=>873,9681=>873,9682=>873,9683=>873,9684=>873,9685=>873,9686=>527,9687=>527,9688=>840,9689=>970,9690=>970,9691=>970,9692=>387,9693=>387,9694=>387,9695=>387,9696=>769,9697=>769,9698=>769,9699=>769,9700=>769,9701=>769,9702=>639,9703=>945,9704=>945,9705=>945,9706=>945,9707=>945,9708=>769,9709=>769,9710=>769,9711=>1119,9712=>945,9713=>945,9714=>945,9715=>945,9716=>873,9717=>873,9718=>873,9719=>873,9720=>769,9721=>769,9722=>769,9723=>830,9724=>830,9725=>732,9726=>732,9727=>769,9728=>896,9729=>1000,9730=>896,9731=>896,9732=>896,9733=>896,9734=>896,9735=>573,9736=>896,9737=>896,9738=>888,9739=>888,9740=>671,9741=>1013,9742=>1246,9743=>1250,9744=>896,9745=>896,9746=>896,9747=>532,9748=>896,9749=>896,9750=>896,9751=>896,9752=>896,9753=>896,9754=>896,9755=>896,9756=>896,9757=>609,9758=>896,9759=>609,9760=>896,9761=>896,9762=>896,9763=>896,9764=>669,9765=>746,9766=>649,9767=>784,9768=>545,9769=>896,9770=>896,9771=>896,9772=>710,9773=>896,9774=>896,9775=>896,9776=>896,9777=>896,9778=>896,9779=>896,9780=>896,9781=>896,9782=>896,9783=>896,9784=>896,9785=>1042,9786=>1042,9787=>1042,9788=>896,9789=>896,9790=>896,9791=>614,9792=>732,9793=>732,9794=>896,9795=>896,9796=>896,9797=>896,9798=>896,9799=>896,9800=>896,9801=>896,9802=>896,9803=>896,9804=>896,9805=>896,9806=>896,9807=>896,9808=>896,9809=>896,9810=>896,9811=>896,9812=>896,9813=>896,9814=>896,9815=>896,9816=>896,9817=>896,9818=>896,9819=>896,9820=>896,9821=>896,9822=>896,9823=>896,9824=>896,9825=>896,9826=>896,9827=>896,9828=>896,9829=>896,9830=>896,9831=>896,9832=>896,9833=>472,9834=>638,9835=>896,9836=>896,9837=>472,9838=>357,9839=>484,9840=>748,9841=>766,9842=>896,9843=>896,9844=>896,9845=>896,9846=>896,9847=>896,9848=>896,9849=>896,9850=>896,9851=>896,9852=>896,9853=>896,9854=>896,9855=>896,9856=>869,9857=>869,9858=>869,9859=>869,9860=>869,9861=>869,9862=>896,9863=>896,9864=>896,9865=>896,9866=>896,9867=>896,9868=>896,9869=>896,9870=>896,9871=>896,9872=>896,9873=>896,9874=>896,9875=>896,9876=>896,9877=>541,9878=>896,9879=>896,9880=>896,9881=>896,9882=>896,9883=>896,9884=>896,9888=>896,9889=>702,9890=>1004,9891=>1089,9892=>1175,9893=>903,9894=>838,9895=>838,9896=>838,9897=>838,9898=>838,9899=>838,9900=>838,9901=>838,9902=>838,9903=>838,9904=>844,9905=>838,9906=>732,9907=>732,9908=>732,9909=>732,9910=>850,9911=>732,9912=>732,9920=>838,9921=>838,9922=>838,9923=>838,9954=>732,9985=>838,9986=>838,9987=>838,9988=>838,9990=>838,9991=>838,9992=>838,9993=>838,9996=>838,9997=>838,9998=>838,9999=>838,10000=>838,10001=>838,10002=>838,10003=>838,10004=>838,10005=>838,10006=>838,10007=>838,10008=>838,10009=>838,10010=>838,10011=>838,10012=>838,10013=>838,10014=>838,10015=>838,10016=>838,10017=>838,10018=>838,10019=>838,10020=>838,10021=>838,10022=>838,10023=>838,10025=>838,10026=>838,10027=>838,10028=>838,10029=>838,10030=>838,10031=>838,10032=>838,10033=>838,10034=>838,10035=>838,10036=>838,10037=>838,10038=>838,10039=>838,10040=>838,10041=>838,10042=>838,10043=>838,10044=>838,10045=>838,10046=>838,10047=>838,10048=>838,10049=>838,10050=>838,10051=>838,10052=>838,10053=>838,10054=>838,10055=>838,10056=>838,10057=>838,10058=>838,10059=>838,10061=>896,10063=>896,10064=>896,10065=>896,10066=>896,10070=>896,10072=>838,10073=>838,10074=>838,10075=>347,10076=>347,10077=>587,10078=>587,10081=>838,10082=>838,10083=>838,10084=>838,10085=>838,10086=>838,10087=>838,10088=>838,10089=>838,10090=>838,10091=>838,10092=>838,10093=>838,10094=>838,10095=>838,10096=>838,10097=>838,10098=>838,10099=>838,10100=>838,10101=>838,10102=>847,10103=>847,10104=>847,10105=>847,10106=>847,10107=>847,10108=>847,10109=>847,10110=>847,10111=>847,10112=>838,10113=>838,10114=>838,10115=>838,10116=>838,10117=>838,10118=>838,10119=>838,10120=>838,10121=>838,10122=>838,10123=>838,10124=>838,10125=>838,10126=>838,10127=>838,10128=>838,10129=>838,10130=>838,10131=>838,10132=>838,10136=>838,10137=>838,10138=>838,10139=>838,10140=>838,10141=>838,10142=>838,10143=>838,10144=>838,10145=>838,10146=>838,10147=>838,10148=>838,10149=>838,10150=>838,10151=>838,10152=>838,10153=>838,10154=>838,10155=>838,10156=>838,10157=>838,10158=>838,10159=>838,10161=>838,10162=>838,10163=>838,10164=>838,10165=>838,10166=>838,10167=>838,10168=>838,10169=>838,10170=>838,10171=>838,10172=>838,10173=>838,10174=>838,10181=>457,10182=>457,10208=>494,10214=>487,10215=>487,10216=>457,10217=>457,10218=>721,10219=>721,10224=>838,10225=>838,10226=>838,10227=>838,10228=>1157,10229=>1434,10230=>1434,10231=>1434,10232=>1434,10233=>1434,10234=>1434,10235=>1434,10236=>1434,10237=>1434,10238=>1434,10239=>1434,10240=>781,10241=>781,10242=>781,10243=>781,10244=>781,10245=>781,10246=>781,10247=>781,10248=>781,10249=>781,10250=>781,10251=>781,10252=>781,10253=>781,10254=>781,10255=>781,10256=>781,10257=>781,10258=>781,10259=>781,10260=>781,10261=>781,10262=>781,10263=>781,10264=>781,10265=>781,10266=>781,10267=>781,10268=>781,10269=>781,10270=>781,10271=>781,10272=>781,10273=>781,10274=>781,10275=>781,10276=>781,10277=>781,10278=>781,10279=>781,10280=>781,10281=>781,10282=>781,10283=>781,10284=>781,10285=>781,10286=>781,10287=>781,10288=>781,10289=>781,10290=>781,10291=>781,10292=>781,10293=>781,10294=>781,10295=>781,10296=>781,10297=>781,10298=>781,10299=>781,10300=>781,10301=>781,10302=>781,10303=>781,10304=>781,10305=>781,10306=>781,10307=>781,10308=>781,10309=>781,10310=>781,10311=>781,10312=>781,10313=>781,10314=>781,10315=>781,10316=>781,10317=>781,10318=>781,10319=>781,10320=>781,10321=>781,10322=>781,10323=>781,10324=>781,10325=>781,10326=>781,10327=>781,10328=>781,10329=>781,10330=>781,10331=>781,10332=>781,10333=>781,10334=>781,10335=>781,10336=>781,10337=>781,10338=>781,10339=>781,10340=>781,10341=>781,10342=>781,10343=>781,10344=>781,10345=>781,10346=>781,10347=>781,10348=>781,10349=>781,10350=>781,10351=>781,10352=>781,10353=>781,10354=>781,10355=>781,10356=>781,10357=>781,10358=>781,10359=>781,10360=>781,10361=>781,10362=>781,10363=>781,10364=>781,10365=>781,10366=>781,10367=>781,10368=>781,10369=>781,10370=>781,10371=>781,10372=>781,10373=>781,10374=>781,10375=>781,10376=>781,10377=>781,10378=>781,10379=>781,10380=>781,10381=>781,10382=>781,10383=>781,10384=>781,10385=>781,10386=>781,10387=>781,10388=>781,10389=>781,10390=>781,10391=>781,10392=>781,10393=>781,10394=>781,10395=>781,10396=>781,10397=>781,10398=>781,10399=>781,10400=>781,10401=>781,10402=>781,10403=>781,10404=>781,10405=>781,10406=>781,10407=>781,10408=>781,10409=>781,10410=>781,10411=>781,10412=>781,10413=>781,10414=>781,10415=>781,10416=>781,10417=>781,10418=>781,10419=>781,10420=>781,10421=>781,10422=>781,10423=>781,10424=>781,10425=>781,10426=>781,10427=>781,10428=>781,10429=>781,10430=>781,10431=>781,10432=>781,10433=>781,10434=>781,10435=>781,10436=>781,10437=>781,10438=>781,10439=>781,10440=>781,10441=>781,10442=>781,10443=>781,10444=>781,10445=>781,10446=>781,10447=>781,10448=>781,10449=>781,10450=>781,10451=>781,10452=>781,10453=>781,10454=>781,10455=>781,10456=>781,10457=>781,10458=>781,10459=>781,10460=>781,10461=>781,10462=>781,10463=>781,10464=>781,10465=>781,10466=>781,10467=>781,10468=>781,10469=>781,10470=>781,10471=>781,10472=>781,10473=>781,10474=>781,10475=>781,10476=>781,10477=>781,10478=>781,10479=>781,10480=>781,10481=>781,10482=>781,10483=>781,10484=>781,10485=>781,10486=>781,10487=>781,10488=>781,10489=>781,10490=>781,10491=>781,10492=>781,10493=>781,10494=>781,10495=>781,10502=>838,10503=>838,10506=>838,10507=>838,10560=>838,10561=>838,10627=>753,10628=>753,10702=>838,10703=>1046,10704=>1046,10705=>1000,10706=>1000,10707=>1000,10708=>1000,10709=>1000,10731=>494,10746=>838,10747=>838,10752=>1000,10753=>1000,10754=>1000,10764=>1661,10765=>563,10766=>563,10767=>563,10768=>563,10769=>563,10770=>563,10771=>563,10772=>563,10773=>563,10774=>563,10775=>563,10776=>563,10777=>563,10778=>563,10779=>563,10780=>563,10799=>838,10858=>838,10859=>838,10877=>838,10878=>838,10879=>838,10880=>838,10881=>838,10882=>838,10883=>838,10884=>838,10885=>838,10886=>838,10887=>838,10888=>838,10889=>838,10890=>838,10891=>838,10892=>838,10893=>838,10894=>838,10895=>838,10896=>838,10897=>838,10898=>838,10899=>838,10900=>838,10901=>838,10902=>838,10903=>838,10904=>838,10905=>838,10906=>838,10907=>838,10908=>838,10909=>838,10910=>838,10911=>838,10912=>838,10926=>838,10927=>838,10928=>838,10929=>838,10930=>838,10931=>838,10932=>838,10933=>838,10934=>838,10935=>838,10936=>838,10937=>838,10938=>838,11001=>838,11002=>838,11008=>838,11009=>838,11010=>838,11011=>838,11012=>838,11013=>838,11014=>838,11015=>838,11016=>838,11017=>838,11018=>838,11019=>838,11020=>838,11021=>838,11022=>838,11023=>838,11024=>838,11025=>838,11026=>945,11027=>945,11028=>945,11029=>945,11030=>769,11031=>769,11032=>769,11033=>769,11034=>945,11039=>869,11040=>869,11041=>873,11042=>873,11043=>873,11044=>1119,11091=>869,11092=>869,11360=>637,11361=>360,11362=>637,11363=>733,11364=>770,11365=>675,11366=>478,11367=>956,11368=>712,11369=>775,11370=>665,11371=>725,11372=>582,11373=>860,11374=>995,11375=>774,11376=>860,11377=>778,11378=>1221,11379=>1056,11380=>652,11381=>698,11382=>565,11383=>782,11385=>538,11386=>687,11387=>559,11388=>219,11389=>487,11390=>720,11391=>725,11520=>663,11521=>676,11522=>661,11523=>629,11524=>661,11525=>1032,11526=>718,11527=>1032,11528=>648,11529=>667,11530=>1032,11531=>673,11532=>677,11533=>1036,11534=>680,11535=>886,11536=>1032,11537=>683,11538=>674,11539=>1035,11540=>1033,11541=>1027,11542=>676,11543=>673,11544=>667,11545=>667,11546=>660,11547=>671,11548=>1039,11549=>673,11550=>692,11551=>659,11552=>1048,11553=>660,11554=>654,11555=>670,11556=>733,11557=>1017,11568=>691,11569=>941,11570=>941,11571=>725,11572=>725,11573=>725,11574=>676,11575=>774,11576=>774,11577=>683,11578=>683,11579=>802,11580=>989,11581=>761,11582=>623,11583=>761,11584=>941,11585=>941,11586=>373,11587=>740,11588=>837,11589=>914,11590=>672,11591=>737,11592=>680,11593=>683,11594=>602,11595=>1039,11596=>778,11597=>837,11598=>683,11599=>372,11600=>778,11601=>373,11602=>725,11603=>691,11604=>941,11605=>941,11606=>837,11607=>373,11608=>836,11609=>941,11610=>941,11611=>734,11612=>876,11613=>771,11614=>734,11615=>683,11616=>774,11617=>837,11618=>683,11619=>850,11620=>697,11621=>850,11631=>716,11800=>580,11807=>838,11810=>457,11811=>457,11812=>457,11813=>457,11822=>580,19904=>896,19905=>896,19906=>896,19907=>896,19908=>896,19909=>896,19910=>896,19911=>896,19912=>896,19913=>896,19914=>896,19915=>896,19916=>896,19917=>896,19918=>896,19919=>896,19920=>896,19921=>896,19922=>896,19923=>896,19924=>896,19925=>896,19926=>896,19927=>896,19928=>896,19929=>896,19930=>896,19931=>896,19932=>896,19933=>896,19934=>896,19935=>896,19936=>896,19937=>896,19938=>896,19939=>896,19940=>896,19941=>896,19942=>896,19943=>896,19944=>896,19945=>896,19946=>896,19947=>896,19948=>896,19949=>896,19950=>896,19951=>896,19952=>896,19953=>896,19954=>896,19955=>896,19956=>896,19957=>896,19958=>896,19959=>896,19960=>896,19961=>896,19962=>896,19963=>896,19964=>896,19965=>896,19966=>896,19967=>896,42192=>762,42193=>733,42194=>733,42195=>830,42196=>682,42197=>682,42198=>821,42199=>775,42200=>775,42201=>530,42202=>734,42203=>734,42204=>725,42205=>683,42206=>683,42207=>995,42208=>837,42209=>637,42210=>720,42211=>770,42212=>770,42213=>774,42214=>774,42215=>837,42216=>775,42217=>530,42218=>1103,42219=>771,42220=>724,42221=>762,42222=>774,42223=>774,42224=>683,42225=>683,42226=>372,42227=>850,42228=>812,42229=>812,42230=>557,42231=>830,42232=>322,42233=>322,42234=>674,42235=>674,42236=>322,42237=>322,42238=>588,42239=>588,42564=>720,42565=>595,42566=>436,42567=>440,42572=>1405,42573=>1173,42576=>1234,42577=>1027,42580=>1174,42581=>972,42582=>1093,42583=>958,42594=>1085,42595=>924,42596=>1096,42597=>912,42598=>1260,42599=>997,42600=>850,42601=>687,42602=>1037,42603=>868,42604=>1406,42605=>1106,42606=>961,42634=>963,42635=>787,42636=>682,42637=>580,42644=>808,42645=>712,42760=>500,42761=>500,42762=>500,42763=>500,42764=>500,42765=>500,42766=>500,42767=>500,42768=>500,42769=>500,42770=>500,42771=>500,42772=>500,42773=>500,42774=>500,42779=>400,42780=>400,42781=>287,42782=>287,42783=>287,42786=>444,42787=>390,42788=>540,42789=>540,42790=>837,42791=>712,42792=>1031,42793=>857,42794=>696,42795=>557,42800=>559,42801=>595,42802=>1349,42803=>1052,42804=>1284,42805=>1064,42806=>1216,42807=>1054,42808=>1079,42809=>922,42810=>1079,42811=>922,42812=>1035,42813=>922,42814=>698,42815=>549,42816=>656,42817=>688,42822=>850,42823=>542,42824=>683,42825=>531,42826=>918,42827=>814,42830=>1406,42831=>1106,42832=>733,42833=>716,42834=>948,42835=>937,42838=>850,42839=>716,42852=>738,42853=>716,42854=>738,42855=>716,42880=>637,42881=>343,42882=>837,42883=>712,42889=>400,42890=>386,42891=>456,42892=>306,42893=>808,42894=>693,42896=>928,42897=>768,42912=>821,42913=>716,42914=>775,42915=>665,42916=>837,42917=>712,42918=>770,42919=>493,42920=>720,42921=>595,42922=>886,43002=>1062,43003=>683,43004=>733,43005=>995,43006=>372,43007=>1325,61184=>216,61185=>242,61186=>267,61187=>277,61188=>282,61189=>242,61190=>216,61191=>242,61192=>267,61193=>277,61194=>267,61195=>242,61196=>216,61197=>242,61198=>267,61199=>277,61200=>267,61201=>242,61202=>216,61203=>242,61204=>282,61205=>277,61206=>267,61207=>242,61208=>216,61209=>282,62464=>612,62465=>612,62466=>653,62467=>902,62468=>622,62469=>622,62470=>661,62471=>895,62472=>589,62473=>622,62474=>1163,62475=>626,62476=>627,62477=>893,62478=>612,62479=>626,62480=>924,62481=>627,62482=>744,62483=>634,62484=>886,62485=>626,62486=>907,62487=>626,62488=>621,62489=>628,62490=>677,62491=>626,62492=>621,62493=>630,62494=>627,62495=>571,62496=>622,62497=>631,62498=>612,62499=>611,62500=>618,62501=>671,62502=>963,62504=>1023,62505=>844,62506=>563,62507=>563,62508=>563,62509=>563,62510=>563,62511=>563,62512=>555,62513=>555,62514=>555,62515=>555,62516=>573,62517=>573,62518=>573,62519=>824,62520=>824,62521=>824,62522=>824,62523=>824,62524=>611,62525=>611,62526=>611,62527=>611,62528=>611,62529=>611,63173=>687,64256=>810,64257=>741,64258=>741,64259=>1115,64260=>1116,64261=>808,64262=>1020,64275=>1388,64276=>1384,64277=>1378,64278=>1384,64279=>1713,64285=>294,64286=>0,64287=>519,64288=>665,64289=>939,64290=>788,64291=>920,64292=>786,64293=>857,64294=>869,64295=>821,64296=>890,64297=>838,64298=>758,64299=>758,64300=>758,64301=>758,64302=>728,64303=>728,64304=>728,64305=>610,64306=>447,64307=>588,64308=>687,64309=>437,64310=>485,64312=>679,64313=>435,64314=>578,64315=>566,64316=>605,64318=>724,64320=>453,64321=>680,64323=>675,64324=>658,64326=>653,64327=>736,64328=>602,64329=>758,64330=>683,64331=>343,64332=>610,64333=>566,64334=>658,64335=>710,64338=>1005,64339=>1059,64340=>375,64341=>408,64342=>1005,64343=>1059,64344=>375,64345=>408,64346=>1005,64347=>1059,64348=>375,64349=>408,64350=>1005,64351=>1059,64352=>375,64353=>408,64354=>1005,64355=>1059,64356=>375,64357=>408,64358=>1005,64359=>1059,64360=>375,64361=>408,64362=>1162,64363=>1191,64364=>655,64365=>720,64366=>1162,64367=>1191,64368=>655,64369=>720,64370=>721,64371=>721,64372=>721,64373=>721,64374=>721,64375=>721,64376=>721,64377=>721,64378=>721,64379=>721,64380=>721,64381=>721,64382=>721,64383=>721,64384=>721,64385=>721,64386=>513,64387=>578,64388=>513,64389=>578,64390=>513,64391=>578,64392=>513,64393=>578,64394=>576,64395=>622,64396=>576,64397=>622,64398=>1024,64399=>1024,64400=>582,64401=>582,64402=>1024,64403=>1024,64404=>582,64405=>582,64406=>1024,64407=>1024,64408=>582,64409=>582,64410=>1024,64411=>1024,64412=>582,64413=>582,64414=>854,64415=>900,64416=>854,64417=>900,64418=>375,64419=>408,64426=>938,64427=>880,64428=>693,64429=>660,64467=>824,64468=>843,64469=>476,64470=>552,64473=>622,64474=>627,64488=>375,64489=>408,64508=>917,64509=>1012,64510=>375,64511=>408,65024=>0,65025=>0,65026=>0,65027=>0,65028=>0,65029=>0,65030=>0,65031=>0,65032=>0,65033=>0,65034=>0,65035=>0,65036=>0,65037=>0,65038=>0,65039=>0,65056=>0,65057=>0,65058=>0,65059=>0,65136=>342,65137=>342,65138=>342,65139=>346,65140=>342,65142=>342,65143=>342,65144=>342,65145=>342,65146=>342,65147=>342,65148=>342,65149=>342,65150=>342,65151=>342,65152=>511,65153=>343,65154=>375,65155=>343,65156=>375,65157=>622,65158=>627,65159=>343,65160=>375,65161=>917,65162=>917,65163=>375,65164=>408,65165=>343,65166=>375,65167=>1005,65168=>1059,65169=>375,65170=>408,65171=>590,65172=>606,65173=>1005,65174=>1059,65175=>375,65176=>408,65177=>1005,65178=>1059,65179=>375,65180=>408,65181=>721,65182=>721,65183=>721,65184=>721,65185=>721,65186=>721,65187=>721,65188=>721,65189=>721,65190=>721,65191=>721,65192=>721,65193=>513,65194=>578,65195=>513,65196=>578,65197=>576,65198=>622,65199=>576,65200=>622,65201=>1380,65202=>1414,65203=>983,65204=>1018,65205=>1380,65206=>1414,65207=>983,65208=>1018,65209=>1345,65210=>1364,65211=>966,65212=>985,65213=>1345,65214=>1364,65215=>966,65216=>985,65217=>1039,65218=>1071,65219=>942,65220=>974,65221=>1039,65222=>1071,65223=>942,65224=>974,65225=>683,65226=>683,65227=>683,65228=>564,65229=>683,65230=>683,65231=>683,65232=>564,65233=>1162,65234=>1191,65235=>655,65236=>720,65237=>894,65238=>901,65239=>655,65240=>720,65241=>917,65242=>931,65243=>582,65244=>582,65245=>868,65246=>893,65247=>375,65248=>408,65249=>733,65250=>784,65251=>619,65252=>670,65253=>854,65254=>900,65255=>375,65256=>408,65257=>590,65258=>606,65259=>693,65260=>660,65261=>622,65262=>627,65263=>917,65264=>1012,65265=>917,65266=>1012,65267=>375,65268=>408,65269=>745,65270=>759,65271=>745,65272=>759,65273=>745,65274=>759,65275=>745,65276=>759,65279=>0,65529=>0,65530=>0,65531=>0,65532=>0,65533=>1113,65535=>600);
16
- // --- EOF ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/lib/tcpdf_min/fonts/dejavusansb.z DELETED
Binary file
includes/lib/tcpdf_min/fonts/dejavusansbi.ctg.z DELETED
Binary file
includes/lib/tcpdf_min/fonts/dejavusansbi.php DELETED
@@ -1,16 +0,0 @@
1
- <?php
2
- // TCPDF FONT FILE DESCRIPTION
3
- $type='TrueTypeUnicode';
4
- $name='DejaVuSans-BoldOblique';
5
- $up=-63;
6
- $ut=44;
7
- $dw=600;
8
- $diff='';
9
- $originalsize=632168;
10
- $enc='';
11
- $file='dejavusansbi.z';
12
- $ctg='dejavusansbi.ctg.z';
13
- $desc=array('Flags'=>96,'FontBBox'=>'[-1067 -385 1999 1121]','ItalicAngle'=>-11,'Ascent'=>928,'Descent'=>-236,'Leading'=>0,'CapHeight'=>729,'XHeight'=>547,'StemV'=>60,'StemH'=>26,'AvgWidth'=>573,'MaxWidth'=>2016,'MissingWidth'=>600);
14
- $cbbox=array(0=>array(50,-177,550,705),32=>array(69,0,387,729),33=>array(69,0,387,729),34=>array(95,458,426,729),35=>array(65,0,780,718),36=>array(27,-147,630,760),37=>array(55,-14,947,742),38=>array(28,-14,813,742),39=>array(95,458,211,729),40=>array(77,-132,468,759),41=>array(-27,-132,364,759),42=>array(20,278,503,742),43=>array(106,0,732,627),44=>array(-34,-142,256,189),45=>array(25,217,360,359),46=>array(46,0,259,189),47=>array(-96,-93,434,729),48=>array(36,-14,660,742),49=>array(43,0,578,729),50=>array(8,0,640,742),51=>array(0,-14,637,742),52=>array(-1,0,635,729),53=>array(13,-14,644,729),54=>array(50,-15,660,741),55=>array(78,0,694,729),56=>array(22,-14,659,742),57=>array(41,-15,652,741),58=>array(41,0,323,547),59=>array(-35,-142,323,547),60=>array(106,30,732,597),61=>array(106,144,732,482),62=>array(106,30,732,597),63=>array(104,0,554,742),64=>array(45,-172,927,703),65=>array(-65,0,691,729),66=>array(21,0,699,729),67=>array(36,-14,724,742),68=>array(21,0,786,729),69=>array(21,0,670,729),70=>array(21,0,670,729),71=>array(36,-14,778,742),72=>array(21,0,816,729),73=>array(21,0,351,729),74=>array(-166,-200,351,729),75=>array(21,0,837,729),76=>array(21,0,566,729),77=>array(21,0,974,729),78=>array(21,0,816,729),79=>array(36,-14,814,742),80=>array(21,0,719,729),81=>array(36,-146,814,742),82=>array(21,0,685,729),83=>array(15,-14,665,742),84=>array(48,0,748,729),85=>array(68,-14,791,729),86=>array(76,0,840,729),87=>array(107,0,1143,729),88=>array(-51,0,812,729),89=>array(63,0,809,729),90=>array(-26,0,740,729),91=>array(-10,-132,466,760),92=>array(71,-93,276,729),93=>array(-28,-132,448,760),94=>array(101,457,737,729),95=>array(-10,-236,510,-143),96=>array(131,616,371,800),97=>array(17,-14,611,560),98=>array(31,-14,677,760),99=>array(37,-14,581,560),100=>array(36,-14,724,760),101=>array(36,-14,640,560),102=>array(50,0,540,760),103=>array(20,-216,682,559),104=>array(31,0,654,760),105=>array(31,0,354,760),106=>array(-128,-216,354,760),107=>array(31,0,716,760),108=>array(31,0,354,760),109=>array(31,0,984,560),110=>array(31,0,654,560),111=>array(36,-14,651,560),112=>array(-10,-208,677,560),113=>array(36,-208,682,560),114=>array(31,0,545,560),115=>array(10,-14,560,560),116=>array(43,0,509,702),117=>array(60,-14,681,547),118=>array(63,0,678,547),119=>array(87,0,927,547),120=>array(-41,0,671,547),121=>array(0,-216,687,547),122=>array(-9,0,586,547),123=>array(106,-163,669,760),124=>array(127,-236,238,764),125=>array(44,-163,606,760),126=>array(106,212,732,415),160=>array(69,0,387,729),161=>array(69,0,387,729),162=>array(67,-153,610,699),163=>array(7,0,691,742),164=>array(36,30,601,596),165=>array(6,0,755,729),166=>array(127,-171,238,699),167=>array(-33,-95,494,742),168=>array(152,654,484,774),169=>array(138,0,862,725),170=>array(43,182,527,742),171=>array(61,67,594,519),172=>array(106,140,732,444),173=>array(25,217,360,359),174=>array(138,0,862,725),175=>array(155,668,481,760),176=>array(87,424,412,749),177=>array(106,0,732,627),178=>array(45,326,431,742),179=>array(40,319,427,742),180=>array(227,616,539,800),181=>array(-27,-209,670,547),182=>array(74,-96,603,729),183=>array(84,253,297,442),184=>array(22,-196,259,0),185=>array(67,326,395,734),186=>array(46,182,545,742),187=>array(57,66,589,519),188=>array(56,-14,948,742),189=>array(56,-14,1036,742),190=>array(47,-14,948,742),191=>array(37,-13,488,729),192=>array(-65,0,691,927),193=>array(-65,0,691,927),194=>array(-65,0,691,927),195=>array(-65,0,691,928),196=>array(-65,0,691,927),197=>array(-65,0,691,928),198=>array(-78,0,1072,729),199=>array(36,-196,724,742),200=>array(21,0,670,927),201=>array(21,0,670,927),202=>array(21,0,670,927),203=>array(21,0,670,927),204=>array(21,0,351,927),205=>array(21,0,448,927),206=>array(21,0,440,927),207=>array(21,0,442,927),208=>array(-2,0,803,729),209=>array(21,0,816,928),210=>array(36,-14,814,927),211=>array(36,-14,814,927),212=>array(36,-14,814,927),213=>array(36,-14,814,928),214=>array(36,-14,814,927),215=>array(125,20,713,607),216=>array(-47,-38,896,771),217=>array(68,-14,791,927),218=>array(68,-14,791,927),219=>array(68,-14,791,927),220=>array(68,-14,791,927),221=>array(63,0,809,927),222=>array(21,0,695,729),223=>array(31,-14,666,760),224=>array(17,-14,611,800),225=>array(17,-14,627,800),226=>array(17,-14,611,800),227=>array(17,-14,611,778),228=>array(17,-14,611,774),229=>array(17,-14,611,883),230=>array(17,-14,1008,560),231=>array(37,-196,581,560),232=>array(36,-14,640,800),233=>array(36,-14,650,800),234=>array(36,-14,640,800),235=>array(36,-14,640,774),236=>array(31,0,313,800),237=>array(31,0,470,800),238=>array(31,0,414,800),239=>array(31,0,415,774),240=>array(36,-14,678,760),241=>array(31,0,654,778),242=>array(36,-14,651,800),243=>array(36,-14,651,800),244=>array(36,-14,651,800),245=>array(36,-14,651,778),246=>array(36,-14,651,774),247=>array(106,42,732,585),248=>array(-17,-50,700,597),249=>array(60,-14,681,800),250=>array(60,-14,681,800),251=>array(60,-14,681,800),252=>array(60,-14,681,774),253=>array(0,-216,687,800),254=>array(-10,-208,677,760),255=>array(0,-216,687,774),256=>array(-65,0,691,914),257=>array(17,-14,611,763),258=>array(-65,0,691,936),259=>array(17,-14,611,772),260=>array(-65,-196,691,729),261=>array(17,-196,611,560),262=>array(36,-14,724,927),263=>array(37,-14,645,800),264=>array(36,-14,724,927),265=>array(37,-14,589,800),266=>array(36,-14,724,927),267=>array(37,-14,581,759),268=>array(36,-14,732,927),269=>array(37,-14,634,800),270=>array(21,0,786,927),271=>array(36,-14,947,760),272=>array(-2,0,803,729),273=>array(36,-14,817,760),274=>array(21,0,670,914),275=>array(36,-14,640,763),276=>array(21,0,670,927),277=>array(36,-14,640,784),278=>array(21,0,670,927),279=>array(36,-14,640,759),280=>array(21,-196,670,729),281=>array(36,-196,640,560),282=>array(21,0,670,927),283=>array(36,-14,640,800),284=>array(36,-14,778,927),285=>array(20,-216,682,800),286=>array(36,-14,778,927),287=>array(20,-216,682,784),288=>array(36,-14,778,927),289=>array(20,-216,682,759),290=>array(36,-224,778,742),291=>array(20,-216,682,765),292=>array(21,0,816,927),293=>array(31,0,654,927),294=>array(89,0,935,729),295=>array(85,0,708,760),296=>array(21,0,456,928),297=>array(31,0,431,778),298=>array(21,0,417,914),299=>array(31,0,402,763),300=>array(21,0,453,927),301=>array(31,0,427,784),302=>array(21,-196,351,729),303=>array(31,-196,354,760),304=>array(21,0,355,927),305=>array(31,0,313,547),306=>array(21,-200,723,729),307=>array(31,-216,697,760),308=>array(-166,-200,453,927),309=>array(-128,-216,428,800),310=>array(21,-209,837,729),311=>array(31,-209,716,760),312=>array(31,0,716,547),313=>array(21,0,566,928),314=>array(31,0,478,928),315=>array(21,-209,566,729),316=>array(-23,-209,354,760),317=>array(21,0,623,729),318=>array(31,0,582,760),319=>array(21,0,624,729),320=>array(31,0,555,760),321=>array(-23,0,603,729),322=>array(-7,0,456,760),323=>array(21,0,816,928),324=>array(31,0,654,803),325=>array(21,-209,816,729),326=>array(31,-209,654,560),327=>array(21,0,816,927),328=>array(31,0,654,800),329=>array(61,0,911,729),330=>array(31,-200,775,742),331=>array(50,-216,673,560),332=>array(36,-14,814,914),333=>array(36,-14,651,763),334=>array(36,-14,814,927),335=>array(36,-14,651,784),336=>array(36,-14,814,927),337=>array(36,-14,657,800),338=>array(42,0,1154,729),339=>array(36,-14,1054,560),340=>array(21,0,685,928),341=>array(31,0,618,803),342=>array(21,-209,685,729),343=>array(-23,-209,545,560),344=>array(21,0,685,927),345=>array(31,0,602,800),346=>array(15,-14,665,928),347=>array(10,-14,618,803),348=>array(15,-14,665,927),349=>array(10,-14,560,800),350=>array(15,-196,665,742),351=>array(10,-196,560,560),352=>array(15,-14,665,927),353=>array(10,-14,576,800),354=>array(48,-196,748,729),355=>array(43,-196,509,702),356=>array(48,0,748,927),357=>array(43,0,615,800),358=>array(48,0,748,729),359=>array(-11,0,493,702),360=>array(68,-14,791,928),361=>array(60,-14,681,778),362=>array(68,-14,791,914),363=>array(60,-14,681,763),364=>array(68,-14,791,927),365=>array(60,-14,681,784),366=>array(68,-14,791,923),367=>array(60,-14,681,873),368=>array(68,-14,791,927),369=>array(60,-14,681,800),370=>array(68,-196,791,729),371=>array(60,-196,681,547),372=>array(107,0,1143,931),373=>array(87,0,927,800),374=>array(63,0,809,931),375=>array(0,-216,687,800),376=>array(63,0,809,927),377=>array(-26,0,740,928),378=>array(-9,0,618,803),379=>array(-26,0,740,918),380=>array(-9,0,586,759),381=>array(-26,0,740,927),382=>array(-9,0,586,800),383=>array(50,0,540,760),384=>array(12,-14,651,760),385=>array(-37,0,744,729),386=>array(21,0,714,729),387=>array(12,-14,662,760),388=>array(61,0,704,729),389=>array(37,-14,677,760),390=>array(-13,-14,675,742),391=>array(32,-14,909,924),392=>array(27,-14,715,724),393=>array(-2,0,803,729),394=>array(-37,0,830,729),395=>array(65,0,763,729),396=>array(25,-14,707,760),397=>array(57,-208,662,548),398=>array(21,0,681,729),399=>array(36,-14,819,742),400=>array(37,-14,652,742),401=>array(-146,-200,689,729),402=>array(-151,-208,538,760),403=>array(32,-14,959,924),404=>array(94,-210,882,729),405=>array(10,-1,980,760),406=>array(74,0,384,729),407=>array(-7,0,397,729),408=>array(20,0,827,742),409=>array(10,0,695,760),410=>array(-10,0,365,760),411=>array(-44,0,536,760),412=>array(55,-13,1035,729),413=>array(-146,-200,835,729),414=>array(50,-208,664,560),415=>array(36,-14,814,742),416=>array(39,-14,907,760),417=>array(40,-14,771,570),418=>array(50,-14,1056,742),419=>array(63,-216,891,560),420=>array(-37,0,765,729),421=>array(-10,-208,670,760),422=>array(35,-146,684,729),423=>array(-1,-14,631,742),424=>array(-7,-14,534,560),425=>array(21,0,670,729),426=>array(34,-217,539,759),427=>array(48,-216,514,702),428=>array(36,0,772,729),429=>array(21,0,512,760),430=>array(67,-200,767,729),431=>array(67,-14,938,761),432=>array(57,-14,795,570),433=>array(42,-14,813,723),434=>array(74,0,764,729),435=>array(60,0,841,742),436=>array(24,-216,822,560),437=>array(-26,0,740,729),438=>array(-8,0,587,547),439=>array(21,-33,743,729),440=>array(10,-33,771,729),441=>array(6,-215,647,547),442=>array(-11,-208,585,547),443=>array(7,0,634,742),444=>array(11,-33,696,729),445=>array(-30,-215,573,547),446=>array(-27,-15,508,702),447=>array(-12,-208,693,560),448=>array(0,-208,371,729),449=>array(0,-208,658,729),450=>array(-23,-208,574,729),451=>array(27,0,346,729),452=>array(21,0,1570,927),453=>array(21,0,1416,800),454=>array(36,-14,1302,800),455=>array(21,-200,988,729),456=>array(21,-216,991,760),457=>array(31,-216,697,760),458=>array(21,-200,1188,729),459=>array(21,-216,1191,760),460=>array(31,-216,1066,760),461=>array(-65,0,691,927),462=>array(17,-14,615,800),463=>array(21,0,473,927),464=>array(31,0,457,800),465=>array(36,-14,814,927),466=>array(36,-14,651,800),467=>array(68,-14,791,927),468=>array(60,-14,681,800),469=>array(68,-14,791,1040),470=>array(60,-14,681,914),471=>array(68,-14,791,1057),472=>array(60,-14,681,917),473=>array(68,-14,791,1058),474=>array(60,-14,681,917),475=>array(68,-14,791,1057),476=>array(60,-14,681,917),477=>array(42,-14,630,560),478=>array(-65,0,691,1040),479=>array(17,-14,611,914),480=>array(-65,0,691,1040),481=>array(17,-14,620,881),482=>array(-78,0,1072,914),483=>array(17,-14,1008,758),484=>array(36,-14,778,742),485=>array(20,-216,682,559),486=>array(36,-14,778,927),487=>array(20,-216,682,799),488=>array(21,0,837,926),489=>array(31,0,716,926),490=>array(36,-196,814,742),491=>array(36,-196,651,560),492=>array(36,-196,814,914),493=>array(36,-196,651,763),494=>array(21,-33,743,927),495=>array(-44,-215,588,793),496=>array(-128,-216,466,800),497=>array(21,0,1570,729),498=>array(21,0,1416,729),499=>array(36,-14,1302,760),500=>array(36,-14,778,928),501=>array(20,-216,682,798),502=>array(22,-14,1222,729),503=>array(-20,-208,775,742),504=>array(21,0,816,927),505=>array(31,0,654,798),506=>array(-65,0,867,986),507=>array(17,-14,814,931),508=>array(-78,0,1072,928),509=>array(17,-14,1008,799),510=>array(-47,-38,896,928),511=>array(-17,-50,700,800),512=>array(-65,0,691,930),513=>array(17,-14,611,800),514=>array(-65,0,691,947),515=>array(17,-14,611,784),516=>array(21,0,670,930),517=>array(36,-14,640,800),518=>array(21,0,670,947),519=>array(36,-14,640,784),520=>array(21,0,437,930),521=>array(31,0,409,799),522=>array(21,0,447,947),523=>array(31,0,417,784),524=>array(36,-14,814,930),525=>array(36,-14,651,800),526=>array(36,-14,814,947),527=>array(36,-14,651,784),528=>array(21,0,685,930),529=>array(31,0,545,800),530=>array(21,0,685,947),531=>array(31,0,545,784),532=>array(68,-14,791,930),533=>array(60,-14,681,800),534=>array(68,-14,791,947),535=>array(60,-14,681,784),536=>array(15,-236,665,742),537=>array(10,-236,560,560),538=>array(48,-236,748,729),539=>array(43,-236,509,702),540=>array(-45,-210,649,742),541=>array(-47,-211,564,560),542=>array(21,0,816,926),543=>array(31,0,654,926),544=>array(32,-208,764,742),545=>array(31,-75,786,760),546=>array(25,-14,769,742),547=>array(22,-14,656,646),548=>array(-5,-216,761,729),549=>array(13,-216,608,547),550=>array(-65,0,691,927),551=>array(17,-14,611,759),552=>array(21,-192,670,729),553=>array(36,-196,640,560),554=>array(36,-14,814,1040),555=>array(36,-14,651,914),556=>array(36,-14,814,1040),557=>array(36,-14,651,914),558=>array(36,-14,814,928),559=>array(36,-14,651,759),560=>array(36,-14,814,1040),561=>array(36,-14,651,914),562=>array(63,0,809,914),563=>array(0,-216,687,763),564=>array(32,-75,413,760),565=>array(37,-75,808,560),566=>array(34,-76,500,702),567=>array(-128,-216,313,547),568=>array(25,-14,1023,760),569=>array(64,-208,1062,560),570=>array(-81,-36,854,765),571=>array(-101,-36,834,765),572=>array(-61,-46,652,594),573=>array(-13,0,566,729),574=>array(-127,-36,809,765),575=>array(33,-240,583,560),576=>array(15,-240,611,547),577=>array(69,0,765,729),578=>array(56,0,582,560),579=>array(-35,0,695,729),580=>array(20,-14,804,729),581=>array(-66,0,698,729),582=>array(21,-93,681,822),583=>array(36,-93,638,640),584=>array(-166,-200,368,729),585=>array(-128,-216,368,760),586=>array(66,-200,863,741),587=>array(64,-216,747,560),588=>array(-12,0,685,729),589=>array(-33,0,543,560),590=>array(30,0,805,729),591=>array(10,-216,708,547),592=>array(66,-14,660,560),593=>array(45,-14,685,560),594=>array(-8,-14,632,560),595=>array(12,-14,651,760),596=>array(-7,-14,537,560),597=>array(48,-69,581,560),598=>array(45,-216,727,760),599=>array(25,-14,876,760),600=>array(22,-14,630,560),601=>array(42,-14,630,560),602=>array(38,-14,890,560),603=>array(27,-14,520,560),604=>array(-50,-11,509,560),605=>array(-50,-11,788,560),606=>array(54,-14,679,560),607=>array(-107,-216,388,547),608=>array(23,-216,896,760),609=>array(44,-216,706,547),610=>array(43,-14,573,546),611=>array(87,-211,692,547),612=>array(80,-21,674,547),613=>array(88,-214,703,546),614=>array(10,0,625,760),615=>array(31,-216,646,760),616=>array(52,0,448,760),617=>array(74,-1,326,547),618=>array(31,0,515,547),619=>array(70,0,488,760),620=>array(93,0,613,760),621=>array(32,-216,356,760),622=>array(31,-215,788,760),623=>array(69,-14,1013,546),624=>array(88,-209,1032,546),625=>array(49,-216,994,560),626=>array(-160,-216,665,560),627=>array(50,-216,749,560),628=>array(-32,0,613,547),629=>array(36,-14,651,560),630=>array(43,-1,871,547),631=>array(-9,0,580,574),632=>array(60,-208,729,760),633=>array(31,-13,544,547),634=>array(10,-13,565,760),635=>array(50,-216,607,547),636=>array(9,-208,563,560),637=>array(51,-216,564,560),638=>array(31,0,583,547),639=>array(99,0,499,547),640=>array(-32,0,509,547),641=>array(-32,0,613,547),642=>array(28,-216,581,560),643=>array(-126,-216,519,760),644=>array(-106,-216,539,760),645=>array(137,-216,486,560),646=>array(-97,-217,655,760),647=>array(-25,-155,441,547),648=>array(48,-216,514,702),649=>array(74,-14,845,547),650=>array(22,-51,690,547),651=>array(74,-1,626,547),652=>array(-38,0,584,547),653=>array(-18,0,836,547),654=>array(-62,0,620,763),655=>array(53,0,648,547),656=>array(13,-216,651,547),657=>array(-1,-69,599,547),658=>array(-23,-215,608,547),659=>array(25,-215,608,547),660=>array(59,0,546,759),661=>array(57,0,592,759),662=>array(-31,0,504,759),663=>array(-5,-208,612,759),664=>array(50,-14,800,742),665=>array(31,0,593,547),666=>array(31,-14,665,560),667=>array(22,0,768,760),668=>array(28,0,658,547),669=>array(-235,-217,354,760),670=>array(73,-213,758,547),671=>array(31,0,473,547),672=>array(44,-208,895,760),673=>array(-3,0,546,759),674=>array(57,0,592,759),675=>array(25,-14,1142,760),676=>array(45,-215,1161,760),677=>array(29,-55,1145,760),678=>array(27,0,926,702),679=>array(42,-216,872,760),680=>array(34,-69,923,702),681=>array(48,-216,990,760),682=>array(10,0,808,760),683=>array(10,0,764,760),684=>array(20,0,631,641),685=>array(-31,86,399,641),686=>array(-18,-214,682,760),687=>array(-16,-216,724,760),688=>array(12,326,401,751),689=>array(12,326,400,751),690=>array(-75,205,219,751),691=>array(23,326,344,640),692=>array(24,319,344,632),693=>array(35,205,392,632),694=>array(-16,326,388,632),695=>array(52,326,599,632),696=>array(22,205,447,632),697=>array(78,557,218,800),698=>array(78,557,437,800),699=>array(113,418,389,729),700=>array(73,418,348,729),701=>array(198,616,347,856),702=>array(168,481,334,760),703=>array(159,481,325,760),704=>array(43,326,348,751),705=>array(35,326,374,751),706=>array(184,517,463,843),707=>array(161,517,440,843),708=>array(125,561,452,800),709=>array(172,561,499,800),710=>array(106,616,483,800),711=>array(151,616,528,800),712=>array(81,488,226,759),713=>array(155,668,481,760),714=>array(227,616,539,800),715=>array(131,616,371,800),716=>array(81,-81,226,190),717=>array(-11,-185,315,-93),718=>array(131,-238,371,-54),719=>array(227,-238,539,-54),720=>array(-8,0,299,547),721=>array(63,361,264,547),722=>array(126,269,292,547),723=>array(118,269,284,547),724=>array(116,238,353,458),725=>array(145,238,382,458),726=>array(46,119,370,427),727=>array(46,229,282,317),728=>array(166,639,496,784),729=>array(239,654,397,774),730=>array(184,605,462,883),731=>array(73,-196,284,0),732=>array(133,638,500,778),733=>array(143,616,563,800),734=>array(-12,213,347,524),735=>array(163,616,474,800),736=>array(36,213,458,637),737=>array(12,326,207,751),738=>array(11,318,355,640),739=>array(-20,326,427,632),740=>array(35,326,374,751),741=>array(146,0,471,693),742=>array(117,0,471,693),743=>array(87,0,471,693),744=>array(58,0,471,693),745=>array(29,0,471,693),748=>array(14,-260,340,-21),749=>array(143,605,492,822),750=>array(73,418,612,729),755=>array(91,-240,369,38),759=>array(88,-221,455,-109),768=>array(-259,616,-19,800),769=>array(-160,616,152,800),770=>array(-287,616,90,800),771=>array(-257,638,110,778),772=>array(-235,668,91,760),773=>array(-346,663,174,755),774=>array(-221,639,109,784),775=>array(-184,617,18,760),776=>array(-238,654,94,774),777=>array(-363,616,-117,843),778=>array(-200,605,78,883),779=>array(-244,616,176,800),780=>array(-236,616,141,800),781=>array(-130,615,4,832),782=>array(-223,615,97,832),783=>array(-279,616,70,800),784=>array(-221,642,109,882),785=>array(-250,639,80,784),786=>array(-264,418,-34,563),787=>array(-313,595,-130,844),788=>array(-288,595,-130,844),789=>array(-102,616,102,800),790=>array(-474,-276,-233,-93),791=>array(-406,-276,-94,-93),792=>array(-388,-240,-188,-6),793=>array(-318,-240,-118,-6),794=>array(-216,658,73,929),795=>array(-132,361,83,570),796=>array(-331,-240,-193,-11),797=>array(-403,-240,-114,-59),798=>array(-389,-240,-100,-59),799=>array(-378,-240,-128,-6),800=>array(-296,-202,-7,-110),801=>array(-514,-216,-105,117),802=>array(-310,-216,13,117),803=>array(-412,-212,-253,-92),804=>array(-442,-212,-110,-92),805=>array(-366,-240,-136,-11),806=>array(-392,-236,-162,-91),807=>array(-478,-196,-241,0),808=>array(-427,-196,-216,0),809=>array(-363,-310,-228,-93),810=>array(-422,-237,-80,-54),811=>array(-477,-239,-75,-94),812=>array(-414,-240,-37,-57),813=>array(-458,-240,-82,-57),814=>array(-424,-239,-94,-94),815=>array(-491,-240,-161,-95),816=>array(-480,-234,-113,-94),817=>array(-440,-185,-114,-93),818=>array(-565,-236,-28,-143),819=>array(-568,-236,-4,-9),820=>array(-625,212,1,415),821=>array(-480,214,-84,309),822=>array(-847,214,-77,309),823=>array(-709,-46,4,594),824=>array(-893,-36,43,765),825=>array(-308,-240,-170,-11),826=>array(-422,-238,-80,-55),827=>array(-355,-241,-75,-6),828=>array(-501,-239,-100,-94),829=>array(-392,562,-110,819),830=>array(-292,595,-101,867),831=>array(-510,528,10,755),832=>array(-259,616,-19,800),833=>array(-160,616,152,800),834=>array(-257,638,110,778),835=>array(-313,595,-130,844),836=>array(-344,654,94,978),837=>array(-365,-208,-244,-45),838=>array(-418,639,-82,786),839=>array(-378,-226,-122,-35),840=>array(-398,-240,-102,-47),841=>array(-363,-240,-111,-21),842=>array(-434,616,-68,800),843=>array(-434,567,-66,850),844=>array(-438,573,-31,835),845=>array(-459,-230,-41,-30),846=>array(-371,-240,-141,-45),847=>array(-321,610,-152,888),849=>array(-321,610,-152,888),850=>array(-250,604,80,882),851=>array(-378,-240,-124,-9),855=>array(-348,610,-179,888),856=>array(0,654,159,774),858=>array(-445,-240,-58,-11),860=>array(-471,-237,419,-79),861=>array(-278,802,613,960),862=>array(-291,797,618,889),863=>array(-481,-185,427,-93),864=>array(-291,756,459,894),865=>array(-278,769,613,927),866=>array(-533,-230,376,-30),880=>array(21,0,623,729),881=>array(31,0,494,547),882=>array(88,0,1001,729),883=>array(88,0,815,729),884=>array(78,557,218,800),885=>array(54,-208,242,35),886=>array(21,0,816,729),887=>array(31,0,670,547),890=>array(132,-208,253,-45),891=>array(-7,-14,537,560),892=>array(37,-14,581,560),893=>array(-7,-14,537,560),894=>array(-35,-142,323,547),900=>array(216,616,528,800),901=>array(152,654,589,978),902=>array(-42,0,714,800),903=>array(84,253,297,442),904=>array(22,0,831,800),905=>array(28,0,986,800),906=>array(25,0,521,800),908=>array(28,-14,851,800),910=>array(20,0,1067,800),911=>array(-1,0,855,800),912=>array(50,-19,516,978),913=>array(-65,0,691,729),914=>array(21,0,699,729),915=>array(21,0,681,729),916=>array(-66,0,698,729),917=>array(21,0,670,729),918=>array(-26,0,740,729),919=>array(21,0,816,729),920=>array(40,-14,810,742),921=>array(21,0,351,729),922=>array(21,0,837,729),923=>array(-66,0,698,729),924=>array(21,0,974,729),925=>array(21,0,816,729),926=>array(27,0,619,729),927=>array(36,-14,814,742),928=>array(21,0,816,729),929=>array(21,0,719,729),931=>array(21,0,670,729),932=>array(48,0,748,729),933=>array(63,0,809,729),934=>array(43,0,806,729),935=>array(-51,0,812,729),936=>array(78,0,866,729),937=>array(-45,0,812,742),938=>array(21,0,450,927),939=>array(63,0,809,927),940=>array(38,-12,692,800),941=>array(27,-14,567,800),942=>array(50,-208,664,800),943=>array(42,-19,436,800),944=>array(54,-10,660,978),945=>array(38,-12,692,559),946=>array(-11,-208,660,773),947=>array(66,-208,740,547),948=>array(16,-14,634,768),949=>array(27,-14,520,560),950=>array(32,-208,627,760),951=>array(50,-208,664,560),952=>array(28,-11,659,768),953=>array(42,-19,313,547),954=>array(31,0,679,547),955=>array(-44,0,529,760),956=>array(-27,-209,670,547),957=>array(68,0,653,547),958=>array(26,-208,627,760),959=>array(36,-14,651,560),960=>array(73,-19,787,547),961=>array(9,-208,699,562),962=>array(55,-208,595,560),963=>array(37,-14,781,547),964=>array(52,-19,667,547),965=>array(54,-10,645,547),966=>array(76,-208,752,552),967=>array(-48,-208,693,547),968=>array(79,-208,797,547),969=>array(33,-13,834,547),970=>array(50,-19,407,774),971=>array(54,-10,645,774),972=>array(36,-14,651,800),973=>array(54,-10,645,800),974=>array(33,-13,834,800),975=>array(41,-208,860,729),976=>array(55,-11,601,768),977=>array(46,-11,612,768),978=>array(63,0,751,729),979=>array(22,0,989,800),980=>array(63,0,751,927),981=>array(60,-208,729,760),982=>array(33,-13,897,547),983=>array(38,-188,743,547),984=>array(68,-208,818,742),985=>array(62,-208,663,560),986=>array(70,-208,769,729),987=>array(63,-208,614,547),988=>array(21,0,670,729),989=>array(-146,-208,525,760),990=>array(21,2,682,729),991=>array(68,0,585,759),992=>array(102,-208,825,742),993=>array(-15,-180,500,559),994=>array(33,-213,1048,729),995=>array(81,-208,797,547),996=>array(37,-208,811,742),997=>array(34,-208,683,560),998=>array(21,-213,861,729),999=>array(-17,-14,736,575),1000=>array(-29,-208,721,745),1001=>array(-16,-208,626,560),1002=>array(-14,0,807,742),1003=>array(-7,0,674,560),1004=>array(26,-14,791,758),1005=>array(75,-14,739,758),1006=>array(23,-208,689,729),1007=>array(42,-208,614,726),1008=>array(19,-6,723,547),1009=>array(50,-216,690,560),1010=>array(37,-14,581,560),1011=>array(-128,-216,354,760),1012=>array(36,-14,814,742),1013=>array(67,-14,602,560),1014=>array(-26,-14,509,560),1015=>array(21,0,695,729),1016=>array(-10,-208,677,760),1017=>array(36,-14,724,742),1018=>array(21,0,974,729),1019=>array(0,-208,723,547),1020=>array(-31,-208,689,560),1021=>array(-13,-14,670,742),1022=>array(36,-14,724,742),1023=>array(-13,-14,670,742),1024=>array(21,0,670,927),1025=>array(21,0,670,927),1026=>array(67,-200,798,729),1027=>array(21,0,681,927),1028=>array(41,-14,733,742),1029=>array(15,-14,665,742),1030=>array(21,0,351,729),1031=>array(21,0,468,927),1032=>array(-166,-200,351,729),1033=>array(-25,0,1081,729),1034=>array(21,0,1039,729),1035=>array(48,0,778,729),1036=>array(21,0,857,927),1037=>array(21,0,816,927),1038=>array(77,0,812,927),1039=>array(36,-157,831,729),1040=>array(-65,0,691,729),1041=>array(21,0,714,729),1042=>array(21,0,699,729),1043=>array(21,0,681,729),1044=>array(-26,-157,813,729),1045=>array(21,0,670,729),1046=>array(-56,0,1249,729),1047=>array(-0,-14,668,742),1048=>array(21,0,816,729),1049=>array(21,0,816,927),1050=>array(21,0,857,729),1051=>array(-25,0,810,729),1052=>array(21,0,974,729),1053=>array(21,0,816,729),1054=>array(36,-14,814,742),1055=>array(21,0,816,729),1056=>array(21,0,719,729),1057=>array(36,-14,724,742),1058=>array(48,0,748,729),1059=>array(77,0,812,729),1060=>array(44,0,950,729),1061=>array(-51,0,812,729),1062=>array(36,-157,840,729),1063=>array(100,0,787,729),1064=>array(21,0,1214,729),1065=>array(36,-157,1238,729),1066=>array(92,0,869,729),1067=>array(21,0,1016,729),1068=>array(21,0,671,729),1069=>array(1,-14,693,742),1070=>array(21,-14,1129,742),1071=>array(-7,0,749,729),1072=>array(17,-14,611,560),1073=>array(24,-14,640,792),1074=>array(31,0,593,547),1075=>array(28,0,549,547),1076=>array(-10,-138,736,547),1077=>array(36,-14,640,560),1078=>array(-39,0,1015,547),1079=>array(-1,-14,535,560),1080=>array(31,0,670,547),1081=>array(31,0,670,765),1082=>array(31,0,698,547),1083=>array(2,0,702,547),1084=>array(28,0,784,547),1085=>array(28,0,658,547),1086=>array(36,-14,651,560),1087=>array(28,0,658,547),1088=>array(-10,-208,677,560),1089=>array(37,-14,581,560),1090=>array(34,0,626,547),1091=>array(0,-216,687,547),1092=>array(46,-208,945,760),1093=>array(-41,0,671,547),1094=>array(44,-138,682,547),1095=>array(80,0,626,547),1096=>array(31,0,1025,547),1097=>array(44,-138,1047,547),1098=>array(52,0,695,547),1099=>array(31,0,877,547),1100=>array(31,0,572,547),1101=>array(17,-14,557,560),1102=>array(31,-14,936,560),1103=>array(-22,0,613,547),1104=>array(36,-14,640,803),1105=>array(36,-14,640,774),1106=>array(52,-216,648,760),1107=>array(28,0,604,803),1108=>array(36,-14,576,560),1109=>array(10,-14,560,560),1110=>array(31,0,354,760),1111=>array(31,0,405,774),1112=>array(-128,-216,354,760),1113=>array(-9,0,926,547),1114=>array(31,0,896,547),1115=>array(31,0,622,760),1116=>array(31,0,698,803),1117=>array(31,0,670,803),1118=>array(0,-216,687,765),1119=>array(44,-138,673,547),1120=>array(33,-14,1048,729),1121=>array(33,-13,834,547),1122=>array(77,0,770,729),1123=>array(36,0,658,731),1124=>array(21,-14,1011,742),1125=>array(31,-14,810,560),1126=>array(-63,0,914,729),1127=>array(-28,0,754,547),1128=>array(21,0,1280,729),1129=>array(31,0,1044,547),1130=>array(-21,0,851,729),1131=>array(-13,0,683,547),1132=>array(21,0,1188,729),1133=>array(28,0,1003,547),1134=>array(-25,-208,640,938),1135=>array(-24,-193,525,756),1136=>array(74,0,1126,729),1137=>array(62,-208,1100,759),1138=>array(36,-14,814,742),1139=>array(36,-14,651,560),1140=>array(75,0,896,742),1141=>array(60,0,732,560),1142=>array(75,0,896,930),1143=>array(60,0,732,800),1144=>array(57,-216,1186,742),1145=>array(63,-216,1098,565),1146=>array(40,-14,1033,742),1147=>array(35,-14,823,560),1148=>array(37,-14,1348,928),1149=>array(31,-13,1129,828),1150=>array(33,-14,1048,910),1151=>array(33,-13,834,746),1152=>array(40,-208,732,742),1153=>array(33,-208,573,560),1154=>array(19,-33,530,488),1155=>array(-608,606,-79,822),1156=>array(-427,638,-12,784),1157=>array(-356,595,-213,785),1158=>array(-384,595,-213,785),1159=>array(-811,592,1,788),1160=>array(-1067,-179,388,928),1161=>array(-973,-280,323,1022),1162=>array(21,-208,890,927),1163=>array(28,-208,748,765),1164=>array(21,0,671,729),1165=>array(27,0,549,702),1166=>array(21,0,717,729),1167=>array(-10,-208,670,560),1168=>array(21,0,710,878),1169=>array(28,0,579,700),1170=>array(17,0,709,729),1171=>array(10,0,572,547),1172=>array(21,-200,708,729),1173=>array(28,-216,554,547),1174=>array(-41,-157,1264,729),1175=>array(-25,-138,1028,547),1176=>array(-0,-196,668,742),1177=>array(-1,-196,535,560),1178=>array(36,-157,873,729),1179=>array(44,-138,711,547),1180=>array(21,0,857,729),1181=>array(31,0,698,547),1182=>array(21,0,857,729),1183=>array(10,0,677,760),1184=>array(68,0,1055,729),1185=>array(52,0,846,547),1186=>array(36,-157,904,729),1187=>array(44,-138,765,547),1188=>array(21,0,1146,729),1189=>array(28,0,897,547),1190=>array(21,-200,1174,729),1191=>array(28,-216,902,547),1192=>array(40,-14,875,743),1193=>array(40,-14,798,560),1194=>array(36,-196,724,742),1195=>array(37,-196,581,560),1196=>array(63,-157,763,729),1197=>array(49,-138,642,547),1198=>array(63,0,809,729),1199=>array(66,-216,688,547),1200=>array(61,0,805,729),1201=>array(63,-216,708,547),1202=>array(-37,-157,827,729),1203=>array(-25,-138,687,547),1204=>array(63,-157,1060,729),1205=>array(49,-138,957,547),1206=>array(129,-157,876,729),1207=>array(103,-138,730,547),1208=>array(114,0,787,729),1209=>array(87,0,624,547),1210=>array(106,0,793,729),1211=>array(31,0,654,760),1212=>array(42,-14,984,742),1213=>array(30,-14,769,560),1214=>array(42,-184,984,742),1215=>array(30,-161,769,560),1216=>array(21,0,351,729),1217=>array(-56,0,1249,927),1218=>array(-39,0,1015,784),1219=>array(21,-200,840,729),1220=>array(31,-216,679,547),1221=>array(-46,-208,885,729),1222=>array(-38,-208,746,547),1223=>array(21,-200,816,729),1224=>array(28,-216,658,547),1225=>array(21,-208,889,729),1226=>array(28,-208,748,547),1227=>array(129,-157,803,729),1228=>array(103,-138,640,547),1229=>array(21,-208,1047,729),1230=>array(28,-208,874,547),1231=>array(31,0,354,760),1232=>array(-65,0,691,936),1233=>array(17,-14,611,772),1234=>array(-65,0,691,927),1235=>array(17,-14,611,774),1236=>array(-78,0,1072,729),1237=>array(17,-14,1008,560),1238=>array(21,0,670,927),1239=>array(36,-14,640,784),1240=>array(36,-14,819,742),1241=>array(42,-14,630,560),1242=>array(36,-14,819,927),1243=>array(42,-14,630,774),1244=>array(-56,0,1249,927),1245=>array(-39,0,1015,774),1246=>array(-0,-14,668,927),1247=>array(-1,-14,540,774),1248=>array(21,-33,743,729),1249=>array(-23,-215,608,547),1250=>array(21,0,816,914),1251=>array(31,0,670,763),1252=>array(21,0,816,927),1253=>array(31,0,670,774),1254=>array(36,-14,814,927),1255=>array(36,-14,651,774),1256=>array(36,-14,814,742),1257=>array(36,-14,651,560),1258=>array(36,-14,814,927),1259=>array(36,-14,651,774),1260=>array(1,-14,693,927),1261=>array(17,-14,557,774),1262=>array(77,0,812,914),1263=>array(0,-216,687,763),1264=>array(77,0,812,927),1265=>array(0,-216,687,774),1266=>array(77,0,812,927),1267=>array(0,-216,687,800),1268=>array(100,0,787,927),1269=>array(80,0,626,774),1270=>array(36,-157,696,729),1271=>array(44,-138,565,547),1272=>array(21,0,1016,927),1273=>array(31,0,877,774),1274=>array(38,-216,730,729),1275=>array(31,-217,593,547),1276=>array(-32,-200,832,729),1277=>array(-17,-216,694,547),1278=>array(-52,0,812,729),1279=>array(-38,0,673,547),1280=>array(37,0,741,729),1281=>array(17,0,575,547),1282=>array(35,-14,1116,729),1283=>array(16,-14,868,547),1284=>array(138,-14,1063,742),1285=>array(104,-14,854,560),1286=>array(138,-208,760,742),1287=>array(104,-208,634,560),1288=>array(-48,-14,1185,729),1289=>array(-38,-14,950,547),1290=>array(22,-14,1222,729),1291=>array(28,-14,957,547),1292=>array(41,-14,783,742),1293=>array(35,-14,573,546),1294=>array(47,-14,881,729),1295=>array(34,-14,727,547),1296=>array(37,-14,652,742),1297=>array(27,-14,520,560),1298=>array(-5,-200,829,729),1299=>array(23,-216,723,547),1300=>array(-25,0,1327,729),1301=>array(2,0,1096,547),1302=>array(21,0,1106,729),1303=>array(-10,-208,1008,560),1304=>array(-7,0,1068,729),1305=>array(-22,-14,965,560),1306=>array(36,-146,814,742),1307=>array(36,-208,682,560),1308=>array(107,0,1143,729),1309=>array(87,0,927,547),1310=>array(21,0,857,729),1311=>array(31,0,698,547),1312=>array(-25,-200,1167,729),1313=>array(2,-216,946,547),1314=>array(21,-200,1173,729),1315=>array(28,-216,902,547),1316=>array(36,-157,905,729),1317=>array(44,-138,764,547),1329=>array(75,-38,849,729),1330=>array(21,0,741,743),1331=>array(50,0,805,743),1332=>array(37,0,809,743),1333=>array(78,-14,763,729),1334=>array(18,0,753,743),1335=>array(21,0,730,729),1336=>array(21,0,741,743),1337=>array(21,-13,1020,742),1338=>array(11,-14,844,729),1339=>array(21,0,705,729),1340=>array(21,0,566,729),1341=>array(21,-14,1021,729),1342=>array(93,-12,864,741),1343=>array(97,0,746,729),1344=>array(-16,-46,694,729),1345=>array(33,-48,753,743),1346=>array(32,0,748,743),1347=>array(-22,0,733,735),1348=>array(78,-14,938,729),1349=>array(42,-14,709,743),1350=>array(46,-14,763,729),1351=>array(49,-14,762,729),1352=>array(21,0,734,743),1353=>array(51,-48,724,743),1354=>array(32,0,890,743),1355=>array(7,0,742,743),1356=>array(21,0,863,743),1357=>array(68,-14,791,729),1358=>array(35,0,748,729),1359=>array(37,-14,703,743),1360=>array(21,0,741,743),1361=>array(42,-14,709,743),1362=>array(21,0,666,729),1363=>array(24,0,901,729),1364=>array(-49,0,741,743),1365=>array(36,-14,813,742),1366=>array(30,-14,909,729),1369=>array(159,481,325,760),1370=>array(73,418,349,729),1371=>array(120,616,500,800),1372=>array(115,595,590,893),1373=>array(-1,616,315,849),1374=>array(117,586,652,878),1375=>array(164,618,622,893),1377=>array(74,-13,1018,547),1378=>array(-10,-208,654,560),1379=>array(43,-208,748,559),1380=>array(31,-208,752,560),1381=>array(59,-14,683,760),1382=>array(38,-208,708,559),1383=>array(31,0,644,760),1384=>array(-10,-208,653,560),1385=>array(-10,-208,843,560),1386=>array(43,-14,830,760),1387=>array(-10,-208,646,760),1388=>array(-10,-208,385,547),1389=>array(-10,-208,1063,760),1390=>array(40,-14,719,760),1391=>array(67,-208,683,760),1392=>array(31,0,646,760),1393=>array(10,-13,593,760),1394=>array(31,-208,711,560),1395=>array(52,-13,729,768),1396=>array(67,-13,871,760),1397=>array(-128,-216,313,547),1398=>array(2,-13,683,760),1399=>array(-60,-208,520,560),1400=>array(31,0,646,560),1401=>array(-67,-208,366,547),1402=>array(59,-208,1012,547),1403=>array(-26,-208,605,560),1404=>array(31,0,665,560),1405=>array(67,-13,683,547),1406=>array(67,-208,724,760),1407=>array(63,-13,975,560),1408=>array(-10,-208,646,560),1409=>array(19,-216,681,559),1410=>array(31,0,498,547),1411=>array(63,-208,975,760),1412=>array(-151,-208,671,560),1413=>array(37,-14,652,560),1414=>array(31,-190,865,760),1415=>array(67,-14,868,760),1417=>array(41,0,323,547),1418=>array(96,179,430,359),1456=>array(275,-229,416,-10),1457=>array(149,-229,523,-10),1458=>array(140,-229,513,-10),1459=>array(127,-229,513,-10),1460=>array(287,-171,404,-73),1461=>array(213,-171,477,-73),1462=>array(237,-229,477,-10),1463=>array(89,-171,451,0),1464=>array(109,-217,446,0),1465=>array(-34,625,83,723),1466=>array(-34,625,83,723),1467=>array(190,-239,525,-5),1468=>array(293,225,411,322),1469=>array(277,-217,413,-22),1470=>array(40,413,375,555),1471=>array(132,547,469,710),1472=>array(26,-98,345,645),1473=>array(816,613,934,710),1474=>array(204,613,321,710),1475=>array(45,0,326,547),1478=>array(25,0,490,547),1479=>array(188,-229,525,-10),1488=>array(104,0,730,547),1489=>array(43,0,590,547),1490=>array(44,-9,428,547),1491=>array(126,0,651,547),1492=>array(100,0,661,547),1493=>array(91,0,359,547),1494=>array(94,0,464,547),1495=>array(91,0,654,547),1496=>array(142,-13,676,553),1497=>array(98,164,334,547),1498=>array(126,-240,549,547),1499=>array(43,0,570,547),1500=>array(126,0,633,711),1501=>array(91,0,663,547),1502=>array(84,0,690,554),1503=>array(44,-240,359,547),1504=>array(43,0,430,547),1505=>array(144,-13,678,547),1506=>array(35,-101,682,547),1507=>array(158,-240,642,547),1508=>array(91,0,656,547),1509=>array(118,-240,649,548),1510=>array(54,0,670,547),1511=>array(51,-240,767,546),1512=>array(126,0,575,547),1513=>array(89,0,856,547),1514=>array(11,-4,650,547),1520=>array(91,0,680,547),1521=>array(98,0,680,547),1522=>array(98,164,655,547),1523=>array(66,361,378,547),1524=>array(66,361,644,547),3647=>array(2,-147,642,760),3713=>array(14,-14,752,560),3714=>array(12,-14,727,560),3716=>array(13,-14,699,558),3719=>array(2,-241,548,593),3720=>array(44,0,711,561),3722=>array(45,-269,747,584),3725=>array(14,-24,767,610),3732=>array(18,-14,671,593),3733=>array(17,-19,670,603),3734=>array(35,-240,729,593),3735=>array(-1,-14,784,560),3737=>array(-9,-33,735,593),3738=>array(13,-15,716,613),3739=>array(-1,-15,739,760),3740=>array(29,-12,952,665),3741=>array(24,-14,837,760),3742=>array(50,-14,825,604),3743=>array(35,-14,848,760),3745=>array(-7,-14,826,547),3746=>array(-0,-23,789,760),3747=>array(18,-10,768,615),3749=>array(9,-33,717,593),3751=>array(5,-33,668,593),3754=>array(8,-21,860,724),3755=>array(32,-21,961,620),3757=>array(27,-20,689,606),3758=>array(15,-14,880,698),3759=>array(79,-259,932,648),3760=>array(5,27,682,606),3761=>array(-649,610,-29,896),3762=>array(51,0,578,593),3763=>array(-479,0,578,875),3764=>array(-656,622,-63,950),3765=>array(-656,633,-1,962),3766=>array(-656,622,-63,950),3767=>array(-656,633,-1,962),3768=>array(-413,-385,-165,-55),3769=>array(-479,-316,-150,-28),3771=>array(-657,610,-33,896),3772=>array(-689,-311,17,-48),3773=>array(-25,-220,758,776),3776=>array(53,-13,469,561),3777=>array(53,-13,843,561),3778=>array(25,-14,486,936),3779=>array(67,-14,640,879),3780=>array(47,-35,552,809),3782=>array(33,-240,731,582),3784=>array(-431,659,-279,844),3785=>array(-636,622,-19,918),3786=>array(-672,621,37,965),3787=>array(-530,612,-178,917),3788=>array(-511,603,194,866),3789=>array(-479,668,-229,875),3792=>array(66,-29,723,563),3793=>array(55,-139,731,586),3794=>array(1,-80,612,711),3795=>array(-49,-14,953,981),3796=>array(31,-156,647,711),3797=>array(31,-156,647,711),3798=>array(5,-14,962,950),3799=>array(36,-240,748,560),3800=>array(86,-269,766,582),3801=>array(38,-14,875,564),3804=>array(32,-21,1356,620),3805=>array(32,-21,1361,620),4256=>array(111,-14,929,819),4257=>array(139,-0,736,819),4258=>array(150,-138,672,828),4259=>array(97,-15,902,819),4260=>array(133,0,665,828),4261=>array(136,0,832,828),4262=>array(144,-14,752,819),4263=>array(117,-14,993,828),4264=>array(127,0,562,862),4265=>array(108,0,653,819),4266=>array(95,-14,834,820),4267=>array(89,-14,942,819),4268=>array(24,0,689,819),4269=>array(106,-157,886,829),4270=>array(141,-14,886,822),4271=>array(141,0,741,823),4272=>array(76,-15,969,820),4273=>array(83,-15,626,820),4274=>array(23,-0,685,828),4275=>array(106,-170,886,828),4276=>array(127,0,918,825),4277=>array(101,0,794,820),4278=>array(24,0,685,828),4279=>array(127,0,731,820),4280=>array(66,-14,736,820),4281=>array(24,0,632,819),4282=>array(113,-14,880,827),4283=>array(89,-15,926,820),4284=>array(23,-0,698,819),4285=>array(75,-15,648,828),4286=>array(23,-0,741,819),4287=>array(27,0,880,819),4288=>array(110,-14,901,820),4289=>array(24,0,647,820),4290=>array(78,-15,692,828),4291=>array(95,0,707,820),4292=>array(131,0,715,820),4293=>array(43,-14,833,828),4304=>array(76,-14,531,599),4305=>array(86,-14,552,823),4306=>array(31,-232,565,561),4307=>array(41,-225,826,557),4308=>array(26,-232,551,557),4309=>array(25,-232,562,557),4310=>array(75,-14,537,828),4311=>array(84,-14,821,557),4312=>array(75,0,556,557),4313=>array(24,-232,554,542),4314=>array(96,-225,1077,562),4315=>array(87,-14,622,828),4316=>array(89,-14,629,819),4317=>array(92,-0,808,557),4318=>array(78,-14,589,818),4319=>array(25,-232,604,560),4320=>array(91,0,816,830),4321=>array(92,-14,560,818),4322=>array(62,-232,664,670),4323=>array(47,-232,591,604),4324=>array(94,-232,844,558),4325=>array(25,-232,650,818),4326=>array(88,-225,815,557),4327=>array(25,-232,602,549),4328=>array(63,-14,609,828),4329=>array(39,0,561,828),4330=>array(65,-232,612,548),4331=>array(86,-14,659,818),4332=>array(91,-15,685,828),4333=>array(35,-232,616,818),4334=>array(95,-14,553,818),4335=>array(-7,-232,542,580),4336=>array(73,-15,602,823),4337=>array(79,-14,609,823),4338=>array(17,-146,543,557),4339=>array(25,-232,604,558),4340=>array(26,-232,618,828),4341=>array(65,-14,656,828),4342=>array(87,-232,842,557),4343=>array(29,-232,551,557),4344=>array(25,-232,548,549),4345=>array(93,-232,627,561),4346=>array(68,-111,558,557),4347=>array(29,0,446,500),4348=>array(124,400,424,828),5121=>array(76,0,840,729),5122=>array(-66,0,698,1050),5123=>array(-66,0,698,729),5124=>array(-66,0,698,928),5125=>array(21,0,843,729),5126=>array(21,0,843,928),5127=>array(21,0,843,927),5129=>array(21,0,843,729),5130=>array(62,0,884,729),5131=>array(62,0,884,928),5132=>array(80,0,1084,729),5133=>array(76,0,937,729),5134=>array(80,0,942,729),5135=>array(-66,0,937,729),5136=>array(80,0,942,928),5137=>array(-66,0,937,928),5138=>array(80,0,1087,729),5139=>array(21,0,1067,729),5140=>array(80,0,1087,928),5141=>array(21,0,1067,928),5142=>array(21,0,843,928),5143=>array(80,0,1128,729),5144=>array(62,0,1070,729),5145=>array(80,0,1128,928),5146=>array(62,0,1070,928),5147=>array(62,0,884,928),5149=>array(80,607,237,728),5150=>array(20,326,434,734),5151=>array(8,338,402,722),5152=>array(54,338,356,722),5153=>array(53,392,370,711),5154=>array(29,352,345,670),5155=>array(33,392,341,670),5156=>array(57,392,341,670),5157=>array(-2,327,552,749),5158=>array(21,326,454,734),5159=>array(80,304,237,424),5160=>array(53,494,346,569),5161=>array(53,392,346,670),5162=>array(75,392,368,693),5163=>array(76,0,1145,729),5164=>array(-66,0,917,729),5165=>array(21,0,1147,729),5166=>array(62,0,1229,729),5167=>array(76,0,840,729),5168=>array(-66,0,698,1050),5169=>array(-66,0,698,729),5170=>array(-66,0,698,928),5171=>array(2,0,824,729),5172=>array(2,0,824,928),5173=>array(2,0,824,927),5175=>array(2,0,824,729),5176=>array(51,0,873,729),5177=>array(51,0,873,928),5178=>array(80,0,1084,729),5179=>array(76,0,937,729),5180=>array(80,0,942,729),5181=>array(-66,0,937,729),5182=>array(80,0,942,928),5183=>array(-66,0,937,928),5184=>array(80,0,1068,729),5185=>array(2,0,1067,729),5186=>array(80,0,1068,928),5187=>array(2,0,1067,928),5188=>array(80,0,1117,729),5189=>array(51,0,1070,729),5190=>array(80,0,1117,928),5191=>array(51,0,1070,928),5192=>array(51,0,873,927),5193=>array(48,326,559,727),5194=>array(20,326,212,734),5196=>array(79,-14,792,729),5197=>array(20,0,733,1050),5198=>array(20,0,733,743),5199=>array(20,0,733,928),5200=>array(2,0,763,729),5201=>array(2,0,763,928),5202=>array(2,0,763,927),5204=>array(2,0,763,729),5205=>array(52,0,813,729),5206=>array(52,0,813,928),5207=>array(80,-14,1037,729),5208=>array(79,-14,976,729),5209=>array(80,0,977,743),5210=>array(20,0,976,743),5211=>array(80,0,977,928),5212=>array(20,0,976,928),5213=>array(80,0,1007,729),5214=>array(2,0,982,729),5215=>array(80,0,1007,928),5216=>array(2,0,982,928),5217=>array(80,0,1057,729),5218=>array(52,0,979,729),5219=>array(80,0,1057,928),5220=>array(52,0,979,928),5221=>array(52,0,1057,729),5222=>array(59,326,466,733),5223=>array(79,-14,989,734),5224=>array(20,0,989,743),5225=>array(2,0,1007,734),5226=>array(52,0,1000,734),5227=>array(64,0,675,743),5228=>array(20,0,726,1050),5229=>array(20,0,726,743),5230=>array(20,0,726,928),5231=>array(18,-14,724,729),5232=>array(18,-14,731,928),5233=>array(18,-14,818,927),5234=>array(68,-14,679,729),5235=>array(68,-14,679,928),5236=>array(80,0,960,743),5237=>array(64,0,902,743),5238=>array(80,0,962,743),5239=>array(20,0,902,743),5240=>array(80,0,962,928),5241=>array(20,0,902,928),5242=>array(80,-14,1009,729),5243=>array(18,-14,902,729),5244=>array(80,-14,1017,928),5245=>array(18,-14,902,928),5246=>array(80,-14,916,729),5247=>array(68,-14,902,729),5248=>array(80,-14,916,928),5249=>array(68,-14,902,928),5250=>array(52,-14,916,729),5251=>array(47,319,432,734),5252=>array(43,319,485,734),5253=>array(64,0,921,743),5254=>array(20,0,921,743),5255=>array(18,-14,921,734),5256=>array(68,-14,921,734),5257=>array(64,0,675,743),5258=>array(20,0,726,1050),5259=>array(20,0,726,743),5260=>array(20,0,726,928),5261=>array(18,-14,724,729),5262=>array(18,-14,737,928),5263=>array(18,-14,824,927),5264=>array(68,-14,679,729),5265=>array(68,-14,679,928),5266=>array(80,0,960,743),5267=>array(64,0,902,743),5268=>array(80,0,1011,743),5269=>array(20,0,902,743),5270=>array(80,0,1011,928),5271=>array(20,0,902,928),5272=>array(80,-14,1009,729),5273=>array(18,-14,902,729),5274=>array(80,-14,1023,928),5275=>array(18,-14,902,928),5276=>array(80,-14,964,729),5277=>array(68,-14,902,729),5278=>array(80,-14,964,928),5279=>array(68,-14,902,928),5280=>array(52,-14,964,729),5281=>array(47,319,432,734),5282=>array(46,319,485,734),5283=>array(71,0,605,729),5284=>array(21,0,670,1050),5285=>array(21,0,670,729),5286=>array(21,0,670,928),5287=>array(-43,0,605,729),5288=>array(-43,0,621,928),5289=>array(-43,0,708,927),5290=>array(21,0,556,729),5291=>array(21,0,556,928),5292=>array(80,0,860,729),5293=>array(71,0,782,729),5294=>array(80,0,907,729),5295=>array(21,0,801,729),5296=>array(80,0,907,928),5297=>array(21,0,801,928),5298=>array(80,0,860,729),5299=>array(-43,0,801,729),5300=>array(80,0,875,928),5301=>array(-43,0,801,928),5302=>array(80,0,792,729),5303=>array(21,0,801,729),5304=>array(80,0,792,928),5305=>array(21,0,801,928),5306=>array(52,0,792,729),5307=>array(21,326,355,734),5308=>array(55,326,532,733),5309=>array(20,326,420,734),5312=>array(103,-14,946,468),5313=>array(41,-14,951,781),5314=>array(41,-14,951,468),5315=>array(41,-14,951,667),5316=>array(-20,0,891,482),5317=>array(-20,0,891,667),5318=>array(-20,0,891,667),5319=>array(42,0,885,482),5320=>array(42,0,885,667),5321=>array(80,-14,1196,468),5322=>array(103,-14,1175,468),5323=>array(80,0,1153,482),5324=>array(42,0,1156,482),5325=>array(80,0,1153,667),5326=>array(42,0,1156,667),5327=>array(42,0,885,667),5328=>array(61,477,593,742),5329=>array(43,319,481,734),5330=>array(34,477,607,742),5331=>array(102,0,945,468),5332=>array(39,0,949,781),5333=>array(39,0,949,468),5334=>array(39,0,949,667),5335=>array(-18,0,892,468),5336=>array(-18,0,892,667),5337=>array(-18,0,892,667),5338=>array(43,0,886,468),5339=>array(43,0,886,667),5340=>array(80,0,1188,468),5341=>array(102,0,1175,468),5342=>array(80,0,1245,468),5343=>array(39,0,1156,468),5344=>array(80,0,1245,667),5345=>array(39,0,1156,667),5346=>array(80,0,1189,468),5347=>array(-18,0,1142,468),5348=>array(80,0,1189,667),5349=>array(-18,0,1142,667),5350=>array(80,0,1181,468),5351=>array(43,0,1156,468),5352=>array(80,0,1181,667),5353=>array(43,0,1156,667),5354=>array(61,477,593,734),5356=>array(26,0,874,729),5357=>array(92,0,643,729),5358=>array(21,0,841,1050),5359=>array(21,0,760,729),5360=>array(21,0,773,928),5361=>array(-30,0,709,729),5362=>array(-30,0,717,928),5363=>array(-30,0,804,927),5364=>array(87,0,638,729),5365=>array(87,0,638,928),5366=>array(80,0,911,729),5367=>array(92,0,886,729),5368=>array(80,0,997,729),5369=>array(21,0,917,729),5370=>array(80,0,1010,928),5371=>array(21,0,917,928),5372=>array(80,0,977,729),5373=>array(-30,0,886,729),5374=>array(80,0,985,928),5375=>array(-30,0,886,928),5376=>array(80,0,875,729),5377=>array(87,0,917,729),5378=>array(80,0,875,928),5379=>array(87,0,917,928),5380=>array(52,0,875,729),5381=>array(57,326,406,734),5382=>array(28,319,413,742),5383=>array(20,326,477,734),5392=>array(65,-14,858,743),5393=>array(7,-14,917,743),5394=>array(7,-14,917,928),5395=>array(33,-14,1103,482),5396=>array(33,-14,1103,667),5397=>array(36,-14,1100,482),5398=>array(36,-14,1100,667),5399=>array(80,-14,1144,743),5400=>array(65,-14,1129,743),5401=>array(80,-14,1202,743),5402=>array(7,-14,1129,743),5403=>array(80,-14,1202,928),5404=>array(7,-14,1129,928),5405=>array(80,-14,1398,482),5406=>array(33,-14,1348,482),5407=>array(80,-14,1398,667),5408=>array(33,-14,1348,667),5409=>array(80,-14,1395,482),5410=>array(36,-14,1348,482),5411=>array(80,-14,1395,667),5412=>array(36,-14,1348,667),5413=>array(58,469,693,747),5414=>array(63,0,689,729),5415=>array(21,0,697,1050),5416=>array(21,0,697,729),5417=>array(21,0,697,928),5418=>array(79,0,755,729),5419=>array(79,0,772,928),5420=>array(79,0,859,927),5421=>array(87,0,713,729),5422=>array(87,0,713,928),5423=>array(80,0,916,729),5424=>array(63,0,931,729),5425=>array(80,0,934,729),5426=>array(21,0,923,729),5427=>array(80,0,934,928),5428=>array(21,0,923,928),5429=>array(80,0,982,729),5430=>array(79,0,931,729),5431=>array(80,0,1000,928),5432=>array(79,0,931,928),5433=>array(80,0,950,729),5434=>array(87,0,923,729),5435=>array(80,0,950,928),5436=>array(87,0,923,928),5437=>array(52,0,950,928),5438=>array(57,326,450,734),5440=>array(53,392,346,670),5441=>array(20,326,487,734),5442=>array(91,-14,996,468),5443=>array(103,-14,988,468),5444=>array(-20,0,885,482),5445=>array(45,0,930,781),5446=>array(45,0,930,482),5447=>array(45,0,930,667),5448=>array(21,0,716,729),5449=>array(21,0,716,928),5450=>array(21,0,667,729),5451=>array(65,0,712,729),5452=>array(65,0,712,928),5453=>array(17,0,712,729),5454=>array(80,0,982,928),5455=>array(65,0,887,928),5456=>array(74,326,478,727),5458=>array(2,0,849,729),5459=>array(99,0,838,743),5460=>array(2,-14,700,1050),5461=>array(2,-14,700,729),5462=>array(2,-14,700,928),5463=>array(51,0,873,663),5464=>array(51,0,873,928),5465=>array(69,0,896,663),5466=>array(69,0,896,928),5467=>array(80,0,1140,928),5468=>array(69,0,1070,928),5469=>array(52,311,568,675),5470=>array(68,-14,791,743),5471=>array(68,-14,772,743),5472=>array(40,-14,744,743),5473=>array(21,-14,744,743),5474=>array(40,-14,744,928),5475=>array(21,-14,744,928),5476=>array(2,0,769,729),5477=>array(2,0,769,928),5478=>array(47,0,811,729),5479=>array(47,0,811,928),5480=>array(80,0,1055,928),5481=>array(47,0,979,928),5482=>array(55,326,540,733),5492=>array(58,0,871,743),5493=>array(62,0,966,743),5494=>array(62,0,966,928),5495=>array(11,-14,915,729),5496=>array(11,-14,915,928),5497=>array(106,-14,919,729),5498=>array(106,-14,919,928),5499=>array(69,319,551,734),5500=>array(21,0,816,729),5501=>array(20,326,487,734),5502=>array(74,0,1220,1050),5503=>array(74,0,1220,743),5504=>array(74,0,1220,928),5505=>array(74,-14,1218,729),5506=>array(74,-14,1226,928),5507=>array(74,-14,1173,729),5508=>array(74,-14,1173,928),5509=>array(74,319,926,734),5514=>array(64,0,871,743),5515=>array(62,0,966,743),5516=>array(11,-14,916,729),5517=>array(106,-14,913,729),5518=>array(77,0,1573,1050),5519=>array(77,0,1573,743),5520=>array(77,0,1573,928),5521=>array(77,-14,1275,741),5522=>array(77,-14,1289,928),5523=>array(77,-14,1526,741),5524=>array(77,-14,1526,928),5525=>array(77,335,795,741),5526=>array(77,335,1220,741),5536=>array(16,0,939,709),5537=>array(16,0,939,709),5538=>array(-8,-242,916,468),5539=>array(-8,-242,916,667),5540=>array(66,-242,910,468),5541=>array(66,-242,910,667),5542=>array(74,344,606,734),5543=>array(62,0,739,729),5544=>array(-49,0,697,729),5545=>array(-49,0,697,928),5546=>array(79,0,825,729),5547=>array(79,0,825,928),5548=>array(37,0,714,729),5549=>array(37,0,714,928),5550=>array(36,326,450,734),5551=>array(22,-14,686,729),5598=>array(21,0,782,729),5601=>array(48,0,809,729),5702=>array(20,326,473,734),5703=>array(20,240,473,820),5742=>array(-20,0,427,306),5743=>array(74,0,1169,743),5744=>array(77,0,1522,743),5745=>array(77,0,1999,743),5746=>array(77,0,1999,928),5747=>array(77,-14,1701,741),5748=>array(77,-14,1672,928),5749=>array(77,-14,1952,741),5750=>array(77,-14,1952,928),7424=>array(-38,0,584,547),7425=>array(-53,0,800,547),7426=>array(42,-14,1021,560),7427=>array(-9,0,565,547),7428=>array(37,-14,581,560),7429=>array(31,-1,614,547),7430=>array(11,-1,611,547),7431=>array(39,0,526,547),7432=>array(27,-14,516,560),7433=>array(10,-213,333,547),7434=>array(-4,-14,471,547),7435=>array(31,0,716,547),7436=>array(-26,0,473,547),7437=>array(28,0,784,547),7438=>array(31,0,670,547),7439=>array(36,-14,651,560),7440=>array(-7,-14,537,560),7441=>array(42,-27,617,573),7442=>array(20,31,603,515),7443=>array(44,-28,619,579),7444=>array(42,-14,1046,560),7446=>array(15,273,616,560),7447=>array(72,-14,673,273),7448=>array(-2,0,533,547),7449=>array(-32,0,613,547),7450=>array(71,0,613,547),7451=>array(34,0,626,547),7452=>array(75,-14,662,547),7453=>array(32,10,685,560),7454=>array(39,11,896,561),7455=>array(-59,-238,715,560),7456=>array(63,0,678,547),7457=>array(87,0,927,547),7458=>array(-9,0,586,547),7459=>array(19,-14,588,547),7462=>array(31,0,552,547),7463=>array(-38,0,584,547),7464=>array(31,0,660,547),7465=>array(-2,0,533,547),7466=>array(98,0,751,547),7467=>array(2,0,702,547),7468=>array(-37,326,445,734),7469=>array(-40,326,670,734),7470=>array(18,326,436,734),7472=>array(18,326,490,734),7473=>array(18,326,417,734),7474=>array(18,326,424,734),7475=>array(31,318,489,742),7476=>array(18,326,509,734),7477=>array(18,326,216,734),7478=>array(-86,214,227,734),7479=>array(18,326,524,734),7480=>array(18,326,360,734),7481=>array(18,326,608,734),7482=>array(18,326,509,734),7483=>array(18,326,509,734),7484=>array(31,318,504,742),7485=>array(21,318,480,742),7486=>array(18,326,450,734),7487=>array(18,326,433,734),7488=>array(27,326,466,734),7489=>array(50,318,494,734),7490=>array(58,326,715,734),7491=>array(37,318,411,640),7492=>array(48,318,415,640),7493=>array(53,318,457,640),7494=>array(53,318,669,640),7495=>array(20,318,427,751),7496=>array(48,318,481,751),7497=>array(49,318,429,640),7498=>array(53,318,423,640),7499=>array(39,318,347,640),7500=>array(37,318,345,640),7501=>array(38,205,455,639),7502=>array(7,207,210,632),7503=>array(20,326,451,751),7504=>array(21,326,621,640),7505=>array(32,205,424,640),7506=>array(49,318,436,640),7507=>array(22,318,357,640),7508=>array(108,479,487,640),7509=>array(108,318,487,479),7510=>array(-6,209,427,640),7511=>array(72,326,365,719),7512=>array(42,318,433,632),7513=>array(55,332,466,640),7514=>array(47,318,642,632),7515=>array(83,326,471,632),7517=>array(-0,209,414,759),7518=>array(39,209,461,632),7519=>array(16,318,395,756),7520=>array(52,209,468,635),7521=>array(-25,209,432,632),7522=>array(12,0,205,425),7523=>array(23,0,344,313),7524=>array(42,-8,433,306),7525=>array(83,0,471,306),7526=>array(-0,-117,414,433),7527=>array(39,-117,461,306),7528=>array(-0,-117,427,314),7529=>array(52,-117,468,309),7530=>array(-25,-117,432,306),7543=>array(11,-216,673,559),7544=>array(18,326,509,734),7547=>array(31,0,515,547),7549=>array(-10,-208,753,560),7557=>array(84,-216,458,760),7579=>array(23,318,423,640),7580=>array(53,318,385,640),7581=>array(56,288,388,640),7582=>array(42,318,432,751),7583=>array(25,318,337,640),7584=>array(58,326,362,751),7585=>array(12,205,288,632),7586=>array(57,205,464,632),7587=>array(58,207,441,632),7588=>array(35,326,283,751),7589=>array(48,326,208,632),7590=>array(23,326,321,632),7591=>array(23,326,321,632),7592=>array(17,205,376,751),7593=>array(23,205,229,751),7594=>array(23,205,258,751),7595=>array(23,326,300,632),7596=>array(35,205,625,640),7597=>array(58,209,648,632),7598=>array(11,205,523,640),7599=>array(35,205,476,640),7600=>array(23,326,422,632),7601=>array(53,318,432,640),7602=>array(53,209,485,751),7603=>array(41,205,382,640),7604=>array(0,205,393,751),7605=>array(73,205,365,719),7606=>array(47,318,532,632),7607=>array(54,298,471,632),7608=>array(47,318,413,632),7609=>array(48,326,395,632),7610=>array(23,326,416,632),7611=>array(23,326,391,632),7612=>array(35,205,439,632),7613=>array(27,288,403,632),7614=>array(16,206,404,632),7615=>array(53,320,370,756),7620=>array(-483,616,-19,800),7621=>array(-451,616,-35,800),7622=>array(-467,616,-51,800),7623=>array(-483,616,-19,800),7624=>array(-495,616,-7,800),7625=>array(-531,616,29,800),7680=>array(-65,-240,691,729),7681=>array(17,-240,611,560),7682=>array(21,0,699,927),7683=>array(31,-14,677,941),7684=>array(21,-212,699,729),7685=>array(31,-212,677,760),7686=>array(21,-185,699,729),7687=>array(31,-185,677,760),7688=>array(36,-196,724,927),7689=>array(37,-196,581,800),7690=>array(21,0,786,927),7691=>array(36,-14,757,941),7692=>array(21,-212,786,729),7693=>array(36,-212,724,760),7694=>array(21,-185,786,729),7695=>array(36,-185,724,760),7696=>array(21,-194,786,729),7697=>array(34,-196,724,760),7698=>array(21,-240,786,729),7699=>array(36,-240,724,760),7700=>array(21,0,670,1057),7701=>array(36,-14,640,898),7702=>array(21,0,670,1057),7703=>array(36,-14,640,900),7704=>array(44,-203,693,729),7705=>array(36,-203,640,560),7706=>array(21,-221,670,729),7707=>array(36,-221,640,560),7708=>array(21,-196,670,927),7709=>array(36,-196,640,783),7710=>array(21,0,670,928),7711=>array(50,0,540,941),7712=>array(36,-14,778,899),7713=>array(20,-216,682,760),7714=>array(21,0,816,928),7715=>array(31,0,654,941),7716=>array(21,-212,816,729),7717=>array(31,-212,654,760),7718=>array(21,0,816,927),7719=>array(31,0,654,927),7720=>array(-61,-196,816,729),7721=>array(-43,-196,654,760),7722=>array(21,-239,816,729),7723=>array(31,-239,654,760),7724=>array(-108,-221,351,729),7725=>array(-108,-221,354,760),7726=>array(21,0,511,1057),7727=>array(31,0,477,903),7728=>array(21,0,837,927),7729=>array(31,0,716,982),7730=>array(21,-212,837,729),7731=>array(31,-212,716,760),7732=>array(21,-185,837,729),7733=>array(31,-185,716,760),7734=>array(21,-212,566,729),7735=>array(10,-212,354,760),7736=>array(21,-212,566,942),7737=>array(10,-212,450,914),7738=>array(21,-185,566,729),7739=>array(-68,-185,354,760),7740=>array(21,-240,566,729),7741=>array(-113,-240,354,760),7742=>array(21,0,974,927),7743=>array(31,0,984,800),7744=>array(21,0,974,928),7745=>array(31,0,984,759),7746=>array(21,-212,974,729),7747=>array(31,-212,984,560),7748=>array(21,0,816,927),7749=>array(31,0,654,759),7750=>array(21,-212,816,729),7751=>array(31,-212,654,560),7752=>array(21,-185,816,729),7753=>array(31,-185,654,560),7754=>array(21,-240,816,729),7755=>array(31,-240,654,560),7756=>array(36,-14,814,1057),7757=>array(36,-14,651,917),7758=>array(36,-14,814,1061),7759=>array(36,-14,651,900),7760=>array(36,-14,814,1057),7761=>array(36,-14,651,898),7762=>array(36,-14,814,1057),7763=>array(36,-14,651,900),7764=>array(21,0,719,927),7765=>array(-10,-208,677,800),7766=>array(21,0,719,928),7767=>array(-10,-208,677,759),7768=>array(21,0,685,928),7769=>array(31,0,545,759),7770=>array(21,-212,685,729),7771=>array(10,-212,545,560),7772=>array(21,-212,685,914),7773=>array(10,-212,545,759),7774=>array(21,-185,685,729),7775=>array(-69,-185,545,560),7776=>array(15,-14,665,928),7777=>array(10,-14,560,759),7778=>array(15,-212,665,742),7779=>array(10,-212,560,560),7780=>array(15,-14,719,928),7781=>array(10,-14,682,816),7782=>array(15,-14,690,1053),7783=>array(10,-14,605,875),7784=>array(15,-212,665,928),7785=>array(10,-212,560,762),7786=>array(48,0,748,928),7787=>array(43,0,509,941),7788=>array(48,-212,748,729),7789=>array(43,-212,509,702),7790=>array(48,-185,748,729),7791=>array(27,-185,509,702),7792=>array(38,-240,748,729),7793=>array(-20,-240,509,702),7794=>array(68,-212,791,729),7795=>array(60,-212,681,547),7796=>array(68,-221,791,729),7797=>array(60,-221,681,547),7798=>array(68,-203,791,729),7799=>array(60,-203,681,547),7800=>array(68,-14,791,1057),7801=>array(60,-14,681,917),7802=>array(68,-14,791,1043),7803=>array(60,-14,681,885),7804=>array(76,0,840,928),7805=>array(63,0,678,778),7806=>array(76,-212,840,729),7807=>array(63,-212,678,547),7808=>array(107,0,1143,931),7809=>array(87,0,927,803),7810=>array(107,0,1143,931),7811=>array(87,0,927,803),7812=>array(107,0,1143,927),7813=>array(87,0,927,774),7814=>array(107,0,1143,927),7815=>array(87,0,927,759),7816=>array(107,-212,1143,729),7817=>array(87,-212,927,547),7818=>array(-51,0,812,927),7819=>array(-41,0,671,759),7820=>array(-51,0,812,927),7821=>array(-41,0,671,774),7822=>array(63,0,809,928),7823=>array(0,-216,687,759),7824=>array(-26,0,740,927),7825=>array(-9,0,586,800),7826=>array(-26,-212,740,729),7827=>array(-9,-212,586,547),7828=>array(-26,-185,740,729),7829=>array(-9,-185,586,547),7830=>array(31,-185,654,760),7831=>array(43,0,509,927),7832=>array(87,0,927,883),7833=>array(0,-216,687,883),7834=>array(17,-14,825,760),7835=>array(50,0,540,941),7836=>array(-39,0,518,760),7837=>array(17,0,518,760),7838=>array(38,-14,808,743),7839=>array(16,-14,634,768),7840=>array(-65,-212,691,729),7841=>array(17,-212,611,560),7842=>array(-65,0,691,1025),7843=>array(17,-14,611,844),7844=>array(-65,0,853,1057),7845=>array(17,-14,795,876),7846=>array(-65,0,759,1057),7847=>array(17,-14,704,876),7848=>array(-65,0,840,1093),7849=>array(17,-14,773,913),7850=>array(-65,0,691,1068),7851=>array(17,-14,631,888),7852=>array(-65,-212,691,927),7853=>array(17,-212,611,800),7854=>array(-65,0,702,1057),7855=>array(17,-14,646,889),7856=>array(-65,0,691,1057),7857=>array(17,-14,611,889),7858=>array(-65,0,691,1121),7859=>array(17,-14,611,953),7860=>array(-65,0,693,1068),7861=>array(17,-14,630,900),7862=>array(-65,-212,691,936),7863=>array(17,-212,611,772),7864=>array(21,-212,670,729),7865=>array(36,-212,640,560),7866=>array(21,0,670,1025),7867=>array(36,-14,640,844),7868=>array(21,0,670,928),7869=>array(36,-14,640,778),7870=>array(21,0,805,1057),7871=>array(36,-14,814,876),7872=>array(21,0,772,1057),7873=>array(36,-14,721,876),7874=>array(21,0,799,1093),7875=>array(36,-14,797,913),7876=>array(21,0,670,1068),7877=>array(36,-14,648,888),7878=>array(21,-212,670,927),7879=>array(36,-212,640,800),7880=>array(21,0,417,1025),7881=>array(31,0,395,844),7882=>array(6,-212,351,729),7883=>array(10,-212,354,760),7884=>array(36,-212,814,742),7885=>array(36,-212,651,560),7886=>array(36,-14,814,1025),7887=>array(36,-14,651,844),7888=>array(36,-14,884,1057),7889=>array(36,-14,815,876),7890=>array(36,-14,814,1057),7891=>array(36,-14,724,876),7892=>array(36,-14,890,1093),7893=>array(36,-14,802,913),7894=>array(36,-14,814,1068),7895=>array(36,-14,655,888),7896=>array(36,-212,814,927),7897=>array(36,-212,651,800),7898=>array(39,-14,907,927),7899=>array(40,-14,771,800),7900=>array(39,-14,907,927),7901=>array(40,-14,771,798),7902=>array(39,-14,907,1025),7903=>array(40,-14,771,844),7904=>array(39,-14,907,928),7905=>array(40,-14,771,778),7906=>array(39,-212,907,760),7907=>array(40,-212,771,570),7908=>array(68,-212,791,729),7909=>array(60,-212,681,547),7910=>array(68,-14,791,1025),7911=>array(60,-14,681,844),7912=>array(67,-14,938,927),7913=>array(57,-14,795,799),7914=>array(67,-14,938,927),7915=>array(57,-14,795,800),7916=>array(67,-14,938,1025),7917=>array(57,-14,795,844),7918=>array(67,-14,938,928),7919=>array(57,-14,795,778),7920=>array(67,-212,938,761),7921=>array(57,-212,795,570),7922=>array(63,0,809,931),7923=>array(0,-216,687,803),7924=>array(63,-212,809,729),7925=>array(0,-216,687,547),7926=>array(63,0,809,1025),7927=>array(0,-216,687,844),7928=>array(63,0,809,928),7929=>array(0,-216,687,778),7930=>array(21,0,882,729),7931=>array(10,0,698,760),7936=>array(38,-12,692,785),7937=>array(38,-12,692,785),7938=>array(38,-12,692,800),7939=>array(38,-12,692,800),7940=>array(38,-12,692,800),7941=>array(38,-12,692,800),7942=>array(38,-12,692,928),7943=>array(38,-12,692,928),7944=>array(-65,0,691,785),7945=>array(-65,0,691,785),7946=>array(29,0,958,800),7947=>array(69,0,960,800),7948=>array(29,0,852,800),7949=>array(67,0,880,800),7950=>array(-3,0,752,928),7951=>array(20,0,776,928),7952=>array(27,-14,520,785),7953=>array(27,-14,520,785),7954=>array(27,-14,547,800),7955=>array(27,-14,541,800),7956=>array(27,-14,616,800),7957=>array(27,-14,601,800),7960=>array(31,0,778,785),7961=>array(69,0,781,785),7962=>array(29,0,1086,800),7963=>array(69,0,1083,800),7964=>array(29,0,1010,800),7965=>array(67,0,1039,800),7968=>array(50,-208,664,785),7969=>array(50,-208,664,785),7970=>array(50,-208,664,800),7971=>array(50,-208,664,800),7972=>array(50,-208,664,800),7973=>array(50,-208,684,800),7974=>array(50,-208,664,928),7975=>array(50,-208,664,928),7976=>array(31,0,924,785),7977=>array(69,0,930,785),7978=>array(29,0,1229,800),7979=>array(69,0,1229,800),7980=>array(29,0,1159,800),7981=>array(67,0,1185,800),7982=>array(98,0,1033,928),7983=>array(97,0,1042,928),7984=>array(42,-19,313,785),7985=>array(42,-19,313,785),7986=>array(0,-19,457,800),7987=>array(7,-19,426,800),7988=>array(42,-19,531,800),7989=>array(42,-19,523,800),7990=>array(42,-19,458,928),7991=>array(42,-19,455,928),7992=>array(31,0,462,785),7993=>array(69,0,468,785),7994=>array(29,0,756,800),7995=>array(69,0,764,800),7996=>array(29,0,691,800),7997=>array(67,0,717,800),7998=>array(98,0,583,928),7999=>array(97,0,583,928),8000=>array(36,-14,651,785),8001=>array(36,-14,651,785),8002=>array(36,-14,651,800),8003=>array(36,-14,651,800),8004=>array(36,-14,667,800),8005=>array(36,-14,680,800),8008=>array(31,-14,855,785),8009=>array(69,-14,897,785),8010=>array(29,-14,1185,800),8011=>array(69,-14,1188,800),8012=>array(29,-14,1017,800),8013=>array(67,-14,1046,800),8016=>array(54,-10,645,785),8017=>array(54,-10,645,785),8018=>array(54,-10,645,800),8019=>array(54,-10,645,800),8020=>array(54,-10,677,800),8021=>array(54,-10,683,800),8022=>array(54,-10,645,928),8023=>array(54,-10,645,928),8025=>array(69,0,1015,785),8027=>array(69,0,1269,800),8029=>array(67,0,1284,800),8031=>array(97,0,1134,928),8032=>array(33,-13,834,785),8033=>array(33,-13,834,785),8034=>array(33,-13,834,800),8035=>array(33,-13,834,800),8036=>array(33,-13,834,800),8037=>array(33,-13,834,800),8038=>array(33,-13,834,928),8039=>array(33,-13,834,928),8040=>array(13,0,870,785),8041=>array(63,0,920,785),8042=>array(29,0,1208,800),8043=>array(69,-3,1213,800),8044=>array(29,0,1037,800),8045=>array(67,0,1066,800),8046=>array(98,0,989,928),8047=>array(97,0,1037,928),8048=>array(38,-12,692,800),8049=>array(38,-12,692,800),8050=>array(27,-14,520,800),8051=>array(27,-14,567,800),8052=>array(50,-208,664,800),8053=>array(50,-208,664,800),8054=>array(42,-19,313,800),8055=>array(42,-19,436,800),8056=>array(36,-14,651,800),8057=>array(36,-14,651,800),8058=>array(54,-10,645,800),8059=>array(54,-10,645,800),8060=>array(33,-13,834,800),8061=>array(33,-13,834,800),8064=>array(38,-208,692,785),8065=>array(38,-208,692,785),8066=>array(38,-208,692,800),8067=>array(38,-208,692,800),8068=>array(38,-208,692,800),8069=>array(38,-208,692,800),8070=>array(38,-208,692,928),8071=>array(38,-208,692,928),8072=>array(-65,-208,691,785),8073=>array(-65,-208,691,785),8074=>array(29,-208,958,800),8075=>array(69,-208,960,800),8076=>array(29,-208,852,800),8077=>array(67,-208,880,800),8078=>array(-3,-208,752,928),8079=>array(20,-208,776,928),8080=>array(50,-208,664,785),8081=>array(50,-208,664,785),8082=>array(50,-208,664,800),8083=>array(50,-208,664,800),8084=>array(50,-208,664,800),8085=>array(50,-208,684,800),8086=>array(50,-208,664,928),8087=>array(50,-208,664,928),8088=>array(31,-208,924,785),8089=>array(69,-208,930,785),8090=>array(29,-208,1229,800),8091=>array(69,-208,1229,800),8092=>array(29,-208,1159,800),8093=>array(67,-208,1185,800),8094=>array(98,-208,1033,928),8095=>array(97,-208,1042,928),8096=>array(33,-208,834,785),8097=>array(33,-208,834,785),8098=>array(33,-208,834,800),8099=>array(33,-208,834,800),8100=>array(33,-208,834,800),8101=>array(33,-208,834,800),8102=>array(33,-208,834,928),8103=>array(33,-208,834,928),8104=>array(13,-208,870,785),8105=>array(63,-208,920,785),8106=>array(29,-208,1208,800),8107=>array(69,-208,1213,800),8108=>array(29,-208,1037,800),8109=>array(67,-208,1066,800),8110=>array(98,-208,989,928),8111=>array(97,-208,1037,928),8112=>array(38,-12,692,784),8113=>array(38,-12,692,760),8114=>array(38,-208,692,800),8115=>array(38,-208,692,559),8116=>array(38,-208,692,800),8118=>array(38,-12,692,778),8119=>array(38,-208,692,778),8120=>array(-65,0,691,927),8121=>array(-65,0,691,914),8122=>array(38,0,793,800),8123=>array(-42,0,714,800),8124=>array(-65,-208,691,729),8125=>array(210,595,381,785),8126=>array(132,-208,253,-45),8127=>array(210,595,381,785),8128=>array(133,638,500,778),8129=>array(152,654,540,928),8130=>array(50,-208,664,800),8131=>array(50,-208,664,560),8132=>array(50,-208,664,800),8134=>array(50,-208,664,778),8135=>array(50,-208,664,778),8136=>array(84,0,916,800),8137=>array(22,0,831,800),8138=>array(84,0,1059,800),8139=>array(28,0,986,800),8140=>array(21,-208,816,729),8141=>array(61,595,518,800),8142=>array(90,595,563,800),8143=>array(174,595,540,928),8144=>array(42,-19,413,784),8145=>array(42,-19,405,760),8146=>array(42,-19,402,978),8147=>array(50,-19,516,978),8150=>array(42,-19,424,778),8151=>array(42,-19,454,928),8152=>array(21,0,424,927),8153=>array(21,0,417,914),8154=>array(84,0,600,800),8155=>array(25,0,521,800),8157=>array(105,595,523,800),8158=>array(111,595,574,800),8159=>array(174,595,540,928),8160=>array(54,-10,645,784),8161=>array(54,-10,645,760),8162=>array(54,-10,645,978),8163=>array(54,-10,660,978),8164=>array(9,-208,699,785),8165=>array(9,-208,699,785),8166=>array(54,-10,645,778),8167=>array(54,-10,645,928),8168=>array(63,0,809,927),8169=>array(63,0,809,914),8170=>array(84,0,1105,800),8171=>array(20,0,1067,800),8172=>array(69,0,825,785),8173=>array(152,654,484,978),8174=>array(152,654,589,978),8175=>array(131,616,371,800),8178=>array(33,-208,834,800),8179=>array(33,-208,834,547),8180=>array(33,-208,834,800),8182=>array(33,-13,834,778),8183=>array(33,-208,834,778),8184=>array(84,-14,1029,800),8185=>array(28,-14,851,800),8186=>array(84,0,1046,800),8187=>array(-1,0,855,800),8188=>array(-45,-208,812,742),8189=>array(227,616,539,800),8190=>array(249,595,392,785),8192=>array(25,217,360,359),8193=>array(25,217,360,359),8194=>array(25,217,360,359),8195=>array(25,217,360,359),8196=>array(25,217,360,359),8197=>array(25,217,360,359),8198=>array(25,217,360,359),8199=>array(25,217,360,359),8200=>array(25,217,360,359),8201=>array(25,217,360,359),8202=>array(25,217,360,359),8203=>array(25,217,360,359),8204=>array(25,217,360,359),8205=>array(25,217,360,359),8206=>array(25,217,360,359),8207=>array(25,217,360,359),8208=>array(25,217,360,359),8209=>array(25,217,360,359),8210=>array(24,211,637,337),8211=>array(24,211,441,337),8212=>array(24,211,941,337),8213=>array(-30,211,995,337),8214=>array(127,-236,399,764),8215=>array(-10,-236,510,-9),8216=>array(113,418,389,729),8217=>array(73,418,349,729),8218=>array(-34,-122,242,189),8219=>array(107,418,302,729),8220=>array(113,418,652,729),8221=>array(73,418,612,729),8222=>array(-34,-122,505,189),8223=>array(95,418,535,729),8224=>array(38,-96,504,729),8225=>array(-28,-96,504,729),8226=>array(144,196,495,547),8227=>array(144,157,534,586),8228=>array(46,0,259,189),8229=>array(46,0,569,189),8230=>array(46,0,879,189),8231=>array(124,304,282,424),8232=>array(55,-14,1401,742),8233=>array(55,-14,1401,742),8234=>array(55,-14,1401,742),8235=>array(55,-14,1401,742),8236=>array(55,-14,1401,742),8237=>array(55,-14,1401,742),8238=>array(55,-14,1401,742),8239=>array(55,-14,1401,742),8240=>array(55,-14,1401,742),8241=>array(55,-14,1855,742),8242=>array(2,547,257,729),8243=>array(2,547,440,729),8244=>array(2,547,624,729),8245=>array(161,547,346,729),8246=>array(161,547,532,729),8247=>array(161,547,712,729),8248=>array(101,-238,632,29),8249=>array(61,67,355,519),8250=>array(38,66,331,519),8251=>array(72,0,900,829),8252=>array(-2,0,629,729),8253=>array(98,0,550,742),8254=>array(-10,663,510,755),8255=>array(-31,-237,859,-79),8256=>array(-31,769,859,927),8257=>array(-52,-235,296,231),8258=>array(20,-37,1003,832),8259=>array(102,188,428,325),8260=>array(-278,-14,445,742),8261=>array(-10,-132,466,760),8262=>array(-28,-132,448,760),8263=>array(69,0,1035,742),8264=>array(104,0,831,742),8265=>array(-2,0,799,742),8266=>array(87,-125,530,546),8267=>array(57,-96,666,729),8268=>array(75,189,425,541),8269=>array(75,189,425,541),8270=>array(20,-37,503,427),8271=>array(56,-142,327,547),8272=>array(-31,-237,859,927),8273=>array(68,-3,455,830),8274=>array(3,-93,548,729),8275=>array(49,212,951,415),8276=>array(-31,-351,859,-192),8277=>array(142,98,694,631),8278=>array(95,93,628,645),8279=>array(2,547,807,729),8280=>array(61,21,776,708),8281=>array(80,71,768,657),8282=>array(31,0,350,729),8283=>array(30,-170,839,898),8284=>array(43,0,794,729),8285=>array(31,0,339,683),8286=>array(31,0,339,683),8287=>array(29,319,398,742),8288=>array(29,319,398,742),8289=>array(29,319,398,742),8290=>array(29,319,398,742),8291=>array(29,319,398,742),8292=>array(29,319,398,742),8298=>array(29,319,398,742),8299=>array(29,319,398,742),8300=>array(29,319,398,742),8301=>array(29,319,398,742),8302=>array(29,319,398,742),8303=>array(29,319,398,742),8304=>array(29,319,398,742),8305=>array(12,326,205,751),8308=>array(3,326,388,734),8309=>array(12,319,393,734),8310=>array(37,319,403,742),8311=>array(51,326,418,734),8312=>array(20,319,400,742),8313=>array(23,319,389,742),8314=>array(67,326,461,677),8315=>array(67,469,461,534),8316=>array(67,407,461,596),8317=>array(48,252,282,751),8318=>array(-1,252,232,751),8319=>array(23,326,412,640),8320=>array(29,-7,398,416),8321=>array(67,0,395,408),8322=>array(45,0,431,416),8323=>array(40,-7,427,416),8324=>array(3,0,388,408),8325=>array(12,-7,393,408),8326=>array(37,-7,403,416),8327=>array(51,0,418,408),8328=>array(20,-7,400,416),8329=>array(23,-7,389,416),8330=>array(67,0,461,351),8331=>array(67,143,461,208),8332=>array(67,81,461,270),8333=>array(48,-74,282,425),8334=>array(-1,-74,232,425),8336=>array(37,-8,411,313),8337=>array(49,-8,429,313),8338=>array(49,-8,436,313),8339=>array(-20,0,427,306),8340=>array(53,-8,423,313),8341=>array(12,0,401,425),8342=>array(20,0,451,425),8343=>array(12,0,207,425),8344=>array(21,0,621,313),8345=>array(23,0,412,313),8346=>array(-6,-117,427,313),8347=>array(11,-8,355,313),8348=>array(72,0,365,393),8352=>array(53,0,919,729),8353=>array(36,-44,693,778),8354=>array(36,-14,697,742),8355=>array(3,0,690,729),8356=>array(7,0,691,742),8357=>array(30,-93,975,640),8358=>array(14,0,823,729),8359=>array(21,-14,1453,729),8360=>array(22,-14,1154,729),8361=>array(23,0,1143,729),8362=>array(-32,-14,870,729),8363=>array(36,-185,817,760),8364=>array(-41,-14,687,742),8365=>array(12,0,735,729),8366=>array(55,0,754,729),8367=>array(37,-223,1220,742),8368=>array(1,-14,660,742),8369=>array(21,0,697,729),8370=>array(38,-81,682,809),8371=>array(-66,0,685,729),8372=>array(16,-14,844,742),8373=>array(76,-147,688,760),8376=>array(18,0,754,729),8377=>array(61,0,718,729),8378=>array(-10,0,745,729),8400=>array(-510,628,-26,760),8401=>array(-483,628,-11,760),8406=>array(-470,560,-20,760),8407=>array(-477,560,-26,760),8411=>array(-335,654,190,774),8412=>array(-432,654,287,774),8417=>array(-470,560,-26,760),8448=>array(15,-23,1106,752),8449=>array(15,-23,1106,752),8450=>array(50,-14,670,742),8451=>array(87,-14,1201,749),8452=>array(64,0,832,729),8453=>array(25,-24,1097,752),8454=>array(25,-24,1169,752),8455=>array(37,-14,652,742),8456=>array(1,-146,693,611),8457=>array(87,0,999,749),8459=>array(36,-14,1063,746),8460=>array(6,-125,809,747),8461=>array(100,0,788,729),8462=>array(31,0,654,760),8463=>array(10,0,625,760),8464=>array(36,-14,533,742),8465=>array(52,-14,659,743),8466=>array(37,-14,787,742),8467=>array(-14,-14,401,742),8468=>array(12,-14,935,760),8469=>array(92,0,745,729),8470=>array(-37,0,1156,729),8471=>array(138,0,862,725),8472=>array(54,-221,658,495),8473=>array(92,0,709,729),8474=>array(50,-146,800,742),8475=>array(31,-14,904,768),8476=>array(41,-14,803,743),8477=>array(98,0,793,729),8478=>array(53,0,844,729),8479=>array(53,-112,666,887),8480=>array(126,443,770,730),8481=>array(40,0,1223,547),8482=>array(144,447,790,729),8483=>array(22,-113,877,885),8484=>array(45,0,709,729),8485=>array(-11,-230,648,777),8486=>array(-45,0,812,742),8487=>array(42,-14,813,723),8488=>array(-5,-159,670,729),8489=>array(36,0,306,566),8490=>array(21,0,837,729),8491=>array(-65,0,691,928),8492=>array(41,-1,853,772),8493=>array(63,-19,767,742),8494=>array(61,-12,793,647),8495=>array(41,-14,591,533),8496=>array(72,-14,668,742),8497=>array(37,-14,860,773),8498=>array(21,0,670,729),8499=>array(38,-18,1156,751),8500=>array(29,-12,436,420),8501=>array(50,-14,761,742),8502=>array(19,-14,687,742),8503=>array(31,-35,439,742),8504=>array(63,-41,633,742),8505=>array(34,0,355,760),8506=>array(44,-27,994,723),8507=>array(0,0,1384,547),8508=>array(34,-14,765,547),8509=>array(-40,-208,700,561),8510=>array(92,0,627,729),8511=>array(92,0,771,729),8512=>array(12,-192,820,719),8513=>array(5,-14,747,742),8514=>array(9,0,554,729),8515=>array(11,0,671,729),8516=>array(2,0,749,729),8517=>array(21,0,786,729),8518=>array(34,-14,752,760),8519=>array(33,-14,635,560),8520=>array(15,0,353,760),8521=>array(-143,-216,354,760),8523=>array(60,-14,838,742),8526=>array(1,0,523,547),8528=>array(56,-14,1023,742),8529=>array(56,-14,994,742),8530=>array(56,-14,1441,742),8531=>array(56,-14,1032,742),8532=>array(45,-14,1032,742),8533=>array(56,-14,998,742),8534=>array(45,-14,998,742),8535=>array(40,-14,998,742),8536=>array(3,-14,998,742),8537=>array(56,-14,1008,742),8538=>array(12,-14,1008,742),8539=>array(56,-14,1005,742),8540=>array(40,-14,1005,742),8541=>array(12,-14,1005,742),8542=>array(51,-14,1005,742),8543=>array(56,-14,893,742),8544=>array(21,0,351,729),8545=>array(21,0,638,729),8546=>array(21,0,924,729),8547=>array(21,0,1165,729),8548=>array(76,0,840,729),8549=>array(76,0,1078,729),8550=>array(76,0,1365,729),8551=>array(76,0,1651,729),8552=>array(21,0,1162,729),8553=>array(-51,0,812,729),8554=>array(-51,0,1099,729),8555=>array(-51,0,1386,729),8556=>array(21,0,566,729),8557=>array(36,-14,724,742),8558=>array(21,0,786,729),8559=>array(21,0,974,729),8560=>array(31,0,354,760),8561=>array(31,0,619,760),8562=>array(31,0,883,760),8563=>array(31,0,987,760),8564=>array(63,0,678,547),8565=>array(63,0,973,760),8566=>array(63,0,1238,760),8567=>array(63,0,1502,760),8568=>array(31,0,995,760),8569=>array(-41,0,671,547),8570=>array(-41,0,980,760),8571=>array(-41,0,1245,760),8572=>array(31,0,354,760),8573=>array(37,-14,581,560),8574=>array(36,-14,724,760),8575=>array(31,0,984,560),8576=>array(48,0,1240,729),8577=>array(21,0,782,729),8578=>array(48,0,1240,729),8579=>array(-13,-14,675,742),8580=>array(-7,-14,537,560),8581=>array(68,-208,752,742),8585=>array(29,-14,1032,742),8592=>array(49,87,781,540),8593=>array(193,0,646,732),8594=>array(57,87,789,540),8595=>array(193,-3,646,729),8596=>array(49,87,789,540),8597=>array(193,-3,646,732),8598=>array(136,66,720,650),8599=>array(136,66,720,650),8600=>array(136,66,720,650),8601=>array(136,66,720,650),8602=>array(49,87,781,540),8603=>array(57,87,789,540),8604=>array(13,84,833,431),8605=>array(5,84,825,431),8606=>array(49,87,781,540),8607=>array(189,0,641,732),8608=>array(57,87,789,540),8609=>array(194,-3,646,729),8610=>array(49,87,793,540),8611=>array(45,87,789,540),8612=>array(49,87,781,540),8613=>array(193,0,646,732),8614=>array(57,87,789,540),8615=>array(193,0,646,732),8616=>array(193,0,646,732),8617=>array(49,87,781,565),8618=>array(57,87,789,565),8619=>array(49,87,781,565),8620=>array(57,87,789,565),8621=>array(49,87,789,540),8622=>array(49,86,789,541),8623=>array(123,-4,714,733),8624=>array(169,0,646,755),8625=>array(192,0,669,755),8626=>array(169,-26,646,729),8627=>array(192,-26,669,729),8628=>array(233,-3,772,621),8629=>array(49,87,673,626),8630=>array(11,198,816,685),8631=>array(22,198,828,685),8632=>array(118,13,788,729),8633=>array(49,-108,789,735),8634=>array(86,45,767,691),8635=>array(71,45,751,691),8636=>array(49,255,781,540),8637=>array(49,87,781,372),8638=>array(361,0,646,732),8639=>array(193,0,478,732),8640=>array(57,255,789,540),8641=>array(57,87,789,372),8642=>array(361,0,646,732),8643=>array(193,0,478,732),8644=>array(49,-59,789,686),8645=>array(47,-3,792,732),8646=>array(49,-59,789,686),8647=>array(49,-59,781,686),8648=>array(46,0,792,732),8649=>array(57,-59,789,686),8650=>array(46,-3,792,729),8651=>array(49,-5,789,632),8652=>array(49,-5,789,632),8653=>array(49,87,781,540),8654=>array(49,87,789,540),8655=>array(57,87,789,540),8656=>array(49,87,781,540),8657=>array(193,0,645,732),8658=>array(57,87,789,540),8659=>array(193,-3,645,729),8660=>array(49,87,789,540),8661=>array(193,-8,645,732),8662=>array(132,-26,755,596),8663=>array(88,-26,711,597),8664=>array(88,16,711,639),8665=>array(132,16,755,639),8666=>array(49,87,781,540),8667=>array(57,87,789,540),8668=>array(44,87,776,540),8669=>array(57,87,789,540),8670=>array(193,0,646,732),8671=>array(193,-3,646,729),8672=>array(49,87,781,540),8673=>array(193,0,646,732),8674=>array(57,87,789,540),8675=>array(193,-3,646,729),8676=>array(49,87,781,540),8677=>array(57,87,789,540),8678=>array(27,46,781,581),8679=>array(151,0,687,754),8680=>array(35,46,789,581),8681=>array(151,-25,687,729),8682=>array(151,0,687,754),8683=>array(151,0,687,754),8684=>array(151,0,687,754),8685=>array(151,0,687,754),8686=>array(151,0,687,754),8687=>array(151,0,687,754),8688=>array(35,46,789,581),8689=>array(60,0,788,729),8690=>array(60,0,788,729),8691=>array(151,-25,687,754),8692=>array(57,87,789,540),8693=>array(47,-3,792,732),8694=>array(57,-223,789,850),8695=>array(49,87,781,540),8696=>array(57,87,789,540),8697=>array(49,87,789,540),8698=>array(49,87,781,540),8699=>array(57,87,789,540),8700=>array(49,87,789,540),8701=>array(27,96,781,531),8702=>array(57,96,811,531),8703=>array(27,96,811,531),8704=>array(5,0,769,729),8705=>array(48,-14,629,742),8706=>array(29,-14,515,674),8707=>array(92,0,610,729),8708=>array(92,-46,610,775),8709=>array(47,-15,810,715),8710=>array(0,0,697,719),8711=>array(0,0,697,719),8712=>array(73,-2,824,730),8713=>array(73,-46,824,775),8714=>array(106,58,644,568),8715=>array(73,-2,824,730),8716=>array(73,-46,824,775),8717=>array(106,58,644,568),8718=>array(98,0,539,553),8719=>array(73,-192,712,719),8720=>array(73,-193,712,718),8721=>array(20,-192,697,719),8722=>array(106,256,732,371),8723=>array(106,0,732,627),8724=>array(49,0,647,729),8725=>array(-96,-93,434,729),8726=>array(165,-49,530,772),8727=>array(118,0,720,626),8728=>array(150,151,475,477),8729=>array(102,253,278,442),8730=>array(37,-20,669,837),8731=>array(37,-20,669,933),8732=>array(36,-20,669,924),8733=>array(92,89,617,505),8734=>array(92,89,741,505),8735=>array(106,67,732,693),8736=>array(77,0,820,729),8737=>array(77,-44,820,729),8738=>array(116,-0,732,726),8739=>array(207,-207,322,773),8740=>array(48,-207,482,773),8741=>array(112,-207,417,773),8742=>array(48,-207,482,773),8743=>array(151,0,661,579),8744=>array(151,0,661,579),8745=>array(151,0,661,579),8746=>array(151,0,661,579),8747=>array(15,-227,548,754),8748=>array(15,-227,914,754),8749=>array(15,-227,1280,754),8750=>array(14,-227,548,754),8751=>array(38,-227,938,754),8752=>array(23,-227,1290,754),8753=>array(15,-227,616,754),8754=>array(14,-227,600,754),8755=>array(14,-227,588,754),8756=>array(60,78,637,647),8757=>array(60,78,637,647),8758=>array(59,79,235,647),8759=>array(60,78,637,647),8760=>array(106,256,732,631),8761=>array(106,45,800,584),8762=>array(106,-4,732,631),8763=>array(106,-34,732,660),8764=>array(106,212,732,415),8765=>array(106,212,732,415),8766=>array(65,131,772,497),8767=>array(106,42,732,584),8768=>array(85,0,289,626),8769=>array(106,76,732,551),8770=>array(106,110,732,482),8771=>array(106,144,732,517),8772=>array(106,0,732,637),8773=>array(106,37,732,628),8774=>array(106,-31,732,628),8775=>array(106,-86,732,726),8776=>array(106,110,732,517),8777=>array(106,8,732,614),8778=>array(106,37,732,628),8779=>array(106,-13,732,628),8780=>array(106,37,732,628),8781=>array(105,105,732,585),8782=>array(106,26,732,656),8783=>array(106,172,732,656),8784=>array(106,144,732,744),8785=>array(106,-117,732,743),8786=>array(105,-92,732,719),8787=>array(104,-92,731,719),8788=>array(98,102,965,520),8789=>array(96,102,966,520),8790=>array(106,144,732,482),8791=>array(106,144,732,839),8792=>array(106,144,732,704),8793=>array(106,144,732,840),8794=>array(106,144,732,840),8795=>array(106,144,732,959),8796=>array(106,144,732,952),8797=>array(106,144,732,762),8798=>array(106,144,732,786),8799=>array(106,144,732,903),8800=>array(106,-5,732,631),8801=>array(106,38,732,588),8802=>array(106,-69,732,695),8803=>array(106,-74,732,700),8804=>array(106,0,732,582),8805=>array(106,0,732,582),8806=>array(106,-106,732,617),8807=>array(106,-106,732,617),8808=>array(106,-185,732,617),8809=>array(106,-185,732,617),8810=>array(72,-34,974,660),8811=>array(72,-34,974,660),8812=>array(86,-132,414,759),8813=>array(105,-10,732,700),8814=>array(106,-4,732,690),8815=>array(106,-63,732,631),8816=>array(106,-112,732,645),8817=>array(106,-112,732,645),8818=>array(106,-84,732,582),8819=>array(106,-84,732,582),8820=>array(106,-112,732,645),8821=>array(106,-112,732,645),8822=>array(102,-119,732,678),8823=>array(102,-119,732,678),8824=>array(102,-221,732,779),8825=>array(102,-221,732,779),8826=>array(106,-55,732,681),8827=>array(106,-55,732,681),8828=>array(106,-177,732,684),8829=>array(106,-177,732,684),8830=>array(106,-132,732,684),8831=>array(106,-132,732,684),8832=>array(106,-89,732,781),8833=>array(106,-89,732,781),8834=>array(99,67,739,559),8835=>array(99,65,739,559),8836=>array(99,-96,739,726),8837=>array(99,-100,739,722),8838=>array(99,0,739,636),8839=>array(99,0,739,635),8840=>array(99,-124,739,759),8841=>array(99,-124,739,759),8842=>array(99,-97,739,636),8843=>array(99,-97,739,635),8844=>array(151,0,661,579),8845=>array(151,0,661,579),8846=>array(151,0,661,579),8847=>array(106,0,732,584),8848=>array(106,0,732,584),8849=>array(106,-115,732,667),8850=>array(106,-115,732,667),8851=>array(106,0,690,626),8852=>array(106,0,690,626),8853=>array(91,-14,747,643),8854=>array(91,-14,747,643),8855=>array(91,-14,747,643),8856=>array(91,-13,747,642),8857=>array(91,-14,747,643),8858=>array(91,-14,747,643),8859=>array(91,-14,747,643),8860=>array(91,-14,747,643),8861=>array(91,-14,747,643),8862=>array(77,-29,761,657),8863=>array(77,-29,761,657),8864=>array(77,-29,761,657),8865=>array(77,-29,761,657),8866=>array(85,0,829,705),8867=>array(85,0,829,705),8868=>array(85,0,829,705),8869=>array(85,0,829,705),8870=>array(85,0,457,705),8871=>array(85,0,457,705),8872=>array(85,0,829,705),8873=>array(85,0,829,705),8874=>array(85,0,829,705),8875=>array(85,0,829,705),8876=>array(85,-100,829,805),8877=>array(85,-100,829,805),8878=>array(85,-100,829,805),8879=>array(85,-100,829,805),8880=>array(106,-54,724,681),8881=>array(114,-54,732,681),8882=>array(106,-1,732,628),8883=>array(106,-1,732,628),8884=>array(106,-80,732,706),8885=>array(106,-80,732,706),8886=>array(60,151,940,477),8887=>array(60,151,940,477),8888=>array(60,151,778,477),8889=>array(43,-63,794,689),8890=>array(63,0,480,705),8891=>array(103,0,709,759),8892=>array(103,0,709,759),8893=>array(103,0,709,759),8894=>array(106,0,732,626),8895=>array(106,0,732,626),8896=>array(0,-192,843,719),8897=>array(0,-192,843,719),8898=>array(48,-192,794,719),8899=>array(48,-192,794,719),8900=>array(3,-233,491,807),8901=>array(102,253,278,442),8902=>array(83,112,543,549),8903=>array(106,-56,732,683),8904=>array(106,-48,894,674),8905=>array(106,-48,894,675),8906=>array(106,-48,894,675),8907=>array(106,-48,894,675),8908=>array(106,-48,894,675),8909=>array(106,144,732,517),8910=>array(49,0,763,579),8911=>array(49,0,763,579),8912=>array(93,-22,732,649),8913=>array(106,-22,745,649),8914=>array(83,0,755,639),8915=>array(83,-14,755,625),8916=>array(186,0,652,729),8917=>array(106,-100,732,729),8918=>array(106,30,732,597),8919=>array(106,30,732,597),8920=>array(72,-34,1350,660),8921=>array(72,-34,1350,660),8922=>array(106,-211,732,837),8923=>array(106,-211,732,837),8924=>array(106,0,732,582),8925=>array(106,0,732,582),8926=>array(106,-177,732,684),8927=>array(106,-177,732,684),8928=>array(106,-197,732,808),8929=>array(106,-263,732,742),8930=>array(106,-191,732,817),8931=>array(106,-191,732,817),8932=>array(106,-146,732,636),8933=>array(106,-146,732,636),8934=>array(106,-168,732,582),8935=>array(106,-168,732,582),8936=>array(106,-216,732,684),8937=>array(106,-216,732,684),8938=>array(106,-138,732,808),8939=>array(106,-138,732,808),8940=>array(106,-224,732,894),8941=>array(106,-224,732,894),8942=>array(412,-40,588,735),8943=>array(79,253,921,442),8944=>array(79,-40,921,735),8945=>array(79,-40,921,735),8946=>array(72,-2,1085,730),8947=>array(73,-2,824,730),8948=>array(106,58,644,568),8949=>array(73,-2,824,984),8950=>array(73,-2,824,919),8951=>array(106,58,644,741),8952=>array(73,-207,824,730),8953=>array(73,-2,824,730),8954=>array(72,-2,1085,730),8955=>array(73,-2,824,730),8956=>array(106,58,644,568),8957=>array(72,-2,824,919),8958=>array(106,58,644,741),8959=>array(106,0,791,732),8960=>array(31,-22,572,519),8961=>array(56,152,540,453),8962=>array(64,0,651,596),8963=>array(193,470,646,732),8964=>array(193,0,646,263),8965=>array(193,-12,646,423),8966=>array(193,-12,646,552),8967=>array(194,-42,443,802),8968=>array(-1,-132,476,760),8969=>array(118,-132,458,760),8970=>array(-1,-132,339,760),8971=>array(-19,-132,458,760),8972=>array(352,-77,759,331),8973=>array(49,-77,457,331),8974=>array(352,226,759,634),8975=>array(49,226,457,634),8976=>array(106,140,732,444),8977=>array(3,113,536,646),8984=>array(84,0,843,759),8985=>array(106,140,732,444),8988=>array(86,425,469,760),8989=>array(127,425,469,760),8990=>array(62,-126,403,208),8991=>array(41,-126,423,208),8992=>array(235,-250,586,926),8993=>array(22,-240,373,940),8996=>array(76,215,1076,575),8997=>array(76,0,1076,575),8998=>array(76,0,1414,760),8999=>array(76,0,1076,760),9000=>array(59,0,1385,729),9003=>array(0,0,1338,760),9004=>array(73,-91,800,748),9075=>array(78,-19,348,547),9076=>array(84,-208,671,562),9077=>array(43,-13,826,547),9082=>array(48,-13,645,559),9085=>array(1,-228,862,99),9095=>array(76,0,1100,743),9108=>array(17,0,856,727),9115=>array(63,-252,438,928),9116=>array(63,-252,205,940),9117=>array(63,-240,438,940),9118=>array(63,-252,438,928),9119=>array(295,-252,438,940),9120=>array(63,-240,438,940),9121=>array(63,-252,438,928),9122=>array(63,-252,205,940),9123=>array(63,-240,438,940),9124=>array(63,-252,438,928),9125=>array(295,-252,438,940),9126=>array(63,-240,438,940),9127=>array(306,-261,668,928),9128=>array(82,-247,444,934),9129=>array(306,-240,668,934),9130=>array(306,-256,444,934),9131=>array(82,-261,444,928),9132=>array(306,-247,668,934),9133=>array(82,-240,444,934),9134=>array(235,-250,373,940),9166=>array(27,46,781,729),9167=>array(91,0,854,596),9187=>array(73,-91,800,748),9189=>array(3,75,766,444),9192=>array(-5,-129,623,294),9250=>array(-34,-14,652,760),9251=>array(21,-228,672,99),9312=>array(59,-15,788,715),9313=>array(59,-15,788,715),9314=>array(59,-15,788,715),9315=>array(59,-15,788,715),9316=>array(59,-15,788,715),9317=>array(59,-15,788,715),9318=>array(59,-15,788,715),9319=>array(59,-15,788,715),9320=>array(59,-15,788,715),9321=>array(59,-15,788,715),9600=>array(-10,260,779,770),9601=>array(-10,-250,779,-123),9602=>array(-10,-250,779,-5),9603=>array(-10,-250,779,132),9604=>array(-10,-250,779,260),9605=>array(-10,-250,779,387),9606=>array(-10,-250,779,515),9607=>array(-10,-250,779,642),9608=>array(-10,-250,779,770),9609=>array(-10,-250,680,770),9610=>array(-10,-250,582,770),9611=>array(-10,-250,483,770),9612=>array(-10,-250,384,770),9613=>array(-10,-250,286,770),9614=>array(-10,-250,187,770),9615=>array(-10,-250,88,770),9616=>array(384,-250,778,770),9617=>array(-10,-250,680,770),9618=>array(-10,-250,779,770),9619=>array(-10,-250,779,770),9620=>array(-10,642,779,770),9621=>array(680,-250,778,770),9622=>array(-10,-250,385,260),9623=>array(384,-250,779,260),9624=>array(-10,260,385,770),9625=>array(-10,-250,779,770),9626=>array(-10,-250,779,770),9627=>array(-10,-250,779,770),9628=>array(-10,-250,779,770),9629=>array(384,260,779,770),9630=>array(-10,-250,779,770),9631=>array(-10,-250,779,770),9632=>array(91,-124,854,643),9633=>array(91,-124,854,643),9634=>array(91,-124,854,643),9635=>array(91,-124,854,643),9636=>array(91,-124,854,643),9637=>array(91,-124,854,643),9638=>array(91,-124,854,643),9639=>array(91,-124,854,643),9640=>array(91,-124,854,643),9641=>array(91,-124,854,643),9642=>array(91,11,587,509),9643=>array(91,11,587,509),9644=>array(91,75,854,444),9645=>array(91,75,854,444),9646=>array(91,-122,459,642),9647=>array(91,-122,459,642),9648=>array(3,75,766,444),9649=>array(3,75,766,444),9650=>array(3,-124,766,643),9651=>array(3,-124,766,643),9652=>array(3,11,499,509),9653=>array(3,11,499,509),9654=>array(3,-124,766,643),9655=>array(3,-124,766,643),9656=>array(3,11,499,509),9657=>array(3,11,499,509),9658=>array(3,11,766,509),9659=>array(3,11,766,509),9660=>array(3,-124,766,643),9661=>array(3,-124,766,643),9662=>array(3,11,499,509),9663=>array(3,11,499,509),9664=>array(3,-124,766,643),9665=>array(3,-124,766,643),9666=>array(3,11,499,509),9667=>array(3,11,499,509),9668=>array(3,11,766,509),9669=>array(3,11,766,509),9670=>array(3,-124,766,643),9671=>array(3,-124,766,643),9672=>array(3,-124,766,643),9673=>array(55,-125,818,645),9674=>array(3,-233,491,807),9675=>array(55,-125,818,645),9676=>array(56,-125,817,644),9677=>array(55,-125,818,645),9678=>array(55,-125,818,645),9679=>array(55,-123,818,641),9680=>array(55,-123,818,641),9681=>array(55,-123,818,641),9682=>array(55,-123,818,641),9683=>array(55,-123,818,641),9684=>array(55,-123,818,641),9685=>array(55,-123,818,641),9686=>array(55,-125,436,645),9687=>array(91,-125,472,645),9688=>array(91,-10,750,770),9689=>array(91,-250,879,770),9690=>array(91,260,879,770),9691=>array(91,-250,879,260),9692=>array(3,260,385,645),9693=>array(3,260,384,645),9694=>array(3,-125,384,260),9695=>array(3,-125,385,260),9696=>array(3,260,766,645),9697=>array(3,-125,766,260),9698=>array(3,-124,766,643),9699=>array(3,-124,766,643),9700=>array(3,-124,766,643),9701=>array(3,-124,766,643),9702=>array(144,196,495,547),9703=>array(91,-124,854,643),9704=>array(91,-124,854,643),9705=>array(91,-124,854,643),9706=>array(91,-124,854,643),9707=>array(91,-124,854,643),9708=>array(3,-124,766,643),9709=>array(3,-124,766,643),9710=>array(3,-124,766,643),9711=>array(55,-250,1064,770),9712=>array(91,-124,854,643),9713=>array(91,-124,854,643),9714=>array(91,-124,854,643),9715=>array(91,-124,854,643),9716=>array(55,-123,818,641),9717=>array(55,-123,818,641),9718=>array(55,-123,818,641),9719=>array(55,-123,818,641),9720=>array(3,-124,766,643),9721=>array(3,-124,766,643),9722=>array(3,-124,766,643),9723=>array(91,-66,739,585),9724=>array(91,-66,739,585),9725=>array(91,-17,642,537),9726=>array(91,-17,642,537),9727=>array(3,-124,766,643),9728=>array(83,0,813,729),9729=>array(51,-2,949,360),9730=>array(49,0,848,729),9731=>array(83,-0,813,927),9732=>array(64,0,833,880),9733=>array(65,-4,832,723),9734=>array(65,-4,832,723),9735=>array(83,2,490,729),9736=>array(83,0,813,731),9737=>array(83,0,813,730),9738=>array(61,0,828,727),9739=>array(61,0,828,723),9740=>array(61,-1,610,722),9741=>array(61,0,952,723),9742=>array(68,0,1177,729),9743=>array(71,0,1180,729),9744=>array(90,0,807,729),9745=>array(89,0,808,729),9746=>array(89,0,808,729),9747=>array(75,78,457,656),9748=>array(49,0,870,933),9749=>array(74,0,822,731),9750=>array(84,0,813,731),9751=>array(84,0,813,727),9752=>array(78,0,819,729),9753=>array(83,140,813,574),9754=>array(84,113,813,569),9755=>array(84,113,813,569),9756=>array(87,104,810,569),9757=>array(72,0,537,724),9758=>array(86,103,810,569),9759=>array(72,-3,537,720),9760=>array(61,0,835,730),9761=>array(84,0,813,730),9762=>array(83,0,813,730),9763=>array(49,0,848,730),9764=>array(49,-2,620,727),9765=>array(83,0,663,731),9766=>array(83,-1,566,731),9767=>array(83,0,701,911),9768=>array(83,0,462,730),9769=>array(83,-1,813,729),9770=>array(87,0,810,730),9771=>array(83,0,814,731),9772=>array(83,0,627,731),9773=>array(83,0,813,730),9774=>array(83,0,813,730),9775=>array(83,0,813,730),9776=>array(83,0,813,729),9777=>array(83,0,814,729),9778=>array(83,0,813,729),9779=>array(83,0,813,729),9780=>array(83,0,813,729),9781=>array(83,0,813,729),9782=>array(83,0,813,729),9783=>array(83,0,813,729),9784=>array(80,3,817,721),9785=>array(83,-73,959,804),9786=>array(83,-73,959,804),9787=>array(83,-73,959,804),9788=>array(83,0,813,730),9789=>array(358,0,814,730),9790=>array(83,0,539,730),9791=>array(85,-102,528,732),9792=>array(85,-125,647,731),9793=>array(85,-14,647,843),9794=>array(79,-14,831,720),9795=>array(166,0,730,730),9796=>array(219,0,677,730),9797=>array(121,0,774,730),9798=>array(127,0,769,730),9799=>array(240,0,656,730),9800=>array(45,0,851,731),9801=>array(89,0,807,730),9802=>array(94,0,802,731),9803=>array(113,31,784,679),9804=>array(140,0,756,730),9805=>array(53,-180,843,730),9806=>array(83,52,813,653),9807=>array(34,-96,863,730),9808=>array(83,-0,813,730),9809=>array(94,0,802,730),9810=>array(86,153,810,579),9811=>array(157,0,739,730),9812=>array(98,0,798,730),9813=>array(110,0,786,730),9814=>array(167,-1,729,729),9815=>array(214,0,683,730),9816=>array(165,0,732,730),9817=>array(148,-0,748,730),9818=>array(98,0,798,730),9819=>array(110,0,786,730),9820=>array(167,-1,729,729),9821=>array(214,0,683,730),9822=>array(162,0,734,730),9823=>array(148,-0,748,730),9824=>array(158,0,738,729),9825=>array(90,0,806,727),9826=>array(168,0,728,729),9827=>array(111,0,785,729),9828=>array(157,0,739,729),9829=>array(89,0,808,729),9830=>array(168,0,728,729),9831=>array(111,0,785,732),9832=>array(105,-1,791,729),9833=>array(84,-5,339,729),9834=>array(84,-5,554,729),9835=>array(184,-102,712,729),9836=>array(92,-5,804,729),9837=>array(88,-3,392,731),9838=>array(84,0,273,731),9839=>array(84,0,400,731),9840=>array(84,0,664,731),9841=>array(64,0,701,731),9842=>array(84,0,813,709),9843=>array(76,16,820,731),9844=>array(76,16,820,731),9845=>array(76,16,820,731),9846=>array(76,16,820,731),9847=>array(76,16,820,731),9848=>array(76,16,820,731),9849=>array(76,16,820,731),9850=>array(76,16,820,731),9851=>array(84,0,812,704),9852=>array(83,0,814,731),9853=>array(83,0,814,731),9854=>array(83,0,814,731),9855=>array(149,1,747,731),9856=>array(73,0,797,725),9857=>array(73,0,797,725),9858=>array(73,0,797,725),9859=>array(73,0,797,725),9860=>array(73,0,797,725),9861=>array(73,0,797,725),9862=>array(83,0,813,731),9863=>array(83,0,813,731),9864=>array(83,0,813,731),9865=>array(83,0,813,731),9866=>array(83,0,813,98),9867=>array(83,0,813,98),9868=>array(83,0,813,413),9869=>array(83,0,813,413),9870=>array(83,0,813,413),9871=>array(83,0,813,413),9872=>array(168,3,728,731),9873=>array(168,3,728,731),9874=>array(52,0,844,731),9875=>array(97,-10,799,732),9876=>array(131,0,765,729),9877=>array(61,-10,479,732),9878=>array(59,-10,837,732),9879=>array(61,0,835,732),9880=>array(145,0,750,732),9881=>array(95,-17,802,727),9882=>array(128,-9,768,733),9883=>array(127,0,769,728),9884=>array(127,0,769,729),9888=>array(49,0,848,729),9889=>array(83,2,619,730),9890=>array(85,-125,919,731),9891=>array(79,-206,1023,720),9892=>array(85,-186,1109,856),9893=>array(85,-125,837,917),9894=>array(131,-14,727,869),9895=>array(101,-170,741,884),9896=>array(188,-14,650,869),9897=>array(4,133,829,596),9898=>array(188,133,650,597),9899=>array(188,133,650,597),9900=>array(249,194,589,536),9901=>array(175,194,663,536),9902=>array(41,169,797,560),9903=>array(5,194,833,536),9904=>array(103,237,757,540),9905=>array(211,42,626,698),9906=>array(85,-125,647,731),9907=>array(168,-125,646,731),9908=>array(86,-125,646,731),9909=>array(86,-125,646,731),9910=>array(59,-118,791,643),9911=>array(194,-104,595,710),9912=>array(158,-125,543,731),9920=>array(42,4,796,553),9921=>array(42,4,796,724),9922=>array(42,4,796,553),9923=>array(42,4,796,724),9954=>array(85,-14,647,843),9985=>array(11,190,803,635),9986=>array(42,141,784,588),9987=>array(11,94,803,539),9988=>array(36,119,824,613),9990=>array(42,-14,796,742),9991=>array(42,-14,796,742),9992=>array(59,21,782,708),9993=>array(64,107,773,622),9996=>array(212,0,561,742),9997=>array(21,83,802,678),9998=>array(89,75,724,710),9999=>array(26,198,819,530),10000=>array(89,75,724,710),10001=>array(43,185,757,544),10002=>array(67,209,757,520),10003=>array(150,97,667,630),10004=>array(116,87,721,631),10005=>array(126,72,711,657),10006=>array(85,31,752,698),10007=>array(118,-9,701,732),10008=>array(123,0,754,739),10009=>array(55,0,783,729),10010=>array(55,0,783,729),10011=>array(55,0,783,729),10012=>array(55,0,783,729),10013=>array(165,0,673,729),10014=>array(131,0,678,729),10015=>array(155,0,683,729),10016=>array(55,0,783,729),10017=>array(91,-13,747,744),10018=>array(41,-14,797,742),10019=>array(42,-12,796,742),10020=>array(41,-14,797,742),10021=>array(41,-13,797,743),10022=>array(42,-14,796,745),10023=>array(42,-14,796,745),10025=>array(23,-9,814,743),10026=>array(42,-14,796,742),10027=>array(23,-9,814,743),10028=>array(23,-9,814,743),10029=>array(23,-9,814,743),10030=>array(23,-9,814,743),10031=>array(23,-9,814,743),10032=>array(24,12,815,714),10033=>array(64,0,773,729),10034=>array(74,0,764,729),10035=>array(55,0,783,729),10036=>array(31,-14,787,742),10037=>array(41,-14,797,742),10038=>array(91,-14,747,742),10039=>array(41,-14,797,742),10040=>array(41,-14,797,742),10041=>array(41,-14,797,742),10042=>array(55,0,783,729),10043=>array(82,-14,756,742),10044=>array(82,-14,756,742),10045=>array(84,-14,753,742),10046=>array(79,-14,759,742),10047=>array(54,0,784,709),10048=>array(54,0,784,709),10049=>array(41,-14,797,742),10050=>array(42,-14,796,742),10051=>array(79,-14,759,742),10052=>array(89,0,749,729),10053=>array(76,0,762,729),10054=>array(63,2,773,729),10055=>array(79,-13,759,742),10056=>array(47,-13,791,730),10057=>array(47,-13,791,730),10058=>array(41,-13,797,743),10059=>array(41,-13,797,743),10061=>array(50,-10,847,738),10063=>array(60,-49,837,729),10064=>array(60,0,837,777),10065=>array(60,-49,837,729),10066=>array(60,0,837,777),10070=>array(83,-2,813,728),10072=>array(377,-240,460,760),10073=>array(336,-240,502,760),10074=>array(253,-240,585,760),10075=>array(85,395,264,729),10076=>array(59,395,237,729),10077=>array(85,395,479,729),10078=>array(59,395,453,729),10081=>array(155,-93,772,851),10082=>array(202,-17,636,742),10083=>array(163,-17,675,742),10084=>array(54,83,784,645),10085=>array(168,-1,729,729),10086=>array(62,21,724,702),10087=>array(78,169,759,564),10088=>array(196,-139,648,769),10089=>array(196,-139,648,769),10090=>array(264,-132,574,758),10091=>array(264,-132,574,758),10092=>array(215,-240,607,760),10093=>array(232,-240,623,760),10094=>array(142,-240,685,760),10095=>array(153,-240,696,760),10096=>array(167,-240,656,760),10097=>array(183,-240,672,760),10098=>array(346,-241,535,760),10099=>array(303,-241,492,760),10100=>array(175,-163,634,760),10101=>array(204,-163,663,760),10102=>array(59,-15,788,715),10103=>array(59,-15,788,715),10104=>array(59,-15,788,715),10105=>array(59,-15,788,715),10106=>array(59,-15,788,715),10107=>array(59,-15,788,715),10108=>array(59,-15,788,715),10109=>array(59,-15,788,715),10110=>array(59,-15,788,715),10111=>array(59,-15,788,715),10112=>array(4,-52,833,780),10113=>array(4,-52,833,780),10114=>array(4,-52,833,780),10115=>array(4,-52,833,780),10116=>array(4,-52,833,780),10117=>array(4,-52,833,780),10118=>array(4,-52,833,780),10119=>array(4,-52,833,780),10120=>array(4,-52,833,780),10121=>array(4,-52,833,780),10122=>array(4,-52,833,780),10123=>array(4,-52,833,780),10124=>array(4,-52,833,780),10125=>array(4,-52,833,780),10126=>array(4,-52,833,780),10127=>array(4,-52,833,780),10128=>array(4,-52,833,780),10129=>array(4,-52,833,780),10130=>array(4,-52,833,780),10131=>array(4,-52,833,780),10132=>array(57,75,789,552),10136=>array(123,55,682,614),10137=>array(57,100,789,527),10138=>array(123,13,682,572),10139=>array(57,129,789,498),10140=>array(57,57,764,570),10141=>array(57,100,789,527),10142=>array(57,100,789,527),10143=>array(57,100,789,527),10144=>array(57,100,789,527),10145=>array(57,46,811,581),10146=>array(111,94,789,533),10147=>array(111,94,789,533),10148=>array(111,-4,789,631),10149=>array(57,100,789,548),10150=>array(57,79,789,527),10151=>array(240,-7,606,634),10152=>array(57,100,789,527),10153=>array(57,75,765,552),10154=>array(57,75,765,552),10155=>array(21,12,794,586),10156=>array(21,12,794,586),10157=>array(135,0,774,574),10158=>array(135,0,774,574),10159=>array(62,49,799,574),10161=>array(62,49,799,574),10162=>array(154,-20,721,585),10163=>array(63,157,789,470),10164=>array(81,55,682,655),10165=>array(57,173,789,454),10166=>array(82,-29,682,572),10167=>array(82,55,682,655),10168=>array(57,172,789,455),10169=>array(82,-28,682,572),10170=>array(56,84,789,543),10171=>array(73,140,779,487),10172=>array(79,167,774,460),10173=>array(79,118,774,509),10174=>array(57,81,789,546),10181=>array(0,-163,438,769),10182=>array(-39,-163,474,769),10208=>array(3,-233,491,807),10214=>array(7,-132,498,760),10215=>array(7,-132,498,760),10216=>array(104,-132,464,759),10217=>array(-7,-132,353,759),10218=>array(104,-132,728,759),10219=>array(-7,-132,616,759),10224=>array(41,0,797,732),10225=>array(42,-3,798,729),10226=>array(9,45,816,685),10227=>array(22,45,830,685),10228=>array(57,-14,1108,643),10229=>array(49,87,1376,540),10230=>array(57,87,1385,540),10231=>array(49,87,1385,540),10232=>array(49,87,1376,540),10233=>array(57,87,1385,540),10234=>array(49,87,1385,540),10235=>array(49,87,1376,540),10236=>array(57,87,1385,540),10237=>array(49,87,1376,540),10238=>array(57,87,1385,540),10239=>array(57,87,1385,540),10240=>array(146,586,342,781),10241=>array(146,586,342,781),10242=>array(146,325,342,521),10243=>array(146,325,342,781),10244=>array(146,65,342,261),10245=>array(146,65,342,781),10246=>array(146,65,342,521),10247=>array(146,65,342,781),10248=>array(439,586,635,781),10249=>array(146,586,635,781),10250=>array(146,325,635,781),10251=>array(146,325,635,781),10252=>array(146,65,635,781),10253=>array(146,65,635,781),10254=>array(146,65,635,781),10255=>array(146,65,635,781),10256=>array(439,325,635,521),10257=>array(146,325,635,781),10258=>array(146,325,635,521),10259=>array(146,325,635,781),10260=>array(146,65,635,521),10261=>array(146,65,635,781),10262=>array(146,65,635,521),10263=>array(146,65,635,781),10264=>array(439,325,635,781),10265=>array(146,325,635,781),10266=>array(146,325,635,781),10267=>array(146,325,635,781),10268=>array(146,65,635,781),10269=>array(146,65,635,781),10270=>array(146,65,635,781),10271=>array(146,65,635,781),10272=>array(439,65,635,261),10273=>array(146,65,635,781),10274=>array(146,65,635,521),10275=>array(146,65,635,781),10276=>array(146,65,635,261),10277=>array(146,65,635,781),10278=>array(146,65,635,521),10279=>array(146,65,635,781),10280=>array(439,65,635,781),10281=>array(146,65,635,781),10282=>array(146,65,635,781),10283=>array(146,65,635,781),10284=>array(146,65,635,781),10285=>array(146,65,635,781),10286=>array(146,65,635,781),10287=>array(146,65,635,781),10288=>array(439,65,635,521),10289=>array(146,65,635,781),10290=>array(146,65,635,521),10291=>array(146,65,635,781),10292=>array(146,65,635,521),10293=>array(146,65,635,781),10294=>array(146,65,635,521),10295=>array(146,65,635,781),10296=>array(439,65,635,781),10297=>array(146,65,635,781),10298=>array(146,65,635,781),10299=>array(146,65,635,781),10300=>array(146,65,635,781),10301=>array(146,65,635,781),10302=>array(146,65,635,781),10303=>array(146,65,635,781),10304=>array(146,-195,342,0),10305=>array(146,-195,342,781),10306=>array(146,-195,342,521),10307=>array(146,-195,342,781),10308=>array(146,-195,342,261),10309=>array(146,-195,342,781),10310=>array(146,-195,342,521),10311=>array(146,-195,342,781),10312=>array(146,-195,635,781),10313=>array(146,-195,635,781),10314=>array(146,-195,635,781),10315=>array(146,-195,635,781),10316=>array(146,-195,635,781),10317=>array(146,-195,635,781),10318=>array(146,-195,635,781),10319=>array(146,-195,635,781),10320=>array(146,-195,635,521),10321=>array(146,-195,635,781),10322=>array(146,-195,635,521),10323=>array(146,-195,635,781),10324=>array(146,-195,635,521),10325=>array(146,-195,635,781),10326=>array(146,-195,635,521),10327=>array(146,-195,635,781),10328=>array(146,-195,635,781),10329=>array(146,-195,635,781),10330=>array(146,-195,635,781),10331=>array(146,-195,635,781),10332=>array(146,-195,635,781),10333=>array(146,-195,635,781),10334=>array(146,-195,635,781),10335=>array(146,-195,635,781),10336=>array(146,-195,635,261),10337=>array(146,-195,635,781),10338=>array(146,-195,635,521),10339=>array(146,-195,635,781),10340=>array(146,-195,635,261),10341=>array(146,-195,635,781),10342=>array(146,-195,635,521),10343=>array(146,-195,635,781),10344=>array(146,-195,635,781),10345=>array(146,-195,635,781),10346=>array(146,-195,635,781),10347=>array(146,-195,635,781),10348=>array(146,-195,635,781),10349=>array(146,-195,635,781),10350=>array(146,-195,635,781),10351=>array(146,-195,635,781),10352=>array(146,-195,635,521),10353=>array(146,-195,635,781),10354=>array(146,-195,635,521),10355=>array(146,-195,635,781),10356=>array(146,-195,635,521),10357=>array(146,-195,635,781),10358=>array(146,-195,635,521),10359=>array(146,-195,635,781),10360=>array(146,-195,635,781),10361=>array(146,-195,635,781),10362=>array(146,-195,635,781),10363=>array(146,-195,635,781),10364=>array(146,-195,635,781),10365=>array(146,-195,635,781),10366=>array(146,-195,635,781),10367=>array(146,-195,635,781),10368=>array(439,-195,635,0),10369=>array(146,-195,635,781),10370=>array(146,-195,635,521),10371=>array(146,-195,635,781),10372=>array(146,-195,635,261),10373=>array(146,-195,635,781),10374=>array(146,-195,635,521),10375=>array(146,-195,635,781),10376=>array(439,-195,635,781),10377=>array(146,-195,635,781),10378=>array(146,-195,635,781),10379=>array(146,-195,635,781),10380=>array(146,-195,635,781),10381=>array(146,-195,635,781),10382=>array(146,-195,635,781),10383=>array(146,-195,635,781),10384=>array(439,-195,635,521),10385=>array(146,-195,635,781),10386=>array(146,-195,635,521),10387=>array(146,-195,635,781),10388=>array(146,-195,635,521),10389=>array(146,-195,635,781),10390=>array(146,-195,635,521),10391=>array(146,-195,635,781),10392=>array(439,-195,635,781),10393=>array(146,-195,635,781),10394=>array(146,-195,635,781),10395=>array(146,-195,635,781),10396=>array(146,-195,635,781),10397=>array(146,-195,635,781),10398=>array(146,-195,635,781),10399=>array(146,-195,635,781),10400=>array(439,-195,635,261),10401=>array(146,-195,635,781),10402=>array(146,-195,635,521),10403=>array(146,-195,635,781),10404=>array(146,-195,635,261),10405=>array(146,-195,635,781),10406=>array(146,-195,635,521),10407=>array(146,-195,635,781),10408=>array(439,-195,635,781),10409=>array(146,-195,635,781),10410=>array(146,-195,635,781),10411=>array(146,-195,635,781),10412=>array(146,-195,635,781),10413=>array(146,-195,635,781),10414=>array(146,-195,635,781),10415=>array(146,-195,635,781),10416=>array(439,-195,635,521),10417=>array(146,-195,635,781),10418=>array(146,-195,635,521),10419=>array(146,-195,635,781),10420=>array(146,-195,635,521),10421=>array(146,-195,635,781),10422=>array(146,-195,635,521),10423=>array(146,-195,635,781),10424=>array(439,-195,635,781),10425=>array(146,-195,635,781),10426=>array(146,-195,635,781),10427=>array(146,-195,635,781),10428=>array(146,-195,635,781),10429=>array(146,-195,635,781),10430=>array(146,-195,635,781),10431=>array(146,-195,635,781),10432=>array(146,-195,635,0),10433=>array(146,-195,635,781),10434=>array(146,-195,635,521),10435=>array(146,-195,635,781),10436=>array(146,-195,635,261),10437=>array(146,-195,635,781),10438=>array(146,-195,635,521),10439=>array(146,-195,635,781),10440=>array(146,-195,635,781),10441=>array(146,-195,635,781),10442=>array(146,-195,635,781),10443=>array(146,-195,635,781),10444=>array(146,-195,635,781),10445=>array(146,-195,635,781),10446=>array(146,-195,635,781),10447=>array(146,-195,635,781),10448=>array(146,-195,635,521),10449=>array(146,-195,635,781),10450=>array(146,-195,635,521),10451=>array(146,-195,635,781),10452=>array(146,-195,635,521),10453=>array(146,-195,635,781),10454=>array(146,-195,635,521),10455=>array(146,-195,635,781),10456=>array(146,-195,635,781),10457=>array(146,-195,635,781),10458=>array(146,-195,635,781),10459=>array(146,-195,635,781),10460=>array(146,-195,635,781),10461=>array(146,-195,635,781),10462=>array(146,-195,635,781),10463=>array(146,-195,635,781),10464=>array(146,-195,635,261),10465=>array(146,-195,635,781),10466=>array(146,-195,635,521),10467=>array(146,-195,635,781),10468=>array(146,-195,635,261),10469=>array(146,-195,635,781),10470=>array(146,-195,635,521),10471=>array(146,-195,635,781),10472=>array(146,-195,635,781),10473=>array(146,-195,635,781),10474=>array(146,-195,635,781),10475=>array(146,-195,635,781),10476=>array(146,-195,635,781),10477=>array(146,-195,635,781),10478=>array(146,-195,635,781),10479=>array(146,-195,635,781),10480=>array(146,-195,635,521),10481=>array(146,-195,635,781),10482=>array(146,-195,635,521),10483=>array(146,-195,635,781),10484=>array(146,-195,635,521),10485=>array(146,-195,635,781),10486=>array(146,-195,635,521),10487=>array(146,-195,635,781),10488=>array(146,-195,635,781),10489=>array(146,-195,635,781),10490=>array(146,-195,635,781),10491=>array(146,-195,635,781),10492=>array(146,-195,635,781),10493=>array(146,-195,635,781),10494=>array(146,-195,635,781),10495=>array(146,-195,635,781),10502=>array(49,87,781,540),10503=>array(57,87,789,540),10506=>array(132,0,707,732),10507=>array(132,0,707,732),10560=>array(86,45,726,853),10561=>array(86,45,726,853),10627=>array(117,-163,718,760),10628=>array(35,-163,636,760),10702=>array(106,-258,732,800),10703=>array(106,-1,940,628),10704=>array(106,-1,940,628),10705=>array(106,-48,894,674),10706=>array(106,-48,894,674),10707=>array(106,-48,894,674),10708=>array(106,-48,894,675),10709=>array(106,-48,894,675),10731=>array(3,-233,491,807),10746=>array(106,0,732,627),10747=>array(106,0,732,627),10752=>array(28,-211,972,734),10753=>array(28,-211,972,734),10754=>array(28,-211,972,734),10764=>array(15,-227,1646,754),10765=>array(14,-227,548,754),10766=>array(14,-227,548,754),10767=>array(14,-227,548,754),10768=>array(14,-227,548,754),10769=>array(14,-227,576,754),10770=>array(14,-227,548,754),10771=>array(14,-227,548,754),10772=>array(14,-228,651,754),10773=>array(14,-227,548,754),10774=>array(14,-227,548,754),10775=>array(-30,-227,556,754),10776=>array(14,-227,548,754),10777=>array(14,-227,548,754),10778=>array(14,-227,548,754),10779=>array(15,-227,548,898),10780=>array(15,-372,548,754),10799=>array(125,20,713,607),10858=>array(106,212,732,660),10859=>array(106,-34,732,660),10877=>array(106,-150,732,632),10878=>array(106,-150,732,632),10879=>array(106,-150,732,632),10880=>array(106,-150,732,632),10881=>array(106,-150,732,688),10882=>array(106,-150,732,688),10883=>array(106,-150,732,827),10884=>array(106,-150,732,827),10885=>array(106,-217,732,630),10886=>array(106,-217,732,630),10887=>array(106,-124,732,582),10888=>array(106,-124,732,582),10889=>array(106,-281,732,630),10890=>array(106,-281,732,630),10891=>array(106,-303,732,814),10892=>array(106,-303,732,814),10893=>array(106,-183,732,653),10894=>array(106,-183,732,653),10895=>array(106,-245,732,765),10896=>array(106,-245,732,765),10897=>array(106,-278,732,782),10898=>array(106,-278,732,782),10899=>array(106,-263,732,771),10900=>array(106,-263,732,771),10901=>array(106,-50,732,733),10902=>array(106,-50,732,733),10903=>array(106,-50,732,733),10904=>array(106,-50,732,733),10905=>array(106,-45,732,678),10906=>array(106,-45,732,678),10907=>array(106,-81,732,724),10908=>array(106,-81,732,724),10909=>array(106,13,732,680),10910=>array(106,13,732,680),10911=>array(106,-239,732,746),10912=>array(106,-239,732,746),10926=>array(106,22,732,656),10927=>array(106,-83,732,684),10928=>array(106,-83,732,684),10929=>array(106,-246,732,684),10930=>array(106,-246,732,684),10931=>array(106,-205,732,672),10932=>array(106,-205,732,672),10933=>array(106,-304,732,672),10934=>array(106,-304,732,672),10935=>array(106,-252,732,713),10936=>array(106,-252,732,713),10937=>array(106,-316,732,713),10938=>array(106,-316,732,713),11001=>array(106,-195,732,609),11002=>array(106,-195,732,609),11008=>array(123,-23,744,598),11009=>array(94,-23,715,598),11010=>array(123,-23,744,598),11011=>array(94,-23,715,598),11012=>array(27,46,789,581),11013=>array(27,46,781,581),11014=>array(151,0,687,754),11015=>array(151,-25,687,729),11016=>array(123,-23,744,598),11017=>array(94,-23,715,598),11018=>array(123,-23,744,598),11019=>array(94,-23,715,598),11020=>array(27,46,789,581),11021=>array(151,-25,687,754),11022=>array(57,-25,800,372),11023=>array(57,255,800,652),11024=>array(38,-25,781,372),11025=>array(38,255,781,652),11026=>array(91,-124,854,643),11027=>array(91,-124,854,643),11028=>array(91,-124,854,643),11029=>array(91,-124,854,643),11030=>array(3,-124,766,643),11031=>array(3,-124,766,643),11032=>array(3,-124,766,643),11033=>array(3,-124,766,643),11034=>array(91,-124,854,643),11039=>array(18,-26,852,767),11040=>array(18,-26,852,767),11041=>array(73,-91,800,748),11042=>array(73,-91,800,748),11043=>array(17,-35,856,692),11044=>array(55,-250,1064,770),11091=>array(38,-47,832,788),11092=>array(38,-47,832,788),11360=>array(-24,0,566,729),11361=>array(-35,0,390,760),11362=>array(-28,0,566,729),11363=>array(18,0,716,729),11364=>array(54,-200,708,729),11365=>array(-21,-46,692,594),11366=>array(-6,-93,531,822),11367=>array(36,-157,904,729),11368=>array(23,-138,770,760),11369=>array(36,-157,855,729),11370=>array(23,-138,709,760),11371=>array(-11,-157,755,729),11372=>array(5,-138,606,547),11373=>array(48,-14,840,741),11374=>array(41,-200,993,729),11375=>array(76,0,840,729),11376=>array(-23,-14,780,741),11377=>array(67,0,797,560),11378=>array(99,0,1263,742),11379=>array(87,0,1075,560),11380=>array(44,0,687,586),11381=>array(21,0,623,729),11382=>array(31,0,494,547),11383=>array(64,0,724,552),11385=>array(10,-13,529,760),11386=>array(43,-14,644,560),11387=>array(25,0,520,547),11388=>array(-75,-121,219,425),11389=>array(42,326,524,734),11390=>array(37,-240,688,742),11391=>array(-2,-240,763,729),11520=>array(41,-64,638,547),11521=>array(-12,-232,663,546),11522=>array(28,-232,635,547),11523=>array(42,-10,646,807),11524=>array(29,-228,642,546),11525=>array(21,-228,1017,546),11526=>array(74,-8,697,816),11527=>array(31,-9,1003,547),11528=>array(42,0,617,547),11529=>array(29,-227,643,816),11530=>array(20,-9,1014,546),11531=>array(35,-8,687,816),11532=>array(20,0,656,816),11533=>array(30,-8,1025,546),11534=>array(29,-8,667,546),11535=>array(55,-228,875,816),11536=>array(30,-9,1005,816),11537=>array(29,-9,668,816),11538=>array(26,-232,632,546),11539=>array(29,-228,1024,661),11540=>array(40,-228,980,546),11541=>array(26,-228,1009,816),11542=>array(24,0,657,546),11543=>array(29,-228,668,547),11544=>array(29,-232,665,546),11545=>array(27,-228,657,816),11546=>array(26,-232,632,547),11547=>array(41,-9,695,816),11548=>array(24,-228,1018,547),11549=>array(23,-232,641,546),11550=>array(31,-232,677,546),11551=>array(16,-228,653,567),11552=>array(24,-9,1042,546),11553=>array(31,-228,648,816),11554=>array(38,-9,625,626),11555=>array(40,-228,659,816),11556=>array(30,-228,721,546),11557=>array(40,-8,982,816),11800=>array(37,-13,494,729),11807=>array(106,-34,732,415),11810=>array(77,314,466,760),11811=>array(124,314,448,760),11812=>array(-10,-132,314,314),11813=>array(-28,-132,362,314),11822=>array(104,0,580,742),19904=>array(83,-158,813,729),19905=>array(83,-158,813,729),19906=>array(83,-158,813,729),19907=>array(83,-158,813,729),19908=>array(83,-158,813,729),19909=>array(83,-158,813,729),19910=>array(83,-158,813,729),19911=>array(83,-158,813,729),19912=>array(83,-158,813,729),19913=>array(83,-158,814,729),19914=>array(83,-158,813,729),19915=>array(83,-158,813,729),19916=>array(83,-158,813,729),19917=>array(83,-158,813,729),19918=>array(83,-158,813,729),19919=>array(83,-158,813,729),19920=>array(83,-158,814,729),19921=>array(83,-158,813,729),19922=>array(83,-158,814,729),19923=>array(83,-158,813,729),19924=>array(83,-158,813,729),19925=>array(83,-158,813,729),19926=>array(83,-158,813,729),19927=>array(83,-158,813,729),19928=>array(83,-158,813,729),19929=>array(83,-158,813,729),19930=>array(83,-158,813,729),19931=>array(83,-158,814,729),19932=>array(83,-158,813,729),19933=>array(83,-158,813,729),19934=>array(83,-158,814,729),19935=>array(83,-158,813,729),19936=>array(83,-158,813,729),19937=>array(83,-158,813,729),19938=>array(83,-158,813,729),19939=>array(83,-158,813,729),19940=>array(83,-158,813,729),19941=>array(83,-158,814,729),19942=>array(83,-158,813,729),19943=>array(83,-158,813,729),19944=>array(83,-158,814,729),19945=>array(83,-158,813,729),19946=>array(83,-158,814,729),19947=>array(83,-158,813,729),19948=>array(83,-158,814,729),19949=>array(83,-158,813,729),19950=>array(83,-158,814,729),19951=>array(83,-158,813,729),19952=>array(83,-158,814,729),19953=>array(83,-158,813,729),19954=>array(83,-158,813,729),19955=>array(83,-158,813,729),19956=>array(83,-158,813,729),19957=>array(83,-158,814,729),19958=>array(83,-158,813,729),19959=>array(83,-158,813,729),19960=>array(83,-158,813,729),19961=>array(83,-158,814,729),19962=>array(83,-158,813,729),19963=>array(83,-158,814,729),19964=>array(83,-158,814,729),19965=>array(83,-158,813,729),19966=>array(83,-158,813,729),19967=>array(83,-158,813,729),42192=>array(21,0,699,729),42193=>array(21,0,719,729),42194=>array(17,0,712,729),42195=>array(21,0,786,729),42196=>array(48,0,748,729),42197=>array(-65,0,634,729),42198=>array(36,-14,778,742),42199=>array(21,0,837,729),42200=>array(-65,0,754,729),42201=>array(7,-14,581,729),42202=>array(36,-14,724,742),42203=>array(-13,-14,675,742),42204=>array(-26,0,740,729),42205=>array(21,0,670,729),42206=>array(21,0,670,729),42207=>array(21,0,974,729),42208=>array(21,0,816,729),42209=>array(21,0,566,729),42210=>array(15,-14,665,742),42211=>array(21,0,685,729),42212=>array(81,0,749,729),42213=>array(-66,0,698,729),42214=>array(76,0,840,729),42215=>array(21,0,816,729),42216=>array(5,-14,747,742),42217=>array(19,0,592,743),42218=>array(107,0,1143,729),42219=>array(-51,0,812,729),42220=>array(63,0,809,729),42221=>array(67,0,741,729),42222=>array(-65,0,691,729),42223=>array(76,0,840,729),42224=>array(21,0,670,729),42225=>array(13,0,662,729),42226=>array(21,0,351,729),42227=>array(36,-14,814,742),42228=>array(68,-14,791,729),42229=>array(20,0,733,743),42230=>array(9,0,554,729),42231=>array(48,0,809,729),42232=>array(17,0,230,189),42233=>array(-63,-142,227,189),42234=>array(17,0,582,189),42235=>array(17,-142,579,189),42236=>array(-74,-142,284,547),42237=>array(2,0,284,547),42238=>array(88,0,554,405),42239=>array(39,134,549,492),42564=>array(-1,-14,631,742),42565=>array(-7,-14,534,560),42566=>array(74,0,384,729),42567=>array(74,-1,326,547),42572=>array(37,-14,1348,654),42573=>array(31,-13,1129,547),42576=>array(92,0,1213,729),42577=>array(52,0,1000,547),42580=>array(45,-14,1153,742),42581=>array(37,-14,941,560),42582=>array(21,0,1017,729),42583=>array(31,-14,905,560),42594=>array(-26,-157,1144,729),42595=>array(-10,-138,967,547),42596=>array(-25,0,1140,729),42597=>array(2,0,941,547),42598=>array(21,0,1304,729),42599=>array(28,0,1023,547),42600=>array(36,-14,814,742),42601=>array(36,-14,651,560),42602=>array(50,-14,987,742),42603=>array(43,-14,825,560),42604=>array(50,-14,1356,742),42605=>array(43,-14,1063,560),42606=>array(28,-208,933,743),42634=>array(48,-200,863,729),42635=>array(34,-216,672,547),42636=>array(48,0,748,729),42637=>array(34,0,626,547),42644=>array(106,0,793,729),42645=>array(10,0,625,760),42760=>array(146,0,471,693),42761=>array(117,0,471,693),42762=>array(87,0,471,693),42763=>array(58,0,471,693),42764=>array(29,0,471,693),42765=>array(29,0,471,693),42766=>array(29,0,442,693),42767=>array(29,0,413,693),42768=>array(29,0,383,693),42769=>array(29,0,354,693),42770=>array(29,0,471,693),42771=>array(29,0,442,693),42772=>array(29,0,413,693),42773=>array(29,0,383,693),42774=>array(29,0,354,693),42779=>array(180,326,464,736),42780=>array(142,324,426,734),42781=>array(152,326,342,734),42782=>array(152,326,342,734),42783=>array(88,0,278,408),42786=>array(30,0,432,729),42787=>array(38,0,369,547),42788=>array(55,224,530,742),42789=>array(55,42,530,560),42790=>array(41,-200,835,729),42791=>array(31,-216,646,760),42792=>array(69,-216,984,729),42793=>array(48,-215,810,702),42794=>array(37,-14,652,742),42795=>array(-2,-202,517,560),42800=>array(39,0,526,547),42801=>array(10,-14,560,560),42802=>array(-66,0,1273,729),42803=>array(22,-14,981,560),42804=>array(-65,-14,1249,742),42805=>array(17,-14,1029,560),42806=>array(-65,-14,1224,729),42807=>array(17,-14,1021,560),42808=>array(-66,0,1145,729),42809=>array(22,-14,960,560),42810=>array(-66,0,1145,729),42811=>array(22,-14,960,560),42812=>array(-45,-216,1122,729),42813=>array(42,-216,979,560),42814=>array(-13,-14,670,742),42815=>array(-7,-14,537,560),42816=>array(21,0,837,729),42817=>array(31,0,716,760),42822=>array(81,0,779,729),42823=>array(68,0,472,760),42824=>array(65,0,612,729),42825=>array(81,0,520,760),42826=>array(4,-14,915,742),42827=>array(-4,-14,821,560),42830=>array(50,-14,1356,742),42831=>array(43,-14,1063,560),42832=>array(-42,0,723,729),42833=>array(-81,-208,679,560),42834=>array(-1,0,938,729),42835=>array(0,-208,900,560),42838=>array(40,-188,811,742),42839=>array(34,-208,682,559),42852=>array(21,0,698,729),42853=>array(-11,-208,678,760),42854=>array(-50,0,698,729),42855=>array(-82,-208,678,760),42880=>array(71,0,616,729),42881=>array(11,-208,332,547),42882=>array(-8,-208,776,742),42883=>array(-10,-208,654,560),42889=>array(41,0,323,547),42890=>array(63,141,333,405),42891=>array(142,245,387,729),42892=>array(69,458,237,729),42893=>array(100,0,787,729),42894=>array(93,-216,613,760),42896=>array(21,-157,824,729),42897=>array(31,-138,695,560),42912=>array(-17,-14,837,742),42913=>array(-19,-216,735,559),42914=>array(-16,0,837,729),42915=>array(-18,0,716,760),42916=>array(-17,0,854,729),42917=>array(-19,0,731,560),42918=>array(-15,0,785,729),42919=>array(-15,0,545,560),42920=>array(-14,-14,734,742),42921=>array(-17,-14,612,560),42922=>array(-37,0,865,729),43002=>array(31,0,1025,547),43003=>array(92,0,662,729),43004=>array(65,0,712,729),43005=>array(21,0,974,729),43006=>array(1,0,370,928),43007=>array(-40,0,1365,729),61184=>array(141,602,384,693),61185=>array(83,451,406,693),61186=>array(29,301,430,693),61187=>array(-12,150,440,693),61188=>array(-47,0,446,693),61189=>array(100,451,376,693),61190=>array(112,451,355,543),61191=>array(54,301,376,543),61192=>array(0,150,401,543),61193=>array(-41,0,411,543),61194=>array(82,301,372,693),61195=>array(71,301,347,543),61196=>array(83,301,326,393),61197=>array(25,150,347,393),61198=>array(-29,0,372,393),61199=>array(75,150,353,693),61200=>array(53,149,342,542),61201=>array(42,150,318,393),61202=>array(53,150,296,242),61203=>array(-4,0,318,242),61204=>array(73,0,329,693),61205=>array(46,0,323,543),61206=>array(23,0,313,393),61207=>array(12,0,289,242),61208=>array(24,0,268,92),61209=>array(29,0,255,693),62464=>array(84,-14,614,819),62465=>array(90,-15,610,823),62466=>array(86,-14,652,828),62467=>array(124,0,954,828),62468=>array(80,-15,679,828),62469=>array(81,-15,657,828),62470=>array(129,-15,677,828),62471=>array(92,-14,949,828),62472=>array(98,0,644,828),62473=>array(80,-14,684,820),62474=>array(139,-6,1218,828),62475=>array(81,-14,674,828),62476=>array(88,-15,675,820),62477=>array(107,0,938,828),62478=>array(78,-15,654,819),62479=>array(87,-15,722,840),62480=>array(99,0,938,828),62481=>array(99,-14,618,819),62482=>array(97,-14,785,828),62483=>array(80,-14,680,828),62484=>array(136,-14,947,828),62485=>array(79,-14,717,819),62486=>array(113,0,963,828),62487=>array(74,-14,717,820),62488=>array(72,-14,672,828),62489=>array(40,0,626,828),62490=>array(100,-15,715,820),62491=>array(86,-14,717,819),62492=>array(90,-14,729,828),62493=>array(79,-14,719,820),62494=>array(94,-14,619,819),62495=>array(29,-14,623,828),62496=>array(81,-15,658,828),62497=>array(88,-15,677,828),62498=>array(14,-73,658,828),62499=>array(77,-15,719,830),62500=>array(78,-15,726,828),62501=>array(76,-14,732,828),62502=>array(126,-14,1016,828),62504=>array(40,-228,982,816),62505=>array(48,-223,821,843),62506=>array(81,-14,565,761),62507=>array(81,-14,567,773),62508=>array(81,-14,586,866),62509=>array(81,-14,623,812),62510=>array(81,-14,604,877),62511=>array(81,-14,577,803),62512=>array(31,-232,574,761),62513=>array(31,-232,631,793),62514=>array(31,-232,649,891),62515=>array(31,-232,601,803),62516=>array(80,0,589,761),62517=>array(80,0,637,793),62518=>array(80,0,601,803),62519=>array(97,-0,813,761),62520=>array(97,-0,813,773),62521=>array(97,-0,813,884),62522=>array(97,-0,813,793),62523=>array(97,-0,813,803),62524=>array(76,-232,621,761),62525=>array(76,-232,621,773),62526=>array(76,-232,630,894),62527=>array(76,-232,636,793),62528=>array(76,-232,621,803),62529=>array(76,-232,621,844),62917=>array(16,-14,648,760),64256=>array(50,0,916,760),64257=>array(50,0,798,760),64258=>array(50,0,798,760),64259=>array(50,0,1128,760),64260=>array(50,0,1129,760),64261=>array(45,0,836,760),64262=>array(8,-14,1047,742),64275=>array(47,-14,1334,760),64276=>array(47,-14,1335,760),64277=>array(65,-208,1311,760),64278=>array(65,-208,1353,760),64279=>array(65,-208,1682,760),64285=>array(98,38,334,547),64286=>array(194,635,524,780),64287=>array(98,36,655,547),64288=>array(38,0,697,547),64289=>array(120,0,926,547),64290=>array(126,0,838,547),64291=>array(100,0,840,547),64292=>array(43,0,791,547),64293=>array(126,0,837,739),64294=>array(91,0,842,547),64295=>array(126,0,794,547),64296=>array(48,-4,798,547),64297=>array(155,256,804,627),64298=>array(89,0,857,710),64299=>array(89,0,856,723),64300=>array(89,0,856,710),64301=>array(89,0,856,710),64302=>array(104,-171,730,547),64303=>array(104,-217,730,547),64304=>array(104,-171,730,547),64305=>array(43,0,590,547),64306=>array(44,-9,428,547),64307=>array(126,0,651,547),64308=>array(100,0,661,547),64309=>array(73,0,452,547),64310=>array(73,0,548,547),64311=>array(142,-13,676,553),64312=>array(142,-13,676,553),64313=>array(101,164,476,547),64314=>array(126,-240,549,547),64315=>array(43,0,570,547),64316=>array(126,0,633,711),64317=>array(84,0,690,554),64318=>array(84,0,690,554),64319=>array(43,0,430,547),64320=>array(43,0,430,547),64321=>array(144,-13,678,547),64322=>array(158,-240,642,547),64323=>array(158,-240,642,547),64324=>array(91,0,656,547),64325=>array(54,0,670,547),64326=>array(54,0,670,547),64327=>array(51,-240,767,546),64328=>array(126,0,575,547),64329=>array(89,0,856,547),64330=>array(11,-4,650,547),64331=>array(91,0,359,710),64332=>array(43,0,590,710),64333=>array(43,0,570,710),64334=>array(91,0,656,710),64335=>array(47,0,732,729),65024=>array(-276,735,171,880),65025=>array(-276,735,171,880),65026=>array(-276,735,171,880),65027=>array(-276,735,171,880),65028=>array(-276,735,171,880),65029=>array(-276,735,171,880),65030=>array(-276,735,171,880),65031=>array(-276,735,171,880),65032=>array(-276,735,171,880),65033=>array(-276,735,171,880),65034=>array(-276,735,171,880),65035=>array(-276,735,171,880),65036=>array(-276,735,171,880),65037=>array(-276,735,171,880),65038=>array(-276,735,171,880),65039=>array(-276,735,171,880),65056=>array(-276,735,171,880),65057=>array(157,735,564,880),65058=>array(-215,756,169,894),65059=>array(152,756,536,894),65529=>array(100,-139,1164,926),65530=>array(100,-139,1164,926),65531=>array(100,-139,1164,926),65532=>array(100,-139,1164,926),65533=>array(100,-139,1164,926),65535=>array(50,-177,550,705));
15
- $cw=array(0=>600,32=>348,33=>456,34=>521,35=>696,36=>696,37=>1002,38=>872,39=>306,40=>457,41=>457,42=>523,43=>838,44=>380,45=>415,46=>380,47=>365,48=>696,49=>696,50=>696,51=>696,52=>696,53=>696,54=>696,55=>696,56=>696,57=>696,58=>400,59=>400,60=>838,61=>838,62=>838,63=>580,64=>1000,65=>774,66=>762,67=>734,68=>830,69=>683,70=>683,71=>821,72=>837,73=>372,74=>372,75=>775,76=>637,77=>995,78=>837,79=>850,80=>733,81=>850,82=>770,83=>720,84=>682,85=>812,86=>774,87=>1103,88=>771,89=>724,90=>725,91=>457,92=>365,93=>457,94=>838,95=>500,96=>500,97=>675,98=>716,99=>593,100=>716,101=>678,102=>435,103=>716,104=>712,105=>343,106=>343,107=>665,108=>343,109=>1042,110=>712,111=>687,112=>716,113=>716,114=>493,115=>595,116=>478,117=>712,118=>652,119=>924,120=>645,121=>652,122=>582,123=>712,124=>365,125=>712,126=>838,160=>348,161=>456,162=>696,163=>696,164=>636,165=>696,166=>365,167=>500,168=>500,169=>1000,170=>564,171=>650,172=>838,173=>415,174=>1000,175=>500,176=>500,177=>838,178=>438,179=>438,180=>500,181=>736,182=>636,183=>380,184=>500,185=>438,186=>564,187=>650,188=>1035,189=>1035,190=>1035,191=>580,192=>774,193=>774,194=>774,195=>774,196=>774,197=>774,198=>1085,199=>734,200=>683,201=>683,202=>683,203=>683,204=>372,205=>372,206=>372,207=>372,208=>845,209=>837,210=>850,211=>850,212=>850,213=>850,214=>850,215=>838,216=>850,217=>812,218=>812,219=>812,220=>812,221=>724,222=>742,223=>719,224=>675,225=>675,226=>675,227=>675,228=>675,229=>675,230=>1048,231=>593,232=>678,233=>678,234=>678,235=>678,236=>343,237=>343,238=>343,239=>343,240=>687,241=>712,242=>687,243=>687,244=>687,245=>687,246=>687,247=>838,248=>687,249=>712,250=>712,251=>712,252=>712,253=>652,254=>716,255=>652,256=>774,257=>675,258=>774,259=>675,260=>774,261=>675,262=>734,263=>593,264=>734,265=>593,266=>734,267=>593,268=>734,269=>593,270=>830,271=>716,272=>845,273=>716,274=>683,275=>678,276=>683,277=>678,278=>683,279=>678,280=>683,281=>678,282=>683,283=>678,284=>821,285=>716,286=>821,287=>716,288=>821,289=>716,290=>821,291=>716,292=>837,293=>712,294=>974,295=>790,296=>372,297=>343,298=>372,299=>343,300=>372,301=>343,302=>372,303=>343,304=>372,305=>343,306=>744,307=>686,308=>372,309=>343,310=>775,311=>665,312=>665,313=>637,314=>343,315=>637,316=>343,317=>637,318=>343,319=>637,320=>343,321=>660,322=>375,323=>837,324=>712,325=>837,326=>712,327=>837,328=>712,329=>983,330=>837,331=>712,332=>850,333=>687,334=>850,335=>687,336=>850,337=>687,338=>1167,339=>1094,340=>770,341=>493,342=>770,343=>493,344=>770,345=>493,346=>720,347=>595,348=>720,349=>595,350=>720,351=>595,352=>720,353=>595,354=>682,355=>478,356=>682,357=>478,358=>682,359=>478,360=>812,361=>712,362=>812,363=>712,364=>812,365=>712,366=>812,367=>712,368=>812,369=>712,370=>812,371=>712,372=>1103,373=>924,374=>724,375=>652,376=>724,377=>725,378=>582,379=>725,380=>582,381=>725,382=>582,383=>435,384=>716,385=>811,386=>762,387=>716,388=>762,389=>716,390=>734,391=>734,392=>593,393=>845,394=>879,395=>762,396=>716,397=>687,398=>683,399=>850,400=>696,401=>683,402=>435,403=>821,404=>793,405=>1045,406=>436,407=>389,408=>775,409=>665,410=>360,411=>592,412=>1042,413=>837,414=>712,415=>850,416=>850,417=>687,418=>1114,419=>962,420=>782,421=>716,422=>770,423=>720,424=>595,425=>683,426=>552,427=>478,428=>707,429=>478,430=>682,431=>812,432=>712,433=>769,434=>813,435=>797,436=>778,437=>725,438=>582,439=>772,440=>772,441=>641,442=>582,443=>696,444=>772,445=>641,446=>573,447=>716,448=>372,449=>659,450=>544,451=>372,452=>1548,453=>1450,454=>1307,455=>977,456=>979,457=>670,458=>1193,459=>1213,460=>1063,461=>774,462=>675,463=>372,464=>343,465=>850,466=>687,467=>812,468=>712,469=>812,470=>712,471=>812,472=>712,473=>812,474=>712,475=>812,476=>712,477=>678,478=>774,479=>675,480=>774,481=>675,482=>1085,483=>1048,484=>821,485=>716,486=>821,487=>716,488=>775,489=>665,490=>850,491=>687,492=>850,493=>687,494=>772,495=>582,496=>343,497=>1548,498=>1450,499=>1307,500=>821,501=>716,502=>1289,503=>787,504=>837,505=>712,506=>774,507=>675,508=>1085,509=>1048,510=>850,511=>687,512=>774,513=>675,514=>774,515=>675,516=>683,517=>678,518=>683,519=>678,520=>372,521=>343,522=>372,523=>343,524=>850,525=>687,526=>850,527=>687,528=>770,529=>493,530=>770,531=>493,532=>812,533=>712,534=>812,535=>712,536=>720,537=>595,538=>682,539=>478,540=>690,541=>607,542=>837,543=>712,544=>837,545=>865,546=>809,547=>659,548=>725,549=>582,550=>774,551=>675,552=>683,553=>678,554=>850,555=>687,556=>850,557=>687,558=>850,559=>687,560=>850,561=>687,562=>724,563=>652,564=>492,565=>867,566=>512,567=>343,568=>1088,569=>1088,570=>774,571=>734,572=>593,573=>637,574=>682,575=>595,576=>582,577=>782,578=>614,579=>762,580=>812,581=>774,582=>683,583=>678,584=>372,585=>343,586=>860,587=>791,588=>770,589=>493,590=>724,591=>652,592=>675,593=>716,594=>716,595=>716,596=>593,597=>593,598=>791,599=>792,600=>678,601=>678,602=>876,603=>557,604=>545,605=>774,606=>731,607=>343,608=>792,609=>716,610=>627,611=>735,612=>635,613=>712,614=>712,615=>712,616=>545,617=>440,618=>545,619=>559,620=>693,621=>343,622=>841,623=>1042,624=>1042,625=>1042,626=>712,627=>793,628=>642,629=>687,630=>909,631=>682,632=>796,633=>538,634=>538,635=>650,636=>493,637=>493,638=>596,639=>596,640=>642,641=>642,642=>595,643=>415,644=>435,645=>605,646=>552,647=>478,648=>478,649=>920,650=>769,651=>670,652=>652,653=>924,654=>652,655=>724,656=>694,657=>684,658=>641,659=>641,660=>573,661=>573,662=>573,663=>573,664=>850,665=>633,666=>731,667=>685,668=>691,669=>343,670=>732,671=>539,672=>792,673=>573,674=>573,675=>1156,676=>1214,677=>1155,678=>975,679=>769,680=>929,681=>1026,682=>862,683=>780,684=>591,685=>415,686=>677,687=>789,688=>456,689=>456,690=>219,691=>315,692=>315,693=>315,694=>411,695=>591,696=>417,697=>302,698=>521,699=>380,700=>380,701=>380,702=>366,703=>366,704=>326,705=>326,706=>500,707=>500,708=>500,709=>500,710=>500,711=>500,712=>306,713=>500,714=>500,715=>500,716=>306,717=>500,718=>500,719=>500,720=>337,721=>337,722=>366,723=>366,724=>500,725=>500,726=>416,727=>328,728=>500,729=>500,730=>500,731=>500,732=>500,733=>500,734=>351,735=>500,736=>412,737=>219,738=>381,739=>413,740=>326,741=>500,742=>500,743=>500,744=>500,745=>500,748=>500,749=>500,750=>644,755=>500,759=>500,768=>0,769=>0,770=>0,771=>0,772=>0,773=>0,774=>0,775=>0,776=>0,777=>0,778=>0,779=>0,780=>0,781=>0,782=>0,783=>0,784=>0,785=>0,786=>0,787=>0,788=>0,789=>0,790=>0,791=>0,792=>0,793=>0,794=>0,795=>0,796=>0,797=>0,798=>0,799=>0,800=>0,801=>0,802=>0,803=>0,804=>0,805=>0,806=>0,807=>0,808=>0,809=>0,810=>0,811=>0,812=>0,813=>0,814=>0,815=>0,816=>0,817=>0,818=>0,819=>0,820=>0,821=>0,822=>0,823=>0,824=>0,825=>0,826=>0,827=>0,828=>0,829=>0,830=>0,831=>0,832=>0,833=>0,834=>0,835=>0,836=>0,837=>0,838=>0,839=>0,840=>0,841=>0,842=>0,843=>0,844=>0,845=>0,846=>0,847=>0,849=>0,850=>0,851=>0,855=>0,856=>0,858=>0,860=>0,861=>0,862=>0,863=>0,864=>0,865=>0,866=>0,880=>698,881=>565,882=>1022,883=>836,884=>302,885=>302,886=>837,887=>701,890=>500,891=>593,892=>550,893=>549,894=>400,900=>441,901=>500,902=>797,903=>380,904=>846,905=>1009,906=>563,908=>891,910=>980,911=>894,912=>390,913=>774,914=>762,915=>637,916=>774,917=>683,918=>725,919=>837,920=>850,921=>372,922=>775,923=>774,924=>995,925=>837,926=>632,927=>850,928=>837,929=>733,931=>683,932=>682,933=>724,934=>850,935=>771,936=>850,937=>850,938=>372,939=>724,940=>687,941=>557,942=>712,943=>390,944=>675,945=>687,946=>716,947=>681,948=>687,949=>557,950=>591,951=>712,952=>687,953=>390,954=>710,955=>633,956=>736,957=>681,958=>591,959=>687,960=>791,961=>716,962=>593,963=>779,964=>638,965=>675,966=>782,967=>645,968=>794,969=>869,970=>390,971=>675,972=>687,973=>675,974=>869,975=>775,976=>651,977=>661,978=>746,979=>981,980=>746,981=>796,982=>869,983=>744,984=>850,985=>687,986=>734,987=>593,988=>683,989=>494,990=>702,991=>660,992=>919,993=>627,994=>1093,995=>837,996=>832,997=>716,998=>928,999=>744,1000=>733,1001=>650,1002=>789,1003=>671,1004=>752,1005=>716,1006=>682,1007=>590,1008=>744,1009=>716,1010=>593,1011=>343,1012=>850,1013=>645,1014=>645,1015=>742,1016=>716,1017=>734,1018=>995,1019=>732,1020=>716,1021=>734,1022=>734,1023=>698,1024=>683,1025=>683,1026=>878,1027=>637,1028=>734,1029=>720,1030=>372,1031=>372,1032=>372,1033=>1154,1034=>1130,1035=>878,1036=>817,1037=>837,1038=>771,1039=>837,1040=>774,1041=>762,1042=>762,1043=>637,1044=>891,1045=>683,1046=>1224,1047=>710,1048=>837,1049=>837,1050=>817,1051=>831,1052=>995,1053=>837,1054=>850,1055=>837,1056=>733,1057=>734,1058=>682,1059=>771,1060=>992,1061=>771,1062=>928,1063=>808,1064=>1235,1065=>1326,1066=>939,1067=>1036,1068=>762,1069=>734,1070=>1174,1071=>770,1072=>675,1073=>698,1074=>633,1075=>522,1076=>808,1077=>678,1078=>995,1079=>581,1080=>701,1081=>701,1082=>679,1083=>732,1084=>817,1085=>691,1086=>687,1087=>691,1088=>716,1089=>593,1090=>580,1091=>652,1092=>992,1093=>645,1094=>741,1095=>687,1096=>1062,1097=>1105,1098=>751,1099=>904,1100=>632,1101=>593,1102=>972,1103=>642,1104=>678,1105=>678,1106=>714,1107=>522,1108=>593,1109=>595,1110=>343,1111=>343,1112=>343,1113=>991,1114=>956,1115=>734,1116=>679,1117=>701,1118=>652,1119=>691,1120=>1093,1121=>869,1122=>840,1123=>736,1124=>1012,1125=>839,1126=>992,1127=>832,1128=>1358,1129=>1121,1130=>850,1131=>687,1132=>1236,1133=>1007,1134=>696,1135=>557,1136=>1075,1137=>1061,1138=>850,1139=>687,1140=>850,1141=>695,1142=>850,1143=>695,1144=>1148,1145=>1043,1146=>1074,1147=>863,1148=>1405,1149=>1173,1150=>1093,1151=>869,1152=>734,1153=>593,1154=>652,1155=>0,1156=>0,1157=>0,1158=>0,1159=>0,1160=>418,1161=>418,1162=>938,1163=>806,1164=>762,1165=>611,1166=>736,1167=>718,1168=>637,1169=>522,1170=>666,1171=>543,1172=>789,1173=>522,1174=>1224,1175=>995,1176=>710,1177=>581,1178=>775,1179=>679,1180=>817,1181=>679,1182=>817,1183=>679,1184=>1015,1185=>826,1186=>837,1187=>691,1188=>1103,1189=>871,1190=>1254,1191=>979,1192=>946,1193=>859,1194=>734,1195=>593,1196=>682,1197=>580,1198=>724,1199=>652,1200=>724,1201=>652,1202=>771,1203=>645,1204=>1104,1205=>1001,1206=>808,1207=>687,1208=>808,1209=>687,1210=>808,1211=>712,1212=>1026,1213=>810,1214=>1026,1215=>810,1216=>372,1217=>1224,1218=>995,1219=>778,1220=>629,1221=>933,1222=>804,1223=>837,1224=>691,1225=>938,1226=>806,1227=>808,1228=>687,1229=>1096,1230=>932,1231=>343,1232=>774,1233=>675,1234=>774,1235=>675,1236=>1085,1237=>1048,1238=>683,1239=>678,1240=>850,1241=>678,1242=>850,1243=>678,1244=>1224,1245=>995,1246=>710,1247=>581,1248=>772,1249=>641,1250=>837,1251=>701,1252=>837,1253=>701,1254=>850,1255=>687,1256=>850,1257=>687,1258=>850,1259=>687,1260=>734,1261=>593,1262=>771,1263=>652,1264=>771,1265=>652,1266=>771,1267=>652,1268=>808,1269=>687,1270=>637,1271=>522,1272=>1036,1273=>904,1274=>666,1275=>543,1276=>771,1277=>645,1278=>771,1279=>645,1280=>762,1281=>608,1282=>1159,1283=>893,1284=>1119,1285=>920,1286=>828,1287=>693,1288=>1242,1289=>1017,1290=>1289,1291=>1013,1292=>839,1293=>638,1294=>938,1295=>803,1296=>696,1297=>557,1298=>831,1299=>732,1300=>1286,1301=>1070,1302=>1065,1303=>982,1304=>1082,1305=>960,1306=>850,1307=>716,1308=>1103,1309=>924,1310=>817,1311=>679,1312=>1248,1313=>1022,1314=>1254,1315=>979,1316=>957,1317=>807,1329=>904,1330=>810,1331=>809,1332=>813,1333=>810,1334=>815,1335=>724,1336=>800,1337=>1004,1338=>809,1339=>740,1340=>620,1341=>1068,1342=>875,1343=>792,1344=>723,1345=>811,1346=>794,1347=>782,1348=>867,1349=>766,1350=>794,1351=>787,1352=>812,1353=>752,1354=>963,1355=>790,1356=>867,1357=>812,1358=>794,1359=>771,1360=>740,1361=>775,1362=>640,1363=>926,1364=>775,1365=>848,1366=>951,1369=>366,1370=>380,1371=>342,1372=>415,1373=>348,1374=>513,1375=>521,1377=>1043,1378=>713,1379=>782,1380=>786,1381=>713,1382=>715,1383=>628,1384=>713,1385=>840,1386=>782,1387=>714,1388=>344,1389=>1094,1390=>708,1391=>714,1392=>714,1393=>670,1394=>714,1395=>713,1396=>714,1397=>343,1398=>714,1399=>541,1400=>714,1401=>407,1402=>1043,1403=>636,1404=>740,1405=>714,1406=>714,1407=>1038,1408=>714,1409=>714,1410=>532,1411=>1038,1412=>720,1413=>689,1414=>904,1415=>902,1417=>400,1418=>415,1456=>0,1457=>0,1458=>0,1459=>0,1460=>0,1461=>0,1462=>0,1463=>0,1464=>0,1465=>0,1466=>0,1467=>0,1468=>0,1469=>0,1470=>415,1471=>0,1472=>372,1473=>0,1474=>0,1475=>372,1478=>497,1479=>0,1488=>728,1489=>610,1490=>447,1491=>588,1492=>687,1493=>343,1494=>400,1495=>687,1496=>679,1497=>294,1498=>578,1499=>566,1500=>605,1501=>696,1502=>724,1503=>343,1504=>453,1505=>680,1506=>666,1507=>675,1508=>658,1509=>661,1510=>653,1511=>736,1512=>602,1513=>749,1514=>683,1520=>664,1521=>664,1522=>663,1523=>444,1524=>710,3647=>696,3713=>815,3714=>748,3716=>749,3719=>569,3720=>742,3722=>744,3725=>761,3732=>706,3733=>704,3734=>747,3735=>819,3737=>730,3738=>727,3739=>727,3740=>922,3741=>827,3742=>866,3743=>866,3745=>836,3746=>761,3747=>770,3749=>769,3751=>713,3754=>827,3755=>1031,3757=>724,3758=>784,3759=>934,3760=>688,3761=>0,3762=>610,3763=>610,3764=>0,3765=>0,3766=>0,3767=>0,3768=>0,3769=>0,3771=>0,3772=>0,3773=>670,3776=>516,3777=>860,3778=>516,3779=>650,3780=>632,3782=>759,3784=>0,3785=>0,3786=>0,3787=>0,3788=>0,3789=>0,3792=>771,3793=>771,3794=>693,3795=>836,3796=>729,3797=>729,3798=>849,3799=>790,3800=>759,3801=>910,3804=>1363,3805=>1363,4256=>874,4257=>733,4258=>679,4259=>834,4260=>615,4261=>768,4262=>753,4263=>914,4264=>453,4265=>620,4266=>843,4267=>882,4268=>625,4269=>854,4270=>781,4271=>629,4272=>912,4273=>621,4274=>620,4275=>854,4276=>866,4277=>724,4278=>630,4279=>621,4280=>625,4281=>620,4282=>818,4283=>874,4284=>615,4285=>623,4286=>625,4287=>725,4288=>844,4289=>596,4290=>688,4291=>596,4292=>594,4293=>738,4304=>554,4305=>563,4306=>622,4307=>834,4308=>550,4309=>559,4310=>546,4311=>828,4312=>563,4313=>556,4314=>1074,4315=>563,4316=>563,4317=>814,4318=>554,4319=>559,4320=>823,4321=>563,4322=>700,4323=>582,4324=>847,4325=>555,4326=>814,4327=>559,4328=>543,4329=>563,4330=>622,4331=>563,4332=>543,4333=>566,4334=>563,4335=>530,4336=>554,4337=>554,4338=>553,4339=>554,4340=>553,4341=>583,4342=>853,4343=>604,4344=>559,4345=>632,4346=>554,4347=>448,4348=>324,5121=>774,5122=>774,5123=>774,5124=>774,5125=>905,5126=>905,5127=>905,5129=>905,5130=>905,5131=>905,5132=>1018,5133=>1009,5134=>1018,5135=>1009,5136=>1018,5137=>1009,5138=>1149,5139=>1140,5140=>1149,5141=>1140,5142=>905,5143=>1149,5144=>1142,5145=>1149,5146=>1142,5147=>905,5149=>310,5150=>529,5151=>425,5152=>425,5153=>395,5154=>395,5155=>395,5156=>395,5157=>564,5158=>470,5159=>310,5160=>395,5161=>395,5162=>395,5163=>1213,5164=>986,5165=>1216,5166=>1297,5167=>774,5168=>774,5169=>774,5170=>774,5171=>886,5172=>886,5173=>886,5175=>886,5176=>886,5177=>886,5178=>1018,5179=>1009,5180=>1018,5181=>1009,5182=>1018,5183=>1009,5184=>1149,5185=>1140,5186=>1149,5187=>1140,5188=>1149,5189=>1142,5190=>1149,5191=>1142,5192=>886,5193=>576,5194=>229,5196=>812,5197=>812,5198=>812,5199=>812,5200=>815,5201=>815,5202=>815,5204=>815,5205=>815,5206=>815,5207=>1056,5208=>1048,5209=>1056,5210=>1048,5211=>1056,5212=>1048,5213=>1060,5214=>1054,5215=>1060,5216=>1054,5217=>1060,5218=>1052,5219=>1060,5220=>1052,5221=>1060,5222=>483,5223=>1005,5224=>1005,5225=>1023,5226=>1017,5227=>743,5228=>743,5229=>743,5230=>743,5231=>743,5232=>743,5233=>743,5234=>743,5235=>743,5236=>1029,5237=>975,5238=>980,5239=>975,5240=>980,5241=>975,5242=>1029,5243=>975,5244=>1029,5245=>975,5246=>980,5247=>975,5248=>980,5249=>975,5250=>980,5251=>501,5252=>501,5253=>938,5254=>938,5255=>938,5256=>938,5257=>743,5258=>743,5259=>743,5260=>743,5261=>743,5262=>743,5263=>743,5264=>743,5265=>743,5266=>1029,5267=>975,5268=>1029,5269=>975,5270=>1029,5271=>975,5272=>1029,5273=>975,5274=>1029,5275=>975,5276=>1029,5277=>975,5278=>1029,5279=>975,5280=>1029,5281=>501,5282=>501,5283=>626,5284=>626,5285=>626,5286=>626,5287=>626,5288=>626,5289=>626,5290=>626,5291=>626,5292=>881,5293=>854,5294=>863,5295=>874,5296=>863,5297=>874,5298=>881,5299=>874,5300=>881,5301=>874,5302=>863,5303=>874,5304=>863,5305=>874,5306=>863,5307=>436,5308=>548,5309=>436,5312=>988,5313=>988,5314=>988,5315=>988,5316=>931,5317=>931,5318=>931,5319=>931,5320=>931,5321=>1238,5322=>1247,5323=>1200,5324=>1228,5325=>1200,5326=>1228,5327=>931,5328=>660,5329=>497,5330=>660,5331=>988,5332=>988,5333=>988,5334=>988,5335=>931,5336=>931,5337=>931,5338=>931,5339=>931,5340=>1231,5341=>1247,5342=>1283,5343=>1228,5344=>1283,5345=>1228,5346=>1228,5347=>1214,5348=>1228,5349=>1214,5350=>1283,5351=>1228,5352=>1283,5353=>1228,5354=>660,5356=>886,5357=>730,5358=>730,5359=>730,5360=>730,5361=>730,5362=>730,5363=>730,5364=>730,5365=>730,5366=>998,5367=>958,5368=>967,5369=>989,5370=>967,5371=>989,5372=>998,5373=>958,5374=>998,5375=>958,5376=>967,5377=>989,5378=>967,5379=>989,5380=>967,5381=>493,5382=>460,5383=>493,5392=>923,5393=>923,5394=>923,5395=>1136,5396=>1136,5397=>1136,5398=>1136,5399=>1209,5400=>1202,5401=>1209,5402=>1202,5403=>1209,5404=>1202,5405=>1431,5406=>1420,5407=>1431,5408=>1420,5409=>1431,5410=>1420,5411=>1431,5412=>1420,5413=>746,5414=>776,5415=>776,5416=>776,5417=>776,5418=>776,5419=>776,5420=>776,5421=>776,5422=>776,5423=>1003,5424=>1003,5425=>1013,5426=>996,5427=>1013,5428=>996,5429=>1003,5430=>1003,5431=>1003,5432=>1003,5433=>1013,5434=>996,5435=>1013,5436=>996,5437=>1013,5438=>495,5440=>395,5441=>510,5442=>1033,5443=>1033,5444=>976,5445=>976,5446=>976,5447=>976,5448=>733,5449=>733,5450=>733,5451=>733,5452=>733,5453=>733,5454=>1003,5455=>959,5456=>495,5458=>886,5459=>774,5460=>774,5461=>774,5462=>774,5463=>928,5464=>928,5465=>928,5466=>928,5467=>1172,5468=>1142,5469=>602,5470=>812,5471=>812,5472=>812,5473=>812,5474=>812,5475=>812,5476=>815,5477=>815,5478=>815,5479=>815,5480=>1060,5481=>1052,5482=>548,5492=>977,5493=>977,5494=>977,5495=>977,5496=>977,5497=>977,5498=>977,5499=>618,5500=>837,5501=>510,5502=>1238,5503=>1238,5504=>1238,5505=>1238,5506=>1238,5507=>1238,5508=>1238,5509=>989,5514=>977,5515=>977,5516=>977,5517=>977,5518=>1591,5519=>1591,5520=>1591,5521=>1295,5522=>1295,5523=>1591,5524=>1591,5525=>848,5526=>1273,5536=>988,5537=>988,5538=>931,5539=>931,5540=>931,5541=>931,5542=>660,5543=>776,5544=>776,5545=>776,5546=>776,5547=>776,5548=>776,5549=>776,5550=>495,5551=>743,5598=>830,5601=>830,5702=>496,5703=>496,5742=>413,5743=>1238,5744=>1591,5745=>2016,5746=>2016,5747=>1720,5748=>1678,5749=>2016,5750=>2016,7424=>652,7425=>833,7426=>1048,7427=>608,7428=>593,7429=>676,7430=>676,7431=>559,7432=>557,7433=>343,7434=>494,7435=>665,7436=>539,7437=>817,7438=>701,7439=>687,7440=>593,7441=>660,7442=>660,7443=>660,7444=>1094,7446=>687,7447=>687,7448=>556,7449=>642,7450=>642,7451=>580,7452=>634,7453=>737,7454=>948,7455=>695,7456=>652,7457=>924,7458=>582,7459=>646,7462=>539,7463=>652,7464=>691,7465=>556,7466=>781,7467=>732,7468=>487,7469=>683,7470=>480,7472=>523,7473=>430,7474=>430,7475=>517,7476=>527,7477=>234,7478=>234,7479=>488,7480=>401,7481=>626,7482=>527,7483=>527,7484=>535,7485=>509,7486=>461,7487=>485,7488=>430,7489=>511,7490=>695,7491=>458,7492=>458,7493=>479,7494=>712,7495=>479,7496=>479,7497=>479,7498=>479,7499=>386,7500=>386,7501=>479,7502=>219,7503=>487,7504=>664,7505=>456,7506=>488,7507=>414,7508=>488,7509=>488,7510=>479,7511=>388,7512=>456,7513=>462,7514=>664,7515=>501,7517=>451,7518=>429,7519=>433,7520=>493,7521=>406,7522=>219,7523=>315,7524=>456,7525=>501,7526=>451,7527=>429,7528=>451,7529=>493,7530=>406,7543=>716,7544=>527,7547=>545,7549=>747,7557=>514,7579=>479,7580=>414,7581=>414,7582=>488,7583=>386,7584=>377,7585=>348,7586=>479,7587=>456,7588=>347,7589=>281,7590=>347,7591=>347,7592=>431,7593=>326,7594=>330,7595=>370,7596=>664,7597=>664,7598=>562,7599=>562,7600=>448,7601=>488,7602=>542,7603=>422,7604=>396,7605=>388,7606=>583,7607=>494,7608=>399,7609=>451,7610=>501,7611=>417,7612=>523,7613=>470,7614=>455,7615=>425,7620=>0,7621=>0,7622=>0,7623=>0,7624=>0,7625=>0,7680=>774,7681=>675,7682=>762,7683=>716,7684=>762,7685=>716,7686=>762,7687=>716,7688=>734,7689=>593,7690=>830,7691=>716,7692=>830,7693=>716,7694=>830,7695=>716,7696=>830,7697=>716,7698=>830,7699=>716,7700=>683,7701=>678,7702=>683,7703=>678,7704=>683,7705=>678,7706=>683,7707=>678,7708=>683,7709=>678,7710=>683,7711=>435,7712=>821,7713=>716,7714=>837,7715=>712,7716=>837,7717=>712,7718=>837,7719=>712,7720=>837,7721=>712,7722=>837,7723=>712,7724=>372,7725=>343,7726=>372,7727=>343,7728=>775,7729=>665,7730=>775,7731=>665,7732=>775,7733=>665,7734=>637,7735=>343,7736=>637,7737=>343,7738=>637,7739=>343,7740=>637,7741=>343,7742=>995,7743=>1042,7744=>995,7745=>1042,7746=>995,7747=>1042,7748=>837,7749=>712,7750=>837,7751=>712,7752=>837,7753=>712,7754=>837,7755=>712,7756=>850,7757=>687,7758=>850,7759=>687,7760=>850,7761=>687,7762=>850,7763=>687,7764=>733,7765=>716,7766=>733,7767=>716,7768=>770,7769=>493,7770=>770,7771=>493,7772=>770,7773=>493,7774=>770,7775=>493,7776=>720,7777=>595,7778=>720,7779=>595,7780=>720,7781=>595,7782=>720,7783=>595,7784=>720,7785=>595,7786=>682,7787=>478,7788=>682,7789=>478,7790=>682,7791=>478,7792=>682,7793=>478,7794=>812,7795=>712,7796=>812,7797=>712,7798=>812,7799=>712,7800=>812,7801=>712,7802=>812,7803=>712,7804=>774,7805=>652,7806=>774,7807=>652,7808=>1103,7809=>924,7810=>1103,7811=>924,7812=>1103,7813=>924,7814=>1103,7815=>924,7816=>1103,7817=>924,7818=>771,7819=>645,7820=>771,7821=>645,7822=>724,7823=>652,7824=>725,7825=>582,7826=>725,7827=>582,7828=>725,7829=>582,7830=>712,7831=>478,7832=>924,7833=>652,7834=>675,7835=>435,7836=>435,7837=>435,7838=>896,7839=>687,7840=>774,7841=>675,7842=>774,7843=>675,7844=>774,7845=>675,7846=>774,7847=>675,7848=>774,7849=>675,7850=>774,7851=>675,7852=>774,7853=>675,7854=>774,7855=>675,7856=>774,7857=>675,7858=>774,7859=>675,7860=>774,7861=>675,7862=>774,7863=>675,7864=>683,7865=>678,7866=>683,7867=>678,7868=>683,7869=>678,7870=>683,7871=>678,7872=>683,7873=>678,7874=>683,7875=>678,7876=>683,7877=>678,7878=>683,7879=>678,7880=>372,7881=>343,7882=>372,7883=>343,7884=>850,7885=>687,7886=>850,7887=>687,7888=>850,7889=>687,7890=>850,7891=>687,7892=>850,7893=>687,7894=>850,7895=>687,7896=>850,7897=>687,7898=>850,7899=>687,7900=>850,7901=>687,7902=>850,7903=>687,7904=>850,7905=>687,7906=>850,7907=>687,7908=>812,7909=>712,7910=>812,7911=>712,7912=>812,7913=>712,7914=>812,7915=>712,7916=>812,7917=>712,7918=>812,7919=>712,7920=>812,7921=>712,7922=>724,7923=>652,7924=>724,7925=>652,7926=>724,7927=>652,7928=>724,7929=>652,7930=>953,7931=>644,7936=>687,7937=>687,7938=>687,7939=>687,7940=>687,7941=>687,7942=>687,7943=>687,7944=>774,7945=>774,7946=>1041,7947=>1043,7948=>935,7949=>963,7950=>835,7951=>859,7952=>557,7953=>557,7954=>557,7955=>557,7956=>557,7957=>557,7960=>792,7961=>794,7962=>1100,7963=>1096,7964=>1023,7965=>1052,7968=>712,7969=>712,7970=>712,7971=>712,7972=>712,7973=>712,7974=>712,7975=>712,7976=>945,7977=>951,7978=>1250,7979=>1250,7980=>1180,7981=>1206,7982=>1054,7983=>1063,7984=>390,7985=>390,7986=>390,7987=>390,7988=>390,7989=>390,7990=>390,7991=>390,7992=>483,7993=>489,7994=>777,7995=>785,7996=>712,7997=>738,7998=>604,7999=>604,8000=>687,8001=>687,8002=>687,8003=>687,8004=>687,8005=>687,8008=>892,8009=>933,8010=>1221,8011=>1224,8012=>1053,8013=>1082,8016=>675,8017=>675,8018=>675,8019=>675,8020=>675,8021=>675,8022=>675,8023=>675,8025=>930,8027=>1184,8029=>1199,8031=>1049,8032=>869,8033=>869,8034=>869,8035=>869,8036=>869,8037=>869,8038=>869,8039=>869,8040=>909,8041=>958,8042=>1246,8043=>1251,8044=>1076,8045=>1105,8046=>1028,8047=>1076,8048=>687,8049=>687,8050=>557,8051=>557,8052=>712,8053=>712,8054=>390,8055=>390,8056=>687,8057=>687,8058=>675,8059=>675,8060=>869,8061=>869,8064=>687,8065=>687,8066=>687,8067=>687,8068=>687,8069=>687,8070=>687,8071=>687,8072=>774,8073=>774,8074=>1041,8075=>1043,8076=>935,8077=>963,8078=>835,8079=>859,8080=>712,8081=>712,8082=>712,8083=>712,8084=>712,8085=>712,8086=>712,8087=>712,8088=>945,8089=>951,8090=>1250,8091=>1250,8092=>1180,8093=>1206,8094=>1054,8095=>1063,8096=>869,8097=>869,8098=>869,8099=>869,8100=>869,8101=>869,8102=>869,8103=>869,8104=>909,8105=>958,8106=>1246,8107=>1251,8108=>1076,8109=>1105,8110=>1028,8111=>1076,8112=>687,8113=>687,8114=>687,8115=>687,8116=>687,8118=>687,8119=>687,8120=>774,8121=>774,8122=>876,8123=>797,8124=>774,8125=>500,8126=>500,8127=>500,8128=>500,8129=>500,8130=>712,8131=>712,8132=>712,8134=>712,8135=>712,8136=>929,8137=>846,8138=>1080,8139=>1009,8140=>837,8141=>500,8142=>500,8143=>500,8144=>390,8145=>390,8146=>390,8147=>390,8150=>390,8151=>390,8152=>372,8153=>372,8154=>621,8155=>563,8157=>500,8158=>500,8159=>500,8160=>675,8161=>675,8162=>675,8163=>675,8164=>716,8165=>716,8166=>675,8167=>675,8168=>724,8169=>724,8170=>1020,8171=>980,8172=>838,8173=>500,8174=>500,8175=>500,8178=>869,8179=>869,8180=>869,8182=>869,8183=>869,8184=>1065,8185=>891,8186=>1084,8187=>894,8188=>850,8189=>500,8190=>500,8192=>500,8193=>1000,8194=>500,8195=>1000,8196=>330,8197=>250,8198=>167,8199=>696,8200=>380,8201=>200,8202=>100,8203=>0,8204=>0,8205=>0,8206=>0,8207=>0,8208=>415,8209=>415,8210=>696,8211=>500,8212=>1000,8213=>1000,8214=>500,8215=>500,8216=>380,8217=>380,8218=>380,8219=>380,8220=>644,8221=>644,8222=>644,8223=>657,8224=>500,8225=>500,8226=>639,8227=>639,8228=>380,8229=>685,8230=>1000,8231=>348,8232=>0,8233=>0,8234=>0,8235=>0,8236=>0,8237=>0,8238=>0,8239=>200,8240=>1454,8241=>1908,8242=>264,8243=>447,8244=>630,8245=>264,8246=>447,8247=>630,8248=>733,8249=>412,8250=>412,8251=>972,8252=>627,8253=>580,8254=>500,8255=>828,8256=>828,8257=>329,8258=>1023,8259=>500,8260=>167,8261=>457,8262=>457,8263=>1030,8264=>829,8265=>829,8266=>513,8267=>687,8268=>500,8269=>500,8270=>523,8271=>400,8272=>828,8273=>523,8274=>556,8275=>838,8276=>828,8277=>838,8278=>684,8279=>813,8280=>838,8281=>838,8282=>380,8283=>872,8284=>838,8285=>380,8286=>380,8287=>222,8288=>0,8289=>0,8290=>0,8291=>0,8292=>0,8298=>0,8299=>0,8300=>0,8301=>0,8302=>0,8303=>0,8304=>438,8305=>219,8308=>438,8309=>438,8310=>438,8311=>438,8312=>438,8313=>438,8314=>528,8315=>528,8316=>528,8317=>288,8318=>288,8319=>456,8320=>438,8321=>438,8322=>438,8323=>438,8324=>438,8325=>438,8326=>438,8327=>438,8328=>438,8329=>438,8330=>528,8331=>528,8332=>528,8333=>288,8334=>288,8336=>458,8337=>479,8338=>488,8339=>413,8340=>479,8341=>456,8342=>487,8343=>219,8344=>664,8345=>456,8346=>479,8347=>381,8348=>388,8352=>929,8353=>696,8354=>696,8355=>696,8356=>696,8357=>1042,8358=>837,8359=>1488,8360=>1205,8361=>1103,8362=>854,8363=>696,8364=>696,8365=>696,8366=>696,8367=>1392,8368=>696,8369=>696,8370=>696,8371=>696,8372=>859,8373=>696,8376=>696,8377=>696,8378=>769,8400=>0,8401=>0,8406=>0,8407=>0,8411=>0,8412=>0,8417=>0,8448=>1106,8449=>1106,8450=>734,8451=>1211,8452=>896,8453=>1114,8454=>1148,8455=>696,8456=>698,8457=>952,8459=>1073,8460=>913,8461=>888,8462=>712,8463=>712,8464=>597,8465=>697,8466=>856,8467=>472,8468=>974,8469=>837,8470=>1203,8471=>1000,8472=>697,8473=>750,8474=>850,8475=>938,8476=>814,8477=>801,8478=>896,8479=>710,8480=>1020,8481=>1239,8482=>1000,8483=>834,8484=>754,8485=>622,8486=>850,8487=>769,8488=>763,8489=>303,8490=>775,8491=>774,8492=>928,8493=>818,8494=>854,8495=>636,8496=>729,8497=>808,8498=>683,8499=>1184,8500=>465,8501=>794,8502=>731,8503=>494,8504=>684,8505=>380,8506=>945,8507=>1370,8508=>790,8509=>737,8510=>654,8511=>863,8512=>840,8513=>786,8514=>576,8515=>637,8516=>760,8517=>830,8518=>716,8519=>678,8520=>343,8521=>343,8523=>872,8526=>547,8528=>1035,8529=>1035,8530=>1483,8531=>1035,8532=>1035,8533=>1035,8534=>1035,8535=>1035,8536=>1035,8537=>1035,8538=>1035,8539=>1035,8540=>1035,8541=>1035,8542=>1035,8543=>615,8544=>372,8545=>659,8546=>945,8547=>1099,8548=>774,8549=>1099,8550=>1386,8551=>1672,8552=>1121,8553=>771,8554=>1120,8555=>1407,8556=>637,8557=>734,8558=>830,8559=>995,8560=>343,8561=>607,8562=>872,8563=>984,8564=>652,8565=>962,8566=>1227,8567=>1491,8568=>969,8569=>645,8570=>969,8571=>1233,8572=>343,8573=>593,8574=>716,8575=>1042,8576=>1289,8577=>830,8578=>1289,8579=>734,8580=>593,8581=>734,8585=>1035,8592=>838,8593=>838,8594=>838,8595=>838,8596=>838,8597=>838,8598=>838,8599=>838,8600=>838,8601=>838,8602=>838,8603=>838,8604=>838,8605=>838,8606=>838,8607=>838,8608=>838,8609=>838,8610=>838,8611=>838,8612=>838,8613=>838,8614=>838,8615=>838,8616=>838,8617=>838,8618=>838,8619=>838,8620=>838,8621=>838,8622=>838,8623=>838,8624=>838,8625=>838,8626=>838,8627=>838,8628=>838,8629=>838,8630=>838,8631=>838,8632=>838,8633=>838,8634=>838,8635=>838,8636=>838,8637=>838,8638=>838,8639=>838,8640=>838,8641=>838,8642=>838,8643=>838,8644=>838,8645=>838,8646=>838,8647=>838,8648=>838,8649=>838,8650=>838,8651=>838,8652=>838,8653=>838,8654=>838,8655=>838,8656=>838,8657=>838,8658=>838,8659=>838,8660=>838,8661=>838,8662=>838,8663=>838,8664=>838,8665=>838,8666=>838,8667=>838,8668=>838,8669=>838,8670=>838,8671=>838,8672=>838,8673=>838,8674=>838,8675=>838,8676=>838,8677=>838,8678=>838,8679=>838,8680=>838,8681=>838,8682=>838,8683=>838,8684=>838,8685=>838,8686=>838,8687=>838,8688=>838,8689=>838,8690=>838,8691=>838,8692=>838,8693=>838,8694=>838,8695=>838,8696=>838,8697=>838,8698=>838,8699=>838,8700=>838,8701=>838,8702=>838,8703=>838,8704=>774,8705=>696,8706=>544,8707=>683,8708=>683,8709=>856,8710=>697,8711=>697,8712=>896,8713=>896,8714=>750,8715=>896,8716=>896,8717=>750,8718=>636,8719=>787,8720=>787,8721=>718,8722=>838,8723=>838,8724=>696,8725=>365,8726=>696,8727=>838,8728=>626,8729=>380,8730=>667,8731=>667,8732=>667,8733=>712,8734=>833,8735=>838,8736=>896,8737=>896,8738=>838,8739=>500,8740=>500,8741=>500,8742=>500,8743=>812,8744=>812,8745=>812,8746=>812,8747=>610,8748=>929,8749=>1295,8750=>563,8751=>977,8752=>1313,8753=>563,8754=>563,8755=>563,8756=>696,8757=>696,8758=>294,8759=>696,8760=>838,8761=>838,8762=>838,8763=>838,8764=>838,8765=>838,8766=>838,8767=>838,8768=>375,8769=>838,8770=>838,8771=>838,8772=>838,8773=>838,8774=>838,8775=>838,8776=>838,8777=>838,8778=>838,8779=>838,8780=>838,8781=>838,8782=>838,8783=>838,8784=>838,8785=>838,8786=>838,8787=>838,8788=>1063,8789=>1063,8790=>838,8791=>838,8792=>838,8793=>838,8794=>838,8795=>838,8796=>838,8797=>838,8798=>838,8799=>838,8800=>838,8801=>838,8802=>838,8803=>838,8804=>838,8805=>838,8806=>838,8807=>838,8808=>841,8809=>841,8810=>1047,8811=>1047,8812=>500,8813=>838,8814=>838,8815=>838,8816=>838,8817=>838,8818=>838,8819=>838,8820=>838,8821=>838,8822=>838,8823=>838,8824=>838,8825=>838,8826=>838,8827=>838,8828=>838,8829=>838,8830=>838,8831=>838,8832=>838,8833=>838,8834=>838,8835=>838,8836=>838,8837=>838,8838=>838,8839=>838,8840=>838,8841=>838,8842=>838,8843=>838,8844=>812,8845=>812,8846=>812,8847=>838,8848=>838,8849=>838,8850=>838,8851=>796,8852=>796,8853=>838,8854=>838,8855=>838,8856=>838,8857=>838,8858=>838,8859=>838,8860=>838,8861=>838,8862=>838,8863=>838,8864=>838,8865=>838,8866=>914,8867=>914,8868=>914,8869=>914,8870=>542,8871=>542,8872=>914,8873=>914,8874=>914,8875=>914,8876=>914,8877=>914,8878=>914,8879=>914,8880=>838,8881=>838,8882=>838,8883=>838,8884=>838,8885=>838,8886=>1000,8887=>1000,8888=>838,8889=>838,8890=>542,8891=>812,8892=>812,8893=>812,8894=>838,8895=>838,8896=>843,8897=>843,8898=>843,8899=>843,8900=>494,8901=>380,8902=>626,8903=>838,8904=>1000,8905=>1000,8906=>1000,8907=>1000,8908=>1000,8909=>838,8910=>812,8911=>812,8912=>838,8913=>838,8914=>838,8915=>838,8916=>838,8917=>838,8918=>838,8919=>838,8920=>1422,8921=>1422,8922=>838,8923=>838,8924=>838,8925=>838,8926=>838,8927=>838,8928=>838,8929=>838,8930=>838,8931=>838,8932=>838,8933=>838,8934=>838,8935=>838,8936=>838,8937=>838,8938=>838,8939=>838,8940=>838,8941=>838,8942=>1000,8943=>1000,8944=>1000,8945=>1000,8946=>1158,8947=>896,8948=>750,8949=>896,8950=>896,8951=>750,8952=>896,8953=>896,8954=>1158,8955=>896,8956=>750,8957=>896,8958=>750,8959=>896,8960=>602,8961=>602,8962=>716,8963=>838,8964=>838,8965=>838,8966=>838,8967=>488,8968=>457,8969=>457,8970=>457,8971=>457,8972=>809,8973=>809,8974=>809,8975=>809,8976=>838,8977=>539,8984=>928,8985=>838,8988=>469,8989=>469,8990=>469,8991=>469,8992=>610,8993=>610,8996=>1152,8997=>1152,8998=>1414,8999=>1152,9000=>1443,9003=>1414,9004=>873,9075=>390,9076=>716,9077=>869,9082=>687,9085=>863,9095=>1152,9108=>873,9115=>500,9116=>500,9117=>500,9118=>500,9119=>500,9120=>500,9121=>500,9122=>500,9123=>500,9124=>500,9125=>500,9126=>500,9127=>750,9128=>750,9129=>750,9130=>750,9131=>750,9132=>750,9133=>750,9134=>610,9166=>838,9167=>945,9187=>873,9189=>769,9192=>696,9250=>716,9251=>716,9312=>847,9313=>847,9314=>847,9315=>847,9316=>847,9317=>847,9318=>847,9319=>847,9320=>847,9321=>847,9600=>769,9601=>769,9602=>769,9603=>769,9604=>769,9605=>769,9606=>769,9607=>769,9608=>769,9609=>769,9610=>769,9611=>769,9612=>769,9613=>769,9614=>769,9615=>769,9616=>769,9617=>769,9618=>769,9619=>769,9620=>769,9621=>769,9622=>769,9623=>769,9624=>769,9625=>769,9626=>769,9627=>769,9628=>769,9629=>769,9630=>769,9631=>769,9632=>945,9633=>945,9634=>945,9635=>945,9636=>945,9637=>945,9638=>945,9639=>945,9640=>945,9641=>945,9642=>678,9643=>678,9644=>945,9645=>945,9646=>550,9647=>550,9648=>769,9649=>769,9650=>769,9651=>769,9652=>502,9653=>502,9654=>769,9655=>769,9656=>502,9657=>502,9658=>769,9659=>769,9660=>769,9661=>769,9662=>502,9663=>502,9664=>769,9665=>769,9666=>502,9667=>502,9668=>769,9669=>769,9670=>769,9671=>769,9672=>769,9673=>873,9674=>494,9675=>873,9676=>873,9677=>873,9678=>873,9679=>873,9680=>873,9681=>873,9682=>873,9683=>873,9684=>873,9685=>873,9686=>527,9687=>527,9688=>840,9689=>970,9690=>970,9691=>970,9692=>387,9693=>387,9694=>387,9695=>387,9696=>769,9697=>769,9698=>769,9699=>769,9700=>769,9701=>769,9702=>639,9703=>945,9704=>945,9705=>945,9706=>945,9707=>945,9708=>769,9709=>769,9710=>769,9711=>1119,9712=>945,9713=>945,9714=>945,9715=>945,9716=>873,9717=>873,9718=>873,9719=>873,9720=>769,9721=>769,9722=>769,9723=>830,9724=>830,9725=>732,9726=>732,9727=>769,9728=>896,9729=>1000,9730=>896,9731=>896,9732=>896,9733=>896,9734=>896,9735=>573,9736=>896,9737=>896,9738=>888,9739=>888,9740=>671,9741=>1013,9742=>1246,9743=>1250,9744=>896,9745=>896,9746=>896,9747=>532,9748=>896,9749=>896,9750=>896,9751=>896,9752=>896,9753=>896,9754=>896,9755=>896,9756=>896,9757=>609,9758=>896,9759=>609,9760=>896,9761=>896,9762=>896,9763=>896,9764=>669,9765=>746,9766=>649,9767=>784,9768=>545,9769=>896,9770=>896,9771=>896,9772=>710,9773=>896,9774=>896,9775=>896,9776=>896,9777=>896,9778=>896,9779=>896,9780=>896,9781=>896,9782=>896,9783=>896,9784=>896,9785=>1042,9786=>1042,9787=>1042,9788=>896,9789=>896,9790=>896,9791=>614,9792=>732,9793=>732,9794=>896,9795=>896,9796=>896,9797=>896,9798=>896,9799=>896,9800=>896,9801=>896,9802=>896,9803=>896,9804=>896,9805=>896,9806=>896,9807=>896,9808=>896,9809=>896,9810=>896,9811=>896,9812=>896,9813=>896,9814=>896,9815=>896,9816=>896,9817=>896,9818=>896,9819=>896,9820=>896,9821=>896,9822=>896,9823=>896,9824=>896,9825=>896,9826=>896,9827=>896,9828=>896,9829=>896,9830=>896,9831=>896,9832=>896,9833=>472,9834=>638,9835=>896,9836=>896,9837=>472,9838=>357,9839=>484,9840=>748,9841=>766,9842=>896,9843=>896,9844=>896,9845=>896,9846=>896,9847=>896,9848=>896,9849=>896,9850=>896,9851=>896,9852=>896,9853=>896,9854=>896,9855=>896,9856=>869,9857=>869,9858=>869,9859=>869,9860=>869,9861=>869,9862=>896,9863=>896,9864=>896,9865=>896,9866=>896,9867=>896,9868=>896,9869=>896,9870=>896,9871=>896,9872=>896,9873=>896,9874=>896,9875=>896,9876=>896,9877=>541,9878=>896,9879=>896,9880=>896,9881=>896,9882=>896,9883=>896,9884=>896,9888=>896,9889=>702,9890=>1004,9891=>1089,9892=>1175,9893=>903,9894=>838,9895=>838,9896=>838,9897=>838,9898=>838,9899=>838,9900=>838,9901=>838,9902=>838,9903=>838,9904=>844,9905=>838,9906=>732,9907=>732,9908=>732,9909=>732,9910=>850,9911=>732,9912=>732,9920=>838,9921=>838,9922=>838,9923=>838,9954=>732,9985=>838,9986=>838,9987=>838,9988=>838,9990=>838,9991=>838,9992=>838,9993=>838,9996=>838,9997=>838,9998=>838,9999=>838,10000=>838,10001=>838,10002=>838,10003=>838,10004=>838,10005=>838,10006=>838,10007=>838,10008=>838,10009=>838,10010=>838,10011=>838,10012=>838,10013=>838,10014=>838,10015=>838,10016=>838,10017=>838,10018=>838,10019=>838,10020=>838,10021=>838,10022=>838,10023=>838,10025=>838,10026=>838,10027=>838,10028=>838,10029=>838,10030=>838,10031=>838,10032=>838,10033=>838,10034=>838,10035=>838,10036=>838,10037=>838,10038=>838,10039=>838,10040=>838,10041=>838,10042=>838,10043=>838,10044=>838,10045=>838,10046=>838,10047=>838,10048=>838,10049=>838,10050=>838,10051=>838,10052=>838,10053=>838,10054=>838,10055=>838,10056=>838,10057=>838,10058=>838,10059=>838,10061=>896,10063=>896,10064=>896,10065=>896,10066=>896,10070=>896,10072=>838,10073=>838,10074=>838,10075=>322,10076=>322,10077=>538,10078=>538,10081=>838,10082=>838,10083=>838,10084=>838,10085=>838,10086=>838,10087=>838,10088=>838,10089=>838,10090=>838,10091=>838,10092=>838,10093=>838,10094=>838,10095=>838,10096=>838,10097=>838,10098=>838,10099=>838,10100=>838,10101=>838,10102=>847,10103=>847,10104=>847,10105=>847,10106=>847,10107=>847,10108=>847,10109=>847,10110=>847,10111=>847,10112=>838,10113=>838,10114=>838,10115=>838,10116=>838,10117=>838,10118=>838,10119=>838,10120=>838,10121=>838,10122=>838,10123=>838,10124=>838,10125=>838,10126=>838,10127=>838,10128=>838,10129=>838,10130=>838,10131=>838,10132=>838,10136=>838,10137=>838,10138=>838,10139=>838,10140=>838,10141=>838,10142=>838,10143=>838,10144=>838,10145=>838,10146=>838,10147=>838,10148=>838,10149=>838,10150=>838,10151=>838,10152=>838,10153=>838,10154=>838,10155=>838,10156=>838,10157=>838,10158=>838,10159=>838,10161=>838,10162=>838,10163=>838,10164=>838,10165=>838,10166=>838,10167=>838,10168=>838,10169=>838,10170=>838,10171=>838,10172=>838,10173=>838,10174=>838,10181=>457,10182=>457,10208=>494,10214=>487,10215=>487,10216=>457,10217=>457,10218=>721,10219=>721,10224=>838,10225=>838,10226=>838,10227=>838,10228=>1157,10229=>1434,10230=>1434,10231=>1434,10232=>1434,10233=>1434,10234=>1434,10235=>1434,10236=>1434,10237=>1434,10238=>1434,10239=>1434,10240=>781,10241=>781,10242=>781,10243=>781,10244=>781,10245=>781,10246=>781,10247=>781,10248=>781,10249=>781,10250=>781,10251=>781,10252=>781,10253=>781,10254=>781,10255=>781,10256=>781,10257=>781,10258=>781,10259=>781,10260=>781,10261=>781,10262=>781,10263=>781,10264=>781,10265=>781,10266=>781,10267=>781,10268=>781,10269=>781,10270=>781,10271=>781,10272=>781,10273=>781,10274=>781,10275=>781,10276=>781,10277=>781,10278=>781,10279=>781,10280=>781,10281=>781,10282=>781,10283=>781,10284=>781,10285=>781,10286=>781,10287=>781,10288=>781,10289=>781,10290=>781,10291=>781,10292=>781,10293=>781,10294=>781,10295=>781,10296=>781,10297=>781,10298=>781,10299=>781,10300=>781,10301=>781,10302=>781,10303=>781,10304=>781,10305=>781,10306=>781,10307=>781,10308=>781,10309=>781,10310=>781,10311=>781,10312=>781,10313=>781,10314=>781,10315=>781,10316=>781,10317=>781,10318=>781,10319=>781,10320=>781,10321=>781,10322=>781,10323=>781,10324=>781,10325=>781,10326=>781,10327=>781,10328=>781,10329=>781,10330=>781,10331=>781,10332=>781,10333=>781,10334=>781,10335=>781,10336=>781,10337=>781,10338=>781,10339=>781,10340=>781,10341=>781,10342=>781,10343=>781,10344=>781,10345=>781,10346=>781,10347=>781,10348=>781,10349=>781,10350=>781,10351=>781,10352=>781,10353=>781,10354=>781,10355=>781,10356=>781,10357=>781,10358=>781,10359=>781,10360=>781,10361=>781,10362=>781,10363=>781,10364=>781,10365=>781,10366=>781,10367=>781,10368=>781,10369=>781,10370=>781,10371=>781,10372=>781,10373=>781,10374=>781,10375=>781,10376=>781,10377=>781,10378=>781,10379=>781,10380=>781,10381=>781,10382=>781,10383=>781,10384=>781,10385=>781,10386=>781,10387=>781,10388=>781,10389=>781,10390=>781,10391=>781,10392=>781,10393=>781,10394=>781,10395=>781,10396=>781,10397=>781,10398=>781,10399=>781,10400=>781,10401=>781,10402=>781,10403=>781,10404=>781,10405=>781,10406=>781,10407=>781,10408=>781,10409=>781,10410=>781,10411=>781,10412=>781,10413=>781,10414=>781,10415=>781,10416=>781,10417=>781,10418=>781,10419=>781,10420=>781,10421=>781,10422=>781,10423=>781,10424=>781,10425=>781,10426=>781,10427=>781,10428=>781,10429=>781,10430=>781,10431=>781,10432=>781,10433=>781,10434=>781,10435=>781,10436=>781,10437=>781,10438=>781,10439=>781,10440=>781,10441=>781,10442=>781,10443=>781,10444=>781,10445=>781,10446=>781,10447=>781,10448=>781,10449=>781,10450=>781,10451=>781,10452=>781,10453=>781,10454=>781,10455=>781,10456=>781,10457=>781,10458=>781,10459=>781,10460=>781,10461=>781,10462=>781,10463=>781,10464=>781,10465=>781,10466=>781,10467=>781,10468=>781,10469=>781,10470=>781,10471=>781,10472=>781,10473=>781,10474=>781,10475=>781,10476=>781,10477=>781,10478=>781,10479=>781,10480=>781,10481=>781,10482=>781,10483=>781,10484=>781,10485=>781,10486=>781,10487=>781,10488=>781,10489=>781,10490=>781,10491=>781,10492=>781,10493=>781,10494=>781,10495=>781,10502=>838,10503=>838,10506=>838,10507=>838,10560=>838,10561=>838,10627=>753,10628=>753,10702=>838,10703=>1046,10704=>1046,10705=>1000,10706=>1000,10707=>1000,10708=>1000,10709=>1000,10731=>494,10746=>838,10747=>838,10752=>1000,10753=>1000,10754=>1000,10764=>1661,10765=>563,10766=>563,10767=>563,10768=>563,10769=>563,10770=>563,10771=>563,10772=>563,10773=>563,10774=>563,10775=>563,10776=>563,10777=>563,10778=>563,10779=>563,10780=>563,10799=>838,10858=>838,10859=>838,10877=>838,10878=>838,10879=>838,10880=>838,10881=>838,10882=>838,10883=>838,10884=>838,10885=>838,10886=>838,10887=>838,10888=>838,10889=>838,10890=>838,10891=>838,10892=>838,10893=>838,10894=>838,10895=>838,10896=>838,10897=>838,10898=>838,10899=>838,10900=>838,10901=>838,10902=>838,10903=>838,10904=>838,10905=>838,10906=>838,10907=>838,10908=>838,10909=>838,10910=>838,10911=>838,10912=>838,10926=>838,10927=>838,10928=>838,10929=>838,10930=>838,10931=>838,10932=>838,10933=>838,10934=>838,10935=>838,10936=>838,10937=>838,10938=>838,11001=>838,11002=>838,11008=>838,11009=>838,11010=>838,11011=>838,11012=>838,11013=>838,11014=>838,11015=>838,11016=>838,11017=>838,11018=>838,11019=>838,11020=>838,11021=>838,11022=>838,11023=>838,11024=>838,11025=>838,11026=>945,11027=>945,11028=>945,11029=>945,11030=>769,11031=>769,11032=>769,11033=>769,11034=>945,11039=>869,11040=>869,11041=>873,11042=>873,11043=>873,11044=>1119,11091=>869,11092=>869,11360=>637,11361=>360,11362=>637,11363=>733,11364=>770,11365=>675,11366=>478,11367=>956,11368=>712,11369=>775,11370=>665,11371=>725,11372=>582,11373=>860,11374=>995,11375=>774,11376=>860,11377=>778,11378=>1221,11379=>1056,11380=>652,11381=>698,11382=>565,11383=>782,11385=>538,11386=>687,11387=>559,11388=>219,11389=>487,11390=>720,11391=>725,11520=>663,11521=>676,11522=>661,11523=>629,11524=>661,11525=>1032,11526=>718,11527=>1032,11528=>648,11529=>667,11530=>1032,11531=>673,11532=>677,11533=>1036,11534=>680,11535=>886,11536=>1032,11537=>683,11538=>674,11539=>1035,11540=>1033,11541=>1027,11542=>676,11543=>673,11544=>667,11545=>667,11546=>660,11547=>671,11548=>1039,11549=>673,11550=>692,11551=>659,11552=>1048,11553=>660,11554=>654,11555=>670,11556=>733,11557=>1017,11800=>586,11807=>838,11810=>457,11811=>457,11812=>457,11813=>457,11822=>580,19904=>896,19905=>896,19906=>896,19907=>896,19908=>896,19909=>896,19910=>896,19911=>896,19912=>896,19913=>896,19914=>896,19915=>896,19916=>896,19917=>896,19918=>896,19919=>896,19920=>896,19921=>896,19922=>896,19923=>896,19924=>896,19925=>896,19926=>896,19927=>896,19928=>896,19929=>896,19930=>896,19931=>896,19932=>896,19933=>896,19934=>896,19935=>896,19936=>896,19937=>896,19938=>896,19939=>896,19940=>896,19941=>896,19942=>896,19943=>896,19944=>896,19945=>896,19946=>896,19947=>896,19948=>896,19949=>896,19950=>896,19951=>896,19952=>896,19953=>896,19954=>896,19955=>896,19956=>896,19957=>896,19958=>896,19959=>896,19960=>896,19961=>896,19962=>896,19963=>896,19964=>896,19965=>896,19966=>896,19967=>896,42192=>762,42193=>733,42194=>733,42195=>830,42196=>682,42197=>682,42198=>821,42199=>775,42200=>775,42201=>530,42202=>734,42203=>734,42204=>725,42205=>683,42206=>683,42207=>995,42208=>837,42209=>637,42210=>720,42211=>770,42212=>770,42213=>774,42214=>774,42215=>837,42216=>786,42217=>530,42218=>1103,42219=>771,42220=>724,42221=>762,42222=>774,42223=>774,42224=>683,42225=>683,42226=>372,42227=>850,42228=>812,42229=>812,42230=>576,42231=>830,42232=>322,42233=>322,42234=>674,42235=>674,42236=>322,42237=>322,42238=>588,42239=>588,42564=>720,42565=>595,42566=>436,42567=>440,42572=>1405,42573=>1173,42576=>1234,42577=>1027,42580=>1174,42581=>972,42582=>1100,42583=>969,42594=>1100,42595=>940,42596=>1096,42597=>915,42598=>1260,42599=>997,42600=>850,42601=>687,42602=>1037,42603=>868,42604=>1406,42605=>1106,42606=>961,42634=>944,42635=>749,42636=>682,42637=>580,42644=>808,42645=>712,42760=>500,42761=>500,42762=>500,42763=>500,42764=>500,42765=>500,42766=>500,42767=>500,42768=>500,42769=>500,42770=>500,42771=>500,42772=>500,42773=>500,42774=>500,42779=>400,42780=>400,42781=>287,42782=>287,42783=>287,42786=>444,42787=>390,42788=>540,42789=>540,42790=>837,42791=>712,42792=>1031,42793=>857,42794=>696,42795=>557,42800=>559,42801=>595,42802=>1349,42803=>1052,42804=>1285,42805=>1065,42806=>1245,42807=>1052,42808=>1079,42809=>922,42810=>1079,42811=>922,42812=>1035,42813=>922,42814=>698,42815=>549,42816=>656,42817=>579,42822=>850,42823=>542,42824=>683,42825=>531,42826=>918,42827=>814,42830=>1406,42831=>1106,42832=>733,42833=>716,42834=>948,42835=>937,42838=>850,42839=>716,42852=>738,42853=>716,42854=>738,42855=>716,42880=>637,42881=>343,42882=>837,42883=>712,42889=>400,42890=>396,42891=>456,42892=>306,42893=>808,42894=>693,42896=>928,42897=>768,42912=>821,42913=>716,42914=>775,42915=>665,42916=>837,42917=>712,42918=>770,42919=>493,42920=>720,42921=>595,42922=>886,43002=>1062,43003=>683,43004=>733,43005=>995,43006=>372,43007=>1325,61184=>216,61185=>242,61186=>267,61187=>277,61188=>282,61189=>242,61190=>216,61191=>242,61192=>267,61193=>277,61194=>267,61195=>242,61196=>216,61197=>242,61198=>267,61199=>277,61200=>267,61201=>242,61202=>216,61203=>242,61204=>282,61205=>277,61206=>267,61207=>242,61208=>216,61209=>282,62464=>612,62465=>612,62466=>653,62467=>902,62468=>617,62469=>617,62470=>680,62471=>904,62472=>599,62473=>617,62474=>1163,62475=>621,62476=>622,62477=>893,62478=>612,62479=>622,62480=>924,62481=>622,62482=>754,62483=>624,62484=>886,62485=>622,62486=>907,62487=>621,62488=>611,62489=>624,62490=>677,62491=>621,62492=>611,62493=>630,62494=>622,62495=>561,62496=>612,62497=>626,62498=>612,62499=>611,62500=>618,62501=>667,62502=>963,62504=>1023,62505=>844,62506=>563,62507=>563,62508=>563,62509=>563,62510=>563,62511=>563,62512=>555,62513=>555,62514=>555,62515=>555,62516=>573,62517=>573,62518=>573,62519=>824,62520=>824,62521=>824,62522=>824,62523=>824,62524=>611,62525=>611,62526=>611,62527=>611,62528=>611,62529=>611,62917=>687,64256=>833,64257=>787,64258=>787,64259=>1138,64260=>1139,64261=>808,64262=>1020,64275=>1388,64276=>1384,64277=>1378,64278=>1384,64279=>1713,64285=>294,64286=>0,64287=>663,64288=>665,64289=>939,64290=>788,64291=>920,64292=>786,64293=>857,64294=>869,64295=>821,64296=>890,64297=>838,64298=>749,64299=>749,64300=>749,64301=>749,64302=>728,64303=>728,64304=>728,64305=>610,64306=>447,64307=>588,64308=>687,64309=>343,64310=>400,64311=>1000,64312=>679,64313=>436,64314=>578,64315=>566,64316=>605,64317=>1000,64318=>724,64319=>1000,64320=>453,64321=>680,64322=>1000,64323=>675,64324=>658,64325=>1000,64326=>653,64327=>736,64328=>602,64329=>749,64330=>683,64331=>343,64332=>610,64333=>566,64334=>658,64335=>710,65024=>0,65025=>0,65026=>0,65027=>0,65028=>0,65029=>0,65030=>0,65031=>0,65032=>0,65033=>0,65034=>0,65035=>0,65036=>0,65037=>0,65038=>0,65039=>0,65056=>0,65057=>0,65058=>0,65059=>0,65529=>0,65530=>0,65531=>0,65532=>0,65533=>1113,65535=>600);
16
- // --- EOF ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/lib/tcpdf_min/fonts/dejavusansbi.z DELETED
Binary file
includes/lib/tcpdf_min/fonts/droidsansfallback.ctg.z DELETED
Binary file
includes/lib/tcpdf_min/fonts/droidsansfallback.php DELETED
@@ -1,15 +0,0 @@
1
- <?php
2
- // TCPDF FONT FILE DESCRIPTION
3
- $type='TrueTypeUnicode';
4
- $name='DroidSansFallback';
5
- $up=-78;
6
- $ut=51;
7
- $dw=1000;
8
- $diff='';
9
- $originalsize=3189464;
10
- $enc='';
11
- $file='droidsansfallback.z';
12
- $ctg='droidsansfallback.ctg.z';
13
- $desc=array('Flags'=>32,'FontBBox'=>'[-90 -266 1121 1043]','ItalicAngle'=>0,'Ascent'=>1043,'Descent'=>-266,'Leading'=>0,'CapHeight'=>715,'XHeight'=>535,'StemV'=>274,'StemH'=>117,'AvgWidth'=>992,'MaxWidth'=>1168,'MissingWidth'=>1000);
14
- $cw=array(0=>1000,32=>262,33=>270,34=>402,35=>645,36=>551,37=>824,38=>703,39=>227,40=>301,41=>301,42=>551,43=>551,44=>250,45=>320,46=>270,47=>375,48=>551,49=>551,50=>551,51=>551,52=>551,53=>551,54=>551,55=>551,56=>551,57=>551,58=>270,59=>270,60=>551,61=>551,62=>551,63=>426,64=>867,65=>609,66=>621,67=>602,68=>684,69=>527,70=>492,71=>691,72=>703,73=>340,74=>270,75=>578,76=>492,77=>871,78=>730,79=>742,80=>578,81=>742,82=>590,83=>520,84=>520,85=>699,86=>566,87=>883,88=>547,89=>527,90=>539,91=>305,92=>375,93=>305,94=>531,95=>410,96=>578,97=>531,98=>586,99=>465,100=>586,101=>535,102=>328,103=>520,104=>590,105=>258,106=>258,107=>496,108=>258,109=>895,110=>590,111=>578,112=>586,113=>586,114=>398,115=>453,116=>340,117=>590,118=>480,119=>746,120=>500,121=>488,122=>441,123=>355,124=>551,125=>355,126=>551,160=>262,161=>270,164=>551,167=>484,168=>578,170=>332,173=>320,174=>832,175=>410,176=>430,177=>551,178=>332,179=>332,180=>578,182=>656,183=>270,184=>207,185=>332,186=>352,188=>738,189=>738,190=>738,191=>426,198=>852,208=>684,215=>551,216=>742,222=>578,223=>602,224=>531,225=>531,230=>832,232=>535,233=>535,234=>535,236=>258,237=>258,240=>578,242=>578,243=>578,247=>551,248=>578,249=>590,250=>590,252=>590,254=>586,257=>531,273=>586,275=>535,283=>535,294=>703,295=>590,299=>258,305=>258,306=>609,307=>520,312=>496,319=>492,320=>301,321=>492,322=>258,329=>660,330=>730,331=>590,333=>578,338=>891,339=>910,358=>520,359=>340,363=>590,462=>531,464=>258,466=>578,468=>590,470=>590,472=>590,474=>590,476=>590,711=>578,713=>559,714=>578,715=>578,717=>559,720=>262,728=>578,729=>258,730=>578,731=>184,733=>578,913=>609,914=>621,915=>492,916=>566,917=>527,918=>539,919=>703,920=>742,921=>340,922=>578,923=>566,924=>871,925=>730,926=>531,927=>742,928=>691,929=>578,931=>531,932=>520,933=>527,934=>766,935=>547,936=>766,937=>742,945=>586,946=>602,947=>488,948=>578,949=>453,950=>453,951=>590,952=>566,953=>328,954=>496,955=>512,956=>594,957=>516,958=>445,959=>578,960=>629,961=>578,963=>590,964=>449,965=>590,966=>699,967=>523,968=>738,969=>754,1025=>527,1040=>609,1041=>574,1042=>621,1043=>492,1044=>648,1045=>527,1046=>816,1047=>547,1048=>730,1049=>730,1050=>578,1051=>668,1052=>871,1053=>703,1054=>742,1055=>691,1056=>578,1057=>602,1058=>520,1059=>586,1060=>766,1061=>547,1062=>699,1063=>660,1064=>996,1065=>996,1066=>656,1067=>824,1068=>574,1069=>594,1070=>1016,1071=>590,1072=>531,1073=>570,1074=>566,1075=>398,1076=>547,1077=>535,1078=>719,1079=>461,1080=>613,1081=>613,1082=>492,1083=>547,1084=>719,1085=>613,1086=>578,1087=>594,1088=>586,1089=>465,1090=>441,1091=>488,1092=>695,1093=>500,1094=>602,1095=>586,1096=>867,1097=>879,1098=>680,1099=>750,1100=>566,1101=>461,1102=>809,1103=>531,1105=>535,8208=>320,8211=>500,8212=>1000,8213=>1000,8214=>512,8216=>176,8217=>176,8220=>363,8221=>363,8224=>484,8225=>496,8229=>535,8230=>805,8231=>270,8240=>1168,8242=>227,8243=>402,8245=>227,8251=>699,8308=>332,8319=>367,8321=>332,8322=>332,8323=>332,8324=>332,8364=>551,8451=>1000,8453=>1000,8457=>1000,8467=>1000,8470=>1000,8481=>1000,8482=>1000,8486=>742,8491=>1000,8531=>738,8532=>738,8539=>738,8540=>738,8541=>738,8542=>738,8544=>1000,8545=>1000,8546=>1000,8547=>1000,8548=>1000,8549=>1000,8550=>1000,8551=>1000,8552=>1000,8553=>1000,8554=>1000,8555=>1000,8560=>1000,8561=>1000,8562=>1000,8563=>1000,8564=>1000,8565=>1000,8566=>1000,8567=>1000,8568=>1000,8569=>1000,8592=>1000,8593=>500,8594=>1000,8595=>500,8596=>1000,8597=>500,8598=>1000,8599=>1000,8600=>1000,8601=>1000,8658=>1000,8660=>1000,8704=>1000,8706=>1000,8707=>1000,8711=>1000,8712=>1000,8715=>1000,8719=>1000,8721=>1000,8725=>1000,8730=>1000,8733=>1000,8734=>1000,8735=>1000,8736=>1000,8739=>500,8741=>500,8743=>1000,8744=>1000,8745=>1000,8746=>1000,8747=>500,8748=>1000,8750=>500,8756=>1000,8757=>1000,8758=>1000,8759=>1000,8764=>1000,8765=>1000,8776=>1000,8780=>1000,8786=>1000,8800=>551,8801=>1000,8804=>1000,8805=>1000,8806=>1000,8807=>1000,8810=>1000,8811=>1000,8814=>1000,8815=>1000,8834=>1000,8835=>1000,8838=>1000,8839=>1000,8853=>1000,8857=>1000,8869=>1000,8895=>1000,8978=>1000,9312=>1000,9313=>1000,9314=>1000,9315=>1000,9316=>1000,9317=>1000,9318=>1000,9319=>1000,9320=>1000,9321=>1000,9322=>1000,9323=>1000,9324=>1000,9325=>1000,9326=>1000,9327=>1000,9328=>1000,9329=>1000,9330=>1000,9331=>1000,9332=>1000,9333=>1000,9334=>1000,9335=>1000,9336=>1000,9337=>1000,9338=>1000,9339=>1000,9340=>1000,9341=>1000,9342=>1000,9343=>1000,9344=>1000,9345=>1000,9346=>1000,9347=>1000,9348=>1000,9349=>1000,9350=>1000,9351=>1000,9352=>1000,9353=>1000,9354=>1000,9355=>1000,9356=>1000,9357=>1000,9358=>1000,9359=>1000,9360=>1000,9361=>1000,9362=>1000,9363=>1000,9364=>1000,9365=>1000,9366=>1000,9367=>1000,9368=>1000,9369=>1000,9370=>1000,9371=>1000,9372=>1000,9373=>1000,9374=>1000,9375=>1000,9376=>1000,9377=>1000,9378=>1000,9379=>1000,9380=>1000,9381=>1000,9382=>1000,9383=>1000,9384=>1000,9385=>1000,9386=>1000,9387=>1000,9388=>1000,9389=>1000,9390=>1000,9391=>1000,9392=>1000,9393=>1000,9394=>1000,9395=>1000,9396=>1000,9397=>1000,9424=>1000,9425=>1000,9426=>1000,9427=>1000,9428=>1000,9429=>1000,9430=>1000,9431=>1000,9432=>1000,9433=>1000,9434=>1000,9435=>1000,9436=>1000,9437=>1000,9438=>1000,9439=>1000,9440=>1000,9441=>1000,9442=>1000,9443=>1000,9444=>1000,9445=>1000,9446=>1000,9447=>1000,9448=>1000,9449=>1000,9472=>602,9473=>602,9474=>602,9475=>602,9476=>602,9477=>602,9478=>602,9479=>602,9480=>602,9481=>602,9482=>602,9483=>602,9484=>602,9485=>602,9486=>602,9487=>602,9488=>602,9489=>602,9490=>602,9491=>602,9492=>602,9493=>602,9494=>602,9495=>602,9496=>602,9497=>602,9498=>602,9499=>602,9500=>602,9501=>602,9502=>602,9503=>602,9504=>602,9505=>602,9506=>602,9507=>602,9508=>602,9509=>602,9510=>602,9511=>602,9512=>602,9513=>602,9514=>602,9515=>602,9516=>602,9517=>602,9518=>602,9519=>602,9520=>602,9521=>602,9522=>602,9523=>602,9524=>602,9525=>602,9526=>602,9527=>602,9528=>602,9529=>602,9530=>602,9531=>602,9532=>602,9533=>602,9534=>602,9535=>602,9536=>602,9537=>602,9538=>602,9539=>602,9540=>602,9541=>602,9542=>602,9543=>602,9544=>602,9545=>602,9546=>602,9547=>602,9552=>602,9553=>602,9554=>602,9555=>602,9556=>602,9557=>602,9558=>602,9559=>602,9560=>602,9561=>602,9562=>602,9563=>602,9564=>602,9565=>602,9566=>602,9567=>602,9568=>602,9569=>602,9570=>602,9571=>602,9572=>602,9573=>602,9574=>602,9575=>602,9576=>602,9577=>602,9578=>602,9579=>602,9580=>602,9581=>602,9582=>602,9583=>602,9584=>602,9585=>602,9586=>602,9587=>602,9588=>602,9601=>602,9602=>602,9603=>602,9604=>602,9605=>602,9606=>602,9607=>602,9608=>602,9609=>602,9610=>602,9611=>602,9612=>602,9613=>602,9614=>602,9615=>602,9618=>602,9619=>602,9620=>602,9621=>602,9632=>602,9633=>602,9635=>602,9636=>602,9637=>602,9638=>602,9639=>602,9640=>602,9641=>602,9650=>602,9651=>602,9654=>602,9655=>602,9660=>602,9661=>602,9664=>602,9665=>602,9670=>602,9671=>602,9672=>602,9675=>602,9678=>602,9679=>602,9680=>602,9681=>602,9698=>602,9699=>602,9700=>602,9701=>602,9711=>602,9733=>1000,9734=>1000,9742=>1000,9743=>1000,9756=>938,9758=>938,9792=>1000,9794=>1000,9824=>1000,9825=>1000,9827=>1000,9828=>1000,9829=>1000,9831=>1000,9832=>1000,9833=>1000,9834=>1000,9836=>1000,9837=>1000,9839=>1000,12288=>1000,12289=>1000,12290=>1000,12291=>1000,12293=>1000,12294=>1000,12295=>1000,12296=>1000,12297=>1000,12298=>1000,12299=>1000,12300=>1000,12301=>1000,12302=>1000,12303=>1000,12304=>1000,12305=>1000,12306=>1000,12307=>1000,12308=>1000,12309=>1000,12310=>1000,12311=>1000,12317=>1000,12318=>1000,12319=>1000,12321=>1000,12322=>1000,12323=>1000,12324=>1000,12325=>1000,12326=>1000,12327=>1000,12328=>1000,12329=>1000,12353=>1000,12354=>1000,12355=>1000,12356=>1000,12357=>1000,12358=>1000,12359=>1000,12360=>1000,12361=>1000,12362=>1000,12363=>1000,12364=>1000,12365=>1000,12366=>1000,12367=>1000,12368=>1000,12369=>1000,12370=>1000,12371=>1000,12372=>1000,12373=>1000,12374=>1000,12375=>1000,12376=>1000,12377=>1000,12378=>1000,12379=>1000,12380=>1000,12381=>1000,12382=>1000,12383=>1000,12384=>1000,12385=>1000,12386=>1000,12387=>1000,12388=>1000,12389=>1000,12390=>1000,12391=>1000,12392=>1000,12393=>1000,12394=>1000,12395=>1000,12396=>1000,12397=>1000,12398=>1000,12399=>1000,12400=>1000,12401=>1000,12402=>1000,12403=>1000,12404=>1000,12405=>1000,12406=>1000,12407=>1000,12408=>1000,12409=>1000,12410=>1000,12411=>1000,12412=>1000,12413=>1000,12414=>1000,12415=>1000,12416=>1000,12417=>1000,12418=>1000,12419=>1000,12420=>1000,12421=>1000,12422=>1000,12423=>1000,12424=>1000,12425=>1000,12426=>1000,12427=>1000,12428=>1000,12429=>1000,12430=>1000,12431=>1000,12432=>1000,12433=>1000,12434=>1000,12435=>1000,12443=>1000,12444=>1000,12445=>1000,12446=>1000,12449=>1000,12450=>1000,12451=>1000,12452=>1000,12453=>1000,12454=>1000,12455=>1000,12456=>1000,12457=>1000,12458=>1000,12459=>1000,12460=>1000,12461=>1000,12462=>1000,12463=>1000,12464=>1000,12465=>1000,12466=>1000,12467=>1000,12468=>1000,12469=>1000,12470=>1000,12471=>1000,12472=>1000,12473=>1000,12474=>1000,12475=>1000,12476=>1000,12477=>1000,12478=>1000,12479=>1000,12480=>1000,12481=>1000,12482=>1000,12483=>1000,12484=>1000,12485=>1000,12486=>1000,12487=>1000,12488=>1000,12489=>1000,12490=>1000,12491=>1000,12492=>1000,12493=>1000,12494=>1000,12495=>1000,12496=>1000,12497=>1000,12498=>1000,12499=>1000,12500=>1000,12501=>1000,12502=>1000,12503=>1000,12504=>1000,12505=>1000,12506=>1000,12507=>1000,12508=>1000,12509=>1000,12510=>1000,12511=>1000,12512=>1000,12513=>1000,12514=>1000,12515=>1000,12516=>1000,12517=>1000,12518=>1000,12519=>1000,12520=>1000,12521=>1000,12522=>1000,12523=>1000,12524=>1000,12525=>1000,12526=>1000,12527=>1000,12528=>1000,12529=>1000,12530=>1000,12531=>1000,12532=>1000,12533=>1000,12534=>1000,12539=>1000,12540=>1000,12541=>1000,12542=>1000,12549=>1000,12550=>1000,12551=>1000,12552=>1000,12553=>1000,12554=>1000,12555=>1000,12556=>1000,12557=>1000,12558=>1000,12559=>1000,12560=>1000,12561=>1000,12562=>1000,12563=>1000,12564=>1000,12565=>1000,12566=>1000,12567=>1000,12568=>1000,12569=>1000,12570=>1000,12571=>1000,12572=>1000,12573=>1000,12574=>1000,12575=>1000,12576=>1000,12577=>1000,12578=>1000,12579=>1000,12580=>1000,12581=>1000,12582=>1000,12583=>1000,12584=>1000,12585=>1000,12593=>1000,12594=>1000,12595=>1000,12596=>1000,12597=>1000,12598=>1000,12599=>1000,12600=>1000,12601=>1000,12602=>1000,12603=>1000,12604=>1000,12605=>1000,12606=>1000,12607=>1000,12608=>1000,12609=>1000,12610=>1000,12611=>1000,12612=>1000,12613=>1000,12614=>1000,12615=>1000,12616=>1000,12617=>1000,12618=>1000,12619=>1000,12620=>1000,12621=>1000,12622=>1000,12623=>1000,12624=>1000,12625=>1000,12626=>1000,12627=>1000,12628=>1000,12629=>1000,12630=>1000,12631=>1000,12632=>1000,12633=>1000,12634=>1000,12635=>1000,12636=>1000,12637=>1000,12638=>1000,12639=>1000,12640=>1000,12641=>1000,12642=>1000,12643=>1000,12644=>1000,12645=>1000,12646=>1000,12647=>1000,12648=>1000,12649=>1000,12650=>1000,12651=>1000,12652=>1000,12653=>1000,12654=>1000,12655=>1000,12656=>1000,12657=>1000,12658=>1000,12659=>1000,12660=>1000,12661=>1000,12662=>1000,12663=>1000,12664=>1000,12665=>1000,12666=>1000,12667=>1000,12668=>1000,12669=>1000,12670=>1000,12671=>1000,12672=>1000,12673=>1000,12674=>1000,12675=>1000,12676=>1000,12677=>1000,12678=>1000,12679=>1000,12680=>1000,12681=>1000,12682=>1000,12683=>1000,12684=>1000,12685=>1000,12686=>1000,12800=>1000,12801=>1000,12802=>1000,12803=>1000,12804=>1000,12805=>1000,12806=>1000,12807=>1000,12808=>1000,12809=>1000,12810=>1000,12811=>1000,12812=>1000,12813=>1000,12814=>1000,12815=>1000,12816=>1000,12817=>1000,12818=>1000,12819=>1000,12820=>1000,12821=>1000,12822=>1000,12823=>1000,12824=>1000,12825=>1000,12826=>1000,12827=>1000,12828=>1000,12832=>1000,12833=>1000,12834=>1000,12835=>1000,12836=>1000,12837=>1000,12838=>1000,12839=>1000,12840=>1000,12841=>1000,12849=>1000,12850=>1000,12857=>1000,12896=>1000,12897=>1000,12898=>1000,12899=>1000,12900=>1000,12901=>1000,12902=>1000,12903=>1000,12904=>1000,12905=>1000,12906=>1000,12907=>1000,12908=>1000,12909=>1000,12910=>1000,12911=>1000,12912=>1000,12913=>1000,12914=>1000,12915=>1000,12916=>1000,12917=>1000,12918=>1000,12919=>1000,12920=>1000,12921=>1000,12922=>1000,12923=>1000,12927=>1000,12963=>1000,12964=>1000,12965=>1000,12966=>1000,12967=>1000,12968=>1000,13059=>1000,13069=>1000,13076=>1000,13080=>1000,13090=>1000,13091=>1000,13094=>1000,13095=>1000,13099=>1000,13110=>1000,13115=>1000,13129=>1000,13130=>1000,13133=>1000,13137=>1000,13143=>1000,13179=>1000,13180=>1000,13181=>1000,13182=>1000,13184=>1000,13185=>1000,13186=>1000,13187=>1000,13188=>1000,13192=>1000,13193=>1000,13194=>1000,13195=>1000,13196=>1000,13197=>1000,13198=>1000,13199=>1000,13200=>1000,13201=>1000,13202=>1000,13203=>1000,13204=>1000,13205=>1000,13206=>1000,13207=>1000,13208=>1000,13209=>1000,13210=>1000,13211=>1000,13212=>1000,13213=>1000,13214=>1000,13215=>1000,13216=>1000,13217=>1000,13218=>1000,13219=>1000,13220=>1000,13221=>1000,13222=>1000,13223=>1000,13224=>1000,13225=>1000,13226=>1000,13227=>1000,13228=>1000,13229=>1000,13230=>1000,13231=>1000,13232=>1000,13233=>1000,13234=>1000,13235=>1000,13236=>1000,13237=>1000,13238=>1000,13239=>1000,13240=>1000,13241=>1000,13242=>1000,13243=>1000,13244=>1000,13245=>1000,13246=>1000,13247=>1000,13248=>1000,13249=>1000,13250=>1000,13251=>1000,13252=>1000,13253=>1000,13254=>1000,13255=>1000,13256=>1000,13257=>1000,13258=>1000,13261=>1000,13262=>1000,13263=>1000,13264=>1000,13265=>1000,13266=>1000,13267=>1000,13269=>1000,13270=>1000,13272=>1000,13275=>1000,13276=>1000,13277=>1000,19968=>1000,19969=>1000,19971=>1000,19975=>1000,19976=>1000,19977=>1000,19978=>1000,19979=>1000,19980=>1000,19981=>1000,19982=>1000,19983=>1000,19984=>1000,19985=>1000,19987=>1000,19988=>1000,19989=>1000,19990=>1000,19991=>1000,19992=>1000,19993=>1000,19994=>1000,19995=>1000,19996=>1000,19997=>1000,19998=>1000,19999=>1000,20001=>1000,20002=>1000,20004=>1000,20005=>1000,20006=>1000,20007=>1000,20008=>1000,20010=>1000,20011=>1000,20012=>1000,20013=>1000,20014=>1000,20016=>1000,20017=>1000,20018=>1000,20019=>1000,20020=>1000,20022=>1000,20024=>1000,20025=>1000,20026=>1000,20027=>1000,20028=>1000,20029=>1000,20030=>1000,20031=>1000,20034=>1000,20035=>1000,20037=>1000,20039=>1000,20040=>1000,20041=>1000,20043=>1000,20044=>1000,20045=>1000,20046=>1000,20047=>1000,20048=>1000,20050=>1000,20051=>1000,20052=>1000,20053=>1000,20054=>1000,20055=>1000,20056=>1000,20057=>1000,20060=>1000,20061=>1000,20062=>1000,20063=>1000,20064=>1000,20065=>1000,20066=>1000,20070=>1000,20073=>1000,20075=>1000,20077=>1000,20080=>1000,20081=>1000,20083=>1000,20086=>1000,20087=>1000,20094=>1000,20095=>1000,20096=>1000,20098=>1000,20099=>1000,20100=>1000,20101=>1000,20102=>1000,20104=>1000,20105=>1000,20106=>1000,20107=>1000,20108=>1000,20109=>1000,20110=>1000,20111=>1000,20112=>1000,20113=>1000,20114=>1000,20115=>1000,20116=>1000,20117=>1000,20120=>1000,20121=>1000,20122=>1000,20123=>1000,20124=>1000,20126=>1000,20127=>1000,20128=>1000,20129=>1000,20130=>1000,20132=>1000,20133=>1000,20134=>1000,20135=>1000,20136=>1000,20137=>1000,20139=>1000,20140=>1000,20141=>1000,20142=>1000,20144=>1000,20146=>1000,20147=>1000,20149=>1000,20150=>1000,20153=>1000,20154=>1000,20155=>1000,20159=>1000,20160=>1000,20161=>1000,20162=>1000,20163=>1000,20164=>1000,20165=>1000,20166=>1000,20167=>1000,20168=>1000,20169=>1000,20170=>1000,20171=>1000,20173=>1000,20174=>1000,20175=>1000,20177=>1000,20179=>1000,20180=>1000,20181=>1000,20182=>1000,20183=>1000,20184=>1000,20185=>1000,20186=>1000,20188=>1000,20189=>1000,20190=>1000,20191=>1000,20193=>1000,20195=>1000,20196=>1000,20197=>1000,20200=>1000,20201=>1000,20202=>1000,20203=>1000,20204=>1000,20205=>1000,20206=>1000,20208=>1000,20209=>1000,20210=>1000,20211=>1000,20212=>1000,20213=>1000,20214=>1000,20215=>1000,20219=>1000,20220=>1000,20221=>1000,20223=>1000,20224=>1000,20225=>1000,20226=>1000,20227=>1000,20228=>1000,20229=>1000,20232=>1000,20233=>1000,20234=>1000,20235=>1000,20237=>1000,20238=>1000,20239=>1000,20240=>1000,20241=>1000,20242=>1000,20243=>1000,20244=>1000,20245=>1000,20247=>1000,20248=>1000,20249=>1000,20250=>1000,20251=>1000,20252=>1000,20253=>1000,20254=>1000,20255=>1000,20256=>1000,20258=>1000,20260=>1000,20261=>1000,20262=>1000,20263=>1000,20266=>1000,20267=>1000,20268=>1000,20269=>1000,20271=>1000,20272=>1000,20274=>1000,20275=>1000,20276=>1000,20278=>1000,20280=>1000,20281=>1000,20282=>1000,20283=>1000,20284=>1000,20285=>1000,20286=>1000,20287=>1000,20289=>1000,20291=>1000,20294=>1000,20295=>1000,20296=>1000,20297=>1000,20300=>1000,20301=>1000,20302=>1000,20303=>1000,20304=>1000,20305=>1000,20306=>1000,20307=>1000,20308=>1000,20309=>1000,20310=>1000,20311=>1000,20312=>1000,20313=>1000,20314=>1000,20315=>1000,20316=>1000,20317=>1000,20318=>1000,20319=>1000,20320=>1000,20321=>1000,20322=>1000,20323=>1000,20324=>1000,20325=>1000,20327=>1000,20329=>1000,20330=>1000,20331=>1000,20332=>1000,20334=>1000,20335=>1000,20336=>1000,20339=>1000,20340=>1000,20341=>1000,20342=>1000,20343=>1000,20344=>1000,20345=>1000,20346=>1000,20347=>1000,20348=>1000,20349=>1000,20350=>1000,20351=>1000,20352=>1000,20353=>1000,20354=>1000,20355=>1000,20356=>1000,20357=>1000,20358=>1000,20359=>1000,20360=>1000,20361=>1000,20362=>1000,20363=>1000,20365=>1000,20367=>1000,20368=>1000,20369=>1000,20370=>1000,20372=>1000,20373=>1000,20374=>1000,20375=>1000,20376=>1000,20378=>1000,20379=>1000,20380=>1000,20381=>1000,20382=>1000,20384=>1000,20385=>1000,20387=>1000,20389=>1000,20390=>1000,20391=>1000,20392=>1000,20393=>1000,20394=>1000,20395=>1000,20396=>1000,20397=>1000,20398=>1000,20399=>1000,20402=>1000,20403=>1000,20405=>1000,20406=>1000,20407=>1000,20409=>1000,20410=>1000,20411=>1000,20415=>1000,20416=>1000,20417=>1000,20418=>1000,20419=>1000,20420=>1000,20421=>1000,20423=>1000,20425=>1000,20426=>1000,20427=>1000,20429=>1000,20430=>1000,20431=>1000,20432=>1000,20433=>1000,20435=>1000,20436=>1000,20438=>1000,20439=>1000,20440=>1000,20441=>1000,20442=>1000,20443=>1000,20444=>1000,20445=>1000,20446=>1000,20447=>1000,20448=>1000,20449=>1000,20451=>1000,20452=>1000,20453=>1000,20454=>1000,20456=>1000,20457=>1000,20458=>1000,20460=>1000,20461=>1000,20462=>1000,20463=>1000,20465=>1000,20467=>1000,20468=>1000,20469=>1000,20470=>1000,20471=>1000,20472=>1000,20474=>1000,20478=>1000,20479=>1000,20480=>1000,20482=>1000,20485=>1000,20486=>1000,20487=>1000,20489=>1000,20491=>1000,20492=>1000,20493=>1000,20494=>1000,20495=>1000,20497=>1000,20498=>1000,20499=>1000,20500=>1000,20501=>1000,20502=>1000,20503=>1000,20504=>1000,20505=>1000,20506=>1000,20507=>1000,20508=>1000,20510=>1000,20511=>1000,20512=>1000,20513=>1000,20514=>1000,20515=>1000,20516=>1000,20517=>1000,20518=>1000,20519=>1000,20520=>1000,20521=>1000,20522=>1000,20523=>1000,20524=>1000,20525=>1000,20526=>1000,20527=>1000,20528=>1000,20529=>1000,20531=>1000,20533=>1000,20534=>1000,20535=>1000,20537=>1000,20538=>1000,20539=>1000,20540=>1000,20542=>1000,20544=>1000,20545=>1000,20546=>1000,20547=>1000,20549=>1000,20550=>1000,20551=>1000,20552=>1000,20553=>1000,20554=>1000,20555=>1000,20556=>1000,20557=>1000,20558=>1000,20559=>1000,20560=>1000,20561=>1000,20563=>1000,20565=>1000,20566=>1000,20567=>1000,20570=>1000,20571=>1000,20572=>1000,20573=>1000,20574=>1000,20575=>1000,20576=>1000,20577=>1000,20578=>1000,20579=>1000,20580=>1000,20581=>1000,20584=>1000,20585=>1000,20586=>1000,20587=>1000,20588=>1000,20589=>1000,20590=>1000,20591=>1000,20592=>1000,20594=>1000,20595=>1000,20596=>1000,20597=>1000,20598=>1000,20599=>1000,20600=>1000,20602=>1000,20603=>1000,20605=>1000,20606=>1000,20607=>1000,20608=>1000,20610=>1000,20611=>1000,20613=>1000,20615=>1000,20616=>1000,20619=>1000,20620=>1000,20621=>1000,20622=>1000,20625=>1000,20626=>1000,20628=>1000,20629=>1000,20630=>1000,20632=>1000,20633=>1000,20634=>1000,20635=>1000,20636=>1000,20637=>1000,20638=>1000,20642=>1000,20643=>1000,20645=>1000,20647=>1000,20648=>1000,20649=>1000,20652=>1000,20653=>1000,20654=>1000,20655=>1000,20656=>1000,20657=>1000,20658=>1000,20659=>1000,20660=>1000,20661=>1000,20662=>1000,20663=>1000,20664=>1000,20666=>1000,20667=>1000,20669=>1000,20670=>1000,20671=>1000,20673=>1000,20674=>1000,20676=>1000,20677=>1000,20678=>1000,20679=>1000,20680=>1000,20681=>1000,20682=>1000,20683=>1000,20685=>1000,20686=>1000,20687=>1000,20689=>1000,20691=>1000,20692=>1000,20693=>1000,20694=>1000,20695=>1000,20696=>1000,20698=>1000,20699=>1000,20701=>1000,20702=>1000,20704=>1000,20707=>1000,20708=>1000,20709=>1000,20710=>1000,20711=>1000,20712=>1000,20713=>1000,20714=>1000,20716=>1000,20717=>1000,20718=>1000,20719=>1000,20720=>1000,20721=>1000,20723=>1000,20724=>1000,20725=>1000,20726=>1000,20728=>1000,20729=>1000,20731=>1000,20733=>1000,20734=>1000,20735=>1000,20736=>1000,20737=>1000,20738=>1000,20739=>1000,20740=>1000,20741=>1000,20742=>1000,20743=>1000,20744=>1000,20745=>1000,20746=>1000,20747=>1000,20748=>1000,20752=>1000,20753=>1000,20754=>1000,20755=>1000,20756=>1000,20757=>1000,20758=>1000,20759=>1000,20760=>1000,20762=>1000,20764=>1000,20767=>1000,20768=>1000,20769=>1000,20770=>1000,20772=>1000,20773=>1000,20774=>1000,20777=>1000,20778=>1000,20781=>1000,20782=>1000,20784=>1000,20785=>1000,20786=>1000,20787=>1000,20788=>1000,20789=>1000,20791=>1000,20792=>1000,20793=>1000,20794=>1000,20795=>1000,20796=>1000,20797=>1000,20799=>1000,20800=>1000,20801=>1000,20803=>1000,20804=>1000,20805=>1000,20806=>1000,20807=>1000,20808=>1000,20809=>1000,20810=>1000,20811=>1000,20812=>1000,20813=>1000,20814=>1000,20816=>1000,20817=>1000,20818=>1000,20820=>1000,20821=>1000,20822=>1000,20823=>1000,20825=>1000,20826=>1000,20827=>1000,20828=>1000,20829=>1000,20830=>1000,20831=>1000,20833=>1000,20834=>1000,20835=>1000,20836=>1000,20837=>1000,20839=>1000,20840=>1000,20841=>1000,20842=>1000,20843=>1000,20844=>1000,20845=>1000,20846=>1000,20848=>1000,20849=>1000,20851=>1000,20852=>1000,20853=>1000,20854=>1000,20855=>1000,20856=>1000,20857=>1000,20859=>1000,20860=>1000,20861=>1000,20864=>1000,20865=>1000,20866=>1000,20869=>1000,20870=>1000,20871=>1000,20872=>1000,20873=>1000,20874=>1000,20876=>1000,20877=>1000,20879=>1000,20880=>1000,20881=>1000,20882=>1000,20883=>1000,20884=>1000,20885=>1000,20886=>1000,20887=>1000,20888=>1000,20889=>1000,20891=>1000,20892=>1000,20893=>1000,20894=>1000,20896=>1000,20898=>1000,20900=>1000,20901=>1000,20902=>1000,20904=>1000,20905=>1000,20906=>1000,20907=>1000,20908=>1000,20911=>1000,20912=>1000,20913=>1000,20914=>1000,20915=>1000,20916=>1000,20917=>1000,20918=>1000,20919=>1000,20921=>1000,20923=>1000,20924=>1000,20925=>1000,20926=>1000,20928=>1000,20932=>1000,20933=>1000,20934=>1000,20935=>1000,20936=>1000,20937=>1000,20938=>1000,20939=>1000,20940=>1000,20941=>1000,20942=>1000,20943=>1000,20944=>1000,20945=>1000,20948=>1000,20950=>1000,20951=>1000,20952=>1000,20955=>1000,20956=>1000,20957=>1000,20958=>1000,20960=>1000,20961=>1000,20964=>1000,20966=>1000,20967=>1000,20969=>1000,20970=>1000,20971=>1000,20972=>1000,20973=>1000,20975=>1000,20976=>1000,20977=>1000,20979=>1000,20981=>1000,20982=>1000,20984=>1000,20985=>1000,20986=>1000,20987=>1000,20988=>1000,20989=>1000,20990=>1000,20991=>1000,20992=>1000,20993=>1000,20994=>1000,20995=>1000,20996=>1000,20998=>1000,20999=>1000,21000=>1000,21001=>1000,21002=>1000,21003=>1000,21004=>1000,21005=>1000,21006=>1000,21008=>1000,21009=>1000,21010=>1000,21011=>1000,21012=>1000,21013=>1000,21014=>1000,21015=>1000,21016=>1000,21017=>1000,21018=>1000,21019=>1000,21020=>1000,21021=>1000,21022=>1000,21024=>1000,21025=>1000,21028=>1000,21029=>1000,21031=>1000,21032=>1000,21033=>1000,21034=>1000,21035=>1000,21037=>1000,21038=>1000,21040=>1000,21041=>1000,21042=>1000,21043=>1000,21045=>1000,21046=>1000,21047=>1000,21048=>1000,21049=>1000,21050=>1000,21051=>1000,21053=>1000,21055=>1000,21056=>1000,21057=>1000,21058=>1000,21059=>1000,21060=>1000,21062=>1000,21063=>1000,21065=>1000,21066=>1000,21067=>1000,21068=>1000,21069=>1000,21070=>1000,21071=>1000,21072=>1000,21073=>1000,21074=>1000,21076=>1000,21077=>1000,21078=>1000,21082=>1000,21083=>1000,21084=>1000,21085=>1000,21086=>1000,21087=>1000,21089=>1000,21090=>1000,21091=>1000,21092=>1000,21093=>1000,21095=>1000,21097=>1000,21098=>1000,21099=>1000,21100=>1000,21101=>1000,21102=>1000,21103=>1000,21104=>1000,21105=>1000,21106=>1000,21107=>1000,21108=>1000,21109=>1000,21111=>1000,21112=>1000,21114=>1000,21115=>1000,21116=>1000,21117=>1000,21119=>1000,21120=>1000,21121=>1000,21122=>1000,21123=>1000,21124=>1000,21127=>1000,21128=>1000,21129=>1000,21130=>1000,21131=>1000,21132=>1000,21133=>1000,21136=>1000,21137=>1000,21138=>1000,21139=>1000,21140=>1000,21142=>1000,21143=>1000,21144=>1000,21145=>1000,21147=>1000,21148=>1000,21149=>1000,21150=>1000,21151=>1000,21152=>1000,21153=>1000,21154=>1000,21155=>1000,21156=>1000,21158=>1000,21160=>1000,21161=>1000,21162=>1000,21163=>1000,21164=>1000,21165=>1000,21166=>1000,21167=>1000,21169=>1000,21170=>1000,21171=>1000,21172=>1000,21173=>1000,21177=>1000,21179=>1000,21180=>1000,21182=>1000,21183=>1000,21184=>1000,21185=>1000,21186=>1000,21187=>1000,21189=>1000,21191=>1000,21193=>1000,21195=>1000,21197=>1000,21200=>1000,21202=>1000,21203=>1000,21205=>1000,21206=>1000,21207=>1000,21208=>1000,21209=>1000,21211=>1000,21213=>1000,21214=>1000,21215=>1000,21216=>1000,21218=>1000,21219=>1000,21220=>1000,21222=>1000,21223=>1000,21225=>1000,21227=>1000,21231=>1000,21232=>1000,21233=>1000,21234=>1000,21235=>1000,21236=>1000,21237=>1000,21239=>1000,21240=>1000,21241=>1000,21242=>1000,21243=>1000,21244=>1000,21246=>1000,21247=>1000,21248=>1000,21249=>1000,21250=>1000,21253=>1000,21254=>1000,21255=>1000,21256=>1000,21257=>1000,21258=>1000,21259=>1000,21261=>1000,21262=>1000,21263=>1000,21264=>1000,21265=>1000,21266=>1000,21269=>1000,21270=>1000,21271=>1000,21273=>1000,21274=>1000,21276=>1000,21277=>1000,21279=>1000,21280=>1000,21281=>1000,21282=>1000,21283=>1000,21284=>1000,21286=>1000,21290=>1000,21293=>1000,21294=>1000,21295=>1000,21296=>1000,21297=>1000,21299=>1000,21300=>1000,21303=>1000,21304=>1000,21305=>1000,21306=>1000,21307=>1000,21308=>1000,21309=>1000,21310=>1000,21311=>1000,21312=>1000,21313=>1000,21315=>1000,21316=>1000,21317=>1000,21318=>1000,21319=>1000,21320=>1000,21321=>1000,21322=>1000,21324=>1000,21325=>1000,21326=>1000,21327=>1000,21329=>1000,21330=>1000,21331=>1000,21332=>1000,21333=>1000,21334=>1000,21335=>1000,21336=>1000,21338=>1000,21340=>1000,21342=>1000,21343=>1000,21344=>1000,21345=>1000,21346=>1000,21347=>1000,21348=>1000,21350=>1000,21351=>1000,21352=>1000,21353=>1000,21355=>1000,21356=>1000,21358=>1000,21359=>1000,21360=>1000,21361=>1000,21362=>1000,21363=>1000,21364=>1000,21365=>1000,21367=>1000,21368=>1000,21369=>1000,21370=>1000,21371=>1000,21372=>1000,21373=>1000,21375=>1000,21378=>1000,21380=>1000,21381=>1000,21382=>1000,21385=>1000,21386=>1000,21387=>1000,21388=>1000,21389=>1000,21390=>1000,21391=>1000,21394=>1000,21395=>1000,21396=>1000,21397=>1000,21398=>1000,21399=>1000,21400=>1000,21401=>1000,21402=>1000,21404=>1000,21405=>1000,21406=>1000,21407=>1000,21408=>1000,21410=>1000,21411=>1000,21412=>1000,21413=>1000,21414=>1000,21415=>1000,21416=>1000,21417=>1000,21420=>1000,21421=>1000,21422=>1000,21424=>1000,21426=>1000,21427=>1000,21428=>1000,21430=>1000,21433=>1000,21435=>1000,21439=>1000,21441=>1000,21442=>1000,21443=>1000,21448=>1000,21449=>1000,21450=>1000,21451=>1000,21452=>1000,21453=>1000,21454=>1000,21457=>1000,21460=>1000,21462=>1000,21463=>1000,21464=>1000,21465=>1000,21467=>1000,21469=>1000,21471=>1000,21472=>1000,21473=>1000,21474=>1000,21475=>1000,21476=>1000,21477=>1000,21478=>1000,21480=>1000,21481=>1000,21482=>1000,21483=>1000,21484=>1000,21485=>1000,21486=>1000,21487=>1000,21488=>1000,21489=>1000,21490=>1000,21491=>1000,21493=>1000,21494=>1000,21495=>1000,21496=>1000,21497=>1000,21498=>1000,21499=>1000,21500=>1000,21501=>1000,21505=>1000,21507=>1000,21508=>1000,21510=>1000,21511=>1000,21512=>1000,21513=>1000,21514=>1000,21515=>1000,21516=>1000,21517=>1000,21518=>1000,21519=>1000,21520=>1000,21521=>1000,21522=>1000,21523=>1000,21525=>1000,21526=>1000,21527=>1000,21528=>1000,21529=>1000,21531=>1000,21532=>1000,21533=>1000,21534=>1000,21535=>1000,21536=>1000,21537=>1000,21539=>1000,21540=>1000,21541=>1000,21542=>1000,21543=>1000,21544=>1000,21545=>1000,21546=>1000,21547=>1000,21548=>1000,21549=>1000,21550=>1000,21551=>1000,21552=>1000,21553=>1000,21554=>1000,21555=>1000,21556=>1000,21557=>1000,21558=>1000,21559=>1000,21560=>1000,21561=>1000,21563=>1000,21564=>1000,21565=>1000,21566=>1000,21568=>1000,21569=>1000,21570=>1000,21571=>1000,21573=>1000,21574=>1000,21575=>1000,21576=>1000,21577=>1000,21578=>1000,21579=>1000,21582=>1000,21583=>1000,21584=>1000,21585=>1000,21586=>1000,21587=>1000,21588=>1000,21589=>1000,21590=>1000,21591=>1000,21592=>1000,21593=>1000,21595=>1000,21596=>1000,21599=>1000,21600=>1000,21601=>1000,21602=>1000,21603=>1000,21604=>1000,21605=>1000,21606=>1000,21607=>1000,21608=>1000,21610=>1000,21611=>1000,21612=>1000,21615=>1000,21616=>1000,21617=>1000,21618=>1000,21619=>1000,21620=>1000,21621=>1000,21622=>1000,21623=>1000,21624=>1000,21626=>1000,21627=>1000,21628=>1000,21629=>1000,21630=>1000,21631=>1000,21632=>1000,21633=>1000,21634=>1000,21636=>1000,21638=>1000,21639=>1000,21640=>1000,21642=>1000,21643=>1000,21644=>1000,21645=>1000,21646=>1000,21647=>1000,21648=>1000,21649=>1000,21650=>1000,21652=>1000,21653=>1000,21654=>1000,21656=>1000,21657=>1000,21658=>1000,21659=>1000,21660=>1000,21661=>1000,21664=>1000,21665=>1000,21666=>1000,21667=>1000,21668=>1000,21669=>1000,21670=>1000,21671=>1000,21672=>1000,21673=>1000,21674=>1000,21675=>1000,21676=>1000,21677=>1000,21678=>1000,21679=>1000,21680=>1000,21681=>1000,21682=>1000,21683=>1000,21684=>1000,21686=>1000,21687=>1000,21688=>1000,21690=>1000,21691=>1000,21692=>1000,21693=>1000,21694=>1000,21695=>1000,21696=>1000,21697=>1000,21698=>1000,21699=>1000,21700=>1000,21701=>1000,21702=>1000,21703=>1000,21704=>1000,21705=>1000,21708=>1000,21709=>1000,21710=>1000,21711=>1000,21712=>1000,21713=>1000,21714=>1000,21715=>1000,21716=>1000,21717=>1000,21718=>1000,21719=>1000,21720=>1000,21721=>1000,21722=>1000,21724=>1000,21725=>1000,21726=>1000,21727=>1000,21728=>1000,21729=>1000,21730=>1000,21732=>1000,21733=>1000,21734=>1000,21735=>1000,21736=>1000,21737=>1000,21738=>1000,21739=>1000,21741=>1000,21742=>1000,21745=>1000,21746=>1000,21747=>1000,21751=>1000,21752=>1000,21754=>1000,21755=>1000,21756=>1000,21757=>1000,21759=>1000,21761=>1000,21763=>1000,21764=>1000,21765=>1000,21766=>1000,21767=>1000,21768=>1000,21769=>1000,21770=>1000,21771=>1000,21772=>1000,21774=>1000,21775=>1000,21776=>1000,21777=>1000,21778=>1000,21780=>1000,21782=>1000,21783=>1000,21786=>1000,21787=>1000,21788=>1000,21792=>1000,21794=>1000,21795=>1000,21796=>1000,21798=>1000,21799=>1000,21802=>1000,21804=>1000,21805=>1000,21806=>1000,21807=>1000,21808=>1000,21809=>1000,21810=>1000,21811=>1000,21812=>1000,21813=>1000,21814=>1000,21815=>1000,21816=>1000,21817=>1000,21819=>1000,21820=>1000,21822=>1000,21823=>1000,21824=>1000,21825=>1000,21827=>1000,21828=>1000,21829=>1000,21830=>1000,21832=>1000,21833=>1000,21834=>1000,21835=>1000,21836=>1000,21837=>1000,21838=>1000,21839=>1000,21840=>1000,21841=>1000,21842=>1000,21843=>1000,21845=>1000,21846=>1000,21847=>1000,21852=>1000,21853=>1000,21854=>1000,21855=>1000,21857=>1000,21858=>1000,21859=>1000,21860=>1000,21861=>1000,21862=>1000,21863=>1000,21866=>1000,21868=>1000,21869=>1000,21870=>1000,21877=>1000,21878=>1000,21879=>1000,21880=>1000,21883=>1000,21884=>1000,21885=>1000,21886=>1000,21887=>1000,21888=>1000,21889=>1000,21890=>1000,21891=>1000,21892=>1000,21894=>1000,21895=>1000,21896=>1000,21897=>1000,21898=>1000,21899=>1000,21900=>1000,21901=>1000,21902=>1000,21903=>1000,21905=>1000,21906=>1000,21907=>1000,21908=>1000,21909=>1000,21912=>1000,21913=>1000,21914=>1000,21916=>1000,21917=>1000,21918=>1000,21919=>1000,21921=>1000,21922=>1000,21923=>1000,21924=>1000,21925=>1000,21926=>1000,21927=>1000,21928=>1000,21929=>1000,21930=>1000,21931=>1000,21932=>1000,21933=>1000,21934=>1000,21936=>1000,21937=>1000,21938=>1000,21939=>1000,21941=>1000,21942=>1000,21943=>1000,21945=>1000,21947=>1000,21949=>1000,21950=>1000,21951=>1000,21952=>1000,21954=>1000,21955=>1000,21956=>1000,21957=>1000,21958=>1000,21959=>1000,21960=>1000,21961=>1000,21962=>1000,21963=>1000,21964=>1000,21965=>1000,21966=>1000,21967=>1000,21968=>1000,21969=>1000,21970=>1000,21971=>1000,21972=>1000,21973=>1000,21974=>1000,21977=>1000,21978=>1000,21979=>1000,21980=>1000,21981=>1000,21983=>1000,21985=>1000,21986=>1000,21987=>1000,21988=>1000,21989=>1000,21990=>1000,21991=>1000,21992=>1000,21993=>1000,21994=>1000,21995=>1000,21996=>1000,21999=>1000,22002=>1000,22003=>1000,22005=>1000,22006=>1000,22007=>1000,22009=>1000,22010=>1000,22012=>1000,22013=>1000,22014=>1000,22015=>1000,22016=>1000,22017=>1000,22018=>1000,22020=>1000,22022=>1000,22024=>1000,22025=>1000,22028=>1000,22029=>1000,22030=>1000,22031=>1000,22032=>1000,22034=>1000,22035=>1000,22036=>1000,22037=>1000,22038=>1000,22039=>1000,22040=>1000,22043=>1000,22044=>1000,22045=>1000,22046=>1000,22047=>1000,22051=>1000,22052=>1000,22055=>1000,22057=>1000,22058=>1000,22060=>1000,22061=>1000,22062=>1000,22063=>1000,22064=>1000,22065=>1000,22066=>1000,22067=>1000,22068=>1000,22069=>1000,22070=>1000,22072=>1000,22073=>1000,22074=>1000,22075=>1000,22077=>1000,22078=>1000,22079=>1000,22080=>1000,22081=>1000,22082=>1000,22085=>1000,22086=>1000,22088=>1000,22089=>1000,22090=>1000,22092=>1000,22093=>1000,22094=>1000,22096=>1000,22099=>1000,22100=>1000,22103=>1000,22104=>1000,22105=>1000,22106=>1000,22107=>1000,22108=>1000,22110=>1000,22112=>1000,22114=>1000,22115=>1000,22116=>1000,22117=>1000,22118=>1000,22120=>1000,22121=>1000,22122=>1000,22123=>1000,22124=>1000,22125=>1000,22126=>1000,22127=>1000,22128=>1000,22129=>1000,22130=>1000,22131=>1000,22132=>1000,22134=>1000,22135=>1000,22136=>1000,22137=>1000,22138=>1000,22139=>1000,22140=>1000,22142=>1000,22143=>1000,22144=>1000,22145=>1000,22146=>1000,22147=>1000,22148=>1000,22149=>1000,22150=>1000,22151=>1000,22154=>1000,22156=>1000,22157=>1000,22158=>1000,22159=>1000,22160=>1000,22163=>1000,22164=>1000,22165=>1000,22167=>1000,22168=>1000,22169=>1000,22170=>1000,22172=>1000,22173=>1000,22176=>1000,22178=>1000,22179=>1000,22181=>1000,22182=>1000,22183=>1000,22184=>1000,22186=>1000,22187=>1000,22188=>1000,22189=>1000,22190=>1000,22191=>1000,22194=>1000,22195=>1000,22196=>1000,22197=>1000,22198=>1000,22199=>1000,22204=>1000,22205=>1000,22206=>1000,22208=>1000,22209=>1000,22210=>1000,22211=>1000,22213=>1000,22214=>1000,22216=>1000,22217=>1000,22218=>1000,22219=>1000,22220=>1000,22221=>1000,22222=>1000,22225=>1000,22227=>1000,22228=>1000,22231=>1000,22232=>1000,22234=>1000,22235=>1000,22237=>1000,22238=>1000,22239=>1000,22240=>1000,22241=>1000,22242=>1000,22243=>1000,22244=>1000,22245=>1000,22247=>1000,22250=>1000,22251=>1000,22253=>1000,22254=>1000,22256=>1000,22257=>1000,22258=>1000,22259=>1000,22260=>1000,22261=>1000,22263=>1000,22265=>1000,22266=>1000,22269=>1000,22270=>1000,22271=>1000,22272=>1000,22273=>1000,22274=>1000,22275=>1000,22276=>1000,22278=>1000,22279=>1000,22280=>1000,22281=>1000,22282=>1000,22283=>1000,22284=>1000,22285=>1000,22287=>1000,22290=>1000,22291=>1000,22292=>1000,22294=>1000,22296=>1000,22298=>1000,22299=>1000,22300=>1000,22302=>1000,22303=>1000,22304=>1000,22306=>1000,22307=>1000,22310=>1000,22311=>1000,22312=>1000,22313=>1000,22314=>1000,22316=>1000,22317=>1000,22318=>1000,22319=>1000,22320=>1000,22323=>1000,22324=>1000,22327=>1000,22328=>1000,22329=>1000,22330=>1000,22331=>1000,22334=>1000,22336=>1000,22337=>1000,22338=>1000,22341=>1000,22343=>1000,22345=>1000,22346=>1000,22347=>1000,22348=>1000,22349=>1000,22350=>1000,22351=>1000,22352=>1000,22353=>1000,22354=>1000,22359=>1000,22361=>1000,22362=>1000,22363=>1000,22364=>1000,22365=>1000,22366=>1000,22367=>1000,22368=>1000,22369=>1000,22370=>1000,22372=>1000,22373=>1000,22374=>1000,22376=>1000,22377=>1000,22378=>1000,22379=>1000,22381=>1000,22382=>1000,22383=>1000,22384=>1000,22385=>1000,22386=>1000,22387=>1000,22388=>1000,22389=>1000,22390=>1000,22391=>1000,22395=>1000,22396=>1000,22397=>1000,22399=>1000,22400=>1000,22402=>1000,22403=>1000,22404=>1000,22405=>1000,22406=>1000,22408=>1000,22409=>1000,22411=>1000,22412=>1000,22415=>1000,22418=>1000,22419=>1000,22420=>1000,22421=>1000,22423=>1000,22424=>1000,22425=>1000,22426=>1000,22427=>1000,22429=>1000,22430=>1000,22431=>1000,22432=>1000,22433=>1000,22434=>1000,22435=>1000,22436=>1000,22437=>1000,22438=>1000,22439=>1000,22441=>1000,22442=>1000,22443=>1000,22444=>1000,22445=>1000,22446=>1000,22448=>1000,22450=>1000,22451=>1000,22452=>1000,22453=>1000,22454=>1000,22456=>1000,22457=>1000,22458=>1000,22460=>1000,22461=>1000,22463=>1000,22464=>1000,22465=>1000,22466=>1000,22467=>1000,22470=>1000,22471=>1000,22472=>1000,22475=>1000,22476=>1000,22478=>1000,22479=>1000,22480=>1000,22482=>1000,22483=>1000,22484=>1000,22485=>1000,22486=>1000,22488=>1000,22489=>1000,22490=>1000,22492=>1000,22493=>1000,22495=>1000,22496=>1000,22497=>1000,22498=>1000,22499=>1000,22500=>1000,22501=>1000,22503=>1000,22505=>1000,22508=>1000,22509=>1000,22510=>1000,22511=>1000,22512=>1000,22513=>1000,22514=>1000,22515=>1000,22516=>1000,22517=>1000,22518=>1000,22519=>1000,22520=>1000,22521=>1000,22522=>1000,22523=>1000,22524=>1000,22525=>1000,22528=>1000,22529=>1000,22530=>1000,22532=>1000,22533=>1000,22534=>1000,22535=>1000,22536=>1000,22537=>1000,22538=>1000,22539=>1000,22540=>1000,22541=>1000,22542=>1000,22544=>1000,22545=>1000,22548=>1000,22549=>1000,22553=>1000,22555=>1000,22556=>1000,22557=>1000,22558=>1000,22560=>1000,22561=>1000,22563=>1000,22564=>1000,22565=>1000,22567=>1000,22568=>1000,22569=>1000,22570=>1000,22572=>1000,22573=>1000,22574=>1000,22575=>1000,22576=>1000,22577=>1000,22578=>1000,22579=>1000,22580=>1000,22581=>1000,22582=>1000,22583=>1000,22584=>1000,22585=>1000,22586=>1000,22587=>1000,22589=>1000,22591=>1000,22592=>1000,22593=>1000,22596=>1000,22600=>1000,22601=>1000,22602=>1000,22603=>1000,22604=>1000,22605=>1000,22606=>1000,22607=>1000,22609=>1000,22610=>1000,22611=>1000,22612=>1000,22613=>1000,22615=>1000,22616=>1000,22617=>1000,22618=>1000,22619=>1000,22621=>1000,22622=>1000,22625=>1000,22626=>1000,22627=>1000,22628=>1000,22629=>1000,22632=>1000,22633=>1000,22635=>1000,22636=>1000,22637=>1000,22639=>1000,22640=>1000,22641=>1000,22642=>1000,22644=>1000,22645=>1000,22646=>1000,22649=>1000,22650=>1000,22651=>1000,22652=>1000,22653=>1000,22654=>1000,22655=>1000,22656=>1000,22657=>1000,22658=>1000,22659=>1000,22661=>1000,22662=>1000,22663=>1000,22664=>1000,22665=>1000,22666=>1000,22667=>1000,22670=>1000,22671=>1000,22672=>1000,22673=>1000,22674=>1000,22675=>1000,22676=>1000,22679=>1000,22680=>1000,22681=>1000,22682=>1000,22684=>1000,22685=>1000,22686=>1000,22687=>1000,22688=>1000,22689=>1000,22691=>1000,22693=>1000,22694=>1000,22696=>1000,22697=>1000,22699=>1000,22700=>1000,22702=>1000,22703=>1000,22705=>1000,22706=>1000,22707=>1000,22712=>1000,22713=>1000,22714=>1000,22715=>1000,22716=>1000,22717=>1000,22718=>1000,22719=>1000,22721=>1000,22722=>1000,22725=>1000,22726=>1000,22727=>1000,22728=>1000,22729=>1000,22730=>1000,22732=>1000,22734=>1000,22735=>1000,22737=>1000,22738=>1000,22739=>1000,22740=>1000,22741=>1000,22742=>1000,22743=>1000,22744=>1000,22745=>1000,22746=>1000,22747=>1000,22748=>1000,22749=>1000,22750=>1000,22751=>1000,22754=>1000,22755=>1000,22756=>1000,22757=>1000,22759=>1000,22760=>1000,22761=>1000,22763=>1000,22764=>1000,22766=>1000,22767=>1000,22768=>1000,22769=>1000,22770=>1000,22771=>1000,22772=>1000,22774=>1000,22775=>1000,22777=>1000,22778=>1000,22779=>1000,22780=>1000,22781=>1000,22782=>1000,22783=>1000,22786=>1000,22787=>1000,22788=>1000,22790=>1000,22791=>1000,22793=>1000,22794=>1000,22795=>1000,22796=>1000,22797=>1000,22798=>1000,22799=>1000,22800=>1000,22802=>1000,22804=>1000,22805=>1000,22806=>1000,22807=>1000,22808=>1000,22809=>1000,22810=>1000,22811=>1000,22812=>1000,22815=>1000,22816=>1000,22818=>1000,22820=>1000,22821=>1000,22823=>1000,22825=>1000,22826=>1000,22827=>1000,22828=>1000,22829=>1000,22830=>1000,22831=>1000,22833=>1000,22834=>1000,22836=>1000,22839=>1000,22840=>1000,22841=>1000,22842=>1000,22844=>1000,22846=>1000,22848=>1000,22849=>1000,22850=>1000,22852=>1000,22853=>1000,22855=>1000,22856=>1000,22857=>1000,22858=>1000,22859=>1000,22862=>1000,22863=>1000,22864=>1000,22865=>1000,22867=>1000,22868=>1000,22869=>1000,22870=>1000,22871=>1000,22872=>1000,22874=>1000,22875=>1000,22876=>1000,22877=>1000,22880=>1000,22881=>1000,22882=>1000,22883=>1000,22885=>1000,22887=>1000,22888=>1000,22889=>1000,22890=>1000,22891=>1000,22892=>1000,22893=>1000,22894=>1000,22896=>1000,22897=>1000,22898=>1000,22899=>1000,22900=>1000,22902=>1000,22903=>1000,22904=>1000,22905=>1000,22907=>1000,22908=>1000,22909=>1000,22910=>1000,22911=>1000,22912=>1000,22913=>1000,22914=>1000,22915=>1000,22916=>1000,22917=>1000,22918=>1000,22919=>1000,22920=>1000,22922=>1000,22925=>1000,22926=>1000,22927=>1000,22928=>1000,22930=>1000,22931=>1000,22934=>1000,22935=>1000,22936=>1000,22937=>1000,22939=>1000,22941=>1000,22942=>1000,22944=>1000,22945=>1000,22946=>1000,22947=>1000,22948=>1000,22949=>1000,22950=>1000,22951=>1000,22952=>1000,22953=>1000,22954=>1000,22955=>1000,22956=>1000,22958=>1000,22959=>1000,22961=>1000,22962=>1000,22963=>1000,22964=>1000,22965=>1000,22966=>1000,22969=>1000,22970=>1000,22971=>1000,22972=>1000,22973=>1000,22974=>1000,22976=>1000,22977=>1000,22979=>1000,22981=>1000,22982=>1000,22983=>1000,22984=>1000,22985=>1000,22986=>1000,22987=>1000,22988=>1000,22989=>1000,22990=>1000,22991=>1000,22992=>1000,22993=>1000,22994=>1000,22995=>1000,22996=>1000,22998=>1000,22999=>1000,23000=>1000,23001=>1000,23002=>1000,23003=>1000,23004=>1000,23005=>1000,23006=>1000,23008=>1000,23009=>1000,23011=>1000,23012=>1000,23013=>1000,23014=>1000,23016=>1000,23017=>1000,23018=>1000,23019=>1000,23020=>1000,23021=>1000,23022=>1000,23025=>1000,23026=>1000,23027=>1000,23028=>1000,23029=>1000,23030=>1000,23031=>1000,23032=>1000,23033=>1000,23034=>1000,23035=>1000,23036=>1000,23037=>1000,23038=>1000,23039=>1000,23040=>1000,23041=>1000,23043=>1000,23044=>1000,23045=>1000,23046=>1000,23047=>1000,23048=>1000,23049=>1000,23050=>1000,23052=>1000,23055=>1000,23057=>1000,23059=>1000,23061=>1000,23062=>1000,23063=>1000,23064=>1000,23065=>1000,23066=>1000,23067=>1000,23068=>1000,23070=>1000,23071=>1000,23072=>1000,23075=>1000,23077=>1000,23081=>1000,23085=>1000,23086=>1000,23087=>1000,23089=>1000,23090=>1000,23091=>1000,23092=>1000,23093=>1000,23094=>1000,23095=>1000,23096=>1000,23097=>1000,23100=>1000,23102=>1000,23104=>1000,23105=>1000,23106=>1000,23107=>1000,23108=>1000,23110=>1000,23111=>1000,23112=>1000,23113=>1000,23114=>1000,23116=>1000,23117=>1000,23120=>1000,23121=>1000,23122=>1000,23123=>1000,23125=>1000,23126=>1000,23127=>1000,23128=>1000,23130=>1000,23131=>1000,23132=>1000,23133=>1000,23134=>1000,23135=>1000,23136=>1000,23138=>1000,23140=>1000,23141=>1000,23142=>1000,23143=>1000,23145=>1000,23146=>1000,23148=>1000,23149=>1000,23152=>1000,23156=>1000,23157=>1000,23158=>1000,23159=>1000,23160=>1000,23162=>1000,23163=>1000,23164=>1000,23165=>1000,23167=>1000,23171=>1000,23172=>1000,23178=>1000,23179=>1000,23180=>1000,23182=>1000,23183=>1000,23184=>1000,23186=>1000,23187=>1000,23188=>1000,23189=>1000,23191=>1000,23194=>1000,23195=>1000,23196=>1000,23197=>1000,23198=>1000,23199=>1000,23202=>1000,23204=>1000,23205=>1000,23206=>1000,23207=>1000,23209=>1000,23210=>1000,23212=>1000,23214=>1000,23215=>1000,23216=>1000,23217=>1000,23218=>1000,23219=>1000,23220=>1000,23221=>1000,23222=>1000,23223=>1000,23224=>1000,23225=>1000,23226=>1000,23227=>1000,23228=>1000,23229=>1000,23230=>1000,23231=>1000,23232=>1000,23233=>1000,23234=>1000,23236=>1000,23238=>1000,23239=>1000,23240=>1000,23241=>1000,23242=>1000,23243=>1000,23244=>1000,23245=>1000,23248=>1000,23250=>1000,23252=>1000,23253=>1000,23254=>1000,23255=>1000,23256=>1000,23257=>1000,23258=>1000,23259=>1000,23260=>1000,23261=>1000,23262=>1000,23263=>1000,23264=>1000,23265=>1000,23266=>1000,23267=>1000,23269=>1000,23270=>1000,23272=>1000,23273=>1000,23274=>1000,23275=>1000,23276=>1000,23277=>1000,23278=>1000,23281=>1000,23283=>1000,23284=>1000,23285=>1000,23286=>1000,23287=>1000,23288=>1000,23289=>1000,23290=>1000,23291=>1000,23293=>1000,23295=>1000,23297=>1000,23298=>1000,23299=>1000,23301=>1000,23303=>1000,23304=>1000,23305=>1000,23307=>1000,23308=>1000,23311=>1000,23312=>1000,23315=>1000,23316=>1000,23318=>1000,23319=>1000,23321=>1000,23322=>1000,23323=>1000,23325=>1000,23326=>1000,23328=>1000,23329=>1000,23330=>1000,23331=>1000,23332=>1000,23333=>1000,23334=>1000,23335=>1000,23336=>1000,23338=>1000,23340=>1000,23341=>1000,23342=>1000,23343=>1000,23344=>1000,23346=>1000,23348=>1000,23350=>1000,23351=>1000,23352=>1000,23356=>1000,23357=>1000,23358=>1000,23359=>1000,23360=>1000,23363=>1000,23365=>1000,23367=>1000,23368=>1000,23371=>1000,23372=>1000,23373=>1000,23374=>1000,23376=>1000,23377=>1000,23379=>1000,23380=>1000,23381=>1000,23382=>1000,23383=>1000,23384=>1000,23385=>1000,23386=>1000,23387=>1000,23388=>1000,23389=>1000,23391=>1000,23394=>1000,23395=>1000,23396=>1000,23397=>1000,23398=>1000,23401=>1000,23402=>1000,23403=>1000,23404=>1000,23406=>1000,23408=>1000,23409=>1000,23410=>1000,23411=>1000,23413=>1000,23415=>1000,23416=>1000,23418=>1000,23419=>1000,23420=>1000,23421=>1000,23423=>1000,23424=>1000,23425=>1000,23427=>1000,23428=>1000,23429=>1000,23431=>1000,23432=>1000,23433=>1000,23435=>1000,23436=>1000,23437=>1000,23438=>1000,23439=>1000,23442=>1000,23443=>1000,23445=>1000,23446=>1000,23447=>1000,23448=>1000,23449=>1000,23450=>1000,23451=>1000,23452=>1000,23453=>1000,23454=>1000,23455=>1000,23456=>1000,23457=>1000,23458=>1000,23459=>1000,23460=>1000,23461=>1000,23462=>1000,23463=>1000,23464=>1000,23466=>1000,23467=>1000,23468=>1000,23469=>1000,23470=>1000,23472=>1000,23475=>1000,23476=>1000,23477=>1000,23478=>1000,23480=>1000,23481=>1000,23485=>1000,23486=>1000,23487=>1000,23488=>1000,23489=>1000,23490=>1000,23491=>1000,23492=>1000,23493=>1000,23494=>1000,23495=>1000,23497=>1000,23498=>1000,23499=>1000,23500=>1000,23501=>1000,23502=>1000,23504=>1000,23505=>1000,23506=>1000,23507=>1000,23508=>1000,23510=>1000,23511=>1000,23512=>1000,23513=>1000,23515=>1000,23517=>1000,23518=>1000,23519=>1000,23520=>1000,23521=>1000,23522=>1000,23523=>1000,23524=>1000,23525=>1000,23526=>1000,23527=>1000,23528=>1000,23529=>1000,23530=>1000,23531=>1000,23532=>1000,23534=>1000,23535=>1000,23536=>1000,23537=>1000,23538=>1000,23539=>1000,23541=>1000,23542=>1000,23544=>1000,23545=>1000,23546=>1000,23547=>1000,23548=>1000,23550=>1000,23551=>1000,23553=>1000,23554=>1000,23555=>1000,23556=>1000,23557=>1000,23558=>1000,23559=>1000,23560=>1000,23561=>1000,23562=>1000,23563=>1000,23564=>1000,23565=>1000,23566=>1000,23567=>1000,23568=>1000,23569=>1000,23570=>1000,23571=>1000,23572=>1000,23573=>1000,23574=>1000,23576=>1000,23577=>1000,23578=>1000,23580=>1000,23581=>1000,23582=>1000,23583=>1000,23584=>1000,23586=>1000,23588=>1000,23589=>1000,23591=>1000,23592=>1000,23594=>1000,23596=>1000,23597=>1000,23600=>1000,23601=>1000,23603=>1000,23604=>1000,23607=>1000,23608=>1000,23609=>1000,23610=>1000,23611=>1000,23612=>1000,23613=>1000,23614=>1000,23615=>1000,23616=>1000,23617=>1000,23618=>1000,23620=>1000,23621=>1000,23622=>1000,23623=>1000,23624=>1000,23625=>1000,23626=>1000,23627=>1000,23628=>1000,23629=>1000,23630=>1000,23631=>1000,23632=>1000,23633=>1000,23635=>1000,23636=>1000,23637=>1000,23638=>1000,23640=>1000,23641=>1000,23643=>1000,23644=>1000,23645=>1000,23646=>1000,23648=>1000,23649=>1000,23650=>1000,23651=>1000,23652=>1000,23653=>1000,23654=>1000,23655=>1000,23656=>1000,23657=>1000,23658=>1000,23660=>1000,23661=>1000,23662=>1000,23663=>1000,23665=>1000,23667=>1000,23668=>1000,23670=>1000,23673=>1000,23674=>1000,23675=>1000,23676=>1000,23678=>1000,23679=>1000,23681=>1000,23682=>1000,23686=>1000,23688=>1000,23689=>1000,23690=>1000,23691=>1000,23692=>1000,23693=>1000,23695=>1000,23696=>1000,23697=>1000,23698=>1000,23699=>1000,23700=>1000,23701=>1000,23702=>1000,23703=>1000,23704=>1000,23705=>1000,23706=>1000,23707=>1000,23708=>1000,23709=>1000,23711=>1000,23712=>1000,23713=>1000,23714=>1000,23715=>1000,23716=>1000,23717=>1000,23718=>1000,23719=>1000,23720=>1000,23721=>1000,23722=>1000,23723=>1000,23724=>1000,23725=>1000,23726=>1000,23727=>1000,23728=>1000,23729=>1000,23731=>1000,23733=>1000,23734=>1000,23735=>1000,23736=>1000,23738=>1000,23739=>1000,23740=>1000,23741=>1000,23742=>1000,23743=>1000,23744=>1000,23745=>1000,23748=>1000,23749=>1000,23750=>1000,23751=>1000,23752=>1000,23753=>1000,23754=>1000,23755=>1000,23756=>1000,23758=>1000,23759=>1000,23760=>1000,23762=>1000,23763=>1000,23764=>1000,23766=>1000,23767=>1000,23768=>1000,23769=>1000,23770=>1000,23771=>1000,23774=>1000,23775=>1000,23776=>1000,23777=>1000,23780=>1000,23781=>1000,23782=>1000,23784=>1000,23785=>1000,23786=>1000,23788=>1000,23789=>1000,23790=>1000,23791=>1000,23792=>1000,23793=>1000,23796=>1000,23797=>1000,23798=>1000,23799=>1000,23800=>1000,23801=>1000,23802=>1000,23803=>1000,23805=>1000,23807=>1000,23808=>1000,23809=>1000,23810=>1000,23811=>1000,23814=>1000,23815=>1000,23819=>1000,23820=>1000,23821=>1000,23822=>1000,23823=>1000,23825=>1000,23826=>1000,23828=>1000,23829=>1000,23830=>1000,23831=>1000,23832=>1000,23833=>1000,23834=>1000,23835=>1000,23837=>1000,23838=>1000,23839=>1000,23840=>1000,23842=>1000,23843=>1000,23844=>1000,23845=>1000,23846=>1000,23847=>1000,23848=>1000,23849=>1000,23853=>1000,23854=>1000,23856=>1000,23857=>1000,23858=>1000,23859=>1000,23860=>1000,23861=>1000,23862=>1000,23863=>1000,23864=>1000,23865=>1000,23866=>1000,23868=>1000,23869=>1000,23870=>1000,23871=>1000,23872=>1000,23873=>1000,23874=>1000,23875=>1000,23877=>1000,23879=>1000,23881=>1000,23882=>1000,23883=>1000,23884=>1000,23886=>1000,23888=>1000,23889=>1000,23890=>1000,23891=>1000,23893=>1000,23896=>1000,23897=>1000,23899=>1000,23900=>1000,23901=>1000,23902=>1000,23906=>1000,23907=>1000,23909=>1000,23911=>1000,23912=>1000,23913=>1000,23915=>1000,23916=>1000,23917=>1000,23919=>1000,23921=>1000,23922=>1000,23923=>1000,23924=>1000,23926=>1000,23927=>1000,23929=>1000,23930=>1000,23932=>1000,23933=>1000,23934=>1000,23935=>1000,23936=>1000,23937=>1000,23938=>1000,23940=>1000,23942=>1000,23943=>1000,23944=>1000,23945=>1000,23946=>1000,23947=>1000,23948=>1000,23949=>1000,23952=>1000,23954=>1000,23955=>1000,23956=>1000,23957=>1000,23959=>1000,23961=>1000,23962=>1000,23964=>1000,23965=>1000,23966=>1000,23967=>1000,23968=>1000,23969=>1000,23970=>1000,23975=>1000,23976=>1000,23977=>1000,23978=>1000,23980=>1000,23981=>1000,23982=>1000,23983=>1000,23984=>1000,23985=>1000,23986=>1000,23988=>1000,23989=>1000,23991=>1000,23992=>1000,23993=>1000,23994=>1000,23996=>1000,23997=>1000,24000=>1000,24002=>1000,24003=>1000,24005=>1000,24006=>1000,24007=>1000,24009=>1000,24011=>1000,24012=>1000,24013=>1000,24015=>1000,24016=>1000,24017=>1000,24018=>1000,24019=>1000,24020=>1000,24021=>1000,24022=>1000,24024=>1000,24027=>1000,24029=>1000,24030=>1000,24031=>1000,24032=>1000,24033=>1000,24034=>1000,24035=>1000,24037=>1000,24038=>1000,24039=>1000,24040=>1000,24041=>1000,24043=>1000,24046=>1000,24047=>1000,24048=>1000,24049=>1000,24050=>1000,24051=>1000,24052=>1000,24053=>1000,24055=>1000,24057=>1000,24059=>1000,24061=>1000,24062=>1000,24063=>1000,24065=>1000,24066=>1000,24067=>1000,24068=>1000,24069=>1000,24070=>1000,24072=>1000,24074=>1000,24075=>1000,24076=>1000,24078=>1000,24079=>1000,24080=>1000,24081=>1000,24084=>1000,24085=>1000,24086=>1000,24087=>1000,24088=>1000,24089=>1000,24090=>1000,24091=>1000,24092=>1000,24093=>1000,24095=>1000,24096=>1000,24097=>1000,24098=>1000,24099=>1000,24100=>1000,24101=>1000,24102=>1000,24103=>1000,24104=>1000,24105=>1000,24107=>1000,24109=>1000,24110=>1000,24111=>1000,24112=>1000,24113=>1000,24115=>1000,24116=>1000,24118=>1000,24119=>1000,24120=>1000,24123=>1000,24124=>1000,24125=>1000,24126=>1000,24127=>1000,24128=>1000,24129=>1000,24130=>1000,24131=>1000,24132=>1000,24133=>1000,24135=>1000,24138=>1000,24139=>1000,24140=>1000,24141=>1000,24142=>1000,24143=>1000,24147=>1000,24148=>1000,24149=>1000,24151=>1000,24152=>1000,24153=>1000,24155=>1000,24156=>1000,24157=>1000,24158=>1000,24159=>1000,24160=>1000,24161=>1000,24162=>1000,24163=>1000,24164=>1000,24166=>1000,24167=>1000,24168=>1000,24169=>1000,24170=>1000,24171=>1000,24172=>1000,24173=>1000,24174=>1000,24175=>1000,24176=>1000,24178=>1000,24179=>1000,24180=>1000,24181=>1000,24182=>1000,24183=>1000,24184=>1000,24185=>1000,24186=>1000,24187=>1000,24188=>1000,24189=>1000,24190=>1000,24191=>1000,24192=>1000,24193=>1000,24194=>1000,24195=>1000,24196=>1000,24198=>1000,24199=>1000,24200=>1000,24201=>1000,24202=>1000,24203=>1000,24204=>1000,24205=>1000,24207=>1000,24208=>1000,24209=>1000,24211=>1000,24212=>1000,24213=>1000,24214=>1000,24215=>1000,24217=>1000,24218=>1000,24219=>1000,24220=>1000,24222=>1000,24223=>1000,24224=>1000,24226=>1000,24227=>1000,24228=>1000,24229=>1000,24230=>1000,24231=>1000,24232=>1000,24234=>1000,24235=>1000,24236=>1000,24237=>1000,24238=>1000,24240=>1000,24241=>1000,24242=>1000,24243=>1000,24244=>1000,24245=>1000,24246=>1000,24247=>1000,24248=>1000,24249=>1000,24254=>1000,24257=>1000,24258=>1000,24259=>1000,24260=>1000,24261=>1000,24262=>1000,24263=>1000,24264=>1000,24265=>1000,24266=>1000,24267=>1000,24268=>1000,24270=>1000,24271=>1000,24272=>1000,24273=>1000,24274=>1000,24275=>1000,24276=>1000,24277=>1000,24278=>1000,24279=>1000,24280=>1000,24281=>1000,24282=>1000,24283=>1000,24284=>1000,24285=>1000,24286=>1000,24287=>1000,24288=>1000,24289=>1000,24290=>1000,24291=>1000,24293=>1000,24294=>1000,24295=>1000,24296=>1000,24297=>1000,24298=>1000,24300=>1000,24302=>1000,24303=>1000,24304=>1000,24305=>1000,24306=>1000,24307=>1000,24308=>1000,24310=>1000,24311=>1000,24312=>1000,24314=>1000,24315=>1000,24316=>1000,24318=>1000,24319=>1000,24320=>1000,24321=>1000,24322=>1000,24323=>1000,24324=>1000,24325=>1000,24327=>1000,24328=>1000,24329=>1000,24330=>1000,24331=>1000,24332=>1000,24333=>1000,24335=>1000,24336=>1000,24337=>1000,24338=>1000,24339=>1000,24340=>1000,24341=>1000,24342=>1000,24343=>1000,24344=>1000,24346=>1000,24347=>1000,24349=>1000,24351=>1000,24352=>1000,24353=>1000,24354=>1000,24355=>1000,24356=>1000,24357=>1000,24358=>1000,24359=>1000,24360=>1000,24361=>1000,24362=>1000,24365=>1000,24366=>1000,24367=>1000,24368=>1000,24369=>1000,24371=>1000,24372=>1000,24373=>1000,24374=>1000,24375=>1000,24376=>1000,24377=>1000,24378=>1000,24380=>1000,24382=>1000,24384=>1000,24385=>1000,24387=>1000,24388=>1000,24389=>1000,24390=>1000,24392=>1000,24393=>1000,24394=>1000,24395=>1000,24396=>1000,24398=>1000,24399=>1000,24400=>1000,24401=>1000,24402=>1000,24403=>1000,24404=>1000,24405=>1000,24406=>1000,24407=>1000,24408=>1000,24409=>1000,24411=>1000,24412=>1000,24413=>1000,24417=>1000,24418=>1000,24420=>1000,24421=>1000,24422=>1000,24423=>1000,24425=>1000,24426=>1000,24427=>1000,24428=>1000,24429=>1000,24431=>1000,24432=>1000,24433=>1000,24435=>1000,24436=>1000,24438=>1000,24439=>1000,24440=>1000,24441=>1000,24443=>1000,24444=>1000,24445=>1000,24446=>1000,24447=>1000,24448=>1000,24449=>1000,24450=>1000,24451=>1000,24452=>1000,24453=>1000,24454=>1000,24455=>1000,24456=>1000,24457=>1000,24458=>1000,24459=>1000,24460=>1000,24464=>1000,24465=>1000,24466=>1000,24467=>1000,24469=>1000,24470=>1000,24471=>1000,24472=>1000,24473=>1000,24475=>1000,24476=>1000,24478=>1000,24479=>1000,24480=>1000,24481=>1000,24485=>1000,24486=>1000,24488=>1000,24489=>1000,24490=>1000,24491=>1000,24492=>1000,24493=>1000,24494=>1000,24495=>1000,24498=>1000,24499=>1000,24500=>1000,24501=>1000,24502=>1000,24503=>1000,24505=>1000,24507=>1000,24508=>1000,24509=>1000,24510=>1000,24511=>1000,24512=>1000,24513=>1000,24515=>1000,24516=>1000,24517=>1000,24518=>1000,24521=>1000,24524=>1000,24525=>1000,24527=>1000,24528=>1000,24529=>1000,24530=>1000,24532=>1000,24533=>1000,24534=>1000,24535=>1000,24536=>1000,24537=>1000,24540=>1000,24541=>1000,24542=>1000,24544=>1000,24545=>1000,24547=>1000,24548=>1000,24549=>1000,24551=>1000,24552=>1000,24554=>1000,24555=>1000,24557=>1000,24558=>1000,24559=>1000,24560=>1000,24561=>1000,24563=>1000,24564=>1000,24565=>1000,24567=>1000,24568=>1000,24570=>1000,24571=>1000,24573=>1000,24574=>1000,24575=>1000,24576=>1000,24577=>1000,24578=>1000,24579=>1000,24580=>1000,24581=>1000,24582=>1000,24585=>1000,24586=>1000,24587=>1000,24588=>1000,24589=>1000,24590=>1000,24591=>1000,24592=>1000,24593=>1000,24594=>1000,24595=>1000,24596=>1000,24597=>1000,24598=>1000,24599=>1000,24601=>1000,24602=>1000,24603=>1000,24604=>1000,24605=>1000,24606=>1000,24608=>1000,24609=>1000,24610=>1000,24612=>1000,24613=>1000,24614=>1000,24615=>1000,24616=>1000,24617=>1000,24618=>1000,24619=>1000,24620=>1000,24621=>1000,24622=>1000,24623=>1000,24625=>1000,24626=>1000,24627=>1000,24628=>1000,24629=>1000,24631=>1000,24633=>1000,24634=>1000,24635=>1000,24636=>1000,24639=>1000,24640=>1000,24641=>1000,24642=>1000,24643=>1000,24644=>1000,24645=>1000,24646=>1000,24647=>1000,24649=>1000,24650=>1000,24651=>1000,24652=>1000,24653=>1000,24656=>1000,24658=>1000,24659=>1000,24660=>1000,24661=>1000,24664=>1000,24665=>1000,24666=>1000,24667=>1000,24669=>1000,24670=>1000,24671=>1000,24672=>1000,24674=>1000,24675=>1000,24676=>1000,24677=>1000,24678=>1000,24679=>1000,24680=>1000,24681=>1000,24682=>1000,24683=>1000,24684=>1000,24685=>1000,24686=>1000,24687=>1000,24688=>1000,24690=>1000,24691=>1000,24693=>1000,24694=>1000,24695=>1000,24696=>1000,24697=>1000,24698=>1000,24699=>1000,24700=>1000,24701=>1000,24703=>1000,24704=>1000,24705=>1000,24707=>1000,24708=>1000,24709=>1000,24710=>1000,24711=>1000,24712=>1000,24713=>1000,24714=>1000,24715=>1000,24716=>1000,24717=>1000,24718=>1000,24720=>1000,24722=>1000,24724=>1000,24725=>1000,24726=>1000,24727=>1000,24730=>1000,24731=>1000,24732=>1000,24733=>1000,24735=>1000,24736=>1000,24738=>1000,24739=>1000,24740=>1000,24742=>1000,24743=>1000,24744=>1000,24745=>1000,24746=>1000,24747=>1000,24748=>1000,24749=>1000,24751=>1000,24752=>1000,24753=>1000,24754=>1000,24755=>1000,24756=>1000,24757=>1000,24758=>1000,24759=>1000,24760=>1000,24761=>1000,24762=>1000,24763=>1000,24764=>1000,24765=>1000,24766=>1000,24767=>1000,24768=>1000,24769=>1000,24771=>1000,24772=>1000,24773=>1000,24774=>1000,24775=>1000,24776=>1000,24777=>1000,24778=>1000,24779=>1000,24780=>1000,24781=>1000,24782=>1000,24783=>1000,24785=>1000,24787=>1000,24788=>1000,24789=>1000,24792=>1000,24793=>1000,24794=>1000,24795=>1000,24796=>1000,24797=>1000,24798=>1000,24799=>1000,24800=>1000,24801=>1000,24802=>1000,24803=>1000,24804=>1000,24806=>1000,24807=>1000,24808=>1000,24809=>1000,24811=>1000,24812=>1000,24813=>1000,24814=>1000,24815=>1000,24816=>1000,24817=>1000,24818=>1000,24819=>1000,24820=>1000,24821=>1000,24822=>1000,24823=>1000,24824=>1000,24825=>1000,24826=>1000,24827=>1000,24828=>1000,24830=>1000,24831=>1000,24832=>1000,24833=>1000,24835=>1000,24836=>1000,24837=>1000,24838=>1000,24840=>1000,24841=>1000,24842=>1000,24843=>1000,24845=>1000,24846=>1000,24847=>1000,24848=>1000,24849=>1000,24850=>1000,24851=>1000,24852=>1000,24853=>1000,24854=>1000,24856=>1000,24858=>1000,24859=>1000,24860=>1000,24861=>1000,24863=>1000,24864=>1000,24865=>1000,24867=>1000,24868=>1000,24870=>1000,24871=>1000,24872=>1000,24873=>1000,24875=>1000,24876=>1000,24878=>1000,24879=>1000,24880=>1000,24882=>1000,24884=>1000,24886=>1000,24887=>1000,24891=>1000,24892=>1000,24893=>1000,24894=>1000,24895=>1000,24896=>1000,24897=>1000,24898=>1000,24900=>1000,24901=>1000,24902=>1000,24903=>1000,24904=>1000,24905=>1000,24906=>1000,24907=>1000,24908=>1000,24909=>1000,24910=>1000,24911=>1000,24913=>1000,24914=>1000,24915=>1000,24916=>1000,24917=>1000,24918=>1000,24920=>1000,24921=>1000,24922=>1000,24923=>1000,24925=>1000,24926=>1000,24927=>1000,24929=>1000,24930=>1000,24931=>1000,24932=>1000,24933=>1000,24934=>1000,24935=>1000,24936=>1000,24938=>1000,24939=>1000,24940=>1000,24942=>1000,24943=>1000,24944=>1000,24945=>1000,24946=>1000,24947=>1000,24948=>1000,24949=>1000,24950=>1000,24951=>1000,24953=>1000,24954=>1000,24956=>1000,24957=>1000,24958=>1000,24960=>1000,24961=>1000,24962=>1000,24963=>1000,24967=>1000,24969=>1000,24970=>1000,24971=>1000,24972=>1000,24973=>1000,24974=>1000,24976=>1000,24977=>1000,24978=>1000,24979=>1000,24980=>1000,24982=>1000,24984=>1000,24985=>1000,24986=>1000,24987=>1000,24989=>1000,24991=>1000,24993=>1000,24994=>1000,24996=>1000,24999=>1000,25000=>1000,25001=>1000,25002=>1000,25003=>1000,25004=>1000,25005=>1000,25006=>1000,25007=>1000,25008=>1000,25009=>1000,25010=>1000,25011=>1000,25012=>1000,25013=>1000,25014=>1000,25015=>1000,25016=>1000,25018=>1000,25020=>1000,25022=>1000,25023=>1000,25025=>1000,25026=>1000,25027=>1000,25029=>1000,25030=>1000,25031=>1000,25032=>1000,25033=>1000,25034=>1000,25035=>1000,25036=>1000,25037=>1000,25040=>1000,25041=>1000,25042=>1000,25044=>1000,25046=>1000,25048=>1000,25054=>1000,25055=>1000,25056=>1000,25059=>1000,25060=>1000,25061=>1000,25062=>1000,25063=>1000,25064=>1000,25065=>1000,25066=>1000,25067=>1000,25069=>1000,25070=>1000,25072=>1000,25073=>1000,25074=>1000,25076=>1000,25077=>1000,25078=>1000,25079=>1000,25080=>1000,25081=>1000,25082=>1000,25083=>1000,25084=>1000,25085=>1000,25086=>1000,25087=>1000,25088=>1000,25089=>1000,25091=>1000,25092=>1000,25094=>1000,25095=>1000,25096=>1000,25097=>1000,25098=>1000,25099=>1000,25100=>1000,25101=>1000,25102=>1000,25103=>1000,25104=>1000,25105=>1000,25106=>1000,25107=>1000,25108=>1000,25109=>1000,25110=>1000,25111=>1000,25112=>1000,25113=>1000,25114=>1000,25115=>1000,25117=>1000,25118=>1000,25119=>1000,25120=>1000,25121=>1000,25122=>1000,25123=>1000,25124=>1000,25125=>1000,25126=>1000,25127=>1000,25129=>1000,25130=>1000,25131=>1000,25132=>1000,25133=>1000,25134=>1000,25135=>1000,25136=>1000,25137=>1000,25138=>1000,25139=>1000,25140=>1000,25142=>1000,25143=>1000,25144=>1000,25146=>1000,25147=>1000,25149=>1000,25150=>1000,25151=>1000,25152=>1000,25153=>1000,25154=>1000,25155=>1000,25158=>1000,25159=>1000,25160=>1000,25161=>1000,25162=>1000,25163=>1000,25164=>1000,25165=>1000,25166=>1000,25168=>1000,25169=>1000,25170=>1000,25171=>1000,25172=>1000,25173=>1000,25176=>1000,25177=>1000,25178=>1000,25179=>1000,25180=>1000,25182=>1000,25184=>1000,25185=>1000,25186=>1000,25187=>1000,25188=>1000,25189=>1000,25190=>1000,25191=>1000,25192=>1000,25193=>1000,25194=>1000,25195=>1000,25196=>1000,25197=>1000,25198=>1000,25199=>1000,25200=>1000,25201=>1000,25202=>1000,25203=>1000,25204=>1000,25206=>1000,25207=>1000,25209=>1000,25210=>1000,25211=>1000,25212=>1000,25213=>1000,25214=>1000,25215=>1000,25216=>1000,25217=>1000,25218=>1000,25219=>1000,25220=>1000,25222=>1000,25223=>1000,25224=>1000,25225=>1000,25226=>1000,25228=>1000,25230=>1000,25231=>1000,25233=>1000,25234=>1000,25235=>1000,25236=>1000,25237=>1000,25238=>1000,25239=>1000,25240=>1000,25242=>1000,25243=>1000,25244=>1000,25246=>1000,25247=>1000,25248=>1000,25249=>1000,25250=>1000,25252=>1000,25253=>1000,25254=>1000,25256=>1000,25257=>1000,25258=>1000,25259=>1000,25260=>1000,25261=>1000,25262=>1000,25263=>1000,25264=>1000,25265=>1000,25267=>1000,25268=>1000,25269=>1000,25270=>1000,25272=>1000,25273=>1000,25275=>1000,25276=>1000,25277=>1000,25278=>1000,25279=>1000,25282=>1000,25284=>1000,25285=>1000,25286=>1000,25287=>1000,25288=>1000,25289=>1000,25290=>1000,25291=>1000,25292=>1000,25293=>1000,25294=>1000,25295=>1000,25296=>1000,25297=>1000,25298=>1000,25299=>1000,25300=>1000,25302=>1000,25303=>1000,25304=>1000,25305=>1000,25306=>1000,25307=>1000,25308=>1000,25309=>1000,25311=>1000,25312=>1000,25313=>1000,25314=>1000,25315=>1000,25317=>1000,25318=>1000,25319=>1000,25320=>1000,25321=>1000,25323=>1000,25324=>1000,25325=>1000,25326=>1000,25327=>1000,25328=>1000,25329=>1000,25330=>1000,25331=>1000,25332=>1000,25333=>1000,25334=>1000,25335=>1000,25336=>1000,25337=>1000,25338=>1000,25339=>1000,25340=>1000,25341=>1000,25342=>1000,25343=>1000,25344=>1000,25345=>1000,25346=>1000,25347=>1000,25351=>1000,25352=>1000,25353=>1000,25355=>1000,25356=>1000,25357=>1000,25358=>1000,25359=>1000,25360=>1000,25361=>1000,25363=>1000,25364=>1000,25365=>1000,25366=>1000,25369=>1000,25370=>1000,25371=>1000,25373=>1000,25374=>1000,25375=>1000,25376=>1000,25377=>1000,25378=>1000,25379=>1000,25380=>1000,25381=>1000,25383=>1000,25384=>1000,25385=>1000,25386=>1000,25387=>1000,25388=>1000,25389=>1000,25391=>1000,25394=>1000,25395=>1000,25396=>1000,25398=>1000,25400=>1000,25401=>1000,25402=>1000,25403=>1000,25404=>1000,25405=>1000,25406=>1000,25407=>1000,25408=>1000,25409=>1000,25410=>1000,25411=>1000,25412=>1000,25413=>1000,25414=>1000,25415=>1000,25416=>1000,25417=>1000,25418=>1000,25419=>1000,25420=>1000,25421=>1000,25422=>1000,25423=>1000,25424=>1000,25425=>1000,25428=>1000,25429=>1000,25430=>1000,25431=>1000,25432=>1000,25433=>1000,25434=>1000,25436=>1000,25438=>1000,25439=>1000,25441=>1000,25442=>1000,25443=>1000,25445=>1000,25447=>1000,25448=>1000,25449=>1000,25451=>1000,25453=>1000,25454=>1000,25455=>1000,25456=>1000,25457=>1000,25458=>1000,25461=>1000,25462=>1000,25463=>1000,25464=>1000,25466=>1000,25467=>1000,25468=>1000,25469=>1000,25471=>1000,25472=>1000,25473=>1000,25474=>1000,25475=>1000,25476=>1000,25477=>1000,25479=>1000,25480=>1000,25481=>1000,25482=>1000,25484=>1000,25485=>1000,25486=>1000,25487=>1000,25488=>1000,25489=>1000,25490=>1000,25492=>1000,25494=>1000,25495=>1000,25496=>1000,25497=>1000,25499=>1000,25500=>1000,25501=>1000,25502=>1000,25503=>1000,25504=>1000,25505=>1000,25506=>1000,25507=>1000,25508=>1000,25509=>1000,25511=>1000,25512=>1000,25513=>1000,25514=>1000,25515=>1000,25516=>1000,25517=>1000,25518=>1000,25519=>1000,25520=>1000,25521=>1000,25522=>1000,25523=>1000,25524=>1000,25525=>1000,25527=>1000,25528=>1000,25530=>1000,25531=>1000,25532=>1000,25533=>1000,25534=>1000,25536=>1000,25538=>1000,25539=>1000,25540=>1000,25541=>1000,25542=>1000,25543=>1000,25544=>1000,25545=>1000,25546=>1000,25547=>1000,25548=>1000,25549=>1000,25550=>1000,25551=>1000,25552=>1000,25554=>1000,25555=>1000,25557=>1000,25558=>1000,25559=>1000,25560=>1000,25561=>1000,25562=>1000,25563=>1000,25564=>1000,25565=>1000,25566=>1000,25567=>1000,25568=>1000,25569=>1000,25571=>1000,25572=>1000,25573=>1000,25575=>1000,25576=>1000,25577=>1000,25578=>1000,25579=>1000,25581=>1000,25582=>1000,25583=>1000,25584=>1000,25585=>1000,25586=>1000,25587=>1000,25588=>1000,25589=>1000,25590=>1000,25591=>1000,25592=>1000,25593=>1000,25594=>1000,25597=>1000,25599=>1000,25600=>1000,25601=>1000,25602=>1000,25605=>1000,25606=>1000,25609=>1000,25610=>1000,25611=>1000,25612=>1000,25613=>1000,25614=>1000,25615=>1000,25616=>1000,25618=>1000,25619=>1000,25620=>1000,25621=>1000,25622=>1000,25623=>1000,25624=>1000,25626=>1000,25627=>1000,25628=>1000,25630=>1000,25631=>1000,25632=>1000,25633=>1000,25634=>1000,25635=>1000,25636=>1000,25637=>1000,25638=>1000,25639=>1000,25640=>1000,25642=>1000,25643=>1000,25644=>1000,25645=>1000,25646=>1000,25647=>1000,25648=>1000,25651=>1000,25652=>1000,25653=>1000,25654=>1000,25655=>1000,25657=>1000,25658=>1000,25661=>1000,25662=>1000,25663=>1000,25664=>1000,25665=>1000,25666=>1000,25667=>1000,25668=>1000,25669=>1000,25670=>1000,25671=>1000,25672=>1000,25674=>1000,25675=>1000,25677=>1000,25678=>1000,25680=>1000,25681=>1000,25682=>1000,25683=>1000,25684=>1000,25688=>1000,25689=>1000,25691=>1000,25692=>1000,25693=>1000,25694=>1000,25695=>1000,25696=>1000,25697=>1000,25701=>1000,25702=>1000,25703=>1000,25704=>1000,25705=>1000,25707=>1000,25708=>1000,25709=>1000,25710=>1000,25711=>1000,25712=>1000,25714=>1000,25715=>1000,25716=>1000,25717=>1000,25718=>1000,25719=>1000,25720=>1000,25721=>1000,25722=>1000,25723=>1000,25725=>1000,25727=>1000,25730=>1000,25731=>1000,25732=>1000,25733=>1000,25735=>1000,25736=>1000,25737=>1000,25738=>1000,25739=>1000,25740=>1000,25743=>1000,25744=>1000,25745=>1000,25746=>1000,25747=>1000,25749=>1000,25750=>1000,25751=>1000,25752=>1000,25753=>1000,25754=>1000,25756=>1000,25757=>1000,25758=>1000,25759=>1000,25760=>1000,25762=>1000,25763=>1000,25764=>1000,25765=>1000,25766=>1000,25769=>1000,25771=>1000,25772=>1000,25773=>1000,25774=>1000,25776=>1000,25777=>1000,25778=>1000,25779=>1000,25781=>1000,25783=>1000,25784=>1000,25785=>1000,25786=>1000,25787=>1000,25788=>1000,25789=>1000,25790=>1000,25791=>1000,25792=>1000,25793=>1000,25794=>1000,25795=>1000,25796=>1000,25797=>1000,25799=>1000,25801=>1000,25802=>1000,25803=>1000,25805=>1000,25806=>1000,25807=>1000,25808=>1000,25810=>1000,25812=>1000,25814=>1000,25815=>1000,25816=>1000,25817=>1000,25818=>1000,25819=>1000,25822=>1000,25824=>1000,25825=>1000,25826=>1000,25827=>1000,25828=>1000,25829=>1000,25830=>1000,25831=>1000,25832=>1000,25833=>1000,25835=>1000,25836=>1000,25837=>1000,25839=>1000,25840=>1000,25841=>1000,25842=>1000,25843=>1000,25844=>1000,25846=>1000,25847=>1000,25848=>1000,25850=>1000,25851=>1000,25852=>1000,25853=>1000,25854=>1000,25855=>1000,25856=>1000,25857=>1000,25859=>1000,25860=>1000,25861=>1000,25862=>1000,25863=>1000,25865=>1000,25868=>1000,25869=>1000,25870=>1000,25871=>1000,25872=>1000,25874=>1000,25875=>1000,25876=>1000,25877=>1000,25878=>1000,25879=>1000,25880=>1000,25881=>1000,25883=>1000,25884=>1000,25885=>1000,25888=>1000,25889=>1000,25890=>1000,25891=>1000,25892=>1000,25893=>1000,25894=>1000,25897=>1000,25898=>1000,25899=>1000,25900=>1000,25901=>1000,25902=>1000,25903=>1000,25906=>1000,25907=>1000,25908=>1000,25909=>1000,25910=>1000,25911=>1000,25912=>1000,25913=>1000,25915=>1000,25917=>1000,25918=>1000,25919=>1000,25921=>1000,25923=>1000,25925=>1000,25926=>1000,25928=>1000,25929=>1000,25930=>1000,25932=>1000,25933=>1000,25934=>1000,25935=>1000,25937=>1000,25939=>1000,25940=>1000,25941=>1000,25942=>1000,25943=>1000,25944=>1000,25945=>1000,25947=>1000,25948=>1000,25949=>1000,25950=>1000,25954=>1000,25955=>1000,25956=>1000,25957=>1000,25958=>1000,25959=>1000,25960=>1000,25962=>1000,25963=>1000,25964=>1000,25965=>1000,25967=>1000,25968=>1000,25970=>1000,25971=>1000,25972=>1000,25973=>1000,25974=>1000,25975=>1000,25976=>1000,25977=>1000,25978=>1000,25979=>1000,25980=>1000,25982=>1000,25983=>1000,25984=>1000,25985=>1000,25986=>1000,25987=>1000,25988=>1000,25989=>1000,25991=>1000,25992=>1000,25993=>1000,25995=>1000,25996=>1000,25998=>1000,26000=>1000,26001=>1000,26002=>1000,26003=>1000,26004=>1000,26005=>1000,26006=>1000,26007=>1000,26009=>1000,26011=>1000,26012=>1000,26013=>1000,26014=>1000,26015=>1000,26016=>1000,26017=>1000,26018=>1000,26020=>1000,26021=>1000,26023=>1000,26024=>1000,26025=>1000,26026=>1000,26027=>1000,26028=>1000,26029=>1000,26030=>1000,26031=>1000,26032=>1000,26034=>1000,26035=>1000,26038=>1000,26039=>1000,26040=>1000,26041=>1000,26043=>1000,26044=>1000,26045=>1000,26047=>1000,26049=>1000,26050=>1000,26051=>1000,26052=>1000,26053=>1000,26054=>1000,26059=>1000,26060=>1000,26061=>1000,26062=>1000,26063=>1000,26064=>1000,26066=>1000,26067=>1000,26070=>1000,26071=>1000,26073=>1000,26074=>1000,26075=>1000,26077=>1000,26078=>1000,26079=>1000,26080=>1000,26081=>1000,26082=>1000,26083=>1000,26085=>1000,26086=>1000,26087=>1000,26088=>1000,26089=>1000,26092=>1000,26093=>1000,26094=>1000,26095=>1000,26096=>1000,26097=>1000,26098=>1000,26099=>1000,26100=>1000,26101=>1000,26102=>1000,26103=>1000,26106=>1000,26107=>1000,26108=>1000,26109=>1000,26111=>1000,26112=>1000,26114=>1000,26115=>1000,26116=>1000,26117=>1000,26118=>1000,26119=>1000,26120=>1000,26121=>1000,26122=>1000,26123=>1000,26124=>1000,26125=>1000,26126=>1000,26127=>1000,26128=>1000,26129=>1000,26130=>1000,26131=>1000,26132=>1000,26133=>1000,26137=>1000,26140=>1000,26141=>1000,26142=>1000,26143=>1000,26144=>1000,26145=>1000,26146=>1000,26148=>1000,26149=>1000,26150=>1000,26151=>1000,26152=>1000,26155=>1000,26157=>1000,26158=>1000,26159=>1000,26160=>1000,26161=>1000,26162=>1000,26163=>1000,26164=>1000,26165=>1000,26166=>1000,26169=>1000,26170=>1000,26171=>1000,26172=>1000,26174=>1000,26175=>1000,26177=>1000,26178=>1000,26179=>1000,26180=>1000,26181=>1000,26183=>1000,26185=>1000,26186=>1000,26187=>1000,26188=>1000,26191=>1000,26193=>1000,26194=>1000,26195=>1000,26196=>1000,26197=>1000,26198=>1000,26199=>1000,26201=>1000,26202=>1000,26203=>1000,26204=>1000,26205=>1000,26206=>1000,26207=>1000,26209=>1000,26210=>1000,26212=>1000,26213=>1000,26214=>1000,26215=>1000,26216=>1000,26217=>1000,26218=>1000,26219=>1000,26220=>1000,26222=>1000,26223=>1000,26224=>1000,26225=>1000,26226=>1000,26227=>1000,26228=>1000,26230=>1000,26231=>1000,26232=>1000,26233=>1000,26234=>1000,26235=>1000,26236=>1000,26238=>1000,26240=>1000,26241=>1000,26242=>1000,26243=>1000,26244=>1000,26246=>1000,26247=>1000,26248=>1000,26249=>1000,26250=>1000,26251=>1000,26252=>1000,26253=>1000,26254=>1000,26256=>1000,26257=>1000,26260=>1000,26261=>1000,26262=>1000,26263=>1000,26264=>1000,26265=>1000,26269=>1000,26271=>1000,26272=>1000,26273=>1000,26274=>1000,26278=>1000,26279=>1000,26280=>1000,26281=>1000,26282=>1000,26283=>1000,26286=>1000,26287=>1000,26288=>1000,26289=>1000,26290=>1000,26291=>1000,26292=>1000,26293=>1000,26295=>1000,26296=>1000,26297=>1000,26298=>1000,26299=>1000,26300=>1000,26301=>1000,26302=>1000,26303=>1000,26304=>1000,26305=>1000,26308=>1000,26310=>1000,26311=>1000,26312=>1000,26313=>1000,26314=>1000,26315=>1000,26316=>1000,26319=>1000,26322=>1000,26326=>1000,26328=>1000,26329=>1000,26330=>1000,26331=>1000,26332=>1000,26333=>1000,26334=>1000,26336=>1000,26339=>1000,26340=>1000,26342=>1000,26344=>1000,26345=>1000,26347=>1000,26348=>1000,26349=>1000,26350=>1000,26352=>1000,26354=>1000,26355=>1000,26356=>1000,26357=>1000,26358=>1000,26359=>1000,26360=>1000,26361=>1000,26362=>1000,26363=>1000,26364=>1000,26365=>1000,26366=>1000,26367=>1000,26368=>1000,26369=>1000,26371=>1000,26372=>1000,26373=>1000,26376=>1000,26377=>1000,26378=>1000,26379=>1000,26381=>1000,26382=>1000,26383=>1000,26384=>1000,26386=>1000,26387=>1000,26388=>1000,26389=>1000,26390=>1000,26391=>1000,26392=>1000,26395=>1000,26397=>1000,26398=>1000,26399=>1000,26400=>1000,26401=>1000,26402=>1000,26403=>1000,26406=>1000,26407=>1000,26408=>1000,26410=>1000,26411=>1000,26412=>1000,26413=>1000,26414=>1000,26415=>1000,26417=>1000,26419=>1000,26420=>1000,26421=>1000,26422=>1000,26423=>1000,26424=>1000,26425=>1000,26426=>1000,26427=>1000,26428=>1000,26429=>1000,26430=>1000,26431=>1000,26432=>1000,26433=>1000,26434=>1000,26435=>1000,26437=>1000,26438=>1000,26439=>1000,26440=>1000,26441=>1000,26443=>1000,26444=>1000,26445=>1000,26446=>1000,26447=>1000,26448=>1000,26449=>1000,26451=>1000,26453=>1000,26454=>1000,26455=>1000,26457=>1000,26458=>1000,26460=>1000,26461=>1000,26462=>1000,26463=>1000,26464=>1000,26465=>1000,26466=>1000,26467=>1000,26468=>1000,26469=>1000,26470=>1000,26472=>1000,26473=>1000,26474=>1000,26476=>1000,26477=>1000,26479=>1000,26480=>1000,26481=>1000,26482=>1000,26483=>1000,26484=>1000,26485=>1000,26486=>1000,26487=>1000,26488=>1000,26489=>1000,26490=>1000,26491=>1000,26492=>1000,26493=>1000,26494=>1000,26495=>1000,26497=>1000,26499=>1000,26500=>1000,26501=>1000,26502=>1000,26503=>1000,26505=>1000,26507=>1000,26508=>1000,26509=>1000,26510=>1000,26511=>1000,26512=>1000,26513=>1000,26514=>1000,26515=>1000,26516=>1000,26517=>1000,26519=>1000,26520=>1000,26521=>1000,26522=>1000,26524=>1000,26525=>1000,26526=>1000,26527=>1000,26528=>1000,26529=>1000,26530=>1000,26531=>1000,26533=>1000,26534=>1000,26535=>1000,26536=>1000,26537=>1000,26538=>1000,26539=>1000,26541=>1000,26542=>1000,26543=>1000,26544=>1000,26546=>1000,26547=>1000,26548=>1000,26549=>1000,26550=>1000,26551=>1000,26552=>1000,26553=>1000,26554=>1000,26555=>1000,26558=>1000,26560=>1000,26561=>1000,26562=>1000,26563=>1000,26564=>1000,26565=>1000,26566=>1000,26568=>1000,26569=>1000,26570=>1000,26571=>1000,26572=>1000,26573=>1000,26574=>1000,26575=>1000,26576=>1000,26577=>1000,26578=>1000,26579=>1000,26580=>1000,26584=>1000,26585=>1000,26586=>1000,26587=>1000,26588=>1000,26589=>1000,26590=>1000,26591=>1000,26592=>1000,26594=>1000,26595=>1000,26596=>1000,26597=>1000,26598=>1000,26599=>1000,26601=>1000,26602=>1000,26603=>1000,26604=>1000,26605=>1000,26606=>1000,26607=>1000,26608=>1000,26609=>1000,26610=>1000,26611=>1000,26612=>1000,26613=>1000,26614=>1000,26615=>1000,26616=>1000,26618=>1000,26619=>1000,26620=>1000,26621=>1000,26622=>1000,26623=>1000,26624=>1000,26625=>1000,26626=>1000,26627=>1000,26628=>1000,26629=>1000,26631=>1000,26632=>1000,26633=>1000,26634=>1000,26635=>1000,26636=>1000,26638=>1000,26639=>1000,26641=>1000,26642=>1000,26643=>1000,26644=>1000,26646=>1000,26647=>1000,26648=>1000,26650=>1000,26652=>1000,26653=>1000,26654=>1000,26655=>1000,26656=>1000,26657=>1000,26658=>1000,26661=>1000,26662=>1000,26664=>1000,26665=>1000,26666=>1000,26667=>1000,26669=>1000,26670=>1000,26671=>1000,26673=>1000,26674=>1000,26675=>1000,26676=>1000,26677=>1000,26679=>1000,26680=>1000,26681=>1000,26682=>1000,26683=>1000,26684=>1000,26685=>1000,26686=>1000,26688=>1000,26689=>1000,26690=>1000,26691=>1000,26692=>1000,26693=>1000,26694=>1000,26696=>1000,26697=>1000,26698=>1000,26699=>1000,26700=>1000,26701=>1000,26702=>1000,26703=>1000,26704=>1000,26705=>1000,26706=>1000,26707=>1000,26708=>1000,26709=>1000,26713=>1000,26716=>1000,26717=>1000,26719=>1000,26720=>1000,26721=>1000,26722=>1000,26723=>1000,26724=>1000,26725=>1000,26726=>1000,26727=>1000,26728=>1000,26729=>1000,26731=>1000,26733=>1000,26734=>1000,26735=>1000,26737=>1000,26738=>1000,26740=>1000,26741=>1000,26742=>1000,26743=>1000,26744=>1000,26745=>1000,26747=>1000,26748=>1000,26749=>1000,26750=>1000,26751=>1000,26752=>1000,26753=>1000,26754=>1000,26755=>1000,26757=>1000,26758=>1000,26759=>1000,26761=>1000,26762=>1000,26763=>1000,26764=>1000,26765=>1000,26767=>1000,26768=>1000,26769=>1000,26770=>1000,26771=>1000,26772=>1000,26774=>1000,26775=>1000,26779=>1000,26780=>1000,26781=>1000,26783=>1000,26784=>1000,26785=>1000,26786=>1000,26787=>1000,26788=>1000,26790=>1000,26791=>1000,26792=>1000,26793=>1000,26794=>1000,26795=>1000,26796=>1000,26797=>1000,26798=>1000,26799=>1000,26800=>1000,26801=>1000,26802=>1000,26803=>1000,26804=>1000,26805=>1000,26806=>1000,26809=>1000,26810=>1000,26812=>1000,26816=>1000,26818=>1000,26820=>1000,26821=>1000,26822=>1000,26823=>1000,26824=>1000,26825=>1000,26826=>1000,26827=>1000,26828=>1000,26829=>1000,26830=>1000,26831=>1000,26832=>1000,26833=>1000,26834=>1000,26835=>1000,26836=>1000,26837=>1000,26838=>1000,26839=>1000,26840=>1000,26842=>1000,26844=>1000,26845=>1000,26846=>1000,26847=>1000,26848=>1000,26849=>1000,26851=>1000,26852=>1000,26854=>1000,26855=>1000,26856=>1000,26857=>1000,26858=>1000,26859=>1000,26860=>1000,26862=>1000,26863=>1000,26864=>1000,26865=>1000,26866=>1000,26867=>1000,26868=>1000,26869=>1000,26870=>1000,26871=>1000,26872=>1000,26873=>1000,26874=>1000,26875=>1000,26876=>1000,26877=>1000,26880=>1000,26881=>1000,26884=>1000,26885=>1000,26886=>1000,26887=>1000,26888=>1000,26890=>1000,26891=>1000,26892=>1000,26893=>1000,26894=>1000,26895=>1000,26896=>1000,26897=>1000,26898=>1000,26899=>1000,26900=>1000,26901=>1000,26903=>1000,26905=>1000,26906=>1000,26907=>1000,26908=>1000,26911=>1000,26912=>1000,26913=>1000,26914=>1000,26915=>1000,26916=>1000,26917=>1000,26918=>1000,26919=>1000,26920=>1000,26922=>1000,26925=>1000,26927=>1000,26928=>1000,26930=>1000,26931=>1000,26932=>1000,26933=>1000,26934=>1000,26935=>1000,26936=>1000,26937=>1000,26939=>1000,26940=>1000,26941=>1000,26943=>1000,26944=>1000,26945=>1000,26946=>1000,26948=>1000,26949=>1000,26952=>1000,26953=>1000,26954=>1000,26955=>1000,26956=>1000,26958=>1000,26959=>1000,26961=>1000,26962=>1000,26963=>1000,26964=>1000,26965=>1000,26966=>1000,26967=>1000,26968=>1000,26969=>1000,26970=>1000,26971=>1000,26972=>1000,26973=>1000,26974=>1000,26975=>1000,26976=>1000,26977=>1000,26978=>1000,26979=>1000,26981=>1000,26982=>1000,26984=>1000,26985=>1000,26986=>1000,26987=>1000,26988=>1000,26989=>1000,26990=>1000,26991=>1000,26992=>1000,26993=>1000,26995=>1000,26996=>1000,26997=>1000,26998=>1000,26999=>1000,27000=>1000,27001=>1000,27002=>1000,27003=>1000,27004=>1000,27005=>1000,27006=>1000,27008=>1000,27009=>1000,27010=>1000,27011=>1000,27012=>1000,27014=>1000,27015=>1000,27016=>1000,27017=>1000,27018=>1000,27021=>1000,27022=>1000,27024=>1000,27025=>1000,27027=>1000,27028=>1000,27029=>1000,27030=>1000,27031=>1000,27032=>1000,27033=>1000,27034=>1000,27035=>1000,27036=>1000,27038=>1000,27040=>1000,27041=>1000,27043=>1000,27044=>1000,27045=>1000,27046=>1000,27047=>1000,27048=>1000,27049=>1000,27050=>1000,27051=>1000,27052=>1000,27053=>1000,27054=>1000,27055=>1000,27056=>1000,27057=>1000,27058=>1000,27059=>1000,27060=>1000,27061=>1000,27062=>1000,27063=>1000,27065=>1000,27067=>1000,27068=>1000,27069=>1000,27070=>1000,27071=>1000,27073=>1000,27074=>1000,27075=>1000,27076=>1000,27078=>1000,27079=>1000,27081=>1000,27082=>1000,27083=>1000,27084=>1000,27085=>1000,27086=>1000,27087=>1000,27088=>1000,27091=>1000,27092=>1000,27096=>1000,27097=>1000,27099=>1000,27101=>1000,27102=>1000,27103=>1000,27104=>1000,27106=>1000,27108=>1000,27109=>1000,27110=>1000,27111=>1000,27112=>1000,27114=>1000,27115=>1000,27116=>1000,27117=>1000,27118=>1000,27121=>1000,27122=>1000,27123=>1000,27124=>1000,27126=>1000,27127=>1000,27128=>1000,27129=>1000,27131=>1000,27132=>1000,27133=>1000,27134=>1000,27135=>1000,27136=>1000,27137=>1000,27138=>1000,27140=>1000,27141=>1000,27142=>1000,27143=>1000,27144=>1000,27145=>1000,27146=>1000,27147=>1000,27148=>1000,27149=>1000,27151=>1000,27153=>1000,27154=>1000,27155=>1000,27156=>1000,27157=>1000,27158=>1000,27159=>1000,27160=>1000,27161=>1000,27163=>1000,27165=>1000,27166=>1000,27167=>1000,27168=>1000,27169=>1000,27170=>1000,27171=>1000,27173=>1000,27174=>1000,27175=>1000,27176=>1000,27177=>1000,27178=>1000,27179=>1000,27182=>1000,27183=>1000,27184=>1000,27185=>1000,27186=>1000,27188=>1000,27189=>1000,27190=>1000,27192=>1000,27193=>1000,27194=>1000,27195=>1000,27196=>1000,27197=>1000,27198=>1000,27199=>1000,27200=>1000,27201=>1000,27204=>1000,27206=>1000,27207=>1000,27208=>1000,27209=>1000,27211=>1000,27213=>1000,27214=>1000,27215=>1000,27216=>1000,27217=>1000,27218=>1000,27219=>1000,27220=>1000,27221=>1000,27222=>1000,27224=>1000,27225=>1000,27226=>1000,27227=>1000,27229=>1000,27230=>1000,27231=>1000,27232=>1000,27233=>1000,27234=>1000,27236=>1000,27237=>1000,27238=>1000,27239=>1000,27240=>1000,27241=>1000,27242=>1000,27243=>1000,27245=>1000,27247=>1000,27249=>1000,27250=>1000,27251=>1000,27254=>1000,27256=>1000,27257=>1000,27260=>1000,27262=>1000,27263=>1000,27264=>1000,27265=>1000,27267=>1000,27268=>1000,27269=>1000,27271=>1000,27273=>1000,27276=>1000,27277=>1000,27278=>1000,27280=>1000,27281=>1000,27282=>1000,27283=>1000,27284=>1000,27285=>1000,27286=>1000,27287=>1000,27290=>1000,27291=>1000,27292=>1000,27294=>1000,27295=>1000,27296=>1000,27297=>1000,27298=>1000,27299=>1000,27300=>1000,27301=>1000,27302=>1000,27304=>1000,27305=>1000,27306=>1000,27307=>1000,27308=>1000,27309=>1000,27310=>1000,27311=>1000,27315=>1000,27316=>1000,27318=>1000,27319=>1000,27320=>1000,27321=>1000,27322=>1000,27323=>1000,27325=>1000,27329=>1000,27330=>1000,27331=>1000,27333=>1000,27334=>1000,27335=>1000,27339=>1000,27340=>1000,27341=>1000,27343=>1000,27344=>1000,27345=>1000,27347=>1000,27353=>1000,27354=>1000,27355=>1000,27356=>1000,27357=>1000,27358=>1000,27359=>1000,27360=>1000,27361=>1000,27362=>1000,27364=>1000,27365=>1000,27367=>1000,27368=>1000,27370=>1000,27371=>1000,27372=>1000,27374=>1000,27375=>1000,27376=>1000,27377=>1000,27379=>1000,27382=>1000,27384=>1000,27385=>1000,27386=>1000,27387=>1000,27388=>1000,27392=>1000,27394=>1000,27395=>1000,27396=>1000,27397=>1000,27400=>1000,27401=>1000,27402=>1000,27403=>1000,27404=>1000,27407=>1000,27408=>1000,27409=>1000,27410=>1000,27411=>1000,27414=>1000,27415=>1000,27416=>1000,27417=>1000,27418=>1000,27421=>1000,27422=>1000,27423=>1000,27424=>1000,27425=>1000,27426=>1000,27427=>1000,27428=>1000,27429=>1000,27431=>1000,27432=>1000,27436=>1000,27437=>1000,27439=>1000,27441=>1000,27442=>1000,27443=>1000,27444=>1000,27446=>1000,27447=>1000,27448=>1000,27449=>1000,27450=>1000,27451=>1000,27452=>1000,27453=>1000,27454=>1000,27455=>1000,27457=>1000,27458=>1000,27459=>1000,27461=>1000,27462=>1000,27463=>1000,27464=>1000,27465=>1000,27466=>1000,27467=>1000,27468=>1000,27469=>1000,27470=>1000,27472=>1000,27473=>1000,27475=>1000,27476=>1000,27477=>1000,27478=>1000,27481=>1000,27483=>1000,27484=>1000,27486=>1000,27487=>1000,27488=>1000,27489=>1000,27490=>1000,27491=>1000,27492=>1000,27493=>1000,27494=>1000,27495=>1000,27497=>1000,27498=>1000,27501=>1000,27503=>1000,27506=>1000,27507=>1000,27508=>1000,27510=>1000,27511=>1000,27512=>1000,27513=>1000,27515=>1000,27516=>1000,27518=>1000,27519=>1000,27520=>1000,27521=>1000,27522=>1000,27523=>1000,27524=>1000,27526=>1000,27527=>1000,27528=>1000,27529=>1000,27530=>1000,27531=>1000,27532=>1000,27533=>1000,27534=>1000,27535=>1000,27537=>1000,27538=>1000,27539=>1000,27540=>1000,27541=>1000,27542=>1000,27543=>1000,27544=>1000,27545=>1000,27546=>1000,27547=>1000,27550=>1000,27551=>1000,27552=>1000,27553=>1000,27554=>1000,27555=>1000,27556=>1000,27557=>1000,27558=>1000,27559=>1000,27562=>1000,27563=>1000,27565=>1000,27566=>1000,27567=>1000,27568=>1000,27569=>1000,27570=>1000,27571=>1000,27572=>1000,27573=>1000,27574=>1000,27575=>1000,27578=>1000,27579=>1000,27580=>1000,27581=>1000,27583=>1000,27584=>1000,27585=>1000,27586=>1000,27587=>1000,27588=>1000,27589=>1000,27590=>1000,27591=>1000,27592=>1000,27593=>1000,27594=>1000,27595=>1000,27596=>1000,27597=>1000,27598=>1000,27599=>1000,27600=>1000,27602=>1000,27603=>1000,27604=>1000,27605=>1000,27606=>1000,27607=>1000,27608=>1000,27609=>1000,27610=>1000,27611=>1000,27614=>1000,27615=>1000,27616=>1000,27617=>1000,27618=>1000,27619=>1000,27620=>1000,27622=>1000,27623=>1000,27624=>1000,27626=>1000,27627=>1000,27628=>1000,27631=>1000,27632=>1000,27634=>1000,27635=>1000,27637=>1000,27639=>1000,27640=>1000,27641=>1000,27643=>1000,27644=>1000,27645=>1000,27646=>1000,27647=>1000,27648=>1000,27649=>1000,27650=>1000,27651=>1000,27652=>1000,27653=>1000,27654=>1000,27655=>1000,27656=>1000,27657=>1000,27659=>1000,27660=>1000,27661=>1000,27663=>1000,27664=>1000,27665=>1000,27667=>1000,27668=>1000,27669=>1000,27670=>1000,27671=>1000,27672=>1000,27673=>1000,27674=>1000,27675=>1000,27677=>1000,27679=>1000,27680=>1000,27681=>1000,27682=>1000,27683=>1000,27684=>1000,27685=>1000,27686=>1000,27687=>1000,27688=>1000,27689=>1000,27690=>1000,27691=>1000,27692=>1000,27694=>1000,27695=>1000,27696=>1000,27698=>1000,27699=>1000,27700=>1000,27701=>1000,27702=>1000,27703=>1000,27704=>1000,27707=>1000,27709=>1000,27710=>1000,27711=>1000,27712=>1000,27713=>1000,27714=>1000,27715=>1000,27718=>1000,27719=>1000,27721=>1000,27722=>1000,27723=>1000,27724=>1000,27725=>1000,27726=>1000,27727=>1000,27728=>1000,27730=>1000,27732=>1000,27733=>1000,27735=>1000,27737=>1000,27738=>1000,27739=>1000,27740=>1000,27741=>1000,27742=>1000,27743=>1000,27744=>1000,27745=>1000,27746=>1000,27748=>1000,27749=>1000,27750=>1000,27751=>1000,27752=>1000,27753=>1000,27754=>1000,27755=>1000,27757=>1000,27759=>1000,27760=>1000,27761=>1000,27762=>1000,27763=>1000,27764=>1000,27766=>1000,27768=>1000,27769=>1000,27770=>1000,27771=>1000,27773=>1000,27774=>1000,27776=>1000,27777=>1000,27778=>1000,27779=>1000,27780=>1000,27781=>1000,27782=>1000,27783=>1000,27784=>1000,27785=>1000,27786=>1000,27787=>1000,27788=>1000,27789=>1000,27790=>1000,27791=>1000,27792=>1000,27794=>1000,27795=>1000,27796=>1000,27797=>1000,27798=>1000,27800=>1000,27801=>1000,27802=>1000,27803=>1000,27804=>1000,27805=>1000,27807=>1000,27809=>1000,27810=>1000,27811=>1000,27812=>1000,27813=>1000,27814=>1000,27815=>1000,27817=>1000,27818=>1000,27819=>1000,27820=>1000,27821=>1000,27822=>1000,27824=>1000,27825=>1000,27826=>1000,27827=>1000,27828=>1000,27830=>1000,27831=>1000,27832=>1000,27833=>1000,27834=>1000,27835=>1000,27836=>1000,27837=>1000,27838=>1000,27839=>1000,27840=>1000,27841=>1000,27842=>1000,27843=>1000,27844=>1000,27845=>1000,27846=>1000,27847=>1000,27849=>1000,27850=>1000,27852=>1000,27853=>1000,27855=>1000,27856=>1000,27857=>1000,27858=>1000,27859=>1000,27860=>1000,27861=>1000,27862=>1000,27863=>1000,27865=>1000,27866=>1000,27867=>1000,27868=>1000,27869=>1000,27870=>1000,27872=>1000,27873=>1000,27874=>1000,27875=>1000,27877=>1000,27879=>1000,27880=>1000,27881=>1000,27882=>1000,27883=>1000,27884=>1000,27885=>1000,27886=>1000,27887=>1000,27888=>1000,27889=>1000,27890=>1000,27891=>1000,27893=>1000,27894=>1000,27895=>1000,27896=>1000,27897=>1000,27898=>1000,27899=>1000,27900=>1000,27901=>1000,27902=>1000,27904=>1000,27905=>1000,27907=>1000,27908=>1000,27911=>1000,27912=>1000,27913=>1000,27914=>1000,27915=>1000,27916=>1000,27917=>1000,27918=>1000,27919=>1000,27920=>1000,27921=>1000,27922=>1000,27926=>1000,27927=>1000,27928=>1000,27929=>1000,27930=>1000,27931=>1000,27933=>1000,27934=>1000,27935=>1000,27936=>1000,27938=>1000,27941=>1000,27943=>1000,27944=>1000,27945=>1000,27946=>1000,27947=>1000,27948=>1000,27949=>1000,27950=>1000,27951=>1000,27952=>1000,27953=>1000,27954=>1000,27955=>1000,27956=>1000,27957=>1000,27958=>1000,27959=>1000,27960=>1000,27961=>1000,27962=>1000,27963=>1000,27964=>1000,27965=>1000,27966=>1000,27967=>1000,27968=>1000,27969=>1000,27970=>1000,27971=>1000,27972=>1000,27973=>1000,27974=>1000,27975=>1000,27976=>1000,27978=>1000,27979=>1000,27981=>1000,27982=>1000,27983=>1000,27985=>1000,27986=>1000,27987=>1000,27988=>1000,27992=>1000,27993=>1000,27994=>1000,27996=>1000,27998=>1000,27999=>1000,28000=>1000,28001=>1000,28002=>1000,28003=>1000,28004=>1000,28005=>1000,28006=>1000,28007=>1000,28008=>1000,28009=>1000,28010=>1000,28012=>1000,28013=>1000,28014=>1000,28015=>1000,28016=>1000,28020=>1000,28021=>1000,28022=>1000,28023=>1000,28024=>1000,28025=>1000,28026=>1000,28027=>1000,28028=>1000,28029=>1000,28030=>1000,28031=>1000,28032=>1000,28034=>1000,28035=>1000,28036=>1000,28037=>1000,28038=>1000,28039=>1000,28040=>1000,28041=>1000,28042=>1000,28043=>1000,28044=>1000,28045=>1000,28046=>1000,28048=>1000,28049=>1000,28050=>1000,28051=>1000,28052=>1000,28053=>1000,28054=>1000,28055=>1000,28056=>1000,28057=>1000,28059=>1000,28060=>1000,28061=>1000,28062=>1000,28063=>1000,28064=>1000,28065=>1000,28067=>1000,28068=>1000,28070=>1000,28071=>1000,28072=>1000,28073=>1000,28074=>1000,28075=>1000,28076=>1000,28078=>1000,28079=>1000,28082=>1000,28083=>1000,28084=>1000,28085=>1000,28087=>1000,28088=>1000,28090=>1000,28091=>1000,28092=>1000,28093=>1000,28094=>1000,28095=>1000,28096=>1000,28098=>1000,28099=>1000,28100=>1000,28101=>1000,28102=>1000,28103=>1000,28104=>1000,28105=>1000,28106=>1000,28107=>1000,28108=>1000,28109=>1000,28111=>1000,28112=>1000,28113=>1000,28114=>1000,28115=>1000,28116=>1000,28117=>1000,28118=>1000,28119=>1000,28120=>1000,28121=>1000,28122=>1000,28123=>1000,28124=>1000,28125=>1000,28126=>1000,28127=>1000,28128=>1000,28129=>1000,28130=>1000,28131=>1000,28132=>1000,28133=>1000,28134=>1000,28136=>1000,28137=>1000,28138=>1000,28139=>1000,28140=>1000,28141=>1000,28142=>1000,28143=>1000,28144=>1000,28145=>1000,28146=>1000,28147=>1000,28148=>1000,28149=>1000,28150=>1000,28151=>1000,28152=>1000,28153=>1000,28154=>1000,28155=>1000,28156=>1000,28157=>1000,28160=>1000,28163=>1000,28165=>1000,28167=>1000,28168=>1000,28169=>1000,28170=>1000,28171=>1000,28172=>1000,28173=>1000,28174=>1000,28176=>1000,28177=>1000,28179=>1000,28180=>1000,28181=>1000,28182=>1000,28183=>1000,28185=>1000,28186=>1000,28187=>1000,28188=>1000,28189=>1000,28191=>1000,28192=>1000,28193=>1000,28194=>1000,28195=>1000,28196=>1000,28197=>1000,28198=>1000,28199=>1000,28200=>1000,28201=>1000,28203=>1000,28204=>1000,28205=>1000,28206=>1000,28207=>1000,28208=>1000,28209=>1000,28210=>1000,28211=>1000,28212=>1000,28213=>1000,28214=>1000,28216=>1000,28217=>1000,28218=>1000,28219=>1000,28220=>1000,28221=>1000,28222=>1000,28223=>1000,28224=>1000,28225=>1000,28227=>1000,28228=>1000,28229=>1000,28230=>1000,28231=>1000,28233=>1000,28234=>1000,28235=>1000,28237=>1000,28238=>1000,28241=>1000,28242=>1000,28243=>1000,28244=>1000,28245=>1000,28246=>1000,28248=>1000,28250=>1000,28251=>1000,28252=>1000,28253=>1000,28254=>1000,28255=>1000,28256=>1000,28257=>1000,28258=>1000,28259=>1000,28260=>1000,28261=>1000,28262=>1000,28263=>1000,28264=>1000,28265=>1000,28267=>1000,28270=>1000,28271=>1000,28273=>1000,28274=>1000,28275=>1000,28276=>1000,28278=>1000,28279=>1000,28280=>1000,28281=>1000,28282=>1000,28286=>1000,28287=>1000,28288=>1000,28290=>1000,28291=>1000,28293=>1000,28294=>1000,28296=>1000,28297=>1000,28300=>1000,28301=>1000,28302=>1000,28303=>1000,28304=>1000,28306=>1000,28307=>1000,28308=>1000,28310=>1000,28311=>1000,28312=>1000,28313=>1000,28315=>1000,28316=>1000,28317=>1000,28318=>1000,28319=>1000,28320=>1000,28321=>1000,28322=>1000,28323=>1000,28324=>1000,28325=>1000,28326=>1000,28327=>1000,28330=>1000,28331=>1000,28334=>1000,28335=>1000,28336=>1000,28337=>1000,28338=>1000,28339=>1000,28340=>1000,28342=>1000,28343=>1000,28345=>1000,28346=>1000,28347=>1000,28348=>1000,28349=>1000,28350=>1000,28351=>1000,28352=>1000,28353=>1000,28354=>1000,28355=>1000,28356=>1000,28357=>1000,28358=>1000,28359=>1000,28360=>1000,28361=>1000,28362=>1000,28363=>1000,28364=>1000,28365=>1000,28366=>1000,28367=>1000,28368=>1000,28369=>1000,28370=>1000,28371=>1000,28372=>1000,28373=>1000,28374=>1000,28375=>1000,28376=>1000,28378=>1000,28380=>1000,28381=>1000,28382=>1000,28383=>1000,28384=>1000,28385=>1000,28386=>1000,28388=>1000,28389=>1000,28390=>1000,28392=>1000,28393=>1000,28395=>1000,28396=>1000,28397=>1000,28398=>1000,28399=>1000,28401=>1000,28402=>1000,28404=>1000,28405=>1000,28406=>1000,28407=>1000,28408=>1000,28409=>1000,28411=>1000,28412=>1000,28413=>1000,28414=>1000,28415=>1000,28416=>1000,28417=>1000,28418=>1000,28419=>1000,28421=>1000,28422=>1000,28423=>1000,28424=>1000,28425=>1000,28426=>1000,28429=>1000,28430=>1000,28431=>1000,28433=>1000,28434=>1000,28435=>1000,28436=>1000,28437=>1000,28440=>1000,28441=>1000,28442=>1000,28444=>1000,28446=>1000,28447=>1000,28448=>1000,28449=>1000,28450=>1000,28451=>1000,28452=>1000,28453=>1000,28454=>1000,28455=>1000,28457=>1000,28458=>1000,28459=>1000,28460=>1000,28461=>1000,28462=>1000,28463=>1000,28464=>1000,28465=>1000,28466=>1000,28467=>1000,28469=>1000,28470=>1000,28471=>1000,28472=>1000,28473=>1000,28474=>1000,28475=>1000,28476=>1000,28478=>1000,28479=>1000,28480=>1000,28481=>1000,28483=>1000,28485=>1000,28486=>1000,28487=>1000,28491=>1000,28493=>1000,28494=>1000,28495=>1000,28496=>1000,28497=>1000,28498=>1000,28499=>1000,28500=>1000,28501=>1000,28503=>1000,28504=>1000,28506=>1000,28507=>1000,28508=>1000,28509=>1000,28510=>1000,28511=>1000,28512=>1000,28513=>1000,28514=>1000,28515=>1000,28516=>1000,28518=>1000,28519=>1000,28521=>1000,28522=>1000,28523=>1000,28524=>1000,28525=>1000,28526=>1000,28527=>1000,28528=>1000,28530=>1000,28531=>1000,28532=>1000,28534=>1000,28535=>1000,28536=>1000,28538=>1000,28539=>1000,28540=>1000,28541=>1000,28542=>1000,28543=>1000,28544=>1000,28545=>1000,28546=>1000,28548=>1000,28549=>1000,28550=>1000,28551=>1000,28552=>1000,28553=>1000,28555=>1000,28556=>1000,28557=>1000,28558=>1000,28560=>1000,28561=>1000,28562=>1000,28563=>1000,28564=>1000,28565=>1000,28566=>1000,28567=>1000,28572=>1000,28574=>1000,28576=>1000,28577=>1000,28578=>1000,28579=>1000,28580=>1000,28581=>1000,28582=>1000,28583=>1000,28584=>1000,28585=>1000,28586=>1000,28587=>1000,28588=>1000,28589=>1000,28590=>1000,28591=>1000,28592=>1000,28593=>1000,28594=>1000,28595=>1000,28596=>1000,28597=>1000,28598=>1000,28600=>1000,28601=>1000,28602=>1000,28604=>1000,28605=>1000,28606=>1000,28607=>1000,28608=>1000,28609=>1000,28610=>1000,28611=>1000,28612=>1000,28614=>1000,28615=>1000,28616=>1000,28617=>1000,28618=>1000,28619=>1000,28620=>1000,28621=>1000,28622=>1000,28623=>1000,28625=>1000,28626=>1000,28628=>1000,28629=>1000,28632=>1000,28634=>1000,28635=>1000,28636=>1000,28637=>1000,28638=>1000,28639=>1000,28640=>1000,28641=>1000,28642=>1000,28643=>1000,28644=>1000,28646=>1000,28647=>1000,28648=>1000,28649=>1000,28651=>1000,28652=>1000,28653=>1000,28654=>1000,28655=>1000,28656=>1000,28657=>1000,28658=>1000,28659=>1000,28660=>1000,28661=>1000,28662=>1000,28663=>1000,28666=>1000,28667=>1000,28668=>1000,28670=>1000,28671=>1000,28672=>1000,28673=>1000,28676=>1000,28677=>1000,28678=>1000,28679=>1000,28681=>1000,28682=>1000,28683=>1000,28684=>1000,28685=>1000,28686=>1000,28687=>1000,28689=>1000,28692=>1000,28693=>1000,28694=>1000,28695=>1000,28696=>1000,28697=>1000,28698=>1000,28699=>1000,28700=>1000,28701=>1000,28702=>1000,28703=>1000,28704=>1000,28705=>1000,28706=>1000,28707=>1000,28708=>1000,28710=>1000,28711=>1000,28712=>1000,28713=>1000,28714=>1000,28715=>1000,28716=>1000,28719=>1000,28720=>1000,28721=>1000,28722=>1000,28723=>1000,28724=>1000,28725=>1000,28727=>1000,28728=>1000,28729=>1000,28730=>1000,28731=>1000,28732=>1000,28734=>1000,28735=>1000,28736=>1000,28737=>1000,28738=>1000,28739=>1000,28740=>1000,28741=>1000,28742=>1000,28744=>1000,28745=>1000,28746=>1000,28748=>1000,28751=>1000,28752=>1000,28753=>1000,28754=>1000,28757=>1000,28758=>1000,28759=>1000,28760=>1000,28762=>1000,28763=>1000,28765=>1000,28766=>1000,28767=>1000,28768=>1000,28769=>1000,28770=>1000,28771=>1000,28772=>1000,28773=>1000,28774=>1000,28776=>1000,28777=>1000,28778=>1000,28779=>1000,28780=>1000,28781=>1000,28783=>1000,28784=>1000,28785=>1000,28788=>1000,28789=>1000,28790=>1000,28792=>1000,28794=>1000,28796=>1000,28797=>1000,28798=>1000,28799=>1000,28800=>1000,28802=>1000,28803=>1000,28804=>1000,28805=>1000,28806=>1000,28809=>1000,28810=>1000,28814=>1000,28817=>1000,28818=>1000,28819=>1000,28820=>1000,28821=>1000,28822=>1000,28824=>1000,28825=>1000,28826=>1000,28828=>1000,28829=>1000,28831=>1000,28833=>1000,28836=>1000,28841=>1000,28843=>1000,28844=>1000,28845=>1000,28846=>1000,28847=>1000,28848=>1000,28849=>1000,28851=>1000,28852=>1000,28853=>1000,28855=>1000,28856=>1000,28857=>1000,28858=>1000,28859=>1000,28860=>1000,28861=>1000,28862=>1000,28864=>1000,28865=>1000,28866=>1000,28867=>1000,28869=>1000,28870=>1000,28871=>1000,28872=>1000,28874=>1000,28875=>1000,28877=>1000,28878=>1000,28879=>1000,28881=>1000,28882=>1000,28883=>1000,28884=>1000,28887=>1000,28888=>1000,28889=>1000,28890=>1000,28891=>1000,28892=>1000,28893=>1000,28894=>1000,28895=>1000,28896=>1000,28897=>1000,28898=>1000,28900=>1000,28902=>1000,28903=>1000,28904=>1000,28905=>1000,28907=>1000,28908=>1000,28909=>1000,28911=>1000,28912=>1000,28913=>1000,28915=>1000,28916=>1000,28918=>1000,28919=>1000,28920=>1000,28921=>1000,28922=>1000,28923=>1000,28924=>1000,28925=>1000,28927=>1000,28928=>1000,28930=>1000,28932=>1000,28934=>1000,28937=>1000,28938=>1000,28939=>1000,28940=>1000,28941=>1000,28942=>1000,28943=>1000,28944=>1000,28947=>1000,28948=>1000,28949=>1000,28950=>1000,28951=>1000,28952=>1000,28953=>1000,28954=>1000,28955=>1000,28956=>1000,28958=>1000,28959=>1000,28960=>1000,28961=>1000,28962=>1000,28963=>1000,28965=>1000,28966=>1000,28968=>1000,28974=>1000,28975=>1000,28976=>1000,28977=>1000,28978=>1000,28982=>1000,28986=>1000,28988=>1000,28993=>1000,28994=>1000,28995=>1000,28996=>1000,28997=>1000,28998=>1000,28999=>1000,29001=>1000,29002=>1000,29003=>1000,29004=>1000,29005=>1000,29006=>1000,29008=>1000,29010=>1000,29011=>1000,29012=>1000,29013=>1000,29014=>1000,29016=>1000,29017=>1000,29018=>1000,29020=>1000,29021=>1000,29022=>1000,29023=>1000,29024=>1000,29025=>1000,29026=>1000,29027=>1000,29028=>1000,29029=>1000,29030=>1000,29031=>1000,29032=>1000,29033=>1000,29034=>1000,29036=>1000,29038=>1000,29040=>1000,29042=>1000,29043=>1000,29048=>1000,29050=>1000,29051=>1000,29053=>1000,29056=>1000,29057=>1000,29058=>1000,29060=>1000,29061=>1000,29062=>1000,29063=>1000,29064=>1000,29065=>1000,29066=>1000,29071=>1000,29072=>1000,29074=>1000,29076=>1000,29077=>1000,29079=>1000,29080=>1000,29081=>1000,29082=>1000,29083=>1000,29084=>1000,29085=>1000,29086=>1000,29087=>1000,29088=>1000,29089=>1000,29090=>1000,29092=>1000,29093=>1000,29095=>1000,29096=>1000,29097=>1000,29098=>1000,29100=>1000,29103=>1000,29104=>1000,29105=>1000,29106=>1000,29107=>1000,29109=>1000,29112=>1000,29113=>1000,29114=>1000,29116=>1000,29117=>1000,29118=>1000,29119=>1000,29120=>1000,29121=>1000,29122=>1000,29123=>1000,29124=>1000,29125=>1000,29126=>1000,29127=>1000,29128=>1000,29129=>1000,29130=>1000,29131=>1000,29134=>1000,29135=>1000,29136=>1000,29138=>1000,29140=>1000,29141=>1000,29142=>1000,29143=>1000,29144=>1000,29145=>1000,29146=>1000,29147=>1000,29148=>1000,29151=>1000,29152=>1000,29153=>1000,29154=>1000,29156=>1000,29157=>1000,29158=>1000,29159=>1000,29160=>1000,29164=>1000,29165=>1000,29166=>1000,29168=>1000,29169=>1000,29170=>1000,29172=>1000,29173=>1000,29176=>1000,29177=>1000,29179=>1000,29180=>1000,29181=>1000,29182=>1000,29183=>1000,29184=>1000,29185=>1000,29186=>1000,29187=>1000,29189=>1000,29190=>1000,29191=>1000,29194=>1000,29196=>1000,29197=>1000,29200=>1000,29203=>1000,29204=>1000,29209=>1000,29210=>1000,29211=>1000,29213=>1000,29214=>1000,29215=>1000,29218=>1000,29219=>1000,29222=>1000,29223=>1000,29224=>1000,29225=>1000,29226=>1000,29228=>1000,29229=>1000,29232=>1000,29233=>1000,29234=>1000,29237=>1000,29238=>1000,29239=>1000,29240=>1000,29241=>1000,29242=>1000,29243=>1000,29244=>1000,29245=>1000,29246=>1000,29247=>1000,29248=>1000,29249=>1000,29250=>1000,29252=>1000,29254=>1000,29255=>1000,29256=>1000,29257=>1000,29258=>1000,29259=>1000,29260=>1000,29261=>1000,29263=>1000,29266=>1000,29267=>1000,29270=>1000,29272=>1000,29273=>1000,29274=>1000,29275=>1000,29277=>1000,29278=>1000,29279=>1000,29280=>1000,29281=>1000,29282=>1000,29283=>1000,29286=>1000,29287=>1000,29289=>1000,29290=>1000,29292=>1000,29294=>1000,29295=>1000,29296=>1000,29298=>1000,29299=>1000,29300=>1000,29301=>1000,29302=>1000,29303=>1000,29304=>1000,29305=>1000,29306=>1000,29307=>1000,29308=>1000,29309=>1000,29310=>1000,29311=>1000,29312=>1000,29313=>1000,29314=>1000,29316=>1000,29317=>1000,29318=>1000,29319=>1000,29320=>1000,29321=>1000,29322=>1000,29323=>1000,29324=>1000,29325=>1000,29326=>1000,29327=>1000,29328=>1000,29329=>1000,29330=>1000,29331=>1000,29333=>1000,29334=>1000,29335=>1000,29336=>1000,29338=>1000,29339=>1000,29341=>1000,29342=>1000,29343=>1000,29344=>1000,29345=>1000,29346=>1000,29347=>1000,29348=>1000,29349=>1000,29350=>1000,29351=>1000,29352=>1000,29353=>1000,29354=>1000,29356=>1000,29357=>1000,29358=>1000,29359=>1000,29360=>1000,29361=>1000,29362=>1000,29364=>1000,29365=>1000,29366=>1000,29367=>1000,29368=>1000,29369=>1000,29370=>1000,29373=>1000,29374=>1000,29375=>1000,29376=>1000,29377=>1000,29378=>1000,29379=>1000,29380=>1000,29381=>1000,29382=>1000,29384=>1000,29385=>1000,29386=>1000,29387=>1000,29388=>1000,29389=>1000,29390=>1000,29392=>1000,29393=>1000,29394=>1000,29396=>1000,29398=>1000,29399=>1000,29400=>1000,29401=>1000,29402=>1000,29403=>1000,29404=>1000,29406=>1000,29407=>1000,29408=>1000,29409=>1000,29410=>1000,29411=>1000,29412=>1000,29414=>1000,29416=>1000,29417=>1000,29418=>1000,29419=>1000,29420=>1000,29421=>1000,29422=>1000,29423=>1000,29424=>1000,29425=>1000,29426=>1000,29427=>1000,29428=>1000,29430=>1000,29431=>1000,29432=>1000,29433=>1000,29434=>1000,29435=>1000,29436=>1000,29437=>1000,29438=>1000,29439=>1000,29440=>1000,29441=>1000,29443=>1000,29447=>1000,29448=>1000,29450=>1000,29451=>1000,29452=>1000,29454=>1000,29455=>1000,29457=>1000,29458=>1000,29459=>1000,29461=>1000,29462=>1000,29463=>1000,29464=>1000,29465=>1000,29467=>1000,29468=>1000,29469=>1000,29470=>1000,29471=>1000,29473=>1000,29474=>1000,29475=>1000,29476=>1000,29477=>1000,29478=>1000,29479=>1000,29481=>1000,29482=>1000,29483=>1000,29484=>1000,29485=>1000,29486=>1000,29487=>1000,29488=>1000,29489=>1000,29490=>1000,29491=>1000,29492=>1000,29493=>1000,29494=>1000,29495=>1000,29496=>1000,29497=>1000,29498=>1000,29499=>1000,29500=>1000,29502=>1000,29503=>1000,29504=>1000,29506=>1000,29507=>1000,29508=>1000,29509=>1000,29513=>1000,29514=>1000,29516=>1000,29517=>1000,29518=>1000,29519=>1000,29520=>1000,29521=>1000,29522=>1000,29527=>1000,29528=>1000,29529=>1000,29530=>1000,29531=>1000,29533=>1000,29534=>1000,29535=>1000,29536=>1000,29537=>1000,29538=>1000,29539=>1000,29541=>1000,29542=>1000,29543=>1000,29544=>1000,29545=>1000,29546=>1000,29547=>1000,29548=>1000,29549=>1000,29550=>1000,29551=>1000,29552=>1000,29554=>1000,29555=>1000,29557=>1000,29558=>1000,29559=>1000,29560=>1000,29562=>1000,29563=>1000,29564=>1000,29565=>1000,29566=>1000,29567=>1000,29568=>1000,29569=>1000,29570=>1000,29571=>1000,29572=>1000,29573=>1000,29574=>1000,29575=>1000,29576=>1000,29577=>1000,29578=>1000,29579=>1000,29582=>1000,29585=>1000,29586=>1000,29587=>1000,29588=>1000,29589=>1000,29590=>1000,29591=>1000,29592=>1000,29595=>1000,29597=>1000,29599=>1000,29600=>1000,29601=>1000,29602=>1000,29604=>1000,29605=>1000,29606=>1000,29607=>1000,29608=>1000,29609=>1000,29611=>1000,29612=>1000,29613=>1000,29614=>1000,29615=>1000,29616=>1000,29618=>1000,29619=>1000,29620=>1000,29621=>1000,29622=>1000,29623=>1000,29624=>1000,29625=>1000,29626=>1000,29627=>1000,29628=>1000,29629=>1000,29630=>1000,29631=>1000,29632=>1000,29634=>1000,29635=>1000,29637=>1000,29638=>1000,29639=>1000,29640=>1000,29641=>1000,29642=>1000,29643=>1000,29644=>1000,29645=>1000,29646=>1000,29647=>1000,29648=>1000,29649=>1000,29650=>1000,29651=>1000,29652=>1000,29654=>1000,29655=>1000,29656=>1000,29657=>1000,29658=>1000,29659=>1000,29660=>1000,29661=>1000,29662=>1000,29664=>1000,29667=>1000,29668=>1000,29669=>1000,29670=>1000,29671=>1000,29672=>1000,29673=>1000,29674=>1000,29675=>1000,29677=>1000,29678=>1000,29681=>1000,29682=>1000,29684=>1000,29685=>1000,29686=>1000,29687=>1000,29688=>1000,29689=>1000,29690=>1000,29692=>1000,29693=>1000,29694=>1000,29695=>1000,29696=>1000,29697=>1000,29699=>1000,29700=>1000,29701=>1000,29702=>1000,29703=>1000,29704=>1000,29705=>1000,29706=>1000,29707=>1000,29708=>1000,29709=>1000,29711=>1000,29712=>1000,29715=>1000,29718=>1000,29722=>1000,29723=>1000,29725=>1000,29728=>1000,29729=>1000,29730=>1000,29731=>1000,29732=>1000,29733=>1000,29734=>1000,29736=>1000,29737=>1000,29738=>1000,29739=>1000,29740=>1000,29741=>1000,29742=>1000,29743=>1000,29744=>1000,29745=>1000,29746=>1000,29747=>1000,29748=>1000,29749=>1000,29750=>1000,29752=>1000,29754=>1000,29756=>1000,29759=>1000,29760=>1000,29761=>1000,29762=>1000,29763=>1000,29764=>1000,29766=>1000,29770=>1000,29771=>1000,29773=>1000,29774=>1000,29775=>1000,29776=>1000,29777=>1000,29778=>1000,29780=>1000,29781=>1000,29783=>1000,29785=>1000,29786=>1000,29787=>1000,29788=>1000,29790=>1000,29791=>1000,29792=>1000,29794=>1000,29795=>1000,29796=>1000,29797=>1000,29799=>1000,29800=>1000,29801=>1000,29802=>1000,29805=>1000,29806=>1000,29807=>1000,29808=>1000,29809=>1000,29810=>1000,29811=>1000,29813=>1000,29814=>1000,29815=>1000,29817=>1000,29820=>1000,29821=>1000,29822=>1000,29823=>1000,29824=>1000,29825=>1000,29826=>1000,29827=>1000,29829=>1000,29830=>1000,29831=>1000,29832=>1000,29833=>1000,29834=>1000,29835=>1000,29838=>1000,29840=>1000,29842=>1000,29844=>1000,29845=>1000,29847=>1000,29848=>1000,29850=>1000,29852=>1000,29854=>1000,29855=>1000,29856=>1000,29857=>1000,29858=>1000,29859=>1000,29861=>1000,29862=>1000,29863=>1000,29864=>1000,29865=>1000,29866=>1000,29867=>1000,29869=>1000,29871=>1000,29872=>1000,29873=>1000,29874=>1000,29877=>1000,29878=>1000,29879=>1000,29880=>1000,29881=>1000,29882=>1000,29883=>1000,29885=>1000,29886=>1000,29887=>1000,29888=>1000,29889=>1000,29890=>1000,29891=>1000,29893=>1000,29894=>1000,29898=>1000,29899=>1000,29903=>1000,29906=>1000,29908=>1000,29909=>1000,29910=>1000,29911=>1000,29912=>1000,29913=>1000,29914=>1000,29915=>1000,29916=>1000,29917=>1000,29918=>1000,29919=>1000,29920=>1000,29921=>1000,29922=>1000,29923=>1000,29924=>1000,29925=>1000,29926=>1000,29927=>1000,29928=>1000,29929=>1000,29932=>1000,29934=>1000,29935=>1000,29936=>1000,29937=>1000,29938=>1000,29940=>1000,29941=>1000,29942=>1000,29943=>1000,29944=>1000,29947=>1000,29949=>1000,29950=>1000,29951=>1000,29952=>1000,29953=>1000,29954=>1000,29955=>1000,29956=>1000,29957=>1000,29959=>1000,29960=>1000,29963=>1000,29964=>1000,29965=>1000,29966=>1000,29967=>1000,29968=>1000,29969=>1000,29970=>1000,29971=>1000,29972=>1000,29973=>1000,29974=>1000,29975=>1000,29976=>1000,29977=>1000,29978=>1000,29979=>1000,29980=>1000,29981=>1000,29982=>1000,29983=>1000,29985=>1000,29986=>1000,29987=>1000,29989=>1000,29990=>1000,29992=>1000,29993=>1000,29994=>1000,29995=>1000,29996=>1000,29997=>1000,29998=>1000,29999=>1000,30000=>1000,30001=>1000,30002=>1000,30003=>1000,30005=>1000,30007=>1000,30008=>1000,30009=>1000,30010=>1000,30011=>1000,30012=>1000,30013=>1000,30014=>1000,30015=>1000,30016=>1000,30020=>1000,30021=>1000,30022=>1000,30023=>1000,30024=>1000,30025=>1000,30026=>1000,30027=>1000,30028=>1000,30029=>1000,30030=>1000,30031=>1000,30033=>1000,30035=>1000,30036=>1000,30041=>1000,30042=>1000,30043=>1000,30044=>1000,30045=>1000,30047=>1000,30048=>1000,30050=>1000,30051=>1000,30052=>1000,30053=>1000,30054=>1000,30055=>1000,30057=>1000,30058=>1000,30059=>1000,30060=>1000,30061=>1000,30063=>1000,30064=>1000,30066=>1000,30067=>1000,30068=>1000,30069=>1000,30070=>1000,30071=>1000,30072=>1000,30073=>1000,30074=>1000,30077=>1000,30078=>1000,30079=>1000,30080=>1000,30082=>1000,30083=>1000,30084=>1000,30086=>1000,30087=>1000,30089=>1000,30090=>1000,30091=>1000,30092=>1000,30094=>1000,30095=>1000,30096=>1000,30097=>1000,30098=>1000,30100=>1000,30101=>1000,30102=>1000,30103=>1000,30104=>1000,30105=>1000,30106=>1000,30109=>1000,30111=>1000,30112=>1000,30113=>1000,30114=>1000,30115=>1000,30116=>1000,30117=>1000,30119=>1000,30122=>1000,30123=>1000,30124=>1000,30126=>1000,30127=>1000,30128=>1000,30129=>1000,30130=>1000,30131=>1000,30132=>1000,30133=>1000,30134=>1000,30136=>1000,30137=>1000,30138=>1000,30139=>1000,30140=>1000,30141=>1000,30142=>1000,30143=>1000,30144=>1000,30145=>1000,30146=>1000,30147=>1000,30148=>1000,30149=>1000,30151=>1000,30152=>1000,30153=>1000,30154=>1000,30155=>1000,30156=>1000,30157=>1000,30158=>1000,30159=>1000,30160=>1000,30161=>1000,30162=>1000,30164=>1000,30165=>1000,30166=>1000,30167=>1000,30168=>1000,30169=>1000,30170=>1000,30171=>1000,30173=>1000,30174=>1000,30175=>1000,30176=>1000,30177=>1000,30178=>1000,30179=>1000,30180=>1000,30182=>1000,30183=>1000,30184=>1000,30185=>1000,30186=>1000,30187=>1000,30189=>1000,30191=>1000,30192=>1000,30193=>1000,30194=>1000,30195=>1000,30196=>1000,30197=>1000,30198=>1000,30199=>1000,30200=>1000,30201=>1000,30202=>1000,30203=>1000,30204=>1000,30205=>1000,30206=>1000,30207=>1000,30208=>1000,30209=>1000,30211=>1000,30213=>1000,30216=>1000,30217=>1000,30218=>1000,30219=>1000,30220=>1000,30221=>1000,30223=>1000,30224=>1000,30225=>1000,30227=>1000,30228=>1000,30229=>1000,30230=>1000,30231=>1000,30232=>1000,30233=>1000,30234=>1000,30235=>1000,30236=>1000,30237=>1000,30238=>1000,30239=>1000,30240=>1000,30241=>1000,30242=>1000,30243=>1000,30244=>1000,30245=>1000,30246=>1000,30247=>1000,30248=>1000,30249=>1000,30250=>1000,30251=>1000,30253=>1000,30255=>1000,30256=>1000,30257=>1000,30258=>1000,30259=>1000,30260=>1000,30261=>1000,30264=>1000,30266=>1000,30267=>1000,30268=>1000,30269=>1000,30270=>1000,30271=>1000,30272=>1000,30274=>1000,30275=>1000,30278=>1000,30279=>1000,30280=>1000,30281=>1000,30284=>1000,30285=>1000,30286=>1000,30288=>1000,30290=>1000,30291=>1000,30292=>1000,30294=>1000,30295=>1000,30296=>1000,30297=>1000,30298=>1000,30300=>1000,30302=>1000,30303=>1000,30304=>1000,30305=>1000,30306=>1000,30307=>1000,30308=>1000,30309=>1000,30311=>1000,30312=>1000,30313=>1000,30314=>1000,30315=>1000,30316=>1000,30317=>1000,30318=>1000,30319=>1000,30320=>1000,30321=>1000,30322=>1000,30325=>1000,30326=>1000,30328=>1000,30329=>1000,30330=>1000,30331=>1000,30332=>1000,30333=>1000,30334=>1000,30335=>1000,30336=>1000,30337=>1000,30338=>1000,30339=>1000,30340=>1000,30342=>1000,30343=>1000,30344=>1000,30345=>1000,30346=>1000,30347=>1000,30350=>1000,30351=>1000,30352=>1000,30353=>1000,30354=>1000,30355=>1000,30357=>1000,30358=>1000,30361=>1000,30362=>1000,30363=>1000,30364=>1000,30365=>1000,30366=>1000,30372=>1000,30374=>1000,30378=>1000,30379=>1000,30381=>1000,30382=>1000,30383=>1000,30384=>1000,30385=>1000,30386=>1000,30388=>1000,30389=>1000,30391=>1000,30392=>1000,30393=>1000,30394=>1000,30395=>1000,30397=>1000,30398=>1000,30399=>1000,30402=>1000,30403=>1000,30404=>1000,30405=>1000,30406=>1000,30408=>1000,30409=>1000,30410=>1000,30413=>1000,30414=>1000,30415=>1000,30416=>1000,30417=>1000,30418=>1000,30419=>1000,30420=>1000,30422=>1000,30423=>1000,30424=>1000,30426=>1000,30427=>1000,30428=>1000,30429=>1000,30430=>1000,30431=>1000,30433=>1000,30435=>1000,30436=>1000,30437=>1000,30438=>1000,30439=>1000,30441=>1000,30442=>1000,30444=>1000,30445=>1000,30446=>1000,30447=>1000,30448=>1000,30449=>1000,30450=>1000,30451=>1000,30452=>1000,30453=>1000,30455=>1000,30456=>1000,30457=>1000,30458=>1000,30459=>1000,30460=>1000,30462=>1000,30465=>1000,30467=>1000,30468=>1000,30469=>1000,30471=>1000,30472=>1000,30473=>1000,30474=>1000,30475=>1000,30476=>1000,30477=>1000,30480=>1000,30481=>1000,30482=>1000,30483=>1000,30485=>1000,30489=>1000,30490=>1000,30491=>1000,30493=>1000,30494=>1000,30495=>1000,30496=>1000,30498=>1000,30499=>1000,30500=>1000,30501=>1000,30502=>1000,30503=>1000,30504=>1000,30505=>1000,30509=>1000,30511=>1000,30513=>1000,30514=>1000,30515=>1000,30516=>1000,30517=>1000,30518=>1000,30519=>1000,30520=>1000,30521=>1000,30522=>1000,30523=>1000,30524=>1000,30525=>1000,30526=>1000,30528=>1000,30529=>1000,30531=>1000,30532=>1000,30533=>1000,30534=>1000,30535=>1000,30538=>1000,30539=>1000,30540=>1000,30541=>1000,30542=>1000,30543=>1000,30544=>1000,30545=>1000,30546=>1000,30548=>1000,30549=>1000,30550=>1000,30553=>1000,30554=>1000,30555=>1000,30556=>1000,30558=>1000,30559=>1000,30560=>1000,30561=>1000,30562=>1000,30563=>1000,30565=>1000,30566=>1000,30567=>1000,30568=>1000,30569=>1000,30570=>1000,30571=>1000,30572=>1000,30573=>1000,30574=>1000,30575=>1000,30585=>1000,30588=>1000,30589=>1000,30590=>1000,30591=>1000,30592=>1000,30593=>1000,30594=>1000,30595=>1000,30596=>1000,30597=>1000,30599=>1000,30600=>1000,30601=>1000,30603=>1000,30604=>1000,30605=>1000,30606=>1000,30607=>1000,30609=>1000,30610=>1000,30613=>1000,30615=>1000,30617=>1000,30618=>1000,30619=>1000,30620=>1000,30621=>1000,30622=>1000,30623=>1000,30624=>1000,30625=>1000,30626=>1000,30627=>1000,30629=>1000,30631=>1000,30632=>1000,30633=>1000,30634=>1000,30635=>1000,30636=>1000,30637=>1000,30640=>1000,30641=>1000,30642=>1000,30643=>1000,30644=>1000,30645=>1000,30646=>1000,30647=>1000,30649=>1000,30650=>1000,30651=>1000,30652=>1000,30653=>1000,30655=>1000,30658=>1000,30660=>1000,30663=>1000,30665=>1000,30666=>1000,30668=>1000,30669=>1000,30670=>1000,30671=>1000,30672=>1000,30675=>1000,30676=>1000,30677=>1000,30679=>1000,30680=>1000,30681=>1000,30682=>1000,30683=>1000,30684=>1000,30686=>1000,30688=>1000,30690=>1000,30691=>1000,30693=>1000,30695=>1000,30696=>1000,30697=>1000,30699=>1000,30700=>1000,30701=>1000,30702=>1000,30703=>1000,30704=>1000,30705=>1000,30706=>1000,30707=>1000,30710=>1000,30711=>1000,30712=>1000,30713=>1000,30714=>1000,30715=>1000,30716=>1000,30717=>1000,30718=>1000,30719=>1000,30720=>1000,30721=>1000,30722=>1000,30723=>1000,30725=>1000,30726=>1000,30729=>1000,30732=>1000,30733=>1000,30734=>1000,30735=>1000,30736=>1000,30737=>1000,30738=>1000,30739=>1000,30740=>1000,30741=>1000,30742=>1000,30743=>1000,30744=>1000,30746=>1000,30748=>1000,30749=>1000,30751=>1000,30752=>1000,30753=>1000,30754=>1000,30755=>1000,30757=>1000,30758=>1000,30759=>1000,30760=>1000,30761=>1000,30762=>1000,30763=>1000,30764=>1000,30765=>1000,30766=>1000,30767=>1000,30768=>1000,30769=>1000,30770=>1000,30771=>1000,30772=>1000,30773=>1000,30775=>1000,30776=>1000,30777=>1000,30778=>1000,30779=>1000,30780=>1000,30782=>1000,30783=>1000,30784=>1000,30787=>1000,30789=>1000,30791=>1000,30792=>1000,30793=>1000,30794=>1000,30796=>1000,30797=>1000,30798=>1000,30799=>1000,30800=>1000,30802=>1000,30805=>1000,30806=>1000,30807=>1000,30812=>1000,30813=>1000,30814=>1000,30816=>1000,30818=>1000,30820=>1000,30821=>1000,30824=>1000,30825=>1000,30826=>1000,30827=>1000,30828=>1000,30829=>1000,30830=>1000,30831=>1000,30832=>1000,30833=>1000,30834=>1000,30836=>1000,30839=>1000,30841=>1000,30842=>1000,30843=>1000,30844=>1000,30846=>1000,30847=>1000,30848=>1000,30849=>1000,30851=>1000,30852=>1000,30853=>1000,30854=>1000,30855=>1000,30857=>1000,30860=>1000,30861=>1000,30862=>1000,30863=>1000,30865=>1000,30867=>1000,30868=>1000,30869=>1000,30870=>1000,30871=>1000,30872=>1000,30873=>1000,30874=>1000,30875=>1000,30876=>1000,30878=>1000,30879=>1000,30880=>1000,30881=>1000,30882=>1000,30883=>1000,30884=>1000,30885=>1000,30887=>1000,30888=>1000,30889=>1000,30890=>1000,30891=>1000,30892=>1000,30893=>1000,30895=>1000,30896=>1000,30897=>1000,30898=>1000,30899=>1000,30900=>1000,30901=>1000,30905=>1000,30906=>1000,30907=>1000,30908=>1000,30910=>1000,30913=>1000,30915=>1000,30916=>1000,30917=>1000,30918=>1000,30920=>1000,30921=>1000,30922=>1000,30923=>1000,30924=>1000,30925=>1000,30926=>1000,30927=>1000,30928=>1000,30929=>1000,30932=>1000,30933=>1000,30937=>1000,30938=>1000,30939=>1000,30941=>1000,30942=>1000,30943=>1000,30944=>1000,30945=>1000,30946=>1000,30947=>1000,30949=>1000,30951=>1000,30952=>1000,30953=>1000,30954=>1000,30956=>1000,30957=>1000,30959=>1000,30962=>1000,30963=>1000,30964=>1000,30965=>1000,30967=>1000,30969=>1000,30970=>1000,30971=>1000,30972=>1000,30973=>1000,30974=>1000,30975=>1000,30977=>1000,30978=>1000,30980=>1000,30981=>1000,30983=>1000,30985=>1000,30988=>1000,30990=>1000,30992=>1000,30993=>1000,30994=>1000,30995=>1000,30996=>1000,30998=>1000,30999=>1000,31001=>1000,31003=>1000,31004=>1000,31005=>1000,31006=>1000,31009=>1000,31011=>1000,31012=>1000,31013=>1000,31014=>1000,31015=>1000,31016=>1000,31017=>1000,31018=>1000,31019=>1000,31020=>1000,31021=>1000,31023=>1000,31024=>1000,31025=>1000,31028=>1000,31029=>1000,31032=>1000,31033=>1000,31034=>1000,31035=>1000,31036=>1000,31037=>1000,31038=>1000,31039=>1000,31040=>1000,31041=>1000,31042=>1000,31044=>1000,31045=>1000,31046=>1000,31047=>1000,31048=>1000,31049=>1000,31050=>1000,31051=>1000,31052=>1000,31055=>1000,31056=>1000,31057=>1000,31058=>1000,31059=>1000,31060=>1000,31061=>1000,31062=>1000,31063=>1000,31066=>1000,31067=>1000,31068=>1000,31069=>1000,31070=>1000,31071=>1000,31072=>1000,31073=>1000,31074=>1000,31075=>1000,31076=>1000,31077=>1000,31079=>1000,31080=>1000,31081=>1000,31082=>1000,31083=>1000,31085=>1000,31087=>1000,31088=>1000,31090=>1000,31091=>1000,31092=>1000,31095=>1000,31096=>1000,31097=>1000,31098=>1000,31100=>1000,31101=>1000,31103=>1000,31104=>1000,31105=>1000,31106=>1000,31108=>1000,31109=>1000,31112=>1000,31114=>1000,31115=>1000,31117=>1000,31118=>1000,31119=>1000,31120=>1000,31121=>1000,31122=>1000,31123=>1000,31124=>1000,31125=>1000,31126=>1000,31127=>1000,31128=>1000,31130=>1000,31131=>1000,31132=>1000,31133=>1000,31136=>1000,31137=>1000,31138=>1000,31140=>1000,31142=>1000,31143=>1000,31144=>1000,31146=>1000,31147=>1000,31148=>1000,31149=>1000,31150=>1000,31152=>1000,31153=>1000,31154=>1000,31155=>1000,31156=>1000,31158=>1000,31159=>1000,31160=>1000,31161=>1000,31162=>1000,31163=>1000,31165=>1000,31166=>1000,31167=>1000,31168=>1000,31169=>1000,31171=>1000,31173=>1000,31174=>1000,31176=>1000,31177=>1000,31178=>1000,31179=>1000,31181=>1000,31182=>1000,31183=>1000,31185=>1000,31186=>1000,31189=>1000,31190=>1000,31192=>1000,31196=>1000,31197=>1000,31198=>1000,31199=>1000,31200=>1000,31201=>1000,31203=>1000,31204=>1000,31206=>1000,31207=>1000,31209=>1000,31210=>1000,31211=>1000,31212=>1000,31213=>1000,31214=>1000,31215=>1000,31216=>1000,31222=>1000,31223=>1000,31224=>1000,31226=>1000,31227=>1000,31229=>1000,31232=>1000,31234=>1000,31235=>1000,31236=>1000,31237=>1000,31238=>1000,31240=>1000,31242=>1000,31243=>1000,31244=>1000,31245=>1000,31246=>1000,31248=>1000,31249=>1000,31250=>1000,31251=>1000,31252=>1000,31253=>1000,31255=>1000,31256=>1000,31257=>1000,31258=>1000,31259=>1000,31260=>1000,31262=>1000,31263=>1000,31264=>1000,31266=>1000,31267=>1000,31270=>1000,31272=>1000,31275=>1000,31278=>1000,31279=>1000,31280=>1000,31281=>1000,31282=>1000,31283=>1000,31286=>1000,31287=>1000,31289=>1000,31291=>1000,31292=>1000,31293=>1000,31294=>1000,31295=>1000,31296=>1000,31298=>1000,31299=>1000,31300=>1000,31302=>1000,31303=>1000,31304=>1000,31305=>1000,31306=>1000,31307=>1000,31308=>1000,31309=>1000,31310=>1000,31311=>1000,31312=>1000,31313=>1000,31316=>1000,31318=>1000,31319=>1000,31320=>1000,31322=>1000,31323=>1000,31324=>1000,31327=>1000,31328=>1000,31329=>1000,31330=>1000,31331=>1000,31335=>1000,31336=>1000,31337=>1000,31339=>1000,31340=>1000,31341=>1000,31342=>1000,31344=>1000,31345=>1000,31348=>1000,31349=>1000,31350=>1000,31351=>1000,31352=>1000,31353=>1000,31354=>1000,31355=>1000,31357=>1000,31358=>1000,31359=>1000,31360=>1000,31361=>1000,31363=>1000,31364=>1000,31365=>1000,31366=>1000,31367=>1000,31368=>1000,31369=>1000,31370=>1000,31371=>1000,31372=>1000,31373=>1000,31375=>1000,31376=>1000,31377=>1000,31378=>1000,31379=>1000,31380=>1000,31381=>1000,31382=>1000,31383=>1000,31384=>1000,31385=>1000,31388=>1000,31389=>1000,31390=>1000,31391=>1000,31392=>1000,31394=>1000,31395=>1000,31397=>1000,31398=>1000,31400=>1000,31401=>1000,31402=>1000,31403=>1000,31404=>1000,31405=>1000,31406=>1000,31407=>1000,31408=>1000,31409=>1000,31410=>1000,31411=>1000,31412=>1000,31413=>1000,31414=>1000,31415=>1000,31416=>1000,31418=>1000,31422=>1000,31423=>1000,31424=>1000,31425=>1000,31427=>1000,31428=>1000,31429=>1000,31431=>1000,31432=>1000,31434=>1000,31435=>1000,31437=>1000,31439=>1000,31441=>1000,31442=>1000,31443=>1000,31445=>1000,31446=>1000,31447=>1000,31448=>1000,31449=>1000,31450=>1000,31452=>1000,31453=>1000,31454=>1000,31455=>1000,31456=>1000,31457=>1000,31458=>1000,31459=>1000,31460=>1000,31461=>1000,31462=>1000,31463=>1000,31466=>1000,31467=>1000,31469=>1000,31470=>1000,31471=>1000,31472=>1000,31478=>1000,31479=>1000,31480=>1000,31481=>1000,31482=>1000,31483=>1000,31485=>1000,31487=>1000,31488=>1000,31489=>1000,31490=>1000,31491=>1000,31492=>1000,31493=>1000,31494=>1000,31496=>1000,31497=>1000,31498=>1000,31499=>1000,31502=>1000,31503=>1000,31504=>1000,31505=>1000,31506=>1000,31507=>1000,31508=>1000,31509=>1000,31512=>1000,31513=>1000,31514=>1000,31515=>1000,31517=>1000,31518=>1000,31520=>1000,31522=>1000,31523=>1000,31524=>1000,31525=>1000,31526=>1000,31528=>1000,31530=>1000,31531=>1000,31532=>1000,31533=>1000,31534=>1000,31535=>1000,31536=>1000,31537=>1000,31538=>1000,31539=>1000,31540=>1000,31541=>1000,31542=>1000,31544=>1000,31545=>1000,31546=>1000,31547=>1000,31548=>1000,31550=>1000,31552=>1000,31556=>1000,31557=>1000,31558=>1000,31559=>1000,31560=>1000,31561=>1000,31562=>1000,31563=>1000,31564=>1000,31565=>1000,31566=>1000,31567=>1000,31568=>1000,31569=>1000,31570=>1000,31572=>1000,31574=>1000,31576=>1000,31578=>1000,31579=>1000,31581=>1000,31584=>1000,31585=>1000,31586=>1000,31587=>1000,31588=>1000,31589=>1000,31590=>1000,31591=>1000,31593=>1000,31596=>1000,31597=>1000,31598=>1000,31600=>1000,31601=>1000,31602=>1000,31603=>1000,31604=>1000,31605=>1000,31606=>1000,31607=>1000,31608=>1000,31609=>1000,31610=>1000,31611=>1000,31613=>1000,31614=>1000,31616=>1000,31618=>1000,31620=>1000,31621=>1000,31622=>1000,31623=>1000,31624=>1000,31626=>1000,31627=>1000,31628=>1000,31629=>1000,31630=>1000,31631=>1000,31632=>1000,31633=>1000,31634=>1000,31636=>1000,31637=>1000,31638=>1000,31639=>1000,31640=>1000,31641=>1000,31642=>1000,31643=>1000,31644=>1000,31645=>1000,31646=>1000,31647=>1000,31648=>1000,31649=>1000,31650=>1000,31652=>1000,31654=>1000,31655=>1000,31656=>1000,31657=>1000,31658=>1000,31659=>1000,31660=>1000,31661=>1000,31663=>1000,31665=>1000,31668=>1000,31669=>1000,31671=>1000,31672=>1000,31673=>1000,31678=>1000,31680=>1000,31681=>1000,31684=>1000,31686=>1000,31687=>1000,31689=>1000,31690=>1000,31691=>1000,31692=>1000,31694=>1000,31695=>1000,31697=>1000,31698=>1000,31699=>1000,31700=>1000,31701=>1000,31704=>1000,31705=>1000,31706=>1000,31707=>1000,31708=>1000,31709=>1000,31710=>1000,31711=>1000,31712=>1000,31713=>1000,31714=>1000,31715=>1000,31716=>1000,31717=>1000,31718=>1000,31719=>1000,31720=>1000,31721=>1000,31722=>1000,31723=>1000,31725=>1000,31726=>1000,31728=>1000,31729=>1000,31730=>1000,31731=>1000,31732=>1000,31734=>1000,31735=>1000,31736=>1000,31737=>1000,31739=>1000,31740=>1000,31741=>1000,31742=>1000,31743=>1000,31744=>1000,31745=>1000,31746=>1000,31747=>1000,31749=>1000,31750=>1000,31751=>1000,31753=>1000,31754=>1000,31755=>1000,31756=>1000,31757=>1000,31758=>1000,31759=>1000,31760=>1000,31761=>1000,31762=>1000,31763=>1000,31764=>1000,31766=>1000,31767=>1000,31769=>1000,31772=>1000,31773=>1000,31774=>1000,31775=>1000,31776=>1000,31777=>1000,31778=>1000,31779=>1000,31781=>1000,31782=>1000,31783=>1000,31784=>1000,31785=>1000,31786=>1000,31787=>1000,31788=>1000,31789=>1000,31792=>1000,31795=>1000,31799=>1000,31800=>1000,31801=>1000,31803=>1000,31804=>1000,31805=>1000,31806=>1000,31807=>1000,31808=>1000,31809=>1000,31811=>1000,31813=>1000,31815=>1000,31816=>1000,31817=>1000,31818=>1000,31820=>1000,31821=>1000,31823=>1000,31824=>1000,31827=>1000,31828=>1000,31830=>1000,31831=>1000,31832=>1000,31833=>1000,31834=>1000,31835=>1000,31836=>1000,31839=>1000,31840=>1000,31843=>1000,31844=>1000,31845=>1000,31846=>1000,31847=>1000,31849=>1000,31850=>1000,31851=>1000,31852=>1000,31854=>1000,31855=>1000,31858=>1000,31859=>1000,31860=>1000,31861=>1000,31864=>1000,31865=>1000,31866=>1000,31867=>1000,31868=>1000,31869=>1000,31870=>1000,31871=>1000,31872=>1000,31873=>1000,31874=>1000,31875=>1000,31876=>1000,31877=>1000,31880=>1000,31881=>1000,31882=>1000,31883=>1000,31884=>1000,31885=>1000,31888=>1000,31889=>1000,31890=>1000,31892=>1000,31893=>1000,31894=>1000,31895=>1000,31896=>1000,31899=>1000,31900=>1000,31901=>1000,31902=>1000,31903=>1000,31905=>1000,31906=>1000,31907=>1000,31908=>1000,31909=>1000,31911=>1000,31912=>1000,31914=>1000,31915=>1000,31917=>1000,31918=>1000,31919=>1000,31921=>1000,31922=>1000,31923=>1000,31924=>1000,31925=>1000,31929=>1000,31930=>1000,31931=>1000,31932=>1000,31933=>1000,31934=>1000,31935=>1000,31936=>1000,31937=>1000,31938=>1000,31941=>1000,31943=>1000,31944=>1000,31946=>1000,31947=>1000,31948=>1000,31949=>1000,31950=>1000,31952=>1000,31953=>1000,31954=>1000,31956=>1000,31957=>1000,31958=>1000,31959=>1000,31960=>1000,31961=>1000,31964=>1000,31965=>1000,31966=>1000,31967=>1000,31968=>1000,31970=>1000,31975=>1000,31976=>1000,31978=>1000,31980=>1000,31982=>1000,31983=>1000,31984=>1000,31985=>1000,31986=>1000,31988=>1000,31990=>1000,31991=>1000,31992=>1000,31994=>1000,31995=>1000,31997=>1000,31998=>1000,32000=>1000,32001=>1000,32002=>1000,32003=>1000,32004=>1000,32005=>1000,32006=>1000,32007=>1000,32008=>1000,32009=>1000,32010=>1000,32011=>1000,32012=>1000,32013=>1000,32014=>1000,32015=>1000,32016=>1000,32017=>1000,32018=>1000,32019=>1000,32020=>1000,32021=>1000,32022=>1000,32023=>1000,32024=>1000,32025=>1000,32026=>1000,32027=>1000,32028=>1000,32029=>1000,32030=>1000,32031=>1000,32032=>1000,32033=>1000,32034=>1000,32039=>1000,32040=>1000,32041=>1000,32043=>1000,32044=>1000,32046=>1000,32047=>1000,32048=>1000,32049=>1000,32050=>1000,32051=>1000,32053=>1000,32054=>1000,32056=>1000,32057=>1000,32058=>1000,32059=>1000,32060=>1000,32061=>1000,32062=>1000,32063=>1000,32064=>1000,32065=>1000,32066=>1000,32067=>1000,32068=>1000,32069=>1000,32070=>1000,32071=>1000,32072=>1000,32074=>1000,32075=>1000,32076=>1000,32078=>1000,32079=>1000,32080=>1000,32081=>1000,32082=>1000,32083=>1000,32084=>1000,32085=>1000,32086=>1000,32088=>1000,32091=>1000,32092=>1000,32094=>1000,32095=>1000,32097=>1000,32098=>1000,32099=>1000,32102=>1000,32103=>1000,32104=>1000,32105=>1000,32106=>1000,32107=>1000,32109=>1000,32110=>1000,32111=>1000,32112=>1000,32113=>1000,32114=>1000,32115=>1000,32117=>1000,32118=>1000,32119=>1000,32121=>1000,32122=>1000,32123=>1000,32124=>1000,32125=>1000,32127=>1000,32128=>1000,32129=>1000,32131=>1000,32132=>1000,32133=>1000,32134=>1000,32136=>1000,32137=>1000,32140=>1000,32141=>1000,32142=>1000,32143=>1000,32145=>1000,32146=>1000,32147=>1000,32148=>1000,32150=>1000,32153=>1000,32154=>1000,32155=>1000,32156=>1000,32157=>1000,32158=>1000,32159=>1000,32160=>1000,32161=>1000,32162=>1000,32163=>1000,32166=>1000,32167=>1000,32169=>1000,32170=>1000,32171=>1000,32172=>1000,32173=>1000,32174=>1000,32175=>1000,32176=>1000,32177=>1000,32178=>1000,32180=>1000,32181=>1000,32183=>1000,32184=>1000,32185=>1000,32186=>1000,32187=>1000,32188=>1000,32189=>1000,32190=>1000,32191=>1000,32192=>1000,32193=>1000,32194=>1000,32196=>1000,32197=>1000,32198=>1000,32199=>1000,32201=>1000,32202=>1000,32203=>1000,32204=>1000,32206=>1000,32207=>1000,32209=>1000,32210=>1000,32213=>1000,32214=>1000,32215=>1000,32216=>1000,32217=>1000,32218=>1000,32219=>1000,32220=>1000,32221=>1000,32222=>1000,32223=>1000,32224=>1000,32225=>1000,32227=>1000,32228=>1000,32230=>1000,32231=>1000,32232=>1000,32233=>1000,32234=>1000,32236=>1000,32238=>1000,32239=>1000,32240=>1000,32241=>1000,32242=>1000,32243=>1000,32244=>1000,32246=>1000,32247=>1000,32249=>1000,32250=>1000,32251=>1000,32257=>1000,32259=>1000,32260=>1000,32261=>1000,32264=>1000,32265=>1000,32266=>1000,32267=>1000,32268=>1000,32269=>1000,32270=>1000,32271=>1000,32272=>1000,32273=>1000,32274=>1000,32275=>1000,32276=>1000,32277=>1000,32278=>1000,32279=>1000,32282=>1000,32283=>1000,32284=>1000,32285=>1000,32286=>1000,32287=>1000,32288=>1000,32289=>1000,32290=>1000,32291=>1000,32292=>1000,32293=>1000,32294=>1000,32297=>1000,32298=>1000,32299=>1000,32301=>1000,32302=>1000,32303=>1000,32304=>1000,32305=>1000,32306=>1000,32307=>1000,32308=>1000,32309=>1000,32310=>1000,32311=>1000,32312=>1000,32313=>1000,32314=>1000,32315=>1000,32316=>1000,32317=>1000,32318=>1000,32319=>1000,32320=>1000,32321=>1000,32322=>1000,32323=>1000,32324=>1000,32325=>1000,32326=>1000,32327=>1000,32328=>1000,32329=>1000,32330=>1000,32331=>1000,32332=>1000,32333=>1000,32336=>1000,32337=>1000,32338=>1000,32339=>1000,32340=>1000,32341=>1000,32342=>1000,32343=>1000,32344=>1000,32345=>1000,32346=>1000,32348=>1000,32349=>1000,32350=>1000,32351=>1000,32352=>1000,32353=>1000,32354=>1000,32355=>1000,32358=>1000,32359=>1000,32360=>1000,32361=>1000,32362=>1000,32363=>1000,32365=>1000,32367=>1000,32368=>1000,32370=>1000,32371=>1000,32372=>1000,32373=>1000,32374=>1000,32375=>1000,32376=>1000,32377=>1000,32378=>1000,32379=>1000,32380=>1000,32381=>1000,32382=>1000,32383=>1000,32384=>1000,32385=>1000,32386=>1000,32387=>1000,32390=>1000,32391=>1000,32392=>1000,32393=>1000,32394=>1000,32395=>1000,32396=>1000,32397=>1000,32398=>1000,32399=>1000,32400=>1000,32401=>1000,32402=>1000,32403=>1000,32404=>1000,32405=>1000,32406=>1000,32407=>1000,32408=>1000,32409=>1000,32410=>1000,32411=>1000,32412=>1000,32415=>1000,32416=>1000,32417=>1000,32418=>1000,32419=>1000,32420=>1000,32421=>1000,32422=>1000,32423=>1000,32424=>1000,32425=>1000,32426=>1000,32427=>1000,32428=>1000,32429=>1000,32431=>1000,32432=>1000,32433=>1000,32434=>1000,32435=>1000,32437=>1000,32438=>1000,32439=>1000,32440=>1000,32441=>1000,32442=>1000,32445=>1000,32446=>1000,32447=>1000,32448=>1000,32449=>1000,32450=>1000,32451=>1000,32452=>1000,32453=>1000,32454=>1000,32455=>1000,32456=>1000,32457=>1000,32458=>1000,32459=>1000,32460=>1000,32461=>1000,32462=>1000,32463=>1000,32464=>1000,32465=>1000,32466=>1000,32467=>1000,32468=>1000,32469=>1000,32471=>1000,32472=>1000,32473=>1000,32474=>1000,32475=>1000,32476=>1000,32477=>1000,32478=>1000,32479=>1000,32480=>1000,32481=>1000,32482=>1000,32483=>1000,32485=>1000,32486=>1000,32487=>1000,32488=>1000,32489=>1000,32490=>1000,32491=>1000,32493=>1000,32494=>1000,32495=>1000,32496=>1000,32497=>1000,32498=>1000,32499=>1000,32500=>1000,32501=>1000,32502=>1000,32503=>1000,32504=>1000,32506=>1000,32507=>1000,32508=>1000,32509=>1000,32510=>1000,32511=>1000,32512=>1000,32513=>1000,32514=>1000,32515=>1000,32516=>1000,32517=>1000,32518=>1000,32519=>1000,32520=>1000,32521=>1000,32523=>1000,32524=>1000,32525=>1000,32526=>1000,32527=>1000,32529=>1000,32530=>1000,32531=>1000,32532=>1000,32533=>1000,32534=>1000,32535=>1000,32536=>1000,32537=>1000,32538=>1000,32539=>1000,32540=>1000,32541=>1000,32543=>1000,32544=>1000,32545=>1000,32546=>1000,32547=>1000,32548=>1000,32549=>1000,32550=>1000,32551=>1000,32552=>1000,32553=>1000,32554=>1000,32555=>1000,32556=>1000,32557=>1000,32558=>1000,32559=>1000,32560=>1000,32561=>1000,32562=>1000,32563=>1000,32564=>1000,32565=>1000,32566=>1000,32568=>1000,32569=>1000,32570=>1000,32573=>1000,32574=>1000,32575=>1000,32578=>1000,32579=>1000,32580=>1000,32581=>1000,32583=>1000,32584=>1000,32586=>1000,32587=>1000,32588=>1000,32589=>1000,32590=>1000,32591=>1000,32592=>1000,32593=>1000,32596=>1000,32597=>1000,32599=>1000,32600=>1000,32602=>1000,32603=>1000,32604=>1000,32605=>1000,32606=>1000,32607=>1000,32608=>1000,32609=>1000,32610=>1000,32611=>1000,32613=>1000,32614=>1000,32615=>1000,32616=>1000,32617=>1000,32618=>1000,32619=>1000,32620=>1000,32621=>1000,32622=>1000,32624=>1000,32625=>1000,32626=>1000,32627=>1000,32628=>1000,32629=>1000,32630=>1000,32631=>1000,32632=>1000,32633=>1000,32634=>1000,32635=>1000,32636=>1000,32637=>1000,32638=>1000,32639=>1000,32641=>1000,32642=>1000,32643=>1000,32645=>1000,32646=>1000,32647=>1000,32648=>1000,32649=>1000,32650=>1000,32651=>1000,32652=>1000,32653=>1000,32654=>1000,32657=>1000,32658=>1000,32660=>1000,32661=>1000,32662=>1000,32666=>1000,32667=>1000,32668=>1000,32669=>1000,32670=>1000,32671=>1000,32672=>1000,32673=>1000,32674=>1000,32675=>1000,32676=>1000,32677=>1000,32678=>1000,32679=>1000,32680=>1000,32681=>1000,32684=>1000,32685=>1000,32686=>1000,32687=>1000,32688=>1000,32689=>1000,32690=>1000,32691=>1000,32693=>1000,32694=>1000,32695=>1000,32696=>1000,32697=>1000,32698=>1000,32699=>1000,32700=>1000,32701=>1000,32702=>1000,32703=>1000,32704=>1000,32705=>1000,32706=>1000,32707=>1000,32709=>1000,32710=>1000,32711=>1000,32713=>1000,32714=>1000,32715=>1000,32716=>1000,32717=>1000,32718=>1000,32719=>1000,32720=>1000,32721=>1000,32722=>1000,32724=>1000,32725=>1000,32727=>1000,32728=>1000,32731=>1000,32732=>1000,32734=>1000,32735=>1000,32736=>1000,32737=>1000,32738=>1000,32739=>1000,32741=>1000,32742=>1000,32744=>1000,32745=>1000,32746=>1000,32747=>1000,32748=>1000,32749=>1000,32750=>1000,32751=>1000,32752=>1000,32753=>1000,32754=>1000,32755=>1000,32756=>1000,32757=>1000,32759=>1000,32760=>1000,32761=>1000,32763=>1000,32764=>1000,32765=>1000,32766=>1000,32767=>1000,32768=>1000,32769=>1000,32771=>1000,32772=>1000,32773=>1000,32774=>1000,32775=>1000,32777=>1000,32779=>1000,32780=>1000,32781=>1000,32782=>1000,32783=>1000,32784=>1000,32785=>1000,32786=>1000,32788=>1000,32789=>1000,32790=>1000,32791=>1000,32792=>1000,32793=>1000,32795=>1000,32796=>1000,32798=>1000,32799=>1000,32800=>1000,32801=>1000,32802=>1000,32804=>1000,32805=>1000,32806=>1000,32807=>1000,32808=>1000,32809=>1000,32810=>1000,32812=>1000,32813=>1000,32816=>1000,32817=>1000,32819=>1000,32820=>1000,32821=>1000,32822=>1000,32823=>1000,32824=>1000,32825=>1000,32827=>1000,32829=>1000,32830=>1000,32831=>1000,32834=>1000,32835=>1000,32838=>1000,32839=>1000,32840=>1000,32842=>1000,32843=>1000,32844=>1000,32845=>1000,32847=>1000,32848=>1000,32849=>1000,32850=>1000,32852=>1000,32854=>1000,32856=>1000,32858=>1000,32860=>1000,32861=>1000,32862=>1000,32863=>1000,32865=>1000,32866=>1000,32868=>1000,32871=>1000,32872=>1000,32873=>1000,32874=>1000,32876=>1000,32879=>1000,32880=>1000,32881=>1000,32882=>1000,32883=>1000,32884=>1000,32885=>1000,32886=>1000,32887=>1000,32888=>1000,32889=>1000,32893=>1000,32894=>1000,32895=>1000,32896=>1000,32898=>1000,32899=>1000,32900=>1000,32901=>1000,32902=>1000,32903=>1000,32905=>1000,32906=>1000,32907=>1000,32908=>1000,32911=>1000,32912=>1000,32914=>1000,32915=>1000,32917=>1000,32918=>1000,32920=>1000,32921=>1000,32922=>1000,32923=>1000,32924=>1000,32925=>1000,32927=>1000,32928=>1000,32929=>1000,32930=>1000,32931=>1000,32932=>1000,32933=>1000,32937=>1000,32938=>1000,32939=>1000,32940=>1000,32941=>1000,32942=>1000,32943=>1000,32945=>1000,32946=>1000,32948=>1000,32949=>1000,32951=>1000,32952=>1000,32954=>1000,32956=>1000,32957=>1000,32958=>1000,32959=>1000,32960=>1000,32961=>1000,32962=>1000,32963=>1000,32964=>1000,32965=>1000,32966=>1000,32967=>1000,32968=>1000,32969=>1000,32970=>1000,32972=>1000,32973=>1000,32974=>1000,32975=>1000,32976=>1000,32977=>1000,32980=>1000,32981=>1000,32982=>1000,32983=>1000,32984=>1000,32985=>1000,32986=>1000,32987=>1000,32988=>1000,32989=>1000,32990=>1000,32992=>1000,32993=>1000,32995=>1000,32996=>1000,32997=>1000,32998=>1000,32999=>1000,33000=>1000,33001=>1000,33002=>1000,33003=>1000,33004=>1000,33005=>1000,33007=>1000,33008=>1000,33009=>1000,33010=>1000,33011=>1000,33012=>1000,33013=>1000,33014=>1000,33016=>1000,33017=>1000,33018=>1000,33019=>1000,33020=>1000,33021=>1000,33022=>1000,33024=>1000,33025=>1000,33026=>1000,33029=>1000,33030=>1000,33031=>1000,33032=>1000,33033=>1000,33034=>1000,33037=>1000,33038=>1000,33039=>1000,33040=>1000,33041=>1000,33042=>1000,33043=>1000,33044=>1000,33045=>1000,33046=>1000,33048=>1000,33049=>1000,33050=>1000,33051=>1000,33053=>1000,33054=>1000,33055=>1000,33057=>1000,33058=>1000,33059=>1000,33060=>1000,33061=>1000,33063=>1000,33065=>1000,33067=>1000,33068=>1000,33069=>1000,33071=>1000,33072=>1000,33073=>1000,33074=>1000,33075=>1000,33078=>1000,33080=>1000,33081=>1000,33082=>1000,33085=>1000,33086=>1000,33091=>1000,33092=>1000,33094=>1000,33095=>1000,33096=>1000,33098=>1000,33099=>1000,33100=>1000,33101=>1000,33102=>1000,33103=>1000,33104=>1000,33105=>1000,33106=>1000,33107=>1000,33108=>1000,33109=>1000,33113=>1000,33114=>1000,33115=>1000,33116=>1000,33118=>1000,33119=>1000,33120=>1000,33121=>1000,33122=>1000,33124=>1000,33125=>1000,33126=>1000,33127=>1000,33129=>1000,33131=>1000,33133=>1000,33134=>1000,33135=>1000,33136=>1000,33137=>1000,33138=>1000,33139=>1000,33140=>1000,33142=>1000,33143=>1000,33144=>1000,33145=>1000,33146=>1000,33147=>1000,33148=>1000,33149=>1000,33150=>1000,33151=>1000,33152=>1000,33154=>1000,33155=>1000,33158=>1000,33159=>1000,33160=>1000,33161=>1000,33162=>1000,33163=>1000,33164=>1000,33165=>1000,33167=>1000,33169=>1000,33171=>1000,33173=>1000,33175=>1000,33176=>1000,33177=>1000,33178=>1000,33179=>1000,33180=>1000,33181=>1000,33182=>1000,33183=>1000,33184=>1000,33186=>1000,33187=>1000,33188=>1000,33190=>1000,33191=>1000,33192=>1000,33193=>1000,33194=>1000,33195=>1000,33196=>1000,33198=>1000,33200=>1000,33201=>1000,33202=>1000,33203=>1000,33204=>1000,33205=>1000,33207=>1000,33208=>1000,33209=>1000,33210=>1000,33211=>1000,33212=>1000,33213=>1000,33214=>1000,33215=>1000,33216=>1000,33217=>1000,33218=>1000,33219=>1000,33220=>1000,33221=>1000,33222=>1000,33223=>1000,33224=>1000,33225=>1000,33226=>1000,33228=>1000,33229=>1000,33231=>1000,33232=>1000,33233=>1000,33234=>1000,33235=>1000,33237=>1000,33239=>1000,33240=>1000,33241=>1000,33242=>1000,33243=>1000,33245=>1000,33246=>1000,33247=>1000,33248=>1000,33249=>1000,33250=>1000,33251=>1000,33253=>1000,33254=>1000,33255=>1000,33256=>1000,33257=>1000,33258=>1000,33260=>1000,33261=>1000,33262=>1000,33266=>1000,33267=>1000,33268=>1000,33271=>1000,33272=>1000,33273=>1000,33274=>1000,33275=>1000,33276=>1000,33278=>1000,33279=>1000,33280=>1000,33281=>1000,33282=>1000,33284=>1000,33285=>1000,33286=>1000,33287=>1000,33288=>1000,33289=>1000,33290=>1000,33291=>1000,33292=>1000,33293=>1000,33294=>1000,33296=>1000,33297=>1000,33298=>1000,33300=>1000,33301=>1000,33302=>1000,33303=>1000,33304=>1000,33307=>1000,33308=>1000,33309=>1000,33310=>1000,33311=>1000,33312=>1000,33313=>1000,33314=>1000,33315=>1000,33317=>1000,33320=>1000,33321=>1000,33322=>1000,33323=>1000,33324=>1000,33325=>1000,33326=>1000,33327=>1000,33328=>1000,33329=>1000,33330=>1000,33331=>1000,33332=>1000,33333=>1000,33334=>1000,33335=>1000,33336=>1000,33337=>1000,33338=>1000,33339=>1000,33340=>1000,33341=>1000,33342=>1000,33343=>1000,33344=>1000,33346=>1000,33348=>1000,33349=>1000,33351=>1000,33353=>1000,33355=>1000,33358=>1000,33359=>1000,33360=>1000,33361=>1000,33362=>1000,33363=>1000,33365=>1000,33366=>1000,33367=>1000,33368=>1000,33369=>1000,33370=>1000,33371=>1000,33372=>1000,33373=>1000,33374=>1000,33375=>1000,33377=>1000,33378=>1000,33379=>1000,33380=>1000,33382=>1000,33384=>1000,33385=>1000,33386=>1000,33387=>1000,33388=>1000,33389=>1000,33390=>1000,33391=>1000,33392=>1000,33393=>1000,33394=>1000,33395=>1000,33396=>1000,33397=>1000,33398=>1000,33399=>1000,33400=>1000,33401=>1000,33402=>1000,33404=>1000,33405=>1000,33406=>1000,33407=>1000,33408=>1000,33410=>1000,33411=>1000,33412=>1000,33413=>1000,33416=>1000,33418=>1000,33419=>1000,33421=>1000,33422=>1000,33423=>1000,33424=>1000,33425=>1000,33426=>1000,33427=>1000,33428=>1000,33431=>1000,33432=>1000,33433=>1000,33434=>1000,33435=>1000,33436=>1000,33437=>1000,33438=>1000,33439=>1000,33440=>1000,33441=>1000,33442=>1000,33443=>1000,33444=>1000,33445=>1000,33446=>1000,33447=>1000,33448=>1000,33449=>1000,33450=>1000,33451=>1000,33452=>1000,33453=>1000,33454=>1000,33455=>1000,33456=>1000,33457=>1000,33459=>1000,33460=>1000,33461=>1000,33462=>1000,33463=>1000,33464=>1000,33465=>1000,33466=>1000,33467=>1000,33468=>1000,33469=>1000,33470=>1000,33471=>1000,33472=>1000,33473=>1000,33474=>1000,33475=>1000,33476=>1000,33477=>1000,33479=>1000,33480=>1000,33482=>1000,33483=>1000,33484=>1000,33485=>1000,33486=>1000,33487=>1000,33489=>1000,33490=>1000,33491=>1000,33492=>1000,33493=>1000,33494=>1000,33495=>1000,33496=>1000,33497=>1000,33499=>1000,33500=>1000,33502=>1000,33503=>1000,33504=>1000,33505=>1000,33507=>1000,33508=>1000,33509=>1000,33510=>1000,33511=>1000,33512=>1000,33514=>1000,33515=>1000,33516=>1000,33517=>1000,33519=>1000,33520=>1000,33521=>1000,33522=>1000,33523=>1000,33524=>1000,33525=>1000,33526=>1000,33527=>1000,33529=>1000,33530=>1000,33531=>1000,33533=>1000,33534=>1000,33536=>1000,33537=>1000,33538=>1000,33539=>1000,33540=>1000,33541=>1000,33542=>1000,33543=>1000,33544=>1000,33545=>1000,33548=>1000,33549=>1000,33550=>1000,33551=>1000,33553=>1000,33556=>1000,33557=>1000,33558=>1000,33559=>1000,33560=>1000,33561=>1000,33562=>1000,33563=>1000,33564=>1000,33566=>1000,33568=>1000,33570=>1000,33571=>1000,33572=>1000,33573=>1000,33574=>1000,33575=>1000,33576=>1000,33577=>1000,33578=>1000,33579=>1000,33580=>1000,33581=>1000,33583=>1000,33585=>1000,33586=>1000,33587=>1000,33588=>1000,33589=>1000,33590=>1000,33591=>1000,33592=>1000,33593=>1000,33594=>1000,33595=>1000,33596=>1000,33599=>1000,33600=>1000,33601=>1000,33602=>1000,33603=>1000,33604=>1000,33605=>1000,33606=>1000,33607=>1000,33608=>1000,33609=>1000,33610=>1000,33611=>1000,33612=>1000,33613=>1000,33614=>1000,33615=>1000,33616=>1000,33617=>1000,33618=>1000,33619=>1000,33620=>1000,33622=>1000,33624=>1000,33626=>1000,33627=>1000,33628=>1000,33630=>1000,33631=>1000,33632=>1000,33633=>1000,33634=>1000,33635=>1000,33636=>1000,33637=>1000,33638=>1000,33639=>1000,33640=>1000,33641=>1000,33642=>1000,33643=>1000,33644=>1000,33645=>1000,33646=>1000,33647=>1000,33651=>1000,33652=>1000,33653=>1000,33654=>1000,33655=>1000,33656=>1000,33658=>1000,33659=>1000,33660=>1000,33661=>1000,33662=>1000,33663=>1000,33665=>1000,33667=>1000,33669=>1000,33