Slider by Nivo – Responsive WordPress Image Slider - Version 2.1.1

Version Description

  • 2018-01-05
Download this release

Release Info

Developer codeinwp
Plugin Icon 128x128 Slider by Nivo – Responsive WordPress Image Slider
Version 2.1.1
Comparing to
See all releases

Code changes from version 2.1.0 to 2.1.1

Files changed (52) hide show
  1. CHANGELOG.md +4 -2
  2. assets/css/admin.css +0 -1
  3. assets/css/nivo-slider.css +1 -2
  4. assets/themes/default/default.css +0 -1
  5. includes/admin/libs/class-nivo-core-admin-ajax.php +5 -3
  6. includes/admin/libs/class-nivo-core-admin-edit.php +63 -41
  7. includes/admin/libs/class-nivo-core-admin-images.php +18 -18
  8. includes/admin/libs/class-nivo-core-shortcode.php +7 -5
  9. includes/admin/libs/class-nivo-slider-widget.php +19 -17
  10. includes/class-nivo-slider.php +1 -1
  11. includes/layouts/css/upsell.css +0 -3
  12. languages/nivo-slider.pot +87 -258
  13. nivo-slider-lite.php +7 -5
  14. package-lock.json +5646 -0
  15. readme.md +6 -0
  16. readme.txt +6 -0
  17. themeisle-hash.json +1 -0
  18. vendor/autoload.php +0 -7
  19. vendor/autoload_52.php +0 -7
  20. vendor/codeinwp/themeisle-sdk/LICENSE +0 -674
  21. vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-feedback-deactivate.php +0 -470
  22. vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-feedback-factory.php +0 -50
  23. vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-feedback-review.php +0 -185
  24. vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-feedback.php +0 -90
  25. vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-licenser.php +0 -710
  26. vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-loader.php +0 -88
  27. vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-logger.php +0 -211
  28. vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-notification-manager.php +0 -119
  29. vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-product.php +0 -401
  30. vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-widget-dashboard-blog.php +0 -374
  31. vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-widget.php +0 -50
  32. vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-widgets-factory.php +0 -37
  33. vendor/codeinwp/themeisle-sdk/composer.json +0 -24
  34. vendor/codeinwp/themeisle-sdk/index.php +0 -5
  35. vendor/codeinwp/themeisle-sdk/load.php +0 -35
  36. vendor/codeinwp/themeisle-sdk/start.php +0 -35
  37. vendor/composer/ClassLoader.php +0 -413
  38. vendor/composer/ClassLoader52.php +0 -271
  39. vendor/composer/LICENSE +0 -21
  40. vendor/composer/autoload_classmap.php +0 -9
  41. vendor/composer/autoload_files.php +0 -10
  42. vendor/composer/autoload_namespaces.php +0 -10
  43. vendor/composer/autoload_psr4.php +0 -9
  44. vendor/composer/autoload_real.php +0 -59
  45. vendor/composer/autoload_real_52.php +0 -46
  46. vendor/composer/installed.json +0 -77
  47. vendor/xrstf/composer-php52/LICENSE +0 -19
  48. vendor/xrstf/composer-php52/README.md +0 -37
  49. vendor/xrstf/composer-php52/composer.json +0 -26
  50. vendor/xrstf/composer-php52/lib/xrstf/Composer52/AutoloadGenerator.php +0 -346
  51. vendor/xrstf/composer-php52/lib/xrstf/Composer52/ClassLoader.php +0 -271
  52. vendor/xrstf/composer-php52/lib/xrstf/Composer52/Generator.php +0 -39
CHANGELOG.md CHANGED
@@ -1,7 +1,9 @@
1
 
2
- ### v2.1.0 - 2017-11-16
3
  **Changes:**
4
-
 
 
5
  ### v2.1.0 - 2017-06-26
6
  **Changes:**
7
  * Added carousel compatibility
1
 
2
+ ### v2.1.1 - 2018-01-05
3
  **Changes:**
4
+ * Adds compatibility with latest WordPress standards.
5
+ * Sync ThemeIsle SDK.
6
+
7
  ### v2.1.0 - 2017-06-26
8
  **Changes:**
9
  * Added carousel compatibility
assets/css/admin.css CHANGED
@@ -121,7 +121,6 @@ input:checked + .nivo-slider {
121
  }
122
 
123
  input:focus + .nivo-slider {
124
- -webkit-box-shadow: 0 0 1px #0085ba;
125
  box-shadow: 0 0 1px #0085ba;
126
  }
127
 
121
  }
122
 
123
  input:focus + .nivo-slider {
 
124
  box-shadow: 0 0 1px #0085ba;
125
  }
126
 
assets/css/nivo-slider.css CHANGED
@@ -1,7 +1,7 @@
1
  /*
2
  * jQuery Nivo Slider v3.2
3
  * http://nivo.dev7studios.com
4
- * Version: 2.1.0
5
  * Copyright 2012, Dev7studios
6
  * Free to use and abuse under the MIT license.
7
  * http://www.opensource.org/licenses/mit-license.php
@@ -75,7 +75,6 @@
75
  z-index: 8;
76
  bottom: 0;
77
  left: 0;
78
- -webkit-box-sizing: border-box;
79
  /* Safari/Chrome, other WebKit */ /* Firefox, other Gecko */
80
  box-sizing: border-box;
81
  width: 100%;
1
  /*
2
  * jQuery Nivo Slider v3.2
3
  * http://nivo.dev7studios.com
4
+ * Version: 2.1.1
5
  * Copyright 2012, Dev7studios
6
  * Free to use and abuse under the MIT license.
7
  * http://www.opensource.org/licenses/mit-license.php
75
  z-index: 8;
76
  bottom: 0;
77
  left: 0;
 
78
  /* Safari/Chrome, other WebKit */ /* Firefox, other Gecko */
79
  box-sizing: border-box;
80
  width: 100%;
assets/themes/default/default.css CHANGED
@@ -12,7 +12,6 @@ Supports Thumbs: true
12
  position: relative;
13
  margin-bottom: 10px;
14
  background: #fff url(loading.gif) no-repeat 50% 50%;
15
- -webkit-box-shadow: 0 1px 5px 0 #4a4a4a;
16
  box-shadow: 0 1px 5px 0 #4a4a4a;
17
  }
18
 
12
  position: relative;
13
  margin-bottom: 10px;
14
  background: #fff url(loading.gif) no-repeat 50% 50%;
 
15
  box-shadow: 0 1px 5px 0 #4a4a4a;
16
  }
17
 
includes/admin/libs/class-nivo-core-admin-ajax.php CHANGED
@@ -153,9 +153,11 @@ class Nivo_Core_Admin_Ajax extends Nivo_Core_Abstract implements Nivo_Library_In
153
  } else {
154
  update_option( 'nivo_logger_flag', 'no' );
155
  }
156
- wp_send_json_success( array(
157
- 'status' => $status,
158
- ) );
 
 
159
  }
160
 
161
  /**
153
  } else {
154
  update_option( 'nivo_logger_flag', 'no' );
155
  }
156
+ wp_send_json_success(
157
+ array(
158
+ 'status' => $status,
159
+ )
160
+ );
161
  }
162
 
163
  /**
includes/admin/libs/class-nivo-core-admin-edit.php CHANGED
@@ -111,9 +111,11 @@ class Nivo_Core_Admin_Edit extends Nivo_Core_Abstract implements Nivo_Library_In
111
  'visible' => 'fixed',
112
  );
113
  $themes = $this->get_themes( true );
114
- $themes = array_merge( array(
115
- '' => 'None',
116
- ), (array) $themes );
 
 
117
  $settings[] = array(
118
  'name' => 'theme',
119
  'default' => '',
@@ -273,33 +275,33 @@ class Nivo_Core_Admin_Edit extends Nivo_Core_Abstract implements Nivo_Library_In
273
  public function admin_init() {
274
  add_meta_box(
275
  $this->labels['post_type'] . '_upload_box', sprintf( __( '%1$s Images', 'nivo-slider' ), $this->labels['singular'] ), array(
276
- $this,
277
- 'meta_box_upload',
278
  ), $this->labels['post_type'], 'normal'
279
  );
280
  add_meta_box(
281
  $this->labels['post_type'] . '_settings_box', __( 'Settings', 'nivo-slider' ), array(
282
- $this,
283
- 'meta_box_settings',
284
  ), $this->labels['post_type'], 'normal'
285
  );
286
  add_meta_box(
287
  $this->labels['post_type'] . '_shortcode_box', sprintf( __( 'Using this %1$s', 'nivo-slider' ), $this->labels['singular'] ), array(
288
- $this,
289
- 'meta_box_shortcode',
290
  ), $this->labels['post_type'], 'side'
291
  );
292
  if ( ! defined( 'NIVO_SLIDER_PRO' ) ) {
293
  add_meta_box(
294
  $this->labels['post_type'] . '_usefullinks_box', __( 'Full Version', 'nivo-slider' ), array(
295
- $this,
296
- 'meta_box_full_version',
297
  ), $this->labels['post_type'], 'side'
298
  );
299
  add_meta_box(
300
  $this->labels['post_type'] . '_enable_tracking', __( 'Contribute to Nivo', 'nivo-slider' ), array(
301
- $this,
302
- 'enable_tracking',
303
  ), $this->labels['post_type'], 'side'
304
  );
305
  }
@@ -363,8 +365,13 @@ class Nivo_Core_Admin_Edit extends Nivo_Core_Abstract implements Nivo_Library_In
363
  <div class="nivo-slider visualizer-round"></div>
364
  </label><span><?php _e( 'Enable Tracking', 'nivo-slider' ); ?> <sup>*</sup></span>
365
  <p>
366
- <small><sup>*</sup><?php _e( 'Allow Nivo to anonymously track how this plugin is used and help us make the
367
- plugin better. No sensitive data is tracked.', 'nivo-slider' ); ?>
 
 
 
 
 
368
  </small>
369
  </p>
370
  </div>
@@ -383,8 +390,8 @@ class Nivo_Core_Admin_Edit extends Nivo_Core_Abstract implements Nivo_Library_In
383
  ?>
384
  <a id="manual_images_upload" href="#" class="button">Configure</a>
385
  <input type="hidden" id="_manual_image_ids"
386
- name="<?php echo $this->labels['post_meta_key']; ?>[manual_image_ids]"
387
- value="<?php echo $this->nivo_default_val( $options, 'manual_image_ids', '' ); ?>">
388
  <ul id="<?php echo $this->labels['post_type']; ?>-images" class="nivo-plugin-images"></ul>
389
  <?php
390
  }
@@ -403,7 +410,7 @@ class Nivo_Core_Admin_Edit extends Nivo_Core_Abstract implements Nivo_Library_In
403
  ?>
404
  <table id="<?php echo $this->labels['post_type']; ?>-settings" class="form-table">
405
  <tr valign="top">
406
- <th scope="row"><?php echo sprintf( __( ' %1$s Type', 'nivo-slider' ), $this->labels['singular'] ) ?></th>
407
  <td>
408
  <select
409
  name="<?php echo $this->labels['post_meta_key']; ?>[<?php echo $this->labels['source_name']; ?>]">
@@ -424,7 +431,8 @@ class Nivo_Core_Admin_Edit extends Nivo_Core_Abstract implements Nivo_Library_In
424
  }
425
  } else {
426
  echo '<option value="none" > ' . __( 'No Sources', 'nivo-slider' ) . ' </option > ';
427
- } ?>
 
428
  </select>
429
  <br>
430
  <span class="manual description">
@@ -448,10 +456,12 @@ class Nivo_Core_Admin_Edit extends Nivo_Core_Abstract implements Nivo_Library_In
448
  continue;
449
  }
450
  echo '<optgroup label="' . $post_type->labels->name . '">';
451
- $posts = get_posts( array(
452
- 'numberposts' => - 1,
453
- 'post_type' => $post_key,
454
- ) );
 
 
455
  foreach ( $posts as $post_item ) {
456
  echo '<option value="' . $post_item->ID . '"';
457
  if ( $this->nivo_default_val( $options, $this->labels['type_name'] . '_gallery' ) == $post_item->ID ) {
@@ -493,10 +503,12 @@ class Nivo_Core_Admin_Edit extends Nivo_Core_Abstract implements Nivo_Library_In
493
  <select
494
  name="<?php echo $this->labels['post_meta_key']; ?>[<?php echo $this->labels['type_name']; ?>_custom]">
495
  <?php
496
- $post_types = get_post_types( array(
497
- 'public' => true,
498
- '_builtin' => false,
499
- ), 'objects' );
 
 
500
  foreach ( $post_types as $post_type ) {
501
  echo '<option value="' . $post_type->name . '"';
502
  if ( $this->nivo_default_val( $options, $this->labels['type_name'] . '_custom' ) == $post_type->name ) {
@@ -562,13 +574,13 @@ class Nivo_Core_Admin_Edit extends Nivo_Core_Abstract implements Nivo_Library_In
562
  case 'text':
563
  ?>
564
  <input type="text" name="<?php echo $element_name; ?>"
565
- value="<?php echo $element_value; ?>" class="<?php echo $element_class; ?>"/>
566
  <?php
567
  break;
568
  case 'number':
569
  ?>
570
  <input type="number" name="<?php echo $element_name; ?>"
571
- value="<?php echo $element_value; ?>" class="<?php echo $element_class; ?>"/>
572
  <?php
573
  break;
574
  case 'textarea':
@@ -576,30 +588,38 @@ class Nivo_Core_Admin_Edit extends Nivo_Core_Abstract implements Nivo_Library_In
576
  $cols = ( isset( $setting->cols ) ) ? $setting->cols : 80;
577
  ?>
578
  <textarea class="<?php echo $element_class; ?>" name="<?php echo $element_name; ?>"
579
- rows="<?php echo $rows; ?>"
580
- cols="<?php echo $cols; ?>"><?php echo $element_value; ?></textarea>
581
  <?php
582
  break;
583
  case 'checkbox':
584
  ?>
585
  <input type="hidden" name="<?php echo $element_name; ?>" value="off"/>
586
  <input id="<?php echo $element_id; ?>" type="checkbox"
587
- name="<?php echo $element_name; ?>"
588
- value="on"<?php if ( $element_value == 'on' ) {
 
 
589
  echo ' checked="checked"';
590
- } ?>/>
 
 
591
  <?php
592
  break;
593
  case 'select':
594
  ?>
595
  <select id="<?php echo $element_id; ?>" name="<?php echo $element_name; ?>"
596
- class="<?php echo $element_class; ?>">
597
  <?php
598
  foreach ( $setting->options as $value => $name ) {
599
  ?>
600
- <option value="<?php echo $value; ?>"<?php if ( $value == $element_value ) {
601
- echo ' selected="selected"';
602
- } ?>><?php echo $name; ?></option>
 
 
 
 
603
  <?php } ?>
604
  </select>
605
  <?php
@@ -788,9 +808,11 @@ class Nivo_Core_Admin_Edit extends Nivo_Core_Abstract implements Nivo_Library_In
788
  }
789
  break;
790
  case 'type':
791
- $taxonomy = wp_get_post_terms( $post->ID, 'nivo_slider', array(
792
- 'fields' => 'names',
793
- ) );
 
 
794
 
795
  echo ( ! is_wp_error( $taxonomy ) && isset( $taxonomy[0] ) ) ? $taxonomy[0] : 'slider';
796
  break;
111
  'visible' => 'fixed',
112
  );
113
  $themes = $this->get_themes( true );
114
+ $themes = array_merge(
115
+ array(
116
+ '' => 'None',
117
+ ), (array) $themes
118
+ );
119
  $settings[] = array(
120
  'name' => 'theme',
121
  'default' => '',
275
  public function admin_init() {
276
  add_meta_box(
277
  $this->labels['post_type'] . '_upload_box', sprintf( __( '%1$s Images', 'nivo-slider' ), $this->labels['singular'] ), array(
278
+ $this,
279
+ 'meta_box_upload',
280
  ), $this->labels['post_type'], 'normal'
281
  );
282
  add_meta_box(
283
  $this->labels['post_type'] . '_settings_box', __( 'Settings', 'nivo-slider' ), array(
284
+ $this,
285
+ 'meta_box_settings',
286
  ), $this->labels['post_type'], 'normal'
287
  );
288
  add_meta_box(
289
  $this->labels['post_type'] . '_shortcode_box', sprintf( __( 'Using this %1$s', 'nivo-slider' ), $this->labels['singular'] ), array(
290
+ $this,
291
+ 'meta_box_shortcode',
292
  ), $this->labels['post_type'], 'side'
293
  );
294
  if ( ! defined( 'NIVO_SLIDER_PRO' ) ) {
295
  add_meta_box(
296
  $this->labels['post_type'] . '_usefullinks_box', __( 'Full Version', 'nivo-slider' ), array(
297
+ $this,
298
+ 'meta_box_full_version',
299
  ), $this->labels['post_type'], 'side'
300
  );
301
  add_meta_box(
302
  $this->labels['post_type'] . '_enable_tracking', __( 'Contribute to Nivo', 'nivo-slider' ), array(
303
+ $this,
304
+ 'enable_tracking',
305
  ), $this->labels['post_type'], 'side'
306
  );
307
  }
365
  <div class="nivo-slider visualizer-round"></div>
366
  </label><span><?php _e( 'Enable Tracking', 'nivo-slider' ); ?> <sup>*</sup></span>
367
  <p>
368
+ <small><sup>*</sup>
369
+ <?php
370
+ _e(
371
+ 'Allow Nivo to anonymously track how this plugin is used and help us make the
372
+ plugin better. No sensitive data is tracked.', 'nivo-slider'
373
+ );
374
+ ?>
375
  </small>
376
  </p>
377
  </div>
390
  ?>
391
  <a id="manual_images_upload" href="#" class="button">Configure</a>
392
  <input type="hidden" id="_manual_image_ids"
393
+ name="<?php echo $this->labels['post_meta_key']; ?>[manual_image_ids]"
394
+ value="<?php echo $this->nivo_default_val( $options, 'manual_image_ids', '' ); ?>">
395
  <ul id="<?php echo $this->labels['post_type']; ?>-images" class="nivo-plugin-images"></ul>
396
  <?php
397
  }
410
  ?>
411
  <table id="<?php echo $this->labels['post_type']; ?>-settings" class="form-table">
412
  <tr valign="top">
413
+ <th scope="row"><?php echo sprintf( __( ' %1$s Type', 'nivo-slider' ), $this->labels['singular'] ); ?></th>
414
  <td>
415
  <select
416
  name="<?php echo $this->labels['post_meta_key']; ?>[<?php echo $this->labels['source_name']; ?>]">
431
  }
432
  } else {
433
  echo '<option value="none" > ' . __( 'No Sources', 'nivo-slider' ) . ' </option > ';
434
+ }
435
+ ?>
436
  </select>
437
  <br>
438
  <span class="manual description">
456
  continue;
457
  }
458
  echo '<optgroup label="' . $post_type->labels->name . '">';
459
+ $posts = get_posts(
460
+ array(
461
+ 'numberposts' => - 1,
462
+ 'post_type' => $post_key,
463
+ )
464
+ );
465
  foreach ( $posts as $post_item ) {
466
  echo '<option value="' . $post_item->ID . '"';
467
  if ( $this->nivo_default_val( $options, $this->labels['type_name'] . '_gallery' ) == $post_item->ID ) {
503
  <select
504
  name="<?php echo $this->labels['post_meta_key']; ?>[<?php echo $this->labels['type_name']; ?>_custom]">
505
  <?php
506
+ $post_types = get_post_types(
507
+ array(
508
+ 'public' => true,
509
+ '_builtin' => false,
510
+ ), 'objects'
511
+ );
512
  foreach ( $post_types as $post_type ) {
513
  echo '<option value="' . $post_type->name . '"';
514
  if ( $this->nivo_default_val( $options, $this->labels['type_name'] . '_custom' ) == $post_type->name ) {
574
  case 'text':
575
  ?>
576
  <input type="text" name="<?php echo $element_name; ?>"
577
+ value="<?php echo $element_value; ?>" class="<?php echo $element_class; ?>"/>
578
  <?php
579
  break;
580
  case 'number':
581
  ?>
582
  <input type="number" name="<?php echo $element_name; ?>"
583
+ value="<?php echo $element_value; ?>" class="<?php echo $element_class; ?>"/>
584
  <?php
585
  break;
586
  case 'textarea':
588
  $cols = ( isset( $setting->cols ) ) ? $setting->cols : 80;
589
  ?>
590
  <textarea class="<?php echo $element_class; ?>" name="<?php echo $element_name; ?>"
591
+ rows="<?php echo $rows; ?>"
592
+ cols="<?php echo $cols; ?>"><?php echo $element_value; ?></textarea>
593
  <?php
594
  break;
595
  case 'checkbox':
596
  ?>
597
  <input type="hidden" name="<?php echo $element_name; ?>" value="off"/>
598
  <input id="<?php echo $element_id; ?>" type="checkbox"
599
+ name="<?php echo $element_name; ?>"
600
+ value="on"
601
+ <?php
602
+ if ( $element_value == 'on' ) {
603
  echo ' checked="checked"';
604
+ }
605
+ ?>
606
+ />
607
  <?php
608
  break;
609
  case 'select':
610
  ?>
611
  <select id="<?php echo $element_id; ?>" name="<?php echo $element_name; ?>"
612
+ class="<?php echo $element_class; ?>">
613
  <?php
614
  foreach ( $setting->options as $value => $name ) {
615
  ?>
616
+ <option value="<?php echo $value; ?>"
617
+ <?php
618
+ if ( $value == $element_value ) {
619
+ echo ' selected="selected"';
620
+ }
621
+ ?>
622
+ ><?php echo $name; ?></option>
623
  <?php } ?>
624
  </select>
625
  <?php
808
  }
809
  break;
810
  case 'type':
811
+ $taxonomy = wp_get_post_terms(
812
+ $post->ID, 'nivo_slider', array(
813
+ 'fields' => 'names',
814
+ )
815
+ );
816
 
817
  echo ( ! is_wp_error( $taxonomy ) && isset( $taxonomy[0] ) ) ? $taxonomy[0] : 'slider';
818
  break;
includes/admin/libs/class-nivo-core-admin-images.php CHANGED
@@ -31,8 +31,8 @@ class Nivo_Core_Admin_Images extends Nivo_Core_Abstract implements Nivo_Library_
31
  /**
32
  * Checks for themes that haven't added 'post-thumbnails' support required and adds it.
33
  *
34
- * @since 2.3.2
35
- * @access public
36
  */
37
  public function theme_support_check() {
38
  $support = get_theme_support( 'post-thumbnails' );
@@ -44,10 +44,10 @@ class Nivo_Core_Admin_Images extends Nivo_Core_Abstract implements Nivo_Library_
44
  /**
45
  * Apply custom strings to the Media View for integrating with Media Manager Plus
46
  *
47
- * @since 2.2.*
48
- * @access public
49
- * @param array $strings Media View strings
50
- * @param object $post Current Post
51
  * @return array
52
  */
53
  public function custom_media_string( $strings, $post ) {
@@ -76,9 +76,9 @@ class Nivo_Core_Admin_Images extends Nivo_Core_Abstract implements Nivo_Library_
76
  /**
77
  * Print custom media templates for integrating with Media Manager Plus
78
  *
79
- * @since 2.2.*
80
- * @access public
81
- * @global object $post WordPress Post
82
  * @return mixed
83
  */
84
  public function print_media_templates() {
@@ -155,9 +155,9 @@ class Nivo_Core_Admin_Images extends Nivo_Core_Abstract implements Nivo_Library_
155
  /**
156
  * Upload to the media library and attach images added to [gallery] via Media Manager Plus
157
  *
158
- * @since 2.2.*
159
- * @access public
160
- * @param array $response MMP response
161
  * @return array $response
162
  */
163
  public function mmp_pre_insert( $response ) {
@@ -181,12 +181,12 @@ class Nivo_Core_Admin_Images extends Nivo_Core_Abstract implements Nivo_Library_
181
  /**
182
  * Upload to the media library and attach images added to [gallery] via Media Manager Plus
183
  *
184
- * @since 2.2.*
185
- * @access private
186
- * @param string $url external image url
187
- * @param string $title external image caption
188
- * @param int $post_id ID of [gallery] post to attach it to
189
- * @param bool $return_src default false. True returns $src, false returns $id
190
  * @return mixed
191
  */
192
  private function attach_image( $url, $title, $post_id, $return_src = true ) {
31
  /**
32
  * Checks for themes that haven't added 'post-thumbnails' support required and adds it.
33
  *
34
+ * @since 2.3.2
35
+ * @access public
36
  */
37
  public function theme_support_check() {
38
  $support = get_theme_support( 'post-thumbnails' );
44
  /**
45
  * Apply custom strings to the Media View for integrating with Media Manager Plus
46
  *
47
+ * @since 2.2.*
48
+ * @access public
49
+ * @param array $strings Media View strings
50
+ * @param object $post Current Post
51
  * @return array
52
  */
53
  public function custom_media_string( $strings, $post ) {
76
  /**
77
  * Print custom media templates for integrating with Media Manager Plus
78
  *
79
+ * @since 2.2.*
80
+ * @access public
81
+ * @global object $post WordPress Post
82
  * @return mixed
83
  */
84
  public function print_media_templates() {
155
  /**
156
  * Upload to the media library and attach images added to [gallery] via Media Manager Plus
157
  *
158
+ * @since 2.2.*
159
+ * @access public
160
+ * @param array $response MMP response
161
  * @return array $response
162
  */
163
  public function mmp_pre_insert( $response ) {
181
  /**
182
  * Upload to the media library and attach images added to [gallery] via Media Manager Plus
183
  *
184
+ * @since 2.2.*
185
+ * @access private
186
+ * @param string $url external image url
187
+ * @param string $title external image caption
188
+ * @param int $post_id ID of [gallery] post to attach it to
189
+ * @param bool $return_src default false. True returns $src, false returns $id
190
  * @return mixed
191
  */
192
  private function attach_image( $url, $title, $post_id, $return_src = true ) {
includes/admin/libs/class-nivo-core-shortcode.php CHANGED
@@ -372,12 +372,14 @@ class Nivo_Core_Shortcode extends Nivo_Core_Abstract implements Nivo_Library_Int
372
  * @return string
373
  */
374
  public function shortcode_output( $id, $output, $options, $images, $slider_type ) {
375
- $module = false;
376
  list( $prefix, $post_id ) = explode( '-', $id );
377
  if ( get_post_type( $post_id ) == $this->labels['post_type'] ) {
378
- $taxonomy = wp_get_post_terms( $post_id, 'nivo_slider', array(
379
- 'fields' => 'names',
380
- ) );
 
 
381
  if ( isset( $taxonomy[0] ) && in_array( $taxonomy[0], array( 'carousel' ) ) ) {
382
  $module = true;
383
  $module_name = $taxonomy[0];
@@ -479,7 +481,7 @@ class Nivo_Core_Shortcode extends Nivo_Core_Abstract implements Nivo_Library_Int
479
  $i = 0;
480
  foreach ( $captions as $caption ) {
481
  $output .= '<div id="nivoslider-' . $id . '-caption-' . $i . '" class="nivo-html-caption">';
482
- $output .= $caption ;
483
  $output .= '</div>';
484
  $i ++;
485
  }
372
  * @return string
373
  */
374
  public function shortcode_output( $id, $output, $options, $images, $slider_type ) {
375
+ $module = false;
376
  list( $prefix, $post_id ) = explode( '-', $id );
377
  if ( get_post_type( $post_id ) == $this->labels['post_type'] ) {
378
+ $taxonomy = wp_get_post_terms(
379
+ $post_id, 'nivo_slider', array(
380
+ 'fields' => 'names',
381
+ )
382
+ );
383
  if ( isset( $taxonomy[0] ) && in_array( $taxonomy[0], array( 'carousel' ) ) ) {
384
  $module = true;
385
  $module_name = $taxonomy[0];
481
  $i = 0;
482
  foreach ( $captions as $caption ) {
483
  $output .= '<div id="nivoslider-' . $id . '-caption-' . $i . '" class="nivo-html-caption">';
484
+ $output .= $caption;
485
  $output .= '</div>';
486
  $i ++;
487
  }
includes/admin/libs/class-nivo-slider-widget.php CHANGED
@@ -22,8 +22,8 @@ class Nivo_Slider_Widget extends WP_Widget {
22
 
23
  /**
24
  * Nivo_Slider_Widget constructor.
25
- * @since 3.0.0
26
- * @access public
27
  */
28
  public function __construct() {
29
  parent::__construct(
@@ -38,8 +38,8 @@ class Nivo_Slider_Widget extends WP_Widget {
38
  /**
39
  * Register widget utility method.
40
  *
41
- * @since 3.0.0
42
- * @access public
43
  */
44
  public function register_widget() {
45
  register_widget( 'nivo_slider_widget' );
@@ -48,10 +48,10 @@ class Nivo_Slider_Widget extends WP_Widget {
48
  /**
49
  * Method to render widget.
50
  *
51
- * @since 3.0.0
52
- * @access public
53
- * @param array $args The widget arguments.
54
- * @param object $instance The widget instance.
55
  * @return mixed
56
  */
57
  public function widget( $args, $instance ) {
@@ -75,10 +75,10 @@ class Nivo_Slider_Widget extends WP_Widget {
75
  /**
76
  * Utility method to update widget.
77
  *
78
- * @since 3.0.0
79
- * @access public
80
- * @param object $new_instance The widget instance.
81
- * @param object $old_instance The widget instance.
82
  * @return mixed
83
  */
84
  public function update( $new_instance, $old_instance ) {
@@ -92,9 +92,9 @@ class Nivo_Slider_Widget extends WP_Widget {
92
  /**
93
  * Method to render widget form.
94
  *
95
- * @since 3.0.0
96
- * @acces public
97
- * @param object $instance The widget instance.
98
  * @return mixed
99
  */
100
  public function form( $instance ) {
@@ -117,8 +117,10 @@ class Nivo_Slider_Widget extends WP_Widget {
117
  <label for="<?php echo $this->get_field_id( 'nivo_slider_id' ); ?>">Nivo Slider</label>
118
  <select class="widefat" name="<?php echo $this->get_field_name( 'nivo_slider_id' ); ?>" id="<?php echo $this->get_field_id( 'nivo_slider_id' ); ?>">
119
  <option value=""><?php _e( 'Select Slider', 'nivo-slider' ); ?></option>
120
- <?php foreach ( $galleries as $gallery ) {
121
- $selected = ( isset( $instance['nivo_slider_id'] ) ) ? $instance['nivo_slider_id'] : ''; ?>
 
 
122
  <option <?php selected( $selected, $gallery->ID ); ?> value="<?php echo $gallery->ID; ?>"><?php echo ( $gallery->post_title ) ? $gallery->post_title : $gallery->ID; ?></option>
123
  <?php } ?>
124
  </select>
22
 
23
  /**
24
  * Nivo_Slider_Widget constructor.
25
+ * @since 3.0.0
26
+ * @access public
27
  */
28
  public function __construct() {
29
  parent::__construct(
38
  /**
39
  * Register widget utility method.
40
  *
41
+ * @since 3.0.0
42
+ * @access public
43
  */
44
  public function register_widget() {
45
  register_widget( 'nivo_slider_widget' );
48
  /**
49
  * Method to render widget.
50
  *
51
+ * @since 3.0.0
52
+ * @access public
53
+ * @param array $args The widget arguments.
54
+ * @param object $instance The widget instance.
55
  * @return mixed
56
  */
57
  public function widget( $args, $instance ) {
75
  /**
76
  * Utility method to update widget.
77
  *
78
+ * @since 3.0.0
79
+ * @access public
80
+ * @param object $new_instance The widget instance.
81
+ * @param object $old_instance The widget instance.
82
  * @return mixed
83
  */
84
  public function update( $new_instance, $old_instance ) {
92
  /**
93
  * Method to render widget form.
94
  *
95
+ * @since 3.0.0
96
+ * @acces public
97
+ * @param object $instance The widget instance.
98
  * @return mixed
99
  */
100
  public function form( $instance ) {
117
  <label for="<?php echo $this->get_field_id( 'nivo_slider_id' ); ?>">Nivo Slider</label>
118
  <select class="widefat" name="<?php echo $this->get_field_name( 'nivo_slider_id' ); ?>" id="<?php echo $this->get_field_id( 'nivo_slider_id' ); ?>">
119
  <option value=""><?php _e( 'Select Slider', 'nivo-slider' ); ?></option>
120
+ <?php
121
+ foreach ( $galleries as $gallery ) {
122
+ $selected = ( isset( $instance['nivo_slider_id'] ) ) ? $instance['nivo_slider_id'] : '';
123
+ ?>
124
  <option <?php selected( $selected, $gallery->ID ); ?> value="<?php echo $gallery->ID; ?>"><?php echo ( $gallery->post_title ) ? $gallery->post_title : $gallery->ID; ?></option>
125
  <?php } ?>
126
  </select>
includes/class-nivo-slider.php CHANGED
@@ -69,7 +69,7 @@ class Nivo_Slider {
69
  public function __construct() {
70
 
71
  $this->plugin_name = 'nivo-slider';
72
- $this->version = '2.1.0';
73
 
74
  $this->load_dependencies();
75
  $this->set_locale();
69
  public function __construct() {
70
 
71
  $this->plugin_name = 'nivo-slider';
72
+ $this->version = '2.1.1';
73
 
74
  $this->load_dependencies();
75
  $this->set_locale();
includes/layouts/css/upsell.css CHANGED
@@ -49,7 +49,6 @@
49
 
50
  #pro-features .slogan a:focus {
51
  outline: none;
52
- -webkit-box-shadow: none;
53
  box-shadow: none;
54
  }
55
 
@@ -90,7 +89,6 @@
90
  display: block;
91
  margin: 30px 15px 0;
92
  background-color: #fff;
93
- -webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
94
  box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
95
  }
96
 
@@ -102,7 +100,6 @@
102
  }
103
 
104
  #pro-features .pro-feature .pro-feature-features {
105
- -webkit-box-sizing: border-box;
106
  box-sizing: border-box;
107
  padding: 30px;
108
  }
49
 
50
  #pro-features .slogan a:focus {
51
  outline: none;
 
52
  box-shadow: none;
53
  }
54
 
89
  display: block;
90
  margin: 30px 15px 0;
91
  background-color: #fff;
 
92
  box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
93
  }
94
 
100
  }
101
 
102
  #pro-features .pro-feature .pro-feature-features {
 
103
  box-sizing: border-box;
104
  padding: 30px;
105
  }
languages/nivo-slider.pot CHANGED
@@ -1,14 +1,14 @@
1
- # Copyright (C) 2017 ThemeIsle
2
  # This file is distributed under the no.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Slider by Nivo - Responsive Image Slider 2.0.3\n"
6
  "Report-Msgid-Bugs-To: https://github.com/Codeinwp/nivo-slider-lite/issues\n"
7
- "POT-Creation-Date: 2017-06-26 16:44:33+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
- "PO-Revision-Date: 2017-MO-DA HO:MI+ZONE\n"
12
  "Last-Translator: Themeisle Translate Team <friends@themeisle.com>\n"
13
  "Language-Team: Themeisle Translate <friends@themeisle.com>\n"
14
  "X-Generator: grunt-wp-i18n 0.5.4\n"
@@ -24,738 +24,567 @@ msgstr ""
24
  "X-Poedit-Bookmarks: \n"
25
  "X-Textdomain-Support: yes\n"
26
 
27
- #: dist/includes/abstract/class-nivo-model-abstract.php:56
28
- msgid "Add New"
29
  msgstr ""
30
 
31
- #: dist/includes/abstract/class-nivo-model-abstract.php:57
32
  #: includes/abstract/class-nivo-model-abstract.php:57
33
  msgid "Add New %1$s"
34
  msgstr ""
35
 
36
- #: dist/includes/abstract/class-nivo-model-abstract.php:58
37
- #: dist/includes/admin/libs/class-nivo-core-admin-images.php:59
38
  #: includes/abstract/class-nivo-model-abstract.php:58
39
  #: includes/admin/libs/class-nivo-core-admin-images.php:59
40
  msgid "Edit %1$s"
41
  msgstr ""
42
 
43
- #: dist/includes/abstract/class-nivo-model-abstract.php:59
44
  #: includes/abstract/class-nivo-model-abstract.php:59
45
  msgid "New %1$s"
46
  msgstr ""
47
 
48
- #: dist/includes/abstract/class-nivo-model-abstract.php:60
49
  #: includes/abstract/class-nivo-model-abstract.php:60
50
  msgid "All %2$s"
51
  msgstr ""
52
 
53
- #: dist/includes/abstract/class-nivo-model-abstract.php:61
54
  #: includes/abstract/class-nivo-model-abstract.php:61
55
  msgid "View %1$s"
56
  msgstr ""
57
 
58
- #: dist/includes/abstract/class-nivo-model-abstract.php:62
59
  #: includes/abstract/class-nivo-model-abstract.php:62
60
  msgid "Search %2$s"
61
  msgstr ""
62
 
63
- #: dist/includes/abstract/class-nivo-model-abstract.php:63
64
  #: includes/abstract/class-nivo-model-abstract.php:63
65
  msgid "No %2$s found"
66
  msgstr ""
67
 
68
- #: dist/includes/abstract/class-nivo-model-abstract.php:64
69
  #: includes/abstract/class-nivo-model-abstract.php:64
70
  msgid "No %2$s found in Trash"
71
  msgstr ""
72
 
73
- #: dist/includes/admin/class-nivo-slider-admin.php:83
74
- #: dist/includes/admin/class-nivo-slider-admin.php:206
75
- #: dist/includes/admin/libs/class-nivo-slider-widget.php:31
76
  #: includes/admin/class-nivo-slider-admin.php:83
77
  #: includes/admin/class-nivo-slider-admin.php:210
78
  #: includes/admin/libs/class-nivo-slider-widget.php:31
79
  msgid "Nivo Slider"
80
  msgstr ""
81
 
82
- #: dist/includes/admin/class-nivo-slider-admin.php:84
83
  #: includes/admin/class-nivo-slider-admin.php:84
84
  msgid "Nivo Sliders"
85
  msgstr ""
86
 
87
- #: dist/includes/admin/class-nivo-slider-admin.php:272
 
 
 
88
  #: includes/admin/class-nivo-slider-admin.php:309
89
  msgid "Save Changes"
90
  msgstr ""
91
 
92
- #: dist/includes/admin/class-nivo-slider-admin.php:300
93
  #: includes/admin/class-nivo-slider-admin.php:337
94
  msgid "Management Roles"
95
  msgstr ""
96
 
97
- #: dist/includes/admin/class-nivo-slider-admin.php:504
98
- msgid "Active: "
99
- msgstr ""
100
-
101
- #: dist/includes/admin/class-nivo-slider-admin.php:506
102
- msgid "Deactivate License"
103
- msgstr ""
104
-
105
- #: dist/includes/admin/class-nivo-slider-admin.php:511
106
- msgid "Activate this license key to enable automatic upgrades"
107
- msgstr ""
108
-
109
- #: dist/includes/admin/class-nivo-slider-admin.php:514
110
- msgid "Enter a valid license key to enable automatic upgrades"
111
- msgstr ""
112
-
113
- #: dist/includes/admin/class-nivo-slider-admin.php:516
114
- msgid "Activate License"
115
- msgstr ""
116
-
117
- #: dist/includes/admin/class-nivo-slider-admin.php:532
118
- #: dist/includes/admin/class-nivo-slider-admin.php:556
119
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:281
120
  #: includes/admin/class-nivo-slider-admin.php:536
121
- #: includes/admin/libs/class-nivo-core-admin-edit.php:281
122
  msgid "Settings"
123
  msgstr ""
124
 
125
- #: dist/includes/admin/class-nivo-slider-admin.php:655
126
  #: includes/admin/class-nivo-slider-admin.php:615
127
  msgid ""
128
  "You can automatically build slider from post galleries, categories and "
129
  "sticky posts using the %1$s FULL%2$s version."
130
  msgstr ""
131
 
132
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:68
133
  #: includes/admin/libs/class-nivo-core-admin-edit.php:68
134
  msgid "Enable Captions"
135
  msgstr ""
136
 
137
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:69
138
  #: includes/admin/libs/class-nivo-core-admin-edit.php:69
139
  msgid "Enable automatic captions from post titles"
140
  msgstr ""
141
 
142
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:77
143
  #: includes/admin/libs/class-nivo-core-admin-edit.php:77
144
  msgid "Number of Images"
145
  msgstr ""
146
 
147
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:78
148
  #: includes/admin/libs/class-nivo-core-admin-edit.php:78
149
  msgid ""
150
  "The number of images to use in the slider. Leave blank for all images. "
151
  "External sources default to 20"
152
  msgstr ""
153
 
154
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:87
155
  #: includes/admin/libs/class-nivo-core-admin-edit.php:87
156
  msgid "Slider Sizing"
157
  msgstr ""
158
 
159
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:88
160
  #: includes/admin/libs/class-nivo-core-admin-edit.php:88
161
  msgid "Responsive sliders will fill the width of the container"
162
  msgstr ""
163
 
164
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:90
165
  #: includes/admin/libs/class-nivo-core-admin-edit.php:90
166
  msgid "Responsive"
167
  msgstr ""
168
 
169
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:91
170
  #: includes/admin/libs/class-nivo-core-admin-edit.php:91
171
  msgid "Fixed Size"
172
  msgstr ""
173
 
174
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:98
175
  #: includes/admin/libs/class-nivo-core-admin-edit.php:98
176
  msgid "Image Size"
177
  msgstr ""
178
 
179
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:99
180
  #: includes/admin/libs/class-nivo-core-admin-edit.php:99
181
  msgid "Select the size of image from the WordPress media library"
182
  msgstr ""
183
 
184
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:107
185
  #: includes/admin/libs/class-nivo-core-admin-edit.php:107
186
  msgid "Slider Size"
187
  msgstr ""
188
 
189
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:108
190
  #: includes/admin/libs/class-nivo-core-admin-edit.php:108
191
  msgid "(Size in px) Images will be cropped to these dimensions (eg 400 x 150)"
192
  msgstr ""
193
 
194
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:121
195
- #: includes/admin/libs/class-nivo-core-admin-edit.php:121
196
  msgid "Slider Theme"
197
  msgstr ""
198
 
199
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:122
200
- #: includes/admin/libs/class-nivo-core-admin-edit.php:122
201
  msgid "Use a pre-built theme or provide your own styles."
202
  msgstr ""
203
 
204
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:126
205
- #: includes/admin/libs/class-nivo-core-admin-edit.php:126
206
  msgid "Random"
207
  msgstr ""
208
 
209
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:127
210
- #: includes/admin/libs/class-nivo-core-admin-edit.php:127
211
  msgid "Fade"
212
  msgstr ""
213
 
214
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:128
215
- #: includes/admin/libs/class-nivo-core-admin-edit.php:128
216
  msgid "Fold"
217
  msgstr ""
218
 
219
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:129
220
- #: includes/admin/libs/class-nivo-core-admin-edit.php:129
221
  msgid "Slice Down"
222
  msgstr ""
223
 
224
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:130
225
- #: includes/admin/libs/class-nivo-core-admin-edit.php:130
226
  msgid "Slice Down (Left)"
227
  msgstr ""
228
 
229
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:131
230
- #: includes/admin/libs/class-nivo-core-admin-edit.php:131
231
  msgid "Slice Up"
232
  msgstr ""
233
 
234
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:132
235
- #: includes/admin/libs/class-nivo-core-admin-edit.php:132
236
  msgid "Slice Up (Left)"
237
  msgstr ""
238
 
239
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:133
240
- #: includes/admin/libs/class-nivo-core-admin-edit.php:133
241
  msgid "Slice Up/Down"
242
  msgstr ""
243
 
244
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:134
245
- #: includes/admin/libs/class-nivo-core-admin-edit.php:134
246
  msgid "Slice Up/Down (Left)"
247
  msgstr ""
248
 
249
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:135
250
- #: includes/admin/libs/class-nivo-core-admin-edit.php:135
251
  msgid "Slide In (Right)"
252
  msgstr ""
253
 
254
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:136
255
- #: includes/admin/libs/class-nivo-core-admin-edit.php:136
256
  msgid "Slide In (Left)"
257
  msgstr ""
258
 
259
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:137
260
- #: includes/admin/libs/class-nivo-core-admin-edit.php:137
261
  msgid "Box Random"
262
  msgstr ""
263
 
264
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:138
265
- #: includes/admin/libs/class-nivo-core-admin-edit.php:138
266
  msgid "Box Rain"
267
  msgstr ""
268
 
269
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:139
270
- #: includes/admin/libs/class-nivo-core-admin-edit.php:139
271
  msgid "Box Rain (Reverse)"
272
  msgstr ""
273
 
274
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:140
275
- #: includes/admin/libs/class-nivo-core-admin-edit.php:140
276
  msgid "Box Rain Grow"
277
  msgstr ""
278
 
279
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:141
280
- #: includes/admin/libs/class-nivo-core-admin-edit.php:141
281
  msgid "Box Rain Grow (Reverse)"
282
  msgstr ""
283
 
284
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:147
285
- #: includes/admin/libs/class-nivo-core-admin-edit.php:147
286
  msgid "Transition Effect"
287
  msgstr ""
288
 
289
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:154
290
- #: includes/admin/libs/class-nivo-core-admin-edit.php:154
291
  msgid "Slices"
292
  msgstr ""
293
 
294
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:155
295
- #: includes/admin/libs/class-nivo-core-admin-edit.php:155
296
  msgid "The number of slices to use in the \"Slice\" transitions (eg 15)"
297
  msgstr ""
298
 
299
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:161
300
- #: includes/admin/libs/class-nivo-core-admin-edit.php:161
301
  msgid "Box (Cols x Rows)"
302
  msgstr ""
303
 
304
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:162
305
- #: includes/admin/libs/class-nivo-core-admin-edit.php:162
306
  msgid "The number of columns and rows to use in the \"Box\" transitions (eg 8 x 4)"
307
  msgstr ""
308
 
309
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:169
310
- #: includes/admin/libs/class-nivo-core-admin-edit.php:169
311
  msgid "Animation Speed"
312
  msgstr ""
313
 
314
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:170
315
- #: includes/admin/libs/class-nivo-core-admin-edit.php:170
316
  msgid "The speed of the transition animation in milliseconds (eg 500)"
317
  msgstr ""
318
 
319
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:176
320
- #: includes/admin/libs/class-nivo-core-admin-edit.php:176
321
  msgid "Enable Thumbnail Navigation"
322
  msgstr ""
323
 
324
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:183
325
- #: includes/admin/libs/class-nivo-core-admin-edit.php:183
326
  msgid "Thumbnail Size"
327
  msgstr ""
328
 
329
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:184
330
- #: includes/admin/libs/class-nivo-core-admin-edit.php:184
331
  msgid "The width and height of the thumbnails"
332
  msgstr ""
333
 
334
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:192
335
- #: includes/admin/libs/class-nivo-core-admin-edit.php:192
336
  msgid "Pause Time"
337
  msgstr ""
338
 
339
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:193
340
- #: includes/admin/libs/class-nivo-core-admin-edit.php:193
341
  msgid "The amount of time to show each slide in milliseconds (eg 3000)"
342
  msgstr ""
343
 
344
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:199
345
- #: includes/admin/libs/class-nivo-core-admin-edit.php:199
346
  msgid "Start Slide"
347
  msgstr ""
348
 
349
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:200
350
- #: includes/admin/libs/class-nivo-core-admin-edit.php:200
351
  msgid "Set which slide the slider starts from (zero based index: usually 0)"
352
  msgstr ""
353
 
354
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:206
355
- #: includes/admin/libs/class-nivo-core-admin-edit.php:206
356
  msgid "Enable Direction Navigation"
357
  msgstr ""
358
 
359
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:207
360
- #: includes/admin/libs/class-nivo-core-admin-edit.php:207
361
  msgid "Prev &amp; Next arrows"
362
  msgstr ""
363
 
364
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:213
365
- #: includes/admin/libs/class-nivo-core-admin-edit.php:213
366
  msgid "Enable Control Navigation"
367
  msgstr ""
368
 
369
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:214
370
- #: includes/admin/libs/class-nivo-core-admin-edit.php:214
371
  msgid "eg 1,2,3..."
372
  msgstr ""
373
 
374
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:220
375
- #: includes/admin/libs/class-nivo-core-admin-edit.php:220
376
  msgid "Enable Images Links"
377
  msgstr ""
378
 
379
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:221
380
- #: includes/admin/libs/class-nivo-core-admin-edit.php:221
381
  msgid ""
382
  "If a link has been added to an image when configuring, the image links to "
383
  "the url."
384
  msgstr ""
385
 
386
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:227
387
- #: includes/admin/libs/class-nivo-core-admin-edit.php:227
388
  msgid "Open Links in New Window"
389
  msgstr ""
390
 
391
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:228
392
- #: includes/admin/libs/class-nivo-core-admin-edit.php:228
393
  msgid "Open the links in a new window."
394
  msgstr ""
395
 
396
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:236
397
- #: includes/admin/libs/class-nivo-core-admin-edit.php:236
398
  msgid "Pause the Slider on Hover"
399
  msgstr ""
400
 
401
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:242
402
- #: includes/admin/libs/class-nivo-core-admin-edit.php:242
403
  msgid "Manual Transitions"
404
  msgstr ""
405
 
406
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:243
407
- #: includes/admin/libs/class-nivo-core-admin-edit.php:243
408
  msgid "Slider is always paused"
409
  msgstr ""
410
 
411
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:249
412
- #: includes/admin/libs/class-nivo-core-admin-edit.php:249
413
  msgid "Random Start Slide"
414
  msgstr ""
415
 
416
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:250
417
- #: includes/admin/libs/class-nivo-core-admin-edit.php:250
418
  msgid "Overrides Start Slide value"
419
  msgstr ""
420
 
421
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:275
422
- #: includes/admin/libs/class-nivo-core-admin-edit.php:275
423
  msgid "%1$s Images"
424
  msgstr ""
425
 
426
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:287
427
- #: includes/admin/libs/class-nivo-core-admin-edit.php:287
428
  msgid "Using this %1$s"
429
  msgstr ""
430
 
431
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:294
432
- #: includes/admin/libs/class-nivo-core-admin-edit.php:294
433
  msgid "Full Version"
434
  msgstr ""
435
 
436
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:300
437
- #: includes/admin/libs/class-nivo-core-admin-edit.php:300
438
  msgid "Contribute to Nivo"
439
  msgstr ""
440
 
441
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:317
442
- #: includes/admin/libs/class-nivo-core-admin-edit.php:317
443
  msgid "To use this %1$s in your posts or pages use the following shortcode:"
444
  msgstr ""
445
 
446
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:323
447
- #: includes/admin/libs/class-nivo-core-admin-edit.php:323
448
  msgid "To use this %1$s in a theme template file use the following code:"
449
  msgstr ""
450
 
451
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:340
452
- #: includes/admin/libs/class-nivo-core-admin-edit.php:340
453
  msgid " Extend Nivo Slider "
454
  msgstr ""
455
 
456
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:342
457
- #: includes/admin/libs/class-nivo-core-admin-edit.php:342
458
  msgid "More slider types"
459
  msgstr ""
460
 
461
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:343
462
- #: includes/admin/libs/class-nivo-core-admin-edit.php:343
463
  msgid "Build carousels"
464
  msgstr ""
465
 
466
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:344
467
- #: includes/admin/libs/class-nivo-core-admin-edit.php:344
468
  msgid "Create lightboxes"
469
  msgstr ""
470
 
471
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:345
472
- #: includes/admin/libs/class-nivo-core-admin-edit.php:345
473
  msgid "Automatic updates"
474
  msgstr ""
475
 
476
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:346
477
- #: includes/admin/libs/class-nivo-core-admin-edit.php:346
478
  msgid "Priority support"
479
  msgstr ""
480
 
481
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:364
482
- #: includes/admin/libs/class-nivo-core-admin-edit.php:364
483
  msgid "Enable Tracking"
484
  msgstr ""
485
 
486
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:366
487
- #: includes/admin/libs/class-nivo-core-admin-edit.php:366
488
  msgid ""
489
  "Allow Nivo to anonymously track how this plugin is used and help us make "
490
  "the\n"
491
  "\t\t\t\t\tplugin better. No sensitive data is tracked."
492
  msgstr ""
493
 
494
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:405
495
- #: includes/admin/libs/class-nivo-core-admin-edit.php:406
496
  msgid " %1$s Type"
497
  msgstr ""
498
 
499
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:425
500
- #: includes/admin/libs/class-nivo-core-admin-edit.php:426
501
  msgid "No Sources"
502
  msgstr ""
503
 
504
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:430
505
- #: includes/admin/libs/class-nivo-core-admin-edit.php:431
506
  msgid "Choose to manually upload images or use images from the media library . "
507
  msgstr ""
508
 
509
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:436
510
- #: includes/admin/libs/class-nivo-core-admin-edit.php:437
511
  msgid "Gallery Location"
512
  msgstr ""
513
 
514
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:466
515
- #: includes/admin/libs/class-nivo-core-admin-edit.php:467
516
  msgid "Select the post gallery you want to use"
517
  msgstr ""
518
 
519
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:470
520
- #: dist/includes/admin/libs/class-nivo-core-images.php:424
521
- #: includes/admin/libs/class-nivo-core-admin-edit.php:471
522
  #: includes/admin/libs/class-nivo-core-images.php:423
523
  msgid "Category"
524
  msgstr ""
525
 
526
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:486
527
- #: includes/admin/libs/class-nivo-core-admin-edit.php:487
528
  msgid "Select the category you want to use for post thumbnails"
529
  msgstr ""
530
 
531
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:490
532
- #: dist/includes/admin/libs/class-nivo-core-images.php:426
533
- #: includes/admin/libs/class-nivo-core-admin-edit.php:491
534
  #: includes/admin/libs/class-nivo-core-images.php:425
535
  msgid "Custom Post Type"
536
  msgstr ""
537
 
538
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:509
539
- #: includes/admin/libs/class-nivo-core-admin-edit.php:510
540
  msgid "Select the custom post type you want to use for post thumbnails"
541
  msgstr ""
542
 
543
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:723
544
- #: dist/includes/admin/libs/class-nivo-core-admin-images.php:142
545
- #: includes/admin/libs/class-nivo-core-admin-edit.php:724
546
  #: includes/admin/libs/class-nivo-core-admin-images.php:142
547
  msgid "Title"
548
  msgstr ""
549
 
550
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:724
551
- #: includes/admin/libs/class-nivo-core-admin-edit.php:725
552
  msgid "Shortcode"
553
  msgstr ""
554
 
555
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:725
556
- #: includes/admin/libs/class-nivo-core-admin-edit.php:726
557
  msgid "Source"
558
  msgstr ""
559
 
560
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:726
561
- #: includes/admin/libs/class-nivo-core-admin-edit.php:727
562
  msgid "Type"
563
  msgstr ""
564
 
565
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:727
566
- #: includes/admin/libs/class-nivo-core-admin-edit.php:728
567
  msgid "Images"
568
  msgstr ""
569
 
570
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:728
571
- #: includes/admin/libs/class-nivo-core-admin-edit.php:729
572
  msgid "Author"
573
  msgstr ""
574
 
575
- #: dist/includes/admin/libs/class-nivo-core-admin-edit.php:729
576
- #: includes/admin/libs/class-nivo-core-admin-edit.php:730
577
  msgid "Date"
578
  msgstr ""
579
 
580
- #: dist/includes/admin/libs/class-nivo-core-admin-images.php:55
581
- #: dist/includes/admin/libs/class-nivo-core-admin-images.php:56
582
  #: includes/admin/libs/class-nivo-core-admin-images.php:55
583
  #: includes/admin/libs/class-nivo-core-admin-images.php:56
584
  msgid "Create %1$s"
585
  msgstr ""
586
 
587
- #: dist/includes/admin/libs/class-nivo-core-admin-images.php:57
588
- #: dist/includes/admin/libs/class-nivo-core-admin-images.php:58
589
- #: dist/includes/admin/libs/class-nivo-core-admin-images.php:64
590
  #: includes/admin/libs/class-nivo-core-admin-images.php:57
591
  #: includes/admin/libs/class-nivo-core-admin-images.php:58
592
  #: includes/admin/libs/class-nivo-core-admin-images.php:64
593
  msgid "Add to %1$s"
594
  msgstr ""
595
 
596
- #: dist/includes/admin/libs/class-nivo-core-admin-images.php:60
597
  #: includes/admin/libs/class-nivo-core-admin-images.php:60
598
  msgid "Save %1$s"
599
  msgstr ""
600
 
601
- #: dist/includes/admin/libs/class-nivo-core-admin-images.php:61
602
- #: dist/includes/admin/libs/class-nivo-core-admin-images.php:67
603
  #: includes/admin/libs/class-nivo-core-admin-images.php:61
604
  #: includes/admin/libs/class-nivo-core-admin-images.php:67
605
  msgid "Update %1$s"
606
  msgstr ""
607
 
608
- #: dist/includes/admin/libs/class-nivo-core-admin-images.php:62
609
- #: dist/includes/admin/libs/class-nivo-core-admin-images.php:90
610
  #: includes/admin/libs/class-nivo-core-admin-images.php:62
611
  #: includes/admin/libs/class-nivo-core-admin-images.php:90
612
  msgid "Slide Details"
613
  msgstr ""
614
 
615
- #: dist/includes/admin/libs/class-nivo-core-admin-images.php:66
616
  #: includes/admin/libs/class-nivo-core-admin-images.php:66
617
  msgid "Add from "
618
  msgstr ""
619
 
620
- #: dist/includes/admin/libs/class-nivo-core-admin-images.php:93
621
  #: includes/admin/libs/class-nivo-core-admin-images.php:93
622
  msgid "Saved."
623
  msgstr ""
624
 
625
- #: dist/includes/admin/libs/class-nivo-core-admin-images.php:111
626
- #: dist/includes/admin/libs/class-nivo-core-admin-images.php:137
627
  #: includes/admin/libs/class-nivo-core-admin-images.php:111
628
  #: includes/admin/libs/class-nivo-core-admin-images.php:137
629
  msgid "Caption"
630
  msgstr ""
631
 
632
- #: dist/includes/admin/libs/class-nivo-core-admin-images.php:116
633
- #: dist/includes/admin/libs/class-nivo-core-admin-images.php:147
634
  #: includes/admin/libs/class-nivo-core-admin-images.php:116
635
  #: includes/admin/libs/class-nivo-core-admin-images.php:147
636
  msgid "Alt Text"
637
  msgstr ""
638
 
639
- #: dist/includes/admin/libs/class-nivo-core-admin-images.php:121
640
  #: includes/admin/libs/class-nivo-core-admin-images.php:121
641
  msgid "Link"
642
  msgstr ""
643
 
644
- #: dist/includes/admin/libs/class-nivo-core-images.php:45
645
  #: includes/admin/libs/class-nivo-core-images.php:45
646
  msgid "File doesn't exist"
647
  msgstr ""
648
 
649
- #: dist/includes/admin/libs/class-nivo-core-images.php:421
650
  #: includes/admin/libs/class-nivo-core-images.php:420
651
  msgid "Manual"
652
  msgstr ""
653
 
654
- #: dist/includes/admin/libs/class-nivo-core-images.php:423
655
  #: includes/admin/libs/class-nivo-core-images.php:422
656
  msgid "Gallery"
657
  msgstr ""
658
 
659
- #: dist/includes/admin/libs/class-nivo-core-images.php:425
660
  #: includes/admin/libs/class-nivo-core-images.php:424
661
  msgid "Sticky Posts"
662
  msgstr ""
663
 
664
- #: dist/includes/admin/libs/class-nivo-core-model.php:46
665
- #: dist/includes/admin/libs/class-nivo-core-model.php:49
666
  #: includes/admin/libs/class-nivo-core-model.php:46
667
  #: includes/admin/libs/class-nivo-core-model.php:49
668
  msgid "%1$s updated."
669
  msgstr ""
670
 
671
- #: dist/includes/admin/libs/class-nivo-core-model.php:47
672
  #: includes/admin/libs/class-nivo-core-model.php:47
673
  msgid "Custom field updated."
674
  msgstr ""
675
 
676
- #: dist/includes/admin/libs/class-nivo-core-model.php:48
677
  #: includes/admin/libs/class-nivo-core-model.php:48
678
  msgid "Custom field deleted."
679
  msgstr ""
680
 
681
- #: dist/includes/admin/libs/class-nivo-core-model.php:51
682
  #: includes/admin/libs/class-nivo-core-model.php:51
683
  msgid "%1$s published."
684
  msgstr ""
685
 
686
- #: dist/includes/admin/libs/class-nivo-core-model.php:52
687
  #: includes/admin/libs/class-nivo-core-model.php:52
688
  msgid "%1$s saved."
689
  msgstr ""
690
 
691
- #: dist/includes/admin/libs/class-nivo-core-model.php:53
692
  #: includes/admin/libs/class-nivo-core-model.php:53
693
  msgid "%1$s submitted."
694
  msgstr ""
695
 
696
- #: dist/includes/admin/libs/class-nivo-core-model.php:54
697
  #: includes/admin/libs/class-nivo-core-model.php:54
698
  msgid ""
699
  "%1$s scheduled for: <strong>%2$s</strong>. <a target=\"_blank\" "
700
  "href=\"%2$s\">Preview %1$s</a>"
701
  msgstr ""
702
 
703
- #: dist/includes/admin/libs/class-nivo-core-model.php:55
704
  #: includes/admin/libs/class-nivo-core-model.php:55
705
  msgid "%1$s draft updated."
706
  msgstr ""
707
 
708
- #: dist/includes/admin/libs/class-nivo-core-model.php:60
709
  #: includes/admin/libs/class-nivo-core-model.php:60
710
  msgid "M j, Y @ G:i"
711
  msgstr ""
712
 
713
- #: dist/includes/admin/libs/class-nivo-core-model.php:64
714
  #: includes/admin/libs/class-nivo-core-model.php:64
715
  msgid "%1$s restored to revision from %2$s"
716
  msgstr ""
717
 
718
- #: dist/includes/admin/libs/class-nivo-core-shortcode.php:114
719
  #: includes/admin/libs/class-nivo-core-shortcode.php:114
720
  msgid "Invalid %1$s"
721
  msgstr ""
722
 
723
- #: dist/includes/admin/libs/class-nivo-core-shortcode.php:122
724
  #: includes/admin/libs/class-nivo-core-shortcode.php:122
725
  msgid "Invalid %1$s Slug"
726
  msgstr ""
727
 
728
- #: dist/includes/admin/libs/class-nivo-slider-widget.php:33
729
  #: includes/admin/libs/class-nivo-slider-widget.php:33
730
  msgid "Display a Nivo Slider"
731
  msgstr ""
732
 
733
- #: dist/includes/admin/libs/class-nivo-slider-widget.php:104
734
  #: includes/admin/libs/class-nivo-slider-widget.php:104
735
  msgid "Title:"
736
  msgstr ""
737
 
738
- #: dist/includes/admin/libs/class-nivo-slider-widget.php:119
739
  #: includes/admin/libs/class-nivo-slider-widget.php:119
740
  msgid "Select Slider"
741
  msgstr ""
742
 
743
- #: dist/vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-licenser.php:453
744
  #: vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-licenser.php:476
745
  msgid ""
746
  "Updating this theme will lose any customizations you have made. Cancel to "
747
  "stop, OK to update."
748
  msgstr ""
749
 
750
- #: includes/abstract/class-nivo-model-abstract.php:56
751
- msgid "Add new Slider"
752
- msgstr ""
753
-
754
- #: includes/admin/class-nivo-slider-admin.php:225
755
- msgid "More Features"
756
- msgstr ""
757
-
758
- #: vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-widget-dashboard-blog.php:197
759
  msgid "Install"
760
  msgstr ""
761
 
1
+ # Copyright (C) 2018 ThemeIsle
2
  # This file is distributed under the no.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Slider by Nivo - Responsive Image Slider 2.1.0\n"
6
  "Report-Msgid-Bugs-To: https://github.com/Codeinwp/nivo-slider-lite/issues\n"
7
+ "POT-Creation-Date: 2018-01-05 14:25:16+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
+ "PO-Revision-Date: 2018-MO-DA HO:MI+ZONE\n"
12
  "Last-Translator: Themeisle Translate Team <friends@themeisle.com>\n"
13
  "Language-Team: Themeisle Translate <friends@themeisle.com>\n"
14
  "X-Generator: grunt-wp-i18n 0.5.4\n"
24
  "X-Poedit-Bookmarks: \n"
25
  "X-Textdomain-Support: yes\n"
26
 
27
+ #: includes/abstract/class-nivo-model-abstract.php:56
28
+ msgid "Add new Slider"
29
  msgstr ""
30
 
 
31
  #: includes/abstract/class-nivo-model-abstract.php:57
32
  msgid "Add New %1$s"
33
  msgstr ""
34
 
 
 
35
  #: includes/abstract/class-nivo-model-abstract.php:58
36
  #: includes/admin/libs/class-nivo-core-admin-images.php:59
37
  msgid "Edit %1$s"
38
  msgstr ""
39
 
 
40
  #: includes/abstract/class-nivo-model-abstract.php:59
41
  msgid "New %1$s"
42
  msgstr ""
43
 
 
44
  #: includes/abstract/class-nivo-model-abstract.php:60
45
  msgid "All %2$s"
46
  msgstr ""
47
 
 
48
  #: includes/abstract/class-nivo-model-abstract.php:61
49
  msgid "View %1$s"
50
  msgstr ""
51
 
 
52
  #: includes/abstract/class-nivo-model-abstract.php:62
53
  msgid "Search %2$s"
54
  msgstr ""
55
 
 
56
  #: includes/abstract/class-nivo-model-abstract.php:63
57
  msgid "No %2$s found"
58
  msgstr ""
59
 
 
60
  #: includes/abstract/class-nivo-model-abstract.php:64
61
  msgid "No %2$s found in Trash"
62
  msgstr ""
63
 
 
 
 
64
  #: includes/admin/class-nivo-slider-admin.php:83
65
  #: includes/admin/class-nivo-slider-admin.php:210
66
  #: includes/admin/libs/class-nivo-slider-widget.php:31
67
  msgid "Nivo Slider"
68
  msgstr ""
69
 
 
70
  #: includes/admin/class-nivo-slider-admin.php:84
71
  msgid "Nivo Sliders"
72
  msgstr ""
73
 
74
+ #: includes/admin/class-nivo-slider-admin.php:225
75
+ msgid "More Features"
76
+ msgstr ""
77
+
78
  #: includes/admin/class-nivo-slider-admin.php:309
79
  msgid "Save Changes"
80
  msgstr ""
81
 
 
82
  #: includes/admin/class-nivo-slider-admin.php:337
83
  msgid "Management Roles"
84
  msgstr ""
85
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  #: includes/admin/class-nivo-slider-admin.php:536
87
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:283
88
  msgid "Settings"
89
  msgstr ""
90
 
 
91
  #: includes/admin/class-nivo-slider-admin.php:615
92
  msgid ""
93
  "You can automatically build slider from post galleries, categories and "
94
  "sticky posts using the %1$s FULL%2$s version."
95
  msgstr ""
96
 
 
97
  #: includes/admin/libs/class-nivo-core-admin-edit.php:68
98
  msgid "Enable Captions"
99
  msgstr ""
100
 
 
101
  #: includes/admin/libs/class-nivo-core-admin-edit.php:69
102
  msgid "Enable automatic captions from post titles"
103
  msgstr ""
104
 
 
105
  #: includes/admin/libs/class-nivo-core-admin-edit.php:77
106
  msgid "Number of Images"
107
  msgstr ""
108
 
 
109
  #: includes/admin/libs/class-nivo-core-admin-edit.php:78
110
  msgid ""
111
  "The number of images to use in the slider. Leave blank for all images. "
112
  "External sources default to 20"
113
  msgstr ""
114
 
 
115
  #: includes/admin/libs/class-nivo-core-admin-edit.php:87
116
  msgid "Slider Sizing"
117
  msgstr ""
118
 
 
119
  #: includes/admin/libs/class-nivo-core-admin-edit.php:88
120
  msgid "Responsive sliders will fill the width of the container"
121
  msgstr ""
122
 
 
123
  #: includes/admin/libs/class-nivo-core-admin-edit.php:90
124
  msgid "Responsive"
125
  msgstr ""
126
 
 
127
  #: includes/admin/libs/class-nivo-core-admin-edit.php:91
128
  msgid "Fixed Size"
129
  msgstr ""
130
 
 
131
  #: includes/admin/libs/class-nivo-core-admin-edit.php:98
132
  msgid "Image Size"
133
  msgstr ""
134
 
 
135
  #: includes/admin/libs/class-nivo-core-admin-edit.php:99
136
  msgid "Select the size of image from the WordPress media library"
137
  msgstr ""
138
 
 
139
  #: includes/admin/libs/class-nivo-core-admin-edit.php:107
140
  msgid "Slider Size"
141
  msgstr ""
142
 
 
143
  #: includes/admin/libs/class-nivo-core-admin-edit.php:108
144
  msgid "(Size in px) Images will be cropped to these dimensions (eg 400 x 150)"
145
  msgstr ""
146
 
147
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:123
 
148
  msgid "Slider Theme"
149
  msgstr ""
150
 
151
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:124
 
152
  msgid "Use a pre-built theme or provide your own styles."
153
  msgstr ""
154
 
155
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:128
 
156
  msgid "Random"
157
  msgstr ""
158
 
159
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:129
 
160
  msgid "Fade"
161
  msgstr ""
162
 
163
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:130
 
164
  msgid "Fold"
165
  msgstr ""
166
 
167
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:131
 
168
  msgid "Slice Down"
169
  msgstr ""
170
 
171
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:132
 
172
  msgid "Slice Down (Left)"
173
  msgstr ""
174
 
175
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:133
 
176
  msgid "Slice Up"
177
  msgstr ""
178
 
179
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:134
 
180
  msgid "Slice Up (Left)"
181
  msgstr ""
182
 
183
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:135
 
184
  msgid "Slice Up/Down"
185
  msgstr ""
186
 
187
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:136
 
188
  msgid "Slice Up/Down (Left)"
189
  msgstr ""
190
 
191
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:137
 
192
  msgid "Slide In (Right)"
193
  msgstr ""
194
 
195
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:138
 
196
  msgid "Slide In (Left)"
197
  msgstr ""
198
 
199
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:139
 
200
  msgid "Box Random"
201
  msgstr ""
202
 
203
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:140
 
204
  msgid "Box Rain"
205
  msgstr ""
206
 
207
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:141
 
208
  msgid "Box Rain (Reverse)"
209
  msgstr ""
210
 
211
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:142
 
212
  msgid "Box Rain Grow"
213
  msgstr ""
214
 
215
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:143
 
216
  msgid "Box Rain Grow (Reverse)"
217
  msgstr ""
218
 
219
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:149
 
220
  msgid "Transition Effect"
221
  msgstr ""
222
 
223
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:156
 
224
  msgid "Slices"
225
  msgstr ""
226
 
227
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:157
 
228
  msgid "The number of slices to use in the \"Slice\" transitions (eg 15)"
229
  msgstr ""
230
 
231
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:163
 
232
  msgid "Box (Cols x Rows)"
233
  msgstr ""
234
 
235
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:164
 
236
  msgid "The number of columns and rows to use in the \"Box\" transitions (eg 8 x 4)"
237
  msgstr ""
238
 
239
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:171
 
240
  msgid "Animation Speed"
241
  msgstr ""
242
 
243
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:172
 
244
  msgid "The speed of the transition animation in milliseconds (eg 500)"
245
  msgstr ""
246
 
247
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:178
 
248
  msgid "Enable Thumbnail Navigation"
249
  msgstr ""
250
 
251
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:185
 
252
  msgid "Thumbnail Size"
253
  msgstr ""
254
 
255
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:186
 
256
  msgid "The width and height of the thumbnails"
257
  msgstr ""
258
 
259
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:194
 
260
  msgid "Pause Time"
261
  msgstr ""
262
 
263
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:195
 
264
  msgid "The amount of time to show each slide in milliseconds (eg 3000)"
265
  msgstr ""
266
 
267
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:201
 
268
  msgid "Start Slide"
269
  msgstr ""
270
 
271
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:202
 
272
  msgid "Set which slide the slider starts from (zero based index: usually 0)"
273
  msgstr ""
274
 
275
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:208
 
276
  msgid "Enable Direction Navigation"
277
  msgstr ""
278
 
279
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:209
 
280
  msgid "Prev &amp; Next arrows"
281
  msgstr ""
282
 
283
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:215
 
284
  msgid "Enable Control Navigation"
285
  msgstr ""
286
 
287
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:216
 
288
  msgid "eg 1,2,3..."
289
  msgstr ""
290
 
291
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:222
 
292
  msgid "Enable Images Links"
293
  msgstr ""
294
 
295
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:223
 
296
  msgid ""
297
  "If a link has been added to an image when configuring, the image links to "
298
  "the url."
299
  msgstr ""
300
 
301
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:229
 
302
  msgid "Open Links in New Window"
303
  msgstr ""
304
 
305
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:230
 
306
  msgid "Open the links in a new window."
307
  msgstr ""
308
 
309
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:238
 
310
  msgid "Pause the Slider on Hover"
311
  msgstr ""
312
 
313
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:244
 
314
  msgid "Manual Transitions"
315
  msgstr ""
316
 
317
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:245
 
318
  msgid "Slider is always paused"
319
  msgstr ""
320
 
321
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:251
 
322
  msgid "Random Start Slide"
323
  msgstr ""
324
 
325
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:252
 
326
  msgid "Overrides Start Slide value"
327
  msgstr ""
328
 
329
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:277
 
330
  msgid "%1$s Images"
331
  msgstr ""
332
 
333
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:289
 
334
  msgid "Using this %1$s"
335
  msgstr ""
336
 
337
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:296
 
338
  msgid "Full Version"
339
  msgstr ""
340
 
341
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:302
 
342
  msgid "Contribute to Nivo"
343
  msgstr ""
344
 
345
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:319
 
346
  msgid "To use this %1$s in your posts or pages use the following shortcode:"
347
  msgstr ""
348
 
349
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:325
 
350
  msgid "To use this %1$s in a theme template file use the following code:"
351
  msgstr ""
352
 
353
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:342
 
354
  msgid " Extend Nivo Slider "
355
  msgstr ""
356
 
357
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:344
 
358
  msgid "More slider types"
359
  msgstr ""
360
 
361
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:345
 
362
  msgid "Build carousels"
363
  msgstr ""
364
 
365
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:346
 
366
  msgid "Create lightboxes"
367
  msgstr ""
368
 
369
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:347
 
370
  msgid "Automatic updates"
371
  msgstr ""
372
 
373
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:348
 
374
  msgid "Priority support"
375
  msgstr ""
376
 
377
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:366
 
378
  msgid "Enable Tracking"
379
  msgstr ""
380
 
381
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:370
 
382
  msgid ""
383
  "Allow Nivo to anonymously track how this plugin is used and help us make "
384
  "the\n"
385
  "\t\t\t\t\tplugin better. No sensitive data is tracked."
386
  msgstr ""
387
 
388
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:413
 
389
  msgid " %1$s Type"
390
  msgstr ""
391
 
392
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:433
 
393
  msgid "No Sources"
394
  msgstr ""
395
 
396
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:439
 
397
  msgid "Choose to manually upload images or use images from the media library . "
398
  msgstr ""
399
 
400
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:445
 
401
  msgid "Gallery Location"
402
  msgstr ""
403
 
404
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:477
 
405
  msgid "Select the post gallery you want to use"
406
  msgstr ""
407
 
408
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:481
 
 
409
  #: includes/admin/libs/class-nivo-core-images.php:423
410
  msgid "Category"
411
  msgstr ""
412
 
413
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:497
 
414
  msgid "Select the category you want to use for post thumbnails"
415
  msgstr ""
416
 
417
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:501
 
 
418
  #: includes/admin/libs/class-nivo-core-images.php:425
419
  msgid "Custom Post Type"
420
  msgstr ""
421
 
422
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:522
 
423
  msgid "Select the custom post type you want to use for post thumbnails"
424
  msgstr ""
425
 
426
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:744
 
 
427
  #: includes/admin/libs/class-nivo-core-admin-images.php:142
428
  msgid "Title"
429
  msgstr ""
430
 
431
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:745
 
432
  msgid "Shortcode"
433
  msgstr ""
434
 
435
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:746
 
436
  msgid "Source"
437
  msgstr ""
438
 
439
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:747
 
440
  msgid "Type"
441
  msgstr ""
442
 
443
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:748
 
444
  msgid "Images"
445
  msgstr ""
446
 
447
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:749
 
448
  msgid "Author"
449
  msgstr ""
450
 
451
+ #: includes/admin/libs/class-nivo-core-admin-edit.php:750
 
452
  msgid "Date"
453
  msgstr ""
454
 
 
 
455
  #: includes/admin/libs/class-nivo-core-admin-images.php:55
456
  #: includes/admin/libs/class-nivo-core-admin-images.php:56
457
  msgid "Create %1$s"
458
  msgstr ""
459
 
 
 
 
460
  #: includes/admin/libs/class-nivo-core-admin-images.php:57
461
  #: includes/admin/libs/class-nivo-core-admin-images.php:58
462
  #: includes/admin/libs/class-nivo-core-admin-images.php:64
463
  msgid "Add to %1$s"
464
  msgstr ""
465
 
 
466
  #: includes/admin/libs/class-nivo-core-admin-images.php:60
467
  msgid "Save %1$s"
468
  msgstr ""
469
 
 
 
470
  #: includes/admin/libs/class-nivo-core-admin-images.php:61
471
  #: includes/admin/libs/class-nivo-core-admin-images.php:67
472
  msgid "Update %1$s"
473
  msgstr ""
474
 
 
 
475
  #: includes/admin/libs/class-nivo-core-admin-images.php:62
476
  #: includes/admin/libs/class-nivo-core-admin-images.php:90
477
  msgid "Slide Details"
478
  msgstr ""
479
 
 
480
  #: includes/admin/libs/class-nivo-core-admin-images.php:66
481
  msgid "Add from "
482
  msgstr ""
483
 
 
484
  #: includes/admin/libs/class-nivo-core-admin-images.php:93
485
  msgid "Saved."
486
  msgstr ""
487
 
 
 
488
  #: includes/admin/libs/class-nivo-core-admin-images.php:111
489
  #: includes/admin/libs/class-nivo-core-admin-images.php:137
490
  msgid "Caption"
491
  msgstr ""
492
 
 
 
493
  #: includes/admin/libs/class-nivo-core-admin-images.php:116
494
  #: includes/admin/libs/class-nivo-core-admin-images.php:147
495
  msgid "Alt Text"
496
  msgstr ""
497
 
 
498
  #: includes/admin/libs/class-nivo-core-admin-images.php:121
499
  msgid "Link"
500
  msgstr ""
501
 
 
502
  #: includes/admin/libs/class-nivo-core-images.php:45
503
  msgid "File doesn't exist"
504
  msgstr ""
505
 
 
506
  #: includes/admin/libs/class-nivo-core-images.php:420
507
  msgid "Manual"
508
  msgstr ""
509
 
 
510
  #: includes/admin/libs/class-nivo-core-images.php:422
511
  msgid "Gallery"
512
  msgstr ""
513
 
 
514
  #: includes/admin/libs/class-nivo-core-images.php:424
515
  msgid "Sticky Posts"
516
  msgstr ""
517
 
 
 
518
  #: includes/admin/libs/class-nivo-core-model.php:46
519
  #: includes/admin/libs/class-nivo-core-model.php:49
520
  msgid "%1$s updated."
521
  msgstr ""
522
 
 
523
  #: includes/admin/libs/class-nivo-core-model.php:47
524
  msgid "Custom field updated."
525
  msgstr ""
526
 
 
527
  #: includes/admin/libs/class-nivo-core-model.php:48
528
  msgid "Custom field deleted."
529
  msgstr ""
530
 
 
531
  #: includes/admin/libs/class-nivo-core-model.php:51
532
  msgid "%1$s published."
533
  msgstr ""
534
 
 
535
  #: includes/admin/libs/class-nivo-core-model.php:52
536
  msgid "%1$s saved."
537
  msgstr ""
538
 
 
539
  #: includes/admin/libs/class-nivo-core-model.php:53
540
  msgid "%1$s submitted."
541
  msgstr ""
542
 
 
543
  #: includes/admin/libs/class-nivo-core-model.php:54
544
  msgid ""
545
  "%1$s scheduled for: <strong>%2$s</strong>. <a target=\"_blank\" "
546
  "href=\"%2$s\">Preview %1$s</a>"
547
  msgstr ""
548
 
 
549
  #: includes/admin/libs/class-nivo-core-model.php:55
550
  msgid "%1$s draft updated."
551
  msgstr ""
552
 
 
553
  #: includes/admin/libs/class-nivo-core-model.php:60
554
  msgid "M j, Y @ G:i"
555
  msgstr ""
556
 
 
557
  #: includes/admin/libs/class-nivo-core-model.php:64
558
  msgid "%1$s restored to revision from %2$s"
559
  msgstr ""
560
 
 
561
  #: includes/admin/libs/class-nivo-core-shortcode.php:114
562
  msgid "Invalid %1$s"
563
  msgstr ""
564
 
 
565
  #: includes/admin/libs/class-nivo-core-shortcode.php:122
566
  msgid "Invalid %1$s Slug"
567
  msgstr ""
568
 
 
569
  #: includes/admin/libs/class-nivo-slider-widget.php:33
570
  msgid "Display a Nivo Slider"
571
  msgstr ""
572
 
 
573
  #: includes/admin/libs/class-nivo-slider-widget.php:104
574
  msgid "Title:"
575
  msgstr ""
576
 
 
577
  #: includes/admin/libs/class-nivo-slider-widget.php:119
578
  msgid "Select Slider"
579
  msgstr ""
580
 
 
581
  #: vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-licenser.php:476
582
  msgid ""
583
  "Updating this theme will lose any customizations you have made. Cancel to "
584
  "stop, OK to update."
585
  msgstr ""
586
 
587
+ #: vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-widget-dashboard-blog.php:212
 
 
 
 
 
 
 
 
588
  msgid "Install"
589
  msgstr ""
590
 
nivo-slider-lite.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Slider by Nivo - Responsive Image Slider
4
  * Plugin URI: https://themeisle.com/plugins/nivo-slider-lite
5
  * Description: Nivo Slider is The Most Popular And Easiest to Use WordPress Slider Plugin.
6
- * Version: 2.1.0
7
  * Author: ThemeIsle
8
  * Author URI: https://themeisle.com/
9
  * Text Domain: nivo-slider
@@ -116,11 +116,13 @@ function run_nivo_slider() {
116
  if ( is_readable( $vendor_file ) ) {
117
  require_once $vendor_file;
118
  }
119
- add_filter( 'themeisle_sdk_products', function ( $products ) {
120
- $products[] = NIVO_SLIDER_PLUGIN_FILE;
 
121
 
122
- return $products;
123
- } );
 
124
 
125
  }
126
 
3
  * Plugin Name: Slider by Nivo - Responsive Image Slider
4
  * Plugin URI: https://themeisle.com/plugins/nivo-slider-lite
5
  * Description: Nivo Slider is The Most Popular And Easiest to Use WordPress Slider Plugin.
6
+ * Version: 2.1.1
7
  * Author: ThemeIsle
8
  * Author URI: https://themeisle.com/
9
  * Text Domain: nivo-slider
116
  if ( is_readable( $vendor_file ) ) {
117
  require_once $vendor_file;
118
  }
119
+ add_filter(
120
+ 'themeisle_sdk_products', function ( $products ) {
121
+ $products[] = NIVO_SLIDER_PLUGIN_FILE;
122
 
123
+ return $products;
124
+ }
125
+ );
126
 
127
  }
128
 
package-lock.json ADDED
@@ -0,0 +1,5646 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "nivo-slider-lite",
3
+ "version": "2.1.1",
4
+ "lockfileVersion": 1,
5
+ "requires": true,
6
+ "dependencies": {
7
+ "abbrev": {
8
+ "version": "1.1.1",
9
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
10
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
11
+ "dev": true
12
+ },
13
+ "ajv": {
14
+ "version": "5.5.2",
15
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
16
+ "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
17
+ "dev": true,
18
+ "optional": true,
19
+ "requires": {
20
+ "co": "4.6.0",
21
+ "fast-deep-equal": "1.0.0",
22
+ "fast-json-stable-stringify": "2.0.0",
23
+ "json-schema-traverse": "0.3.1"
24
+ }
25
+ },
26
+ "ansi-gray": {
27
+ "version": "0.1.1",
28
+ "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
29
+ "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=",
30
+ "dev": true,
31
+ "requires": {
32
+ "ansi-wrap": "0.1.0"
33
+ }
34
+ },
35
+ "ansi-regex": {
36
+ "version": "2.1.1",
37
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
38
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
39
+ "dev": true
40
+ },
41
+ "ansi-styles": {
42
+ "version": "2.2.1",
43
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
44
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
45
+ "dev": true
46
+ },
47
+ "ansi-wrap": {
48
+ "version": "0.1.0",
49
+ "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
50
+ "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=",
51
+ "dev": true
52
+ },
53
+ "aproba": {
54
+ "version": "1.2.0",
55
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
56
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
57
+ "dev": true
58
+ },
59
+ "archive-type": {
60
+ "version": "3.2.0",
61
+ "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-3.2.0.tgz",
62
+ "integrity": "sha1-nNnABpV+vpX62tW9YJiUKoE3N/Y=",
63
+ "dev": true,
64
+ "requires": {
65
+ "file-type": "3.9.0"
66
+ }
67
+ },
68
+ "archiver": {
69
+ "version": "1.3.0",
70
+ "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz",
71
+ "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=",
72
+ "dev": true,
73
+ "requires": {
74
+ "archiver-utils": "1.3.0",
75
+ "async": "2.6.0",
76
+ "buffer-crc32": "0.2.13",
77
+ "glob": "7.1.2",
78
+ "lodash": "4.17.4",
79
+ "readable-stream": "2.3.3",
80
+ "tar-stream": "1.5.5",
81
+ "walkdir": "0.0.11",
82
+ "zip-stream": "1.2.0"
83
+ },
84
+ "dependencies": {
85
+ "async": {
86
+ "version": "2.6.0",
87
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
88
+ "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
89
+ "dev": true,
90
+ "requires": {
91
+ "lodash": "4.17.4"
92
+ }
93
+ },
94
+ "glob": {
95
+ "version": "7.1.2",
96
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
97
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
98
+ "dev": true,
99
+ "requires": {
100
+ "fs.realpath": "1.0.0",
101
+ "inflight": "1.0.6",
102
+ "inherits": "2.0.3",
103
+ "minimatch": "3.0.4",
104
+ "once": "1.4.0",
105
+ "path-is-absolute": "1.0.1"
106
+ }
107
+ },
108
+ "lodash": {
109
+ "version": "4.17.4",
110
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
111
+ "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
112
+ "dev": true
113
+ },
114
+ "minimatch": {
115
+ "version": "3.0.4",
116
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
117
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
118
+ "dev": true,
119
+ "requires": {
120
+ "brace-expansion": "1.1.8"
121
+ }
122
+ }
123
+ }
124
+ },
125
+ "archiver-utils": {
126
+ "version": "1.3.0",
127
+ "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz",
128
+ "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=",
129
+ "dev": true,
130
+ "requires": {
131
+ "glob": "7.1.2",
132
+ "graceful-fs": "4.1.11",
133
+ "lazystream": "1.0.0",
134
+ "lodash": "4.17.4",
135
+ "normalize-path": "2.1.1",
136
+ "readable-stream": "2.3.3"
137
+ },
138
+ "dependencies": {
139
+ "glob": {
140
+ "version": "7.1.2",
141
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
142
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
143
+ "dev": true,
144
+ "requires": {
145
+ "fs.realpath": "1.0.0",
146
+ "inflight": "1.0.6",
147
+ "inherits": "2.0.3",
148
+ "minimatch": "3.0.4",
149
+ "once": "1.4.0",
150
+ "path-is-absolute": "1.0.1"
151
+ }
152
+ },
153
+ "graceful-fs": {
154
+ "version": "4.1.11",
155
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
156
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
157
+ "dev": true
158
+ },
159
+ "lodash": {
160
+ "version": "4.17.4",
161
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
162
+ "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
163
+ "dev": true
164
+ },
165
+ "minimatch": {
166
+ "version": "3.0.4",
167
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
168
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
169
+ "dev": true,
170
+ "requires": {
171
+ "brace-expansion": "1.1.8"
172
+ }
173
+ }
174
+ }
175
+ },
176
+ "are-we-there-yet": {
177
+ "version": "1.1.4",
178
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz",
179
+ "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=",
180
+ "dev": true,
181
+ "requires": {
182
+ "delegates": "1.0.0",
183
+ "readable-stream": "2.3.3"
184
+ }
185
+ },
186
+ "argparse": {
187
+ "version": "0.1.16",
188
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz",
189
+ "integrity": "sha1-z9AeD7uj1srtBJ+9dY1A9lGW9Xw=",
190
+ "dev": true,
191
+ "requires": {
192
+ "underscore": "1.7.0",
193
+ "underscore.string": "2.4.0"
194
+ },
195
+ "dependencies": {
196
+ "underscore.string": {
197
+ "version": "2.4.0",
198
+ "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz",
199
+ "integrity": "sha1-jN2PusTi0uoefi6Al8QvRCKA+Fs=",
200
+ "dev": true
201
+ }
202
+ }
203
+ },
204
+ "arr-diff": {
205
+ "version": "2.0.0",
206
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
207
+ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
208
+ "dev": true,
209
+ "requires": {
210
+ "arr-flatten": "1.1.0"
211
+ }
212
+ },
213
+ "arr-flatten": {
214
+ "version": "1.1.0",
215
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
216
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
217
+ "dev": true
218
+ },
219
+ "array-differ": {
220
+ "version": "1.0.0",
221
+ "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz",
222
+ "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=",
223
+ "dev": true
224
+ },
225
+ "array-find-index": {
226
+ "version": "1.0.2",
227
+ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
228
+ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
229
+ "dev": true
230
+ },
231
+ "array-union": {
232
+ "version": "1.0.2",
233
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
234
+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
235
+ "dev": true,
236
+ "requires": {
237
+ "array-uniq": "1.0.3"
238
+ }
239
+ },
240
+ "array-uniq": {
241
+ "version": "1.0.3",
242
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
243
+ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
244
+ "dev": true
245
+ },
246
+ "array-unique": {
247
+ "version": "0.2.1",
248
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
249
+ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
250
+ "dev": true
251
+ },
252
+ "arrify": {
253
+ "version": "1.0.1",
254
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
255
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
256
+ "dev": true
257
+ },
258
+ "asn1": {
259
+ "version": "0.2.3",
260
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
261
+ "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
262
+ "dev": true,
263
+ "optional": true
264
+ },
265
+ "assert-plus": {
266
+ "version": "1.0.0",
267
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
268
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
269
+ "dev": true
270
+ },
271
+ "async": {
272
+ "version": "0.1.22",
273
+ "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz",
274
+ "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=",
275
+ "dev": true
276
+ },
277
+ "async-each-series": {
278
+ "version": "1.1.0",
279
+ "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-1.1.0.tgz",
280
+ "integrity": "sha1-9C/YFV048hpbjqB8KOBj7RcAsTg=",
281
+ "dev": true,
282
+ "optional": true
283
+ },
284
+ "asynckit": {
285
+ "version": "0.4.0",
286
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
287
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
288
+ "dev": true,
289
+ "optional": true
290
+ },
291
+ "autoprefixer": {
292
+ "version": "6.7.7",
293
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz",
294
+ "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=",
295
+ "dev": true,
296
+ "requires": {
297
+ "browserslist": "1.7.7",
298
+ "caniuse-db": "1.0.30000787",
299
+ "normalize-range": "0.1.2",
300
+ "num2fraction": "1.2.2",
301
+ "postcss": "5.2.18",
302
+ "postcss-value-parser": "3.3.0"
303
+ }
304
+ },
305
+ "aws-sign2": {
306
+ "version": "0.7.0",
307
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
308
+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
309
+ "dev": true,
310
+ "optional": true
311
+ },
312
+ "aws4": {
313
+ "version": "1.6.0",
314
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
315
+ "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=",
316
+ "dev": true,
317
+ "optional": true
318
+ },
319
+ "balanced-match": {
320
+ "version": "1.0.0",
321
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
322
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
323
+ "dev": true
324
+ },
325
+ "bcrypt-pbkdf": {
326
+ "version": "1.0.1",
327
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
328
+ "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
329
+ "dev": true,
330
+ "optional": true,
331
+ "requires": {
332
+ "tweetnacl": "0.14.5"
333
+ }
334
+ },
335
+ "beeper": {
336
+ "version": "1.1.1",
337
+ "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz",
338
+ "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=",
339
+ "dev": true
340
+ },
341
+ "bin-build": {
342
+ "version": "2.2.0",
343
+ "resolved": "https://registry.npmjs.org/bin-build/-/bin-build-2.2.0.tgz",
344
+ "integrity": "sha1-EfjdYfcP/Por3KpbRvXo/t1CIcw=",
345
+ "dev": true,
346
+ "optional": true,
347
+ "requires": {
348
+ "archive-type": "3.2.0",
349
+ "decompress": "3.0.0",
350
+ "download": "4.4.3",
351
+ "exec-series": "1.0.3",
352
+ "rimraf": "2.2.8",
353
+ "tempfile": "1.1.1",
354
+ "url-regex": "3.2.0"
355
+ }
356
+ },
357
+ "bin-check": {
358
+ "version": "2.0.0",
359
+ "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-2.0.0.tgz",
360
+ "integrity": "sha1-hvjm9CU4k99g3DFpV/WvAqywWTA=",
361
+ "dev": true,
362
+ "optional": true,
363
+ "requires": {
364
+ "executable": "1.1.0"
365
+ }
366
+ },
367
+ "bin-version": {
368
+ "version": "1.0.4",
369
+ "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-1.0.4.tgz",
370
+ "integrity": "sha1-nrSY7m/Xb3q5p8FgQ2+JV5Q1144=",
371
+ "dev": true,
372
+ "optional": true,
373
+ "requires": {
374
+ "find-versions": "1.2.1"
375
+ }
376
+ },
377
+ "bin-version-check": {
378
+ "version": "2.1.0",
379
+ "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-2.1.0.tgz",
380
+ "integrity": "sha1-5OXfKQuQaffRETJAMe/BP90RpbA=",
381
+ "dev": true,
382
+ "optional": true,
383
+ "requires": {
384
+ "bin-version": "1.0.4",
385
+ "minimist": "1.2.0",
386
+ "semver": "4.3.6",
387
+ "semver-truncate": "1.1.2"
388
+ },
389
+ "dependencies": {
390
+ "minimist": {
391
+ "version": "1.2.0",
392
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
393
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
394
+ "dev": true,
395
+ "optional": true
396
+ },
397
+ "semver": {
398
+ "version": "4.3.6",
399
+ "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
400
+ "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=",
401
+ "dev": true,
402
+ "optional": true
403
+ }
404
+ }
405
+ },
406
+ "bin-wrapper": {
407
+ "version": "3.0.2",
408
+ "resolved": "https://registry.npmjs.org/bin-wrapper/-/bin-wrapper-3.0.2.tgz",
409
+ "integrity": "sha1-Z9MwYmLksaXy+I7iNGT2plVneus=",
410
+ "dev": true,
411
+ "optional": true,
412
+ "requires": {
413
+ "bin-check": "2.0.0",
414
+ "bin-version-check": "2.1.0",
415
+ "download": "4.4.3",
416
+ "each-async": "1.1.1",
417
+ "lazy-req": "1.1.0",
418
+ "os-filter-obj": "1.0.3"
419
+ }
420
+ },
421
+ "bl": {
422
+ "version": "1.2.1",
423
+ "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz",
424
+ "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=",
425
+ "dev": true,
426
+ "requires": {
427
+ "readable-stream": "2.3.3"
428
+ }
429
+ },
430
+ "block-stream": {
431
+ "version": "0.0.9",
432
+ "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
433
+ "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
434
+ "dev": true,
435
+ "optional": true,
436
+ "requires": {
437
+ "inherits": "2.0.3"
438
+ }
439
+ },
440
+ "body-parser": {
441
+ "version": "1.14.2",
442
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.14.2.tgz",
443
+ "integrity": "sha1-EBXLH+LEQ4WCWVgdtTMy+NDPUPk=",
444
+ "dev": true,
445
+ "requires": {
446
+ "bytes": "2.2.0",
447
+ "content-type": "1.0.4",
448
+ "debug": "2.2.0",
449
+ "depd": "1.1.1",
450
+ "http-errors": "1.3.1",
451
+ "iconv-lite": "0.4.13",
452
+ "on-finished": "2.3.0",
453
+ "qs": "5.2.0",
454
+ "raw-body": "2.1.7",
455
+ "type-is": "1.6.15"
456
+ },
457
+ "dependencies": {
458
+ "iconv-lite": {
459
+ "version": "0.4.13",
460
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz",
461
+ "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=",
462
+ "dev": true
463
+ },
464
+ "qs": {
465
+ "version": "5.2.0",
466
+ "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.0.tgz",
467
+ "integrity": "sha1-qfMRQq9GjLcrJbMBNrokVoNJFr4=",
468
+ "dev": true
469
+ }
470
+ }
471
+ },
472
+ "boom": {
473
+ "version": "4.3.1",
474
+ "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
475
+ "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
476
+ "dev": true,
477
+ "optional": true,
478
+ "requires": {
479
+ "hoek": "4.2.0"
480
+ }
481
+ },
482
+ "brace-expansion": {
483
+ "version": "1.1.8",
484
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
485
+ "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
486
+ "dev": true,
487
+ "requires": {
488
+ "balanced-match": "1.0.0",
489
+ "concat-map": "0.0.1"
490
+ }
491
+ },
492
+ "braces": {
493
+ "version": "1.8.5",
494
+ "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
495
+ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
496
+ "dev": true,
497
+ "requires": {
498
+ "expand-range": "1.8.2",
499
+ "preserve": "0.2.0",
500
+ "repeat-element": "1.1.2"
501
+ }
502
+ },
503
+ "browserslist": {
504
+ "version": "1.7.7",
505
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
506
+ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
507
+ "dev": true,
508
+ "requires": {
509
+ "caniuse-db": "1.0.30000787",
510
+ "electron-to-chromium": "1.3.30"
511
+ }
512
+ },
513
+ "buffer-crc32": {
514
+ "version": "0.2.13",
515
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
516
+ "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
517
+ "dev": true
518
+ },
519
+ "buffer-to-vinyl": {
520
+ "version": "1.1.0",
521
+ "resolved": "https://registry.npmjs.org/buffer-to-vinyl/-/buffer-to-vinyl-1.1.0.tgz",
522
+ "integrity": "sha1-APFfruOreh3aLN5tkSG//dB7ImI=",
523
+ "dev": true,
524
+ "requires": {
525
+ "file-type": "3.9.0",
526
+ "readable-stream": "2.3.3",
527
+ "uuid": "2.0.3",
528
+ "vinyl": "1.2.0"
529
+ },
530
+ "dependencies": {
531
+ "uuid": {
532
+ "version": "2.0.3",
533
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz",
534
+ "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=",
535
+ "dev": true
536
+ }
537
+ }
538
+ },
539
+ "builtin-modules": {
540
+ "version": "1.1.1",
541
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
542
+ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
543
+ "dev": true
544
+ },
545
+ "bytes": {
546
+ "version": "2.2.0",
547
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.2.0.tgz",
548
+ "integrity": "sha1-/TVGSkA/b5EXwt42Cez/nK4ABYg=",
549
+ "dev": true
550
+ },
551
+ "cache-swap": {
552
+ "version": "0.0.6",
553
+ "resolved": "https://registry.npmjs.org/cache-swap/-/cache-swap-0.0.6.tgz",
554
+ "integrity": "sha1-F834NebDAf0VgJCwPRzDb0Z7FpU=",
555
+ "dev": true,
556
+ "requires": {
557
+ "async": "0.2.10",
558
+ "lodash": "1.1.1",
559
+ "rimraf": "2.1.4"
560
+ },
561
+ "dependencies": {
562
+ "async": {
563
+ "version": "0.2.10",
564
+ "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
565
+ "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=",
566
+ "dev": true
567
+ },
568
+ "lodash": {
569
+ "version": "1.1.1",
570
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.1.1.tgz",
571
+ "integrity": "sha1-QaKy6aAOZNbRmZ8UP/awdV9ruyQ=",
572
+ "dev": true
573
+ },
574
+ "rimraf": {
575
+ "version": "2.1.4",
576
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.1.4.tgz",
577
+ "integrity": "sha1-Wm62Lu2gaPUe3lDymz5c0i89m7I=",
578
+ "dev": true,
579
+ "requires": {
580
+ "graceful-fs": "1.2.3"
581
+ }
582
+ }
583
+ }
584
+ },
585
+ "camelcase": {
586
+ "version": "2.1.1",
587
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
588
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
589
+ "dev": true
590
+ },
591
+ "camelcase-keys": {
592
+ "version": "2.1.0",
593
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
594
+ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
595
+ "dev": true,
596
+ "requires": {
597
+ "camelcase": "2.1.1",
598
+ "map-obj": "1.0.1"
599
+ }
600
+ },
601
+ "caniuse-db": {
602
+ "version": "1.0.30000787",
603
+ "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000787.tgz",
604
+ "integrity": "sha1-ygeigb5Taoi9f6yWuolfPPU/gRs=",
605
+ "dev": true
606
+ },
607
+ "capture-stack-trace": {
608
+ "version": "1.0.0",
609
+ "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz",
610
+ "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=",
611
+ "dev": true
612
+ },
613
+ "caseless": {
614
+ "version": "0.12.0",
615
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
616
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
617
+ "dev": true,
618
+ "optional": true
619
+ },
620
+ "caw": {
621
+ "version": "1.2.0",
622
+ "resolved": "https://registry.npmjs.org/caw/-/caw-1.2.0.tgz",
623
+ "integrity": "sha1-/7Im/n78VHKI3GLuPpcHPCEtEDQ=",
624
+ "dev": true,
625
+ "requires": {
626
+ "get-proxy": "1.1.0",
627
+ "is-obj": "1.0.1",
628
+ "object-assign": "3.0.0",
629
+ "tunnel-agent": "0.4.3"
630
+ },
631
+ "dependencies": {
632
+ "object-assign": {
633
+ "version": "3.0.0",
634
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz",
635
+ "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=",
636
+ "dev": true
637
+ },
638
+ "tunnel-agent": {
639
+ "version": "0.4.3",
640
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
641
+ "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=",
642
+ "dev": true
643
+ }
644
+ }
645
+ },
646
+ "chalk": {
647
+ "version": "1.1.3",
648
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
649
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
650
+ "dev": true,
651
+ "requires": {
652
+ "ansi-styles": "2.2.1",
653
+ "escape-string-regexp": "1.0.5",
654
+ "has-ansi": "2.0.0",
655
+ "strip-ansi": "3.0.1",
656
+ "supports-color": "2.0.0"
657
+ },
658
+ "dependencies": {
659
+ "supports-color": {
660
+ "version": "2.0.0",
661
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
662
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
663
+ "dev": true
664
+ }
665
+ }
666
+ },
667
+ "chownr": {
668
+ "version": "1.0.1",
669
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz",
670
+ "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=",
671
+ "dev": true,
672
+ "optional": true
673
+ },
674
+ "clap": {
675
+ "version": "1.2.3",
676
+ "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz",
677
+ "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==",
678
+ "dev": true,
679
+ "optional": true,
680
+ "requires": {
681
+ "chalk": "1.1.3"
682
+ }
683
+ },
684
+ "cli": {
685
+ "version": "1.0.1",
686
+ "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz",
687
+ "integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=",
688
+ "dev": true,
689
+ "requires": {
690
+ "exit": "0.1.2",
691
+ "glob": "7.1.2"
692
+ },
693
+ "dependencies": {
694
+ "glob": {
695
+ "version": "7.1.2",
696
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
697
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
698
+ "dev": true,
699
+ "requires": {
700
+ "fs.realpath": "1.0.0",
701
+ "inflight": "1.0.6",
702
+ "inherits": "2.0.3",
703
+ "minimatch": "3.0.4",
704
+ "once": "1.4.0",
705
+ "path-is-absolute": "1.0.1"
706
+ }
707
+ },
708
+ "minimatch": {
709
+ "version": "3.0.4",
710
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
711
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
712
+ "dev": true,
713
+ "requires": {
714
+ "brace-expansion": "1.1.8"
715
+ }
716
+ }
717
+ }
718
+ },
719
+ "clone": {
720
+ "version": "1.0.3",
721
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz",
722
+ "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=",
723
+ "dev": true
724
+ },
725
+ "clone-stats": {
726
+ "version": "0.0.1",
727
+ "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz",
728
+ "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=",
729
+ "dev": true
730
+ },
731
+ "co": {
732
+ "version": "4.6.0",
733
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
734
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
735
+ "dev": true,
736
+ "optional": true
737
+ },
738
+ "coa": {
739
+ "version": "1.0.4",
740
+ "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz",
741
+ "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=",
742
+ "dev": true,
743
+ "optional": true,
744
+ "requires": {
745
+ "q": "1.5.1"
746
+ }
747
+ },
748
+ "code-point-at": {
749
+ "version": "1.1.0",
750
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
751
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
752
+ "dev": true
753
+ },
754
+ "coffee-script": {
755
+ "version": "1.3.3",
756
+ "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz",
757
+ "integrity": "sha1-FQ1rTLUiiUNp7+1qIQHCC8f0pPQ=",
758
+ "dev": true
759
+ },
760
+ "color-support": {
761
+ "version": "1.1.3",
762
+ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
763
+ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
764
+ "dev": true
765
+ },
766
+ "colors": {
767
+ "version": "0.6.2",
768
+ "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz",
769
+ "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=",
770
+ "dev": true
771
+ },
772
+ "combined-stream": {
773
+ "version": "1.0.5",
774
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
775
+ "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=",
776
+ "dev": true,
777
+ "requires": {
778
+ "delayed-stream": "1.0.0"
779
+ }
780
+ },
781
+ "commander": {
782
+ "version": "2.8.1",
783
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz",
784
+ "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=",
785
+ "dev": true,
786
+ "requires": {
787
+ "graceful-readlink": "1.0.1"
788
+ }
789
+ },
790
+ "compress-commons": {
791
+ "version": "1.2.2",
792
+ "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz",
793
+ "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=",
794
+ "dev": true,
795
+ "requires": {
796
+ "buffer-crc32": "0.2.13",
797
+ "crc32-stream": "2.0.0",
798
+ "normalize-path": "2.1.1",
799
+ "readable-stream": "2.3.3"
800
+ }
801
+ },
802
+ "concat-map": {
803
+ "version": "0.0.1",
804
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
805
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
806
+ "dev": true
807
+ },
808
+ "concat-stream": {
809
+ "version": "1.6.0",
810
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz",
811
+ "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=",
812
+ "dev": true,
813
+ "requires": {
814
+ "inherits": "2.0.3",
815
+ "readable-stream": "2.3.3",
816
+ "typedarray": "0.0.6"
817
+ }
818
+ },
819
+ "console-browserify": {
820
+ "version": "1.1.0",
821
+ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
822
+ "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
823
+ "dev": true,
824
+ "requires": {
825
+ "date-now": "0.1.4"
826
+ }
827
+ },
828
+ "console-control-strings": {
829
+ "version": "1.1.0",
830
+ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
831
+ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
832
+ "dev": true
833
+ },
834
+ "console-stream": {
835
+ "version": "0.1.1",
836
+ "resolved": "https://registry.npmjs.org/console-stream/-/console-stream-0.1.1.tgz",
837
+ "integrity": "sha1-oJX+B7IEZZVfL6/Si11yvM2UnUQ=",
838
+ "dev": true,
839
+ "optional": true
840
+ },
841
+ "content-type": {
842
+ "version": "1.0.4",
843
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
844
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
845
+ "dev": true
846
+ },
847
+ "convert-source-map": {
848
+ "version": "1.5.1",
849
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz",
850
+ "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=",
851
+ "dev": true
852
+ },
853
+ "core-util-is": {
854
+ "version": "1.0.2",
855
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
856
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
857
+ "dev": true
858
+ },
859
+ "crc": {
860
+ "version": "3.5.0",
861
+ "resolved": "https://registry.npmjs.org/crc/-/crc-3.5.0.tgz",
862
+ "integrity": "sha1-mLi6fUiWZbo5efWbITgTdBAaGWQ=",
863
+ "dev": true
864
+ },
865
+ "crc32-stream": {
866
+ "version": "2.0.0",
867
+ "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz",
868
+ "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=",
869
+ "dev": true,
870
+ "requires": {
871
+ "crc": "3.5.0",
872
+ "readable-stream": "2.3.3"
873
+ }
874
+ },
875
+ "create-error-class": {
876
+ "version": "3.0.2",
877
+ "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
878
+ "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
879
+ "dev": true,
880
+ "requires": {
881
+ "capture-stack-trace": "1.0.0"
882
+ }
883
+ },
884
+ "cryptiles": {
885
+ "version": "3.1.2",
886
+ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz",
887
+ "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
888
+ "dev": true,
889
+ "optional": true,
890
+ "requires": {
891
+ "boom": "5.2.0"
892
+ },
893
+ "dependencies": {
894
+ "boom": {
895
+ "version": "5.2.0",
896
+ "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
897
+ "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
898
+ "dev": true,
899
+ "optional": true,
900
+ "requires": {
901
+ "hoek": "4.2.0"
902
+ }
903
+ }
904
+ }
905
+ },
906
+ "cson": {
907
+ "version": "3.0.2",
908
+ "resolved": "https://registry.npmjs.org/cson/-/cson-3.0.2.tgz",
909
+ "integrity": "sha1-g+6Qids8JUvsHpjkmNmqzxGtzFQ=",
910
+ "dev": true,
911
+ "requires": {
912
+ "coffee-script": "1.12.7",
913
+ "cson-parser": "1.3.5",
914
+ "extract-opts": "3.3.1",
915
+ "requirefresh": "2.1.0",
916
+ "safefs": "4.1.0"
917
+ },
918
+ "dependencies": {
919
+ "coffee-script": {
920
+ "version": "1.12.7",
921
+ "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz",
922
+ "integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==",
923
+ "dev": true
924
+ }
925
+ }
926
+ },
927
+ "cson-parser": {
928
+ "version": "1.3.5",
929
+ "resolved": "https://registry.npmjs.org/cson-parser/-/cson-parser-1.3.5.tgz",
930
+ "integrity": "sha1-fsZ14DkUVTO/KmqFYHPxWZ2cLSQ=",
931
+ "dev": true,
932
+ "requires": {
933
+ "coffee-script": "1.12.7"
934
+ },
935
+ "dependencies": {
936
+ "coffee-script": {
937
+ "version": "1.12.7",
938
+ "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz",
939
+ "integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==",
940
+ "dev": true
941
+ }
942
+ }
943
+ },
944
+ "cssbeautify": {
945
+ "version": "0.3.1",
946
+ "resolved": "https://registry.npmjs.org/cssbeautify/-/cssbeautify-0.3.1.tgz",
947
+ "integrity": "sha1-Et0fc0A1wub6ymfcvc73TkKBE5c=",
948
+ "dev": true
949
+ },
950
+ "csscomb": {
951
+ "version": "3.1.8",
952
+ "resolved": "https://registry.npmjs.org/csscomb/-/csscomb-3.1.8.tgz",
953
+ "integrity": "sha1-qKc4iE9Am6817JRhr8UuHHW9I6I=",
954
+ "dev": true,
955
+ "requires": {
956
+ "commander": "2.0.0",
957
+ "csscomb-core": "3.0.0-3.1",
958
+ "gonzales-pe": "3.0.0-28",
959
+ "vow": "0.4.4"
960
+ },
961
+ "dependencies": {
962
+ "commander": {
963
+ "version": "2.0.0",
964
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz",
965
+ "integrity": "sha1-0bhvkB+LZL2UG96tr5JFMDk76Sg=",
966
+ "dev": true
967
+ }
968
+ }
969
+ },
970
+ "csscomb-core": {
971
+ "version": "3.0.0-3.1",
972
+ "resolved": "https://registry.npmjs.org/csscomb-core/-/csscomb-core-3.0.0-3.1.tgz",
973
+ "integrity": "sha1-tBHI18/g3z8v4d+E0b1kpvAEbGg=",
974
+ "dev": true,
975
+ "requires": {
976
+ "gonzales-pe": "3.0.0-28",
977
+ "minimatch": "0.2.12",
978
+ "vow": "0.4.4",
979
+ "vow-fs": "0.3.2"
980
+ },
981
+ "dependencies": {
982
+ "minimatch": {
983
+ "version": "0.2.12",
984
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.12.tgz",
985
+ "integrity": "sha1-6oKgEqxmLH3fqhRPHBR+aUb12vs=",
986
+ "dev": true,
987
+ "requires": {
988
+ "lru-cache": "2.7.3",
989
+ "sigmund": "1.0.1"
990
+ }
991
+ }
992
+ }
993
+ },
994
+ "csso": {
995
+ "version": "2.0.0",
996
+ "resolved": "https://registry.npmjs.org/csso/-/csso-2.0.0.tgz",
997
+ "integrity": "sha1-F4tDpEYhIhwndWCG9THgL0KQDug=",
998
+ "dev": true,
999
+ "optional": true,
1000
+ "requires": {
1001
+ "clap": "1.2.3",
1002
+ "source-map": "0.5.7"
1003
+ }
1004
+ },
1005
+ "currently-unhandled": {
1006
+ "version": "0.4.1",
1007
+ "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
1008
+ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
1009
+ "dev": true,
1010
+ "requires": {
1011
+ "array-find-index": "1.0.2"
1012
+ }
1013
+ },
1014
+ "dashdash": {
1015
+ "version": "1.14.1",
1016
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
1017
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
1018
+ "dev": true,
1019
+ "optional": true,
1020
+ "requires": {
1021
+ "assert-plus": "1.0.0"
1022
+ }
1023
+ },
1024
+ "date-now": {
1025
+ "version": "0.1.4",
1026
+ "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
1027
+ "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
1028
+ "dev": true
1029
+ },
1030
+ "date-time": {
1031
+ "version": "1.1.0",
1032
+ "resolved": "https://registry.npmjs.org/date-time/-/date-time-1.1.0.tgz",
1033
+ "integrity": "sha1-GIdtC9pMGf5w3Tv0sDTygbEqQLY=",
1034
+ "dev": true,
1035
+ "requires": {
1036
+ "time-zone": "0.1.0"
1037
+ }
1038
+ },
1039
+ "dateformat": {
1040
+ "version": "1.0.2-1.2.3",
1041
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz",
1042
+ "integrity": "sha1-sCIMAt6YYXQztyhRz0fePfLNvuk=",
1043
+ "dev": true
1044
+ },
1045
+ "debug": {
1046
+ "version": "2.2.0",
1047
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
1048
+ "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
1049
+ "dev": true,
1050
+ "requires": {
1051
+ "ms": "0.7.1"
1052
+ }
1053
+ },
1054
+ "decamelize": {
1055
+ "version": "1.2.0",
1056
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
1057
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
1058
+ "dev": true
1059
+ },
1060
+ "decompress": {
1061
+ "version": "3.0.0",
1062
+ "resolved": "https://registry.npmjs.org/decompress/-/decompress-3.0.0.tgz",
1063
+ "integrity": "sha1-rx3VDQbjv8QyRh033hGzjA2ZG+0=",
1064
+ "dev": true,
1065
+ "requires": {
1066
+ "buffer-to-vinyl": "1.1.0",
1067
+ "concat-stream": "1.6.0",
1068
+ "decompress-tar": "3.1.0",
1069
+ "decompress-tarbz2": "3.1.0",
1070
+ "decompress-targz": "3.1.0",
1071
+ "decompress-unzip": "3.4.0",
1072
+ "stream-combiner2": "1.1.1",
1073
+ "vinyl-assign": "1.2.1",
1074
+ "vinyl-fs": "2.4.4"
1075
+ }
1076
+ },
1077
+ "decompress-tar": {
1078
+ "version": "3.1.0",
1079
+ "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-3.1.0.tgz",
1080
+ "integrity": "sha1-IXx4n5uURQ76rcXF5TeXj8MzxGY=",
1081
+ "dev": true,
1082
+ "requires": {
1083
+ "is-tar": "1.0.0",
1084
+ "object-assign": "2.1.1",
1085
+ "strip-dirs": "1.1.1",
1086
+ "tar-stream": "1.5.5",
1087
+ "through2": "0.6.5",
1088
+ "vinyl": "0.4.6"
1089
+ },
1090
+ "dependencies": {
1091
+ "clone": {
1092
+ "version": "0.2.0",
1093
+ "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz",
1094
+ "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=",
1095
+ "dev": true
1096
+ },
1097
+ "object-assign": {
1098
+ "version": "2.1.1",
1099
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz",
1100
+ "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=",
1101
+ "dev": true
1102
+ },
1103
+ "vinyl": {
1104
+ "version": "0.4.6",
1105
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
1106
+ "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
1107
+ "dev": true,
1108
+ "requires": {
1109
+ "clone": "0.2.0",
1110
+ "clone-stats": "0.0.1"
1111
+ }
1112
+ }
1113
+ }
1114
+ },
1115
+ "decompress-tarbz2": {
1116
+ "version": "3.1.0",
1117
+ "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-3.1.0.tgz",
1118
+ "integrity": "sha1-iyOTVoE1X58YnYclag+L3ZbZZm0=",
1119
+ "dev": true,
1120
+ "requires": {
1121
+ "is-bzip2": "1.0.0",
1122
+ "object-assign": "2.1.1",
1123
+ "seek-bzip": "1.0.5",
1124
+ "strip-dirs": "1.1.1",
1125
+ "tar-stream": "1.5.5",
1126
+ "through2": "0.6.5",
1127
+ "vinyl": "0.4.6"
1128
+ },
1129
+ "dependencies": {
1130
+ "clone": {
1131
+ "version": "0.2.0",
1132
+ "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz",
1133
+ "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=",
1134
+ "dev": true
1135
+ },
1136
+ "object-assign": {
1137
+ "version": "2.1.1",
1138
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz",
1139
+ "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=",
1140
+ "dev": true
1141
+ },
1142
+ "vinyl": {
1143
+ "version": "0.4.6",
1144
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
1145
+ "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
1146
+ "dev": true,
1147
+ "requires": {
1148
+ "clone": "0.2.0",
1149
+ "clone-stats": "0.0.1"
1150
+ }
1151
+ }
1152
+ }
1153
+ },
1154
+ "decompress-targz": {
1155
+ "version": "3.1.0",
1156
+ "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-3.1.0.tgz",
1157
+ "integrity": "sha1-ssE9+YFmJomRtxXWRH9kLpaW9aA=",
1158
+ "dev": true,
1159
+ "requires": {
1160
+ "is-gzip": "1.0.0",
1161
+ "object-assign": "2.1.1",
1162
+ "strip-dirs": "1.1.1",
1163
+ "tar-stream": "1.5.5",
1164
+ "through2": "0.6.5",
1165
+ "vinyl": "0.4.6"
1166
+ },
1167
+ "dependencies": {
1168
+ "clone": {
1169
+ "version": "0.2.0",
1170
+ "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz",
1171
+ "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=",
1172
+ "dev": true
1173
+ },
1174
+ "object-assign": {
1175
+ "version": "2.1.1",
1176
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz",
1177
+ "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=",
1178
+ "dev": true
1179
+ },
1180
+ "vinyl": {
1181
+ "version": "0.4.6",
1182
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
1183
+ "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
1184
+ "dev": true,
1185
+ "requires": {
1186
+ "clone": "0.2.0",
1187
+ "clone-stats": "0.0.1"
1188
+ }
1189
+ }
1190
+ }
1191
+ },
1192
+ "decompress-unzip": {
1193
+ "version": "3.4.0",
1194
+ "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-3.4.0.tgz",
1195
+ "integrity": "sha1-YUdbQVIGa74/7hL51inRX+ZHjus=",
1196
+ "dev": true,
1197
+ "requires": {
1198
+ "is-zip": "1.0.0",
1199
+ "read-all-stream": "3.1.0",
1200
+ "stat-mode": "0.2.2",
1201
+ "strip-dirs": "1.1.1",
1202
+ "through2": "2.0.3",
1203
+ "vinyl": "1.2.0",
1204
+ "yauzl": "2.9.1"
1205
+ },
1206
+ "dependencies": {
1207
+ "through2": {
1208
+ "version": "2.0.3",
1209
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
1210
+ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
1211
+ "dev": true,
1212
+ "requires": {
1213
+ "readable-stream": "2.3.3",
1214
+ "xtend": "4.0.1"
1215
+ }
1216
+ }
1217
+ }
1218
+ },
1219
+ "deep-extend": {
1220
+ "version": "0.4.2",
1221
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz",
1222
+ "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=",
1223
+ "dev": true
1224
+ },
1225
+ "delayed-stream": {
1226
+ "version": "1.0.0",
1227
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
1228
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
1229
+ "dev": true
1230
+ },
1231
+ "delegates": {
1232
+ "version": "1.0.0",
1233
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
1234
+ "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
1235
+ "dev": true
1236
+ },
1237
+ "depd": {
1238
+ "version": "1.1.1",
1239
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
1240
+ "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=",
1241
+ "dev": true
1242
+ },
1243
+ "detect-libc": {
1244
+ "version": "0.2.0",
1245
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-0.2.0.tgz",
1246
+ "integrity": "sha1-R/31ZzSKF+wl/L8LnkRjSKdvn7U=",
1247
+ "dev": true,
1248
+ "optional": true
1249
+ },
1250
+ "diff": {
1251
+ "version": "2.2.3",
1252
+ "resolved": "https://registry.npmjs.org/diff/-/diff-2.2.3.tgz",
1253
+ "integrity": "sha1-YOr9DSjukG5Oj/ClLBIpUhAzv5k=",
1254
+ "dev": true
1255
+ },
1256
+ "dom-serializer": {
1257
+ "version": "0.1.0",
1258
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
1259
+ "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
1260
+ "dev": true,
1261
+ "requires": {
1262
+ "domelementtype": "1.1.3",
1263
+ "entities": "1.1.1"
1264
+ },
1265
+ "dependencies": {
1266
+ "domelementtype": {
1267
+ "version": "1.1.3",
1268
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
1269
+ "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=",
1270
+ "dev": true
1271
+ },
1272
+ "entities": {
1273
+ "version": "1.1.1",
1274
+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
1275
+ "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=",
1276
+ "dev": true
1277
+ }
1278
+ }
1279
+ },
1280
+ "domelementtype": {
1281
+ "version": "1.3.0",
1282
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
1283
+ "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=",
1284
+ "dev": true
1285
+ },
1286
+ "domhandler": {
1287
+ "version": "2.3.0",
1288
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz",
1289
+ "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=",
1290
+ "dev": true,
1291
+ "requires": {
1292
+ "domelementtype": "1.3.0"
1293
+ }
1294
+ },
1295
+ "domutils": {
1296
+ "version": "1.5.1",
1297
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
1298
+ "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
1299
+ "dev": true,
1300
+ "requires": {
1301
+ "dom-serializer": "0.1.0",
1302
+ "domelementtype": "1.3.0"
1303
+ }
1304
+ },
1305
+ "download": {
1306
+ "version": "4.4.3",
1307
+ "resolved": "https://registry.npmjs.org/download/-/download-4.4.3.tgz",
1308
+ "integrity": "sha1-qlX9rTktldS2jowr4D4MKqIbqaw=",
1309
+ "dev": true,
1310
+ "requires": {
1311
+ "caw": "1.2.0",
1312
+ "concat-stream": "1.6.0",
1313
+ "each-async": "1.1.1",
1314
+ "filenamify": "1.2.1",
1315
+ "got": "5.7.1",
1316
+ "gulp-decompress": "1.2.0",
1317
+ "gulp-rename": "1.2.2",
1318
+ "is-url": "1.2.2",
1319
+ "object-assign": "4.1.1",
1320
+ "read-all-stream": "3.1.0",
1321
+ "readable-stream": "2.3.3",
1322
+ "stream-combiner2": "1.1.1",
1323
+ "vinyl": "1.2.0",
1324
+ "vinyl-fs": "2.4.4",
1325
+ "ware": "1.3.0"
1326
+ }
1327
+ },
1328
+ "duplexer2": {
1329
+ "version": "0.1.4",
1330
+ "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
1331
+ "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
1332
+ "dev": true,
1333
+ "requires": {
1334
+ "readable-stream": "2.3.3"
1335
+ }
1336
+ },
1337
+ "duplexify": {
1338
+ "version": "3.5.1",
1339
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.1.tgz",
1340
+ "integrity": "sha512-j5goxHTwVED1Fpe5hh3q9R93Kip0Bg2KVAt4f8CEYM3UEwYcPSvWbXaUQOzdX/HtiNomipv+gU7ASQPDbV7pGQ==",
1341
+ "dev": true,
1342
+ "requires": {
1343
+ "end-of-stream": "1.4.0",
1344
+ "inherits": "2.0.3",
1345
+ "readable-stream": "2.3.3",
1346
+ "stream-shift": "1.0.0"
1347
+ }
1348
+ },
1349
+ "each-async": {
1350
+ "version": "1.1.1",
1351
+ "resolved": "https://registry.npmjs.org/each-async/-/each-async-1.1.1.tgz",
1352
+ "integrity": "sha1-3uUim98KtrogEqOV4bhpq/iBNHM=",
1353
+ "dev": true,
1354
+ "requires": {
1355
+ "onetime": "1.1.0",
1356
+ "set-immediate-shim": "1.0.1"
1357
+ }
1358
+ },
1359
+ "eachr": {
1360
+ "version": "3.2.0",
1361
+ "resolved": "https://registry.npmjs.org/eachr/-/eachr-3.2.0.tgz",
1362
+ "integrity": "sha1-LDXkPqCGUW95l8+At6pk1VpKRIQ=",
1363
+ "dev": true,
1364
+ "requires": {
1365
+ "editions": "1.3.3",
1366
+ "typechecker": "4.4.1"
1367
+ }
1368
+ },
1369
+ "ecc-jsbn": {
1370
+ "version": "0.1.1",
1371
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
1372
+ "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
1373
+ "dev": true,
1374
+ "optional": true,
1375
+ "requires": {
1376
+ "jsbn": "0.1.1"
1377
+ }
1378
+ },
1379
+ "editions": {
1380
+ "version": "1.3.3",
1381
+ "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.3.tgz",
1382
+ "integrity": "sha1-CQcQG92iD6w8vjNMJ8vQaI3Jmls=",
1383
+ "dev": true
1384
+ },
1385
+ "ee-first": {
1386
+ "version": "1.1.1",
1387
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
1388
+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
1389
+ "dev": true
1390
+ },
1391
+ "electron-releases": {
1392
+ "version": "2.1.0",
1393
+ "resolved": "https://registry.npmjs.org/electron-releases/-/electron-releases-2.1.0.tgz",
1394
+ "integrity": "sha512-cyKFD1bTE/UgULXfaueIN1k5EPFzs+FRc/rvCY5tIynefAPqopQEgjr0EzY+U3Dqrk/G4m9tXSPuZ77v6dL/Rw==",
1395
+ "dev": true
1396
+ },
1397
+ "electron-to-chromium": {
1398
+ "version": "1.3.30",
1399
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.30.tgz",
1400
+ "integrity": "sha512-zx1Prv7kYLfc4OA60FhxGbSo4qrEjgSzpo1/37i7l9ltXPYOoQBtjQxY9KmsgfHnBxHlBGXwLlsbt/gub1w5lw==",
1401
+ "dev": true,
1402
+ "requires": {
1403
+ "electron-releases": "2.1.0"
1404
+ }
1405
+ },
1406
+ "encoding": {
1407
+ "version": "0.1.12",
1408
+ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
1409
+ "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
1410
+ "dev": true,
1411
+ "requires": {
1412
+ "iconv-lite": "0.4.19"
1413
+ },
1414
+ "dependencies": {
1415
+ "iconv-lite": {
1416
+ "version": "0.4.19",
1417
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
1418
+ "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
1419
+ "dev": true
1420
+ }
1421
+ }
1422
+ },
1423
+ "end-of-stream": {
1424
+ "version": "1.4.0",
1425
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz",
1426
+ "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=",
1427
+ "dev": true,
1428
+ "requires": {
1429
+ "once": "1.4.0"
1430
+ }
1431
+ },
1432
+ "entities": {
1433
+ "version": "1.0.0",
1434
+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz",
1435
+ "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=",
1436
+ "dev": true
1437
+ },
1438
+ "error-ex": {
1439
+ "version": "1.3.1",
1440
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
1441
+ "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
1442
+ "dev": true,
1443
+ "requires": {
1444
+ "is-arrayish": "0.2.1"
1445
+ }
1446
+ },
1447
+ "escape-string-regexp": {
1448
+ "version": "1.0.5",
1449
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
1450
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
1451
+ "dev": true
1452
+ },
1453
+ "esprima": {
1454
+ "version": "1.0.4",
1455
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz",
1456
+ "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=",
1457
+ "dev": true
1458
+ },
1459
+ "eventemitter2": {
1460
+ "version": "0.4.14",
1461
+ "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz",
1462
+ "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=",
1463
+ "dev": true
1464
+ },
1465
+ "exec-buffer": {
1466
+ "version": "2.0.1",
1467
+ "resolved": "https://registry.npmjs.org/exec-buffer/-/exec-buffer-2.0.1.tgz",
1468
+ "integrity": "sha1-ACijG+CxRgth0HX5avRYO54zXqA=",
1469
+ "dev": true,
1470
+ "optional": true,
1471
+ "requires": {
1472
+ "rimraf": "2.2.8",
1473
+ "tempfile": "1.1.1"
1474
+ }
1475
+ },
1476
+ "exec-series": {
1477
+ "version": "1.0.3",
1478
+ "resolved": "https://registry.npmjs.org/exec-series/-/exec-series-1.0.3.tgz",
1479
+ "integrity": "sha1-bSV6m+rEgqhyx3g7yGFYOfx3FDo=",
1480
+ "dev": true,
1481
+ "optional": true,
1482
+ "requires": {
1483
+ "async-each-series": "1.1.0",
1484
+ "object-assign": "4.1.1"
1485
+ }
1486
+ },
1487
+ "executable": {
1488
+ "version": "1.1.0",
1489
+ "resolved": "https://registry.npmjs.org/executable/-/executable-1.1.0.tgz",
1490
+ "integrity": "sha1-h3mA6REvM5EGbaNyZd562ENKtNk=",
1491
+ "dev": true,
1492
+ "optional": true,
1493
+ "requires": {
1494
+ "meow": "3.7.0"
1495
+ }
1496
+ },
1497
+ "exit": {
1498
+ "version": "0.1.2",
1499
+ "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
1500
+ "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
1501
+ "dev": true
1502
+ },
1503
+ "expand-brackets": {
1504
+ "version": "0.1.5",
1505
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
1506
+ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
1507
+ "dev": true,
1508
+ "requires": {
1509
+ "is-posix-bracket": "0.1.1"
1510
+ }
1511
+ },
1512
+ "expand-range": {
1513
+ "version": "1.8.2",
1514
+ "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
1515
+ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
1516
+ "dev": true,
1517
+ "requires": {
1518
+ "fill-range": "2.2.3"
1519
+ }
1520
+ },
1521
+ "expand-template": {
1522
+ "version": "1.1.0",
1523
+ "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-1.1.0.tgz",
1524
+ "integrity": "sha512-kkjwkMqj0h4w/sb32ERCDxCQkREMCAgS39DscDnSwDsbxnwwM1BTZySdC3Bn1lhY7vL08n9GoO/fVTynjDgRyQ==",
1525
+ "dev": true,
1526
+ "optional": true
1527
+ },
1528
+ "extend": {
1529
+ "version": "3.0.1",
1530
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
1531
+ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
1532
+ "dev": true
1533
+ },
1534
+ "extend-shallow": {
1535
+ "version": "2.0.1",
1536
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
1537
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
1538
+ "dev": true,
1539
+ "requires": {
1540
+ "is-extendable": "0.1.1"
1541
+ }
1542
+ },
1543
+ "extglob": {
1544
+ "version": "0.3.2",
1545
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
1546
+ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
1547
+ "dev": true,
1548
+ "requires": {
1549
+ "is-extglob": "1.0.0"
1550
+ },
1551
+ "dependencies": {
1552
+ "is-extglob": {
1553
+ "version": "1.0.0",
1554
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
1555
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
1556
+ "dev": true
1557
+ }
1558
+ }
1559
+ },
1560
+ "extract-opts": {
1561
+ "version": "3.3.1",
1562
+ "resolved": "https://registry.npmjs.org/extract-opts/-/extract-opts-3.3.1.tgz",
1563
+ "integrity": "sha1-WrvtyYwNUgLjJ4cn+Rktfghsa+E=",
1564
+ "dev": true,
1565
+ "requires": {
1566
+ "eachr": "3.2.0",
1567
+ "editions": "1.3.3",
1568
+ "typechecker": "4.4.1"
1569
+ }
1570
+ },
1571
+ "extsprintf": {
1572
+ "version": "1.3.0",
1573
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
1574
+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
1575
+ "dev": true
1576
+ },
1577
+ "fancy-log": {
1578
+ "version": "1.3.2",
1579
+ "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz",
1580
+ "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=",
1581
+ "dev": true,
1582
+ "requires": {
1583
+ "ansi-gray": "0.1.1",
1584
+ "color-support": "1.1.3",
1585
+ "time-stamp": "1.1.0"
1586
+ }
1587
+ },
1588
+ "fast-deep-equal": {
1589
+ "version": "1.0.0",
1590
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz",
1591
+ "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=",
1592
+ "dev": true,
1593
+ "optional": true
1594
+ },
1595
+ "fast-json-stable-stringify": {
1596
+ "version": "2.0.0",
1597
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
1598
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
1599
+ "dev": true,
1600
+ "optional": true
1601
+ },
1602
+ "faye-websocket": {
1603
+ "version": "0.10.0",
1604
+ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
1605
+ "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
1606
+ "dev": true,
1607
+ "requires": {
1608
+ "websocket-driver": "0.7.0"
1609
+ }
1610
+ },
1611
+ "fd-slicer": {
1612
+ "version": "1.0.1",
1613
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
1614
+ "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
1615
+ "dev": true,
1616
+ "requires": {
1617
+ "pend": "1.2.0"
1618
+ }
1619
+ },
1620
+ "figures": {
1621
+ "version": "1.7.0",
1622
+ "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
1623
+ "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
1624
+ "dev": true,
1625
+ "requires": {
1626
+ "escape-string-regexp": "1.0.5",
1627
+ "object-assign": "4.1.1"
1628
+ }
1629
+ },
1630
+ "file-sync-cmp": {
1631
+ "version": "0.1.1",
1632
+ "resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz",
1633
+ "integrity": "sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs=",
1634
+ "dev": true
1635
+ },
1636
+ "file-type": {
1637
+ "version": "3.9.0",
1638
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz",
1639
+ "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=",
1640
+ "dev": true
1641
+ },
1642
+ "filename-regex": {
1643
+ "version": "2.0.1",
1644
+ "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
1645
+ "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
1646
+ "dev": true
1647
+ },
1648
+ "filename-reserved-regex": {
1649
+ "version": "1.0.0",
1650
+ "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz",
1651
+ "integrity": "sha1-5hz4BfDeHJhFZ9A4bcXfUO5a9+Q=",
1652
+ "dev": true
1653
+ },
1654
+ "filenamify": {
1655
+ "version": "1.2.1",
1656
+ "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-1.2.1.tgz",
1657
+ "integrity": "sha1-qfL/0RxQO+0wABUCknI3jx8TZaU=",
1658
+ "dev": true,
1659
+ "requires": {
1660
+ "filename-reserved-regex": "1.0.0",
1661
+ "strip-outer": "1.0.0",
1662
+ "trim-repeated": "1.0.0"
1663
+ }
1664
+ },
1665
+ "fill-range": {
1666
+ "version": "2.2.3",
1667
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz",
1668
+ "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=",
1669
+ "dev": true,
1670
+ "requires": {
1671
+ "is-number": "2.1.0",
1672
+ "isobject": "2.1.0",
1673
+ "randomatic": "1.1.7",
1674
+ "repeat-element": "1.1.2",
1675
+ "repeat-string": "1.6.1"
1676
+ }
1677
+ },
1678
+ "find-up": {
1679
+ "version": "1.1.2",
1680
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
1681
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
1682
+ "dev": true,
1683
+ "requires": {
1684
+ "path-exists": "2.1.0",
1685
+ "pinkie-promise": "2.0.1"
1686
+ }
1687
+ },
1688
+ "find-versions": {
1689
+ "version": "1.2.1",
1690
+ "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-1.2.1.tgz",
1691
+ "integrity": "sha1-y96fEuOFdaCvG+G5osXV/Y8Ya2I=",
1692
+ "dev": true,
1693
+ "optional": true,
1694
+ "requires": {
1695
+ "array-uniq": "1.0.3",
1696
+ "get-stdin": "4.0.1",
1697
+ "meow": "3.7.0",
1698
+ "semver-regex": "1.0.0"
1699
+ }
1700
+ },
1701
+ "findup-sync": {
1702
+ "version": "0.1.3",
1703
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz",
1704
+ "integrity": "sha1-fz56l7gjksZTvwZYm9hRkOk8NoM=",
1705
+ "dev": true,
1706
+ "requires": {
1707
+ "glob": "3.2.11",
1708
+ "lodash": "2.4.2"
1709
+ },
1710
+ "dependencies": {
1711
+ "glob": {
1712
+ "version": "3.2.11",
1713
+ "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz",
1714
+ "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=",
1715
+ "dev": true,
1716
+ "requires": {
1717
+ "inherits": "2.0.3",
1718
+ "minimatch": "0.3.0"
1719
+ }
1720
+ },
1721
+ "lodash": {
1722
+ "version": "2.4.2",
1723
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
1724
+ "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=",
1725
+ "dev": true
1726
+ },
1727
+ "minimatch": {
1728
+ "version": "0.3.0",
1729
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz",
1730
+ "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=",
1731
+ "dev": true,
1732
+ "requires": {
1733
+ "lru-cache": "2.7.3",
1734
+ "sigmund": "1.0.1"
1735
+ }
1736
+ }
1737
+ }
1738
+ },
1739
+ "first-chunk-stream": {
1740
+ "version": "1.0.0",
1741
+ "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz",
1742
+ "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=",
1743
+ "dev": true
1744
+ },
1745
+ "for-in": {
1746
+ "version": "1.0.2",
1747
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
1748
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
1749
+ "dev": true
1750
+ },
1751
+ "for-own": {
1752
+ "version": "0.1.5",
1753
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
1754
+ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
1755
+ "dev": true,
1756
+ "requires": {
1757
+ "for-in": "1.0.2"
1758
+ }
1759
+ },
1760
+ "forever-agent": {
1761
+ "version": "0.6.1",
1762
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
1763
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
1764
+ "dev": true,
1765
+ "optional": true
1766
+ },
1767
+ "form-data": {
1768
+ "version": "2.3.1",
1769
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz",
1770
+ "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=",
1771
+ "dev": true,
1772
+ "optional": true,
1773
+ "requires": {
1774
+ "asynckit": "0.4.0",
1775
+ "combined-stream": "1.0.5",
1776
+ "mime-types": "2.1.17"
1777
+ }
1778
+ },
1779
+ "fs.realpath": {
1780
+ "version": "1.0.0",
1781
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1782
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
1783
+ "dev": true
1784
+ },
1785
+ "fstream": {
1786
+ "version": "1.0.11",
1787
+ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
1788
+ "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
1789
+ "dev": true,
1790
+ "requires": {
1791
+ "graceful-fs": "4.1.11",
1792
+ "inherits": "2.0.3",
1793
+ "mkdirp": "0.5.1",
1794
+ "rimraf": "2.2.8"
1795
+ },
1796
+ "dependencies": {
1797
+ "graceful-fs": {
1798
+ "version": "4.1.11",
1799
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
1800
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
1801
+ "dev": true
1802
+ }
1803
+ }
1804
+ },
1805
+ "gauge": {
1806
+ "version": "2.7.4",
1807
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
1808
+ "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
1809
+ "dev": true,
1810
+ "requires": {
1811
+ "aproba": "1.2.0",
1812
+ "console-control-strings": "1.1.0",
1813
+ "has-unicode": "2.0.1",
1814
+ "object-assign": "4.1.1",
1815
+ "signal-exit": "3.0.2",
1816
+ "string-width": "1.0.2",
1817
+ "strip-ansi": "3.0.1",
1818
+ "wide-align": "1.1.2"
1819
+ }
1820
+ },
1821
+ "gaze": {
1822
+ "version": "1.1.2",
1823
+ "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz",
1824
+ "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=",
1825
+ "dev": true,
1826
+ "requires": {
1827
+ "globule": "1.2.0"
1828
+ }
1829
+ },
1830
+ "get-proxy": {
1831
+ "version": "1.1.0",
1832
+ "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-1.1.0.tgz",
1833
+ "integrity": "sha1-iUhUSRvFkbDxR9euVw9cZ4tyVus=",
1834
+ "dev": true,
1835
+ "requires": {
1836
+ "rc": "1.2.2"
1837
+ }
1838
+ },
1839
+ "get-stdin": {
1840
+ "version": "4.0.1",
1841
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
1842
+ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
1843
+ "dev": true
1844
+ },
1845
+ "getobject": {
1846
+ "version": "0.1.0",
1847
+ "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz",
1848
+ "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=",
1849
+ "dev": true
1850
+ },
1851
+ "getpass": {
1852
+ "version": "0.1.7",
1853
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
1854
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
1855
+ "dev": true,
1856
+ "optional": true,
1857
+ "requires": {
1858
+ "assert-plus": "1.0.0"
1859
+ }
1860
+ },
1861
+ "gettext-parser": {
1862
+ "version": "1.1.2",
1863
+ "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.1.2.tgz",
1864
+ "integrity": "sha1-zw8MnJCJrtsO5RSZKRg+ncQ1hKc=",
1865
+ "dev": true,
1866
+ "requires": {
1867
+ "encoding": "0.1.12"
1868
+ }
1869
+ },
1870
+ "gifsicle": {
1871
+ "version": "3.0.4",
1872
+ "resolved": "https://registry.npmjs.org/gifsicle/-/gifsicle-3.0.4.tgz",
1873
+ "integrity": "sha1-9Fy17RAWW2ZdySng6TKLbIId+js=",
1874
+ "dev": true,
1875
+ "optional": true,
1876
+ "requires": {
1877
+ "bin-build": "2.2.0",
1878
+ "bin-wrapper": "3.0.2",
1879
+ "logalot": "2.1.0"
1880
+ }
1881
+ },
1882
+ "github-from-package": {
1883
+ "version": "0.0.0",
1884
+ "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
1885
+ "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=",
1886
+ "dev": true,
1887
+ "optional": true
1888
+ },
1889
+ "glob": {
1890
+ "version": "3.1.21",
1891
+ "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz",
1892
+ "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=",
1893
+ "dev": true,
1894
+ "requires": {
1895
+ "graceful-fs": "1.2.3",
1896
+ "inherits": "1.0.2",
1897
+ "minimatch": "0.2.14"
1898
+ },
1899
+ "dependencies": {
1900
+ "inherits": {
1901
+ "version": "1.0.2",
1902
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz",
1903
+ "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=",
1904
+ "dev": true
1905
+ }
1906
+ }
1907
+ },
1908
+ "glob-base": {
1909
+ "version": "0.3.0",
1910
+ "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
1911
+ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
1912
+ "dev": true,
1913
+ "requires": {
1914
+ "glob-parent": "2.0.0",
1915
+ "is-glob": "2.0.1"
1916
+ },
1917
+ "dependencies": {
1918
+ "glob-parent": {
1919
+ "version": "2.0.0",
1920
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
1921
+ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
1922
+ "dev": true,
1923
+ "requires": {
1924
+ "is-glob": "2.0.1"
1925
+ }
1926
+ },
1927
+ "is-extglob": {
1928
+ "version": "1.0.0",
1929
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
1930
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
1931
+ "dev": true
1932
+ },
1933
+ "is-glob": {
1934
+ "version": "2.0.1",
1935
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
1936
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
1937
+ "dev": true,
1938
+ "requires": {
1939
+ "is-extglob": "1.0.0"
1940
+ }
1941
+ }
1942
+ }
1943
+ },
1944
+ "glob-parent": {
1945
+ "version": "3.1.0",
1946
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
1947
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
1948
+ "dev": true,
1949
+ "requires": {
1950
+ "is-glob": "3.1.0",
1951
+ "path-dirname": "1.0.2"
1952
+ }
1953
+ },
1954
+ "glob-stream": {
1955
+ "version": "5.3.5",
1956
+ "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz",
1957
+ "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=",
1958
+ "dev": true,
1959
+ "requires": {
1960
+ "extend": "3.0.1",
1961
+ "glob": "5.0.15",
1962
+ "glob-parent": "3.1.0",
1963
+ "micromatch": "2.3.11",
1964
+ "ordered-read-streams": "0.3.0",
1965
+ "through2": "0.6.5",
1966
+ "to-absolute-glob": "0.1.1",
1967
+ "unique-stream": "2.2.1"
1968
+ },
1969
+ "dependencies": {
1970
+ "glob": {
1971
+ "version": "5.0.15",
1972
+ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
1973
+ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
1974
+ "dev": true,
1975
+ "requires": {
1976
+ "inflight": "1.0.6",
1977
+ "inherits": "2.0.3",
1978
+ "minimatch": "3.0.4",
1979
+ "once": "1.4.0",
1980
+ "path-is-absolute": "1.0.1"
1981
+ }
1982
+ },
1983
+ "minimatch": {
1984
+ "version": "3.0.4",
1985
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
1986
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
1987
+ "dev": true,
1988
+ "requires": {
1989
+ "brace-expansion": "1.1.8"
1990
+ }
1991
+ }
1992
+ }
1993
+ },
1994
+ "globule": {
1995
+ "version": "1.2.0",
1996
+ "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz",
1997
+ "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=",
1998
+ "dev": true,
1999
+ "requires": {
2000
+ "glob": "7.1.2",
2001
+ "lodash": "4.17.4",
2002
+ "minimatch": "3.0.4"
2003
+ },
2004
+ "dependencies": {
2005
+ "glob": {
2006
+ "version": "7.1.2",
2007
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
2008
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
2009
+ "dev": true,
2010
+ "requires": {
2011
+ "fs.realpath": "1.0.0",
2012
+ "inflight": "1.0.6",
2013
+ "inherits": "2.0.3",
2014
+ "minimatch": "3.0.4",
2015
+ "once": "1.4.0",
2016
+ "path-is-absolute": "1.0.1"
2017
+ }
2018
+ },
2019
+ "lodash": {
2020
+ "version": "4.17.4",
2021
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
2022
+ "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
2023
+ "dev": true
2024
+ },
2025
+ "minimatch": {
2026
+ "version": "3.0.4",
2027
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
2028
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
2029
+ "dev": true,
2030
+ "requires": {
2031
+ "brace-expansion": "1.1.8"
2032
+ }
2033
+ }
2034
+ }
2035
+ },
2036
+ "glogg": {
2037
+ "version": "1.0.0",
2038
+ "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz",
2039
+ "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=",
2040
+ "dev": true,
2041
+ "requires": {
2042
+ "sparkles": "1.0.0"
2043
+ }
2044
+ },
2045
+ "gonzales-pe": {
2046
+ "version": "3.0.0-28",
2047
+ "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-3.0.0-28.tgz",
2048
+ "integrity": "sha1-3VC0HdFbaCooxA5fD/IAeQGsYr0=",
2049
+ "dev": true
2050
+ },
2051
+ "got": {
2052
+ "version": "5.7.1",
2053
+ "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz",
2054
+ "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=",
2055
+ "dev": true,
2056
+ "requires": {
2057
+ "create-error-class": "3.0.2",
2058
+ "duplexer2": "0.1.4",
2059
+ "is-redirect": "1.0.0",
2060
+ "is-retry-allowed": "1.1.0",
2061
+ "is-stream": "1.1.0",
2062
+ "lowercase-keys": "1.0.0",
2063
+ "node-status-codes": "1.0.0",
2064
+ "object-assign": "4.1.1",
2065
+ "parse-json": "2.2.0",
2066
+ "pinkie-promise": "2.0.1",
2067
+ "read-all-stream": "3.1.0",
2068
+ "readable-stream": "2.3.3",
2069
+ "timed-out": "3.1.3",
2070
+ "unzip-response": "1.0.2",
2071
+ "url-parse-lax": "1.0.0"
2072
+ }
2073
+ },
2074
+ "graceful-fs": {
2075
+ "version": "1.2.3",
2076
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz",
2077
+ "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=",
2078
+ "dev": true
2079
+ },
2080
+ "graceful-readlink": {
2081
+ "version": "1.0.1",
2082
+ "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
2083
+ "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
2084
+ "dev": true
2085
+ },
2086
+ "grunt": {
2087
+ "version": "0.4.5",
2088
+ "resolved": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz",
2089
+ "integrity": "sha1-VpN81RlDJK3/bSB2MYMqnWuk5/A=",
2090
+ "dev": true,
2091
+ "requires": {
2092
+ "async": "0.1.22",
2093
+ "coffee-script": "1.3.3",
2094
+ "colors": "0.6.2",
2095
+ "dateformat": "1.0.2-1.2.3",
2096
+ "eventemitter2": "0.4.14",
2097
+ "exit": "0.1.2",
2098
+ "findup-sync": "0.1.3",
2099
+ "getobject": "0.1.0",
2100
+ "glob": "3.1.21",
2101
+ "grunt-legacy-log": "0.1.3",
2102
+ "grunt-legacy-util": "0.2.0",
2103
+ "hooker": "0.2.3",
2104
+ "iconv-lite": "0.2.11",
2105
+ "js-yaml": "2.0.5",
2106
+ "lodash": "0.9.2",
2107
+ "minimatch": "0.2.14",
2108
+ "nopt": "1.0.10",
2109
+ "rimraf": "2.2.8",
2110
+ "underscore.string": "2.2.1",
2111
+ "which": "1.0.9"
2112
+ }
2113
+ },
2114
+ "grunt-cachebuster": {
2115
+ "version": "0.1.7",
2116
+ "resolved": "https://registry.npmjs.org/grunt-cachebuster/-/grunt-cachebuster-0.1.7.tgz",
2117
+ "integrity": "sha1-GXio34hHqO/GpsuF7onkR5lYIpk=",
2118
+ "dev": true
2119
+ },
2120
+ "grunt-checktextdomain": {
2121
+ "version": "1.0.1",
2122
+ "resolved": "https://registry.npmjs.org/grunt-checktextdomain/-/grunt-checktextdomain-1.0.1.tgz",
2123
+ "integrity": "sha1-slTQHh3pEwBdTbHFMD2QI7mD4Zs=",
2124
+ "dev": true,
2125
+ "requires": {
2126
+ "chalk": "0.2.1",
2127
+ "text-table": "0.2.0"
2128
+ },
2129
+ "dependencies": {
2130
+ "ansi-styles": {
2131
+ "version": "0.2.0",
2132
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-0.2.0.tgz",
2133
+ "integrity": "sha1-NZq0sV3NZLptdHNLcsNjYKmvLBk=",
2134
+ "dev": true
2135
+ },
2136
+ "chalk": {
2137
+ "version": "0.2.1",
2138
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.2.1.tgz",
2139
+ "integrity": "sha1-dhPhV1FFshOGSD9/SFql/6jL0Qw=",
2140
+ "dev": true,
2141
+ "requires": {
2142
+ "ansi-styles": "0.2.0",
2143
+ "has-color": "0.1.7"
2144
+ }
2145
+ }
2146
+ }
2147
+ },
2148
+ "grunt-contrib-compress": {
2149
+ "version": "1.4.3",
2150
+ "resolved": "https://registry.npmjs.org/grunt-contrib-compress/-/grunt-contrib-compress-1.4.3.tgz",
2151
+ "integrity": "sha1-Ac7/ucY39S5wgfRjdQmD0KOw+nM=",
2152
+ "dev": true,
2153
+ "requires": {
2154
+ "archiver": "1.3.0",
2155
+ "chalk": "1.1.3",
2156
+ "iltorb": "1.3.10",
2157
+ "lodash": "4.17.4",
2158
+ "pretty-bytes": "4.0.2",
2159
+ "stream-buffers": "2.2.0"
2160
+ },
2161
+ "dependencies": {
2162
+ "lodash": {
2163
+ "version": "4.17.4",
2164
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
2165
+ "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
2166
+ "dev": true
2167
+ }
2168
+ }
2169
+ },
2170
+ "grunt-contrib-copy": {
2171
+ "version": "1.0.0",
2172
+ "resolved": "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz",
2173
+ "integrity": "sha1-cGDGWB6QS4qw0A8HbgqPbj58NXM=",
2174
+ "dev": true,
2175
+ "requires": {
2176
+ "chalk": "1.1.3",
2177
+ "file-sync-cmp": "0.1.1"
2178
+ }
2179
+ },
2180
+ "grunt-contrib-imagemin": {
2181
+ "version": "1.0.1",
2182
+ "resolved": "https://registry.npmjs.org/grunt-contrib-imagemin/-/grunt-contrib-imagemin-1.0.1.tgz",
2183
+ "integrity": "sha1-5Ho1YTN29MqpwfkERlA8rhyUTXk=",
2184
+ "dev": true,
2185
+ "requires": {
2186
+ "async": "1.5.2",
2187
+ "chalk": "1.1.3",
2188
+ "gulp-rename": "1.2.2",
2189
+ "imagemin": "4.0.0",
2190
+ "pretty-bytes": "3.0.1"
2191
+ },
2192
+ "dependencies": {
2193
+ "async": {
2194
+ "version": "1.5.2",
2195
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
2196
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
2197
+ "dev": true
2198
+ },
2199
+ "pretty-bytes": {
2200
+ "version": "3.0.1",
2201
+ "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-3.0.1.tgz",
2202
+ "integrity": "sha1-J9AAjXeAY6C0gRuzXHnxvV1fvM8=",
2203
+ "dev": true,
2204
+ "requires": {
2205
+ "number-is-nan": "1.0.1"
2206
+ }
2207
+ }
2208
+ }
2209
+ },
2210
+ "grunt-contrib-jshint": {
2211
+ "version": "1.1.0",
2212
+ "resolved": "https://registry.npmjs.org/grunt-contrib-jshint/-/grunt-contrib-jshint-1.1.0.tgz",
2213
+ "integrity": "sha1-Np2QmyWTxA6L55lAshNAhQx5Oaw=",
2214
+ "dev": true,
2215
+ "requires": {
2216
+ "chalk": "1.1.3",
2217
+ "hooker": "0.2.3",
2218
+ "jshint": "2.9.5"
2219
+ }
2220
+ },
2221
+ "grunt-contrib-watch": {
2222
+ "version": "1.0.0",
2223
+ "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.0.0.tgz",
2224
+ "integrity": "sha1-hKGnodar0m7VaEE0lscxM+mQAY8=",
2225
+ "dev": true,
2226
+ "requires": {
2227
+ "async": "1.5.2",
2228
+ "gaze": "1.1.2",
2229
+ "lodash": "3.10.1",
2230
+ "tiny-lr": "0.2.1"
2231
+ },
2232
+ "dependencies": {
2233
+ "async": {
2234
+ "version": "1.5.2",
2235
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
2236
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
2237
+ "dev": true
2238
+ },
2239
+ "lodash": {
2240
+ "version": "3.10.1",
2241
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
2242
+ "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
2243
+ "dev": true
2244
+ }
2245
+ }
2246
+ },
2247
+ "grunt-legacy-log": {
2248
+ "version": "0.1.3",
2249
+ "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz",
2250
+ "integrity": "sha1-7ClCboAwIa9ZAp+H0vnNczWgVTE=",
2251
+ "dev": true,
2252
+ "requires": {
2253
+ "colors": "0.6.2",
2254
+ "grunt-legacy-log-utils": "0.1.1",
2255
+ "hooker": "0.2.3",
2256
+ "lodash": "2.4.2",
2257
+ "underscore.string": "2.3.3"
2258
+ },
2259
+ "dependencies": {
2260
+ "lodash": {
2261
+ "version": "2.4.2",
2262
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
2263
+ "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=",
2264
+ "dev": true
2265
+ },
2266
+ "underscore.string": {
2267
+ "version": "2.3.3",
2268
+ "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz",
2269
+ "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0=",
2270
+ "dev": true
2271
+ }
2272
+ }
2273
+ },
2274
+ "grunt-legacy-log-utils": {
2275
+ "version": "0.1.1",
2276
+ "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz",
2277
+ "integrity": "sha1-wHBrndkGThFvNvI/5OawSGcsD34=",
2278
+ "dev": true,
2279
+ "requires": {
2280
+ "colors": "0.6.2",
2281
+ "lodash": "2.4.2",
2282
+ "underscore.string": "2.3.3"
2283
+ },
2284
+ "dependencies": {
2285
+ "lodash": {
2286
+ "version": "2.4.2",
2287
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
2288
+ "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=",
2289
+ "dev": true
2290
+ },
2291
+ "underscore.string": {
2292
+ "version": "2.3.3",
2293
+ "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz",
2294
+ "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0=",
2295
+ "dev": true
2296
+ }
2297
+ }
2298
+ },
2299
+ "grunt-legacy-util": {
2300
+ "version": "0.2.0",
2301
+ "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz",
2302
+ "integrity": "sha1-kzJIhNv343qf98Am3/RR2UqeVUs=",
2303
+ "dev": true,
2304
+ "requires": {
2305
+ "async": "0.1.22",
2306
+ "exit": "0.1.2",
2307
+ "getobject": "0.1.0",
2308
+ "hooker": "0.2.3",
2309
+ "lodash": "0.9.2",
2310
+ "underscore.string": "2.2.1",
2311
+ "which": "1.0.9"
2312
+ }
2313
+ },
2314
+ "grunt-mkdir": {
2315
+ "version": "1.0.0",
2316
+ "resolved": "https://registry.npmjs.org/grunt-mkdir/-/grunt-mkdir-1.0.0.tgz",
2317
+ "integrity": "sha1-c+GiasJKCFljY/TdlUsNMkheWOk=",
2318
+ "dev": true
2319
+ },
2320
+ "grunt-newer": {
2321
+ "version": "1.3.0",
2322
+ "resolved": "https://registry.npmjs.org/grunt-newer/-/grunt-newer-1.3.0.tgz",
2323
+ "integrity": "sha1-g8y3od2ny9irI7BZAk6+YUrS80I=",
2324
+ "dev": true,
2325
+ "requires": {
2326
+ "async": "1.5.2",
2327
+ "rimraf": "2.6.2"
2328
+ },
2329
+ "dependencies": {
2330
+ "async": {
2331
+ "version": "1.5.2",
2332
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
2333
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
2334
+ "dev": true
2335
+ },
2336
+ "glob": {
2337
+ "version": "7.1.2",
2338
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
2339
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
2340
+ "dev": true,
2341
+ "requires": {
2342
+ "fs.realpath": "1.0.0",
2343
+ "inflight": "1.0.6",
2344
+ "inherits": "2.0.3",
2345
+ "minimatch": "3.0.4",
2346
+ "once": "1.4.0",
2347
+ "path-is-absolute": "1.0.1"
2348
+ }
2349
+ },
2350
+ "minimatch": {
2351
+ "version": "3.0.4",
2352
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
2353
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
2354
+ "dev": true,
2355
+ "requires": {
2356
+ "brace-expansion": "1.1.8"
2357
+ }
2358
+ },
2359
+ "rimraf": {
2360
+ "version": "2.6.2",
2361
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
2362
+ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
2363
+ "dev": true,
2364
+ "requires": {
2365
+ "glob": "7.1.2"
2366
+ }
2367
+ }
2368
+ }
2369
+ },
2370
+ "grunt-phpcbf": {
2371
+ "version": "0.1.1",
2372
+ "resolved": "https://registry.npmjs.org/grunt-phpcbf/-/grunt-phpcbf-0.1.1.tgz",
2373
+ "integrity": "sha1-imRoKbRUW19gE1hGh/TkAQT/NcI=",
2374
+ "dev": true
2375
+ },
2376
+ "grunt-phpcs": {
2377
+ "version": "0.4.0",
2378
+ "resolved": "https://registry.npmjs.org/grunt-phpcs/-/grunt-phpcs-0.4.0.tgz",
2379
+ "integrity": "sha1-oI1iX8ZEZeRTsr2T+BCyqB6Uvao=",
2380
+ "dev": true
2381
+ },
2382
+ "grunt-phplint": {
2383
+ "version": "0.0.8",
2384
+ "resolved": "https://registry.npmjs.org/grunt-phplint/-/grunt-phplint-0.0.8.tgz",
2385
+ "integrity": "sha1-wSeqKP930jnBSgHwUMx7cVnOkMA=",
2386
+ "dev": true,
2387
+ "requires": {
2388
+ "cache-swap": "0.0.6",
2389
+ "grunt": "0.4.5"
2390
+ }
2391
+ },
2392
+ "grunt-phpunit": {
2393
+ "version": "0.3.6",
2394
+ "resolved": "https://registry.npmjs.org/grunt-phpunit/-/grunt-phpunit-0.3.6.tgz",
2395
+ "integrity": "sha1-DnW+5rXC5l/aRQdWcqBs6yzs2Gk=",
2396
+ "dev": true
2397
+ },
2398
+ "grunt-plugin-fleet": {
2399
+ "version": "github:codeinwp/grunt-plugin-fleet#ef7f40c9abb9d7e89bf7ff5c739edbda998b9ac6",
2400
+ "dev": true,
2401
+ "requires": {
2402
+ "autoprefixer": "6.7.7",
2403
+ "grunt": "0.4.5",
2404
+ "grunt-cachebuster": "0.1.7",
2405
+ "grunt-checktextdomain": "1.0.1",
2406
+ "grunt-contrib-compress": "1.4.3",
2407
+ "grunt-contrib-copy": "1.0.0",
2408
+ "grunt-contrib-imagemin": "1.0.1",
2409
+ "grunt-contrib-jshint": "1.1.0",
2410
+ "grunt-contrib-watch": "1.0.0",
2411
+ "grunt-mkdir": "1.0.0",
2412
+ "grunt-newer": "1.3.0",
2413
+ "grunt-phpcbf": "0.1.1",
2414
+ "grunt-phpcs": "0.4.0",
2415
+ "grunt-phplint": "0.0.8",
2416
+ "grunt-phpunit": "0.3.6",
2417
+ "grunt-postcss": "0.8.0",
2418
+ "grunt-rsync": "2.0.1",
2419
+ "grunt-sync": "0.6.2",
2420
+ "grunt-text-replace": "0.4.0",
2421
+ "grunt-version": "1.2.1",
2422
+ "grunt-wp-css": "0.2.1",
2423
+ "grunt-wp-i18n": "0.5.4",
2424
+ "grunt-wp-readme-to-markdown": "2.0.1",
2425
+ "time-grunt": "1.4.0"
2426
+ }
2427
+ },
2428
+ "grunt-postcss": {
2429
+ "version": "0.8.0",
2430
+ "resolved": "https://registry.npmjs.org/grunt-postcss/-/grunt-postcss-0.8.0.tgz",
2431
+ "integrity": "sha1-jzCor2B5A84MRfAfC+QsYOMc6w4=",
2432
+ "dev": true,
2433
+ "requires": {
2434
+ "chalk": "1.1.3",
2435
+ "diff": "2.2.3",
2436
+ "postcss": "5.2.18"
2437
+ }
2438
+ },
2439
+ "grunt-rsync": {
2440
+ "version": "2.0.1",
2441
+ "resolved": "https://registry.npmjs.org/grunt-rsync/-/grunt-rsync-2.0.1.tgz",
2442
+ "integrity": "sha1-uX3RVCFqzItJJFYFPuuzUlym+R8=",
2443
+ "dev": true,
2444
+ "requires": {
2445
+ "rsyncwrapper": "2.0.1"
2446
+ }
2447
+ },
2448
+ "grunt-sync": {
2449
+ "version": "0.6.2",
2450
+ "resolved": "https://registry.npmjs.org/grunt-sync/-/grunt-sync-0.6.2.tgz",
2451
+ "integrity": "sha1-2ay2W0IF0Be9ZGLkn+wtkHGs5Hs=",
2452
+ "dev": true,
2453
+ "requires": {
2454
+ "glob": "7.1.2",
2455
+ "lodash": "4.17.4",
2456
+ "md5-file": "2.0.7",
2457
+ "promised-io": "0.3.5"
2458
+ },
2459
+ "dependencies": {
2460
+ "glob": {
2461
+ "version": "7.1.2",
2462
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
2463
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
2464
+ "dev": true,
2465
+ "requires": {
2466
+ "fs.realpath": "1.0.0",
2467
+ "inflight": "1.0.6",
2468
+ "inherits": "2.0.3",
2469
+ "minimatch": "3.0.4",
2470
+ "once": "1.4.0",
2471
+ "path-is-absolute": "1.0.1"
2472
+ }
2473
+ },
2474
+ "lodash": {
2475
+ "version": "4.17.4",
2476
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
2477
+ "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
2478
+ "dev": true
2479
+ },
2480
+ "minimatch": {
2481
+ "version": "3.0.4",
2482
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
2483
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
2484
+ "dev": true,
2485
+ "requires": {
2486
+ "brace-expansion": "1.1.8"
2487
+ }
2488
+ }
2489
+ }
2490
+ },
2491
+ "grunt-text-replace": {
2492
+ "version": "0.4.0",
2493
+ "resolved": "https://registry.npmjs.org/grunt-text-replace/-/grunt-text-replace-0.4.0.tgz",
2494
+ "integrity": "sha1-252c5Z4v5J2id+nbwZXD4Rz7FsI=",
2495
+ "dev": true
2496
+ },
2497
+ "grunt-version": {
2498
+ "version": "1.2.1",
2499
+ "resolved": "https://registry.npmjs.org/grunt-version/-/grunt-version-1.2.1.tgz",
2500
+ "integrity": "sha512-FMRde7kCY1T2zCBAg4ZbLR9GbKDX60xCIZS89kCyk29LLQ/nbRSgXY+782HjT+HfC21kszcpWttfCGq1eERHPA==",
2501
+ "dev": true,
2502
+ "requires": {
2503
+ "grunt": "0.4.5",
2504
+ "semver": "4.3.6"
2505
+ },
2506
+ "dependencies": {
2507
+ "semver": {
2508
+ "version": "4.3.6",
2509
+ "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
2510
+ "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=",
2511
+ "dev": true
2512
+ }
2513
+ }
2514
+ },
2515
+ "grunt-wp-css": {
2516
+ "version": "0.2.1",
2517
+ "resolved": "https://registry.npmjs.org/grunt-wp-css/-/grunt-wp-css-0.2.1.tgz",
2518
+ "integrity": "sha1-cC7ZaZzXyQCjQGwgQaHSg1WIf2s=",
2519
+ "dev": true,
2520
+ "requires": {
2521
+ "cssbeautify": "0.3.1",
2522
+ "csscomb": "3.1.8",
2523
+ "lodash": "4.17.4"
2524
+ },
2525
+ "dependencies": {
2526
+ "lodash": {
2527
+ "version": "4.17.4",
2528
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
2529
+ "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
2530
+ "dev": true
2531
+ }
2532
+ }
2533
+ },
2534
+ "grunt-wp-i18n": {
2535
+ "version": "0.5.4",
2536
+ "resolved": "https://registry.npmjs.org/grunt-wp-i18n/-/grunt-wp-i18n-0.5.4.tgz",
2537
+ "integrity": "sha1-hynlrU9LIxJpch8xcWVNLGKVVJI=",
2538
+ "dev": true,
2539
+ "requires": {
2540
+ "async": "0.9.2",
2541
+ "gettext-parser": "1.1.2",
2542
+ "grunt": "0.4.5",
2543
+ "underscore": "1.8.3",
2544
+ "underscore.string": "3.0.3"
2545
+ },
2546
+ "dependencies": {
2547
+ "async": {
2548
+ "version": "0.9.2",
2549
+ "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
2550
+ "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=",
2551
+ "dev": true
2552
+ },
2553
+ "underscore": {
2554
+ "version": "1.8.3",
2555
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz",
2556
+ "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=",
2557
+ "dev": true
2558
+ },
2559
+ "underscore.string": {
2560
+ "version": "3.0.3",
2561
+ "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.0.3.tgz",
2562
+ "integrity": "sha1-Rhe4waJQz25QZPu7Nj0PqWzxRVI=",
2563
+ "dev": true
2564
+ }
2565
+ }
2566
+ },
2567
+ "grunt-wp-readme-to-markdown": {
2568
+ "version": "2.0.1",
2569
+ "resolved": "https://registry.npmjs.org/grunt-wp-readme-to-markdown/-/grunt-wp-readme-to-markdown-2.0.1.tgz",
2570
+ "integrity": "sha1-QGzV6YmIWA3B0W6AXE4uYJJWhVI=",
2571
+ "dev": true
2572
+ },
2573
+ "gulp-decompress": {
2574
+ "version": "1.2.0",
2575
+ "resolved": "https://registry.npmjs.org/gulp-decompress/-/gulp-decompress-1.2.0.tgz",
2576
+ "integrity": "sha1-jutlpeAV+O2FMsr+KEVJYGJvDcc=",
2577
+ "dev": true,
2578
+ "requires": {
2579
+ "archive-type": "3.2.0",
2580
+ "decompress": "3.0.0",
2581
+ "gulp-util": "3.0.8",
2582
+ "readable-stream": "2.3.3"
2583
+ }
2584
+ },
2585
+ "gulp-rename": {
2586
+ "version": "1.2.2",
2587
+ "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.2.2.tgz",
2588
+ "integrity": "sha1-OtRCh2PwXidk3sHGfYaNsnVoeBc=",
2589
+ "dev": true
2590
+ },
2591
+ "gulp-sourcemaps": {
2592
+ "version": "1.6.0",
2593
+ "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz",
2594
+ "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=",
2595
+ "dev": true,
2596
+ "requires": {
2597
+ "convert-source-map": "1.5.1",
2598
+ "graceful-fs": "4.1.11",
2599
+ "strip-bom": "2.0.0",
2600
+ "through2": "2.0.3",
2601
+ "vinyl": "1.2.0"
2602
+ },
2603
+ "dependencies": {
2604
+ "graceful-fs": {
2605
+ "version": "4.1.11",
2606
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
2607
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
2608
+ "dev": true
2609
+ },
2610
+ "through2": {
2611
+ "version": "2.0.3",
2612
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
2613
+ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
2614
+ "dev": true,
2615
+ "requires": {
2616
+ "readable-stream": "2.3.3",
2617
+ "xtend": "4.0.1"
2618
+ }
2619
+ }
2620
+ }
2621
+ },
2622
+ "gulp-util": {
2623
+ "version": "3.0.8",
2624
+ "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz",
2625
+ "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=",
2626
+ "dev": true,
2627
+ "requires": {
2628
+ "array-differ": "1.0.0",
2629
+ "array-uniq": "1.0.3",
2630
+ "beeper": "1.1.1",
2631
+ "chalk": "1.1.3",
2632
+ "dateformat": "2.2.0",
2633
+ "fancy-log": "1.3.2",
2634
+ "gulplog": "1.0.0",
2635
+ "has-gulplog": "0.1.0",
2636
+ "lodash._reescape": "3.0.0",
2637
+ "lodash._reevaluate": "3.0.0",
2638
+ "lodash._reinterpolate": "3.0.0",
2639
+ "lodash.template": "3.6.2",
2640
+ "minimist": "1.2.0",
2641
+ "multipipe": "0.1.2",
2642
+ "object-assign": "3.0.0",
2643
+ "replace-ext": "0.0.1",
2644
+ "through2": "2.0.3",
2645
+ "vinyl": "0.5.3"
2646
+ },
2647
+ "dependencies": {
2648
+ "dateformat": {
2649
+ "version": "2.2.0",
2650
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz",
2651
+ "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=",
2652
+ "dev": true
2653
+ },
2654
+ "minimist": {
2655
+ "version": "1.2.0",
2656
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
2657
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
2658
+ "dev": true
2659
+ },
2660
+ "object-assign": {
2661
+ "version": "3.0.0",
2662
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz",
2663
+ "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=",
2664
+ "dev": true
2665
+ },
2666
+ "through2": {
2667
+ "version": "2.0.3",
2668
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
2669
+ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
2670
+ "dev": true,
2671
+ "requires": {
2672
+ "readable-stream": "2.3.3",
2673
+ "xtend": "4.0.1"
2674
+ }
2675
+ },
2676
+ "vinyl": {
2677
+ "version": "0.5.3",
2678
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz",
2679
+ "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=",
2680
+ "dev": true,
2681
+ "requires": {
2682
+ "clone": "1.0.3",
2683
+ "clone-stats": "0.0.1",
2684
+ "replace-ext": "0.0.1"
2685
+ }
2686
+ }
2687
+ }
2688
+ },
2689
+ "gulplog": {
2690
+ "version": "1.0.0",
2691
+ "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz",
2692
+ "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=",
2693
+ "dev": true,
2694
+ "requires": {
2695
+ "glogg": "1.0.0"
2696
+ }
2697
+ },
2698
+ "har-schema": {
2699
+ "version": "2.0.0",
2700
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
2701
+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
2702
+ "dev": true,
2703
+ "optional": true
2704
+ },
2705
+ "har-validator": {
2706
+ "version": "5.0.3",
2707
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
2708
+ "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
2709
+ "dev": true,
2710
+ "optional": true,
2711
+ "requires": {
2712
+ "ajv": "5.5.2",
2713
+ "har-schema": "2.0.0"
2714
+ }
2715
+ },
2716
+ "has-ansi": {
2717
+ "version": "2.0.0",
2718
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
2719
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
2720
+ "dev": true,
2721
+ "requires": {
2722
+ "ansi-regex": "2.1.1"
2723
+ }
2724
+ },
2725
+ "has-color": {
2726
+ "version": "0.1.7",
2727
+ "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz",
2728
+ "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=",
2729
+ "dev": true
2730
+ },
2731
+ "has-flag": {
2732
+ "version": "1.0.0",
2733
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
2734
+ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
2735
+ "dev": true
2736
+ },
2737
+ "has-gulplog": {
2738
+ "version": "0.1.0",
2739
+ "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz",
2740
+ "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=",
2741
+ "dev": true,
2742
+ "requires": {
2743
+ "sparkles": "1.0.0"
2744
+ }
2745
+ },
2746
+ "has-unicode": {
2747
+ "version": "2.0.1",
2748
+ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
2749
+ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
2750
+ "dev": true
2751
+ },
2752
+ "hawk": {
2753
+ "version": "6.0.2",
2754
+ "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
2755
+ "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==",
2756
+ "dev": true,
2757
+ "optional": true,
2758
+ "requires": {
2759
+ "boom": "4.3.1",
2760
+ "cryptiles": "3.1.2",
2761
+ "hoek": "4.2.0",
2762
+ "sntp": "2.1.0"
2763
+ }
2764
+ },
2765
+ "hoek": {
2766
+ "version": "4.2.0",
2767
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz",
2768
+ "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==",
2769
+ "dev": true
2770
+ },
2771
+ "hooker": {
2772
+ "version": "0.2.3",
2773
+ "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz",
2774
+ "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=",
2775
+ "dev": true
2776
+ },
2777
+ "hosted-git-info": {
2778
+ "version": "2.5.0",
2779
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz",
2780
+ "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==",
2781
+ "dev": true
2782
+ },
2783
+ "htmlparser2": {
2784
+ "version": "3.8.3",
2785
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz",
2786
+ "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=",
2787
+ "dev": true,
2788
+ "requires": {
2789
+ "domelementtype": "1.3.0",
2790
+ "domhandler": "2.3.0",
2791
+ "domutils": "1.5.1",
2792
+ "entities": "1.0.0",
2793
+ "readable-stream": "1.1.14"
2794
+ },
2795
+ "dependencies": {
2796
+ "isarray": {
2797
+ "version": "0.0.1",
2798
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
2799
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
2800
+ "dev": true
2801
+ },
2802
+ "readable-stream": {
2803
+ "version": "1.1.14",
2804
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
2805
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
2806
+ "dev": true,
2807
+ "requires": {
2808
+ "core-util-is": "1.0.2",
2809
+ "inherits": "2.0.3",
2810
+ "isarray": "0.0.1",
2811
+ "string_decoder": "0.10.31"
2812
+ }
2813
+ },
2814
+ "string_decoder": {
2815
+ "version": "0.10.31",
2816
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
2817
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
2818
+ "dev": true
2819
+ }
2820
+ }
2821
+ },
2822
+ "http-errors": {
2823
+ "version": "1.3.1",
2824
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz",
2825
+ "integrity": "sha1-GX4izevUGYWF6GlO9nhhl7ke2UI=",
2826
+ "dev": true,
2827
+ "requires": {
2828
+ "inherits": "2.0.3",
2829
+ "statuses": "1.4.0"
2830
+ }
2831
+ },
2832
+ "http-parser-js": {
2833
+ "version": "0.4.9",
2834
+ "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.9.tgz",
2835
+ "integrity": "sha1-6hoE+2St/wJC6ZdPKX3Uw8rSceE=",
2836
+ "dev": true
2837
+ },
2838
+ "http-signature": {
2839
+ "version": "1.2.0",
2840
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
2841
+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
2842
+ "dev": true,
2843
+ "optional": true,
2844
+ "requires": {
2845
+ "assert-plus": "1.0.0",
2846
+ "jsprim": "1.4.1",
2847
+ "sshpk": "1.13.1"
2848
+ }
2849
+ },
2850
+ "iconv-lite": {
2851
+ "version": "0.2.11",
2852
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz",
2853
+ "integrity": "sha1-HOYKOleGSiktEyH/RgnKS7llrcg=",
2854
+ "dev": true
2855
+ },
2856
+ "iltorb": {
2857
+ "version": "1.3.10",
2858
+ "resolved": "https://registry.npmjs.org/iltorb/-/iltorb-1.3.10.tgz",
2859
+ "integrity": "sha512-nyB4+ru1u8CQqQ6w7YjasboKN3NQTN8GH/V/eEssNRKhW6UbdxdWhB9fJ5EEdjJfezKY0qPrcwLyIcgjL8hHxA==",
2860
+ "dev": true,
2861
+ "optional": true,
2862
+ "requires": {
2863
+ "detect-libc": "0.2.0",
2864
+ "nan": "2.8.0",
2865
+ "node-gyp": "3.6.2",
2866
+ "prebuild-install": "2.4.1"
2867
+ }
2868
+ },
2869
+ "imagemin": {
2870
+ "version": "4.0.0",
2871
+ "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-4.0.0.tgz",
2872
+ "integrity": "sha1-6Q5/CTaDZZXxj6Ff6Qb0+iWeqEc=",
2873
+ "dev": true,
2874
+ "requires": {
2875
+ "buffer-to-vinyl": "1.1.0",
2876
+ "concat-stream": "1.6.0",
2877
+ "imagemin-gifsicle": "4.2.0",
2878
+ "imagemin-jpegtran": "4.3.2",
2879
+ "imagemin-optipng": "4.3.0",
2880
+ "imagemin-svgo": "4.2.1",
2881
+ "optional": "0.1.4",
2882
+ "readable-stream": "2.3.3",
2883
+ "stream-combiner2": "1.1.1",
2884
+ "vinyl-fs": "2.4.4"
2885
+ }
2886
+ },
2887
+ "imagemin-gifsicle": {
2888
+ "version": "4.2.0",
2889
+ "resolved": "https://registry.npmjs.org/imagemin-gifsicle/-/imagemin-gifsicle-4.2.0.tgz",
2890
+ "integrity": "sha1-D++butNHbmt2iFc2zFsLh6CHV8o=",
2891
+ "dev": true,
2892
+ "optional": true,
2893
+ "requires": {
2894
+ "gifsicle": "3.0.4",
2895
+ "is-gif": "1.0.0",
2896
+ "through2": "0.6.5"
2897
+ }
2898
+ },
2899
+ "imagemin-jpegtran": {
2900
+ "version": "4.3.2",
2901
+ "resolved": "https://registry.npmjs.org/imagemin-jpegtran/-/imagemin-jpegtran-4.3.2.tgz",
2902
+ "integrity": "sha1-G8bR4r0T/bZNJFUm1jWn5d/rEvw=",
2903
+ "dev": true,
2904
+ "optional": true,
2905
+ "requires": {
2906
+ "is-jpg": "1.0.0",
2907
+ "jpegtran-bin": "3.2.0",
2908
+ "through2": "2.0.3"
2909
+ },
2910
+ "dependencies": {
2911
+ "through2": {
2912
+ "version": "2.0.3",
2913
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
2914
+ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
2915
+ "dev": true,
2916
+ "optional": true,
2917
+ "requires": {
2918
+ "readable-stream": "2.3.3",
2919
+ "xtend": "4.0.1"
2920
+ }
2921
+ }
2922
+ }
2923
+ },
2924
+ "imagemin-optipng": {
2925
+ "version": "4.3.0",
2926
+ "resolved": "https://registry.npmjs.org/imagemin-optipng/-/imagemin-optipng-4.3.0.tgz",
2927
+ "integrity": "sha1-dgRmOrLuMVczJ0cm/Rw3TStErbY=",
2928
+ "dev": true,
2929
+ "optional": true,
2930
+ "requires": {
2931
+ "exec-buffer": "2.0.1",
2932
+ "is-png": "1.1.0",
2933
+ "optipng-bin": "3.1.4",
2934
+ "through2": "0.6.5"
2935
+ }
2936
+ },
2937
+ "imagemin-svgo": {
2938
+ "version": "4.2.1",
2939
+ "resolved": "https://registry.npmjs.org/imagemin-svgo/-/imagemin-svgo-4.2.1.tgz",
2940
+ "integrity": "sha1-VPB9xW9HJgRi32phxUvvtEtXvlU=",
2941
+ "dev": true,
2942
+ "optional": true,
2943
+ "requires": {
2944
+ "is-svg": "1.1.1",
2945
+ "svgo": "0.6.6",
2946
+ "through2": "2.0.3"
2947
+ },
2948
+ "dependencies": {
2949
+ "through2": {
2950
+ "version": "2.0.3",
2951
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
2952
+ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
2953
+ "dev": true,
2954
+ "optional": true,
2955
+ "requires": {
2956
+ "readable-stream": "2.3.3",
2957
+ "xtend": "4.0.1"
2958
+ }
2959
+ }
2960
+ }
2961
+ },
2962
+ "indent-string": {
2963
+ "version": "2.1.0",
2964
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
2965
+ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
2966
+ "dev": true,
2967
+ "requires": {
2968
+ "repeating": "2.0.1"
2969
+ }
2970
+ },
2971
+ "inflight": {
2972
+ "version": "1.0.6",
2973
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
2974
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
2975
+ "dev": true,
2976
+ "requires": {
2977
+ "once": "1.4.0",
2978
+ "wrappy": "1.0.2"
2979
+ }
2980
+ },
2981
+ "inherit": {
2982
+ "version": "2.2.6",
2983
+ "resolved": "https://registry.npmjs.org/inherit/-/inherit-2.2.6.tgz",
2984
+ "integrity": "sha1-8WFLBshUToEo5CKchjR9tzrZeI0=",
2985
+ "dev": true
2986
+ },
2987
+ "inherits": {
2988
+ "version": "2.0.3",
2989
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
2990
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
2991
+ "dev": true
2992
+ },
2993
+ "ini": {
2994
+ "version": "1.3.5",
2995
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
2996
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
2997
+ "dev": true
2998
+ },
2999
+ "ip-regex": {
3000
+ "version": "1.0.3",
3001
+ "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-1.0.3.tgz",
3002
+ "integrity": "sha1-3FiQdvZZ9BnCIgOaMzFvHHOH7/0=",
3003
+ "dev": true,
3004
+ "optional": true
3005
+ },
3006
+ "is-absolute": {
3007
+ "version": "0.1.7",
3008
+ "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz",
3009
+ "integrity": "sha1-hHSREZ/MtftDYhfMc39/qtUPYD8=",
3010
+ "dev": true,
3011
+ "requires": {
3012
+ "is-relative": "0.1.3"
3013
+ }
3014
+ },
3015
+ "is-arrayish": {
3016
+ "version": "0.2.1",
3017
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
3018
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
3019
+ "dev": true
3020
+ },
3021
+ "is-buffer": {
3022
+ "version": "1.1.6",
3023
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
3024
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
3025
+ "dev": true
3026
+ },
3027
+ "is-builtin-module": {
3028
+ "version": "1.0.0",
3029
+ "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
3030
+ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
3031
+ "dev": true,
3032
+ "requires": {
3033
+ "builtin-modules": "1.1.1"
3034
+ }
3035
+ },
3036
+ "is-bzip2": {
3037
+ "version": "1.0.0",
3038
+ "resolved": "https://registry.npmjs.org/is-bzip2/-/is-bzip2-1.0.0.tgz",
3039
+ "integrity": "sha1-XuWOqlounIDiFAe+3yOuWsCRs/w=",
3040
+ "dev": true
3041
+ },
3042
+ "is-dotfile": {
3043
+ "version": "1.0.3",
3044
+ "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
3045
+ "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
3046
+ "dev": true
3047
+ },
3048
+ "is-equal-shallow": {
3049
+ "version": "0.1.3",
3050
+ "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
3051
+ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
3052
+ "dev": true,
3053
+ "requires": {
3054
+ "is-primitive": "2.0.0"
3055
+ }
3056
+ },
3057
+ "is-extendable": {
3058
+ "version": "0.1.1",
3059
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
3060
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
3061
+ "dev": true
3062
+ },
3063
+ "is-extglob": {
3064
+ "version": "2.1.1",
3065
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
3066
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
3067
+ "dev": true
3068
+ },
3069
+ "is-finite": {
3070
+ "version": "1.0.2",
3071
+ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
3072
+ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
3073
+ "dev": true,
3074
+ "requires": {
3075
+ "number-is-nan": "1.0.1"
3076
+ }
3077
+ },
3078
+ "is-fullwidth-code-point": {
3079
+ "version": "1.0.0",
3080
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
3081
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
3082
+ "dev": true,
3083
+ "requires": {
3084
+ "number-is-nan": "1.0.1"
3085
+ }
3086
+ },
3087
+ "is-gif": {
3088
+ "version": "1.0.0",
3089
+ "resolved": "https://registry.npmjs.org/is-gif/-/is-gif-1.0.0.tgz",
3090
+ "integrity": "sha1-ptKumIkwB7/6l6HYwB1jIFgyCX4=",
3091
+ "dev": true,
3092
+ "optional": true
3093
+ },
3094
+ "is-glob": {
3095
+ "version": "3.1.0",
3096
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
3097
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
3098
+ "dev": true,
3099
+ "requires": {
3100
+ "is-extglob": "2.1.1"
3101
+ }
3102
+ },
3103
+ "is-gzip": {
3104
+ "version": "1.0.0",
3105
+ "resolved": "https://registry.npmjs.org/is-gzip/-/is-gzip-1.0.0.tgz",
3106
+ "integrity": "sha1-bKiwe5nHeZgCWQDlVc7Y7YCHmoM=",
3107
+ "dev": true
3108
+ },
3109
+ "is-jpg": {
3110
+ "version": "1.0.0",
3111
+ "resolved": "https://registry.npmjs.org/is-jpg/-/is-jpg-1.0.0.tgz",
3112
+ "integrity": "sha1-KVnBfnNDDbOCZNp1uQ3VTy2G2hw=",
3113
+ "dev": true,
3114
+ "optional": true
3115
+ },
3116
+ "is-natural-number": {
3117
+ "version": "2.1.1",
3118
+ "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-2.1.1.tgz",
3119
+ "integrity": "sha1-fUxXKDd+84bD4ZSpkRv1fG3DNec=",
3120
+ "dev": true
3121
+ },
3122
+ "is-number": {
3123
+ "version": "2.1.0",
3124
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
3125
+ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
3126
+ "dev": true,
3127
+ "requires": {
3128
+ "kind-of": "3.2.2"
3129
+ }
3130
+ },
3131
+ "is-obj": {
3132
+ "version": "1.0.1",
3133
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
3134
+ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
3135
+ "dev": true
3136
+ },
3137
+ "is-png": {
3138
+ "version": "1.1.0",
3139
+ "resolved": "https://registry.npmjs.org/is-png/-/is-png-1.1.0.tgz",
3140
+ "integrity": "sha1-1XSxK/J1wDUEVVcLDltXqwYgd84=",
3141
+ "dev": true,
3142
+ "optional": true
3143
+ },
3144
+ "is-posix-bracket": {
3145
+ "version": "0.1.1",
3146
+ "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
3147
+ "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
3148
+ "dev": true
3149
+ },
3150
+ "is-primitive": {
3151
+ "version": "2.0.0",
3152
+ "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
3153
+ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
3154
+ "dev": true
3155
+ },
3156
+ "is-redirect": {
3157
+ "version": "1.0.0",
3158
+ "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz",
3159
+ "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=",
3160
+ "dev": true
3161
+ },
3162
+ "is-relative": {
3163
+ "version": "0.1.3",
3164
+ "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz",
3165
+ "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=",
3166
+ "dev": true
3167
+ },
3168
+ "is-retry-allowed": {
3169
+ "version": "1.1.0",
3170
+ "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz",
3171
+ "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=",
3172
+ "dev": true
3173
+ },
3174
+ "is-stream": {
3175
+ "version": "1.1.0",
3176
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
3177
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
3178
+ "dev": true
3179
+ },
3180
+ "is-svg": {
3181
+ "version": "1.1.1",
3182
+ "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-1.1.1.tgz",
3183
+ "integrity": "sha1-rA76r7ZTrFhHNwix+HNjbKEQ4xs=",
3184
+ "dev": true,
3185
+ "optional": true
3186
+ },
3187
+ "is-tar": {
3188
+ "version": "1.0.0",
3189
+ "resolved": "https://registry.npmjs.org/is-tar/-/is-tar-1.0.0.tgz",
3190
+ "integrity": "sha1-L2suF5LB9bs2UZrKqdZcDSb+hT0=",
3191
+ "dev": true
3192
+ },
3193
+ "is-typedarray": {
3194
+ "version": "1.0.0",
3195
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
3196
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
3197
+ "dev": true,
3198
+ "optional": true
3199
+ },
3200
+ "is-url": {
3201
+ "version": "1.2.2",
3202
+ "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.2.tgz",
3203
+ "integrity": "sha1-SYkFpZO/R8wtnn9zg3K792lsfyY=",
3204
+ "dev": true
3205
+ },
3206
+ "is-utf8": {
3207
+ "version": "0.2.1",
3208
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
3209
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
3210
+ "dev": true
3211
+ },
3212
+ "is-valid-glob": {
3213
+ "version": "0.3.0",
3214
+ "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz",
3215
+ "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=",
3216
+ "dev": true
3217
+ },
3218
+ "is-zip": {
3219
+ "version": "1.0.0",
3220
+ "resolved": "https://registry.npmjs.org/is-zip/-/is-zip-1.0.0.tgz",
3221
+ "integrity": "sha1-R7Co/004p2QxzP2ZqOFaTIa6IyU=",
3222
+ "dev": true
3223
+ },
3224
+ "isarray": {
3225
+ "version": "1.0.0",
3226
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
3227
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
3228
+ "dev": true
3229
+ },
3230
+ "isobject": {
3231
+ "version": "2.1.0",
3232
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
3233
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
3234
+ "dev": true,
3235
+ "requires": {
3236
+ "isarray": "1.0.0"
3237
+ }
3238
+ },
3239
+ "isstream": {
3240
+ "version": "0.1.2",
3241
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
3242
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
3243
+ "dev": true,
3244
+ "optional": true
3245
+ },
3246
+ "jit-grunt": {
3247
+ "version": "0.10.0",
3248
+ "resolved": "https://registry.npmjs.org/jit-grunt/-/jit-grunt-0.10.0.tgz",
3249
+ "integrity": "sha1-AIw6f+Hpa9DYTiYOofoXg0V/ecI=",
3250
+ "dev": true
3251
+ },
3252
+ "jpegtran-bin": {
3253
+ "version": "3.2.0",
3254
+ "resolved": "https://registry.npmjs.org/jpegtran-bin/-/jpegtran-bin-3.2.0.tgz",
3255
+ "integrity": "sha1-9g7PSumZwL2tLp+83ytvCYHnops=",
3256
+ "dev": true,
3257
+ "optional": true,
3258
+ "requires": {
3259
+ "bin-build": "2.2.0",
3260
+ "bin-wrapper": "3.0.2",
3261
+ "logalot": "2.1.0"
3262
+ }
3263
+ },
3264
+ "js-base64": {
3265
+ "version": "2.4.0",
3266
+ "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.0.tgz",
3267
+ "integrity": "sha512-Wehd+7Pf9tFvGb+ydPm9TjYjV8X1YHOVyG8QyELZxEMqOhemVwGRmoG8iQ/soqI3n8v4xn59zaLxiCJiaaRzKA==",
3268
+ "dev": true
3269
+ },
3270
+ "js-yaml": {
3271
+ "version": "2.0.5",
3272
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz",
3273
+ "integrity": "sha1-olrmUJmZ6X3yeMZxnaEb0Gh3Q6g=",
3274
+ "dev": true,
3275
+ "requires": {
3276
+ "argparse": "0.1.16",
3277
+ "esprima": "1.0.4"
3278
+ }
3279
+ },
3280
+ "jsbn": {
3281
+ "version": "0.1.1",
3282
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
3283
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
3284
+ "dev": true,
3285
+ "optional": true
3286
+ },
3287
+ "jshint": {
3288
+ "version": "2.9.5",
3289
+ "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.9.5.tgz",
3290
+ "integrity": "sha1-HnJSkVzmgbQIJ+4UJIxG006apiw=",
3291
+ "dev": true,
3292
+ "requires": {
3293
+ "cli": "1.0.1",
3294
+ "console-browserify": "1.1.0",
3295
+ "exit": "0.1.2",
3296
+ "htmlparser2": "3.8.3",
3297
+ "lodash": "3.7.0",
3298
+ "minimatch": "3.0.4",
3299
+ "shelljs": "0.3.0",
3300
+ "strip-json-comments": "1.0.4"
3301
+ },
3302
+ "dependencies": {
3303
+ "lodash": {
3304
+ "version": "3.7.0",
3305
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.7.0.tgz",
3306
+ "integrity": "sha1-Nni9irmVBXwHreg27S7wh9qBHUU=",
3307
+ "dev": true
3308
+ },
3309
+ "minimatch": {
3310
+ "version": "3.0.4",
3311
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
3312
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
3313
+ "dev": true,
3314
+ "requires": {
3315
+ "brace-expansion": "1.1.8"
3316
+ }
3317
+ },
3318
+ "strip-json-comments": {
3319
+ "version": "1.0.4",
3320
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz",
3321
+ "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=",
3322
+ "dev": true
3323
+ }
3324
+ }
3325
+ },
3326
+ "json-schema": {
3327
+ "version": "0.2.3",
3328
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
3329
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
3330
+ "dev": true,
3331
+ "optional": true
3332
+ },
3333
+ "json-schema-traverse": {
3334
+ "version": "0.3.1",
3335
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
3336
+ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
3337
+ "dev": true,
3338
+ "optional": true
3339
+ },
3340
+ "json-stable-stringify": {
3341
+ "version": "1.0.1",
3342
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
3343
+ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
3344
+ "dev": true,
3345
+ "requires": {
3346
+ "jsonify": "0.0.0"
3347
+ }
3348
+ },
3349
+ "json-stringify-safe": {
3350
+ "version": "5.0.1",
3351
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
3352
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
3353
+ "dev": true,
3354
+ "optional": true
3355
+ },
3356
+ "jsonify": {
3357
+ "version": "0.0.0",
3358
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
3359
+ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
3360
+ "dev": true
3361
+ },
3362
+ "jsprim": {
3363
+ "version": "1.4.1",
3364
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
3365
+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
3366
+ "dev": true,
3367
+ "optional": true,
3368
+ "requires": {
3369
+ "assert-plus": "1.0.0",
3370
+ "extsprintf": "1.3.0",
3371
+ "json-schema": "0.2.3",
3372
+ "verror": "1.10.0"
3373
+ }
3374
+ },
3375
+ "kind-of": {
3376
+ "version": "3.2.2",
3377
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
3378
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
3379
+ "dev": true,
3380
+ "requires": {
3381
+ "is-buffer": "1.1.6"
3382
+ }
3383
+ },
3384
+ "lazy-req": {
3385
+ "version": "1.1.0",
3386
+ "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-1.1.0.tgz",
3387
+ "integrity": "sha1-va6+rTD42CQDnODOFJ1Nqge6H6w=",
3388
+ "dev": true,
3389
+ "optional": true
3390
+ },
3391
+ "lazystream": {
3392
+ "version": "1.0.0",
3393
+ "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
3394
+ "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
3395
+ "dev": true,
3396
+ "requires": {
3397
+ "readable-stream": "2.3.3"
3398
+ }
3399
+ },
3400
+ "livereload-js": {
3401
+ "version": "2.2.2",
3402
+ "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.2.2.tgz",
3403
+ "integrity": "sha1-bIclfmSKtHW8JOoldFftzB+NC8I=",
3404
+ "dev": true
3405
+ },
3406
+ "load-grunt-config": {
3407
+ "version": "0.19.2",
3408
+ "resolved": "https://registry.npmjs.org/load-grunt-config/-/load-grunt-config-0.19.2.tgz",
3409
+ "integrity": "sha1-UgkNSiDG5j90p2SPJJsZ57f87CQ=",
3410
+ "dev": true,
3411
+ "requires": {
3412
+ "cson": "3.0.2",
3413
+ "glob": "5.0.15",
3414
+ "jit-grunt": "0.10.0",
3415
+ "js-yaml": "3.4.6",
3416
+ "load-grunt-tasks": "3.3.0",
3417
+ "lodash": "3.10.1"
3418
+ },
3419
+ "dependencies": {
3420
+ "argparse": {
3421
+ "version": "1.0.9",
3422
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz",
3423
+ "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=",
3424
+ "dev": true,
3425
+ "requires": {
3426
+ "sprintf-js": "1.0.3"
3427
+ }
3428
+ },
3429
+ "esprima": {
3430
+ "version": "2.7.3",
3431
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
3432
+ "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
3433
+ "dev": true
3434
+ },
3435
+ "glob": {
3436
+ "version": "5.0.15",
3437
+ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
3438
+ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
3439
+ "dev": true,
3440
+ "requires": {
3441
+ "inflight": "1.0.6",
3442
+ "inherits": "2.0.3",
3443
+ "minimatch": "3.0.4",
3444
+ "once": "1.4.0",
3445
+ "path-is-absolute": "1.0.1"
3446
+ }
3447
+ },
3448
+ "js-yaml": {
3449
+ "version": "3.4.6",
3450
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.4.6.tgz",
3451
+ "integrity": "sha1-a+GyP2JJ9T0pM3D9TRqqY84bTrA=",
3452
+ "dev": true,
3453
+ "requires": {
3454
+ "argparse": "1.0.9",
3455
+ "esprima": "2.7.3",
3456
+ "inherit": "2.2.6"
3457
+ }
3458
+ },
3459
+ "lodash": {
3460
+ "version": "3.10.1",
3461
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
3462
+ "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
3463
+ "dev": true
3464
+ },
3465
+ "minimatch": {
3466
+ "version": "3.0.4",
3467
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
3468
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
3469
+ "dev": true,
3470
+ "requires": {
3471
+ "brace-expansion": "1.1.8"
3472
+ }
3473
+ }
3474
+ }
3475
+ },
3476
+ "load-grunt-tasks": {
3477
+ "version": "3.3.0",
3478
+ "resolved": "https://registry.npmjs.org/load-grunt-tasks/-/load-grunt-tasks-3.3.0.tgz",
3479
+ "integrity": "sha1-vliSkJRY2T3fdp60vGhRAggMYyE=",
3480
+ "dev": true,
3481
+ "requires": {
3482
+ "arrify": "1.0.1",
3483
+ "multimatch": "2.1.0",
3484
+ "pkg-up": "1.0.0"
3485
+ }
3486
+ },
3487
+ "load-json-file": {
3488
+ "version": "1.1.0",
3489
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
3490
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
3491
+ "dev": true,
3492
+ "requires": {
3493
+ "graceful-fs": "4.1.11",
3494
+ "parse-json": "2.2.0",
3495
+ "pify": "2.3.0",
3496
+ "pinkie-promise": "2.0.1",
3497
+ "strip-bom": "2.0.0"
3498
+ },
3499
+ "dependencies": {
3500
+ "graceful-fs": {
3501
+ "version": "4.1.11",
3502
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
3503
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
3504
+ "dev": true
3505
+ }
3506
+ }
3507
+ },
3508
+ "load-project-config": {
3509
+ "version": "0.2.1",
3510
+ "resolved": "https://registry.npmjs.org/load-project-config/-/load-project-config-0.2.1.tgz",
3511
+ "integrity": "sha1-RcVdj27krPMxSpd9YYd+MHf/5pc=",
3512
+ "dev": true,
3513
+ "requires": {
3514
+ "load-grunt-config": "0.19.2",
3515
+ "lodash": "3.10.1",
3516
+ "time-grunt": "1.4.0"
3517
+ },
3518
+ "dependencies": {
3519
+ "lodash": {
3520
+ "version": "3.10.1",
3521
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
3522
+ "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
3523
+ "dev": true
3524
+ }
3525
+ }
3526
+ },
3527
+ "lodash": {
3528
+ "version": "0.9.2",
3529
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz",
3530
+ "integrity": "sha1-jzSZxSRdNG1oLlsNO0B2fgnxqSw=",
3531
+ "dev": true
3532
+ },
3533
+ "lodash._basecopy": {
3534
+ "version": "3.0.1",
3535
+ "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz",
3536
+ "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=",
3537
+ "dev": true
3538
+ },
3539
+ "lodash._basetostring": {
3540
+ "version": "3.0.1",
3541
+ "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz",
3542
+ "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=",
3543
+ "dev": true
3544
+ },
3545
+ "lodash._basevalues": {
3546
+ "version": "3.0.0",
3547
+ "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz",
3548
+ "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=",
3549
+ "dev": true
3550
+ },
3551
+ "lodash._getnative": {
3552
+ "version": "3.9.1",
3553
+ "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz",
3554
+ "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=",
3555
+ "dev": true
3556
+ },
3557
+ "lodash._isiterateecall": {
3558
+ "version": "3.0.9",
3559
+ "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz",
3560
+ "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=",
3561
+ "dev": true
3562
+ },
3563
+ "lodash._reescape": {
3564
+ "version": "3.0.0",
3565
+ "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz",
3566
+ "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=",
3567
+ "dev": true
3568
+ },
3569
+ "lodash._reevaluate": {
3570
+ "version": "3.0.0",
3571
+ "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz",
3572
+ "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=",
3573
+ "dev": true
3574
+ },
3575
+ "lodash._reinterpolate": {
3576
+ "version": "3.0.0",
3577
+ "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
3578
+ "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=",
3579
+ "dev": true
3580
+ },
3581
+ "lodash._root": {
3582
+ "version": "3.0.1",
3583
+ "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz",
3584
+ "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=",
3585
+ "dev": true
3586
+ },
3587
+ "lodash.escape": {
3588
+ "version": "3.2.0",
3589
+ "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz",
3590
+ "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=",
3591
+ "dev": true,
3592
+ "requires": {
3593
+ "lodash._root": "3.0.1"
3594
+ }
3595
+ },
3596
+ "lodash.isarguments": {
3597
+ "version": "3.1.0",
3598
+ "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz",
3599
+ "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=",
3600
+ "dev": true
3601
+ },
3602
+ "lodash.isarray": {
3603
+ "version": "3.0.4",
3604
+ "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz",
3605
+ "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=",
3606
+ "dev": true
3607
+ },
3608
+ "lodash.isequal": {
3609
+ "version": "4.5.0",
3610
+ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
3611
+ "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=",
3612
+ "dev": true
3613
+ },
3614
+ "lodash.keys": {
3615
+ "version": "3.1.2",
3616
+ "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz",
3617
+ "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=",
3618
+ "dev": true,
3619
+ "requires": {
3620
+ "lodash._getnative": "3.9.1",
3621
+ "lodash.isarguments": "3.1.0",
3622
+ "lodash.isarray": "3.0.4"
3623
+ }
3624
+ },
3625
+ "lodash.restparam": {
3626
+ "version": "3.6.1",
3627
+ "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz",
3628
+ "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=",
3629
+ "dev": true
3630
+ },
3631
+ "lodash.template": {
3632
+ "version": "3.6.2",
3633
+ "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz",
3634
+ "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=",
3635
+ "dev": true,
3636
+ "requires": {
3637
+ "lodash._basecopy": "3.0.1",
3638
+ "lodash._basetostring": "3.0.1",
3639
+ "lodash._basevalues": "3.0.0",
3640
+ "lodash._isiterateecall": "3.0.9",
3641
+ "lodash._reinterpolate": "3.0.0",
3642
+ "lodash.escape": "3.2.0",
3643
+ "lodash.keys": "3.1.2",
3644
+ "lodash.restparam": "3.6.1",
3645
+ "lodash.templatesettings": "3.1.1"
3646
+ }
3647
+ },
3648
+ "lodash.templatesettings": {
3649
+ "version": "3.1.1",
3650
+ "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz",
3651
+ "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=",
3652
+ "dev": true,
3653
+ "requires": {
3654
+ "lodash._reinterpolate": "3.0.0",
3655
+ "lodash.escape": "3.2.0"
3656
+ }
3657
+ },
3658
+ "logalot": {
3659
+ "version": "2.1.0",
3660
+ "resolved": "https://registry.npmjs.org/logalot/-/logalot-2.1.0.tgz",
3661
+ "integrity": "sha1-X46MkNME7fElMJUaVVSruMXj9VI=",
3662
+ "dev": true,
3663
+ "optional": true,
3664
+ "requires": {
3665
+ "figures": "1.7.0",
3666
+ "squeak": "1.3.0"
3667
+ }
3668
+ },
3669
+ "longest": {
3670
+ "version": "1.0.1",
3671
+ "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
3672
+ "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
3673
+ "dev": true,
3674
+ "optional": true
3675
+ },
3676
+ "loud-rejection": {
3677
+ "version": "1.6.0",
3678
+ "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
3679
+ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
3680
+ "dev": true,
3681
+ "requires": {
3682
+ "currently-unhandled": "0.4.1",
3683
+ "signal-exit": "3.0.2"
3684
+ }
3685
+ },
3686
+ "lowercase-keys": {
3687
+ "version": "1.0.0",
3688
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz",
3689
+ "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=",
3690
+ "dev": true
3691
+ },
3692
+ "lpad-align": {
3693
+ "version": "1.1.2",
3694
+ "resolved": "https://registry.npmjs.org/lpad-align/-/lpad-align-1.1.2.tgz",
3695
+ "integrity": "sha1-IfYArBwwlcPG5JfuZyce4ISB/p4=",
3696
+ "dev": true,
3697
+ "optional": true,
3698
+ "requires": {
3699
+ "get-stdin": "4.0.1",
3700
+ "indent-string": "2.1.0",
3701
+ "longest": "1.0.1",
3702
+ "meow": "3.7.0"
3703
+ }
3704
+ },
3705
+ "lru-cache": {
3706
+ "version": "2.7.3",
3707
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
3708
+ "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=",
3709
+ "dev": true
3710
+ },
3711
+ "map-obj": {
3712
+ "version": "1.0.1",
3713
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
3714
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
3715
+ "dev": true
3716
+ },
3717
+ "md5-file": {
3718
+ "version": "2.0.7",
3719
+ "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-2.0.7.tgz",
3720
+ "integrity": "sha1-MH94vQTMsFTkZ+xmHPpamv3J8hA=",
3721
+ "dev": true
3722
+ },
3723
+ "media-typer": {
3724
+ "version": "0.3.0",
3725
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
3726
+ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
3727
+ "dev": true
3728
+ },
3729
+ "meow": {
3730
+ "version": "3.7.0",
3731
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
3732
+ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
3733
+ "dev": true,
3734
+ "requires": {
3735
+ "camelcase-keys": "2.1.0",
3736
+ "decamelize": "1.2.0",
3737
+ "loud-rejection": "1.6.0",
3738
+ "map-obj": "1.0.1",
3739
+ "minimist": "1.2.0",
3740
+ "normalize-package-data": "2.4.0",
3741
+ "object-assign": "4.1.1",
3742
+ "read-pkg-up": "1.0.1",
3743
+ "redent": "1.0.0",
3744
+ "trim-newlines": "1.0.0"
3745
+ },
3746
+ "dependencies": {
3747
+ "minimist": {
3748
+ "version": "1.2.0",
3749
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
3750
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
3751
+ "dev": true
3752
+ }
3753
+ }
3754
+ },
3755
+ "merge-stream": {
3756
+ "version": "1.0.1",
3757
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz",
3758
+ "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=",
3759
+ "dev": true,
3760
+ "requires": {
3761
+ "readable-stream": "2.3.3"
3762
+ }
3763
+ },
3764
+ "micromatch": {
3765
+ "version": "2.3.11",
3766
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
3767
+ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
3768
+ "dev": true,
3769
+ "requires": {
3770
+ "arr-diff": "2.0.0",
3771
+ "array-unique": "0.2.1",
3772
+ "braces": "1.8.5",
3773
+ "expand-brackets": "0.1.5",
3774
+ "extglob": "0.3.2",
3775
+ "filename-regex": "2.0.1",
3776
+ "is-extglob": "1.0.0",
3777
+ "is-glob": "2.0.1",
3778
+ "kind-of": "3.2.2",
3779
+ "normalize-path": "2.1.1",
3780
+ "object.omit": "2.0.1",
3781
+ "parse-glob": "3.0.4",
3782
+ "regex-cache": "0.4.4"
3783
+ },
3784
+ "dependencies": {
3785
+ "is-extglob": {
3786
+ "version": "1.0.0",
3787
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
3788
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
3789
+ "dev": true
3790
+ },
3791
+ "is-glob": {
3792
+ "version": "2.0.1",
3793
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
3794
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
3795
+ "dev": true,
3796
+ "requires": {
3797
+ "is-extglob": "1.0.0"
3798
+ }
3799
+ }
3800
+ }
3801
+ },
3802
+ "mime-db": {
3803
+ "version": "1.30.0",
3804
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz",
3805
+ "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=",
3806
+ "dev": true
3807
+ },
3808
+ "mime-types": {
3809
+ "version": "2.1.17",
3810
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz",
3811
+ "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=",
3812
+ "dev": true,
3813
+ "requires": {
3814
+ "mime-db": "1.30.0"
3815
+ }
3816
+ },
3817
+ "minimatch": {
3818
+ "version": "0.2.14",
3819
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz",
3820
+ "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=",
3821
+ "dev": true,
3822
+ "requires": {
3823
+ "lru-cache": "2.7.3",
3824
+ "sigmund": "1.0.1"
3825
+ }
3826
+ },
3827
+ "minimist": {
3828
+ "version": "0.0.8",
3829
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
3830
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
3831
+ "dev": true
3832
+ },
3833
+ "mkdirp": {
3834
+ "version": "0.5.1",
3835
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
3836
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
3837
+ "dev": true,
3838
+ "requires": {
3839
+ "minimist": "0.0.8"
3840
+ }
3841
+ },
3842
+ "ms": {
3843
+ "version": "0.7.1",
3844
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
3845
+ "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=",
3846
+ "dev": true
3847
+ },
3848
+ "multimatch": {
3849
+ "version": "2.1.0",
3850
+ "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz",
3851
+ "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=",
3852
+ "dev": true,
3853
+ "requires": {
3854
+ "array-differ": "1.0.0",
3855
+ "array-union": "1.0.2",
3856
+ "arrify": "1.0.1",
3857
+ "minimatch": "3.0.4"
3858
+ },
3859
+ "dependencies": {
3860
+ "minimatch": {
3861
+ "version": "3.0.4",
3862
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
3863
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
3864
+ "dev": true,
3865
+ "requires": {
3866
+ "brace-expansion": "1.1.8"
3867
+ }
3868
+ }
3869
+ }
3870
+ },
3871
+ "multipipe": {
3872
+ "version": "0.1.2",
3873
+ "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz",
3874
+ "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=",
3875
+ "dev": true,
3876
+ "requires": {
3877
+ "duplexer2": "0.0.2"
3878
+ },
3879
+ "dependencies": {
3880
+ "duplexer2": {
3881
+ "version": "0.0.2",
3882
+ "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz",
3883
+ "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=",
3884
+ "dev": true,
3885
+ "requires": {
3886
+ "readable-stream": "1.1.14"
3887
+ }
3888
+ },
3889
+ "isarray": {
3890
+ "version": "0.0.1",
3891
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
3892
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
3893
+ "dev": true
3894
+ },
3895
+ "readable-stream": {
3896
+ "version": "1.1.14",
3897
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
3898
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
3899
+ "dev": true,
3900
+ "requires": {
3901
+ "core-util-is": "1.0.2",
3902
+ "inherits": "2.0.3",
3903
+ "isarray": "0.0.1",
3904
+ "string_decoder": "0.10.31"
3905
+ }
3906
+ },
3907
+ "string_decoder": {
3908
+ "version": "0.10.31",
3909
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
3910
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
3911
+ "dev": true
3912
+ }
3913
+ }
3914
+ },
3915
+ "nan": {
3916
+ "version": "2.8.0",
3917
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz",
3918
+ "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=",
3919
+ "dev": true,
3920
+ "optional": true
3921
+ },
3922
+ "node-abi": {
3923
+ "version": "2.1.2",
3924
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.1.2.tgz",
3925
+ "integrity": "sha512-hmUtb8m75RSi7N+zZLYqe75XDvZB+6LyTBPkj2DConvNgQet2e3BIqEwe1LLvqMrfyjabuT5ZOrTioLCH1HTdA==",
3926
+ "dev": true,
3927
+ "optional": true,
3928
+ "requires": {
3929
+ "semver": "5.4.1"
3930
+ },
3931
+ "dependencies": {
3932
+ "semver": {
3933
+ "version": "5.4.1",
3934
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
3935
+ "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==",
3936
+ "dev": true,
3937
+ "optional": true
3938
+ }
3939
+ }
3940
+ },
3941
+ "node-gyp": {
3942
+ "version": "3.6.2",
3943
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz",
3944
+ "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=",
3945
+ "dev": true,
3946
+ "optional": true,
3947
+ "requires": {
3948
+ "fstream": "1.0.11",
3949
+ "glob": "7.1.2",
3950
+ "graceful-fs": "4.1.11",
3951
+ "minimatch": "3.0.4",
3952
+ "mkdirp": "0.5.1",
3953
+ "nopt": "3.0.6",
3954
+ "npmlog": "4.1.2",
3955
+ "osenv": "0.1.4",
3956
+ "request": "2.83.0",
3957
+ "rimraf": "2.2.8",
3958
+ "semver": "5.3.0",
3959
+ "tar": "2.2.1",
3960
+ "which": "1.0.9"
3961
+ },
3962
+ "dependencies": {
3963
+ "glob": {
3964
+ "version": "7.1.2",
3965
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
3966
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
3967
+ "dev": true,
3968
+ "optional": true,
3969
+ "requires": {
3970
+ "fs.realpath": "1.0.0",
3971
+ "inflight": "1.0.6",
3972
+ "inherits": "2.0.3",
3973
+ "minimatch": "3.0.4",
3974
+ "once": "1.4.0",
3975
+ "path-is-absolute": "1.0.1"
3976
+ }
3977
+ },
3978
+ "graceful-fs": {
3979
+ "version": "4.1.11",
3980
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
3981
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
3982
+ "dev": true,
3983
+ "optional": true
3984
+ },
3985
+ "minimatch": {
3986
+ "version": "3.0.4",
3987
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
3988
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
3989
+ "dev": true,
3990
+ "requires": {
3991
+ "brace-expansion": "1.1.8"
3992
+ }
3993
+ },
3994
+ "nopt": {
3995
+ "version": "3.0.6",
3996
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
3997
+ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
3998
+ "dev": true,
3999
+ "optional": true,
4000
+ "requires": {
4001
+ "abbrev": "1.1.1"
4002
+ }
4003
+ }
4004
+ }
4005
+ },
4006
+ "node-status-codes": {
4007
+ "version": "1.0.0",
4008
+ "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz",
4009
+ "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=",
4010
+ "dev": true
4011
+ },
4012
+ "node-uuid": {
4013
+ "version": "1.4.0",
4014
+ "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.0.tgz",
4015
+ "integrity": "sha1-B/myM3Vy/2J1x3Xh1IUT86RdemU=",
4016
+ "dev": true
4017
+ },
4018
+ "noop-logger": {
4019
+ "version": "0.1.1",
4020
+ "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz",
4021
+ "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=",
4022
+ "dev": true,
4023
+ "optional": true
4024
+ },
4025
+ "nopt": {
4026
+ "version": "1.0.10",
4027
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
4028
+ "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=",
4029
+ "dev": true,
4030
+ "requires": {
4031
+ "abbrev": "1.1.1"
4032
+ }
4033
+ },
4034
+ "normalize-package-data": {
4035
+ "version": "2.4.0",
4036
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
4037
+ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
4038
+ "dev": true,
4039
+ "requires": {
4040
+ "hosted-git-info": "2.5.0",
4041
+ "is-builtin-module": "1.0.0",
4042
+ "semver": "5.3.0",
4043
+ "validate-npm-package-license": "3.0.1"
4044
+ }
4045
+ },
4046
+ "normalize-path": {
4047
+ "version": "2.1.1",
4048
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
4049
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
4050
+ "dev": true,
4051
+ "requires": {
4052
+ "remove-trailing-separator": "1.1.0"
4053
+ }
4054
+ },
4055
+ "normalize-range": {
4056
+ "version": "0.1.2",
4057
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
4058
+ "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
4059
+ "dev": true
4060
+ },
4061
+ "npmlog": {
4062
+ "version": "4.1.2",
4063
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
4064
+ "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
4065
+ "dev": true,
4066
+ "requires": {
4067
+ "are-we-there-yet": "1.1.4",
4068
+ "console-control-strings": "1.1.0",
4069
+ "gauge": "2.7.4",
4070
+ "set-blocking": "2.0.0"
4071
+ }
4072
+ },
4073
+ "num2fraction": {
4074
+ "version": "1.2.2",
4075
+ "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
4076
+ "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
4077
+ "dev": true
4078
+ },
4079
+ "number-is-nan": {
4080
+ "version": "1.0.1",
4081
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
4082
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
4083
+ "dev": true
4084
+ },
4085
+ "oauth-sign": {
4086
+ "version": "0.8.2",
4087
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
4088
+ "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
4089
+ "dev": true,
4090
+ "optional": true
4091
+ },
4092
+ "object-assign": {
4093
+ "version": "4.1.1",
4094
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
4095
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
4096
+ "dev": true
4097
+ },
4098
+ "object.omit": {
4099
+ "version": "2.0.1",
4100
+ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
4101
+ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
4102
+ "dev": true,
4103
+ "requires": {
4104
+ "for-own": "0.1.5",
4105
+ "is-extendable": "0.1.1"
4106
+ }
4107
+ },
4108
+ "on-finished": {
4109
+ "version": "2.3.0",
4110
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
4111
+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
4112
+ "dev": true,
4113
+ "requires": {
4114
+ "ee-first": "1.1.1"
4115
+ }
4116
+ },
4117
+ "once": {
4118
+ "version": "1.4.0",
4119
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
4120
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
4121
+ "dev": true,
4122
+ "requires": {
4123
+ "wrappy": "1.0.2"
4124
+ }
4125
+ },
4126
+ "onetime": {
4127
+ "version": "1.1.0",
4128
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
4129
+ "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=",
4130
+ "dev": true
4131
+ },
4132
+ "optional": {
4133
+ "version": "0.1.4",
4134
+ "resolved": "https://registry.npmjs.org/optional/-/optional-0.1.4.tgz",
4135
+ "integrity": "sha512-gtvrrCfkE08wKcgXaVwQVgwEQ8vel2dc5DDBn9RLQZ3YtmtkBss6A2HY6BnJH4N/4Ku97Ri/SF8sNWE2225WJw==",
4136
+ "dev": true
4137
+ },
4138
+ "optipng-bin": {
4139
+ "version": "3.1.4",
4140
+ "resolved": "https://registry.npmjs.org/optipng-bin/-/optipng-bin-3.1.4.tgz",
4141
+ "integrity": "sha1-ldNPLEiHBPb9cGBr/qDGWfHZXYQ=",
4142
+ "dev": true,
4143
+ "optional": true,
4144
+ "requires": {
4145
+ "bin-build": "2.2.0",
4146
+ "bin-wrapper": "3.0.2",
4147
+ "logalot": "2.1.0"
4148
+ }
4149
+ },
4150
+ "ordered-read-streams": {
4151
+ "version": "0.3.0",
4152
+ "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz",
4153
+ "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=",
4154
+ "dev": true,
4155
+ "requires": {
4156
+ "is-stream": "1.1.0",
4157
+ "readable-stream": "2.3.3"
4158
+ }
4159
+ },
4160
+ "os-filter-obj": {
4161
+ "version": "1.0.3",
4162
+ "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-1.0.3.tgz",
4163
+ "integrity": "sha1-WRUzDZDs7VV9LZOKMcbdIU2cY60=",
4164
+ "dev": true,
4165
+ "optional": true
4166
+ },
4167
+ "os-homedir": {
4168
+ "version": "1.0.2",
4169
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
4170
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
4171
+ "dev": true
4172
+ },
4173
+ "os-tmpdir": {
4174
+ "version": "1.0.2",
4175
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
4176
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
4177
+ "dev": true
4178
+ },
4179
+ "osenv": {
4180
+ "version": "0.1.4",
4181
+ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz",
4182
+ "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=",
4183
+ "dev": true,
4184
+ "optional": true,
4185
+ "requires": {
4186
+ "os-homedir": "1.0.2",
4187
+ "os-tmpdir": "1.0.2"
4188
+ }
4189
+ },
4190
+ "parse-glob": {
4191
+ "version": "3.0.4",
4192
+ "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
4193
+ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
4194
+ "dev": true,
4195
+ "requires": {
4196
+ "glob-base": "0.3.0",
4197
+ "is-dotfile": "1.0.3",
4198
+ "is-extglob": "1.0.0",
4199
+ "is-glob": "2.0.1"
4200
+ },
4201
+ "dependencies": {
4202
+ "is-extglob": {
4203
+ "version": "1.0.0",
4204
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
4205
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
4206
+ "dev": true
4207
+ },
4208
+ "is-glob": {
4209
+ "version": "2.0.1",
4210
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
4211
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
4212
+ "dev": true,
4213
+ "requires": {
4214
+ "is-extglob": "1.0.0"
4215
+ }
4216
+ }
4217
+ }
4218
+ },
4219
+ "parse-json": {
4220
+ "version": "2.2.0",
4221
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
4222
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
4223
+ "dev": true,
4224
+ "requires": {
4225
+ "error-ex": "1.3.1"
4226
+ }
4227
+ },
4228
+ "parse-ms": {
4229
+ "version": "1.0.1",
4230
+ "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz",
4231
+ "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=",
4232
+ "dev": true
4233
+ },
4234
+ "parseurl": {
4235
+ "version": "1.3.2",
4236
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
4237
+ "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=",
4238
+ "dev": true
4239
+ },
4240
+ "path-dirname": {
4241
+ "version": "1.0.2",
4242
+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
4243
+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
4244
+ "dev": true
4245
+ },
4246
+ "path-exists": {
4247
+ "version": "2.1.0",
4248
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
4249
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
4250
+ "dev": true,
4251
+ "requires": {
4252
+ "pinkie-promise": "2.0.1"
4253
+ }
4254
+ },
4255
+ "path-is-absolute": {
4256
+ "version": "1.0.1",
4257
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
4258
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
4259
+ "dev": true
4260
+ },
4261
+ "path-type": {
4262
+ "version": "1.1.0",
4263
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
4264
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
4265
+ "dev": true,
4266
+ "requires": {
4267
+ "graceful-fs": "4.1.11",
4268
+ "pify": "2.3.0",
4269
+ "pinkie-promise": "2.0.1"
4270
+ },
4271
+ "dependencies": {
4272
+ "graceful-fs": {
4273
+ "version": "4.1.11",
4274
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
4275
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
4276
+ "dev": true
4277
+ }
4278
+ }
4279
+ },
4280
+ "pend": {
4281
+ "version": "1.2.0",
4282
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
4283
+ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
4284
+ "dev": true
4285
+ },
4286
+ "performance-now": {
4287
+ "version": "2.1.0",
4288
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
4289
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
4290
+ "dev": true,
4291
+ "optional": true
4292
+ },
4293
+ "pify": {
4294
+ "version": "2.3.0",
4295
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
4296
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
4297
+ "dev": true
4298
+ },
4299
+ "pinkie": {
4300
+ "version": "2.0.4",
4301
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
4302
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
4303
+ "dev": true
4304
+ },
4305
+ "pinkie-promise": {
4306
+ "version": "2.0.1",
4307
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
4308
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
4309
+ "dev": true,
4310
+ "requires": {
4311
+ "pinkie": "2.0.4"
4312
+ }
4313
+ },
4314
+ "pkg-up": {
4315
+ "version": "1.0.0",
4316
+ "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz",
4317
+ "integrity": "sha1-Pgj7RhUlxEIWJKM7n35tCvWwWiY=",
4318
+ "dev": true,
4319
+ "requires": {
4320
+ "find-up": "1.1.2"
4321
+ }
4322
+ },
4323
+ "plur": {
4324
+ "version": "1.0.0",
4325
+ "resolved": "https://registry.npmjs.org/plur/-/plur-1.0.0.tgz",
4326
+ "integrity": "sha1-24XGgU9eXlo7Se/CjWBP7GKXUVY=",
4327
+ "dev": true
4328
+ },
4329
+ "postcss": {
4330
+ "version": "5.2.18",
4331
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
4332
+ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
4333
+ "dev": true,
4334
+ "requires": {
4335
+ "chalk": "1.1.3",
4336
+ "js-base64": "2.4.0",
4337
+ "source-map": "0.5.7",
4338
+ "supports-color": "3.2.3"
4339
+ }
4340
+ },
4341
+ "postcss-value-parser": {
4342
+ "version": "3.3.0",
4343
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz",
4344
+ "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=",
4345
+ "dev": true
4346
+ },
4347
+ "prebuild-install": {
4348
+ "version": "2.4.1",
4349
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-2.4.1.tgz",
4350
+ "integrity": "sha512-99TyEFYTTkBWANT+mwSptmLb9ZCLQ6qKIUE36fXSIOtShB0JNprL2hzBD8F1yIuT9btjFrFEwbRHXhqDi1HmRA==",
4351
+ "dev": true,
4352
+ "optional": true,
4353
+ "requires": {
4354
+ "expand-template": "1.1.0",
4355
+ "github-from-package": "0.0.0",
4356
+ "minimist": "1.2.0",
4357
+ "mkdirp": "0.5.1",
4358
+ "node-abi": "2.1.2",
4359
+ "noop-logger": "0.1.1",
4360
+ "npmlog": "4.1.2",
4361
+ "os-homedir": "1.0.2",
4362
+ "pump": "1.0.3",
4363
+ "rc": "1.2.2",
4364
+ "simple-get": "1.4.3",
4365
+ "tar-fs": "1.16.0",
4366
+ "tunnel-agent": "0.6.0",
4367
+ "xtend": "4.0.1"
4368
+ },
4369
+ "dependencies": {
4370
+ "minimist": {
4371
+ "version": "1.2.0",
4372
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
4373
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
4374
+ "dev": true,
4375
+ "optional": true
4376
+ }
4377
+ }
4378
+ },
4379
+ "prepend-http": {
4380
+ "version": "1.0.4",
4381
+ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
4382
+ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
4383
+ "dev": true
4384
+ },
4385
+ "preserve": {
4386
+ "version": "0.2.0",
4387
+ "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
4388
+ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
4389
+ "dev": true
4390
+ },
4391
+ "pretty-bytes": {
4392
+ "version": "4.0.2",
4393
+ "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz",
4394
+ "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=",
4395
+ "dev": true
4396
+ },
4397
+ "pretty-ms": {
4398
+ "version": "2.1.0",
4399
+ "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-2.1.0.tgz",
4400
+ "integrity": "sha1-QlfCVt8/sLRR1q/6qwIYhBJpgdw=",
4401
+ "dev": true,
4402
+ "requires": {
4403
+ "is-finite": "1.0.2",
4404
+ "parse-ms": "1.0.1",
4405
+ "plur": "1.0.0"
4406
+ }
4407
+ },
4408
+ "process-nextick-args": {
4409
+ "version": "1.0.7",
4410
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
4411
+ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
4412
+ "dev": true
4413
+ },
4414
+ "promised-io": {
4415
+ "version": "0.3.5",
4416
+ "resolved": "https://registry.npmjs.org/promised-io/-/promised-io-0.3.5.tgz",
4417
+ "integrity": "sha1-StIXuzZYvKrplGsXqGaOzYUeE1Y=",
4418
+ "dev": true
4419
+ },
4420
+ "pump": {
4421
+ "version": "1.0.3",
4422
+ "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz",
4423
+ "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==",
4424
+ "dev": true,
4425
+ "requires": {
4426
+ "end-of-stream": "1.4.0",
4427
+ "once": "1.4.0"
4428
+ }
4429
+ },
4430
+ "punycode": {
4431
+ "version": "1.4.1",
4432
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
4433
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
4434
+ "dev": true,
4435
+ "optional": true
4436
+ },
4437
+ "q": {
4438
+ "version": "1.5.1",
4439
+ "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
4440
+ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
4441
+ "dev": true,
4442
+ "optional": true
4443
+ },
4444
+ "qs": {
4445
+ "version": "6.5.1",
4446
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
4447
+ "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
4448
+ "dev": true,
4449
+ "optional": true
4450
+ },
4451
+ "randomatic": {
4452
+ "version": "1.1.7",
4453
+ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz",
4454
+ "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==",
4455
+ "dev": true,
4456
+ "requires": {
4457
+ "is-number": "3.0.0",
4458
+ "kind-of": "4.0.0"
4459
+ },
4460
+ "dependencies": {
4461
+ "is-number": {
4462
+ "version": "3.0.0",
4463
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
4464
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
4465
+ "dev": true,
4466
+ "requires": {
4467
+ "kind-of": "3.2.2"
4468
+ },
4469
+ "dependencies": {
4470
+ "kind-of": {
4471
+ "version": "3.2.2",
4472
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
4473
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
4474
+ "dev": true,
4475
+ "requires": {
4476
+ "is-buffer": "1.1.6"
4477
+ }
4478
+ }
4479
+ }
4480
+ },
4481
+ "kind-of": {
4482
+ "version": "4.0.0",
4483
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
4484
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
4485
+ "dev": true,
4486
+ "requires": {
4487
+ "is-buffer": "1.1.6"
4488
+ }
4489
+ }
4490
+ }
4491
+ },
4492
+ "raw-body": {
4493
+ "version": "2.1.7",
4494
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz",
4495
+ "integrity": "sha1-rf6s4uT7MJgFgBTQjActzFl1h3Q=",
4496
+ "dev": true,
4497
+ "requires": {
4498
+ "bytes": "2.4.0",
4499
+ "iconv-lite": "0.4.13",
4500
+ "unpipe": "1.0.0"
4501
+ },
4502
+ "dependencies": {
4503
+ "bytes": {
4504
+ "version": "2.4.0",
4505
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz",
4506
+ "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=",
4507
+ "dev": true
4508
+ },
4509
+ "iconv-lite": {
4510
+ "version": "0.4.13",
4511
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz",
4512
+ "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=",
4513
+ "dev": true
4514
+ }
4515
+ }
4516
+ },
4517
+ "rc": {
4518
+ "version": "1.2.2",
4519
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz",
4520
+ "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=",
4521
+ "dev": true,
4522
+ "requires": {
4523
+ "deep-extend": "0.4.2",
4524
+ "ini": "1.3.5",
4525
+ "minimist": "1.2.0",
4526
+ "strip-json-comments": "2.0.1"
4527
+ },
4528
+ "dependencies": {
4529
+ "minimist": {
4530
+ "version": "1.2.0",
4531
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
4532
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
4533
+ "dev": true
4534
+ }
4535
+ }
4536
+ },
4537
+ "read-all-stream": {
4538
+ "version": "3.1.0",
4539
+ "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz",
4540
+ "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=",
4541
+ "dev": true,
4542
+ "requires": {
4543
+ "pinkie-promise": "2.0.1",
4544
+ "readable-stream": "2.3.3"
4545
+ }
4546
+ },
4547
+ "read-pkg": {
4548
+ "version": "1.1.0",
4549
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
4550
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
4551
+ "dev": true,
4552
+ "requires": {
4553
+ "load-json-file": "1.1.0",
4554
+ "normalize-package-data": "2.4.0",
4555
+ "path-type": "1.1.0"
4556
+ }
4557
+ },
4558
+ "read-pkg-up": {
4559
+ "version": "1.0.1",
4560
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
4561
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
4562
+ "dev": true,
4563
+ "requires": {
4564
+ "find-up": "1.1.2",
4565
+ "read-pkg": "1.1.0"
4566
+ }
4567
+ },
4568
+ "readable-stream": {
4569
+ "version": "2.3.3",
4570
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
4571
+ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
4572
+ "dev": true,
4573
+ "requires": {
4574
+ "core-util-is": "1.0.2",
4575
+ "inherits": "2.0.3",
4576
+ "isarray": "1.0.0",
4577
+ "process-nextick-args": "1.0.7",
4578
+ "safe-buffer": "5.1.1",
4579
+ "string_decoder": "1.0.3",
4580
+ "util-deprecate": "1.0.2"
4581
+ }
4582
+ },
4583
+ "redent": {
4584
+ "version": "1.0.0",
4585
+ "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
4586
+ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
4587
+ "dev": true,
4588
+ "requires": {
4589
+ "indent-string": "2.1.0",
4590
+ "strip-indent": "1.0.1"
4591
+ }
4592
+ },
4593
+ "regex-cache": {
4594
+ "version": "0.4.4",
4595
+ "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
4596
+ "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
4597
+ "dev": true,
4598
+ "requires": {
4599
+ "is-equal-shallow": "0.1.3"
4600
+ }
4601
+ },
4602
+ "remove-trailing-separator": {
4603
+ "version": "1.1.0",
4604
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
4605
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
4606
+ "dev": true
4607
+ },
4608
+ "repeat-element": {
4609
+ "version": "1.1.2",
4610
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
4611
+ "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=",
4612
+ "dev": true
4613
+ },
4614
+ "repeat-string": {
4615
+ "version": "1.6.1",
4616
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
4617
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
4618
+ "dev": true
4619
+ },
4620
+ "repeating": {
4621
+ "version": "2.0.1",
4622
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
4623
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
4624
+ "dev": true,
4625
+ "requires": {
4626
+ "is-finite": "1.0.2"
4627
+ }
4628
+ },
4629
+ "replace-ext": {
4630
+ "version": "0.0.1",
4631
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz",
4632
+ "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=",
4633
+ "dev": true
4634
+ },
4635
+ "request": {
4636
+ "version": "2.83.0",
4637
+ "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz",
4638
+ "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==",
4639
+ "dev": true,
4640
+ "optional": true,
4641
+ "requires": {
4642
+ "aws-sign2": "0.7.0",
4643
+ "aws4": "1.6.0",
4644
+ "caseless": "0.12.0",
4645
+ "combined-stream": "1.0.5",
4646
+ "extend": "3.0.1",
4647
+ "forever-agent": "0.6.1",
4648
+ "form-data": "2.3.1",
4649
+ "har-validator": "5.0.3",
4650
+ "hawk": "6.0.2",
4651
+ "http-signature": "1.2.0",
4652
+ "is-typedarray": "1.0.0",
4653
+ "isstream": "0.1.2",
4654
+ "json-stringify-safe": "5.0.1",
4655
+ "mime-types": "2.1.17",
4656
+ "oauth-sign": "0.8.2",
4657
+ "performance-now": "2.1.0",
4658
+ "qs": "6.5.1",
4659
+ "safe-buffer": "5.1.1",
4660
+ "stringstream": "0.0.5",
4661
+ "tough-cookie": "2.3.3",
4662
+ "tunnel-agent": "0.6.0",
4663
+ "uuid": "3.1.0"
4664
+ }
4665
+ },
4666
+ "requirefresh": {
4667
+ "version": "2.1.0",
4668
+ "resolved": "https://registry.npmjs.org/requirefresh/-/requirefresh-2.1.0.tgz",
4669
+ "integrity": "sha1-dC3Mwg86lpGNZsbxWX3I/+vE9vU=",
4670
+ "dev": true,
4671
+ "requires": {
4672
+ "editions": "1.3.3"
4673
+ }
4674
+ },
4675
+ "rimraf": {
4676
+ "version": "2.2.8",
4677
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
4678
+ "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=",
4679
+ "dev": true
4680
+ },
4681
+ "rsyncwrapper": {
4682
+ "version": "2.0.1",
4683
+ "resolved": "https://registry.npmjs.org/rsyncwrapper/-/rsyncwrapper-2.0.1.tgz",
4684
+ "integrity": "sha1-itRMAz4W1IFvMBgMWy17ssIlk5A=",
4685
+ "dev": true,
4686
+ "requires": {
4687
+ "lodash": "4.15.0"
4688
+ },
4689
+ "dependencies": {
4690
+ "lodash": {
4691
+ "version": "4.15.0",
4692
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.15.0.tgz",
4693
+ "integrity": "sha1-MWI5HY8BQKoiz49rPDTWt/Y9Oqk=",
4694
+ "dev": true
4695
+ }
4696
+ }
4697
+ },
4698
+ "safe-buffer": {
4699
+ "version": "5.1.1",
4700
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
4701
+ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
4702
+ "dev": true
4703
+ },
4704
+ "safefs": {
4705
+ "version": "4.1.0",
4706
+ "resolved": "https://registry.npmjs.org/safefs/-/safefs-4.1.0.tgz",
4707
+ "integrity": "sha1-+CrrS9165R9lPrIPZyizBYyNZEU=",
4708
+ "dev": true,
4709
+ "requires": {
4710
+ "editions": "1.3.3",
4711
+ "graceful-fs": "4.1.11"
4712
+ },
4713
+ "dependencies": {
4714
+ "graceful-fs": {
4715
+ "version": "4.1.11",
4716
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
4717
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
4718
+ "dev": true
4719
+ }
4720
+ }
4721
+ },
4722
+ "sax": {
4723
+ "version": "1.2.4",
4724
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
4725
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
4726
+ "dev": true,
4727
+ "optional": true
4728
+ },
4729
+ "seek-bzip": {
4730
+ "version": "1.0.5",
4731
+ "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz",
4732
+ "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=",
4733
+ "dev": true,
4734
+ "requires": {
4735
+ "commander": "2.8.1"
4736
+ }
4737
+ },
4738
+ "semver": {
4739
+ "version": "5.3.0",
4740
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
4741
+ "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
4742
+ "dev": true
4743
+ },
4744
+ "semver-regex": {
4745
+ "version": "1.0.0",
4746
+ "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-1.0.0.tgz",
4747
+ "integrity": "sha1-kqSWkGX5xwxpR1PVUkj8aPj2Usk=",
4748
+ "dev": true,
4749
+ "optional": true
4750
+ },
4751
+ "semver-truncate": {
4752
+ "version": "1.1.2",
4753
+ "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz",
4754
+ "integrity": "sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=",
4755
+ "dev": true,
4756
+ "optional": true,
4757
+ "requires": {
4758
+ "semver": "5.3.0"
4759
+ }
4760
+ },
4761
+ "set-blocking": {
4762
+ "version": "2.0.0",
4763
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
4764
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
4765
+ "dev": true
4766
+ },
4767
+ "set-immediate-shim": {
4768
+ "version": "1.0.1",
4769
+ "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
4770
+ "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
4771
+ "dev": true
4772
+ },
4773
+ "shelljs": {
4774
+ "version": "0.3.0",
4775
+ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz",
4776
+ "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=",
4777
+ "dev": true
4778
+ },
4779
+ "sigmund": {
4780
+ "version": "1.0.1",
4781
+ "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
4782
+ "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=",
4783
+ "dev": true
4784
+ },
4785
+ "signal-exit": {
4786
+ "version": "3.0.2",
4787
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
4788
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
4789
+ "dev": true
4790
+ },
4791
+ "simple-get": {
4792
+ "version": "1.4.3",
4793
+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-1.4.3.tgz",
4794
+ "integrity": "sha1-6XVe2kB+ltpAxeUVjJ6jezO+y+s=",
4795
+ "dev": true,
4796
+ "optional": true,
4797
+ "requires": {
4798
+ "once": "1.4.0",
4799
+ "unzip-response": "1.0.2",
4800
+ "xtend": "4.0.1"
4801
+ }
4802
+ },
4803
+ "sntp": {
4804
+ "version": "2.1.0",
4805
+ "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz",
4806
+ "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==",
4807
+ "dev": true,
4808
+ "optional": true,
4809
+ "requires": {
4810
+ "hoek": "4.2.0"
4811
+ }
4812
+ },
4813
+ "source-map": {
4814
+ "version": "0.5.7",
4815
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
4816
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
4817
+ "dev": true
4818
+ },
4819
+ "sparkles": {
4820
+ "version": "1.0.0",
4821
+ "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz",
4822
+ "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=",
4823
+ "dev": true
4824
+ },
4825
+ "spdx-correct": {
4826
+ "version": "1.0.2",
4827
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz",
4828
+ "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=",
4829
+ "dev": true,
4830
+ "requires": {
4831
+ "spdx-license-ids": "1.2.2"
4832
+ }
4833
+ },
4834
+ "spdx-expression-parse": {
4835
+ "version": "1.0.4",
4836
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz",
4837
+ "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=",
4838
+ "dev": true
4839
+ },
4840
+ "spdx-license-ids": {
4841
+ "version": "1.2.2",
4842
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz",
4843
+ "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=",
4844
+ "dev": true
4845
+ },
4846
+ "sprintf-js": {
4847
+ "version": "1.0.3",
4848
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
4849
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
4850
+ "dev": true
4851
+ },
4852
+ "squeak": {
4853
+ "version": "1.3.0",
4854
+ "resolved": "https://registry.npmjs.org/squeak/-/squeak-1.3.0.tgz",
4855
+ "integrity": "sha1-MwRQN7ZDiLVnZ0uEMiplIQc5FsM=",
4856
+ "dev": true,
4857
+ "optional": true,
4858
+ "requires": {
4859
+ "chalk": "1.1.3",
4860
+ "console-stream": "0.1.1",
4861
+ "lpad-align": "1.1.2"
4862
+ }
4863
+ },
4864
+ "sshpk": {
4865
+ "version": "1.13.1",
4866
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz",
4867
+ "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=",
4868
+ "dev": true,
4869
+ "optional": true,
4870
+ "requires": {
4871
+ "asn1": "0.2.3",
4872
+ "assert-plus": "1.0.0",
4873
+ "bcrypt-pbkdf": "1.0.1",
4874
+ "dashdash": "1.14.1",
4875
+ "ecc-jsbn": "0.1.1",
4876
+ "getpass": "0.1.7",
4877
+ "jsbn": "0.1.1",
4878
+ "tweetnacl": "0.14.5"
4879
+ }
4880
+ },
4881
+ "stat-mode": {
4882
+ "version": "0.2.2",
4883
+ "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz",
4884
+ "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=",
4885
+ "dev": true
4886
+ },
4887
+ "statuses": {
4888
+ "version": "1.4.0",
4889
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
4890
+ "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
4891
+ "dev": true
4892
+ },
4893
+ "stream-buffers": {
4894
+ "version": "2.2.0",
4895
+ "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz",
4896
+ "integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ=",
4897
+ "dev": true
4898
+ },
4899
+ "stream-combiner2": {
4900
+ "version": "1.1.1",
4901
+ "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz",
4902
+ "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=",
4903
+ "dev": true,
4904
+ "requires": {
4905
+ "duplexer2": "0.1.4",
4906
+ "readable-stream": "2.3.3"
4907
+ }
4908
+ },
4909
+ "stream-shift": {
4910
+ "version": "1.0.0",
4911
+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
4912
+ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
4913
+ "dev": true
4914
+ },
4915
+ "string-width": {
4916
+ "version": "1.0.2",
4917
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
4918
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
4919
+ "dev": true,
4920
+ "requires": {
4921
+ "code-point-at": "1.1.0",
4922
+ "is-fullwidth-code-point": "1.0.0",
4923
+ "strip-ansi": "3.0.1"
4924
+ }
4925
+ },
4926
+ "string_decoder": {
4927
+ "version": "1.0.3",
4928
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
4929
+ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
4930
+ "dev": true,
4931
+ "requires": {
4932
+ "safe-buffer": "5.1.1"
4933
+ }
4934
+ },
4935
+ "stringstream": {
4936
+ "version": "0.0.5",
4937
+ "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
4938
+ "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=",
4939
+ "dev": true,
4940
+ "optional": true
4941
+ },
4942
+ "strip-ansi": {
4943
+ "version": "3.0.1",
4944
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
4945
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
4946
+ "dev": true,
4947
+ "requires": {
4948
+ "ansi-regex": "2.1.1"
4949
+ }
4950
+ },
4951
+ "strip-bom": {
4952
+ "version": "2.0.0",
4953
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
4954
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
4955
+ "dev": true,
4956
+ "requires": {
4957
+ "is-utf8": "0.2.1"
4958
+ }
4959
+ },
4960
+ "strip-bom-stream": {
4961
+ "version": "1.0.0",
4962
+ "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz",
4963
+ "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=",
4964
+ "dev": true,
4965
+ "requires": {
4966
+ "first-chunk-stream": "1.0.0",
4967
+ "strip-bom": "2.0.0"
4968
+ }
4969
+ },
4970
+ "strip-dirs": {
4971
+ "version": "1.1.1",
4972
+ "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-1.1.1.tgz",
4973
+ "integrity": "sha1-lgu9EoeETzl1pFWKoQOoJV4kVqA=",
4974
+ "dev": true,
4975
+ "requires": {
4976
+ "chalk": "1.1.3",
4977
+ "get-stdin": "4.0.1",
4978
+ "is-absolute": "0.1.7",
4979
+ "is-natural-number": "2.1.1",
4980
+ "minimist": "1.2.0",
4981
+ "sum-up": "1.0.3"
4982
+ },
4983
+ "dependencies": {
4984
+ "minimist": {
4985
+ "version": "1.2.0",
4986
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
4987
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
4988
+ "dev": true
4989
+ }
4990
+ }
4991
+ },
4992
+ "strip-indent": {
4993
+ "version": "1.0.1",
4994
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
4995
+ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
4996
+ "dev": true,
4997
+ "requires": {
4998
+ "get-stdin": "4.0.1"
4999
+ }
5000
+ },
5001
+ "strip-json-comments": {
5002
+ "version": "2.0.1",
5003
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
5004
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
5005
+ "dev": true
5006
+ },
5007
+ "strip-outer": {
5008
+ "version": "1.0.0",
5009
+ "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.0.tgz",
5010
+ "integrity": "sha1-qsC6YNLpDF1PJ1/Yhp/ZotMQ/7g=",
5011
+ "dev": true,
5012
+ "requires": {
5013
+ "escape-string-regexp": "1.0.5"
5014
+ }
5015
+ },
5016
+ "sum-up": {
5017
+ "version": "1.0.3",
5018
+ "resolved": "https://registry.npmjs.org/sum-up/-/sum-up-1.0.3.tgz",
5019
+ "integrity": "sha1-HGYfZnBX9jvLeHWqFDi8FiUlFW4=",
5020
+ "dev": true,
5021
+ "requires": {
5022
+ "chalk": "1.1.3"
5023
+ }
5024
+ },
5025
+ "supports-color": {
5026
+ "version": "3.2.3",
5027
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
5028
+ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
5029
+ "dev": true,
5030
+ "requires": {
5031
+ "has-flag": "1.0.0"
5032
+ }
5033
+ },
5034
+ "svgo": {
5035
+ "version": "0.6.6",
5036
+ "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.6.6.tgz",
5037
+ "integrity": "sha1-s0CIkDbyD5tEdUMHfQ9Vc+0ETAg=",
5038
+ "dev": true,
5039
+ "optional": true,
5040
+ "requires": {
5041
+ "coa": "1.0.4",
5042
+ "colors": "1.1.2",
5043
+ "csso": "2.0.0",
5044
+ "js-yaml": "3.6.1",
5045
+ "mkdirp": "0.5.1",
5046
+ "sax": "1.2.4",
5047
+ "whet.extend": "0.9.9"
5048
+ },
5049
+ "dependencies": {
5050
+ "argparse": {
5051
+ "version": "1.0.9",
5052
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz",
5053
+ "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=",
5054
+ "dev": true,
5055
+ "optional": true,
5056
+ "requires": {
5057
+ "sprintf-js": "1.0.3"
5058
+ }
5059
+ },
5060
+ "colors": {
5061
+ "version": "1.1.2",
5062
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
5063
+ "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
5064
+ "dev": true,
5065
+ "optional": true
5066
+ },
5067
+ "esprima": {
5068
+ "version": "2.7.3",
5069
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
5070
+ "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
5071
+ "dev": true,
5072
+ "optional": true
5073
+ },
5074
+ "js-yaml": {
5075
+ "version": "3.6.1",
5076
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.6.1.tgz",
5077
+ "integrity": "sha1-bl/mfYsgXOTSL60Ft3geja3MSzA=",
5078
+ "dev": true,
5079
+ "optional": true,
5080
+ "requires": {
5081
+ "argparse": "1.0.9",
5082
+ "esprima": "2.7.3"
5083
+ }
5084
+ }
5085
+ }
5086
+ },
5087
+ "tar": {
5088
+ "version": "2.2.1",
5089
+ "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
5090
+ "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
5091
+ "dev": true,
5092
+ "optional": true,
5093
+ "requires": {
5094
+ "block-stream": "0.0.9",
5095
+ "fstream": "1.0.11",
5096
+ "inherits": "2.0.3"
5097
+ }
5098
+ },
5099
+ "tar-fs": {
5100
+ "version": "1.16.0",
5101
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.0.tgz",
5102
+ "integrity": "sha512-I9rb6v7mjWLtOfCau9eH5L7sLJyU2BnxtEZRQ5Mt+eRKmf1F0ohXmT/Jc3fr52kDvjJ/HV5MH3soQfPL5bQ0Yg==",
5103
+ "dev": true,
5104
+ "optional": true,
5105
+ "requires": {
5106
+ "chownr": "1.0.1",
5107
+ "mkdirp": "0.5.1",
5108
+ "pump": "1.0.3",
5109
+ "tar-stream": "1.5.5"
5110
+ }
5111
+ },
5112
+ "tar-stream": {
5113
+ "version": "1.5.5",
5114
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.5.tgz",
5115
+ "integrity": "sha512-mQdgLPc/Vjfr3VWqWbfxW8yQNiJCbAZ+Gf6GDu1Cy0bdb33ofyiNGBtAY96jHFhDuivCwgW1H9DgTON+INiXgg==",
5116
+ "dev": true,
5117
+ "requires": {
5118
+ "bl": "1.2.1",
5119
+ "end-of-stream": "1.4.0",
5120
+ "readable-stream": "2.3.3",
5121
+ "xtend": "4.0.1"
5122
+ }
5123
+ },
5124
+ "tempfile": {
5125
+ "version": "1.1.1",
5126
+ "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-1.1.1.tgz",
5127
+ "integrity": "sha1-W8xOrsxKsscH2LwR2ZzMmiyyh/I=",
5128
+ "dev": true,
5129
+ "requires": {
5130
+ "os-tmpdir": "1.0.2",
5131
+ "uuid": "2.0.3"
5132
+ },
5133
+ "dependencies": {
5134
+ "uuid": {
5135
+ "version": "2.0.3",
5136
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz",
5137
+ "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=",
5138
+ "dev": true
5139
+ }
5140
+ }
5141
+ },
5142
+ "text-table": {
5143
+ "version": "0.2.0",
5144
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
5145
+ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
5146
+ "dev": true
5147
+ },
5148
+ "through2": {
5149
+ "version": "0.6.5",
5150
+ "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
5151
+ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
5152
+ "dev": true,
5153
+ "requires": {
5154
+ "readable-stream": "1.0.34",
5155
+ "xtend": "4.0.1"
5156
+ },
5157
+ "dependencies": {
5158
+ "isarray": {
5159
+ "version": "0.0.1",
5160
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
5161
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
5162
+ "dev": true
5163
+ },
5164
+ "readable-stream": {
5165
+ "version": "1.0.34",
5166
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
5167
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
5168
+ "dev": true,
5169
+ "requires": {
5170
+ "core-util-is": "1.0.2",
5171
+ "inherits": "2.0.3",
5172
+ "isarray": "0.0.1",
5173
+ "string_decoder": "0.10.31"
5174
+ }
5175
+ },
5176
+ "string_decoder": {
5177
+ "version": "0.10.31",
5178
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
5179
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
5180
+ "dev": true
5181
+ }
5182
+ }
5183
+ },
5184
+ "through2-filter": {
5185
+ "version": "2.0.0",
5186
+ "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz",
5187
+ "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=",
5188
+ "dev": true,
5189
+ "requires": {
5190
+ "through2": "2.0.3",
5191
+ "xtend": "4.0.1"
5192
+ },
5193
+ "dependencies": {
5194
+ "through2": {
5195
+ "version": "2.0.3",
5196
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
5197
+ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
5198
+ "dev": true,
5199
+ "requires": {
5200
+ "readable-stream": "2.3.3",
5201
+ "xtend": "4.0.1"
5202
+ }
5203
+ }
5204
+ }
5205
+ },
5206
+ "time-grunt": {
5207
+ "version": "1.4.0",
5208
+ "resolved": "https://registry.npmjs.org/time-grunt/-/time-grunt-1.4.0.tgz",
5209
+ "integrity": "sha1-BiIT5mDJB+hvRAVWwB6mWXtxJCA=",
5210
+ "dev": true,
5211
+ "requires": {
5212
+ "chalk": "1.1.3",
5213
+ "date-time": "1.1.0",
5214
+ "figures": "1.7.0",
5215
+ "hooker": "0.2.3",
5216
+ "number-is-nan": "1.0.1",
5217
+ "pretty-ms": "2.1.0",
5218
+ "text-table": "0.2.0"
5219
+ }
5220
+ },
5221
+ "time-stamp": {
5222
+ "version": "1.1.0",
5223
+ "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
5224
+ "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=",
5225
+ "dev": true
5226
+ },
5227
+ "time-zone": {
5228
+ "version": "0.1.0",
5229
+ "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-0.1.0.tgz",
5230
+ "integrity": "sha1-Sncotqwo2w4Aj1FAQ/1VW9VXO0Y=",
5231
+ "dev": true
5232
+ },
5233
+ "timed-out": {
5234
+ "version": "3.1.3",
5235
+ "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz",
5236
+ "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=",
5237
+ "dev": true
5238
+ },
5239
+ "tiny-lr": {
5240
+ "version": "0.2.1",
5241
+ "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-0.2.1.tgz",
5242
+ "integrity": "sha1-s/26gC5dVqM8L28QeUsy5Hescp0=",
5243
+ "dev": true,
5244
+ "requires": {
5245
+ "body-parser": "1.14.2",
5246
+ "debug": "2.2.0",
5247
+ "faye-websocket": "0.10.0",
5248
+ "livereload-js": "2.2.2",
5249
+ "parseurl": "1.3.2",
5250
+ "qs": "5.1.0"
5251
+ },
5252
+ "dependencies": {
5253
+ "qs": {
5254
+ "version": "5.1.0",
5255
+ "resolved": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz",
5256
+ "integrity": "sha1-TZMuXH6kEcynajEtOaYGIA/VDNk=",
5257
+ "dev": true
5258
+ }
5259
+ }
5260
+ },
5261
+ "to-absolute-glob": {
5262
+ "version": "0.1.1",
5263
+ "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz",
5264
+ "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=",
5265
+ "dev": true,
5266
+ "requires": {
5267
+ "extend-shallow": "2.0.1"
5268
+ }
5269
+ },
5270
+ "tough-cookie": {
5271
+ "version": "2.3.3",
5272
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz",
5273
+ "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=",
5274
+ "dev": true,
5275
+ "optional": true,
5276
+ "requires": {
5277
+ "punycode": "1.4.1"
5278
+ }
5279
+ },
5280
+ "trim-newlines": {
5281
+ "version": "1.0.0",
5282
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
5283
+ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
5284
+ "dev": true
5285
+ },
5286
+ "trim-repeated": {
5287
+ "version": "1.0.0",
5288
+ "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
5289
+ "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=",
5290
+ "dev": true,
5291
+ "requires": {
5292
+ "escape-string-regexp": "1.0.5"
5293
+ }
5294
+ },
5295
+ "tunnel-agent": {
5296
+ "version": "0.6.0",
5297
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
5298
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
5299
+ "dev": true,
5300
+ "requires": {
5301
+ "safe-buffer": "5.1.1"
5302
+ }
5303
+ },
5304
+ "tweetnacl": {
5305
+ "version": "0.14.5",
5306
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
5307
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
5308
+ "dev": true,
5309
+ "optional": true
5310
+ },
5311
+ "type-is": {
5312
+ "version": "1.6.15",
5313
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz",
5314
+ "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=",
5315
+ "dev": true,
5316
+ "requires": {
5317
+ "media-typer": "0.3.0",
5318
+ "mime-types": "2.1.17"
5319
+ }
5320
+ },
5321
+ "typechecker": {
5322
+ "version": "4.4.1",
5323
+ "resolved": "https://registry.npmjs.org/typechecker/-/typechecker-4.4.1.tgz",
5324
+ "integrity": "sha1-+XuV9RsDhBchLWd9RaNz7nvO1+Y=",
5325
+ "dev": true,
5326
+ "requires": {
5327
+ "editions": "1.3.3"
5328
+ }
5329
+ },
5330
+ "typedarray": {
5331
+ "version": "0.0.6",
5332
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
5333
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
5334
+ "dev": true
5335
+ },
5336
+ "underscore": {
5337
+ "version": "1.7.0",
5338
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz",
5339
+ "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=",
5340
+ "dev": true
5341
+ },
5342
+ "underscore.string": {
5343
+ "version": "2.2.1",
5344
+ "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz",
5345
+ "integrity": "sha1-18D6KvXVoaZ/QlPa7pgTLnM/Dxk=",
5346
+ "dev": true
5347
+ },
5348
+ "unique-stream": {
5349
+ "version": "2.2.1",
5350
+ "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz",
5351
+ "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=",
5352
+ "dev": true,
5353
+ "requires": {
5354
+ "json-stable-stringify": "1.0.1",
5355
+ "through2-filter": "2.0.0"
5356
+ }
5357
+ },
5358
+ "unpipe": {
5359
+ "version": "1.0.0",
5360
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
5361
+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
5362
+ "dev": true
5363
+ },
5364
+ "unzip-response": {
5365
+ "version": "1.0.2",
5366
+ "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz",
5367
+ "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=",
5368
+ "dev": true
5369
+ },
5370
+ "url-parse-lax": {
5371
+ "version": "1.0.0",
5372
+ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
5373
+ "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=",
5374
+ "dev": true,
5375
+ "requires": {
5376
+ "prepend-http": "1.0.4"
5377
+ }
5378
+ },
5379
+ "url-regex": {
5380
+ "version": "3.2.0",
5381
+ "resolved": "https://registry.npmjs.org/url-regex/-/url-regex-3.2.0.tgz",
5382
+ "integrity": "sha1-260eDJ4p4QXdCx8J9oYvf9tIJyQ=",
5383
+ "dev": true,
5384
+ "optional": true,
5385
+ "requires": {
5386
+ "ip-regex": "1.0.3"
5387
+ }
5388
+ },
5389
+ "util-deprecate": {
5390
+ "version": "1.0.2",
5391
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
5392
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
5393
+ "dev": true
5394
+ },
5395
+ "uuid": {
5396
+ "version": "3.1.0",
5397
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz",
5398
+ "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==",
5399
+ "dev": true,
5400
+ "optional": true
5401
+ },
5402
+ "vali-date": {
5403
+ "version": "1.0.0",
5404
+ "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz",
5405
+ "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=",
5406
+ "dev": true
5407
+ },
5408
+ "validate-npm-package-license": {
5409
+ "version": "3.0.1",
5410
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz",
5411
+ "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=",
5412
+ "dev": true,
5413
+ "requires": {
5414
+ "spdx-correct": "1.0.2",
5415
+ "spdx-expression-parse": "1.0.4"
5416
+ }
5417
+ },
5418
+ "verror": {
5419
+ "version": "1.10.0",
5420
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
5421
+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
5422
+ "dev": true,
5423
+ "optional": true,
5424
+ "requires": {
5425
+ "assert-plus": "1.0.0",
5426
+ "core-util-is": "1.0.2",
5427
+ "extsprintf": "1.3.0"
5428
+ }
5429
+ },
5430
+ "vinyl": {
5431
+ "version": "1.2.0",
5432
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz",
5433
+ "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
5434
+ "dev": true,
5435
+ "requires": {
5436
+ "clone": "1.0.3",
5437
+ "clone-stats": "0.0.1",
5438
+ "replace-ext": "0.0.1"
5439
+ }
5440
+ },
5441
+ "vinyl-assign": {
5442
+ "version": "1.2.1",
5443
+ "resolved": "https://registry.npmjs.org/vinyl-assign/-/vinyl-assign-1.2.1.tgz",
5444
+ "integrity": "sha1-TRmIkbVRWRHXcajNnFSApGoHSkU=",
5445
+ "dev": true,
5446
+ "requires": {
5447
+ "object-assign": "4.1.1",
5448
+ "readable-stream": "2.3.3"
5449
+ }
5450
+ },
5451
+ "vinyl-fs": {
5452
+ "version": "2.4.4",
5453
+ "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz",
5454
+ "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=",
5455
+ "dev": true,
5456
+ "requires": {
5457
+ "duplexify": "3.5.1",
5458
+ "glob-stream": "5.3.5",
5459
+ "graceful-fs": "4.1.11",
5460
+ "gulp-sourcemaps": "1.6.0",
5461
+ "is-valid-glob": "0.3.0",
5462
+ "lazystream": "1.0.0",
5463
+ "lodash.isequal": "4.5.0",
5464
+ "merge-stream": "1.0.1",
5465
+ "mkdirp": "0.5.1",
5466
+ "object-assign": "4.1.1",
5467
+ "readable-stream": "2.3.3",
5468
+ "strip-bom": "2.0.0",
5469
+ "strip-bom-stream": "1.0.0",
5470
+ "through2": "2.0.3",
5471
+ "through2-filter": "2.0.0",
5472
+ "vali-date": "1.0.0",
5473
+ "vinyl": "1.2.0"
5474
+ },
5475
+ "dependencies": {
5476
+ "graceful-fs": {
5477
+ "version": "4.1.11",
5478
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
5479
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
5480
+ "dev": true
5481
+ },
5482
+ "through2": {
5483
+ "version": "2.0.3",
5484
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
5485
+ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
5486
+ "dev": true,
5487
+ "requires": {
5488
+ "readable-stream": "2.3.3",
5489
+ "xtend": "4.0.1"
5490
+ }
5491
+ }
5492
+ }
5493
+ },
5494
+ "vow": {
5495
+ "version": "0.4.4",
5496
+ "resolved": "https://registry.npmjs.org/vow/-/vow-0.4.4.tgz",
5497
+ "integrity": "sha1-yf5GCRKdf1qmIVCOvmS1HJW8e5g=",
5498
+ "dev": true
5499
+ },
5500
+ "vow-fs": {
5501
+ "version": "0.3.2",
5502
+ "resolved": "https://registry.npmjs.org/vow-fs/-/vow-fs-0.3.2.tgz",
5503
+ "integrity": "sha1-6isDTYXh24wnfrLpqG0cFfXTjno=",
5504
+ "dev": true,
5505
+ "requires": {
5506
+ "glob": "3.2.8",
5507
+ "node-uuid": "1.4.0",
5508
+ "vow": "0.4.4",
5509
+ "vow-queue": "0.3.1"
5510
+ },
5511
+ "dependencies": {
5512
+ "glob": {
5513
+ "version": "3.2.8",
5514
+ "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.8.tgz",
5515
+ "integrity": "sha1-VQb0MRchvMYYx9jboUQYh1AwcHM=",
5516
+ "dev": true,
5517
+ "requires": {
5518
+ "inherits": "2.0.3",
5519
+ "minimatch": "0.2.14"
5520
+ }
5521
+ }
5522
+ }
5523
+ },
5524
+ "vow-queue": {
5525
+ "version": "0.3.1",
5526
+ "resolved": "https://registry.npmjs.org/vow-queue/-/vow-queue-0.3.1.tgz",
5527
+ "integrity": "sha1-WYxRoVsKgabV/AX0dhzrRi3h6Gg=",
5528
+ "dev": true,
5529
+ "requires": {
5530
+ "vow": "0.4.4"
5531
+ }
5532
+ },
5533
+ "walkdir": {
5534
+ "version": "0.0.11",
5535
+ "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz",
5536
+ "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=",
5537
+ "dev": true
5538
+ },
5539
+ "ware": {
5540
+ "version": "1.3.0",
5541
+ "resolved": "https://registry.npmjs.org/ware/-/ware-1.3.0.tgz",
5542
+ "integrity": "sha1-0bFPOdLiy0q4xAmPdW/ksWTkc9Q=",
5543
+ "dev": true,
5544
+ "requires": {
5545
+ "wrap-fn": "0.1.5"
5546
+ }
5547
+ },
5548
+ "websocket-driver": {
5549
+ "version": "0.7.0",
5550
+ "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz",
5551
+ "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=",
5552
+ "dev": true,
5553
+ "requires": {
5554
+ "http-parser-js": "0.4.9",
5555
+ "websocket-extensions": "0.1.3"
5556
+ }
5557
+ },
5558
+ "websocket-extensions": {
5559
+ "version": "0.1.3",
5560
+ "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz",
5561
+ "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
5562
+ "dev": true
5563
+ },
5564
+ "whet.extend": {
5565
+ "version": "0.9.9",
5566
+ "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz",
5567
+ "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=",
5568
+ "dev": true,
5569
+ "optional": true
5570
+ },
5571
+ "which": {
5572
+ "version": "1.0.9",
5573
+ "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz",
5574
+ "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=",
5575
+ "dev": true
5576
+ },
5577
+ "wide-align": {
5578
+ "version": "1.1.2",
5579
+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz",
5580
+ "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==",
5581
+ "dev": true,
5582
+ "requires": {
5583
+ "string-width": "1.0.2"
5584
+ }
5585
+ },
5586
+ "wrap-fn": {
5587
+ "version": "0.1.5",
5588
+ "resolved": "https://registry.npmjs.org/wrap-fn/-/wrap-fn-0.1.5.tgz",
5589
+ "integrity": "sha1-8htuQQFv9KfjFyDbxjoJAWvfmEU=",
5590
+ "dev": true,
5591
+ "requires": {
5592
+ "co": "3.1.0"
5593
+ },
5594
+ "dependencies": {
5595
+ "co": {
5596
+ "version": "3.1.0",
5597
+ "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz",
5598
+ "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=",
5599
+ "dev": true
5600
+ }
5601
+ }
5602
+ },
5603
+ "wrappy": {
5604
+ "version": "1.0.2",
5605
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
5606
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
5607
+ "dev": true
5608
+ },
5609
+ "xtend": {
5610
+ "version": "4.0.1",
5611
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
5612
+ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
5613
+ "dev": true
5614
+ },
5615
+ "yauzl": {
5616
+ "version": "2.9.1",
5617
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.9.1.tgz",
5618
+ "integrity": "sha1-qBmB6nCleUYTOIPwKcWCGok1mn8=",
5619
+ "dev": true,
5620
+ "requires": {
5621
+ "buffer-crc32": "0.2.13",
5622
+ "fd-slicer": "1.0.1"
5623
+ }
5624
+ },
5625
+ "zip-stream": {
5626
+ "version": "1.2.0",
5627
+ "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz",
5628
+ "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=",
5629
+ "dev": true,
5630
+ "requires": {
5631
+ "archiver-utils": "1.3.0",
5632
+ "compress-commons": "1.2.2",
5633
+ "lodash": "4.17.4",
5634
+ "readable-stream": "2.3.3"
5635
+ },
5636
+ "dependencies": {
5637
+ "lodash": {
5638
+ "version": "4.17.4",
5639
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
5640
+ "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
5641
+ "dev": true
5642
+ }
5643
+ }
5644
+ }
5645
+ }
5646
+ }
readme.md CHANGED
@@ -68,6 +68,12 @@ Purchasing a license gets you access to the full version of the Nivo Slider Word
68
  4. The final result
69
 
70
  ## Changelog ##
 
 
 
 
 
 
71
  ### 2.1.0 - 2017-06-26 ###
72
 
73
  * Added carousel compatibility
68
  4. The final result
69
 
70
  ## Changelog ##
71
+ ### 2.1.1 - 2018-01-05 ###
72
+
73
+ * Adds compatibility with latest WordPress standards.
74
+ * Sync ThemeIsle SDK.
75
+
76
+
77
  ### 2.1.0 - 2017-06-26 ###
78
 
79
  * Added carousel compatibility
readme.txt CHANGED
@@ -68,6 +68,12 @@ Purchasing a license gets you access to the full version of the Nivo Slider Word
68
  4. The final result
69
 
70
  == Changelog ==
 
 
 
 
 
 
71
  = 2.1.0 - 2017-06-26 =
72
 
73
  * Added carousel compatibility
68
  4. The final result
69
 
70
  == Changelog ==
71
+ = 2.1.1 - 2018-01-05 =
72
+
73
+ * Adds compatibility with latest WordPress standards.
74
+ * Sync ThemeIsle SDK.
75
+
76
+
77
  = 2.1.0 - 2017-06-26 =
78
 
79
  * Added carousel compatibility
themeisle-hash.json ADDED
@@ -0,0 +1 @@
 
1
+ {"nivo-slider-lite.php":"1fe3db1dc37f42320f66171ccfef8ea7"}
vendor/autoload.php DELETED
@@ -1,7 +0,0 @@
1
- <?php
2
-
3
- // autoload.php @generated by Composer
4
-
5
- require_once __DIR__ . '/composer' . '/autoload_real.php';
6
-
7
- return ComposerAutoloaderInit10fe3fd2e8ddae0802151df1d2b0e7cf::getLoader();
 
 
 
 
 
 
 
vendor/autoload_52.php DELETED
@@ -1,7 +0,0 @@
1
- <?php
2
-
3
- // autoload_52.php generated by xrstf/composer-php52
4
-
5
- require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
-
7
- return ComposerAutoloaderInit0fc127e51dc28fab98c5e4f3a39d42f1::getLoader();
 
 
 
 
 
 
 
vendor/codeinwp/themeisle-sdk/LICENSE DELETED
@@ -1,674 +0,0 @@
1
- GNU GENERAL PUBLIC LICENSE
2
- Version 3, 29 June 2007
3
-
4
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
5
- Everyone is permitted to copy and distribute verbatim copies
6
- of this license document, but changing it is not allowed.
7
-
8
- Preamble
9
-
10
- The GNU General Public License is a free, copyleft license for
11
- software and other kinds of works.
12
-
13
- The licenses for most software and other practical works are designed
14
- to take away your freedom to share and change the works. By contrast,
15
- the GNU General Public License is intended to guarantee your freedom to
16
- share and change all versions of a program--to make sure it remains free
17
- software for all its users. We, the Free Software Foundation, use the
18
- GNU General Public License for most of our software; it applies also to
19
- any other work released this way by its authors. You can apply it to
20
- your programs, too.
21
-
22
- When we speak of free software, we are referring to freedom, not
23
- price. Our General Public Licenses are designed to make sure that you
24
- have the freedom to distribute copies of free software (and charge for
25
- them if you wish), that you receive source code or can get it if you
26
- want it, that you can change the software or use pieces of it in new
27
- free programs, and that you know you can do these things.
28
-
29
- To protect your rights, we need to prevent others from denying you
30
- these rights or asking you to surrender the rights. Therefore, you have
31
- certain responsibilities if you distribute copies of the software, or if
32
- you modify it: responsibilities to respect the freedom of others.
33
-
34
- For example, if you distribute copies of such a program, whether
35
- gratis or for a fee, you must pass on to the recipients the same
36
- freedoms that you received. You must make sure that they, too, receive
37
- or can get the source code. And you must show them these terms so they
38
- know their rights.
39
-
40
- Developers that use the GNU GPL protect your rights with two steps:
41
- (1) assert copyright on the software, and (2) offer you this License
42
- giving you legal permission to copy, distribute and/or modify it.
43
-
44
- For the developers' and authors' protection, the GPL clearly explains
45
- that there is no warranty for this free software. For both users' and
46
- authors' sake, the GPL requires that modified versions be marked as
47
- changed, so that their problems will not be attributed erroneously to
48
- authors of previous versions.
49
-
50
- Some devices are designed to deny users access to install or run
51
- modified versions of the software inside them, although the manufacturer
52
- can do so. This is fundamentally incompatible with the aim of
53
- protecting users' freedom to change the software. The systematic
54
- pattern of such abuse occurs in the area of products for individuals to
55
- use, which is precisely where it is most unacceptable. Therefore, we
56
- have designed this version of the GPL to prohibit the practice for those
57
- products. If such problems arise substantially in other domains, we
58
- stand ready to extend this provision to those domains in future versions
59
- of the GPL, as needed to protect the freedom of users.
60
-
61
- Finally, every program is threatened constantly by software patents.
62
- States should not allow patents to restrict development and use of
63
- software on general-purpose computers, but in those that do, we wish to
64
- avoid the special danger that patents applied to a free program could
65
- make it effectively proprietary. To prevent this, the GPL assures that
66
- patents cannot be used to render the program non-free.
67
-
68
- The precise terms and conditions for copying, distribution and
69
- modification follow.
70
-
71
- TERMS AND CONDITIONS
72
-
73
- 0. Definitions.
74
-
75
- "This License" refers to version 3 of the GNU General Public License.
76
-
77
- "Copyright" also means copyright-like laws that apply to other kinds of
78
- works, such as semiconductor masks.
79
-
80
- "The Program" refers to any copyrightable work licensed under this
81
- License. Each licensee is addressed as "you". "Licensees" and
82
- "recipients" may be individuals or organizations.
83
-
84
- To "modify" a work means to copy from or adapt all or part of the work
85
- in a fashion requiring copyright permission, other than the making of an
86
- exact copy. The resulting work is called a "modified version" of the
87
- earlier work or a work "based on" the earlier work.
88
-
89
- A "covered work" means either the unmodified Program or a work based
90
- on the Program.
91
-
92
- To "propagate" a work means to do anything with it that, without
93
- permission, would make you directly or secondarily liable for
94
- infringement under applicable copyright law, except executing it on a
95
- computer or modifying a private copy. Propagation includes copying,
96
- distribution (with or without modification), making available to the
97
- public, and in some countries other activities as well.
98
-
99
- To "convey" a work means any kind of propagation that enables other
100
- parties to make or receive copies. Mere interaction with a user through
101
- a computer network, with no transfer of a copy, is not conveying.
102
-
103
- An interactive user interface displays "Appropriate Legal Notices"
104
- to the extent that it includes a convenient and prominently visible
105
- feature that (1) displays an appropriate copyright notice, and (2)
106
- tells the user that there is no warranty for the work (except to the
107
- extent that warranties are provided), that licensees may convey the
108
- work under this License, and how to view a copy of this License. If
109
- the interface presents a list of user commands or options, such as a
110
- menu, a prominent item in the list meets this criterion.
111
-
112
- 1. Source Code.
113
-
114
- The "source code" for a work means the preferred form of the work
115
- for making modifications to it. "Object code" means any non-source
116
- form of a work.
117
-
118
- A "Standard Interface" means an interface that either is an official
119
- standard defined by a recognized standards body, or, in the case of
120
- interfaces specified for a particular programming language, one that
121
- is widely used among developers working in that language.
122
-
123
- The "System Libraries" of an executable work include anything, other
124
- than the work as a whole, that (a) is included in the normal form of
125
- packaging a Major Component, but which is not part of that Major
126
- Component, and (b) serves only to enable use of the work with that
127
- Major Component, or to implement a Standard Interface for which an
128
- implementation is available to the public in source code form. A
129
- "Major Component", in this context, means a major essential component
130
- (kernel, window system, and so on) of the specific operating system
131
- (if any) on which the executable work runs, or a compiler used to
132
- produce the work, or an object code interpreter used to run it.
133
-
134
- The "Corresponding Source" for a work in object code form means all
135
- the source code needed to generate, install, and (for an executable
136
- work) run the object code and to modify the work, including scripts to
137
- control those activities. However, it does not include the work's
138
- System Libraries, or general-purpose tools or generally available free
139
- programs which are used unmodified in performing those activities but
140
- which are not part of the work. For example, Corresponding Source
141
- includes interface definition files associated with source files for
142
- the work, and the source code for shared libraries and dynamically
143
- linked subprograms that the work is specifically designed to require,
144
- such as by intimate data communication or control flow between those
145
- subprograms and other parts of the work.
146
-
147
- The Corresponding Source need not include anything that users
148
- can regenerate automatically from other parts of the Corresponding
149
- Source.
150
-
151
- The Corresponding Source for a work in source code form is that
152
- same work.
153
-
154
- 2. Basic Permissions.
155
-
156
- All rights granted under this License are granted for the term of
157
- copyright on the Program, and are irrevocable provided the stated
158
- conditions are met. This License explicitly affirms your unlimited
159
- permission to run the unmodified Program. The output from running a
160
- covered work is covered by this License only if the output, given its
161
- content, constitutes a covered work. This License acknowledges your
162
- rights of fair use or other equivalent, as provided by copyright law.
163
-
164
- You may make, run and propagate covered works that you do not
165
- convey, without conditions so long as your license otherwise remains
166
- in force. You may convey covered works to others for the sole purpose
167
- of having them make modifications exclusively for you, or provide you
168
- with facilities for running those works, provided that you comply with
169
- the terms of this License in conveying all material for which you do
170
- not control copyright. Those thus making or running the covered works
171
- for you must do so exclusively on your behalf, under your direction
172
- and control, on terms that prohibit them from making any copies of
173
- your copyrighted material outside their relationship with you.
174
-
175
- Conveying under any other circumstances is permitted solely under
176
- the conditions stated below. Sublicensing is not allowed; section 10
177
- makes it unnecessary.
178
-
179
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
180
-
181
- No covered work shall be deemed part of an effective technological
182
- measure under any applicable law fulfilling obligations under article
183
- 11 of the WIPO copyright treaty adopted on 20 December 1996, or
184
- similar laws prohibiting or restricting circumvention of such
185
- measures.
186
-
187
- When you convey a covered work, you waive any legal power to forbid
188
- circumvention of technological measures to the extent such circumvention
189
- is effected by exercising rights under this License with respect to
190
- the covered work, and you disclaim any intention to limit operation or
191
- modification of the work as a means of enforcing, against the work's
192
- users, your or third parties' legal rights to forbid circumvention of
193
- technological measures.
194
-
195
- 4. Conveying Verbatim Copies.
196
-
197
- You may convey verbatim copies of the Program's source code as you
198
- receive it, in any medium, provided that you conspicuously and
199
- appropriately publish on each copy an appropriate copyright notice;
200
- keep intact all notices stating that this License and any
201
- non-permissive terms added in accord with section 7 apply to the code;
202
- keep intact all notices of the absence of any warranty; and give all
203
- recipients a copy of this License along with the Program.
204
-
205
- You may charge any price or no price for each copy that you convey,
206
- and you may offer support or warranty protection for a fee.
207
-
208
- 5. Conveying Modified Source Versions.
209
-
210
- You may convey a work based on the Program, or the modifications to
211
- produce it from the Program, in the form of source code under the
212
- terms of section 4, provided that you also meet all of these conditions:
213
-
214
- a) The work must carry prominent notices stating that you modified
215
- it, and giving a relevant date.
216
-
217
- b) The work must carry prominent notices stating that it is
218
- released under this License and any conditions added under section
219
- 7. This requirement modifies the requirement in section 4 to
220
- "keep intact all notices".
221
-
222
- c) You must license the entire work, as a whole, under this
223
- License to anyone who comes into possession of a copy. This
224
- License will therefore apply, along with any applicable section 7
225
- additional terms, to the whole of the work, and all its parts,
226
- regardless of how they are packaged. This License gives no
227
- permission to license the work in any other way, but it does not
228
- invalidate such permission if you have separately received it.
229
-
230
- d) If the work has interactive user interfaces, each must display
231
- Appropriate Legal Notices; however, if the Program has interactive
232
- interfaces that do not display Appropriate Legal Notices, your
233
- work need not make them do so.
234
-
235
- A compilation of a covered work with other separate and independent
236
- works, which are not by their nature extensions of the covered work,
237
- and which are not combined with it such as to form a larger program,
238
- in or on a volume of a storage or distribution medium, is called an
239
- "aggregate" if the compilation and its resulting copyright are not
240
- used to limit the access or legal rights of the compilation's users
241
- beyond what the individual works permit. Inclusion of a covered work
242
- in an aggregate does not cause this License to apply to the other
243
- parts of the aggregate.
244
-
245
- 6. Conveying Non-Source Forms.
246
-
247
- You may convey a covered work in object code form under the terms
248
- of sections 4 and 5, provided that you also convey the
249
- machine-readable Corresponding Source under the terms of this License,
250
- in one of these ways:
251
-
252
- a) Convey the object code in, or embodied in, a physical product
253
- (including a physical distribution medium), accompanied by the
254
- Corresponding Source fixed on a durable physical medium
255
- customarily used for software interchange.
256
-
257
- b) Convey the object code in, or embodied in, a physical product
258
- (including a physical distribution medium), accompanied by a
259
- written offer, valid for at least three years and valid for as
260
- long as you offer spare parts or customer support for that product
261
- model, to give anyone who possesses the object code either (1) a
262
- copy of the Corresponding Source for all the software in the
263
- product that is covered by this License, on a durable physical
264
- medium customarily used for software interchange, for a price no
265
- more than your reasonable cost of physically performing this
266
- conveying of source, or (2) access to copy the
267
- Corresponding Source from a network server at no charge.
268
-
269
- c) Convey individual copies of the object code with a copy of the
270
- written offer to provide the Corresponding Source. This
271
- alternative is allowed only occasionally and noncommercially, and
272
- only if you received the object code with such an offer, in accord
273
- with subsection 6b.
274
-
275
- d) Convey the object code by offering access from a designated
276
- place (gratis or for a charge), and offer equivalent access to the
277
- Corresponding Source in the same way through the same place at no
278
- further charge. You need not require recipients to copy the
279
- Corresponding Source along with the object code. If the place to
280
- copy the object code is a network server, the Corresponding Source
281
- may be on a different server (operated by you or a third party)
282
- that supports equivalent copying facilities, provided you maintain
283
- clear directions next to the object code saying where to find the
284
- Corresponding Source. Regardless of what server hosts the
285
- Corresponding Source, you remain obligated to ensure that it is
286
- available for as long as needed to satisfy these requirements.
287
-
288
- e) Convey the object code using peer-to-peer transmission, provided
289
- you inform other peers where the object code and Corresponding
290
- Source of the work are being offered to the general public at no
291
- charge under subsection 6d.
292
-
293
- A separable portion of the object code, whose source code is excluded
294
- from the Corresponding Source as a System Library, need not be
295
- included in conveying the object code work.
296
-
297
- A "User Product" is either (1) a "consumer product", which means any
298
- tangible personal property which is normally used for personal, family,
299
- or household purposes, or (2) anything designed or sold for incorporation
300
- into a dwelling. In determining whether a product is a consumer product,
301
- doubtful cases shall be resolved in favor of coverage. For a particular
302
- product received by a particular user, "normally used" refers to a
303
- typical or common use of that class of product, regardless of the status
304
- of the particular user or of the way in which the particular user
305
- actually uses, or expects or is expected to use, the product. A product
306
- is a consumer product regardless of whether the product has substantial
307
- commercial, industrial or non-consumer uses, unless such uses represent
308
- the only significant mode of use of the product.
309
-
310
- "Installation Information" for a User Product means any methods,
311
- procedures, authorization keys, or other information required to install
312
- and execute modified versions of a covered work in that User Product from
313
- a modified version of its Corresponding Source. The information must
314
- suffice to ensure that the continued functioning of the modified object
315
- code is in no case prevented or interfered with solely because
316
- modification has been made.
317
-
318
- If you convey an object code work under this section in, or with, or
319
- specifically for use in, a User Product, and the conveying occurs as
320
- part of a transaction in which the right of possession and use of the
321
- User Product is transferred to the recipient in perpetuity or for a
322
- fixed term (regardless of how the transaction is characterized), the
323
- Corresponding Source conveyed under this section must be accompanied
324
- by the Installation Information. But this requirement does not apply
325
- if neither you nor any third party retains the ability to install
326
- modified object code on the User Product (for example, the work has
327
- been installed in ROM).
328
-
329
- The requirement to provide Installation Information does not include a
330
- requirement to continue to provide support service, warranty, or updates
331
- for a work that has been modified or installed by the recipient, or for
332
- the User Product in which it has been modified or installed. Access to a
333
- network may be denied when the modification itself materially and
334
- adversely affects the operation of the network or violates the rules and
335
- protocols for communication across the network.
336
-
337
- Corresponding Source conveyed, and Installation Information provided,
338
- in accord with this section must be in a format that is publicly
339
- documented (and with an implementation available to the public in
340
- source code form), and must require no special password or key for
341
- unpacking, reading or copying.
342
-
343
- 7. Additional Terms.
344
-
345
- "Additional permissions" are terms that supplement the terms of this
346
- License by making exceptions from one or more of its conditions.
347
- Additional permissions that are applicable to the entire Program shall
348
- be treated as though they were included in this License, to the extent
349
- that they are valid under applicable law. If additional permissions
350
- apply only to part of the Program, that part may be used separately
351
- under those permissions, but the entire Program remains governed by
352
- this License without regard to the additional permissions.
353
-
354
- When you convey a copy of a covered work, you may at your option
355
- remove any additional permissions from that copy, or from any part of
356
- it. (Additional permissions may be written to require their own
357
- removal in certain cases when you modify the work.) You may place
358
- additional permissions on material, added by you to a covered work,
359
- for which you have or can give appropriate copyright permission.
360
-
361
- Notwithstanding any other provision of this License, for material you
362
- add to a covered work, you may (if authorized by the copyright holders of
363
- that material) supplement the terms of this License with terms:
364
-
365
- a) Disclaiming warranty or limiting liability differently from the
366
- terms of sections 15 and 16 of this License; or
367
-
368
- b) Requiring preservation of specified reasonable legal notices or
369
- author attributions in that material or in the Appropriate Legal
370
- Notices displayed by works containing it; or
371
-
372
- c) Prohibiting misrepresentation of the origin of that material, or
373
- requiring that modified versions of such material be marked in
374
- reasonable ways as different from the original version; or
375
-
376
- d) Limiting the use for publicity purposes of names of licensors or
377
- authors of the material; or
378
-
379
- e) Declining to grant rights under trademark law for use of some
380
- trade names, trademarks, or service marks; or
381
-
382
- f) Requiring indemnification of licensors and authors of that
383
- material by anyone who conveys the material (or modified versions of
384
- it) with contractual assumptions of liability to the recipient, for
385
- any liability that these contractual assumptions directly impose on
386
- those licensors and authors.
387
-
388
- All other non-permissive additional terms are considered "further
389
- restrictions" within the meaning of section 10. If the Program as you
390
- received it, or any part of it, contains a notice stating that it is
391
- governed by this License along with a term that is a further
392
- restriction, you may remove that term. If a license document contains
393
- a further restriction but permits relicensing or conveying under this
394
- License, you may add to a covered work material governed by the terms
395
- of that license document, provided that the further restriction does
396
- not survive such relicensing or conveying.
397
-
398
- If you add terms to a covered work in accord with this section, you
399
- must place, in the relevant source files, a statement of the
400
- additional terms that apply to those files, or a notice indicating
401
- where to find the applicable terms.
402
-
403
- Additional terms, permissive or non-permissive, may be stated in the
404
- form of a separately written license, or stated as exceptions;
405
- the above requirements apply either way.
406
-
407
- 8. Termination.
408
-
409
- You may not propagate or modify a covered work except as expressly
410
- provided under this License. Any attempt otherwise to propagate or
411
- modify it is void, and will automatically terminate your rights under
412
- this License (including any patent licenses granted under the third
413
- paragraph of section 11).
414
-
415
- However, if you cease all violation of this License, then your
416
- license from a particular copyright holder is reinstated (a)
417
- provisionally, unless and until the copyright holder explicitly and
418
- finally terminates your license, and (b) permanently, if the copyright
419
- holder fails to notify you of the violation by some reasonable means
420
- prior to 60 days after the cessation.
421
-
422
- Moreover, your license from a particular copyright holder is
423
- reinstated permanently if the copyright holder notifies you of the
424
- violation by some reasonable means, this is the first time you have
425
- received notice of violation of this License (for any work) from that
426
- copyright holder, and you cure the violation prior to 30 days after
427
- your receipt of the notice.
428
-
429
- Termination of your rights under this section does not terminate the
430
- licenses of parties who have received copies or rights from you under
431
- this License. If your rights have been terminated and not permanently
432
- reinstated, you do not qualify to receive new licenses for the same
433
- material under section 10.
434
-
435
- 9. Acceptance Not Required for Having Copies.
436
-
437
- You are not required to accept this License in order to receive or
438
- run a copy of the Program. Ancillary propagation of a covered work
439
- occurring solely as a consequence of using peer-to-peer transmission
440
- to receive a copy likewise does not require acceptance. However,
441
- nothing other than this License grants you permission to propagate or
442
- modify any covered work. These actions infringe copyright if you do
443
- not accept this License. Therefore, by modifying or propagating a
444
- covered work, you indicate your acceptance of this License to do so.
445
-
446
- 10. Automatic Licensing of Downstream Recipients.
447
-
448
- Each time you convey a covered work, the recipient automatically
449
- receives a license from the original licensors, to run, modify and
450
- propagate that work, subject to this License. You are not responsible
451
- for enforcing compliance by third parties with this License.
452
-
453
- An "entity transaction" is a transaction transferring control of an
454
- organization, or substantially all assets of one, or subdividing an
455
- organization, or merging organizations. If propagation of a covered
456
- work results from an entity transaction, each party to that
457
- transaction who receives a copy of the work also receives whatever
458
- licenses to the work the party's predecessor in interest had or could
459
- give under the previous paragraph, plus a right to possession of the
460
- Corresponding Source of the work from the predecessor in interest, if
461
- the predecessor has it or can get it with reasonable efforts.
462
-
463
- You may not impose any further restrictions on the exercise of the
464
- rights granted or affirmed under this License. For example, you may
465
- not impose a license fee, royalty, or other charge for exercise of
466
- rights granted under this License, and you may not initiate litigation
467
- (including a cross-claim or counterclaim in a lawsuit) alleging that
468
- any patent claim is infringed by making, using, selling, offering for
469
- sale, or importing the Program or any portion of it.
470
-
471
- 11. Patents.
472
-
473
- A "contributor" is a copyright holder who authorizes use under this
474
- License of the Program or a work on which the Program is based. The
475
- work thus licensed is called the contributor's "contributor version".
476
-
477
- A contributor's "essential patent claims" are all patent claims
478
- owned or controlled by the contributor, whether already acquired or
479
- hereafter acquired, that would be infringed by some manner, permitted
480
- by this License, of making, using, or selling its contributor version,
481
- but do not include claims that would be infringed only as a
482
- consequence of further modification of the contributor version. For
483
- purposes of this definition, "control" includes the right to grant
484
- patent sublicenses in a manner consistent with the requirements of
485
- this License.
486
-
487
- Each contributor grants you a non-exclusive, worldwide, royalty-free
488
- patent license under the contributor's essential patent claims, to
489
- make, use, sell, offer for sale, import and otherwise run, modify and
490
- propagate the contents of its contributor version.
491
-
492
- In the following three paragraphs, a "patent license" is any express
493
- agreement or commitment, however denominated, not to enforce a patent
494
- (such as an express permission to practice a patent or covenant not to
495
- sue for patent infringement). To "grant" such a patent license to a
496
- party means to make such an agreement or commitment not to enforce a
497
- patent against the party.
498
-
499
- If you convey a covered work, knowingly relying on a patent license,
500
- and the Corresponding Source of the work is not available for anyone
501
- to copy, free of charge and under the terms of this License, through a
502
- publicly available network server or other readily accessible means,
503
- then you must either (1) cause the Corresponding Source to be so
504
- available, or (2) arrange to deprive yourself of the benefit of the
505
- patent license for this particular work, or (3) arrange, in a manner
506
- consistent with the requirements of this License, to extend the patent
507
- license to downstream recipients. "Knowingly relying" means you have
508
- actual knowledge that, but for the patent license, your conveying the
509
- covered work in a country, or your recipient's use of the covered work
510
- in a country, would infringe one or more identifiable patents in that
511
- country that you have reason to believe are valid.
512
-
513
- If, pursuant to or in connection with a single transaction or
514
- arrangement, you convey, or propagate by procuring conveyance of, a
515
- covered work, and grant a patent license to some of the parties
516
- receiving the covered work authorizing them to use, propagate, modify
517
- or convey a specific copy of the covered work, then the patent license
518
- you grant is automatically extended to all recipients of the covered
519
- work and works based on it.
520
-
521
- A patent license is "discriminatory" if it does not include within
522
- the scope of its coverage, prohibits the exercise of, or is
523
- conditioned on the non-exercise of one or more of the rights that are
524
- specifically granted under this License. You may not convey a covered
525
- work if you are a party to an arrangement with a third party that is
526
- in the business of distributing software, under which you make payment
527
- to the third party based on the extent of your activity of conveying
528
- the work, and under which the third party grants, to any of the
529
- parties who would receive the covered work from you, a discriminatory
530
- patent license (a) in connection with copies of the covered work
531
- conveyed by you (or copies made from those copies), or (b) primarily
532
- for and in connection with specific products or compilations that
533
- contain the covered work, unless you entered into that arrangement,
534
- or that patent license was granted, prior to 28 March 2007.
535
-
536
- Nothing in this License shall be construed as excluding or limiting
537
- any implied license or other defenses to infringement that may
538
- otherwise be available to you under applicable patent law.
539
-
540
- 12. No Surrender of Others' Freedom.
541
-
542
- If conditions are imposed on you (whether by court order, agreement or
543
- otherwise) that contradict the conditions of this License, they do not
544
- excuse you from the conditions of this License. If you cannot convey a
545
- covered work so as to satisfy simultaneously your obligations under this
546
- License and any other pertinent obligations, then as a consequence you may
547
- not convey it at all. For example, if you agree to terms that obligate you
548
- to collect a royalty for further conveying from those to whom you convey
549
- the Program, the only way you could satisfy both those terms and this
550
- License would be to refrain entirely from conveying the Program.
551
-
552
- 13. Use with the GNU Affero General Public License.
553
-
554
- Notwithstanding any other provision of this License, you have
555
- permission to link or combine any covered work with a work licensed
556
- under version 3 of the GNU Affero General Public License into a single
557
- combined work, and to convey the resulting work. The terms of this
558
- License will continue to apply to the part which is the covered work,
559
- but the special requirements of the GNU Affero General Public License,
560
- section 13, concerning interaction through a network will apply to the
561
- combination as such.
562
-
563
- 14. Revised Versions of this License.
564
-
565
- The Free Software Foundation may publish revised and/or new versions of
566
- the GNU General Public License from time to time. Such new versions will
567
- be similar in spirit to the present version, but may differ in detail to
568
- address new problems or concerns.
569
-
570
- Each version is given a distinguishing version number. If the
571
- Program specifies that a certain numbered version of the GNU General
572
- Public License "or any later version" applies to it, you have the
573
- option of following the terms and conditions either of that numbered
574
- version or of any later version published by the Free Software
575
- Foundation. If the Program does not specify a version number of the
576
- GNU General Public License, you may choose any version ever published
577
- by the Free Software Foundation.
578
-
579
- If the Program specifies that a proxy can decide which future
580
- versions of the GNU General Public License can be used, that proxy's
581
- public statement of acceptance of a version permanently authorizes you
582
- to choose that version for the Program.
583
-
584
- Later license versions may give you additional or different
585
- permissions. However, no additional obligations are imposed on any
586
- author or copyright holder as a result of your choosing to follow a
587
- later version.
588
-
589
- 15. Disclaimer of Warranty.
590
-
591
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
592
- APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
593
- HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
594
- OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
595
- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
596
- PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
597
- IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
598
- ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
599
-
600
- 16. Limitation of Liability.
601
-
602
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
603
- WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
604
- THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
605
- GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
606
- USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
607
- DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
608
- PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
609
- EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
610
- SUCH DAMAGES.
611
-
612
- 17. Interpretation of Sections 15 and 16.
613
-
614
- If the disclaimer of warranty and limitation of liability provided
615
- above cannot be given local legal effect according to their terms,
616
- reviewing courts shall apply local law that most closely approximates
617
- an absolute waiver of all civil liability in connection with the
618
- Program, unless a warranty or assumption of liability accompanies a
619
- copy of the Program in return for a fee.
620
-
621
- END OF TERMS AND CONDITIONS
622
-
623
- How to Apply These Terms to Your New Programs
624
-
625
- If you develop a new program, and you want it to be of the greatest
626
- possible use to the public, the best way to achieve this is to make it
627
- free software which everyone can redistribute and change under these terms.
628
-
629
- To do so, attach the following notices to the program. It is safest
630
- to attach them to the start of each source file to most effectively
631
- state the exclusion of warranty; and each file should have at least
632
- the "copyright" line and a pointer to where the full notice is found.
633
-
634
- {one line to give the program's name and a brief idea of what it does.}
635
- Copyright (C) {year} {name of author}
636
-
637
- This program is free software: you can redistribute it and/or modify
638
- it under the terms of the GNU General Public License as published by
639
- the Free Software Foundation, either version 3 of the License, or
640
- (at your option) any later version.
641
-
642
- This program is distributed in the hope that it will be useful,
643
- but WITHOUT ANY WARRANTY; without even the implied warranty of
644
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
645
- GNU General Public License for more details.
646
-
647
- You should have received a copy of the GNU General Public License
648
- along with this program. If not, see <http://www.gnu.org/licenses/>.
649
-
650
- Also add information on how to contact you by electronic and paper mail.
651
-
652
- If the program does terminal interaction, make it output a short
653
- notice like this when it starts in an interactive mode:
654
-
655
- {project} Copyright (C) {year} {fullname}
656
- This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
657
- This is free software, and you are welcome to redistribute it
658
- under certain conditions; type `show c' for details.
659
-
660
- The hypothetical commands `show w' and `show c' should show the appropriate
661
- parts of the General Public License. Of course, your program's commands
662
- might be different; for a GUI interface, you would use an "about box".
663
-
664
- You should also get your employer (if you work as a programmer) or school,
665
- if any, to sign a "copyright disclaimer" for the program, if necessary.
666
- For more information on this, and how to apply and follow the GNU GPL, see
667
- <http://www.gnu.org/licenses/>.
668
-
669
- The GNU General Public License does not permit incorporating your program
670
- into proprietary programs. If your program is a subroutine library, you
671
- may consider it more useful to permit linking proprietary applications with
672
- the library. If this is what you want to do, use the GNU Lesser General
673
- Public License instead of this License. But first, please read
674
- <http://www.gnu.org/philosophy/why-not-lgpl.html>.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-feedback-deactivate.php DELETED
@@ -1,470 +0,0 @@
1
- <?php
2
- /**
3
- * The deactivate feedback model class for ThemeIsle SDK
4
- *
5
- * @package ThemeIsleSDK
6
- * @subpackage Feedback
7
- * @copyright Copyright (c) 2017, Marius Cristea
8
- * @license http://opensource.org/licenses/gpl-3.0.php GNU Public License
9
- * @since 1.0.0
10
- */
11
- // Exit if accessed directly.
12
- if ( ! defined( 'ABSPATH' ) ) {
13
- exit;
14
- }
15
- if ( ! class_exists( 'ThemeIsle_SDK_Feedback_Deactivate' ) ) :
16
- /**
17
- * Deactivate feedback model for ThemeIsle SDK.
18
- */
19
- class ThemeIsle_SDK_Feedback_Deactivate extends ThemeIsle_SDK_Feedback {
20
-
21
- /**
22
- * @var array $options_plugin The main options list for plugins.
23
- */
24
- private $options_plugin = array(
25
- 'I only needed the plugin for a short period' => array(
26
- 'id' => 1,
27
- ),
28
- 'The plugin broke my site' => array(
29
- 'id' => 2,
30
- ),
31
- 'I found a better plugin' => array(
32
- 'id' => 3,
33
- 'type' => 'text',
34
- 'placeholder' => 'What\'s the plugin\'s name?',
35
- ),
36
- 'The plugin suddenly stopped working' => array(
37
- 'id' => 4,
38
- ),
39
- 'I no longer need the plugin' => array(
40
- 'id' => 5,
41
- 'type' => 'textarea',
42
- 'placeholder' => 'If you could improve one thing about our product, what would it be?',
43
- ),
44
- 'It\'s a temporary deactivation. I\'m just debugging an issue.' => array(
45
- 'id' => 6,
46
- ),
47
- );
48
-
49
- /**
50
- * @var array $options_theme The main options list for themes.
51
- */
52
- private $options_theme = array(
53
- 'I don\'t know how to make it look like demo' => array(
54
- 'id' => 7,
55
- ),
56
- 'It lacks options' => array(
57
- 'id' => 8,
58
- ),
59
- 'Is not working with a plugin that I need' => array(
60
- 'id' => 9,
61
- 'type' => 'text',
62
- 'placeholder' => 'What is the name of the plugin',
63
- ),
64
- 'I want to try a new design, I don\'t like {theme} style' => array(
65
- 'id' => 10,
66
- ),
67
- );
68
-
69
- /**
70
- * @var array $other The other option
71
- */
72
- private $other = array(
73
- 'Other' => array(
74
- 'id' => 999,
75
- 'type' => 'textarea',
76
- 'placeholder' => 'cmon cmon tell us',
77
- ),
78
- );
79
-
80
- /**
81
- * @var string $heading_plugin The heading of the modal
82
- */
83
- private $heading_plugin = 'If you have a moment, please let us know why you are deactivating:';
84
-
85
- /**
86
- * @var string $heading_theme The heading of the modal
87
- */
88
- private $heading_theme = 'Looking to change {theme}, what doesn\'t work for you?';
89
-
90
- /**
91
- * @var string $button_submit_before The text of the deactivate button before an option is chosen
92
- */
93
- private $button_submit_before = 'Skip &amp; Deactivate';
94
-
95
- /**
96
- * @var string $button_submit The text of the deactivate button
97
- */
98
- private $button_submit = 'Submit &amp; Deactivate';
99
-
100
- /**
101
- * @var string $button_cancel The text of the cancel button
102
- */
103
- private $button_cancel = 'Cancel';
104
-
105
- /**
106
- * @var int how many seconds before the deactivation window is triggered for themes
107
- */
108
- const AUTO_TRIGGER_DEACTIVATE_WINDOW_SECONDS = 3;
109
-
110
- /**
111
- * @var int how many days before the deactivation window pops up again for the theme
112
- */
113
- const PAUSE_DEACTIVATE_WINDOW_DAYS = 100;
114
-
115
- /**
116
- * ThemeIsle_SDK_Feedback_Deactivate constructor.
117
- *
118
- * @param ThemeIsle_SDK_Product $product_object The product object.
119
- */
120
- public function __construct( $product_object ) {
121
- parent::__construct( $product_object );
122
- }
123
-
124
- /**
125
- * Registers the hooks
126
- */
127
- public function setup_hooks_child() {
128
- global $pagenow;
129
-
130
- if ( ( $this->product->get_type() === 'plugin' && $pagenow === 'plugins.php' ) || ( $this->product->get_type() === 'theme' && $pagenow === 'theme-install.php' ) ) {
131
- add_action( 'admin_head', array( $this, 'load_resources' ) );
132
- }
133
- add_action( 'wp_ajax_' . $this->product->get_key() . __CLASS__, array( $this, 'post_deactivate' ) );
134
- }
135
-
136
- /**
137
- * Loads the additional resources
138
- */
139
- function load_resources() {
140
- add_thickbox();
141
-
142
- $id = $this->product->get_key() . '_deactivate';
143
-
144
- $this->add_css( $this->product->get_type(), $this->product->get_key() );
145
- $this->add_js( $this->product->get_type(), $this->product->get_key(), '#TB_inline?' . apply_filters( $this->product->get_key() . '_feedback_deactivate_attributes', 'width=600&height=550' ) . '&inlineId=' . $id );
146
-
147
- echo '<div id="' . $id . '" style="display:none;" class="themeisle-deactivate-box">' . $this->get_html( $this->product->get_type(), $this->product->get_key() ) . '</div>';
148
- }
149
-
150
- /**
151
- * Loads the css
152
- *
153
- * @param string $type The type of product.
154
- * @param string $key The product key.
155
- */
156
- function add_css( $type, $key ) {
157
- $suffix = 'theme' === $type ? 'theme-install-php' : 'plugins-php';
158
- ?>
159
- <style type="text/css" id="<?php echo $key; ?>ti-deactivate-css">
160
- input[name="ti-deactivate-option"] ~ div {
161
- display: none;
162
- }
163
-
164
- input[name="ti-deactivate-option"]:checked ~ div {
165
- display: block;
166
- }
167
-
168
- body.<?php echo $suffix; ?> .<?php echo $key; ?>-container #TB_window.thickbox-loading:before {
169
- background: none !important;
170
- }
171
-
172
- body.<?php echo $suffix; ?> .<?php echo $key; ?>-container #TB_title {
173
- font-size: 21px;
174
- padding: 20px 0;
175
- background-color: #f3f3f3;
176
- }
177
-
178
- body.<?php echo $suffix; ?> .<?php echo $key; ?>-container div.actions {
179
- padding: 20px 0;
180
- background-color: #f3f3f3;
181
- border-top: 1px solid #dddddd;
182
- }
183
-
184
- body.<?php echo $suffix; ?> .<?php echo $key; ?>-container input.button.button-primary {
185
- margin-right: 20px;
186
- }
187
-
188
- body.<?php echo $suffix; ?> .<?php echo $key; ?>-container input.button {
189
- margin-right: 20px;
190
- }
191
-
192
- body.<?php echo $suffix; ?> .<?php echo $key; ?>-container #TB_ajaxWindowTitle {
193
- text-align: left;
194
- margin-left: 15px;
195
- }
196
-
197
- body.<?php echo $suffix; ?> .<?php echo $key; ?>-container div.revive_network-container {
198
- background-color: #ffffff;
199
- }
200
-
201
- body.<?php echo $suffix; ?> .<?php echo $key; ?>-container ul.ti-list li {
202
- font-size: 14px;
203
- }
204
-
205
- body.<?php echo $suffix; ?> .<?php echo $key; ?>-container ul.ti-list li label {
206
- margin-left: 10px;
207
- line-height: 32px;
208
- font-size: 16px;
209
- }
210
-
211
- body.<?php echo $suffix; ?> .<?php echo $key; ?>-container #TB_ajaxContent {
212
- padding: 10px 20px;
213
- }
214
-
215
- body.<?php echo $suffix; ?> .<?php echo $key; ?>-container li div textarea {
216
- padding: 10px 15px;
217
- width: 100%;
218
- }
219
-
220
- body.<?php echo $suffix; ?> .<?php echo $key; ?>-container ul.ti-list li div {
221
- margin: 10px 30px;
222
- }
223
-
224
- .<?php echo $key; ?>-container #TB_title #TB_ajaxWindowTitle {
225
- display: block;
226
- }
227
-
228
- body.<?php echo $suffix; ?> .<?php echo $key; ?>-container .actions {
229
-
230
- width: 100%;
231
- display: block;
232
- position: absolute;
233
- left: 0px;
234
- bottom: 0px;
235
- text-align: right;
236
- }
237
-
238
- body.<?php echo $suffix; ?> .<?php echo $key; ?>-container #TB_title {
239
-
240
- height: 33px;
241
- width: 100%;
242
- text-align: center;
243
- }
244
-
245
- .theme-install-php .<?php echo $key; ?>-container #TB_closeWindowButton .tb-close-icon:before {
246
- font-size: 32px;
247
- }
248
-
249
- .<?php echo $key; ?>-container #TB_closeWindowButton .tb-close-icon {
250
-
251
- color: #eee;
252
- }
253
-
254
- .<?php echo $key; ?>-container #TB_closeWindowButton {
255
- left: auto;
256
- right: -30px;
257
- color: #eee;
258
- }
259
-
260
- body.<?php echo $suffix; ?> .<?php echo $key; ?>-container {
261
-
262
- margin: auto !important;
263
- height: 550px !important;
264
- top: 0 !important;
265
- left: 0 !important;
266
- bottom: 0 !important;
267
- right: 0 !important;
268
- }
269
- </style>
270
- <?php
271
- }
272
-
273
- /**
274
- * Loads the js
275
- *
276
- * @param string $type The type of product.
277
- * @param string $key The product key.
278
- * @param string $src The url that will hijack the deactivate button url.
279
- */
280
- function add_js( $type, $key, $src ) {
281
- $heading = 'plugin' === $type ? $this->heading_plugin : str_replace( '{theme}', $this->product->get_name(), $this->heading_theme );
282
- $heading = apply_filters( $this->product->get_key() . '_feedback_deactivate_heading', $heading );
283
- ?>
284
- <script type="text/javascript" id="ti-deactivate-js">
285
- (function ($) {
286
- $(document).ready(function () {
287
- var auto_trigger = false;
288
- var target_element = 'tr[data-plugin^="<?php echo $this->product->get_slug(); ?>/"] span.deactivate a';
289
- <?php
290
- if ( 'theme' === $type ) {
291
- ?>
292
- auto_trigger = true;
293
- if ($('a.ti-auto-anchor').length == 0) {
294
- $('body').append($('<a class="ti-auto-anchor" href=""></a>'));
295
- }
296
- target_element = 'a.ti-auto-anchor';
297
- <?php
298
- }
299
- ?>
300
-
301
- if (auto_trigger) {
302
- setTimeout(function () {
303
- $('a.ti-auto-anchor').trigger('click');
304
- }, <?php echo self::AUTO_TRIGGER_DEACTIVATE_WINDOW_SECONDS * 1000; ?> );
305
- }
306
- $( document ).on( 'thickbox:removed', function() {
307
- $.ajax({
308
- url: ajaxurl,
309
- method: 'post',
310
- data: {
311
- 'action' : '<?php echo $key . __CLASS__; ?>',
312
- 'nonce' : '<?php echo wp_create_nonce( (string) __CLASS__ ); ?>',
313
- 'type' : '<?php echo $type; ?>',
314
- 'key' : '<?php echo $key; ?>'
315
- },
316
- });
317
- });
318
- var href = $(target_element).attr('href');
319
- $('#<?php echo $key; ?>ti-deactivate-no').on('click', function (e) {
320
- e.preventDefault();
321
- e.stopPropagation();
322
-
323
- $('body').unbind('thickbox:removed');
324
- tb_remove();
325
- });
326
-
327
- $('#<?php echo $key; ?> ul.ti-list label, #<?php echo $key; ?> ul.ti-list input[name="ti-deactivate-option"]').on('click', function (e) {
328
- $('#<?php echo $key; ?>ti-deactivate-yes').val($('#<?php echo $key; ?>ti-deactivate-yes').attr('data-after-text'));
329
-
330
- var radio = $(this).prop('tagName') === 'LABEL' ? $(this).parent() : $(this);
331
- if (radio.parent().find('textarea').length > 0 && radio.parent().find('textarea').val().length === 0) {
332
- $('#<?php echo $key; ?>ti-deactivate-yes').attr('disabled', 'disabled');
333
- radio.parent().find('textarea').on('keyup', function (ee) {
334
- if ($(this).val().length === 0) {
335
- $('#<?php echo $key; ?>ti-deactivate-yes').attr('disabled', 'disabled');
336
- } else {
337
- $('#<?php echo $key; ?>ti-deactivate-yes').removeAttr('disabled');
338
- }
339
- });
340
- } else {
341
- $('#<?php echo $key; ?>ti-deactivate-yes').removeAttr('disabled');
342
- }
343
- });
344
-
345
- $('#<?php echo $key; ?>ti-deactivate-yes').attr('data-ti-action', href).on('click', function (e) {
346
- e.preventDefault();
347
- e.stopPropagation();
348
- $.ajax({
349
- url: ajaxurl,
350
- method: 'post',
351
- data: {
352
- 'action' : '<?php echo $key . __CLASS__; ?>',
353
- 'nonce' : '<?php echo wp_create_nonce( (string) __CLASS__ ); ?>',
354
- 'id' : $('#<?php echo $key; ?> input[name="ti-deactivate-option"]:checked').parent().attr('ti-option-id'),
355
- 'msg' : $('#<?php echo $key; ?> input[name="ti-deactivate-option"]:checked').parent().find('textarea').val(),
356
- 'type' : '<?php echo $type; ?>',
357
- 'key' : '<?php echo $key; ?>'
358
- },
359
- });
360
- var redirect = $(this).attr('data-ti-action');
361
- if (redirect != '') {
362
- location.href = redirect;
363
- } else {
364
- $('body').unbind('thickbox:removed');
365
- tb_remove();
366
- }
367
- });
368
-
369
- $(target_element).attr('name', '<?php echo esc_html( $heading ); ?>').attr('href', '<?php echo $src; ?>').addClass('thickbox');
370
- var thicbox_timer;
371
- $(target_element).on('click', function () {
372
- tiBindThickbox();
373
- });
374
-
375
- function tiBindThickbox() {
376
- var thicbox_timer = setTimeout(function () {
377
- if ($("#<?php echo esc_html( $key ); ?>").is(":visible")) {
378
- $("body").trigger('thickbox:iframe:loaded');
379
- $("#TB_window").addClass("<?php echo $key; ?>-container");
380
- clearTimeout(thicbox_timer);
381
- $('body').unbind('thickbox:removed');
382
- } else {
383
- tiBindThickbox();
384
- }
385
- }, 100);
386
- }
387
- });
388
- })(jQuery);
389
- </script>
390
- <?php
391
- }
392
-
393
- /**
394
- * Generates the HTML
395
- *
396
- * @param string $type The type of product.
397
- * @param string $key The product key.
398
- */
399
- function get_html( $type, $key ) {
400
- $options = 'plugin' === $type ? $this->options_plugin : $this->options_theme;
401
- $button_submit_before = 'plugin' === $type ? $this->button_submit_before : 'Submit';
402
- $button_submit = 'plugin' === $type ? $this->button_submit : 'Submit';
403
- $options = $this->randomize_options( apply_filters( $this->product->get_key() . '_feedback_deactivate_options', $options ) );
404
- $button_submit_before = apply_filters( $this->product->get_key() . '_feedback_deactivate_button_submit_before', $button_submit_before );
405
- $button_submit = apply_filters( $this->product->get_key() . '_feedback_deactivate_button_submit', $button_submit );
406
- $button_cancel = apply_filters( $this->product->get_key() . '_feedback_deactivate_button_cancel', $this->button_cancel );
407
-
408
- $options += $this->other;
409
-
410
- $list = '';
411
- foreach ( $options as $title => $attributes ) {
412
- $id = $attributes['id'];
413
- $list .= '<li ti-option-id="' . $id . '"><input type="radio" name="ti-deactivate-option" id="' . $key . $id . '"><label for="' . $key . $id . '">' . str_replace( '{theme}', $this->product->get_name(), $title ) . '</label>';
414
- if ( array_key_exists( 'type', $attributes ) ) {
415
- $list .= '<div>';
416
- $placeholder = array_key_exists( 'placeholder', $attributes ) ? $attributes['placeholder'] : '';
417
- switch ( $attributes['type'] ) {
418
- case 'text':
419
- $list .= '<textarea style="width: 100%" rows="1" name="comments" placeholder="' . $placeholder . '"></textarea>';
420
- break;
421
- case 'textarea':
422
- $list .= '<textarea style="width: 100%" rows="2" name="comments" placeholder="' . $placeholder . '"></textarea>';
423
- break;
424
- }
425
- $list .= '</div>';
426
- }
427
- $list .= '</li>';
428
- }
429
-
430
- return '<div id="' . $this->product->get_key() . '">'
431
- . '<ul class="ti-list">' . $list . '</ul>'
432
- . '<div class="actions">'
433
- . get_submit_button(
434
- $button_submit_before , 'secondary', $this->product->get_key() . 'ti-deactivate-yes', false, array(
435
- 'data-after-text' => $button_submit,
436
- )
437
- )
438
- . get_submit_button( $button_cancel, 'primary', $this->product->get_key() . 'ti-deactivate-no', false )
439
- . '</div></div>';
440
- }
441
-
442
- /**
443
- * Called when the deactivate button is clicked
444
- */
445
- function post_deactivate() {
446
- check_ajax_referer( (string) __CLASS__, 'nonce' );
447
-
448
- if ( ! empty( $_POST['id'] ) ) {
449
- $this->call_api(
450
- array(
451
- 'type' => 'deactivate',
452
- 'id' => $_POST['id'],
453
- 'comment' => isset( $_POST['msg'] ) ? $_POST['msg'] : '',
454
- )
455
- );
456
- }
457
-
458
- $this->post_deactivate_or_cancel();
459
- }
460
-
461
- /**
462
- * Called when the deactivate/cancel button is clicked
463
- */
464
- private function post_deactivate_or_cancel() {
465
- if ( isset( $_POST['type'] ) && isset( $_POST['key'] ) && 'theme' === $_POST['type'] ) {
466
- set_transient( 'ti_sdk_pause_' . $_POST['key'], true, PAUSE_DEACTIVATE_WINDOW_DAYS * DAY_IN_SECONDS );
467
- }
468
- }
469
- }
470
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-feedback-factory.php DELETED
@@ -1,50 +0,0 @@
1
- <?php
2
- /**
3
- * The feedback factory class for ThemeIsle SDK
4
- *
5
- * @package ThemeIsleSDK
6
- * @subpackage Feedback
7
- * @copyright Copyright (c) 2017, Marius Cristea
8
- * @license http://opensource.org/licenses/gpl-3.0.php GNU Public License
9
- * @since 1.0.0
10
- */
11
- // Exit if accessed directly.
12
- if ( ! defined( 'ABSPATH' ) ) {
13
- exit;
14
- }
15
- if ( ! class_exists( 'ThemeIsle_SDK_Feedback_Factory' ) ) :
16
- /**
17
- * Feedback model for ThemeIsle SDK.
18
- */
19
- class ThemeIsle_SDK_Feedback_Factory {
20
-
21
- /**
22
- * @var array $instances collection of the instances that are registered with the factory
23
- */
24
- private $_instances = array();
25
-
26
- /**
27
- * ThemeIsle_SDK_Feedback_Factory constructor.
28
- *
29
- * @param ThemeIsle_SDK_Product $product_object Product Object.
30
- * @param array $feedback_types the feedback types.
31
- */
32
- public function __construct( $product_object, $feedback_types ) {
33
- if ( $product_object instanceof ThemeIsle_SDK_Product && $feedback_types && is_array( $feedback_types ) ) {
34
- foreach ( $feedback_types as $type ) {
35
- $class = 'ThemeIsle_SDK_Feedback_' . ucwords( $type );
36
- $instance = new $class( $product_object );
37
- $this->_instances[ $type ] = $instance;
38
- $instance->setup_hooks();
39
- }
40
- }
41
- }
42
-
43
- /**
44
- * Get the registered instances
45
- */
46
- public function get_instances() {
47
- return $this->_instances;
48
- }
49
- }
50
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-feedback-review.php DELETED
@@ -1,185 +0,0 @@
1
- <?php
2
- /**
3
- * The review feedback model class for ThemeIsle SDK
4
- *
5
- * @package ThemeIsleSDK
6
- * @subpackage Feedback
7
- * @copyright Copyright (c) 2017, Marius Cristea
8
- * @license http://opensource.org/licenses/gpl-3.0.php GNU Public License
9
- * @since 1.0.0
10
- */
11
- // Exit if accessed directly.
12
- if ( ! defined( 'ABSPATH' ) ) {
13
- exit;
14
- }
15
- if ( ! class_exists( 'ThemeIsle_SDK_Feedback_Review' ) ) :
16
- /**
17
- * Deactivate feedback model for ThemeIsle SDK.
18
- */
19
- class ThemeIsle_SDK_Feedback_Review extends ThemeIsle_SDK_Feedback {
20
-
21
- /**
22
- * @var string $heading The heading of the modal
23
- */
24
- private $heading = 'Hey, it’s great to see you have {product} active for a few days now. How is everything going? If you can spare a few moments to rate it on WordPress.org it would help us a lot (and boost my motivation). Cheers! <br/> <br/>~ {developer}, developer of {product}';
25
-
26
- /**
27
- * @var string $button_cancel The text of the cancel button
28
- */
29
- private $button_cancel = 'No, thanks.';
30
- /**
31
- * @var array Developers who work for each type of product for review purpose.
32
- */
33
- private $developers = array(
34
- 'plugin' => array( 'Marius', 'Bogdan' ),
35
- 'theme' => array( 'Rodica', 'Andrei', 'Bogdan', 'Cristi' ),
36
- );
37
- /**
38
- * @var string $button_already The text of the already did it button
39
- */
40
- private $button_do = 'Ok, I will gladly help.';
41
-
42
- /**
43
- * ThemeIsle_SDK_Feedback_Deactivate constructor.
44
- *
45
- * @param ThemeIsle_SDK_Product $product_object The product object.
46
- */
47
- public function __construct( $product_object ) {
48
- parent::__construct( $product_object );
49
- }
50
-
51
- /**
52
- * Registers the hooks
53
- */
54
- public function setup_hooks_child() {
55
- add_action( 'wp_ajax_' . $this->product->get_key() . __CLASS__, array( $this, 'dismiss' ) );
56
- }
57
-
58
- /**
59
- * Shows the notification
60
- */
61
- function show_notification() {
62
- if ( ! $this->product->is_wordpress_available() ) {
63
- $this->disable();
64
-
65
- return false;
66
- }
67
- $show = get_option( $this->product->get_key() . '_review_flag', 'yes' );
68
- if ( 'no' === $show ) {
69
- return false;
70
- }
71
- add_action( 'admin_notices', array( $this, 'admin_notices' ) );
72
-
73
- return true;
74
- }
75
-
76
- /**
77
- * Shows the admin notice
78
- */
79
- function admin_notices() {
80
- $id = $this->product->get_key() . '_review';
81
-
82
- $this->add_css( $this->product->get_key() );
83
- $this->add_js( $this->product->get_key() );
84
-
85
- echo '<div class="notice notice-success is-dismissible" id="' . $id . '" ><div class="themeisle-review-box">' . $this->get_html( $this->product->get_key() ) . '</div></div>';
86
- }
87
-
88
- /**
89
- * Loads the css
90
- *
91
- * @param string $key The product key.
92
- */
93
- function add_css( $key ) {
94
- ?>
95
- <style type="text/css" id="<?php echo $key; ?>ti-review-css">
96
- #<?php echo $key; ?>-review-notification {
97
- padding-bottom: 5px;
98
- }
99
-
100
- #<?php echo $key; ?>-review-notification .review-dismiss {
101
- margin-left: 5px;
102
- }
103
- </style>
104
- <?php
105
- }
106
-
107
- /**
108
- * Loads the js
109
- *
110
- * @param string $key The product key.
111
- */
112
- function add_js( $key ) {
113
- ?>
114
- <script type="text/javascript" id="<?php echo $key; ?>ti-review-js">
115
- (function ($) {
116
- $(document).ready(function () {
117
- $('#<?php echo $key; ?>_review').on('click', '.notice-dismiss, .review-dismiss', function (e) {
118
-
119
- $.ajax({
120
- url: ajaxurl,
121
- method: "post",
122
- data: {
123
- 'nonce': '<?php echo wp_create_nonce( (string) __CLASS__ ); ?>',
124
- 'action': '<?php echo $this->product->get_key() . __CLASS__; ?>'
125
- },
126
- success: function () {
127
- $('#<?php echo $key; ?>_review').hide();
128
- }
129
- });
130
- });
131
- });
132
- })(jQuery);
133
- </script>
134
- <?php
135
- }
136
-
137
- /**
138
- * Generates the HTML
139
- *
140
- * @param string $key The product key.
141
- */
142
- function get_html( $key ) {
143
- $link = 'https://wordpress.org/support/' . $this->product->get_type() . '/' . $this->product->get_slug() . '/reviews/#wporg-footer';
144
- $heading = apply_filters( $this->product->get_key() . '_feedback_review_heading', $this->heading );
145
- $heading = str_replace(
146
- array( '{product}' ),
147
- trim( str_replace( 'Lite', '', $this->product->get_name() ) ), $heading
148
- );
149
- $heading = str_replace( '{developer}', $this->developers[ $this->product->get_type() ][ rand( 0, ( count( $this->developers[ $this->product->get_type() ] ) - 1 ) ) ], $heading );
150
-
151
- $button_cancel = apply_filters( $this->product->get_key() . '_feedback_review_button_cancel', $this->button_cancel );
152
- $button_do = apply_filters( $this->product->get_key() . '_feedback_review_button_do', $this->button_do );
153
-
154
- return '<div id="' . $this->product->get_key() . '-review-notification" class="themeisle-sdk-review-box">'
155
- . '<p>' . $heading . '</p>'
156
- . '<div class="actions">'
157
- . '<a href="' . $link . '" target="_blank" class="button button-primary review-dismiss"> ' . $button_do . '</a>'
158
- . get_submit_button( $button_cancel, 'review-dismiss ' . $this->product->get_key() . '-ti-review', $this->product->get_key() . 'ti-review-no', false )
159
- . '</div></div>';
160
- }
161
-
162
- /**
163
- * Called when the either button is clicked
164
- */
165
- function dismiss() {
166
- check_ajax_referer( (string) __CLASS__, 'nonce' );
167
-
168
- $this->disable();
169
- }
170
-
171
- /**
172
- * Disables the notification
173
- */
174
- protected function disable() {
175
- update_option( $this->product->get_key() . '_review_flag', 'no' );
176
- }
177
-
178
- /**
179
- * Enables the notification
180
- */
181
- protected function enable() {
182
- update_option( $this->product->get_key() . '_review_flag', 'yes' );
183
- }
184
- }
185
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-feedback.php DELETED
@@ -1,90 +0,0 @@
1
- <?php
2
- /**
3
- * The feedback model class for ThemeIsle SDK
4
- *
5
- * @package ThemeIsleSDK
6
- * @subpackage Feedback
7
- * @copyright Copyright (c) 2017, Marius Cristea
8
- * @license http://opensource.org/licenses/gpl-3.0.php GNU Public License
9
- * @since 1.0.0
10
- */
11
- // Exit if accessed directly.
12
- if ( ! defined( 'ABSPATH' ) ) {
13
- exit;
14
- }
15
- if ( ! class_exists( 'ThemeIsle_SDK_Feedback' ) ) :
16
- /**
17
- * Feedback model for ThemeIsle SDK.
18
- */
19
- abstract class ThemeIsle_SDK_Feedback {
20
- /**
21
- * @var ThemeIsle_SDK_Product $product Themeisle Product.
22
- */
23
- protected $product;
24
-
25
- /**
26
- * @var string $feedback_url Url where to send the feedback
27
- */
28
- private $feedback_url = 'http://feedback.themeisle.com/wordpress/wp-json/__pirate_feedback_/v1/feedback';
29
-
30
- /**
31
- * ThemeIsle_SDK_Feedback constructor.
32
- *
33
- * @param ThemeIsle_SDK_Product $product_object Product Object.
34
- */
35
- public function __construct( $product_object ) {
36
- if ( $product_object instanceof ThemeIsle_SDK_Product ) {
37
- $this->product = $product_object;
38
- }
39
- $this->setup_hooks();
40
- }
41
-
42
- /**
43
- * Registers the hooks and then delegates to the child
44
- */
45
- public function setup_hooks() {
46
- $this->setup_hooks_child();
47
- }
48
-
49
- /**
50
- * Calls the API
51
- *
52
- * @param string $attributes The attributes of the post body.
53
- */
54
- protected function call_api( $attributes ) {
55
- $slug = $this->product->get_slug();
56
- $version = $this->product->get_version();
57
- $attributes['slug'] = $slug;
58
- $attributes['version'] = $version;
59
-
60
- $response = wp_remote_post(
61
- $this->feedback_url, array(
62
- 'body' => $attributes,
63
- )
64
- );
65
- }
66
-
67
- /**
68
- * Randomizes the options array
69
- *
70
- * @param array $options The options array.
71
- */
72
- function randomize_options( $options ) {
73
- $new = array();
74
- $keys = array_keys( $options );
75
- shuffle( $keys );
76
-
77
- foreach ( $keys as $key ) {
78
- $new[ $key ] = $options[ $key ];
79
- }
80
-
81
- return $new;
82
- }
83
-
84
- /**
85
- * Abstract function for delegating to the child
86
- */
87
- protected abstract function setup_hooks_child();
88
-
89
- }
90
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-licenser.php DELETED
@@ -1,710 +0,0 @@
1
- <?php
2
- /**
3
- * The main loader class for license handling.
4
- *
5
- * @package ThemeIsleSDK
6
- * @subpackage Licenser
7
- * @copyright Copyright (c) 2017, Marius Cristea
8
- * @license http://opensource.org/licenses/gpl-3.0.php GNU Public License
9
- * @since 1.0.0
10
- */
11
- if ( ! class_exists( 'ThemeIsle_SDK_Licenser' ) ) :
12
- /**
13
- * Class ThemeIsle_SDK_Licenser
14
- *
15
- * Used to update the themeisle products
16
- */
17
- class ThemeIsle_SDK_Licenser {
18
-
19
- /**
20
- * @var string $license_key The license key string
21
- */
22
- public $license_key;
23
-
24
- /**
25
- * @var bool $do_check This ensures that the custom API request only runs on the second time that WP fires the update check
26
- */
27
- private $do_check = false;
28
-
29
- /**
30
- * @var bool $failed_checks Number of failed checks to the api endpoint
31
- */
32
- private $failed_checks = 0;
33
- /**
34
- * @var ThemeIsle_SDK_Product $product The ThemeIsle Product.
35
- */
36
- private $product;
37
- /**
38
- * @var string $product_key The product update response key.
39
- */
40
- private $product_key;
41
- /**
42
- * @var int $max_failed Maximum failed checks allowed before show the notice
43
- */
44
- private static $max_failed = 5;
45
-
46
- /**
47
- * ThemeIsle_SDK_Licenser constructor.
48
- *
49
- * @param ThemeIsle_SDK_Product $product The product object.
50
- */
51
- public function __construct( $product ) {
52
- $this->product = $product;
53
- $this->product_key = $this->product->get_key() . '-update-response';
54
- if ( ! $this->product->requires_license() ) {
55
- $this->license_key = 'free';
56
- } else {
57
- $license_data = get_option( $this->product->get_key() . '_license_data', '' );
58
- $this->failed_checks = intval( get_option( $this->product->get_key() . '_failed_checks', 0 ) );
59
- if ( $license_data !== '' ) {
60
- $this->license_key = isset( $license_data->key ) ? $license_data->key : get_option( $this->product->get_key() . '_license', '' );
61
- } else {
62
- $this->license_key = get_option( $this->product->get_key() . '_license', '' );
63
- }
64
- $this->register_license_hooks();
65
- }
66
- }
67
-
68
- /**
69
- * Register license hooks for the themeisle products
70
- */
71
- public function register_license_hooks() {
72
- add_action( 'admin_init', array( $this, 'register_settings' ) );
73
- add_action( 'admin_init', array( $this, 'activate_license' ) );
74
- add_action( 'admin_init', array( $this, 'product_valid' ), 99999999 );
75
- add_action( 'admin_notices', array( $this, 'show_notice' ) );
76
- }
77
-
78
- /**
79
- * @param string $r Update payload.
80
- * @param string $url The api url.
81
- *
82
- * @return mixed List of themes to check for update.
83
- */
84
- function disable_wporg_update( $r, $url ) {
85
-
86
- if ( 0 !== strpos( $url, 'https://api.wordpress.org/themes/update-check/' ) ) {
87
- return $r;
88
- }
89
-
90
- // Decode the JSON response
91
- $themes = json_decode( $r['body']['themes'] );
92
-
93
- unset( $themes->themes->{$this->product->get_slug()} );
94
-
95
- // Encode the updated JSON response
96
- $r['body']['themes'] = json_encode( $themes );
97
-
98
- return $r;
99
- }
100
-
101
- /**
102
- * Register the setting for the license of the product
103
- *
104
- * @return bool
105
- */
106
- public function register_settings() {
107
- if ( ! is_admin() ) {
108
- return false;
109
- }
110
- add_settings_field(
111
- $this->product->get_key() . '_license',
112
- $this->product->get_name() . ' license',
113
- array( $this, 'license_view' ),
114
- 'general'
115
- );
116
- }
117
-
118
- /**
119
- * The license view field
120
- */
121
- public function license_view() {
122
- $status = $this->get_license_status();
123
- $value = $this->license_key;
124
-
125
- $activate_string = apply_filters( $this->product->get_key() . '_lc_activate_string', 'Activate' );
126
- $deactivate_string = apply_filters( $this->product->get_key() . '_lc_deactivate_string', 'Deactivate' );
127
- $valid_string = apply_filters( $this->product->get_key() . '_lc_valid_string', 'Valid' );
128
- $invalid_string = apply_filters( $this->product->get_key() . '_lc_invalid_string', 'Invalid' );
129
- $license_message = apply_filters( $this->product->get_key() . '_lc_license_message', 'Enter your license from %s purchase history in order to get %s updates' );
130
-
131
- echo '<p ><input ' . ( ( $status === 'valid' ) ? ( 'style="border:1px solid #7ad03a; "' ) : '' ) . ' type="text" id="' . $this->product->get_key() . '_license" name="' . $this->product->get_key() . '_license" value="' . $value . '" /><a ' . ( ( $status === 'valid' ) ? ( 'style="color:#fff;background: #7ad03a; display: inline-block;text-decoration: none;font-size: 13px;line-height: 26px;height: 26px; margin-left:5px; padding: 0 10px 1px; -webkit-border-radius: 3px;border-radius: 3px; ">' . $valid_string ) : ( 'style="color:#fff;background: #dd3d36; display: inline-block;text-decoration: none;font-size: 13px;line-height: 26px;height: 26px; margin-left:5px; padding: 0 10px 1px; -webkit-border-radius: 3px;border-radius: 3px; ">' . $invalid_string ) ) . ' </a>&nbsp;&nbsp;&nbsp;<button name="' . $this->product->get_key() . '_btn_trigger" ' . ( ( $status === 'valid' ) ? ( ' class="button button-primary">' . $deactivate_string ) : ( ' class="button button-primary" value="yes" type="submit" >' . $activate_string ) ) . ' </button></p><p class="description">' . sprintf( $license_message, '<a href="' . $this->product->get_store_url() . '">' . $this->product->get_store_name() . '</a> ', $this->product->get_type() ) . '</p>';
132
-
133
- }
134
-
135
- /**
136
- * Return the license status.
137
- *
138
- * @return string The License status.
139
- */
140
- public function get_license_status() {
141
- $license_data = get_option( $this->product->get_key() . '_license_data', '' );
142
- if ( $license_data !== '' ) {
143
- return isset( $license_data->license ) ? $license_data->license : get_option( $this->product->get_key() . '_license_status', 'not_active' );
144
- } else {
145
- return get_option( $this->product->get_key() . '_license_status', 'not_active' );
146
- }
147
-
148
- }
149
-
150
- /**
151
- * Check if the license is active or not
152
- *
153
- * @return bool
154
- */
155
- public function check_activation() {
156
- $license_data = get_option( $this->product->get_key() . '_license_data', '' );
157
- if ( $license_data !== '' ) {
158
- return isset( $license_data->error ) ? ( $license_data->error == 'no_activations_left' ) : false;
159
- }
160
-
161
- return false;
162
- }
163
-
164
- /**
165
- * Check if the license is about to expire in the next month
166
- *
167
- * @return bool
168
- */
169
- function check_expiration() {
170
- $license_data = get_option( $this->product->get_key() . '_license_data', '' );
171
- if ( $license_data !== '' ) {
172
- if ( isset( $license_data->expires ) ) {
173
- if ( strtotime( $license_data->expires ) - time() < 30 * 24 * 3600 ) {
174
- return true;
175
- }
176
- }
177
- }
178
-
179
- return false;
180
- }
181
-
182
- /**
183
- * Return the renew url from the store used
184
- *
185
- * @return string The renew url.
186
- */
187
- function renew_url() {
188
- $license_data = get_option( $this->product->get_key() . '_license_data', '' );
189
- if ( $license_data !== '' ) {
190
- if ( isset( $license_data->download_id ) && isset( $license_data->key ) ) {
191
- return $this->product->get_store_url() . '/checkout/?edd_license_key=' . $license_data->key . '&download_id=' . $license_data->download_id;
192
- }
193
- }
194
-
195
- return $this->product->get_store_url();
196
- }
197
-
198
- /**
199
- * Check if we hide the notificatin nag or not
200
- *
201
- * @param string $hide The notification to hide.
202
- *
203
- * @return bool Either hide them or not.
204
- */
205
- function check_hide( $hide ) {
206
- if ( isset( $_GET[ $this->product->get_key() . '_hide_' . $hide ] ) ) {
207
- if ( $_GET[ $this->product->get_key() . '_hide_' . $hide ] === 'yes' ) {
208
- update_option( $this->product->get_key() . '_hide_' . $hide, 'yes' );
209
-
210
- return false;
211
- }
212
- } else {
213
- $license = get_option( $this->product->get_key() . '_hide_' . $hide, '' );
214
- if ( $license === 'yes' ) {
215
- return false;
216
- }
217
- }
218
-
219
- return true;
220
- }
221
-
222
- /**
223
- * Show the admin notice regarding the license status
224
- *
225
- * @return bool
226
- */
227
- function show_notice() {
228
- if ( ! is_admin() ) {
229
- return false;
230
- }
231
- $status = $this->get_license_status();
232
- $no_activations_string = apply_filters(
233
- $this->product->get_key() . '_lc_no_activations_string', 'No activations left for %s !!!. You need to
234
- upgrade your plan in order to use %s on more
235
- websites. Please ask the %s
236
- Staff for more details.'
237
- );
238
- $no_valid_string = apply_filters(
239
- $this->product->get_key() . '_lc_no_valid_string', 'In order to benefit from updates and support for %s , please add
240
- your license code from your <a href="%s" target="_blank">purchase history</a> and validate it <a
241
- href="%s">here</a> '
242
- );
243
- $expiration_string = apply_filters(
244
- $this->product->get_key() . '_lc_expiration_string', 'Your license is about to expire
245
- for %s. You can go to %s and renew it '
246
- );
247
- $hide_notice_string = apply_filters( $this->product->get_key() . '_lc_hide_notice_string', 'Hide Notice' );
248
- if ( $status != 'valid' ) {
249
- if ( $this->check_activation() ) {
250
- if ( $this->check_hide( 'activation' ) ) {
251
- ?>
252
- <div class="error">
253
- <p><strong>
254
- <?php
255
- echo sprintf(
256
- $no_activations_string, $this->product->get_name(), $this->product->get_name(), '<a href="' . $this->product->get_store_url() . '"
257
- target="_blank">' . $this->product->get_store_name() . '</a>'
258
- );
259
- ?>
260
- </strong> | <a
261
- href="<?php echo add_query_arg( $this->product->get_key() . '_activation', 'yes' ); ?> "><?php echo $hide_notice_string; ?></a>
262
- </p>
263
- </div>
264
- <?php
265
- return false;
266
- }
267
- }
268
- ?>
269
- <?php if ( $this->check_hide( 'valid' ) ) : ?>
270
- <div class="error">
271
- <p>
272
- <strong><?php echo sprintf( $no_valid_string, $this->product->get_name() . ' ' . $this->product->get_type(), $this->product->get_store_url(), admin_url( 'options-general.php' ) . '#' . $this->product->get_key() ); ?> </strong>|
273
- <a
274
- href="<?php echo add_query_arg( $this->product->get_key() . '_hide_valid', 'yes' ); ?> "><?php echo $hide_notice_string; ?></a>
275
- </p>
276
- </div>
277
- <?php endif; ?>
278
- <?php
279
- } else {
280
- if ( $this->check_expiration() ) {
281
- if ( $this->check_hide( 'expiration' ) ) {
282
- ?>
283
- <div class="update-nag">
284
- <p>
285
- <strong>
286
- <?php
287
- echo sprintf(
288
- $expiration_string, $this->product->get_name() . ' ' . $this->product->get_type(), '<a
289
- href="' . $this->renew_url() . '"
290
- target="_blank">' . $this->product->get_store_name() . '</a>'
291
- );
292
- ?>
293
- </strong> |
294
- <a
295
- href="<?php echo add_query_arg( $this->product->get_key() . '_hide_expiration', 'yes' ); ?> "><?php echo $hide_notice_string; ?></a>
296
- </p>
297
- </div>
298
- <?php
299
- }
300
- }
301
- }
302
- }
303
-
304
- /**
305
- * Run the license check call
306
- */
307
- public function product_valid() {
308
- if ( false === ( $license = get_transient( $this->product->get_key() . '_license_data' ) ) ) {
309
- $license = $this->check_license();
310
- set_transient( $this->product->get_key() . '_license_data', $license, 12 * HOUR_IN_SECONDS );
311
- update_option( $this->product->get_key() . '_license_data', $license );
312
- }
313
-
314
- }
315
-
316
- /**
317
- * Increment the failed checks
318
- */
319
- private function increment_failed_checks() {
320
- $this->failed_checks ++;
321
- update_option( $this->product->get_key() . '_failed_checks', $this->failed_checks );
322
- }
323
-
324
- /**
325
- * Reset the failed checks
326
- */
327
- private function reset_failed_checks() {
328
- $this->failed_checks = 1;
329
- update_option( $this->product->get_key() . '_failed_checks', $this->failed_checks );
330
- }
331
-
332
- /**
333
- * Check the license status
334
- *
335
- * @return object The license data.
336
- */
337
- public function check_license() {
338
- $status = $this->get_license_status();
339
- if ( $status == 'not_active' ) {
340
- $license_data = new stdClass();
341
- $license_data->license = 'not_active';
342
-
343
- return $license_data;
344
- }
345
- $license = trim( $this->license_key );
346
- $api_params = array(
347
- 'edd_action' => 'check_license',
348
- 'license' => $license,
349
- 'item_name' => rawurlencode( $this->product->get_name() ),
350
- 'url' => rawurlencode( home_url() ),
351
- );
352
- // Call the custom API.
353
- $response = wp_remote_get(
354
- add_query_arg( $api_params, $this->product->get_store_url() ), array(
355
- 'timeout' => 15,
356
- 'sslverify' => false,
357
- )
358
- );
359
- if ( is_wp_error( $response ) ) {
360
- $license_data = new stdClass();
361
- $license_data->license = 'valid';
362
-
363
- } else {
364
- $license_data = json_decode( wp_remote_retrieve_body( $response ) );
365
- if ( ! is_object( $license_data ) ) {
366
- $license_data = new stdClass();
367
- $license_data->license = 'valid';
368
- }
369
- }
370
- $license_old = get_option( $this->product->get_key() . '_license_data', '' );
371
- if ( $license_old->license == 'valid' && ( $license_data->license != $license_old->license ) ) {
372
- $this->increment_failed_checks();
373
- } else {
374
- $this->reset_failed_checks();
375
- }
376
-
377
- if ( $this->failed_checks <= self::$max_failed ) {
378
- return $license_old;
379
- }
380
-
381
- if ( isset( $license_old->hide_valid ) ) {
382
- $license_data->hide_valid = true;
383
- }
384
-
385
- if ( ! isset( $license_data->key ) ) {
386
- $license_data->key = isset( $license_old->key ) ? $license_old->key : '';
387
- }
388
-
389
- if ( isset( $license_old->hide_expiration ) ) {
390
- $license_data->hide_expiration = true;
391
- }
392
-
393
- if ( isset( $license_old->hide_activation ) ) {
394
- $license_data->hide_activation = true;
395
- }
396
-
397
- return $license_data;
398
-
399
- }
400
-
401
- /**
402
- * Activate the license remotely
403
- */
404
- function activate_license() {
405
- // listen for our activate button to be clicked
406
- if ( isset( $_POST[ $this->product->get_key() . '_btn_trigger' ] ) ) {
407
- $status = $this->get_license_status();
408
- // retrieve the license from the database
409
- $license = $_POST[ $this->product->get_key() . '_license' ];
410
- $api_params = array(
411
- 'license' => $license,
412
- 'item_name' => rawurlencode( $this->product->get_name() ),
413
- 'url' => rawurlencode( home_url() ),
414
- );
415
- if ( $status != 'valid' ) {
416
- // data to send in our API request
417
- $api_params['edd_action'] = 'activate_license';
418
- } else {
419
- $api_params['edd_action'] = 'deactivate_license';
420
- }
421
- // Call the custom API.
422
- $response = wp_remote_get( add_query_arg( $api_params, $this->product->get_store_url() ) );
423
- // make sure the response came back okay
424
- if ( is_wp_error( $response ) ) {
425
- $license_data = new stdClass();
426
- $license_data->license = ( $status != 'valid' ) ? 'valid' : 'invalid';
427
-
428
- } else {
429
- $license_data = json_decode( wp_remote_retrieve_body( $response ) );
430
- if ( ! is_object( $license_data ) ) {
431
- $license_data = new stdClass();
432
- $license_data->license = ( $status != 'valid' ) ? 'valid' : 'invalid';
433
- }
434
- }
435
- if ( ! isset( $license_data->key ) ) {
436
- $license_data->key = $license;
437
- }
438
- if ( $license_data->license == 'valid' ) {
439
- $this->reset_failed_checks();
440
- }
441
-
442
- if ( isset( $license_data->plan ) ) {
443
- update_option( $this->product->get_key() . '_license_plan', $license_data->plan );
444
- }
445
-
446
- update_option( $this->product->get_key() . '_license_data', $license_data );
447
- delete_transient( $this->product->get_key() . '_license_data' );
448
- set_transient( $this->product->get_key() . '_license_data', $license_data, 12 * HOUR_IN_SECONDS );
449
-
450
- }
451
- }
452
-
453
- /**
454
- * Enable the license system
455
- */
456
- public function enable() {
457
- if ( $this->product->get_type() == 'plugin' ) {
458
- add_filter(
459
- 'pre_set_site_transient_update_plugins', array(
460
- $this,
461
- 'pre_set_site_transient_update_plugins_filter',
462
- )
463
- );
464
- add_filter( 'plugins_api', array( $this, 'plugins_api_filter' ), 10, 3 );
465
- add_filter( 'http_request_args', array( $this, 'http_request_args' ), 10, 2 );
466
- }
467
- if ( $this->product->get_type() == 'theme' ) {
468
- add_filter( 'site_transient_update_themes', array( &$this, 'theme_update_transient' ) );
469
- add_filter( 'delete_site_transient_update_themes', array( &$this, 'delete_theme_update_transient' ) );
470
- add_action( 'load-update-core.php', array( &$this, 'delete_theme_update_transient' ) );
471
- add_action( 'load-themes.php', array( &$this, 'delete_theme_update_transient' ) );
472
- add_action( 'load-themes.php', array( &$this, 'load_themes_screen' ) );
473
- add_filter( 'http_request_args', array( $this, 'disable_wporg_update' ), 5, 2 );
474
-
475
- }
476
-
477
- }
478
-
479
- /**
480
- * Load the Themes screen
481
- */
482
- function load_themes_screen() {
483
- add_thickbox();
484
- add_action( 'admin_notices', array( &$this, 'update_nag' ) );
485
- }
486
-
487
- /**
488
- * Alter the nag for themes update
489
- */
490
- function update_nag() {
491
- $theme = wp_get_theme( $this->product->get_slug() );
492
- $api_response = get_transient( $this->product_key );
493
- if ( false === $api_response ) {
494
- return;
495
- }
496
- $update_url = wp_nonce_url( 'update.php?action=upgrade-theme&amp;theme=' . urlencode( $this->product->get_slug() ), 'upgrade-theme_' . $this->product->get_slug() );
497
- $update_message = apply_filters( 'themeisle_sdk_license_update_message', 'Updating this theme will lose any customizations you have made. Cancel to stop, OK to update.' );
498
- $update_onclick = ' onclick="if ( confirm(\'' . esc_js( $update_message ) . '\') ) {return true;}return false;"';
499
- if ( version_compare( $this->product->get_version(), $api_response->new_version, '<' ) ) {
500
- echo '<div id="update-nag">';
501
- printf(
502
- '<strong>%1$s %2$s</strong> is available. <a href="%3$s" class="thickbox" title="%4s">Check out what\'s new</a> or <a href="%5$s"%6$s>update now</a>.',
503
- $theme->get( 'Name' ),
504
- $api_response->new_version,
505
- '#TB_inline?width=640&amp;inlineId=' . $this->product->get_version() . '_changelog',
506
- $theme->get( 'Name' ),
507
- $update_url,
508
- $update_onclick
509
- );
510
- echo '</div>';
511
- echo '<div id="' . $this->product->get_slug() . '_' . 'changelog" style="display:none;">';
512
- echo wpautop( $api_response->sections['changelog'] );
513
- echo '</div>';
514
- }
515
- }
516
-
517
- /**
518
- * @param mixed $value The transient data.
519
- *
520
- * @return mixed
521
- */
522
- function theme_update_transient( $value ) {
523
- $update_data = $this->check_for_update();
524
- if ( $update_data ) {
525
- $value->response[ $this->product->get_slug() ] = $update_data;
526
- }
527
-
528
- return $value;
529
- }
530
-
531
- /**
532
- * Delete the update transient
533
- */
534
- function delete_theme_update_transient() {
535
- delete_transient( $this->product_key );
536
- }
537
-
538
- /**
539
- * Check for updates
540
- *
541
- * @return array|bool Either the update data or false in case of failure
542
- */
543
- function check_for_update() {
544
- $theme = wp_get_theme( $this->product->get_slug() );
545
- $update_data = get_transient( $this->product_key );
546
- if ( false === $update_data ) {
547
- $failed = false;
548
- if ( empty( $this->license_key ) ) {
549
- return false;
550
- }
551
- $api_params = array(
552
- 'edd_action' => 'get_version',
553
- 'version' => $this->product->get_version(),
554
- 'license' => $this->license_key,
555
- 'name' => $this->product->get_name(),
556
- 'slug' => $this->product->get_slug(),
557
- 'author' => $this->product->get_store_name(),
558
- 'url' => rawurlencode( home_url() ),
559
- );
560
- $response = wp_remote_post(
561
- $this->product->get_store_url(), array(
562
- 'timeout' => 15,
563
- 'sslverify' => false,
564
- 'body' => $api_params,
565
- )
566
- );
567
- // make sure the response was successful
568
- if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) ) {
569
- $failed = true;
570
- }
571
- $update_data = json_decode( wp_remote_retrieve_body( $response ) );
572
- if ( ! is_object( $update_data ) ) {
573
- $failed = true;
574
- }
575
- // if the response failed, try again in 30 minutes
576
- if ( $failed ) {
577
- $data = new stdClass;
578
- $data->new_version = $this->product->get_version();
579
- set_transient( $this->product_key, $data, strtotime( '+30 minutes' ) );
580
-
581
- return false;
582
- }
583
- // if the status is 'ok', return the update arguments
584
- if ( ! $failed ) {
585
- $update_data->sections = maybe_unserialize( $update_data->sections );
586
- set_transient( $this->product_key, $update_data, strtotime( '+12 hours' ) );
587
- }
588
- }
589
- if ( version_compare( $this->product->get_version(), $update_data->new_version, '>=' ) ) {
590
- return false;
591
- }
592
-
593
- return (array) $update_data;
594
- }
595
-
596
- /**
597
- * Check for Updates at the defined API endpoint and modify the update array.
598
- *
599
- * This function dives into the update API just when WordPress creates its update array,
600
- * then adds a custom API call and injects the custom plugin data retrieved from the API.
601
- * It is reassembled from parts of the native WordPress plugin update code.
602
- * See wp-includes/update.php line 121 for the original wp_update_plugins() function.
603
- *
604
- * @uses api_request()
605
- *
606
- * @param array $_transient_data Update array build by WordPress.
607
- *
608
- * @return array Modified update array with custom plugin data.
609
- */
610
- public function pre_set_site_transient_update_plugins_filter( $_transient_data ) {
611
- if ( empty( $_transient_data ) || ! $this->do_check ) {
612
- $this->do_check = true;
613
-
614
- return $_transient_data;
615
- }
616
- $api_response = $this->api_request();
617
- if ( false !== $api_response && is_object( $api_response ) && isset( $api_response->new_version ) ) {
618
- if ( version_compare( $this->product->get_version(), $api_response->new_version, '<' ) ) {
619
- $_transient_data->response[ $this->product->get_slug() . '/' . $this->product->get_file() ] = $api_response;
620
- }
621
- }
622
-
623
- return $_transient_data;
624
- }
625
-
626
- /**
627
- * Calls the API and, if successfull, returns the object delivered by the API.
628
- *
629
- * @uses get_bloginfo()
630
- * @uses wp_remote_post()
631
- * @uses is_wp_error()
632
- *
633
- * @param string $_action The requested action.
634
- * @param array $_data Parameters for the API action.
635
- *
636
- * @return false||object
637
- */
638
- private function api_request( $_action = '', $_data = '' ) {
639
- if ( empty( $this->license_key ) ) {
640
- return;
641
- }
642
- $api_params = array(
643
- 'edd_action' => 'get_version',
644
- 'license' => $this->license_key,
645
- 'name' => rawurlencode( $this->product->get_name() ),
646
- 'slug' => rawurlencode( $this->product->get_slug() ),
647
- 'author' => $this->product->get_store_name(),
648
- 'url' => rawurlencode( home_url() ),
649
- );
650
- $request = wp_remote_post(
651
- $this->product->get_store_url(), array(
652
- 'timeout' => 15,
653
- 'sslverify' => false,
654
- 'body' => $api_params,
655
- )
656
- );
657
- if ( ! is_wp_error( $request ) ) :
658
- $request = json_decode( wp_remote_retrieve_body( $request ) );
659
- if ( $request && isset( $request->sections ) ) {
660
- $request->sections = maybe_unserialize( $request->sections );
661
- }
662
-
663
- return $request;
664
- else :
665
- return false;
666
- endif;
667
- }
668
-
669
- /**
670
- * Updates information on the "View version x.x details" page with custom data.
671
- *
672
- * @uses api_request()
673
- *
674
- * @param mixed $_data Plugin data.
675
- * @param string $_action Action to send.
676
- * @param object $_args Arguments to use.
677
- *
678
- * @return object $_data
679
- */
680
- public function plugins_api_filter( $_data, $_action = '', $_args = null ) {
681
- if ( ( $_action != 'plugin_information' ) || ! isset( $_args->slug ) || ( $_args->slug != $this->product->get_slug() ) ) {
682
- return $_data;
683
- }
684
- $api_response = $this->api_request();
685
- if ( false !== $api_response ) {
686
- $_data = $api_response;
687
- }
688
-
689
- return $_data;
690
- }
691
-
692
- /**
693
- * Disable SSL verification in order to prevent download update failures
694
- *
695
- * @param array $args Http args.
696
- * @param string $url Url to check.
697
- *
698
- * @return object $array
699
- */
700
- function http_request_args( $args, $url ) {
701
- // If it is an https request and we are performing a package download, disable ssl verification
702
- if ( strpos( $url, 'https://' ) !== false && strpos( $url, 'edd_action=package_download' ) ) {
703
- $args['sslverify'] = false;
704
- }
705
-
706
- return $args;
707
- }
708
-
709
- }
710
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-loader.php DELETED
@@ -1,88 +0,0 @@
1
- <?php
2
- /**
3
- * The main loader class for ThemeIsle SDK
4
- *
5
- * @package ThemeIsleSDK
6
- * @subpackage Loader
7
- * @copyright Copyright (c) 2017, Marius Cristea
8
- * @license http://opensource.org/licenses/gpl-3.0.php GNU Public License
9
- * @since 1.0.0
10
- */
11
- // Exit if accessed directly.
12
- if ( ! defined( 'ABSPATH' ) ) {
13
- exit;
14
- }
15
- if ( ! class_exists( 'ThemeIsle_SDK_Loader' ) ) :
16
- /**
17
- * Singleton loader for ThemeIsle SDK.
18
- */
19
- final class ThemeIsle_SDK_Loader {
20
- /**
21
- * @var ThemeIsle_SDK_Loader instance The singleton instance
22
- */
23
- private static $instance;
24
- /**
25
- * @var string $version The class version.
26
- */
27
- private static $version = '1.0.0';
28
- /**
29
- * @var array The products which use the SDK.
30
- */
31
- private static $products;
32
-
33
- /**
34
- * Register product into SDK.
35
- *
36
- * @param string $basefile The product basefile.
37
- *
38
- * @return ThemeIsle_SDK_Loader The singleton object.
39
- */
40
- public static function init_product( $basefile ) {
41
-
42
- if ( ! isset( self::$instance ) && ! ( self::$instance instanceof ThemeIsle_SDK_Loader ) ) {
43
- self::$instance = new ThemeIsle_SDK_Loader;
44
-
45
- }
46
- $product_object = new ThemeIsle_SDK_Product( $basefile );
47
- self::$products[ $product_object->get_slug() ] = $product_object;
48
-
49
- $notifications = array();
50
- // Based on the WordPress Available file header we enable the logger or not.
51
- if ( ! $product_object->is_wordpress_available() ) {
52
- $licenser = new ThemeIsle_SDK_Licenser( $product_object );
53
- $licenser->enable();
54
- }
55
-
56
- $logger = new ThemeIsle_SDK_Logger( $product_object );
57
- if ( $product_object->is_logger_active() ) {
58
- $logger->enable();
59
- } else {
60
- $notifications[] = $logger;
61
- }
62
-
63
- $feedback = new ThemeIsle_SDK_Feedback_Factory( $product_object, $product_object->get_feedback_types() );
64
-
65
- $instances = $feedback->get_instances();
66
- if ( array_key_exists( 'review', $instances ) ) {
67
- $notifications[] = $instances['review'];
68
- }
69
- new ThemeIsle_SDK_Notification_Manager( $product_object, $notifications );
70
- if ( ! $product_object->is_external_author() ) {
71
- new ThemeIsle_SDK_Widgets_Factory( $product_object, $product_object->get_widget_types() );
72
- }
73
-
74
- return self::$instance;
75
- }
76
-
77
- /**
78
- * Get all products using the SDK.
79
- *
80
- * @return array Products available.
81
- */
82
- public static function get_products() {
83
- return self::$products;
84
- }
85
-
86
-
87
- }
88
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-logger.php DELETED
@@ -1,211 +0,0 @@
1
- <?php
2
- /**
3
- * The main loader class for ThemeIsle SDK
4
- *
5
- * @package ThemeIsleSDK
6
- * @subpackage Logger
7
- * @copyright Copyright (c) 2017, Marius Cristea
8
- * @license http://opensource.org/licenses/gpl-3.0.php GNU Public License
9
- * @since 1.0.0
10
- */
11
- if ( ! class_exists( 'ThemeIsle_SDK_Logger' ) ) :
12
- /**
13
- * Class ThemeIsle_SDK_Logger
14
- *
15
- * Send the statistics to the Themeisle Endpoint
16
- */
17
- /**
18
- * Class ThemeIsle_SDK_Logger
19
- */
20
- class ThemeIsle_SDK_Logger {
21
-
22
- /**
23
- * @var string $logging_url Url where to send the logs
24
- */
25
- private $logging_url = 'http://log.themeisle.com/wp-json/v1/logs/';
26
-
27
- /**
28
- * @var ThemeIsle_SDK_Product $product Themeisle Product.
29
- */
30
- private $product;
31
-
32
- /**
33
- * @var string $product_cron Cron name handler
34
- */
35
- private $product_cron;
36
-
37
- /**
38
- * @var string $heading The heading of the modal
39
- */
40
- private $heading = 'Do you enjoy {product}? Become a contributor by opting in to our anonymous data tracking. We guarantee no sensitive data is collected.';
41
-
42
- /**
43
- * @var string $button_submit The text of the submit button
44
- */
45
- private $button_submit = 'Sure, I would love to help.';
46
-
47
- /**
48
- * @var string $button_cancel The text of the cancel button
49
- */
50
- private $button_cancel = 'No, thanks.';
51
-
52
- /**
53
- * ThemeIsle_SDK_Logger constructor.
54
- *
55
- * @param ThemeIsle_SDK_Product $product_object Product Object.
56
- */
57
- public function __construct( $product_object ) {
58
- if ( $product_object instanceof ThemeIsle_SDK_Product ) {
59
- $this->product = $product_object;
60
- $this->product_cron = $product_object->get_key() . '_log_activity';
61
- }
62
- add_action( 'wp_ajax_' . $this->product->get_key() . __CLASS__, array( $this, 'dismiss' ) );
63
- }
64
-
65
-
66
- /**
67
- * Start the cron to send the log. It will randomize the interval in order to not send all the logs at the same time.
68
- */
69
- public function enable() {
70
- if ( ! wp_next_scheduled( $this->product_cron ) ) {
71
- wp_schedule_single_event( time() + ( rand( 15, 24 ) * 3600 ), $this->product_cron );
72
- }
73
- add_action( $this->product_cron, array( $this, 'send_log' ) );
74
- }
75
-
76
- /**
77
- * Send the statistics to the api endpoint
78
- */
79
- public function send_log() {
80
- wp_remote_post(
81
- $this->logging_url, array(
82
- 'method' => 'POST',
83
- 'timeout' => 3,
84
- 'redirection' => 5,
85
- 'headers' => array(
86
- 'X-ThemeIsle-Event' => 'log_site',
87
- ),
88
- 'body' => array(
89
- 'site' => get_site_url(),
90
- 'slug' => $this->product->get_slug(),
91
- 'version' => $this->product->get_version(),
92
- 'data' => apply_filters( $this->product->get_key() . '_logger_data', array() ),
93
- ),
94
- )
95
- );
96
- }
97
-
98
- /**
99
- * Dismiss the notification
100
- */
101
- function dismiss() {
102
- check_ajax_referer( (string) __CLASS__, 'nonce' );
103
-
104
- $flag = intval( $_POST['enable'] ) === 1;
105
- update_option( $this->product->logger_option, ( $flag ? 'yes' : 'no' ) );
106
-
107
- if ( true === $flag ) {
108
- $this->enable();
109
- }
110
- }
111
-
112
- /**
113
- * Shows the notification
114
- */
115
- function show_notification() {
116
- $show = $this->product->is_logger_active();
117
- $checked = get_option( $this->product->logger_option, '' );
118
- if ( ! $show && $checked == '' ) {
119
- add_action( 'admin_notices', array( $this, 'admin_notices' ) );
120
-
121
- return true;
122
- }
123
-
124
- return false;
125
- }
126
-
127
- /**
128
- * Shows the admin notice
129
- */
130
- function admin_notices() {
131
- $id = $this->product->get_key() . '_logger';
132
-
133
- $this->add_media( $this->product->get_key() );
134
-
135
- echo '<div class="notice notice-success is-dismissible " id="' . $this->product->get_key() . '-logger-notification" ><div id="' . $id . '" class="themeisle-logger-box">' . $this->get_html( $this->product->get_key() ) . '</div></div>';
136
- }
137
-
138
- /**
139
- * Generates the HTML
140
- *
141
- * @param string $key The product key.
142
- */
143
- function get_html( $key ) {
144
- $heading = apply_filters( $this->product->get_key() . '_logger_heading', $this->heading );
145
- $heading = str_replace(
146
- array( '{product}' ), array(
147
- trim( str_replace( 'Lite', '', $this->product->get_name() ) ),
148
- ),
149
- $heading
150
- );
151
- $button_submit = apply_filters( $this->product->get_key() . '_logger_button_submit', $this->button_submit );
152
- $button_cancel = apply_filters( $this->product->get_key() . '_logger_button_cancel', $this->button_cancel );
153
-
154
- return '<div >'
155
- . '<p>' . $heading . '</p>'
156
- . '<div class="actions">'
157
- . get_submit_button(
158
- $button_submit, 'primary ' . $this->product->get_key() . '-ti-logger', $this->product->get_key() . 'ti-logger-yes', false, array(
159
- 'data-ti-log-enable' => 1,
160
- )
161
- )
162
- . get_submit_button(
163
- $button_cancel, 'secondary ' . $this->product->get_key() . '-ti-logger', $this->product->get_key() . 'ti-logger-no', false, array(
164
- 'data-ti-log-enable' => 0,
165
- )
166
- )
167
- . '</div></div>';
168
- }
169
-
170
- /**
171
- * Loads the js
172
- *
173
- * @param string $key The product key.
174
- */
175
- function add_media( $key ) {
176
- ?>
177
- <style type="text/css">
178
- #<?php echo $key; ?>-logger-notification {
179
- padding-bottom: 5px;
180
- }
181
-
182
- #<?php echo $key; ?>-logger-notification .button {
183
- margin-left: 5px;
184
- }
185
- </style>
186
- <script type="text/javascript" id="<?php echo $key; ?>ti-logger-js">
187
- (function ($) {
188
- $(document).ready(function () {
189
- $('.<?php echo $key; ?>-ti-logger').on('click', function (e) {
190
-
191
- $.ajax({
192
- url: ajaxurl,
193
- method: "post",
194
- data: {
195
- 'nonce': '<?php echo wp_create_nonce( (string) __CLASS__ ); ?>',
196
- 'action': '<?php echo $this->product->get_key() . __CLASS__; ?>',
197
- 'enable': $(this).attr('data-ti-log-enable')
198
- },
199
- success: function () {
200
- $('#<?php echo $key; ?>-logger-notification').hide();
201
- }
202
- });
203
- });
204
- });
205
- })(jQuery);
206
- </script>
207
- <?php
208
- }
209
-
210
- }
211
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-notification-manager.php DELETED
@@ -1,119 +0,0 @@
1
- <?php
2
- /**
3
- * The notification manager class for ThemeIsle SDK
4
- *
5
- * @package ThemeIsleSDK
6
- * @subpackage Notification
7
- * @copyright Copyright (c) 2017, Marius Cristea
8
- * @license http://opensource.org/licenses/gpl-3.0.php GNU Public License
9
- * @since 1.0.0
10
- */
11
- // Exit if accessed directly.
12
- if ( ! defined( 'ABSPATH' ) ) {
13
- exit;
14
- }
15
- if ( ! class_exists( 'ThemeIsle_SDK_Notification_Manager' ) ) :
16
- /**
17
- * Notification manager model for ThemeIsle SDK.
18
- */
19
- class ThemeIsle_SDK_Notification_Manager {
20
- /**
21
- * Time between notifications.
22
- */
23
- const NOTIFICATION_INTERVAL_HOURS = 100;
24
- /**
25
- * @var array Notifications for the current product.
26
- */
27
- private $notifications = array();
28
- /**
29
- * @var ThemeIsle_SDK_Product Current product.
30
- */
31
- private $product;
32
- /**
33
- * @var array ThemeIsle_SDK_Feedback Feedbacks available.
34
- */
35
- private $callbacks = array();
36
-
37
- /**
38
- * ThemeIsle_SDK_Notification_Manager constructor.
39
- *
40
- * @param ThemeIsle_SDK_Product $product_object Product Object.
41
- * @param array $callbacks the objects that will be called when a notification is due.
42
- */
43
- public function __construct( $product_object, $callbacks ) {
44
- $this->product = $product_object;
45
- $this->callbacks = $callbacks;
46
- $this->setup_hooks();
47
- }
48
-
49
- /**
50
- * Setup the notifications.
51
- */
52
- function setup_notifications() {
53
- if ( ! current_user_can( 'manage_options' ) ) {
54
- return;
55
- }
56
- // Load the notifications only if we have it installed after the required interval.
57
- if ( ( time() - $this->product->get_install_time() ) > self::NOTIFICATION_INTERVAL_HOURS * HOUR_IN_SECONDS ) {
58
- if ( $this->product instanceof ThemeIsle_SDK_Product && $this->callbacks && is_array( $this->callbacks ) ) {
59
- foreach ( $this->callbacks as $instance ) {
60
- $this->notifications[ $this->product->get_key() . get_class( $instance ) ] = $instance;
61
- }
62
- }
63
- }
64
- }
65
-
66
- /**
67
- * Setup the internal hooks
68
- */
69
- private function setup_hooks() {
70
- add_action( 'admin_head', array( $this, 'show_notification' ) );
71
- add_action( 'admin_init', array( $this, 'setup_notifications' ) );
72
- }
73
-
74
- /**
75
- * Shows the notification
76
- */
77
- function show_notification() {
78
-
79
- $hidden = get_option( 'themeisle_sdk_notification_hidden', array() );
80
- $instances = $this->notifications;
81
- if ( empty( $instances ) ) {
82
- return;
83
- }
84
-
85
- // Get timestamp of last notification.
86
- $old = 0;
87
- if ( ! empty( $hidden ) ) {
88
- $old = $hidden[ count( $hidden ) - 1 ]['time'];
89
- }
90
- // Check if the current one is expired.
91
- if ( ( time() - $old ) > self::NOTIFICATION_INTERVAL_HOURS * HOUR_IN_SECONDS ) {
92
- // Get hidden notifications key.
93
- $hidden_ones = wp_list_pluck( $hidden, 'key' );
94
- // Get the non-hidden notifications.
95
- $available_notifications = array_diff( array_keys( $instances ), $hidden_ones );
96
- if ( empty( $available_notifications ) ) {
97
- return;
98
- }
99
- // Get the first notification available.
100
- $new_one = reset( $available_notifications );
101
-
102
- $instance = $instances[ $new_one ];
103
- $hidden[] = array(
104
- 'time' => time(),
105
- 'key' => $new_one,
106
- );
107
- update_option( 'themeisle_sdk_notification_hidden', $hidden );
108
- } else {
109
- $key = $hidden[ count( $hidden ) - 1 ]['key'];
110
- if ( ! isset( $this->notifications[ $key ] ) ) {
111
- return;
112
- } else {
113
- $instance = $this->notifications[ $key ];
114
- }
115
- }
116
- $instance->show_notification();
117
- }
118
- }
119
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-product.php DELETED
@@ -1,401 +0,0 @@
1
- <?php
2
- /**
3
- * The product model class for ThemeIsle SDK
4
- *
5
- * @package ThemeIsleSDK
6
- * @subpackage Product
7
- * @copyright Copyright (c) 2017, Marius Cristea
8
- * @license http://opensource.org/licenses/gpl-3.0.php GNU Public License
9
- * @since 1.0.0
10
- */
11
- // Exit if accessed directly.
12
- if ( ! defined( 'ABSPATH' ) ) {
13
- exit;
14
- }
15
- if ( ! class_exists( 'ThemeIsle_SDK_Product' ) ) :
16
- /**
17
- * Product model for ThemeIsle SDK.
18
- */
19
- class ThemeIsle_SDK_Product {
20
- /**
21
- * @var string $slug THe product slug.
22
- */
23
- private $slug;
24
- /**
25
- * @var string $basefile The file with headers.
26
- */
27
- private $basefile;
28
- /**
29
- * @var string $type The product type ( plugin | theme ).
30
- */
31
- private $type;
32
- /**
33
- * @var string $file The file name.
34
- */
35
- private $file;
36
- /**
37
- * @var string $name The product name.
38
- */
39
- private $name;
40
- /**
41
- * @var string $key The product ready key.
42
- */
43
- private $key;
44
- /**
45
- * @var string $author_url The url of the author.
46
- */
47
- private $author_url;
48
- /**
49
- * @var string $store_url The store url.
50
- */
51
- private $store_url;
52
- /**
53
- * @var int $install The date of install.
54
- */
55
- private $install;
56
- /**
57
- * @var string $store_name The store name.
58
- */
59
- private $store_name;
60
- /**
61
- * @var array $allowed_authors The allowed authors.
62
- */
63
- private $allowed_authors = array( 'proteusthemes.com', 'anarieldesign.com' );
64
- /**
65
- * @var bool $requires_license Either user needs to activate it with license.
66
- */
67
- private $requires_license;
68
- /**
69
- * @var bool $wordpress_available Either is available on WordPress or not.
70
- */
71
- private $wordpress_available;
72
- /**
73
- * @var string $version The product version.
74
- */
75
- private $version;
76
- /**
77
- * @var string $logger_option Logger option key.
78
- */
79
- public $logger_option;
80
- /**
81
- * @var string $pro_slug Pro slug, if available.
82
- */
83
- public $pro_slug;
84
- /**
85
- * @var string $feedback_types All the feedback types the product supports
86
- */
87
- private $feedback_types = array();
88
-
89
- /**
90
- * @var string $widget_types All the widget types the product supports
91
- */
92
- private $widget_types = array( 'dashboard_blog' );
93
-
94
- /**
95
- * ThemeIsle_SDK_Product constructor.
96
- *
97
- * @param string $basefile Product basefile.
98
- */
99
- public function __construct( $basefile ) {
100
- if ( ! empty( $basefile ) ) {
101
- if ( is_readable( $basefile ) ) {
102
- $this->basefile = $basefile;
103
- $this->setup_from_path();
104
- $this->setup_from_fileheaders();
105
- }
106
- }
107
- $install = get_option( $this->get_key() . '_install', 0 );
108
- if ( $install === 0 ) {
109
- $install = time();
110
- update_option( $this->get_key() . '_install', time() );
111
- }
112
- $this->install = $install;
113
-
114
- $this->logger_option = $this->get_key() . '_logger_flag';
115
-
116
- }
117
-
118
- /**
119
- * Setup props from fileheaders.
120
- */
121
- public function setup_from_fileheaders() {
122
- $file_headers = array(
123
- 'Requires License' => 'Requires License',
124
- 'WordPress Available' => 'WordPress Available',
125
- 'Pro Slug' => 'Pro Slug',
126
- 'Version' => 'Version',
127
- );
128
- if ( $this->type == 'plugin' ) {
129
- $file_headers['Name'] = 'Plugin Name';
130
- $file_headers['AuthorName'] = 'Author';
131
- $file_headers['AuthorURI'] = 'Author URI';
132
- }
133
- if ( $this->type == 'theme' ) {
134
- $file_headers['Name'] = 'Theme Name';
135
- $file_headers['AuthorName'] = 'Author';
136
- $file_headers['AuthorURI'] = 'Author URI';
137
- }
138
- $file_headers = get_file_data( $this->basefile, $file_headers );
139
-
140
- $this->name = $file_headers['Name'];
141
- $this->store_name = $file_headers['AuthorName'];
142
- $this->author_url = $file_headers['AuthorURI'];
143
- $this->store_url = $file_headers['AuthorURI'];
144
- if ( $this->is_external_author() ) {
145
- $this->store_url = 'https://themeisle.com';
146
- $this->store_name = 'ThemeIsle';
147
- }
148
- $this->requires_license = ( $file_headers['Requires License'] == 'yes' ) ? true : false;
149
- $this->wordpress_available = ( $file_headers['WordPress Available'] == 'yes' ) ? true : false;
150
- $this->pro_slug = ! empty( $file_headers['Pro Slug'] ) ? $file_headers['Pro Slug'] : '';
151
- $this->version = $file_headers['Version'];
152
- if ( $this->require_uninstall_feedback() ) {
153
- $this->feedback_types[] = 'deactivate';
154
- }
155
- if ( $this->is_wordpress_available() ) {
156
- $this->feedback_types[] = 'review';
157
- }
158
- }
159
-
160
- /**
161
- * Check if the product is by external author or not.
162
- *
163
- * @return bool Either is external author or no.
164
- */
165
- public function is_external_author() {
166
- foreach ( $this->allowed_authors as $author ) {
167
- if ( strpos( $this->author_url, $author ) !== false ) {
168
- return true;
169
- }
170
- }
171
-
172
- return false;
173
- }
174
-
175
- /**
176
- * The magic var_dump info method.
177
- *
178
- * @return array Debug info.
179
- */
180
- public function __debugInfo() {
181
- return array(
182
- 'name' => $this->name,
183
- 'slug' => $this->slug,
184
- 'version' => $this->version,
185
- 'basefile' => $this->basefile,
186
- 'key' => $this->key,
187
- 'type' => $this->type,
188
- 'store_name' => $this->store_name,
189
- 'store_url' => $this->store_url,
190
- 'wordpress_available' => $this->wordpress_available,
191
- 'requires_license' => $this->requires_license,
192
- );
193
-
194
- }
195
-
196
- /**
197
- * Setup props from path.
198
- */
199
- public function setup_from_path() {
200
- $this->file = basename( $this->basefile );
201
- $dir = dirname( $this->basefile );
202
- $this->slug = basename( $dir );
203
- $exts = explode( '.', $this->basefile );
204
- $ext = $exts[ count( $exts ) - 1 ];
205
- if ( $ext == 'css' ) {
206
- $this->type = 'theme';
207
- }
208
- if ( $ext == 'php' ) {
209
- $this->type = 'plugin';
210
- }
211
- $this->key = self::key_ready_name( $this->slug );
212
- }
213
-
214
- /**
215
- * @param string $string the String to be normalized for cron handler.
216
- *
217
- * @return string $name The normalized string.
218
- */
219
- static function key_ready_name( $string ) {
220
- return str_replace( '-', '_', strtolower( trim( $string ) ) );
221
- }
222
-
223
- /**
224
- * Getter for product name.
225
- *
226
- * @return string The product name.
227
- */
228
- public function get_name() {
229
- return $this->name;
230
- }
231
-
232
- /**
233
- * Getter for product version.
234
- *
235
- * @return string The product version.
236
- */
237
- public function get_version() {
238
- return $this->version;
239
- }
240
-
241
- /**
242
- * If product is available on wordpress.org or not.
243
- *
244
- * @return bool Either is wp available or not.
245
- */
246
- public function is_wordpress_available() {
247
- return $this->wordpress_available;
248
- }
249
-
250
- /**
251
- * Return the product key.
252
- *
253
- * @return string The product key.
254
- */
255
- public function get_key() {
256
- return $this->key;
257
- }
258
-
259
- /**
260
- * Either the product requires license or not.
261
- *
262
- * @return bool Either requires license or not.
263
- */
264
- public function requires_license() {
265
- return $this->requires_license;
266
- }
267
-
268
- /**
269
- * Check if the product is either theme or plugin.
270
- *
271
- * @return string Product type.
272
- */
273
- public function get_type() {
274
- return $this->type;
275
- }
276
-
277
- /**
278
- * Returns the Store name.
279
- *
280
- * @return string Store name.
281
- */
282
- public function get_store_name() {
283
- return $this->store_name;
284
- }
285
-
286
- /**
287
- * Returns the store url.
288
- *
289
- * @return string The store url.
290
- */
291
- public function get_store_url() {
292
- return $this->store_url;
293
- }
294
-
295
- /**
296
- * Returns the product slug.
297
- *
298
- * @return string The product slug.
299
- */
300
- public function get_slug() {
301
- return $this->slug;
302
- }
303
-
304
- /**
305
- * Returns product basefile, which holds the metaheaders.
306
- *
307
- * @return string The product basefile.
308
- */
309
- public function get_basefile() {
310
- return $this->basefile;
311
- }
312
-
313
- /**
314
- * Returns product filename.
315
- *
316
- * @return string The product filename.
317
- */
318
- public function get_file() {
319
- return $this->file;
320
- }
321
-
322
- /**
323
- * Returns feedback types
324
- *
325
- * @return array The feedback types.
326
- */
327
- public function get_feedback_types() {
328
- return apply_filters( $this->get_key() . '_feedback_types', $this->feedback_types );
329
- }
330
-
331
- /**
332
- * Returns widget types
333
- *
334
- * @return array The widget types.
335
- */
336
- public function get_widget_types() {
337
- return apply_filters( $this->get_key() . '_widget_types', $this->widget_types );
338
- }
339
-
340
- /**
341
- * We log the user website and product version.
342
- *
343
- * @return bool Either we log the data or not.
344
- */
345
- public function is_logger_active() {
346
- // If is not available on WordPress log this automatically.
347
- if ( ! $this->is_wordpress_available() ) {
348
- return true;
349
- } else {
350
- $pro_slug = $this->get_pro_slug();
351
- if ( ! empty( $pro_slug ) ) {
352
-
353
- $all_products = ThemeIsle_SDK_Loader::get_products();
354
- if ( isset( $all_products[ $pro_slug ] ) ) {
355
- return true;
356
- }
357
- }
358
-
359
- return ( get_option( $this->get_key() . '_logger_flag', 'no' ) === 'yes' );
360
-
361
- }
362
- }
363
-
364
- /**
365
- * Returns the pro slug, if available.
366
- *
367
- * @return string The pro slug.
368
- */
369
- public function get_pro_slug() {
370
- return $this->pro_slug;
371
- }
372
-
373
- /**
374
- * Return the install timestamp.
375
- *
376
- * @return int The install timestamp.
377
- */
378
- public function get_install_time() {
379
- return $this->install;
380
- }
381
-
382
- /**
383
- * We require feedback on uninstall.
384
- *
385
- * @return bool Either we should require feedback on uninstall or not.
386
- */
387
- public function require_uninstall_feedback() {
388
- if ( $this->get_type() == 'theme' && ! $this->is_external_author() ) {
389
- return ! get_transient( 'ti_sdk_pause_' . $this->get_key(), false );
390
- }
391
-
392
- if ( $this->get_type() == 'plugin' ) {
393
-
394
- return true;
395
- }
396
-
397
- return false;
398
- }
399
-
400
- }
401
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-widget-dashboard-blog.php DELETED
@@ -1,374 +0,0 @@
1
- <?php
2
- /**
3
- * The blog dashboard model class for ThemeIsle SDK
4
- *
5
- * @package ThemeIsleSDK
6
- * @subpackage Widgets
7
- * @copyright Copyright (c) 2017, Marius Cristea
8
- * @license http://opensource.org/licenses/gpl-3.0.php GNU Public License
9
- * @since 1.0.0
10
- */
11
- // Exit if accessed directly.
12
- if ( ! defined( 'ABSPATH' ) ) {
13
- exit;
14
- }
15
- if ( ! class_exists( 'ThemeIsle_SDK_Widget_Dashboard_Blog' ) ) :
16
- /**
17
- * Blog dashboard widget model for ThemeIsle SDK.
18
- */
19
- class ThemeIsle_SDK_Widget_Dashboard_Blog extends ThemeIsle_SDK_Widget {
20
-
21
- /**
22
- * @var array instance The instances.
23
- */
24
- protected $product;
25
- /**
26
- * @var array Feed items.
27
- */
28
- private $items = array();
29
-
30
- /**
31
- * ThemeIsle_SDK_Widget_Dashboard_Blog constructor.
32
- *
33
- * @param ThemeIsle_SDK_Product $product_object The product object.
34
- */
35
- public function __construct( $product_object ) {
36
- $this->product = $product_object;
37
- parent::__construct( $product_object );
38
- }
39
-
40
- /**
41
- * Registers the hooks
42
- */
43
- public function setup_hooks_child() {
44
- $this->setup_vars();
45
- add_action( 'wp_dashboard_setup', array( &$this, 'add_widget' ) );
46
- add_action( 'wp_network_dashboard_setup', array( &$this, 'add_widget' ) );
47
- add_filter( 'themeisle_sdk_recommend_plugin_or_theme', array( &$this, 'recommend_plugin_or_theme' ) );
48
- }
49
-
50
- /**
51
- * Setup class variables
52
- */
53
- function setup_vars() {
54
- $this->dashboard_name = apply_filters( 'themeisle_sdk_dashboard_widget_name', 'WordPress Guides/Tutorials' );
55
- $this->feeds = apply_filters(
56
- 'themeisle_sdk_dashboard_widget_feeds', array(
57
- 'https://themeisle.com/blog/feed',
58
- )
59
- );
60
- }
61
-
62
- /**
63
- * Add widget to the dashboard
64
- *
65
- * @return string|void
66
- */
67
- function add_widget() {
68
- global $wp_meta_boxes;
69
- if ( isset( $wp_meta_boxes['dashboard']['normal']['core']['themeisle'] ) ) {
70
- return;
71
- }
72
- wp_add_dashboard_widget(
73
- 'themeisle', $this->dashboard_name, array(
74
- &$this,
75
- 'render_dashboard_widget',
76
- )
77
- );
78
- }
79
-
80
- /**
81
- * Setup feed items.
82
- */
83
- private function setup_feeds() {
84
- $items_normalized = array();
85
- if ( false === ( $items_normalized = get_transient( 'themeisle_sdk_feed_items' ) ) ) {
86
- // Load SimplePie Instance
87
- $feed = fetch_feed( $this->feeds );
88
- // TODO report error when is an error loading the feed
89
- if ( is_wp_error( $feed ) ) {
90
- return;
91
- }
92
-
93
- $items = $feed->get_items( 0, 5 );
94
- foreach ( (array) $items as $item ) {
95
- $items_normalized[] = array(
96
- 'title' => $item->get_title(),
97
- 'date' => $item->get_date( 'U' ),
98
- 'link' => $item->get_permalink(),
99
- );
100
- }
101
- set_transient( 'themeisle_sdk_feed_items', $items_normalized, 48 * HOUR_IN_SECONDS );
102
- }
103
- $this->items = $items_normalized;
104
- }
105
-
106
- /**
107
- * Render widget content
108
- */
109
- function render_dashboard_widget() {
110
- $this->setup_feeds();
111
- ?>
112
- <style type="text/css">
113
- #themeisle ul {
114
- margin-bottom: 0px;
115
- }
116
-
117
- #themeisle ul li.ti-dw-recommend-item {
118
-
119
- padding-left: 7px;
120
- border-top: 1px solid #eee;
121
-
122
- margin-bottom: 0px;
123
- padding-top: 6px;
124
- }
125
-
126
- #themeisle h2.hndle {
127
- background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAALfSURBVEhL7VW/ayJBFL7/5ZqziBzIcSCHxUE4hAiCgnAQsBASOAikEAIeCAaCiJAyIBICQURYwoJoEUmxa6MWioWxURu30mq77b57s86acX+oOQhp8sFjdmbfzrfve2/efMI74IP0VTB0gz/th/8iNbQxOt0eOmoN6WgAn78cwJeoYcLf78KrSPVneU3isEQZoz0D3pt03jhDrDTERJXxWM3A5yAOIPmgce/t2IvUGFzjkDa+7C5RTx0gWbxG0v8bBXUG3fLReigk4rh55gtbsAfpGDfhVTS+VA19bYbH7BkqU/56AzNU7nrYpbI7qfbEcxfBkSOHJGO27Vk0htqEYoXvARdS+tsEJyAJY1GRkOxnGTdq2zuaRZOkJ1Wi1+h7ODlJB/l1kYRKZVyKhMwoSmUw5M4uWMhIcl9f1l1qB2m/aMkZQIE2d5BeDTGiSD0VfC4jZPmSKiO+LMJGuoRE1bkiOIW00CAdW3NuxzLmxhD1hyHmug7dbBRD9KdLc4dR6Zfgn0ffXN2EjVSMLIcOrWxuwiyyPhYGI7X0m/agqPeIib5+yit/LWILKYuUlrTa5kbMwjko7J0AXc1RLZwifRF58Us1YXMzYSMV5WQ5ZWsG5VnYaG1BxM7zKBRzOAkHac460gxK9sUnVBqbu9rhKCS9lRaq1/poCeUq7tL6uPnjSLeoBRo9/KXjslqP4Na1gbiQssiULK9gP+VVqPnFQMblnwi+WmTfIji5amLES1mn/mz9yCFVuddZdiFlIJlTK+JtH2/AaPMogzipzrZ+4yQ1qCL1JSaNDL6bf81y1aOb5R6Vhow6G1tPNK9Borl0R2NLRiEaxNEF9Wa3yrHBSarTbeHot7ySqVmYR4AucDYuaJyzkfptZ0e/FeGa03m3jOQPizCAo0QG9W2ktL5HgGt45JRgaBh1x9R1WHY0KCTnLZOW5Kw0miuZq01ITGa6Z18Db9I3xAfpm+IdSIF/du91gSA2+I8AAAAASUVORK5CYII=');
128
- background-repeat: no-repeat;
129
- background-position: 90% 50%;
130
- background-size: 29px;
131
- }
132
-
133
- .ti-dw-feed-item {
134
- display: flex;
135
- align-items: center;
136
- }
137
-
138
- .ti-dw-feed-item a {
139
- float: left;
140
- width: 89.9%;
141
- }
142
-
143
- .ti-dw-feed-item .ti-dw-day-container {
144
- width: 100%;
145
- letter-spacing: 3px;
146
- display: block;
147
- }
148
-
149
- .ti-dw-feed-item .ti-dw-month-container {
150
-
151
- width: 100%;
152
- display: block;
153
- font-weight: 600;
154
- padding: 0px;
155
- margin-top: -6px;
156
- text-transform: uppercase;
157
- font-size: 10px;
158
- letter-spacing: 1px;
159
- }
160
-
161
- .ti-dw-feed-item .ti-dw-date-container {
162
- float: left;
163
- min-height: 30px;
164
- margin-right: 0.1%;
165
- width: 10%;
166
- text-align: center;
167
- }
168
-
169
- .ti-dw-recommend-item span {
170
- color: #72777c;
171
- }
172
-
173
- </style>
174
- <ul>
175
- <?php
176
- foreach ( $this->items as $item ) {
177
- ?>
178
- <li class="ti-dw-feed-item"><span class="ti-dw-date-container"><span
179
- class="ti-dw-day-container"><?php echo date( 'd', $item['date'] ); ?></span> <span
180
- class="ti-dw-month-container"><?php echo substr( date( 'M', $item['date'] ), 0, 3 ); ?></span></span><a
181
- href="
182
- <?php
183
- echo add_query_arg(
184
- array(
185
- 'utm_campaign' => 'feed',
186
- 'utm_medium' => 'dashboard_widget',
187
- ), $item['link']
188
- );
189
- ?>
190
- " target="_blank"><?php echo $item['title']; ?></a>
191
- <div class="clear"></div>
192
- </li>
193
- <?php
194
- }
195
-
196
- $recommend = apply_filters( 'themeisle_sdk_recommend_plugin_or_theme', array() );
197
- if ( is_array( $recommend ) && ! empty( $recommend ) ) {
198
-
199
- $type = $recommend['type'];
200
- if ( ( $type == 'theme' && current_user_can( 'install_themes' ) ) || ( $type == 'plugin' && current_user_can( 'install_plugins' ) ) ) {
201
- add_thickbox();
202
- $url = add_query_arg(
203
- array(
204
- 'theme' => $recommend['slug'],
205
- ), network_admin_url( 'theme-install.php' )
206
- );
207
-
208
- if ( 'plugin' === $type ) {
209
-
210
- $url = add_query_arg(
211
- array(
212
- 'tab' => 'plugin-information',
213
- 'plugin' => $recommend['slug'],
214
- ), network_admin_url( 'plugin-install.php' )
215
- );
216
- }
217
- ?>
218
- <li class="ti-dw-recommend-item ">
219
- <span class="ti-dw-recommend"><?php echo apply_filters( 'themeisle_sdk_dashboard_popular_label', sprintf( 'Popular %s', ucwords( $type ) ) ); ?>
220
- : </span>
221
- <?php
222
- echo trim(
223
- str_replace(
224
- array(
225
- 'lite',
226
- 'Lite',
227
- ), '', $recommend['name']
228
- )
229
- );
230
- ?>
231
- (<a class="thickbox open-plugin-details-modal"
232
- href="<?php echo $url . '&TB_iframe=true&width=600&height=500'; ?>"><?php echo apply_filters( 'themeisle_sdk_dashboard_install_label', 'Install' ); ?></a>)
233
- </li>
234
-
235
- <?php
236
- }
237
- }
238
- ?>
239
- </ul>
240
-
241
- <?php
242
-
243
- }
244
-
245
- /**
246
- * Either the current product is installed or not.
247
- *
248
- * @param array $val The current recommended product.
249
- *
250
- * @return bool Either we should exclude the plugin or not.
251
- */
252
- public function remove_current_products( $val ) {
253
- if ( $val['type'] === 'theme' ) {
254
- $exist = wp_get_theme( $val['slug'] );
255
-
256
- return ! $exist->exists();
257
- } else {
258
- $all_plugins = array_keys( get_plugins() );
259
- foreach ( $all_plugins as $slug ) {
260
- if ( strpos( $slug, $val['slug'] ) !== false ) {
261
- return false;
262
- }
263
- }
264
-
265
- return true;
266
- }
267
- }
268
-
269
- /**
270
- * Fetch themes from wporg api.
271
- *
272
- * @param string $author The author name.
273
- *
274
- * @return array The list of themes.
275
- */
276
- function get_themes_from_wporg( $author ) {
277
- $products = wp_remote_get(
278
- 'https://api.wordpress.org/themes/info/1.1/?action=query_themes&request[author]=' . $author . '&request[per_page]=30&request[fields][active_installs]=true'
279
- );
280
- $products = json_decode( wp_remote_retrieve_body( $products ) );
281
- if ( is_object( $products ) ) {
282
- $products = isset( $products->themes ) ? $products->themes : array();
283
- } else {
284
- $products = array();
285
- }
286
-
287
- return $products;
288
- }
289
-
290
- /**
291
- * Fetch plugin from wporg api.
292
- *
293
- * @param string $author The author slug.
294
- *
295
- * @return array The list of plugins for the selected author.
296
- */
297
- function get_plugins_from_wporg( $author ) {
298
- $products = wp_remote_get(
299
- 'https://api.wordpress.org/plugins/info/1.1/?action=query_plugins&request[author]=' . $author . '&request[author]=codeinwp&request[per_page]=20&request[fields][active_installs]=true'
300
- );
301
- $products = json_decode( wp_remote_retrieve_body( $products ) );
302
- if ( is_object( $products ) ) {
303
- $products = isset( $products->plugins ) ? $products->plugins : array();
304
- } else {
305
- $products = array();
306
- }
307
-
308
- return $products;
309
- }
310
-
311
- /**
312
- * Fetch products from the recomended section.
313
- *
314
- * @return array|mixed The list of products to use in recomended section.
315
- */
316
- function get_product_from_api() {
317
- if ( false === ( $products = get_transient( 'themeisle_sdk_products' ) ) ) {
318
- $products = array();
319
- $themeisle_themes = $this->get_themes_from_wporg( 'themeisle' );
320
- $codeinwp_themes = $this->get_themes_from_wporg( 'codeinwp' );
321
-
322
- $themeisle_plugins = $this->get_plugins_from_wporg( 'themeisle' );
323
- $codeinwp_plugins = $this->get_plugins_from_wporg( 'codeinwp' );
324
-
325
- $all_themes = array_merge( $themeisle_themes, $codeinwp_themes );
326
- foreach ( $all_themes as $theme ) {
327
- if ( $theme->active_installs < 4999 ) {
328
- continue;
329
- }
330
- $products[] = array(
331
- 'name' => $theme->name,
332
- 'type' => 'theme',
333
- 'slug' => $theme->slug,
334
- 'installs' => $theme->active_installs,
335
- );
336
- }
337
- $all_plugins = array_merge( $themeisle_plugins, $codeinwp_plugins );
338
- foreach ( $all_plugins as $plugin ) {
339
- if ( $plugin->active_installs < 5999 ) {
340
- continue;
341
- }
342
- $products[] = array(
343
- 'name' => $plugin->name,
344
- 'type' => 'plugin',
345
- 'slug' => $plugin->slug,
346
- 'installs' => $plugin->active_installs,
347
- );
348
- }
349
- set_transient( 'themeisle_sdk_products', $products, 6 * HOUR_IN_SECONDS );
350
- }
351
-
352
- return $products;
353
- }
354
-
355
- /**
356
- * Contact the API and fetch the recommended plugins/themes
357
- */
358
- function recommend_plugin_or_theme() {
359
- $products = $this->get_product_from_api();
360
- if ( ! is_array( $products ) ) {
361
- $products = array();
362
- }
363
- $products = array_filter( $products, array( $this, 'remove_current_products' ) );
364
- $products = array_merge( $products );
365
- if ( count( $products ) > 1 ) {
366
- shuffle( $products );
367
- $products = array_slice( $products, 0, 1 );
368
- }
369
- $to_recommend = isset( $products[0] ) ? $products[0] : $products;
370
-
371
- return $to_recommend;
372
- }
373
- }
374
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-widget.php DELETED
@@ -1,50 +0,0 @@
1
- <?php
2
- /**
3
- * The widget model class for ThemeIsle SDK
4
- *
5
- * @package ThemeIsleSDK
6
- * @subpackage Widgets
7
- * @copyright Copyright (c) 2017, Marius Cristea
8
- * @license http://opensource.org/licenses/gpl-3.0.php GNU Public License
9
- * @since 1.0.0
10
- */
11
- // Exit if accessed directly.
12
- if ( ! defined( 'ABSPATH' ) ) {
13
- exit;
14
- }
15
- if ( ! class_exists( 'ThemeIsle_SDK_Widget' ) ) :
16
- /**
17
- * Widget model for ThemeIsle SDK.
18
- */
19
- abstract class ThemeIsle_SDK_Widget {
20
- /**
21
- * @var ThemeIsle_SDK_Product $product Themeisle Product.
22
- */
23
- protected $product;
24
-
25
- /**
26
- * ThemeIsle_SDK_Widget constructor.
27
- *
28
- * @param ThemeIsle_SDK_Product $product_object Product Object.
29
- */
30
- public function __construct( $product_object ) {
31
- if ( $product_object instanceof ThemeIsle_SDK_Product ) {
32
- $this->product = $product_object;
33
- }
34
- $this->setup_hooks();
35
- }
36
-
37
- /**
38
- * Registers the hooks and then delegates to the child
39
- */
40
- public function setup_hooks() {
41
- $this->setup_hooks_child();
42
- }
43
-
44
- /**
45
- * Abstract function for delegating to the child
46
- */
47
- protected abstract function setup_hooks_child();
48
-
49
- }
50
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-widgets-factory.php DELETED
@@ -1,37 +0,0 @@
1
- <?php
2
- /**
3
- * The widgets factory class for ThemeIsle SDK
4
- *
5
- * @package ThemeIsleSDK
6
- * @subpackage Widgets
7
- * @copyright Copyright (c) 2017, Marius Cristea
8
- * @license http://opensource.org/licenses/gpl-3.0.php GNU Public License
9
- * @since 1.0.0
10
- */
11
- // Exit if accessed directly.
12
- if ( ! defined( 'ABSPATH' ) ) {
13
- exit;
14
- }
15
- if ( ! class_exists( 'ThemeIsle_SDK_Widgets_Factory' ) ) :
16
- /**
17
- * Widgets factory model for ThemeIsle SDK.
18
- */
19
- class ThemeIsle_SDK_Widgets_Factory {
20
-
21
- /**
22
- * ThemeIsle_SDK_Widgets_Factory constructor.
23
- *
24
- * @param ThemeIsle_SDK_Product $product_object Product Object.
25
- * @param array $widgets the widgets.
26
- */
27
- public function __construct( $product_object, $widgets ) {
28
- if ( $product_object instanceof ThemeIsle_SDK_Product && $widgets && is_array( $widgets ) ) {
29
- foreach ( $widgets as $widget ) {
30
- $class = 'ThemeIsle_SDK_Widget_' . str_replace( ' ', '_', ucwords( str_replace( '_', ' ', $widget ) ) );
31
- $instance = new $class( $product_object );
32
- $instance->setup_hooks();
33
- }
34
- }
35
- }
36
- }
37
- endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/codeinwp/themeisle-sdk/composer.json DELETED
@@ -1,24 +0,0 @@
1
- {
2
- "name": "codeinwp/themeisle-sdk",
3
- "description": "ThemeIsle SDK ",
4
- "keywords": [
5
- "wordpress"
6
- ],
7
- "homepage": "https://github.com/Codeinwp/themeisle-sdk",
8
- "license": "GPL-2.0+",
9
- "authors": [
10
- {
11
- "name": "ThemeIsle team",
12
- "email": "friends@themeisle.com",
13
- "homepage": "https://themeisle.com"
14
- }
15
- ],
16
- "autoload": {
17
- "files": [
18
- "load.php"
19
- ]
20
- },
21
- "support": {
22
- "issues": "https://github.com/Codeinwp/themeisle-sdk/issues"
23
- }
24
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/codeinwp/themeisle-sdk/index.php DELETED
@@ -1,5 +0,0 @@
1
- <?php
2
- /**
3
- * @package ThemeIsleSDK
4
- * Ignore this.
5
- */
 
 
 
 
 
vendor/codeinwp/themeisle-sdk/load.php DELETED
@@ -1,35 +0,0 @@
1
- <?php
2
- /**
3
- * Loader for the ThemeIsleSDK
4
- *
5
- * Logic for loading always the latest SDK from the installed themes/plugins.
6
- *
7
- * @package ThemeIsleSDK
8
- * @copyright Copyright (c) 2017, Marius Cristea
9
- * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
10
- * @since 1.1.0
11
- */
12
-
13
- // Current SDK version and path.
14
- $themeisle_sdk_version = '1.5.6';
15
- $themeisle_sdk_path = dirname( __FILE__ );
16
-
17
- global $themeisle_sdk_max_version;
18
- global $themeisle_sdk_max_path;
19
-
20
- if ( version_compare( $themeisle_sdk_version, $themeisle_sdk_max_version ) >= 0 ) {
21
- $themeisle_sdk_max_version = $themeisle_sdk_version;
22
- $themeisle_sdk_max_path = $themeisle_sdk_path;
23
- }
24
-
25
- // load the latest sdk version from the active Themeisle products
26
- if ( ! function_exists( 'themeisle_sdk_load_latest' ) ) :
27
- /**
28
- * Always load the latest sdk version.
29
- */
30
- function themeisle_sdk_load_latest() {
31
- global $themeisle_sdk_max_path;
32
- require_once $themeisle_sdk_max_path . '/start.php';
33
- }
34
- endif;
35
- add_action( 'init', 'themeisle_sdk_load_latest' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/codeinwp/themeisle-sdk/start.php DELETED
@@ -1,35 +0,0 @@
1
- <?php
2
- /**
3
- * File responsible for sdk files loading.
4
- *
5
- * @package ThemeIsleSDK
6
- * @copyright Copyright (c) 2017, Marius Cristea
7
- * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
8
- * @since 1.1.0
9
- */
10
- $products = apply_filters( 'themeisle_sdk_products', array() );
11
- $path = dirname( __FILE__ );
12
- $files_to_load = array(
13
- 'class-themeisle-sdk-loader.php',
14
- 'class-themeisle-sdk-product.php',
15
- 'class-themeisle-sdk-logger.php',
16
- 'class-themeisle-sdk-licenser.php',
17
- 'class-themeisle-sdk-feedback-factory.php',
18
- 'class-themeisle-sdk-feedback.php',
19
- 'class-themeisle-sdk-feedback-deactivate.php',
20
- 'class-themeisle-sdk-feedback-review.php',
21
- 'class-themeisle-sdk-notification-manager.php',
22
- 'class-themeisle-sdk-widget.php',
23
- 'class-themeisle-sdk-widget-dashboard-blog.php',
24
- 'class-themeisle-sdk-widgets-factory.php',
25
- );
26
-
27
- foreach ( $files_to_load as $file ) {
28
- $file_path = $path . '/' . $file;
29
- if ( is_readable( $file_path ) ) {
30
- require_once $file_path;
31
- }
32
- }
33
- foreach ( $products as $product ) {
34
- ThemeIsle_SDK_Loader::init_product( $product );
35
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/ClassLoader.php DELETED
@@ -1,413 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of Composer.
5
- *
6
- * (c) Nils Adermann <naderman@naderman.de>
7
- * Jordi Boggiano <j.boggiano@seld.be>
8
- *
9
- * For the full copyright and license information, please view the LICENSE
10
- * file that was distributed with this source code.
11
- */
12
-
13
- namespace Composer\Autoload;
14
-
15
- /**
16
- * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
17
- *
18
- * $loader = new \Composer\Autoload\ClassLoader();
19
- *
20
- * // register classes with namespaces
21
- * $loader->add('Symfony\Component', __DIR__.'/component');
22
- * $loader->add('Symfony', __DIR__.'/framework');
23
- *
24
- * // activate the autoloader
25
- * $loader->register();
26
- *
27
- * // to enable searching the include path (eg. for PEAR packages)
28
- * $loader->setUseIncludePath(true);
29
- *
30
- * In this example, if you try to use a class in the Symfony\Component
31
- * namespace or one of its children (Symfony\Component\Console for instance),
32
- * the autoloader will first look for the class under the component/
33
- * directory, and it will then fallback to the framework/ directory if not
34
- * found before giving up.
35
- *
36
- * This class is loosely based on the Symfony UniversalClassLoader.
37
- *
38
- * @author Fabien Potencier <fabien@symfony.com>
39
- * @author Jordi Boggiano <j.boggiano@seld.be>
40
- * @see http://www.php-fig.org/psr/psr-0/
41
- * @see http://www.php-fig.org/psr/psr-4/
42
- */
43
- class ClassLoader
44
- {
45
- // PSR-4
46
- private $prefixLengthsPsr4 = array();
47
- private $prefixDirsPsr4 = array();
48
- private $fallbackDirsPsr4 = array();
49
-
50
- // PSR-0
51
- private $prefixesPsr0 = array();
52
- private $fallbackDirsPsr0 = array();
53
-
54
- private $useIncludePath = false;
55
- private $classMap = array();
56
-
57
- private $classMapAuthoritative = false;
58
-
59
- public function getPrefixes()
60
- {
61
- if (!empty($this->prefixesPsr0)) {
62
- return call_user_func_array('array_merge', $this->prefixesPsr0);
63
- }
64
-
65
- return array();
66
- }
67
-
68
- public function getPrefixesPsr4()
69
- {
70
- return $this->prefixDirsPsr4;
71
- }
72
-
73
- public function getFallbackDirs()
74
- {
75
- return $this->fallbackDirsPsr0;
76
- }
77
-
78
- public function getFallbackDirsPsr4()
79
- {
80
- return $this->fallbackDirsPsr4;
81
- }
82
-
83
- public function getClassMap()
84
- {
85
- return $this->classMap;
86
- }
87
-
88
- /**
89
- * @param array $classMap Class to filename map
90
- */
91
- public function addClassMap(array $classMap)
92
- {
93
- if ($this->classMap) {
94
- $this->classMap = array_merge($this->classMap, $classMap);
95
- } else {
96
- $this->classMap = $classMap;
97
- }
98
- }
99
-
100
- /**
101
- * Registers a set of PSR-0 directories for a given prefix, either
102
- * appending or prepending to the ones previously set for this prefix.
103
- *
104
- * @param string $prefix The prefix
105
- * @param array|string $paths The PSR-0 root directories
106
- * @param bool $prepend Whether to prepend the directories
107
- */
108
- public function add($prefix, $paths, $prepend = false)
109
- {
110
- if (!$prefix) {
111
- if ($prepend) {
112
- $this->fallbackDirsPsr0 = array_merge(
113
- (array) $paths,
114
- $this->fallbackDirsPsr0
115
- );
116
- } else {
117
- $this->fallbackDirsPsr0 = array_merge(
118
- $this->fallbackDirsPsr0,
119
- (array) $paths
120
- );
121
- }
122
-
123
- return;
124
- }
125
-
126
- $first = $prefix[0];
127
- if (!isset($this->prefixesPsr0[$first][$prefix])) {
128
- $this->prefixesPsr0[$first][$prefix] = (array) $paths;
129
-
130
- return;
131
- }
132
- if ($prepend) {
133
- $this->prefixesPsr0[$first][$prefix] = array_merge(
134
- (array) $paths,
135
- $this->prefixesPsr0[$first][$prefix]
136
- );
137
- } else {
138
- $this->prefixesPsr0[$first][$prefix] = array_merge(
139
- $this->prefixesPsr0[$first][$prefix],
140
- (array) $paths
141
- );
142
- }
143
- }
144
-
145
- /**
146
- * Registers a set of PSR-4 directories for a given namespace, either
147
- * appending or prepending to the ones previously set for this namespace.
148
- *
149
- * @param string $prefix The prefix/namespace, with trailing '\\'
150
- * @param array|string $paths The PSR-4 base directories
151
- * @param bool $prepend Whether to prepend the directories
152
- *
153
- * @throws \InvalidArgumentException
154
- */
155
- public function addPsr4($prefix, $paths, $prepend = false)
156
- {
157
- if (!$prefix) {
158
- // Register directories for the root namespace.
159
- if ($prepend) {
160
- $this->fallbackDirsPsr4 = array_merge(
161
- (array) $paths,
162
- $this->fallbackDirsPsr4
163
- );
164
- } else {
165
- $this->fallbackDirsPsr4 = array_merge(
166
- $this->fallbackDirsPsr4,
167
- (array) $paths
168
- );
169
- }
170
- } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
171
- // Register directories for a new namespace.
172
- $length = strlen($prefix);
173
- if ('\\' !== $prefix[$length - 1]) {
174
- throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
175
- }
176
- $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
177
- $this->prefixDirsPsr4[$prefix] = (array) $paths;
178
- } elseif ($prepend) {
179
- // Prepend directories for an already registered namespace.
180
- $this->prefixDirsPsr4[$prefix] = array_merge(
181
- (array) $paths,
182
- $this->prefixDirsPsr4[$prefix]
183
- );
184
- } else {
185
- // Append directories for an already registered namespace.
186
- $this->prefixDirsPsr4[$prefix] = array_merge(
187
- $this->prefixDirsPsr4[$prefix],
188
- (array) $paths
189
- );
190
- }
191
- }
192
-
193
- /**
194
- * Registers a set of PSR-0 directories for a given prefix,
195
- * replacing any others previously set for this prefix.
196
- *
197
- * @param string $prefix The prefix
198
- * @param array|string $paths The PSR-0 base directories
199
- */
200
- public function set($prefix, $paths)
201
- {
202
- if (!$prefix) {
203
- $this->fallbackDirsPsr0 = (array) $paths;
204
- } else {
205
- $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
206
- }
207
- }
208
-
209
- /**
210
- * Registers a set of PSR-4 directories for a given namespace,
211
- * replacing any others previously set for this namespace.
212
- *
213
- * @param string $prefix The prefix/namespace, with trailing '\\'
214
- * @param array|string $paths The PSR-4 base directories
215
- *
216
- * @throws \InvalidArgumentException
217
- */
218
- public function setPsr4($prefix, $paths)
219
- {
220
- if (!$prefix) {
221
- $this->fallbackDirsPsr4 = (array) $paths;
222
- } else {
223
- $length = strlen($prefix);
224
- if ('\\' !== $prefix[$length - 1]) {
225
- throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
226
- }
227
- $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
228
- $this->prefixDirsPsr4[$prefix] = (array) $paths;
229
- }
230
- }
231
-
232
- /**
233
- * Turns on searching the include path for class files.
234
- *
235
- * @param bool $useIncludePath
236
- */
237
- public function setUseIncludePath($useIncludePath)
238
- {
239
- $this->useIncludePath = $useIncludePath;
240
- }
241
-
242
- /**
243
- * Can be used to check if the autoloader uses the include path to check
244
- * for classes.
245
- *
246
- * @return bool
247
- */
248
- public function getUseIncludePath()
249
- {
250
- return $this->useIncludePath;
251
- }
252
-
253
- /**
254
- * Turns off searching the prefix and fallback directories for classes
255
- * that have not been registered with the class map.
256
- *
257
- * @param bool $classMapAuthoritative
258
- */
259
- public function setClassMapAuthoritative($classMapAuthoritative)
260
- {
261
- $this->classMapAuthoritative = $classMapAuthoritative;
262
- }
263
-
264
- /**
265
- * Should class lookup fail if not found in the current class map?
266
- *
267
- * @return bool
268
- */
269
- public function isClassMapAuthoritative()
270
- {
271
- return $this->classMapAuthoritative;
272
- }
273
-
274
- /**
275
- * Registers this instance as an autoloader.
276
- *
277
- * @param bool $prepend Whether to prepend the autoloader or not
278
- */
279
- public function register($prepend = false)
280
- {
281
- spl_autoload_register(array($this, 'loadClass'), true, $prepend);
282
- }
283
-
284
- /**
285
- * Unregisters this instance as an autoloader.
286
- */
287
- public function unregister()
288
- {
289
- spl_autoload_unregister(array($this, 'loadClass'));
290
- }
291
-
292
- /**
293
- * Loads the given class or interface.
294
- *
295
- * @param string $class The name of the class
296
- * @return bool|null True if loaded, null otherwise
297
- */
298
- public function loadClass($class)
299
- {
300
- if ($file = $this->findFile($class)) {
301
- includeFile($file);
302
-
303
- return true;
304
- }
305
- }
306
-
307
- /**
308
- * Finds the path to the file where the class is defined.
309
- *
310
- * @param string $class The name of the class
311
- *
312
- * @return string|false The path if found, false otherwise
313
- */
314
- public function findFile($class)
315
- {
316
- // work around for PHP 5.3.0 - 5.3.2 https://bugs.php.net/50731
317
- if ('\\' == $class[0]) {
318
- $class = substr($class, 1);
319
- }
320
-
321
- // class map lookup
322
- if (isset($this->classMap[$class])) {
323
- return $this->classMap[$class];
324
- }
325
- if ($this->classMapAuthoritative) {
326
- return false;
327
- }
328
-
329
- $file = $this->findFileWithExtension($class, '.php');
330
-
331
- // Search for Hack files if we are running on HHVM
332
- if ($file === null && defined('HHVM_VERSION')) {
333
- $file = $this->findFileWithExtension($class, '.hh');
334
- }
335
-
336
- if ($file === null) {
337
- // Remember that this class does not exist.
338
- return $this->classMap[$class] = false;
339
- }
340
-
341
- return $file;
342
- }
343
-
344
- private function findFileWithExtension($class, $ext)
345
- {
346
- // PSR-4 lookup
347
- $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
348
-
349
- $first = $class[0];
350
- if (isset($this->prefixLengthsPsr4[$first])) {
351
- foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) {
352
- if (0 === strpos($class, $prefix)) {
353
- foreach ($this->prefixDirsPsr4[$prefix] as $dir) {
354
- if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
355
- return $file;
356
- }
357
- }
358
- }
359
- }
360
- }
361
-
362
- // PSR-4 fallback dirs
363
- foreach ($this->fallbackDirsPsr4 as $dir) {
364
- if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
365
- return $file;
366
- }
367
- }
368
-
369
- // PSR-0 lookup
370
- if (false !== $pos = strrpos($class, '\\')) {
371
- // namespaced class name
372
- $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
373
- . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
374
- } else {
375
- // PEAR-like class name
376
- $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
377
- }
378
-
379
- if (isset($this->prefixesPsr0[$first])) {
380
- foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
381
- if (0 === strpos($class, $prefix)) {
382
- foreach ($dirs as $dir) {
383
- if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
384
- return $file;
385
- }
386
- }
387
- }
388
- }
389
- }
390
-
391
- // PSR-0 fallback dirs
392
- foreach ($this->fallbackDirsPsr0 as $dir) {
393
- if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
394
- return $file;
395
- }
396
- }
397
-
398
- // PSR-0 include paths.
399
- if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
400
- return $file;
401
- }
402
- }
403
- }
404
-
405
- /**
406
- * Scope isolated include.
407
- *
408
- * Prevents access to $this/self from included files.
409
- */
410
- function includeFile($file)
411
- {
412
- include $file;
413
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/ClassLoader52.php DELETED
@@ -1,271 +0,0 @@
1
- <?php
2
- /*
3
- * Copyright (c) 2013, Christoph Mewes, http://www.xrstf.de
4
- *
5
- * This file is released under the terms of the MIT license. You can find the
6
- * complete text in the attached LICENSE file or online at:
7
- *
8
- * http://www.opensource.org/licenses/mit-license.php
9
- *
10
- * --------------------------------------------------------------------------
11
- *
12
- * 99% of this is copied as-is from the original Composer source code and is
13
- * released under MIT license as well. Copyright goes to:
14
- *
15
- * - Fabien Potencier <fabien@symfony.com>
16
- * - Jordi Boggiano <j.boggiano@seld.be>
17
- */
18
-
19
- class xrstf_Composer52_ClassLoader {
20
- private $prefixes = array();
21
- private $fallbackDirs = array();
22
- private $useIncludePath = false;
23
- private $classMap = array();
24
- private $classMapAuthoratative = false;
25
- private $allowUnderscore = false;
26
-
27
- /**
28
- * @param boolean $flag true to allow class names with a leading underscore, false to disable
29
- */
30
- public function setAllowUnderscore($flag) {
31
- $this->allowUnderscore = (boolean) $flag;
32
- }
33
-
34
- /**
35
- * @return array
36
- */
37
- public function getPrefixes() {
38
- return $this->prefixes;
39
- }
40
-
41
- /**
42
- * Turns off searching the prefix and fallback directories for classes
43
- * that have not been registered with the class map.
44
- *
45
- * @param bool $classMapAuthoratative
46
- */
47
- public function setClassMapAuthoritative($classMapAuthoratative) {
48
- $this->classMapAuthoratative = $classMapAuthoratative;
49
- }
50
-
51
- /**
52
- * Should class lookup fail if not found in the current class map?
53
- *
54
- * @return bool
55
- */
56
- public function getClassMapAuthoratative() {
57
- return $this->classMapAuthoratative;
58
- }
59
-
60
- /**
61
- * @return array
62
- */
63
- public function getFallbackDirs() {
64
- return $this->fallbackDirs;
65
- }
66
-
67
- /**
68
- * @return array
69
- */
70
- public function getClassMap() {
71
- return $this->classMap;
72
- }
73
-
74
- /**
75
- * @param array $classMap class to filename map
76
- */
77
- public function addClassMap(array $classMap) {
78
- if ($this->classMap) {
79
- $this->classMap = array_merge($this->classMap, $classMap);
80
- }
81
- else {
82
- $this->classMap = $classMap;
83
- }
84
- }
85
-
86
- /**
87
- * Registers a set of classes, merging with any others previously set.
88
- *
89
- * @param string $prefix the classes prefix
90
- * @param array|string $paths the location(s) of the classes
91
- * @param bool $prepend prepend the location(s)
92
- */
93
- public function add($prefix, $paths, $prepend = false) {
94
- if (!$prefix) {
95
- if ($prepend) {
96
- $this->fallbackDirs = array_merge(
97
- (array) $paths,
98
- $this->fallbackDirs
99
- );
100
- }
101
- else {
102
- $this->fallbackDirs = array_merge(
103
- $this->fallbackDirs,
104
- (array) $paths
105
- );
106
- }
107
-
108
- return;
109
- }
110
-
111
- if (!isset($this->prefixes[$prefix])) {
112
- $this->prefixes[$prefix] = (array) $paths;
113
- return;
114
- }
115
-
116
- if ($prepend) {
117
- $this->prefixes[$prefix] = array_merge(
118
- (array) $paths,
119
- $this->prefixes[$prefix]
120
- );
121
- }
122
- else {
123
- $this->prefixes[$prefix] = array_merge(
124
- $this->prefixes[$prefix],
125
- (array) $paths
126
- );
127
- }
128
- }
129
-
130
- /**
131
- * Registers a set of classes, replacing any others previously set.
132
- *
133
- * @param string $prefix the classes prefix
134
- * @param array|string $paths the location(s) of the classes
135
- */
136
- public function set($prefix, $paths) {
137
- if (!$prefix) {
138
- $this->fallbackDirs = (array) $paths;
139
- return;
140
- }
141
-
142
- $this->prefixes[$prefix] = (array) $paths;
143
- }
144
-
145
- /**
146
- * Turns on searching the include path for class files.
147
- *
148
- * @param bool $useIncludePath
149
- */
150
- public function setUseIncludePath($useIncludePath) {
151
- $this->useIncludePath = $useIncludePath;
152
- }
153
-
154
- /**
155
- * Can be used to check if the autoloader uses the include path to check
156
- * for classes.
157
- *
158
- * @return bool
159
- */
160
- public function getUseIncludePath() {
161
- return $this->useIncludePath;
162
- }
163
-
164
- /**
165
- * Registers this instance as an autoloader.
166
- */
167
- public function register() {
168
- spl_autoload_register(array($this, 'loadClass'), true);
169
- }
170
-
171
- /**
172
- * Unregisters this instance as an autoloader.
173
- */
174
- public function unregister() {
175
- spl_autoload_unregister(array($this, 'loadClass'));
176
- }
177
-
178
- /**
179
- * Loads the given class or interface.
180
- *
181
- * @param string $class the name of the class
182
- * @return bool|null true, if loaded
183
- */
184
- public function loadClass($class) {
185
- if ($file = $this->findFile($class)) {
186
- include $file;
187
- return true;
188
- }
189
- }
190
-
191
- /**
192
- * Finds the path to the file where the class is defined.
193
- *
194
- * @param string $class the name of the class
195
- * @return string|null the path, if found
196
- */
197
- public function findFile($class) {
198
- if ('\\' === $class[0]) {
199
- $class = substr($class, 1);
200
- }
201
-
202
- if (isset($this->classMap[$class])) {
203
- return $this->classMap[$class];
204
- }
205
- elseif ($this->classMapAuthoratative) {
206
- return false;
207
- }
208
-
209
- $classPath = $this->getClassPath($class);
210
-
211
- foreach ($this->prefixes as $prefix => $dirs) {
212
- if (0 === strpos($class, $prefix)) {
213
- foreach ($dirs as $dir) {
214
- if (file_exists($dir.DIRECTORY_SEPARATOR.$classPath)) {
215
- return $dir.DIRECTORY_SEPARATOR.$classPath;
216
- }
217
- }
218
- }
219
- }
220
-
221
- foreach ($this->fallbackDirs as $dir) {
222
- if (file_exists($dir.DIRECTORY_SEPARATOR.$classPath)) {
223
- return $dir.DIRECTORY_SEPARATOR.$classPath;
224
- }
225
- }
226
-
227
- if ($this->useIncludePath && $file = self::resolveIncludePath($classPath)) {
228
- return $file;
229
- }
230
-
231
- return $this->classMap[$class] = false;
232
- }
233
-
234
- private function getClassPath($class) {
235
- if (false !== $pos = strrpos($class, '\\')) {
236
- // namespaced class name
237
- $classPath = str_replace('\\', DIRECTORY_SEPARATOR, substr($class, 0, $pos)).DIRECTORY_SEPARATOR;
238
- $className = substr($class, $pos + 1);
239
- }
240
- else {
241
- // PEAR-like class name
242
- $classPath = null;
243
- $className = $class;
244
- }
245
-
246
- $className = str_replace('_', DIRECTORY_SEPARATOR, $className);
247
-
248
- // restore the prefix
249
- if ($this->allowUnderscore && DIRECTORY_SEPARATOR === $className[0]) {
250
- $className[0] = '_';
251
- }
252
-
253
- $classPath .= $className.'.php';
254
-
255
- return $classPath;
256
- }
257
-
258
- public static function resolveIncludePath($classPath) {
259
- $paths = explode(PATH_SEPARATOR, get_include_path());
260
-
261
- foreach ($paths as $path) {
262
- $path = rtrim($path, '/\\');
263
-
264
- if ($file = file_exists($path.DIRECTORY_SEPARATOR.$file)) {
265
- return $file;
266
- }
267
- }
268
-
269
- return false;
270
- }
271
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/LICENSE DELETED
@@ -1,21 +0,0 @@
1
-
2
- Copyright (c) 2016 Nils Adermann, Jordi Boggiano
3
-
4
- Permission is hereby granted, free of charge, to any person obtaining a copy
5
- of this software and associated documentation files (the "Software"), to deal
6
- in the Software without restriction, including without limitation the rights
7
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
- copies of the Software, and to permit persons to whom the Software is furnished
9
- to do so, subject to the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be included in all
12
- copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
- THE SOFTWARE.
21
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/autoload_classmap.php DELETED
@@ -1,9 +0,0 @@
1
- <?php
2
-
3
- // autoload_classmap.php @generated by Composer
4
-
5
- $vendorDir = dirname(dirname(__FILE__));
6
- $baseDir = dirname($vendorDir);
7
-
8
- return array(
9
- );
 
 
 
 
 
 
 
 
 
vendor/composer/autoload_files.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
-
3
- // autoload_files.php @generated by Composer
4
-
5
- $vendorDir = dirname(dirname(__FILE__));
6
- $baseDir = dirname($vendorDir);
7
-
8
- return array(
9
- '957c51f8f334b5ea3be310bfb8b3492c' => $vendorDir . '/codeinwp/themeisle-sdk/load.php',
10
- );
 
 
 
 
 
 
 
 
 
 
vendor/composer/autoload_namespaces.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
-
3
- // autoload_namespaces.php @generated by Composer
4
-
5
- $vendorDir = dirname(dirname(__FILE__));
6
- $baseDir = dirname($vendorDir);
7
-
8
- return array(
9
- 'xrstf\\Composer52' => array($vendorDir . '/xrstf/composer-php52/lib'),
10
- );
 
 
 
 
 
 
 
 
 
 
vendor/composer/autoload_psr4.php DELETED
@@ -1,9 +0,0 @@
1
- <?php
2
-
3
- // autoload_psr4.php @generated by Composer
4
-
5
- $vendorDir = dirname(dirname(__FILE__));
6
- $baseDir = dirname($vendorDir);
7
-
8
- return array(
9
- );
 
 
 
 
 
 
 
 
 
vendor/composer/autoload_real.php DELETED
@@ -1,59 +0,0 @@
1
- <?php
2
-
3
- // autoload_real.php @generated by Composer
4
-
5
- class ComposerAutoloaderInit10fe3fd2e8ddae0802151df1d2b0e7cf
6
- {
7
- private static $loader;
8
-
9
- public static function loadClassLoader($class)
10
- {
11
- if ('Composer\Autoload\ClassLoader' === $class) {
12
- require __DIR__ . '/ClassLoader.php';
13
- }
14
- }
15
-
16
- public static function getLoader()
17
- {
18
- if (null !== self::$loader) {
19
- return self::$loader;
20
- }
21
-
22
- spl_autoload_register(array('ComposerAutoloaderInit10fe3fd2e8ddae0802151df1d2b0e7cf', 'loadClassLoader'), true, true);
23
- self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit10fe3fd2e8ddae0802151df1d2b0e7cf', 'loadClassLoader'));
25
-
26
- $map = require __DIR__ . '/autoload_namespaces.php';
27
- foreach ($map as $namespace => $path) {
28
- $loader->set($namespace, $path);
29
- }
30
-
31
- $map = require __DIR__ . '/autoload_psr4.php';
32
- foreach ($map as $namespace => $path) {
33
- $loader->setPsr4($namespace, $path);
34
- }
35
-
36
- $classMap = require __DIR__ . '/autoload_classmap.php';
37
- if ($classMap) {
38
- $loader->addClassMap($classMap);
39
- }
40
-
41
- $loader->register(true);
42
-
43
- $includeFiles = require __DIR__ . '/autoload_files.php';
44
- foreach ($includeFiles as $fileIdentifier => $file) {
45
- composerRequire10fe3fd2e8ddae0802151df1d2b0e7cf($fileIdentifier, $file);
46
- }
47
-
48
- return $loader;
49
- }
50
- }
51
-
52
- function composerRequire10fe3fd2e8ddae0802151df1d2b0e7cf($fileIdentifier, $file)
53
- {
54
- if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
55
- require $file;
56
-
57
- $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
58
- }
59
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/autoload_real_52.php DELETED
@@ -1,46 +0,0 @@
1
- <?php
2
-
3
- // autoload_real_52.php generated by xrstf/composer-php52
4
-
5
- class ComposerAutoloaderInit0fc127e51dc28fab98c5e4f3a39d42f1 {
6
- private static $loader;
7
-
8
- public static function loadClassLoader($class) {
9
- if ('xrstf_Composer52_ClassLoader' === $class) {
10
- require dirname(__FILE__).'/ClassLoader52.php';
11
- }
12
- }
13
-
14
- /**
15
- * @return xrstf_Composer52_ClassLoader
16
- */
17
- public static function getLoader() {
18
- if (null !== self::$loader) {
19
- return self::$loader;
20
- }
21
-
22
- spl_autoload_register(array('ComposerAutoloaderInit0fc127e51dc28fab98c5e4f3a39d42f1', 'loadClassLoader'), true /*, true */);
23
- self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit0fc127e51dc28fab98c5e4f3a39d42f1', 'loadClassLoader'));
25
-
26
- $vendorDir = dirname(dirname(__FILE__));
27
- $baseDir = dirname($vendorDir);
28
- $dir = dirname(__FILE__);
29
-
30
- $map = require $dir.'/autoload_namespaces.php';
31
- foreach ($map as $namespace => $path) {
32
- $loader->add($namespace, $path);
33
- }
34
-
35
- $classMap = require $dir.'/autoload_classmap.php';
36
- if ($classMap) {
37
- $loader->addClassMap($classMap);
38
- }
39
-
40
- $loader->register(true);
41
-
42
- require $vendorDir . '/codeinwp/themeisle-sdk/load.php';
43
-
44
- return $loader;
45
- }
46
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installed.json DELETED
@@ -1,77 +0,0 @@
1
- [
2
- {
3
- "name": "xrstf/composer-php52",
4
- "version": "v1.0.20",
5
- "version_normalized": "1.0.20.0",
6
- "source": {
7
- "type": "git",
8
- "url": "https://github.com/composer-php52/composer-php52.git",
9
- "reference": "bd41459d5e27df8d33057842b32377c39e97a5a8"
10
- },
11
- "dist": {
12
- "type": "zip",
13
- "url": "https://api.github.com/repos/composer-php52/composer-php52/zipball/bd41459d5e27df8d33057842b32377c39e97a5a8",
14
- "reference": "bd41459d5e27df8d33057842b32377c39e97a5a8",
15
- "shasum": ""
16
- },
17
- "time": "2016-04-16 21:52:24",
18
- "type": "library",
19
- "extra": {
20
- "branch-alias": {
21
- "dev-default": "1.x-dev"
22
- }
23
- },
24
- "installation-source": "dist",
25
- "autoload": {
26
- "psr-0": {
27
- "xrstf\\Composer52": "lib/"
28
- }
29
- },
30
- "notification-url": "https://packagist.org/downloads/",
31
- "license": [
32
- "MIT"
33
- ]
34
- },
35
- {
36
- "name": "codeinwp/themeisle-sdk",
37
- "version": "dev-master",
38
- "version_normalized": "9999999-dev",
39
- "source": {
40
- "type": "git",
41
- "url": "git@github.com:Codeinwp/themeisle-sdk.git",
42
- "reference": "1fb829fd268e739864b6f1822239c1112d80853f"
43
- },
44
- "dist": {
45
- "type": "zip",
46
- "url": "https://api.github.com/repos/Codeinwp/themeisle-sdk/zipball/1fb829fd268e739864b6f1822239c1112d80853f",
47
- "reference": "1fb829fd268e739864b6f1822239c1112d80853f",
48
- "shasum": ""
49
- },
50
- "time": "2017-08-22 16:09:34",
51
- "type": "library",
52
- "installation-source": "dist",
53
- "autoload": {
54
- "files": [
55
- "load.php"
56
- ]
57
- },
58
- "license": [
59
- "GPL-2.0+"
60
- ],
61
- "authors": [
62
- {
63
- "name": "ThemeIsle team",
64
- "email": "friends@themeisle.com",
65
- "homepage": "https://themeisle.com"
66
- }
67
- ],
68
- "description": "ThemeIsle SDK ",
69
- "homepage": "https://github.com/Codeinwp/themeisle-sdk",
70
- "keywords": [
71
- "wordpress"
72
- ],
73
- "support": {
74
- "issues": "https://github.com/Codeinwp/themeisle-sdk/issues"
75
- }
76
- }
77
- ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/xrstf/composer-php52/LICENSE DELETED
@@ -1,19 +0,0 @@
1
- Copyright (c) 2013 Christoph Mewes
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining a copy
4
- of this software and associated documentation files (the "Software"), to deal
5
- in the Software without restriction, including without limitation the rights
6
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- copies of the Software, and to permit persons to whom the Software is furnished
8
- to do so, subject to the following conditions:
9
-
10
- The above copyright notice and this permission notice shall be included in all
11
- copies or substantial portions of the Software.
12
-
13
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- THE SOFTWARE.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/xrstf/composer-php52/README.md DELETED
@@ -1,37 +0,0 @@
1
- PHP 5.2 Autoloading for Composer
2
- ================================
3
-
4
- This package provides an easy way to get a PHP 5.2 compatible autoloader out of Composer. The generated autoloader is fully compatible to the original and is written into separate files, each ending with `_52.php`.
5
-
6
- Legacy
7
- ------
8
-
9
- Please do not use this, if you can avoid it. It's a horrible hack, often breaks and is extremely tied to Composer's interna. This package was originally developed in 2012, when PHP 5.2 was much more common on cheap webhosts.
10
-
11
- In 2016, this package has been moved from Bitbucket to a Github organization, because the original developer could no longer reliably maintain it. This is the reason for this legacy package name ``xrstf/...``.
12
-
13
- Usage
14
- -----
15
-
16
- In your project's `composer.json`, add the following lines:
17
-
18
- ```json
19
- {
20
- "require": {
21
- "xrstf/composer-php52": "1.*"
22
- },
23
- "scripts": {
24
- "post-install-cmd": [
25
- "xrstf\\Composer52\\Generator::onPostInstallCmd"
26
- ],
27
- "post-update-cmd": [
28
- "xrstf\\Composer52\\Generator::onPostInstallCmd"
29
- ],
30
- "post-autoload-dump": [
31
- "xrstf\\Composer52\\Generator::onPostInstallCmd"
32
- ]
33
- }
34
- }
35
- ```
36
-
37
- After the next update/install, you will have a `vendor/autoload_52.php` file, that you can simply include and use in PHP 5.2 projects.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/xrstf/composer-php52/composer.json DELETED
@@ -1,26 +0,0 @@
1
- {
2
- "name": "xrstf/composer-php52",
3
- "license": "MIT",
4
- "support": {
5
- "source": "https://github.com/composer-php52/composer-php52",
6
- "issues": "https://github.com/composer-php52/composer-php52/issues"
7
- },
8
- "autoload": {
9
- "psr-0": {
10
- "xrstf\\Composer52": "lib/"
11
- }
12
- },
13
- "scripts": {
14
- "post-install-cmd": [
15
- "xrstf\\Composer52\\Generator::onPostInstallCmd"
16
- ],
17
- "post-update-cmd": [
18
- "xrstf\\Composer52\\Generator::onPostInstallCmd"
19
- ]
20
- },
21
- "extra": {
22
- "branch-alias": {
23
- "dev-default": "1.x-dev"
24
- }
25
- }
26
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/xrstf/composer-php52/lib/xrstf/Composer52/AutoloadGenerator.php DELETED
@@ -1,346 +0,0 @@
1
- <?php
2
- /*
3
- * Copyright (c) 2013, Christoph Mewes, http://www.xrstf.de
4
- *
5
- * This file is released under the terms of the MIT license. You can find the
6
- * complete text in the attached LICENSE file or online at:
7
- *
8
- * http://www.opensource.org/licenses/mit-license.php
9
- *
10
- * --------------------------------------------------------------------------
11
- *
12
- * 99% of this is copied as-is from the original Composer source code and is
13
- * released under MIT license as well. Copyright goes to:
14
- *
15
- * - Igor Wiedler <igor@wiedler.ch>
16
- * - Jordi Boggiano <j.boggiano@seld.be>
17
- */
18
-
19
- namespace xrstf\Composer52;
20
-
21
- use Composer\Autoload\AutoloadGenerator as BaseGenerator;
22
- use Composer\Autoload\ClassMapGenerator;
23
- use Composer\Config;
24
- use Composer\Installer\InstallationManager;
25
- use Composer\Package\AliasPackage;
26
- use Composer\Package\PackageInterface;
27
- use Composer\Repository\InstalledRepositoryInterface;
28
- use Composer\Util\Filesystem;
29
-
30
- class AutoloadGenerator extends BaseGenerator {
31
-
32
- /**
33
- * @var bool
34
- */
35
- private $classMapAuthoritative = false;
36
-
37
- public function __construct() {
38
- // do nothing (but keep this constructor so we can build an instance without the need for an event dispatcher)
39
- }
40
-
41
- /**
42
- * Whether or not generated autoloader considers the class map
43
- * authoritative.
44
- *
45
- * @param bool $classMapAuthoritative
46
- */
47
- public function setClassMapAuthoritative($classMapAuthoritative)
48
- {
49
- $this->classMapAuthoritative = (boolean) $classMapAuthoritative;
50
- }
51
-
52
- public function dump(Config $config, InstalledRepositoryInterface $localRepo, PackageInterface $mainPackage, InstallationManager $installationManager, $targetDir, $scanPsr0Packages = false, $suffix = '') {
53
- if ($this->classMapAuthoritative) {
54
- // Force scanPsr0Packages when classmap is authoritative
55
- $scanPsr0Packages = true;
56
- }
57
-
58
- $filesystem = new Filesystem();
59
- $filesystem->ensureDirectoryExists($config->get('vendor-dir'));
60
-
61
- $cwd = getcwd();
62
- $basePath = $filesystem->normalizePath($cwd);
63
- $vendorPath = $filesystem->normalizePath(realpath($config->get('vendor-dir')));
64
- $targetDir = $vendorPath.'/'.$targetDir;
65
- $filesystem->ensureDirectoryExists($targetDir);
66
-
67
- $useGlobalIncludePath = (bool) $config->get('use-include-path');
68
- $prependAutoloader = $config->get('prepend-autoloader') === false ? 'false' : 'true';
69
- $classMapAuthoritative = $config->get('classmap-authoritative');
70
-
71
- $vendorPathCode = $filesystem->findShortestPathCode(realpath($targetDir), $vendorPath, true);
72
- $vendorPathToTargetDirCode = $filesystem->findShortestPathCode($vendorPath, realpath($targetDir), true);
73
-
74
- $appBaseDirCode = $filesystem->findShortestPathCode($vendorPath, $basePath, true);
75
- $appBaseDirCode = str_replace('__DIR__', '$vendorDir', $appBaseDirCode);
76
-
77
- // add 5.2 compat
78
- $vendorPathCode = str_replace('__DIR__', 'dirname(__FILE__)', $vendorPathCode);
79
- $vendorPathToTargetDirCode = str_replace('__DIR__', 'dirname(__FILE__)', $vendorPathToTargetDirCode);
80
-
81
- $packageMap = $this->buildPackageMap($installationManager, $mainPackage, $localRepo->getCanonicalPackages());
82
- $autoloads = $this->parseAutoloads($packageMap, $mainPackage);
83
-
84
- // add custom psr-0 autoloading if the root package has a target dir
85
- $targetDirLoader = null;
86
- $mainAutoload = $mainPackage->getAutoload();
87
- if ($mainPackage->getTargetDir() && !empty($mainAutoload['psr-0'])) {
88
- $levels = count(explode('/', $filesystem->normalizePath($mainPackage->getTargetDir())));
89
- $prefixes = implode(', ', array_map(function ($prefix) {
90
- return var_export($prefix, true);
91
- }, array_keys($mainAutoload['psr-0'])));
92
-
93
- $baseDirFromTargetDirCode = $filesystem->findShortestPathCode($targetDir, $basePath, true);
94
-
95
- $targetDirLoader = <<<EOF
96
-
97
- public static function autoload(\$class) {
98
- \$dir = $baseDirFromTargetDirCode.'/';
99
- \$prefixes = array($prefixes);
100
-
101
- foreach (\$prefixes as \$prefix) {
102
- if (0 !== strpos(\$class, \$prefix)) {
103
- continue;
104
- }
105
-
106
- \$path = explode(DIRECTORY_SEPARATOR, self::getClassPath(\$class));
107
- \$path = \$dir.implode('/', array_slice(\$path, $levels));
108
-
109
- if (!\$path = self::resolveIncludePath(\$path)) {
110
- return false;
111
- }
112
-
113
- require \$path;
114
- return true;
115
- }
116
- }
117
-
118
- EOF;
119
- }
120
-
121
- $filesCode = "";
122
- $autoloads['files'] = new \RecursiveIteratorIterator(new \RecursiveArrayIterator($autoloads['files']));
123
- foreach ($autoloads['files'] as $functionFile) {
124
- // don't include file if it is using PHP 5.3+ syntax
125
- // https://bitbucket.org/xrstf/composer-php52/issue/4
126
- if ($this->isPHP53($functionFile)) {
127
- $filesCode .= '// require '.$this->getPathCode($filesystem, $basePath, $vendorPath, $functionFile)."; // disabled because of PHP 5.3 syntax\n";
128
- }
129
- else {
130
- $filesCode .= ' require '.$this->getPathCode($filesystem, $basePath, $vendorPath, $functionFile).";\n";
131
- }
132
- }
133
-
134
- if (!$suffix) {
135
- $suffix = md5(uniqid('', true));
136
- }
137
-
138
- $includePathFile = $this->getIncludePathsFile($packageMap, $filesystem, $basePath, $vendorPath, $vendorPathCode, $appBaseDirCode);
139
-
140
- file_put_contents($vendorPath.'/autoload_52.php', $this->getAutoloadFile($vendorPathToTargetDirCode, $suffix));
141
- file_put_contents($targetDir.'/autoload_real_52.php', $this->getAutoloadRealFile(true, (bool) $includePathFile, $targetDirLoader, $filesCode, $vendorPathCode, $appBaseDirCode, $suffix, $useGlobalIncludePath, $prependAutoloader));
142
-
143
- // use stream_copy_to_stream instead of copy
144
- // to work around https://bugs.php.net/bug.php?id=64634
145
- $sourceLoader = fopen(__DIR__.'/ClassLoader.php', 'r');
146
- $targetLoader = fopen($targetDir.'/ClassLoader52.php', 'w+');
147
- stream_copy_to_stream($sourceLoader, $targetLoader);
148
- fclose($sourceLoader);
149
- fclose($targetLoader);
150
- unset($sourceLoader, $targetLoader);
151
- }
152
-
153
- protected function isPHP53($file) {
154
- $tokens = token_get_all(file_get_contents($file));
155
- $php53 = array(T_DIR, T_GOTO, T_NAMESPACE, T_NS_C, T_NS_SEPARATOR, T_USE);
156
-
157
- // PHP 5.4+
158
- if (defined('T_TRAIT')) {
159
- $php53[] = T_TRAIT;
160
- $php53[] = T_TRAIT_C;
161
- $php53[] = T_TRAIT_C;
162
- }
163
-
164
- // PHP 5.5+
165
- if (defined('T_FINALLY')) {
166
- $php53[] = T_FINALLY;
167
- $php53[] = T_YIELD;
168
- }
169
-
170
- foreach ($tokens as $token) {
171
- if (is_array($token) && in_array($token[0], $php53)) {
172
- return true;
173
- }
174
- }
175
-
176
- return false;
177
- }
178
-
179
- protected function getIncludePathsFile(array $packageMap, Filesystem $filesystem, $basePath, $vendorPath, $vendorPathCode, $appBaseDirCode) {
180
- $includePaths = array();
181
-
182
- foreach ($packageMap as $item) {
183
- list($package, $installPath) = $item;
184
-
185
- if (null !== $package->getTargetDir() && strlen($package->getTargetDir()) > 0) {
186
- $installPath = substr($installPath, 0, -strlen('/'.$package->getTargetDir()));
187
- }
188
-
189
- foreach ($package->getIncludePaths() as $includePath) {
190
- $includePath = trim($includePath, '/');
191
- $includePaths[] = empty($installPath) ? $includePath : $installPath.'/'.$includePath;
192
- }
193
- }
194
-
195
- if (!$includePaths) {
196
- return;
197
- }
198
-
199
- $includePathsFile = <<<EOF
200
- <?php
201
-
202
- // include_paths_52.php generated by xrstf/composer-php52
203
-
204
- \$vendorDir = $vendorPathCode;
205
- \$baseDir = $appBaseDirCode;
206
-
207
- return array(
208
-
209
- EOF;
210
-
211
- foreach ($includePaths as $path) {
212
- $includePathsFile .= "\t" . $this->getPathCode($filesystem, $basePath, $vendorPath, $path) . ",\n";
213
- }
214
-
215
- return $includePathsFile . ");\n";
216
- }
217
-
218
- protected function getAutoloadFile($vendorPathToTargetDirCode, $suffix) {
219
- return <<<AUTOLOAD
220
- <?php
221
-
222
- // autoload_52.php generated by xrstf/composer-php52
223
-
224
- require_once $vendorPathToTargetDirCode.'/autoload_real_52.php';
225
-
226
- return ComposerAutoloaderInit$suffix::getLoader();
227
-
228
- AUTOLOAD;
229
- }
230
-
231
- protected function getAutoloadRealFile($useClassMap, $useIncludePath, $targetDirLoader, $filesCode, $vendorPathCode, $appBaseDirCode, $suffix, $useGlobalIncludePath, $prependAutoloader, $staticPhpVersion = 70000) {
232
- // TODO the class ComposerAutoloaderInit should be revert to a closure
233
- // when APC has been fixed:
234
- // - https://github.com/composer/composer/issues/959
235
- // - https://bugs.php.net/bug.php?id=52144
236
- // - https://bugs.php.net/bug.php?id=61576
237
- // - https://bugs.php.net/bug.php?id=59298
238
-
239
- if ($filesCode) {
240
- $filesCode = "\n\n".rtrim($filesCode);
241
- }
242
-
243
- $file = <<<HEADER
244
- <?php
245
-
246
- // autoload_real_52.php generated by xrstf/composer-php52
247
-
248
- class ComposerAutoloaderInit$suffix {
249
- private static \$loader;
250
-
251
- public static function loadClassLoader(\$class) {
252
- if ('xrstf_Composer52_ClassLoader' === \$class) {
253
- require dirname(__FILE__).'/ClassLoader52.php';
254
- }
255
- }
256
-
257
- /**
258
- * @return xrstf_Composer52_ClassLoader
259
- */
260
- public static function getLoader() {
261
- if (null !== self::\$loader) {
262
- return self::\$loader;
263
- }
264
-
265
- spl_autoload_register(array('ComposerAutoloaderInit$suffix', 'loadClassLoader'), true /*, true */);
266
- self::\$loader = \$loader = new xrstf_Composer52_ClassLoader();
267
- spl_autoload_unregister(array('ComposerAutoloaderInit$suffix', 'loadClassLoader'));
268
-
269
- \$vendorDir = $vendorPathCode;
270
- \$baseDir = $appBaseDirCode;
271
- \$dir = dirname(__FILE__);
272
-
273
-
274
- HEADER;
275
-
276
- if ($useIncludePath) {
277
- $file .= <<<'INCLUDE_PATH'
278
- $includePaths = require $dir.'/include_paths.php';
279
- array_push($includePaths, get_include_path());
280
- set_include_path(implode(PATH_SEPARATOR, $includePaths));
281
-
282
-
283
- INCLUDE_PATH;
284
- }
285
-
286
- $file .= <<<'PSR0'
287
- $map = require $dir.'/autoload_namespaces.php';
288
- foreach ($map as $namespace => $path) {
289
- $loader->add($namespace, $path);
290
- }
291
-
292
-
293
- PSR0;
294
-
295
- if ($useClassMap) {
296
- $file .= <<<'CLASSMAP'
297
- $classMap = require $dir.'/autoload_classmap.php';
298
- if ($classMap) {
299
- $loader->addClassMap($classMap);
300
- }
301
-
302
-
303
- CLASSMAP;
304
- }
305
-
306
- if ($this->classMapAuthoritative) {
307
- $file .= <<<'CLASSMAPAUTHORITATIVE'
308
- $loader->setClassMapAuthoritative(true);
309
-
310
- CLASSMAPAUTHORITATIVE;
311
- }
312
-
313
- if ($useGlobalIncludePath) {
314
- $file .= <<<'INCLUDEPATH'
315
- $loader->setUseIncludePath(true);
316
-
317
-
318
- INCLUDEPATH;
319
- }
320
-
321
- if ($targetDirLoader) {
322
- $file .= <<<REGISTER_AUTOLOAD
323
- spl_autoload_register(array('ComposerAutoloaderInit$suffix', 'autoload'), true);
324
-
325
-
326
- REGISTER_AUTOLOAD;
327
-
328
- }
329
-
330
- $file .= <<<METHOD_FOOTER
331
- \$loader->register($prependAutoloader);{$filesCode}
332
-
333
- return \$loader;
334
- }
335
-
336
- METHOD_FOOTER;
337
-
338
- $file .= $targetDirLoader;
339
-
340
- return $file . <<<FOOTER
341
- }
342
-
343
- FOOTER;
344
-
345
- }
346
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/xrstf/composer-php52/lib/xrstf/Composer52/ClassLoader.php DELETED
@@ -1,271 +0,0 @@
1
- <?php
2
- /*
3
- * Copyright (c) 2013, Christoph Mewes, http://www.xrstf.de
4
- *
5
- * This file is released under the terms of the MIT license. You can find the
6
- * complete text in the attached LICENSE file or online at:
7
- *
8
- * http://www.opensource.org/licenses/mit-license.php
9
- *
10
- * --------------------------------------------------------------------------
11
- *
12
- * 99% of this is copied as-is from the original Composer source code and is
13
- * released under MIT license as well. Copyright goes to:
14
- *
15
- * - Fabien Potencier <fabien@symfony.com>
16
- * - Jordi Boggiano <j.boggiano@seld.be>
17
- */
18
-
19
- class xrstf_Composer52_ClassLoader {
20
- private $prefixes = array();
21
- private $fallbackDirs = array();
22
- private $useIncludePath = false;
23
- private $classMap = array();
24
- private $classMapAuthoratative = false;
25
- private $allowUnderscore = false;
26
-
27
- /**
28
- * @param boolean $flag true to allow class names with a leading underscore, false to disable
29
- */
30
- public function setAllowUnderscore($flag) {
31
- $this->allowUnderscore = (boolean) $flag;
32
- }
33
-
34
- /**
35
- * @return array
36
- */
37
- public function getPrefixes() {
38
- return $this->prefixes;
39
- }
40
-
41
- /**
42
- * Turns off searching the prefix and fallback directories for classes
43
- * that have not been registered with the class map.
44
- *
45
- * @param bool $classMapAuthoratative
46
- */
47
- public function setClassMapAuthoritative($classMapAuthoratative) {
48
- $this->classMapAuthoratative = $classMapAuthoratative;
49
- }
50
-
51
- /**
52
- * Should class lookup fail if not found in the current class map?
53
- *
54
- * @return bool
55
- */
56
- public function getClassMapAuthoratative() {
57
- return $this->classMapAuthoratative;
58
- }
59
-
60
- /**
61
- * @return array
62
- */
63
- public function getFallbackDirs() {
64
- return $this->fallbackDirs;
65
- }
66
-
67
- /**
68
- * @return array
69
- */
70
- public function getClassMap() {
71
- return $this->classMap;
72
- }
73
-
74
- /**
75
- * @param array $classMap class to filename map
76
- */
77
- public function addClassMap(array $classMap) {
78
- if ($this->classMap) {
79
- $this->classMap = array_merge($this->classMap, $classMap);
80
- }
81
- else {
82
- $this->classMap = $classMap;
83
- }
84
- }
85
-
86
- /**
87
- * Registers a set of classes, merging with any others previously set.
88
- *
89
- * @param string $prefix the classes prefix
90
- * @param array|string $paths the location(s) of the classes
91
- * @param bool $prepend prepend the location(s)
92
- */
93
- public function add($prefix, $paths, $prepend = false) {
94
- if (!$prefix) {
95
- if ($prepend) {
96
- $this->fallbackDirs = array_merge(
97
- (array) $paths,
98
- $this->fallbackDirs
99
- );
100
- }
101
- else {
102
- $this->fallbackDirs = array_merge(
103
- $this->fallbackDirs,
104
- (array) $paths
105
- );
106
- }
107
-
108
- return;
109
- }
110
-
111
- if (!isset($this->prefixes[$prefix])) {
112
- $this->prefixes[$prefix] = (array) $paths;
113
- return;
114
- }
115
-
116
- if ($prepend) {
117
- $this->prefixes[$prefix] = array_merge(
118
- (array) $paths,
119
- $this->prefixes[$prefix]
120
- );
121
- }
122
- else {
123
- $this->prefixes[$prefix] = array_merge(
124
- $this->prefixes[$prefix],
125
- (array) $paths
126
- );
127
- }
128
- }
129
-
130
- /**
131
- * Registers a set of classes, replacing any others previously set.
132
- *
133
- * @param string $prefix the classes prefix
134
- * @param array|string $paths the location(s) of the classes
135
- */
136
- public function set($prefix, $paths) {
137
- if (!$prefix) {
138
- $this->fallbackDirs = (array) $paths;
139
- return;
140
- }
141
-
142
- $this->prefixes[$prefix] = (array) $paths;
143
- }
144
-
145
- /**
146
- * Turns on searching the include path for class files.
147
- *
148
- * @param bool $useIncludePath
149
- */
150
- public function setUseIncludePath($useIncludePath) {
151
- $this->useIncludePath = $useIncludePath;
152
- }
153
-
154
- /**
155
- * Can be used to check if the autoloader uses the include path to check
156
- * for classes.
157
- *
158
- * @return bool
159
- */
160
- public function getUseIncludePath() {
161
- return $this->useIncludePath;
162
- }
163
-
164
- /**
165
- * Registers this instance as an autoloader.
166
- */
167
- public function register() {
168
- spl_autoload_register(array($this, 'loadClass'), true);
169
- }
170
-
171
- /**
172
- * Unregisters this instance as an autoloader.
173
- */
174
- public function unregister() {
175
- spl_autoload_unregister(array($this, 'loadClass'));
176
- }
177
-
178
- /**
179
- * Loads the given class or interface.
180
- *
181
- * @param string $class the name of the class
182
- * @return bool|null true, if loaded
183
- */
184
- public function loadClass($class) {
185
- if ($file = $this->findFile($class)) {
186
- include $file;
187
- return true;
188
- }
189
- }
190
-
191
- /**
192
- * Finds the path to the file where the class is defined.
193
- *
194
- * @param string $class the name of the class
195
- * @return string|null the path, if found
196
- */
197
- public function findFile($class) {
198
- if ('\\' === $class[0]) {
199
- $class = substr($class, 1);
200
- }
201
-
202
- if (isset($this->classMap[$class])) {
203
- return $this->classMap[$class];
204
- }
205
- elseif ($this->classMapAuthoratative) {
206
- return false;
207
- }
208
-
209
- $classPath = $this->getClassPath($class);
210
-
211
- foreach ($this->prefixes as $prefix => $dirs) {
212
- if (0 === strpos($class, $prefix)) {
213
- foreach ($dirs as $dir) {
214
- if (file_exists($dir.DIRECTORY_SEPARATOR.$classPath)) {
215
- return $dir.DIRECTORY_SEPARATOR.$classPath;
216
- }
217
- }
218
- }
219
- }
220
-
221
- foreach ($this->fallbackDirs as $dir) {
222
- if (file_exists($dir.DIRECTORY_SEPARATOR.$classPath)) {
223
- return $dir.DIRECTORY_SEPARATOR.$classPath;
224
- }
225
- }
226
-
227
- if ($this->useIncludePath && $file = self::resolveIncludePath($classPath)) {
228
- return $file;
229
- }
230
-
231
- return $this->classMap[$class] = false;
232
- }
233
-
234
- private function getClassPath($class) {
235
- if (false !== $pos = strrpos($class, '\\')) {
236
- // namespaced class name
237
- $classPath = str_replace('\\', DIRECTORY_SEPARATOR, substr($class, 0, $pos)).DIRECTORY_SEPARATOR;
238
- $className = substr($class, $pos + 1);
239
- }
240
- else {
241
- // PEAR-like class name
242
- $classPath = null;
243
- $className = $class;
244
- }
245
-
246
- $className = str_replace('_', DIRECTORY_SEPARATOR, $className);
247
-
248
- // restore the prefix
249
- if ($this->allowUnderscore && DIRECTORY_SEPARATOR === $className[0]) {
250
- $className[0] = '_';
251
- }
252
-
253
- $classPath .= $className.'.php';
254
-
255
- return $classPath;
256
- }
257
-
258
- public static function resolveIncludePath($classPath) {
259
- $paths = explode(PATH_SEPARATOR, get_include_path());
260
-
261
- foreach ($paths as $path) {
262
- $path = rtrim($path, '/\\');
263
-
264
- if ($file = file_exists($path.DIRECTORY_SEPARATOR.$file)) {
265
- return $file;
266
- }
267
- }
268
-
269
- return false;
270
- }
271
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/xrstf/composer-php52/lib/xrstf/Composer52/Generator.php DELETED
@@ -1,39 +0,0 @@
1
- <?php
2
- /*
3
- * Copyright (c) 2013, Christoph Mewes, http://www.xrstf.de
4
- *
5
- * This file is released under the terms of the MIT license. You can find the
6
- * complete text in the attached LICENSE file or online at:
7
- *
8
- * http://www.opensource.org/licenses/mit-license.php
9
- */
10
-
11
- namespace xrstf\Composer52;
12
-
13
- use Composer\Repository\CompositeRepository;
14
- use Composer\Script\Event;
15
-
16
- class Generator {
17
- public static function onPostInstallCmd(Event $event) {
18
- $composer = $event->getComposer();
19
- $installationManager = $composer->getInstallationManager();
20
- $repoManager = $composer->getRepositoryManager();
21
- $localRepo = $repoManager->getLocalRepository();
22
- $package = $composer->getPackage();
23
- $config = $composer->getConfig();
24
-
25
- // We can't gain access to the Command's input object, so we have to look
26
- // for -o / --optimize-autoloader ourselves. Sadly, neither getopt() works
27
- // (always returns an empty array), nor does Symfony's Console Input, as
28
- // it expects a full definition of the current command line and we can't
29
- // provide that.
30
-
31
- $args = $_SERVER['argv'];
32
- $optimize = in_array('-o', $args) || in_array('--optimize-autoloader', $args) || in_array('--optimize', $args);
33
-
34
- $suffix = $config->get('autoloader-suffix');
35
-
36
- $generator = new AutoloadGenerator();
37
- $generator->dump($config, $localRepo, $package, $installationManager, 'composer', $optimize, $suffix);
38
- }
39
- }