WP Meta SEO - Version 4.3.4

Version Description

  • Fix : Remove some jQuery deprecated functions
    • Fix : Update Google Analytics library
Download this release

Release Info

Developer JoomUnited
Plugin Icon 128x128 WP Meta SEO
Version 4.3.4
Comparing to
See all releases

Code changes from version 4.3.3 to 4.3.4

Files changed (89) hide show
  1. assets/css/bootstrap/bootstrap-multiselect.js +4 -4
  2. assets/css/category_field.css +1 -1
  3. assets/css/google-analytics/admin-widgets.css +1 -1
  4. assets/css/jquery.qtip.css +0 -1
  5. assets/css/metabox-tabs.css +2 -2
  6. assets/css/metaseo-quirk.css +2 -2
  7. assets/css/metaseo_admin.css +2 -2
  8. assets/css/my_qtip.css +0 -16
  9. assets/js/category_field.js +9 -18
  10. assets/js/cliffpyles.js +9 -17
  11. assets/js/dashboard.js +37 -45
  12. assets/js/dashboard_widgets.js +9 -18
  13. assets/js/google-analytics/google_analytics.js +19 -28
  14. assets/js/jPages.js +12 -12
  15. assets/js/jquery.cookie.js +2 -2
  16. assets/js/jquery.qtip.min.js +0 -4
  17. assets/js/metaseo_admin.js +44 -52
  18. assets/js/metaseo_sitemap.js +11 -19
  19. assets/js/my-qtips.js +0 -61
  20. assets/js/notification.js +1 -1
  21. assets/js/settings.js +11 -20
  22. assets/js/wp-metaseo-admin-media.js +1 -1
  23. assets/js/wp-metaseo-metabox.js +25 -45
  24. assets/js/wpms-broken-link.js +27 -46
  25. assets/js/wpms-bulk-action.js +2 -2
  26. assets/js/wpms-link-title-field.js +1 -1
  27. assets/js/wpms-seokeyword-metabox.js +6 -6
  28. assets/js/wpms-tabs.js +1 -1
  29. assets/tippy/my-tippy.css +27 -0
  30. assets/tippy/my-tippy.js +37 -0
  31. assets/tippy/tippy-core.js +6 -0
  32. assets/tippy/tippy.css +1 -0
  33. assets/tippy/tippy.js +2 -0
  34. assets/wordpress-css-framework/js/script.js +7 -7
  35. assets/wordpress-css-framework/js/tabs.js +1 -1
  36. inc/SrcGoogle/Google/Auth/Abstract.php +0 -40
  37. inc/SrcGoogle/Google/Auth/AppIdentity.php +0 -101
  38. inc/SrcGoogle/Google/Auth/AssertionCredentials.php +0 -143
  39. inc/SrcGoogle/Google/Auth/LoginTicket.php +0 -76
  40. inc/SrcGoogle/Google/Auth/OAuth2.php +0 -547
  41. inc/SrcGoogle/Google/Auth/Simple.php +0 -65
  42. inc/SrcGoogle/Google/Cache/Abstract.php +0 -58
  43. inc/SrcGoogle/Google/Cache/Apc.php +0 -108
  44. inc/SrcGoogle/Google/Cache/File.php +0 -186
  45. inc/SrcGoogle/Google/Cache/Memcache.php +0 -178
  46. inc/SrcGoogle/Google/Cache/Null.php +0 -54
  47. inc/SrcGoogle/Google/Client.php +0 -761
  48. inc/SrcGoogle/Google/Collection.php +0 -93
  49. inc/SrcGoogle/Google/Config.php +0 -447
  50. inc/SrcGoogle/Google/Http/Batch.php +0 -138
  51. inc/SrcGoogle/Google/Http/CacheParser.php +0 -182
  52. inc/SrcGoogle/Google/Http/MediaFileUpload.php +0 -315
  53. inc/SrcGoogle/Google/Http/REST.php +0 -143
  54. inc/SrcGoogle/Google/Http/Request.php +0 -498
  55. inc/SrcGoogle/Google/IO/Abstract.php +0 -340
  56. inc/SrcGoogle/Google/IO/Curl.php +0 -153
  57. inc/SrcGoogle/Google/IO/Stream.php +0 -202
  58. inc/SrcGoogle/Google/IO/cacerts.pem +0 -2183
  59. inc/SrcGoogle/Google/Logger/Abstract.php +0 -410
  60. inc/SrcGoogle/Google/Logger/File.php +0 -149
  61. inc/SrcGoogle/Google/Logger/Psr.php +0 -93
  62. inc/SrcGoogle/Google/Model.php +0 -283
  63. inc/SrcGoogle/Google/Service.php +0 -45
  64. inc/SrcGoogle/Google/Service/Analytics.php +0 -11796
  65. inc/SrcGoogle/Google/Service/Exception.php +0 -49
  66. inc/SrcGoogle/Google/Service/Resource.php +0 -240
  67. inc/SrcGoogle/Google/Signer/P12.php +0 -78
  68. inc/SrcGoogle/Google/Utils.php +0 -147
  69. inc/SrcGoogle/Google/Utils/URITemplate.php +0 -320
  70. inc/SrcGoogle/Google/Verifier/Pem.php +0 -78
  71. inc/autoload.php +0 -46
  72. inc/class.metaseo-admin.php +76 -46
  73. inc/class.metaseo-broken-link-table.php +10 -10
  74. inc/class.metaseo-content-list-table.php +2 -2
  75. inc/class.metaseo-image-list-table.php +10 -18
  76. inc/class.metaseo-link-list-table.php +1 -1
  77. inc/class.metaseo-metabox.php +14 -7
  78. inc/class.metaseo-sitemap.php +13 -7
  79. inc/class.metaseo-snippet-preview.php +2 -2
  80. inc/google_analytics/tracking/events-classic.php +3 -3
  81. inc/google_analytics/tracking/events-universal.php +5 -5
  82. inc/google_analytics/wpmsgapi.php +19 -19
  83. inc/google_analytics/wpmstools.php +1 -1
  84. inc/install-wizard/content/viewGoogleAnalytics.php +3 -4
  85. inc/install-wizard/handler-wizard.php +3 -4
  86. inc/lib/google-api/LICENSE +203 -0
  87. inc/lib/google-api/README.md +461 -0
  88. inc/lib/google-api/composer.json +47 -0
  89. inc/lib/google-api/composer.lock +2943 -0
assets/css/bootstrap/bootstrap-multiselect.js CHANGED
@@ -586,7 +586,7 @@
586
  $optionsNotThis.prop('selected', false);
587
 
588
  // It's a single selection, so close.
589
- this.$button.click();
590
  }
591
 
592
  if (this.options.selectedClass === "active") {
@@ -673,7 +673,7 @@
673
  this.lastToggledInput = $target;
674
  }
675
 
676
- $target.blur();
677
  }, this));
678
 
679
  // Keyboard support.
@@ -683,7 +683,7 @@
683
  }
684
 
685
  if (event.keyCode === 9 && this.$container.hasClass('open')) {
686
- this.$button.click();
687
  }
688
  else {
689
  var $items = $(this.$container).find("li:not(.divider):not(.disabled) a").filter(":visible");
@@ -724,7 +724,7 @@
724
  if(this.options.enableClickableOptGroups && this.options.multiple) {
725
  $('li.multiselect-group', this.$ul).on('click', $.proxy(function(event) {
726
  event.stopPropagation();
727
- console.log('test');
728
  var group = $(event.target).parent();
729
 
730
  // Search all option in optgroup
586
  $optionsNotThis.prop('selected', false);
587
 
588
  // It's a single selection, so close.
589
+ this.$button.trigger('click');
590
  }
591
 
592
  if (this.options.selectedClass === "active") {
673
  this.lastToggledInput = $target;
674
  }
675
 
676
+ $target.trigger('blur');
677
  }, this));
678
 
679
  // Keyboard support.
683
  }
684
 
685
  if (event.keyCode === 9 && this.$container.hasClass('open')) {
686
+ this.$button.trigger('click');
687
  }
688
  else {
689
  var $items = $(this.$container).find("li:not(.divider):not(.disabled) a").filter(":visible");
724
  if(this.options.enableClickableOptGroups && this.options.multiple) {
725
  $('li.multiselect-group', this.$ul).on('click', $.proxy(function(event) {
726
  event.stopPropagation();
727
+ /*console.log('test');*/
728
  var group = $(event.target).parent();
729
 
730
  // Search all option in optgroup
assets/css/category_field.css CHANGED
@@ -19,7 +19,7 @@
19
  float: left;
20
  }
21
 
22
- .metaseo-qtip {
23
  font-size: 14px !important;
24
  line-height: 18px !important;
25
  }
19
  float: left;
20
  }
21
 
22
+ .metaseo-tippy {
23
  font-size: 14px !important;
24
  line-height: 18px !important;
25
  }
assets/css/google-analytics/admin-widgets.css CHANGED
@@ -270,7 +270,7 @@
270
  display: none !important;
271
  }
272
 
273
- .metaseo-qtip {
274
  font-size: 14px !important;
275
  line-height: 18px !important;
276
  }
270
  display: none !important;
271
  }
272
 
273
+ .metaseo-tippy {
274
  font-size: 14px !important;
275
  line-height: 18px !important;
276
  }
assets/css/jquery.qtip.css DELETED
@@ -1 +0,0 @@
1
- #qtip-overlay.blurs,.qtip-close{cursor:pointer}.qtip{position:absolute;left:-28000px;top:-28000px;display:none;max-width:280px;min-width:50px;font-size:10.5px;line-height:12px;direction:ltr;box-shadow:none;padding:0}.qtip-content,.qtip-titlebar{position:relative;overflow:hidden}.qtip-content{padding:5px 9px;text-align:left;word-wrap:break-word}.qtip-titlebar{padding:5px 35px 5px 10px;border-width:0 0 1px;font-weight:700}.qtip-titlebar+.qtip-content{border-top-width:0!important}.qtip-close{position:absolute;right:-9px;top:-9px;z-index:11;outline:0;border:1px solid transparent}.qtip-titlebar .qtip-close{right:4px;top:50%;margin-top:-9px}* html .qtip-titlebar .qtip-close{top:16px}.qtip-icon .ui-icon,.qtip-titlebar .ui-icon{display:block;text-indent:-1000em;direction:ltr}.qtip-icon,.qtip-icon .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;text-decoration:none}.qtip-icon .ui-icon{width:18px;height:14px;line-height:14px;text-align:center;text-indent:0;font:normal 700 10px/13px Tahoma,sans-serif;color:inherit;background:-100em -100em no-repeat}.qtip-default{border:1px solid #F1D031;background-color:#FFFFA3;color:#555}.qtip-default .qtip-titlebar{background-color:#FFEF93}.qtip-default .qtip-icon{border-color:#CCC;background:#F1F1F1;color:#777}.qtip-default .qtip-titlebar .qtip-close{border-color:#AAA;color:#111}.qtip-light{background-color:#fff;border-color:#E2E2E2;color:#454545}.qtip-light .qtip-titlebar{background-color:#f1f1f1}.qtip-dark{background-color:#505050;border-color:#303030;color:#f3f3f3}.qtip-dark .qtip-titlebar{background-color:#404040}.qtip-dark .qtip-icon{border-color:#444}.qtip-dark .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-cream{background-color:#FBF7AA;border-color:#F9E98E;color:#A27D35}.qtip-red,.qtip-red .qtip-icon,.qtip-red .qtip-titlebar .ui-state-hover{border-color:#D95252}.qtip-cream .qtip-titlebar{background-color:#F0DE7D}.qtip-cream .qtip-close .qtip-icon{background-position:-82px 0}.qtip-red{background-color:#F78B83;color:#912323}.qtip-red .qtip-titlebar{background-color:#F06D65}.qtip-red .qtip-close .qtip-icon{background-position:-102px 0}.qtip-green{background-color:#CAED9E;border-color:#90D93F;color:#3F6219}.qtip-green .qtip-titlebar{background-color:#B0DE78}.qtip-green .qtip-close .qtip-icon{background-position:-42px 0}.qtip-blue{background-color:#E5F6FE;border-color:#ADD9ED;color:#5E99BD}.qtip-blue .qtip-titlebar{background-color:#D0E9F5}.qtip-blue .qtip-close .qtip-icon{background-position:-2px 0}.qtip-shadow{-webkit-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);-moz-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);box-shadow:1px 1px 3px 1px rgba(0,0,0,.15)}.qtip-bootstrap,.qtip-rounded,.qtip-tipsy{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.qtip-rounded .qtip-titlebar{-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.qtip-youtube{-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 3px #333;-moz-box-shadow:0 0 3px #333;box-shadow:0 0 3px #333;color:#fff;border:0 solid transparent;background:#4A4A4A;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#4A4A4A),color-stop(100%,#000));background-image:-webkit-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-moz-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-ms-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-o-linear-gradient(top,#4A4A4A 0,#000 100%)}.qtip-youtube .qtip-titlebar{background-color:#4A4A4A;background-color:rgba(0,0,0,0)}.qtip-youtube .qtip-content{padding:.75em;font:12px arial,sans-serif;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#4a4a4a, EndColorStr=#000000);-ms-filter:"progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#4a4a4a,EndColorStr=#000000);"}.qtip-youtube .qtip-icon{border-color:#222}.qtip-youtube .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-jtools{background:#232323;background:rgba(0,0,0,.7);background-image:-webkit-gradient(linear,left top,left bottom,from(#717171),to(#232323));background-image:-moz-linear-gradient(top,#717171,#232323);background-image:-webkit-linear-gradient(top,#717171,#232323);background-image:-ms-linear-gradient(top,#717171,#232323);background-image:-o-linear-gradient(top,#717171,#232323);border:2px solid #ddd;border:2px solid rgba(241,241,241,1);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 12px #333;-moz-box-shadow:0 0 12px #333;box-shadow:0 0 12px #333}.qtip-jtools .qtip-titlebar{background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171, endColorstr=#4A4A4A);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A)"}.qtip-jtools .qtip-content{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A, endColorstr=#232323);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323)"}.qtip-jtools .qtip-content,.qtip-jtools .qtip-titlebar{background:0 0;color:#fff;border:0 dashed transparent}.qtip-jtools .qtip-icon{border-color:#555}.qtip-jtools .qtip-titlebar .ui-state-hover{border-color:#333}.qtip-cluetip{-webkit-box-shadow:4px 4px 5px rgba(0,0,0,.4);-moz-box-shadow:4px 4px 5px rgba(0,0,0,.4);box-shadow:4px 4px 5px rgba(0,0,0,.4);background-color:#D9D9C2;color:#111;border:0 dashed transparent}.qtip-cluetip .qtip-titlebar{background-color:#87876A;color:#fff;border:0 dashed transparent}.qtip-cluetip .qtip-icon{border-color:#808064}.qtip-cluetip .qtip-titlebar .ui-state-hover{border-color:#696952;color:#696952}.qtip-tipsy{background:#000;background:rgba(0,0,0,.87);color:#fff;border:0 solid transparent;font-size:11px;font-family:'Lucida Grande',sans-serif;font-weight:700;line-height:16px;text-shadow:0 1px #000}.qtip-tipsy .qtip-titlebar{padding:6px 35px 0 10px;background-color:transparent}.qtip-tipsy .qtip-content{padding:6px 10px}.qtip-tipsy .qtip-icon{border-color:#222;text-shadow:none}.qtip-tipsy .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-tipped{border:3px solid #959FA9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-color:#F9F9F9;color:#454545;font-weight:400;font-family:serif}.qtip-tipped .qtip-titlebar{border-bottom-width:0;color:#fff;background:#3A79B8;background-image:-webkit-gradient(linear,left top,left bottom,from(#3A79B8),to(#2E629D));background-image:-webkit-linear-gradient(top,#3A79B8,#2E629D);background-image:-moz-linear-gradient(top,#3A79B8,#2E629D);background-image:-ms-linear-gradient(top,#3A79B8,#2E629D);background-image:-o-linear-gradient(top,#3A79B8,#2E629D);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8, endColorstr=#2E629D);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D)"}.qtip-tipped .qtip-icon{border:2px solid #285589;background:#285589}.qtip-tipped .qtip-icon .ui-icon{background-color:#FBFBFB;color:#555}.qtip-bootstrap{font-size:14px;line-height:20px;color:#333;padding:1px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.qtip-bootstrap .qtip-titlebar{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.qtip-bootstrap .qtip-titlebar .qtip-close{right:11px;top:45%;border-style:none}.qtip-bootstrap .qtip-content{padding:9px 14px}.qtip-bootstrap .qtip-icon{background:0 0}.qtip-bootstrap .qtip-icon .ui-icon{width:auto;height:auto;float:right;font-size:20px;font-weight:700;line-height:18px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}#qtip-overlay,#qtip-overlay div{left:0;top:0;width:100%;height:100%}.qtip-bootstrap .qtip-icon .ui-icon:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}.qtip:not(.ie9haxors) div.qtip-content,.qtip:not(.ie9haxors) div.qtip-titlebar{filter:none;-ms-filter:none}.qtip .qtip-tip{margin:0 auto;overflow:hidden;z-index:10}.qtip .qtip-tip,x:-o-prefocus{visibility:hidden}.qtip .qtip-tip,.qtip .qtip-tip .qtip-vml,.qtip .qtip-tip canvas{position:absolute;color:#123456;background:0 0;border:0 dashed transparent}.qtip .qtip-tip canvas{top:0;left:0}.qtip .qtip-tip .qtip-vml{behavior:url(#default#VML);display:inline-block;visibility:visible}#qtip-overlay{position:fixed}#qtip-overlay div{position:absolute;background-color:#000;opacity:.7;filter:alpha(opacity=70);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"}.qtipmodal-ie6fix{position:absolute!important}
 
assets/css/metabox-tabs.css CHANGED
@@ -458,7 +458,7 @@ i.metaseo_help {
458
  line-height: 45px;
459
  }
460
 
461
- .metaseo-qtip {
462
  font-size: 14px !important;
463
  line-height: 18px !important;
464
  }
@@ -1075,7 +1075,7 @@ input.obtain{
1075
  text-align: center;
1076
  }
1077
 
1078
- .metaseo-qtip {
1079
  min-width: 100px !important;
1080
  }
1081
  }
458
  line-height: 45px;
459
  }
460
 
461
+ .metaseo-tippy {
462
  font-size: 14px !important;
463
  line-height: 18px !important;
464
  }
1075
  text-align: center;
1076
  }
1077
 
1078
+ .metaseo-tippy {
1079
  min-width: 100px !important;
1080
  }
1081
  }
assets/css/metaseo-quirk.css CHANGED
@@ -2339,11 +2339,11 @@ a.text-danger:focus {
2339
  display: none;
2340
  }
2341
 
2342
- .metaseo-qtip {
2343
  font-size: 14px !important;
2344
  line-height: 18px !important;
2345
  }
2346
 
2347
- .metaseo-qtip-dashboard{
2348
  max-width: 450px !important;
2349
  }
2339
  display: none;
2340
  }
2341
 
2342
+ .metaseo-tippy {
2343
  font-size: 14px !important;
2344
  line-height: 18px !important;
2345
  }
2346
 
2347
+ .metaseo-tippy-dashboard{
2348
  max-width: 450px !important;
2349
  }
assets/css/metaseo_admin.css CHANGED
@@ -573,7 +573,7 @@ strong {
573
  display: none;
574
  }
575
 
576
- .wp-meta-seo_page_metaseo_broken_link .metaseo-qtip {
577
  font-size: 12px !important;
578
  line-height: 18px !important;
579
  }
@@ -637,7 +637,7 @@ strong {
637
  cursor: pointer;
638
  }
639
 
640
- .metaseo-qtip {
641
  font-size: 14px !important;
642
  line-height: 18px !important;
643
  }
573
  display: none;
574
  }
575
 
576
+ .wp-meta-seo_page_metaseo_broken_link .metaseo-tippy {
577
  font-size: 12px !important;
578
  line-height: 18px !important;
579
  }
637
  cursor: pointer;
638
  }
639
 
640
+ .metaseo-tippy {
641
  font-size: 14px !important;
642
  line-height: 18px !important;
643
  }
assets/css/my_qtip.css DELETED
@@ -1,16 +0,0 @@
1
- .wpms-widgets-qtip,
2
- .wpms-widgets-qtip_show_arow,
3
- .metaseo-qtip {
4
- border: 1px solid #707070 !important;
5
- color: #fff !important;
6
- background-color: #707070 !important;
7
- z-index: 10000;
8
- border-radius: 2px;
9
- font-size: 12px !important;
10
- line-height: 18px !important;
11
- }
12
-
13
- .wpms-widgets-qtip .qtip-tip,
14
- .metaseo-qtip .qtip-tip {
15
- opacity: 0 !important;
16
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/js/category_field.js CHANGED
@@ -31,25 +31,16 @@ function wpms_cat_show_length(){
31
  }
32
 
33
  jQuery(document).ready(function ($) {
34
- $('.wpms_custom_cat_field').qtip({
35
- content: {
36
- attr: 'data-alt'
37
- },
38
- position: {
39
- my: 'bottom left',
40
- at: 'top center'
41
- },
42
- style: {
43
- tip: {
44
- corner: true
45
- },
46
- classes: 'metaseo-qtip qtip-rounded'
47
- },
48
- hide: {
49
- fixed: true,
50
- delay: 1
51
  }
52
-
53
  });
54
 
55
  $('.wpms_category_metatitle').keyup(function () {
31
  }
32
 
33
  jQuery(document).ready(function ($) {
34
+ tippy('.wpms_custom_cat_field', {
35
+ animation: 'scale',
36
+ duration: 0,
37
+ arrow: false,
38
+ placement: 'top',
39
+ theme: 'metaseo-tippy tippy-rounded',
40
+ onShow(instance) {
41
+ instance.popper.hidden = instance.reference.dataset.tippy ? false : true;
42
+ instance.setContent(instance.reference.dataset.tippy);
 
 
 
 
 
 
 
 
43
  }
 
44
  });
45
 
46
  $('.wpms_category_metatitle').keyup(function () {
assets/js/cliffpyles.js CHANGED
@@ -63,23 +63,15 @@ jQuery(document).ready(function ($) {
63
  $('.metaseo_right .panel-left').html(res.output);
64
  $('.metaseo_right .panel-right').html(res.right_output);
65
  mcheck = parseInt(res.check);
66
- jQuery('.metaseo_tool').qtip({
67
- content: {
68
- attr: 'data-alt'
69
- },
70
- position: {
71
- my: 'bottom left',
72
- at: 'top center'
73
- },
74
- style: {
75
- tip: {
76
- corner: true
77
- },
78
- classes: 'metaseo-qtip qtip-rounded'
79
- },
80
- hide: {
81
- fixed: true,
82
- delay: 1
83
  }
84
  });
85
 
63
  $('.metaseo_right .panel-left').html(res.output);
64
  $('.metaseo_right .panel-right').html(res.right_output);
65
  mcheck = parseInt(res.check);
66
+ tippy('.metaseo_tool', {
67
+ animation: 'scale',
68
+ duration: 0,
69
+ arrow: false,
70
+ placement: 'top',
71
+ theme: 'metaseo-tippy tippy-rounded',
72
+ onShow(instance) {
73
+ instance.popper.hidden = instance.reference.dataset.tippy ? false : true;
74
+ instance.setContent(instance.reference.dataset.tippy);
 
 
 
 
 
 
 
 
75
  }
76
  });
77
 
assets/js/dashboard.js CHANGED
@@ -1,24 +1,16 @@
1
  jQuery(document).ready(function ($) {
2
  'use strict';
3
  var wpms_dash_widgets = 0;
4
- function dashImgQtip() {
5
- jQuery('.img-infos-tooltip').qtip({
6
- content: {
7
- attr: 'data-alt'
8
- },
9
- position: {
10
- my: 'bottom center',
11
- at: 'top center'
12
- },
13
- style: {
14
- tip: {
15
- corner: true
16
- },
17
- classes: 'wpms-widgets-qtip'
18
- },
19
- hide: {
20
- fixed: true,
21
- delay: 1
22
  }
23
  });
24
  }
@@ -35,11 +27,11 @@ jQuery(document).ready(function ($) {
35
  },
36
  success: function (res) {
37
  if (parseInt(res) === 100) {
38
- $('.wpms_dash_permalink').attr({'src': wpms_localize.images_url + 'checklist/checklist.png', 'data-alt': wpms_localize.dashboard_tooltips.url_rewwrite + '100%'});
39
  } else {
40
- $('.wpms_dash_permalink').attr({'src': wpms_localize.images_url + 'icon-info/icon-info.png', 'data-alt': wpms_localize.dashboard_tooltips.url_rewwrite + res + '%'});
41
  }
42
- dashImgQtip();
43
  wpms_dash_widgets++;
44
  if(wpms_dash_widgets === 1){
45
  wpms_dash_widgets_newcontent();
@@ -59,11 +51,11 @@ jQuery(document).ready(function ($) {
59
  },
60
  success: function (res) {
61
  if (parseInt(res[0]) >= 3) {
62
- $('.wpms_dash_newcontent').attr({'src': wpms_localize.images_url + 'checklist/checklist.png', 'data-alt': wpms_localize.dashboard_tooltips.fresh_content + res[1][0] + wpms_localize.dashboard_tooltips.elements});
63
  } else {
64
- $('.wpms_dash_newcontent').attr({'src': wpms_localize.images_url + 'checklist/checklist.png', 'data-alt': wpms_localize.dashboard_tooltips.fresh_content + res[1][0] + wpms_localize.dashboard_tooltips.elements});
65
  }
66
- dashImgQtip();
67
  wpms_dash_widgets++;
68
  if(wpms_dash_widgets === 2){
69
  wpms_dash_widgets_linkmeta();
@@ -84,11 +76,11 @@ jQuery(document).ready(function ($) {
84
  },
85
  success: function (res) {
86
  if (parseInt(res[0]) === 100) {
87
- $('.wpms_dash_linkmeta').attr({'src': wpms_localize.images_url + 'checklist/checklist.png', 'data-alt': wpms_localize.dashboard_tooltips.link_title + res[1][0] + '/' + res[1][1] + ' = 100%'});
88
  } else {
89
- $('.wpms_dash_linkmeta').attr({'src': wpms_localize.images_url + 'icon-info/icon-info.png', 'data-alt': wpms_localize.dashboard_tooltips.link_title + res[1][0] + '/' + res[1][1] + ' = ' + res[0] + '%'});
90
  }
91
- dashImgQtip();
92
  wpms_dash_widgets++;
93
  if(wpms_dash_widgets === 3){
94
  wpms_dash_widgets_metatitle();
@@ -109,11 +101,11 @@ jQuery(document).ready(function ($) {
109
  },
110
  success: function (res) {
111
  if (parseInt(res[0]) === 100) {
112
- $('.wpms_dash_metatitle').attr({'src': wpms_localize.images_url + 'checklist/checklist.png', 'data-alt': wpms_localize.dashboard_tooltips.metatitle + res[1][0] + '/' + res[1][1] + ' = 100%'});
113
  } else {
114
- $('.wpms_dash_metatitle').attr({'src': wpms_localize.images_url + 'icon-info/icon-info.png', 'data-alt': wpms_localize.dashboard_tooltips.metatitle + res[1][0] + '/' + res[1][1] + ' = ' + res[0] + '%'});
115
  }
116
- dashImgQtip();
117
  wpms_dash_widgets++;
118
  if(wpms_dash_widgets === 4){
119
  wpms_dash_widgets_imagemeta(1,0,0,0);
@@ -141,17 +133,17 @@ jQuery(document).ready(function ($) {
141
  wpms_dash_widgets_imagemeta(page+1 , res.imgs_statis[0] , res.imgs_metas_statis[0] , res.imgs_count);
142
  }else{
143
  if (parseInt(res.imgs_statis[2]) === 100) {
144
- $('.wpms_dash_imgsresize').attr({'src': wpms_localize.images_url + 'checklist/checklist.png', 'data-alt': wpms_localize.dashboard_tooltips.images_resized + res.imgs_statis[0]});
145
  } else {
146
- $('.wpms_dash_imgsresize').attr({'src': wpms_localize.images_url + 'icon-info/icon-info.png', 'data-alt': wpms_localize.dashboard_tooltips.images_resized + res.imgs_statis[0]});
147
  }
148
 
149
  if (parseInt(res.imgs_metas_statis[2]) === 100) {
150
- $('.wpms_dash_imgsmeta').attr({'src': wpms_localize.images_url + 'checklist/checklist.png', 'data-alt': wpms_localize.dashboard_tooltips.image_alt + res.imgs_metas_statis[0] +'/'+ res.imgs_metas_statis[1] + ' = 100%'});
151
  } else {
152
- $('.wpms_dash_imgsmeta').attr({'src': wpms_localize.images_url + 'icon-info/icon-info.png', 'data-alt': wpms_localize.dashboard_tooltips.image_alt + res.imgs_metas_statis[0] +'/'+ res.imgs_metas_statis[1] + ' = ' + res.imgs_metas_statis[2] + '%'});
153
  }
154
- dashImgQtip();
155
  wpms_dash_widgets++;
156
  if(wpms_dash_widgets === 5){
157
  if (parseInt(wpms_localize.addon_active) === 0) {
@@ -176,11 +168,11 @@ jQuery(document).ready(function ($) {
176
  },
177
  success: function (res) {
178
  if (parseInt(res.percent) >= 90) {
179
- $('.wpms_dash_duplicate_metatitle').attr({'src': wpms_localize.images_url + 'checklist/checklist.png', 'data-alt': wpms_localize.dashboard_tooltips.duplicate_title + res.count_post_duplicate});
180
  } else {
181
- $('.wpms_dash_duplicate_metatitle').attr({'src': wpms_localize.images_url + 'icon-info/icon-info.png', 'data-alt': wpms_localize.dashboard_tooltips.duplicate_title + res.count_post_duplicate});
182
  }
183
- dashImgQtip();
184
  wpms_dash_widgets++;
185
  if(wpms_dash_widgets === 6){
186
  wpms_dash_widgets_duplicate_desc();
@@ -200,11 +192,11 @@ jQuery(document).ready(function ($) {
200
  },
201
  success: function (res) {
202
  if (parseInt(res.percent) >= 90) {
203
- $('.wpms_dash_duplicate_metadesc').attr({'src': wpms_localize.images_url + 'checklist/checklist.png', 'data-alt': wpms_localize.dashboard_tooltips.duplicate_desc + res.count_post_duplicate});
204
  } else {
205
- $('.wpms_dash_duplicate_metadesc').attr({'src': wpms_localize.images_url + 'icon-info/icon-info.png', 'data-alt': wpms_localize.dashboard_tooltips.duplicate_desc + res.count_post_duplicate});
206
  }
207
- dashImgQtip();
208
  wpms_dash_widgets++;
209
  if(wpms_dash_widgets === 7){
210
  wpms_dash_widgets_metadesc();
@@ -225,11 +217,11 @@ jQuery(document).ready(function ($) {
225
  },
226
  success: function (res) {
227
  if (parseInt(res[0]) === 100) {
228
- $('.wpms_dash_metadesc').attr({'src': wpms_localize.images_url + 'checklist/checklist.png', 'data-alt': wpms_localize.dashboard_tooltips.metadesc + res[1][0] + '/' + res[1][1] + ' = 100%'});
229
  } else {
230
- $('.wpms_dash_metadesc').attr({'src': wpms_localize.images_url + 'icon-info/icon-info.png', 'data-alt': wpms_localize.dashboard_tooltips.metadesc + res[1][0] + '/' + res[1][1] + ' = ' + res[0] + '%'});
231
  }
232
- dashImgQtip();
233
  }
234
  });
235
  }
@@ -258,5 +250,5 @@ jQuery(document).ready(function ($) {
258
  reloadWeb();
259
  });
260
 
261
- dashImgQtip();
262
  });
1
  jQuery(document).ready(function ($) {
2
  'use strict';
3
  var wpms_dash_widgets = 0;
4
+ function dashImgTippy() {
5
+ tippy('.img-infos-tooltip', {
6
+ animation: 'scale',
7
+ duration: 0,
8
+ arrow: false,
9
+ placement: 'top',
10
+ theme: 'wpms-widgets-tippy',
11
+ onShow(instance) {
12
+ instance.popper.hidden = instance.reference.dataset.tippy ? false : true;
13
+ instance.setContent(instance.reference.dataset.tippy);
 
 
 
 
 
 
 
 
14
  }
15
  });
16
  }
27
  },
28
  success: function (res) {
29
  if (parseInt(res) === 100) {
30
+ $('.wpms_dash_permalink').attr({'src': wpms_localize.images_url + 'checklist/checklist.png', 'data-tippy': wpms_localize.dashboard_tooltips.url_rewwrite + '100%'});
31
  } else {
32
+ $('.wpms_dash_permalink').attr({'src': wpms_localize.images_url + 'icon-info/icon-info.png', 'data-tippy': wpms_localize.dashboard_tooltips.url_rewwrite + res + '%'});
33
  }
34
+ dashImgTippy();
35
  wpms_dash_widgets++;
36
  if(wpms_dash_widgets === 1){
37
  wpms_dash_widgets_newcontent();
51
  },
52
  success: function (res) {
53
  if (parseInt(res[0]) >= 3) {
54
+ $('.wpms_dash_newcontent').attr({'src': wpms_localize.images_url + 'checklist/checklist.png', 'data-tippy': wpms_localize.dashboard_tooltips.fresh_content + res[1][0] + wpms_localize.dashboard_tooltips.elements});
55
  } else {
56
+ $('.wpms_dash_newcontent').attr({'src': wpms_localize.images_url + 'checklist/checklist.png', 'data-tippy': wpms_localize.dashboard_tooltips.fresh_content + res[1][0] + wpms_localize.dashboard_tooltips.elements});
57
  }
58
+ dashImgTippy();
59
  wpms_dash_widgets++;
60
  if(wpms_dash_widgets === 2){
61
  wpms_dash_widgets_linkmeta();
76
  },
77
  success: function (res) {
78
  if (parseInt(res[0]) === 100) {
79
+ $('.wpms_dash_linkmeta').attr({'src': wpms_localize.images_url + 'checklist/checklist.png', 'data-tippy': wpms_localize.dashboard_tooltips.link_title + res[1][0] + '/' + res[1][1] + ' = 100%'});
80
  } else {
81
+ $('.wpms_dash_linkmeta').attr({'src': wpms_localize.images_url + 'icon-info/icon-info.png', 'data-tippy': wpms_localize.dashboard_tooltips.link_title + res[1][0] + '/' + res[1][1] + ' = ' + res[0] + '%'});
82
  }
83
+ dashImgTippy();
84
  wpms_dash_widgets++;
85
  if(wpms_dash_widgets === 3){
86
  wpms_dash_widgets_metatitle();
101
  },
102
  success: function (res) {
103
  if (parseInt(res[0]) === 100) {
104
+ $('.wpms_dash_metatitle').attr({'src': wpms_localize.images_url + 'checklist/checklist.png', 'data-tippy': wpms_localize.dashboard_tooltips.metatitle + res[1][0] + '/' + res[1][1] + ' = 100%'});
105
  } else {
106
+ $('.wpms_dash_metatitle').attr({'src': wpms_localize.images_url + 'icon-info/icon-info.png', 'data-tippy': wpms_localize.dashboard_tooltips.metatitle + res[1][0] + '/' + res[1][1] + ' = ' + res[0] + '%'});
107
  }
108
+ dashImgTippy();
109
  wpms_dash_widgets++;
110
  if(wpms_dash_widgets === 4){
111
  wpms_dash_widgets_imagemeta(1,0,0,0);
133
  wpms_dash_widgets_imagemeta(page+1 , res.imgs_statis[0] , res.imgs_metas_statis[0] , res.imgs_count);
134
  }else{
135
  if (parseInt(res.imgs_statis[2]) === 100) {
136
+ $('.wpms_dash_imgsresize').attr({'src': wpms_localize.images_url + 'checklist/checklist.png', 'data-tippy': wpms_localize.dashboard_tooltips.images_resized + res.imgs_statis[0]});
137
  } else {
138
+ $('.wpms_dash_imgsresize').attr({'src': wpms_localize.images_url + 'icon-info/icon-info.png', 'data-tippy': wpms_localize.dashboard_tooltips.images_resized + res.imgs_statis[0]});
139
  }
140
 
141
  if (parseInt(res.imgs_metas_statis[2]) === 100) {
142
+ $('.wpms_dash_imgsmeta').attr({'src': wpms_localize.images_url + 'checklist/checklist.png', 'data-tippy': wpms_localize.dashboard_tooltips.image_alt + res.imgs_metas_statis[0] +'/'+ res.imgs_metas_statis[1] + ' = 100%'});
143
  } else {
144
+ $('.wpms_dash_imgsmeta').attr({'src': wpms_localize.images_url + 'icon-info/icon-info.png', 'data-tippy': wpms_localize.dashboard_tooltips.image_alt + res.imgs_metas_statis[0] +'/'+ res.imgs_metas_statis[1] + ' = ' + res.imgs_metas_statis[2] + '%'});
145
  }
146
+ dashImgTippy();
147
  wpms_dash_widgets++;
148
  if(wpms_dash_widgets === 5){
149
  if (parseInt(wpms_localize.addon_active) === 0) {
168
  },
169
  success: function (res) {
170
  if (parseInt(res.percent) >= 90) {
171
+ $('.wpms_dash_duplicate_metatitle').attr({'src': wpms_localize.images_url + 'checklist/checklist.png', 'data-tippy': wpms_localize.dashboard_tooltips.duplicate_title + res.count_post_duplicate});
172
  } else {
173
+ $('.wpms_dash_duplicate_metatitle').attr({'src': wpms_localize.images_url + 'icon-info/icon-info.png', 'data-tippy': wpms_localize.dashboard_tooltips.duplicate_title + res.count_post_duplicate});
174
  }
175
+ dashImgTippy();
176
  wpms_dash_widgets++;
177
  if(wpms_dash_widgets === 6){
178
  wpms_dash_widgets_duplicate_desc();
192
  },
193
  success: function (res) {
194
  if (parseInt(res.percent) >= 90) {
195
+ $('.wpms_dash_duplicate_metadesc').attr({'src': wpms_localize.images_url + 'checklist/checklist.png', 'data-tippy': wpms_localize.dashboard_tooltips.duplicate_desc + res.count_post_duplicate});
196
  } else {
197
+ $('.wpms_dash_duplicate_metadesc').attr({'src': wpms_localize.images_url + 'icon-info/icon-info.png', 'data-tippy': wpms_localize.dashboard_tooltips.duplicate_desc + res.count_post_duplicate});
198
  }
199
+ dashImgTippy();
200
  wpms_dash_widgets++;
201
  if(wpms_dash_widgets === 7){
202
  wpms_dash_widgets_metadesc();
217
  },
218
  success: function (res) {
219
  if (parseInt(res[0]) === 100) {
220
+ $('.wpms_dash_metadesc').attr({'src': wpms_localize.images_url + 'checklist/checklist.png', 'data-tippy': wpms_localize.dashboard_tooltips.metadesc + res[1][0] + '/' + res[1][1] + ' = 100%'});
221
  } else {
222
+ $('.wpms_dash_metadesc').attr({'src': wpms_localize.images_url + 'icon-info/icon-info.png', 'data-tippy': wpms_localize.dashboard_tooltips.metadesc + res[1][0] + '/' + res[1][1] + ' = ' + res[0] + '%'});
223
  }
224
+ dashImgTippy();
225
  }
226
  });
227
  }
250
  reloadWeb();
251
  });
252
 
253
+ dashImgTippy();
254
  });
assets/js/dashboard_widgets.js CHANGED
@@ -238,24 +238,15 @@ jQuery(document).ready(function ($) {
238
  });
239
  }
240
 
241
- jQuery('.wpms_dash_widgets').qtip({
242
- content: {
243
- attr: 'data-alt'
244
- },
245
- position: {
246
- my: 'bottom center',
247
- at: 'top center'
248
- },
249
- style: {
250
- tip: {
251
- corner: true
252
- },
253
- classes: 'wpms-widgets-qtip'
254
- },
255
- hide: {
256
- fixed: true,
257
- delay: 1
258
  }
259
-
260
  });
261
  });
238
  });
239
  }
240
 
241
+ tippy('.wpms_dash_widgets', {
242
+ animation: 'scale',
243
+ duration: 0,
244
+ arrow: false,
245
+ placement: 'top',
246
+ theme: 'wpms-widgets-tippy',
247
+ onShow(instance) {
248
+ instance.popper.hidden = instance.reference.dataset.tippy ? false : true;
249
+ instance.setContent(instance.reference.dataset.tippy);
 
 
 
 
 
 
 
 
250
  }
 
251
  });
252
  });
assets/js/google-analytics/google_analytics.js CHANGED
@@ -771,9 +771,9 @@ jQuery.fn.extend({
771
 
772
  reports.render.focusFlag = 1;
773
 
774
- jQuery(window).bind("focus", function () {
775
  reports.render.focusFlag = 1;
776
- }).bind("blur", function () {
777
  reports.render.focusFlag = 0;
778
  });
779
 
@@ -947,7 +947,7 @@ jQuery.fn.extend({
947
 
948
  reports.render(jQuery('#wpms-sel-view' + slug).val(), jQuery('.wpmsga_date.active').data('value'), jQuery('.wpmsga_report.active').data('value'));
949
 
950
- jQuery(window).resize(function () {
951
  reports.refresh();
952
  });
953
  }
@@ -957,29 +957,29 @@ jQuery.fn.extend({
957
 
958
  reports.init();
959
 
960
- jQuery('#wpms-sel-view' + slug).change(function () {
961
  jQuery('#wpms-reports' + slug).html('');
962
  reports.init();
963
  });
964
 
965
- jQuery('#wpms-sel-period' + slug).change(function () {
966
  jQuery('#wpms-reports' + slug).html('');
967
  reports.init();
968
  });
969
 
970
- jQuery('#wpms-sel-report' + slug).change(function () {
971
  jQuery('#wpms-reports' + slug).html('');
972
  reports.init();
973
  });
974
 
975
- jQuery('.wpmsga_date').click(function () {
976
  jQuery('.wpmsga_date').removeClass('orange-button active');
977
  jQuery(this).addClass('orange-button active');
978
  jQuery('#wpms-reports' + slug).html('');
979
  reports.init();
980
  });
981
 
982
- jQuery('.wpmsga_report').click(function () {
983
  jQuery('.wpmsga_report').removeClass('orange-button active');
984
  jQuery(this).addClass('orange-button active');
985
  jQuery('#wpms-reports' + slug).html('');
@@ -1010,7 +1010,7 @@ jQuery(document).ready(function () {
1010
  if (wpmsItemData.scope === 'admin-widgets') {
1011
  jQuery('#wpms-window-1').wpmsItemReport(1);
1012
  } else {
1013
- jQuery(wpmsItemData.getSelector(wpmsItemData.scope)).click(function () {
1014
  if (!jQuery("#wpms-window-" + wpmsItemData.getID(this)).length > 0) {
1015
  jQuery("body").append('<div id="wpms-window-' + wpmsItemData.getID(this) + '"></div>');
1016
  }
@@ -1019,7 +1019,7 @@ jQuery(document).ready(function () {
1019
  }
1020
 
1021
  // on window resize
1022
- jQuery(window).resize(function () {
1023
  wpmsItemData.responsiveDialog();
1024
  });
1025
 
@@ -1044,24 +1044,15 @@ jQuery(document).ready(function () {
1044
  });
1045
  });
1046
 
1047
- jQuery('.metaseo_tool').qtip({
1048
- content: {
1049
- attr: 'data-alt'
1050
- },
1051
- position: {
1052
- my: 'bottom left',
1053
- at: 'top left'
1054
- },
1055
- style: {
1056
- tip: {
1057
- corner: true
1058
- },
1059
- classes: 'metaseo-qtip qtip-rounded'
1060
- },
1061
- hide: {
1062
- fixed: true,
1063
- delay: 1
1064
  }
1065
-
1066
  });
1067
  });
771
 
772
  reports.render.focusFlag = 1;
773
 
774
+ jQuery(window).on("focus", function () {
775
  reports.render.focusFlag = 1;
776
+ }).on("blur", function () {
777
  reports.render.focusFlag = 0;
778
  });
779
 
947
 
948
  reports.render(jQuery('#wpms-sel-view' + slug).val(), jQuery('.wpmsga_date.active').data('value'), jQuery('.wpmsga_report.active').data('value'));
949
 
950
+ jQuery(window).on('resize', function () {
951
  reports.refresh();
952
  });
953
  }
957
 
958
  reports.init();
959
 
960
+ jQuery('#wpms-sel-view' + slug).on('change', function () {
961
  jQuery('#wpms-reports' + slug).html('');
962
  reports.init();
963
  });
964
 
965
+ jQuery('#wpms-sel-period' + slug).on('change',function () {
966
  jQuery('#wpms-reports' + slug).html('');
967
  reports.init();
968
  });
969
 
970
+ jQuery('#wpms-sel-report' + slug).on('change',function () {
971
  jQuery('#wpms-reports' + slug).html('');
972
  reports.init();
973
  });
974
 
975
+ jQuery('.wpmsga_date').on('click', function () {
976
  jQuery('.wpmsga_date').removeClass('orange-button active');
977
  jQuery(this).addClass('orange-button active');
978
  jQuery('#wpms-reports' + slug).html('');
979
  reports.init();
980
  });
981
 
982
+ jQuery('.wpmsga_report').on('click', function () {
983
  jQuery('.wpmsga_report').removeClass('orange-button active');
984
  jQuery(this).addClass('orange-button active');
985
  jQuery('#wpms-reports' + slug).html('');
1010
  if (wpmsItemData.scope === 'admin-widgets') {
1011
  jQuery('#wpms-window-1').wpmsItemReport(1);
1012
  } else {
1013
+ jQuery(wpmsItemData.getSelector(wpmsItemData.scope)).on('click', function () {
1014
  if (!jQuery("#wpms-window-" + wpmsItemData.getID(this)).length > 0) {
1015
  jQuery("body").append('<div id="wpms-window-' + wpmsItemData.getID(this) + '"></div>');
1016
  }
1019
  }
1020
 
1021
  // on window resize
1022
+ jQuery(window).on('resize', function () {
1023
  wpmsItemData.responsiveDialog();
1024
  });
1025
 
1044
  });
1045
  });
1046
 
1047
+ tippy('.metaseo_tool', {
1048
+ animation: 'scale',
1049
+ duration: 0,
1050
+ arrow: false,
1051
+ placement: 'top',
1052
+ theme: 'metaseo-tippy tippy-rounded',
1053
+ onShow(instance) {
1054
+ instance.popper.hidden = instance.reference.dataset.tippy ? false : true;
1055
+ instance.setContent(instance.reference.dataset.tippy);
 
 
 
 
 
 
 
 
1056
  }
 
1057
  });
1058
  });
assets/js/jPages.js CHANGED
@@ -198,7 +198,7 @@
198
  var nav = this._nav[index];
199
 
200
  // default nav
201
- nav.holder.bind("click.jPages", this.bind(function(evt) {
202
  var newPage = this.getNewPage(nav, $(evt.target));
203
  if (this.validNewPage(newPage)) {
204
  this._clicked = true;
@@ -209,7 +209,7 @@
209
 
210
  // custom first
211
  if (this._first.length) {
212
- this._first.bind("click.jPages", this.bind(function() {
213
  if (this.validNewPage(1)) {
214
  this._clicked = true;
215
  this.paginate(1);
@@ -219,7 +219,7 @@
219
 
220
  // custom previous
221
  if (this._previous.length) {
222
- this._previous.bind("click.jPages", this.bind(function() {
223
  var newPage = this._currentPageNum - 1;
224
  if (this.validNewPage(newPage)) {
225
  this._clicked = true;
@@ -230,7 +230,7 @@
230
 
231
  // custom next
232
  if (this._next.length) {
233
- this._next.bind("click.jPages", this.bind(function() {
234
  var newPage = this._currentPageNum + 1;
235
  if (this.validNewPage(newPage)) {
236
  this._clicked = true;
@@ -241,7 +241,7 @@
241
 
242
  // custom last
243
  if (this._last.length) {
244
- this._last.bind("click.jPages", this.bind(function() {
245
  if (this.validNewPage(this._numPages)) {
246
  this._clicked = true;
247
  this.paginate(this._numPages);
@@ -265,7 +265,7 @@
265
  },
266
 
267
  bindNavKeyBrowse : function() {
268
- this.jQdocument.bind("keydown.jPages", this.bind(function(evt) {
269
  var target = evt.target.nodeName.toLowerCase();
270
  if (this.elemScrolledIntoView() && target !== "input" && target != "textarea") {
271
  var newPage = this._currentPageNum;
@@ -296,7 +296,7 @@
296
  },
297
 
298
  bindNavScrollBrowse : function() {
299
- this._container.bind("mousewheel.jPages DOMMouseScroll.jPages", this.bind(function(evt) {
300
  var newPage = (evt.originalEvent.wheelDelta || -evt.originalEvent.detail) > 0 ?
301
  (this._currentPageNum - 1) : (this._currentPageNum + 1);
302
  if (this.validNewPage(newPage)) {
@@ -326,7 +326,7 @@
326
  itemRange = this.updateItems(page);
327
  pageInterval = this.updatePages(page);
328
  this._currentPageNum = page;
329
- if ($.isFunction(this.options.callback))
330
  this.callback(page, itemRange, pageInterval);
331
 
332
  this.updatePause();
@@ -528,20 +528,20 @@
528
  },
529
 
530
  destroy : function() {
531
- this.jQdocument.unbind("keydown.jPages");
532
- this._container.unbind("mousewheel.jPages DOMMouseScroll.jPages");
533
 
534
  if (this.options.minHeight) this._container.css("min-height", "");
535
  if (this._cssAnimSupport && this.options.animation.length)
536
  this._items.removeClass("animated jp-hidden jp-invisible " + this.options.animation);
537
  else this._items.removeClass("jp-hidden").fadeTo(0, 1);
538
- this._holder.unbind("click.jPages").empty();
539
  }
540
 
541
  };
542
 
543
  $.fn[name] = function(arg) {
544
- var type = $.type(arg);
545
 
546
  if (type === "object") {
547
  if (this.length && !$.data(this, name)) {
198
  var nav = this._nav[index];
199
 
200
  // default nav
201
+ nav.holder.on("click.jPages", this.bind(function(evt) {
202
  var newPage = this.getNewPage(nav, $(evt.target));
203
  if (this.validNewPage(newPage)) {
204
  this._clicked = true;
209
 
210
  // custom first
211
  if (this._first.length) {
212
+ this._first.on("click.jPages", this.bind(function() {
213
  if (this.validNewPage(1)) {
214
  this._clicked = true;
215
  this.paginate(1);
219
 
220
  // custom previous
221
  if (this._previous.length) {
222
+ this._previous.on("click.jPages", this.bind(function() {
223
  var newPage = this._currentPageNum - 1;
224
  if (this.validNewPage(newPage)) {
225
  this._clicked = true;
230
 
231
  // custom next
232
  if (this._next.length) {
233
+ this._next.on("click.jPages", this.bind(function() {
234
  var newPage = this._currentPageNum + 1;
235
  if (this.validNewPage(newPage)) {
236
  this._clicked = true;
241
 
242
  // custom last
243
  if (this._last.length) {
244
+ this._last.on("click.jPages", this.bind(function() {
245
  if (this.validNewPage(this._numPages)) {
246
  this._clicked = true;
247
  this.paginate(this._numPages);
265
  },
266
 
267
  bindNavKeyBrowse : function() {
268
+ this.jQdocument.on("keydown.jPages", this.bind(function(evt) {
269
  var target = evt.target.nodeName.toLowerCase();
270
  if (this.elemScrolledIntoView() && target !== "input" && target != "textarea") {
271
  var newPage = this._currentPageNum;
296
  },
297
 
298
  bindNavScrollBrowse : function() {
299
+ this._container.on("mousewheel.jPages DOMMouseScroll.jPages", this.bind(function(evt) {
300
  var newPage = (evt.originalEvent.wheelDelta || -evt.originalEvent.detail) > 0 ?
301
  (this._currentPageNum - 1) : (this._currentPageNum + 1);
302
  if (this.validNewPage(newPage)) {
326
  itemRange = this.updateItems(page);
327
  pageInterval = this.updatePages(page);
328
  this._currentPageNum = page;
329
+ if (typeof (this.options.callback) === 'function')
330
  this.callback(page, itemRange, pageInterval);
331
 
332
  this.updatePause();
528
  },
529
 
530
  destroy : function() {
531
+ this.jQdocument.off("keydown.jPages");
532
+ this._container.off("mousewheel.jPages DOMMouseScroll.jPages");
533
 
534
  if (this.options.minHeight) this._container.css("min-height", "");
535
  if (this._cssAnimSupport && this.options.animation.length)
536
  this._items.removeClass("animated jp-hidden jp-invisible " + this.options.animation);
537
  else this._items.removeClass("jp-hidden").fadeTo(0, 1);
538
+ this._holder.off("click.jPages").empty();
539
  }
540
 
541
  };
542
 
543
  $.fn[name] = function(arg) {
544
+ var type = typeof(arg);
545
 
546
  if (type === "object") {
547
  if (this.length && !$.data(this, name)) {
assets/js/jquery.cookie.js CHANGED
@@ -49,14 +49,14 @@
49
 
50
  function read(s, converter) {
51
  var value = config.raw ? s : parseCookieValue(s);
52
- return $.isFunction(converter) ? converter(value) : value;
53
  }
54
 
55
  var config = $.cookie = function (key, value, options) {
56
 
57
  // Write
58
 
59
- if (value !== undefined && !$.isFunction(value)) {
60
  options = $.extend({}, config.defaults, options);
61
 
62
  if (typeof options.expires === 'number') {
49
 
50
  function read(s, converter) {
51
  var value = config.raw ? s : parseCookieValue(s);
52
+ return (typeof (converter) === 'function') ? converter(value) : value;
53
  }
54
 
55
  var config = $.cookie = function (key, value, options) {
56
 
57
  // Write
58
 
59
+ if (value !== undefined && !(typeof (value) === 'function')) {
60
  options = $.extend({}, config.defaults, options);
61
 
62
  if (typeof options.expires === 'number') {
assets/js/jquery.qtip.min.js DELETED
@@ -1,4 +0,0 @@
1
- /* qtip2 v3.0.3 | Plugins: tips modal viewport svg imagemap ie6 | Styles: core basic css3 | qtip2.com | Licensed MIT | Wed May 11 2016 22:31:31 */
2
-
3
- !function(a,b,c){!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):jQuery&&!jQuery.fn.qtip&&a(jQuery)}(function(d){"use strict";function e(a,b,c,e){this.id=c,this.target=a,this.tooltip=F,this.elements={target:a},this._id=S+"-"+c,this.timers={img:{}},this.options=b,this.plugins={},this.cache={event:{},target:d(),disabled:E,attr:e,onTooltip:E,lastClass:""},this.rendered=this.destroyed=this.disabled=this.waiting=this.hiddenDuringWait=this.positioning=this.triggering=E}function f(a){return a===F||"object"!==d.type(a)}function g(a){return!(d.isFunction(a)||a&&a.attr||a.length||"object"===d.type(a)&&(a.jquery||a.then))}function h(a){var b,c,e,h;return f(a)?E:(f(a.metadata)&&(a.metadata={type:a.metadata}),"content"in a&&(b=a.content,f(b)||b.jquery||b.done?(c=g(b)?E:b,b=a.content={text:c}):c=b.text,"ajax"in b&&(e=b.ajax,h=e&&e.once!==E,delete b.ajax,b.text=function(a,b){var f=c||d(this).attr(b.options.content.attr)||"Loading...",g=d.ajax(d.extend({},e,{context:b})).then(e.success,F,e.error).then(function(a){return a&&h&&b.set("content.text",a),a},function(a,c,d){b.destroyed||0===a.status||b.set("content.text",c+": "+d)});return h?f:(b.set("content.text",f),g)}),"title"in b&&(d.isPlainObject(b.title)&&(b.button=b.title.button,b.title=b.title.text),g(b.title||E)&&(b.title=E))),"position"in a&&f(a.position)&&(a.position={my:a.position,at:a.position}),"show"in a&&f(a.show)&&(a.show=a.show.jquery?{target:a.show}:a.show===D?{ready:D}:{event:a.show}),"hide"in a&&f(a.hide)&&(a.hide=a.hide.jquery?{target:a.hide}:{event:a.hide}),"style"in a&&f(a.style)&&(a.style={classes:a.style}),d.each(R,function(){this.sanitize&&this.sanitize(a)}),a)}function i(a,b){for(var c,d=0,e=a,f=b.split(".");e=e[f[d++]];)d<f.length&&(c=e);return[c||a,f.pop()]}function j(a,b){var c,d,e;for(c in this.checks)if(this.checks.hasOwnProperty(c))for(d in this.checks[c])this.checks[c].hasOwnProperty(d)&&(e=new RegExp(d,"i").exec(a))&&(b.push(e),("builtin"===c||this.plugins[c])&&this.checks[c][d].apply(this.plugins[c]||this,b))}function k(a){return V.concat("").join(a?"-"+a+" ":" ")}function l(a,b){return b>0?setTimeout(d.proxy(a,this),b):void a.call(this)}function m(a){this.tooltip.hasClass(aa)||(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this.timers.show=l.call(this,function(){this.toggle(D,a)},this.options.show.delay))}function n(a){if(!this.tooltip.hasClass(aa)&&!this.destroyed){var b=d(a.relatedTarget),c=b.closest(W)[0]===this.tooltip[0],e=b[0]===this.options.show.target[0];if(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this!==b[0]&&"mouse"===this.options.position.target&&c||this.options.hide.fixed&&/mouse(out|leave|move)/.test(a.type)&&(c||e))try{a.preventDefault(),a.stopImmediatePropagation()}catch(f){}else this.timers.hide=l.call(this,function(){this.toggle(E,a)},this.options.hide.delay,this)}}function o(a){!this.tooltip.hasClass(aa)&&this.options.hide.inactive&&(clearTimeout(this.timers.inactive),this.timers.inactive=l.call(this,function(){this.hide(a)},this.options.hide.inactive))}function p(a){this.rendered&&this.tooltip[0].offsetWidth>0&&this.reposition(a)}function q(a,c,e){d(b.body).delegate(a,(c.split?c:c.join("."+S+" "))+"."+S,function(){var a=y.api[d.attr(this,U)];a&&!a.disabled&&e.apply(a,arguments)})}function r(a,c,f){var g,i,j,k,l,m=d(b.body),n=a[0]===b?m:a,o=a.metadata?a.metadata(f.metadata):F,p="html5"===f.metadata.type&&o?o[f.metadata.name]:F,q=a.data(f.metadata.name||"qtipopts");try{q="string"==typeof q?d.parseJSON(q):q}catch(r){}if(k=d.extend(D,{},y.defaults,f,"object"==typeof q?h(q):F,h(p||o)),i=k.position,k.id=c,"boolean"==typeof k.content.text){if(j=a.attr(k.content.attr),k.content.attr===E||!j)return E;k.content.text=j}if(i.container.length||(i.container=m),i.target===E&&(i.target=n),k.show.target===E&&(k.show.target=n),k.show.solo===D&&(k.show.solo=i.container.closest("body")),k.hide.target===E&&(k.hide.target=n),k.position.viewport===D&&(k.position.viewport=i.container),i.container=i.container.eq(0),i.at=new A(i.at,D),i.my=new A(i.my),a.data(S))if(k.overwrite)a.qtip("destroy",!0);else if(k.overwrite===E)return E;return a.attr(T,c),k.suppress&&(l=a.attr("title"))&&a.removeAttr("title").attr(ca,l).attr("title",""),g=new e(a,k,c,!!j),a.data(S,g),g}function s(a){return a.charAt(0).toUpperCase()+a.slice(1)}function t(a,b){var d,e,f=b.charAt(0).toUpperCase()+b.slice(1),g=(b+" "+va.join(f+" ")+f).split(" "),h=0;if(ua[b])return a.css(ua[b]);for(;d=g[h++];)if((e=a.css(d))!==c)return ua[b]=d,e}function u(a,b){return Math.ceil(parseFloat(t(a,b)))}function v(a,b){this._ns="tip",this.options=b,this.offset=b.offset,this.size=[b.width,b.height],this.qtip=a,this.init(a)}function w(a,b){this.options=b,this._ns="-modal",this.qtip=a,this.init(a)}function x(a){this._ns="ie6",this.qtip=a,this.init(a)}var y,z,A,B,C,D=!0,E=!1,F=null,G="x",H="y",I="width",J="height",K="top",L="left",M="bottom",N="right",O="center",P="flipinvert",Q="shift",R={},S="qtip",T="data-hasqtip",U="data-qtip-id",V=["ui-widget","ui-tooltip"],W="."+S,X="click dblclick mousedown mouseup mousemove mouseleave mouseenter".split(" "),Y=S+"-fixed",Z=S+"-default",$=S+"-focus",_=S+"-hover",aa=S+"-disabled",ba="_replacedByqTip",ca="oldtitle",da={ie:function(){var a,c;for(a=4,c=b.createElement("div");(c.innerHTML="<!--[if gt IE "+a+"]><i></i><![endif]-->")&&c.getElementsByTagName("i")[0];a+=1);return a>4?a:NaN}(),iOS:parseFloat((""+(/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))||E};z=e.prototype,z._when=function(a){return d.when.apply(d,a)},z.render=function(a){if(this.rendered||this.destroyed)return this;var b=this,c=this.options,e=this.cache,f=this.elements,g=c.content.text,h=c.content.title,i=c.content.button,j=c.position,k=[];return d.attr(this.target[0],"aria-describedby",this._id),e.posClass=this._createPosClass((this.position={my:j.my,at:j.at}).my),this.tooltip=f.tooltip=d("<div/>",{id:this._id,"class":[S,Z,c.style.classes,e.posClass].join(" "),width:c.style.width||"",height:c.style.height||"",tracking:"mouse"===j.target&&j.adjust.mouse,role:"alert","aria-live":"polite","aria-atomic":E,"aria-describedby":this._id+"-content","aria-hidden":D}).toggleClass(aa,this.disabled).attr(U,this.id).data(S,this).appendTo(j.container).append(f.content=d("<div />",{"class":S+"-content",id:this._id+"-content","aria-atomic":D})),this.rendered=-1,this.positioning=D,h&&(this._createTitle(),d.isFunction(h)||k.push(this._updateTitle(h,E))),i&&this._createButton(),d.isFunction(g)||k.push(this._updateContent(g,E)),this.rendered=D,this._setWidget(),d.each(R,function(a){var c;"render"===this.initialize&&(c=this(b))&&(b.plugins[a]=c)}),this._unassignEvents(),this._assignEvents(),this._when(k).then(function(){b._trigger("render"),b.positioning=E,b.hiddenDuringWait||!c.show.ready&&!a||b.toggle(D,e.event,E),b.hiddenDuringWait=E}),y.api[this.id]=this,this},z.destroy=function(a){function b(){if(!this.destroyed){this.destroyed=D;var a,b=this.target,c=b.attr(ca);this.rendered&&this.tooltip.stop(1,0).find("*").remove().end().remove(),d.each(this.plugins,function(){this.destroy&&this.destroy()});for(a in this.timers)this.timers.hasOwnProperty(a)&&clearTimeout(this.timers[a]);b.removeData(S).removeAttr(U).removeAttr(T).removeAttr("aria-describedby"),this.options.suppress&&c&&b.attr("title",c).removeAttr(ca),this._unassignEvents(),this.options=this.elements=this.cache=this.timers=this.plugins=this.mouse=F,delete y.api[this.id]}}return this.destroyed?this.target:(a===D&&"hide"!==this.triggering||!this.rendered?b.call(this):(this.tooltip.one("tooltiphidden",d.proxy(b,this)),!this.triggering&&this.hide()),this.target)},B=z.checks={builtin:{"^id$":function(a,b,c,e){var f=c===D?y.nextid:c,g=S+"-"+f;f!==E&&f.length>0&&!d("#"+g).length?(this._id=g,this.rendered&&(this.tooltip[0].id=this._id,this.elements.content[0].id=this._id+"-content",this.elements.title[0].id=this._id+"-title")):a[b]=e},"^prerender":function(a,b,c){c&&!this.rendered&&this.render(this.options.show.ready)},"^content.text$":function(a,b,c){this._updateContent(c)},"^content.attr$":function(a,b,c,d){this.options.content.text===this.target.attr(d)&&this._updateContent(this.target.attr(c))},"^content.title$":function(a,b,c){return c?(c&&!this.elements.title&&this._createTitle(),void this._updateTitle(c)):this._removeTitle()},"^content.button$":function(a,b,c){this._updateButton(c)},"^content.title.(text|button)$":function(a,b,c){this.set("content."+b,c)},"^position.(my|at)$":function(a,b,c){"string"==typeof c&&(this.position[b]=a[b]=new A(c,"at"===b))},"^position.container$":function(a,b,c){this.rendered&&this.tooltip.appendTo(c)},"^show.ready$":function(a,b,c){c&&(!this.rendered&&this.render(D)||this.toggle(D))},"^style.classes$":function(a,b,c,d){this.rendered&&this.tooltip.removeClass(d).addClass(c)},"^style.(width|height)":function(a,b,c){this.rendered&&this.tooltip.css(b,c)},"^style.widget|content.title":function(){this.rendered&&this._setWidget()},"^style.def":function(a,b,c){this.rendered&&this.tooltip.toggleClass(Z,!!c)},"^events.(render|show|move|hide|focus|blur)$":function(a,b,c){this.rendered&&this.tooltip[(d.isFunction(c)?"":"un")+"bind"]("tooltip"+b,c)},"^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)":function(){if(this.rendered){var a=this.options.position;this.tooltip.attr("tracking","mouse"===a.target&&a.adjust.mouse),this._unassignEvents(),this._assignEvents()}}}},z.get=function(a){if(this.destroyed)return this;var b=i(this.options,a.toLowerCase()),c=b[0][b[1]];return c.precedance?c.string():c};var ea=/^position\.(my|at|adjust|target|container|viewport)|style|content|show\.ready/i,fa=/^prerender|show\.ready/i;z.set=function(a,b){if(this.destroyed)return this;var c,e=this.rendered,f=E,g=this.options;return"string"==typeof a?(c=a,a={},a[c]=b):a=d.extend({},a),d.each(a,function(b,c){if(e&&fa.test(b))return void delete a[b];var h,j=i(g,b.toLowerCase());h=j[0][j[1]],j[0][j[1]]=c&&c.nodeType?d(c):c,f=ea.test(b)||f,a[b]=[j[0],j[1],c,h]}),h(g),this.positioning=D,d.each(a,d.proxy(j,this)),this.positioning=E,this.rendered&&this.tooltip[0].offsetWidth>0&&f&&this.reposition("mouse"===g.position.target?F:this.cache.event),this},z._update=function(a,b){var c=this,e=this.cache;return this.rendered&&a?(d.isFunction(a)&&(a=a.call(this.elements.target,e.event,this)||""),d.isFunction(a.then)?(e.waiting=D,a.then(function(a){return e.waiting=E,c._update(a,b)},F,function(a){return c._update(a,b)})):a===E||!a&&""!==a?E:(a.jquery&&a.length>0?b.empty().append(a.css({display:"block",visibility:"visible"})):b.html(a),this._waitForContent(b).then(function(a){c.rendered&&c.tooltip[0].offsetWidth>0&&c.reposition(e.event,!a.length)}))):E},z._waitForContent=function(a){var b=this.cache;return b.waiting=D,(d.fn.imagesLoaded?a.imagesLoaded():(new d.Deferred).resolve([])).done(function(){b.waiting=E}).promise()},z._updateContent=function(a,b){this._update(a,this.elements.content,b)},z._updateTitle=function(a,b){this._update(a,this.elements.title,b)===E&&this._removeTitle(E)},z._createTitle=function(){var a=this.elements,b=this._id+"-title";a.titlebar&&this._removeTitle(),a.titlebar=d("<div />",{"class":S+"-titlebar "+(this.options.style.widget?k("header"):"")}).append(a.title=d("<div />",{id:b,"class":S+"-title","aria-atomic":D})).insertBefore(a.content).delegate(".qtip-close","mousedown keydown mouseup keyup mouseout",function(a){d(this).toggleClass("ui-state-active ui-state-focus","down"===a.type.substr(-4))}).delegate(".qtip-close","mouseover mouseout",function(a){d(this).toggleClass("ui-state-hover","mouseover"===a.type)}),this.options.content.button&&this._createButton()},z._removeTitle=function(a){var b=this.elements;b.title&&(b.titlebar.remove(),b.titlebar=b.title=b.button=F,a!==E&&this.reposition())},z._createPosClass=function(a){return S+"-pos-"+(a||this.options.position.my).abbrev()},z.reposition=function(c,e){if(!this.rendered||this.positioning||this.destroyed)return this;this.positioning=D;var f,g,h,i,j=this.cache,k=this.tooltip,l=this.options.position,m=l.target,n=l.my,o=l.at,p=l.viewport,q=l.container,r=l.adjust,s=r.method.split(" "),t=k.outerWidth(E),u=k.outerHeight(E),v=0,w=0,x=k.css("position"),y={left:0,top:0},z=k[0].offsetWidth>0,A=c&&"scroll"===c.type,B=d(a),C=q[0].ownerDocument,F=this.mouse;if(d.isArray(m)&&2===m.length)o={x:L,y:K},y={left:m[0],top:m[1]};else if("mouse"===m)o={x:L,y:K},(!r.mouse||this.options.hide.distance)&&j.origin&&j.origin.pageX?c=j.origin:!c||c&&("resize"===c.type||"scroll"===c.type)?c=j.event:F&&F.pageX&&(c=F),"static"!==x&&(y=q.offset()),C.body.offsetWidth!==(a.innerWidth||C.documentElement.clientWidth)&&(g=d(b.body).offset()),y={left:c.pageX-y.left+(g&&g.left||0),top:c.pageY-y.top+(g&&g.top||0)},r.mouse&&A&&F&&(y.left-=(F.scrollX||0)-B.scrollLeft(),y.top-=(F.scrollY||0)-B.scrollTop());else{if("event"===m?c&&c.target&&"scroll"!==c.type&&"resize"!==c.type?j.target=d(c.target):c.target||(j.target=this.elements.target):"event"!==m&&(j.target=d(m.jquery?m:this.elements.target)),m=j.target,m=d(m).eq(0),0===m.length)return this;m[0]===b||m[0]===a?(v=da.iOS?a.innerWidth:m.width(),w=da.iOS?a.innerHeight:m.height(),m[0]===a&&(y={top:(p||m).scrollTop(),left:(p||m).scrollLeft()})):R.imagemap&&m.is("area")?f=R.imagemap(this,m,o,R.viewport?s:E):R.svg&&m&&m[0].ownerSVGElement?f=R.svg(this,m,o,R.viewport?s:E):(v=m.outerWidth(E),w=m.outerHeight(E),y=m.offset()),f&&(v=f.width,w=f.height,g=f.offset,y=f.position),y=this.reposition.offset(m,y,q),(da.iOS>3.1&&da.iOS<4.1||da.iOS>=4.3&&da.iOS<4.33||!da.iOS&&"fixed"===x)&&(y.left-=B.scrollLeft(),y.top-=B.scrollTop()),(!f||f&&f.adjustable!==E)&&(y.left+=o.x===N?v:o.x===O?v/2:0,y.top+=o.y===M?w:o.y===O?w/2:0)}return y.left+=r.x+(n.x===N?-t:n.x===O?-t/2:0),y.top+=r.y+(n.y===M?-u:n.y===O?-u/2:0),R.viewport?(h=y.adjusted=R.viewport(this,y,l,v,w,t,u),g&&h.left&&(y.left+=g.left),g&&h.top&&(y.top+=g.top),h.my&&(this.position.my=h.my)):y.adjusted={left:0,top:0},j.posClass!==(i=this._createPosClass(this.position.my))&&(j.posClass=i,k.removeClass(j.posClass).addClass(i)),this._trigger("move",[y,p.elem||p],c)?(delete y.adjusted,e===E||!z||isNaN(y.left)||isNaN(y.top)||"mouse"===m||!d.isFunction(l.effect)?k.css(y):d.isFunction(l.effect)&&(l.effect.call(k,this,d.extend({},y)),k.queue(function(a){d(this).css({opacity:"",height:""}),da.ie&&this.style.removeAttribute("filter"),a()})),this.positioning=E,this):this},z.reposition.offset=function(a,c,e){function f(a,b){c.left+=b*a.scrollLeft(),c.top+=b*a.scrollTop()}if(!e[0])return c;var g,h,i,j,k=d(a[0].ownerDocument),l=!!da.ie&&"CSS1Compat"!==b.compatMode,m=e[0];do"static"!==(h=d.css(m,"position"))&&("fixed"===h?(i=m.getBoundingClientRect(),f(k,-1)):(i=d(m).position(),i.left+=parseFloat(d.css(m,"borderLeftWidth"))||0,i.top+=parseFloat(d.css(m,"borderTopWidth"))||0),c.left-=i.left+(parseFloat(d.css(m,"marginLeft"))||0),c.top-=i.top+(parseFloat(d.css(m,"marginTop"))||0),g||"hidden"===(j=d.css(m,"overflow"))||"visible"===j||(g=d(m)));while(m=m.offsetParent);return g&&(g[0]!==k[0]||l)&&f(g,1),c};var ga=(A=z.reposition.Corner=function(a,b){a=(""+a).replace(/([A-Z])/," $1").replace(/middle/gi,O).toLowerCase(),this.x=(a.match(/left|right/i)||a.match(/center/)||["inherit"])[0].toLowerCase(),this.y=(a.match(/top|bottom|center/i)||["inherit"])[0].toLowerCase(),this.forceY=!!b;var c=a.charAt(0);this.precedance="t"===c||"b"===c?H:G}).prototype;ga.invert=function(a,b){this[a]=this[a]===L?N:this[a]===N?L:b||this[a]},ga.string=function(a){var b=this.x,c=this.y,d=b!==c?"center"===b||"center"!==c&&(this.precedance===H||this.forceY)?[c,b]:[b,c]:[b];return a!==!1?d.join(" "):d},ga.abbrev=function(){var a=this.string(!1);return a[0].charAt(0)+(a[1]&&a[1].charAt(0)||"")},ga.clone=function(){return new A(this.string(),this.forceY)},z.toggle=function(a,c){var e=this.cache,f=this.options,g=this.tooltip;if(c){if(/over|enter/.test(c.type)&&e.event&&/out|leave/.test(e.event.type)&&f.show.target.add(c.target).length===f.show.target.length&&g.has(c.relatedTarget).length)return this;e.event=d.event.fix(c)}if(this.waiting&&!a&&(this.hiddenDuringWait=D),!this.rendered)return a?this.render(1):this;if(this.destroyed||this.disabled)return this;var h,i,j,k=a?"show":"hide",l=this.options[k],m=this.options.position,n=this.options.content,o=this.tooltip.css("width"),p=this.tooltip.is(":visible"),q=a||1===l.target.length,r=!c||l.target.length<2||e.target[0]===c.target;return(typeof a).search("boolean|number")&&(a=!p),h=!g.is(":animated")&&p===a&&r,i=h?F:!!this._trigger(k,[90]),this.destroyed?this:(i!==E&&a&&this.focus(c),!i||h?this:(d.attr(g[0],"aria-hidden",!a),a?(this.mouse&&(e.origin=d.event.fix(this.mouse)),d.isFunction(n.text)&&this._updateContent(n.text,E),d.isFunction(n.title)&&this._updateTitle(n.title,E),!C&&"mouse"===m.target&&m.adjust.mouse&&(d(b).bind("mousemove."+S,this._storeMouse),C=D),o||g.css("width",g.outerWidth(E)),this.reposition(c,arguments[2]),o||g.css("width",""),l.solo&&("string"==typeof l.solo?d(l.solo):d(W,l.solo)).not(g).not(l.target).qtip("hide",new d.Event("tooltipsolo"))):(clearTimeout(this.timers.show),delete e.origin,C&&!d(W+'[tracking="true"]:visible',l.solo).not(g).length&&(d(b).unbind("mousemove."+S),C=E),this.blur(c)),j=d.proxy(function(){a?(da.ie&&g[0].style.removeAttribute("filter"),g.css("overflow",""),"string"==typeof l.autofocus&&d(this.options.show.autofocus,g).focus(),this.options.show.target.trigger("qtip-"+this.id+"-inactive")):g.css({display:"",visibility:"",opacity:"",left:"",top:""}),this._trigger(a?"visible":"hidden")},this),l.effect===E||q===E?(g[k](),j()):d.isFunction(l.effect)?(g.stop(1,1),l.effect.call(g,this),g.queue("fx",function(a){j(),a()})):g.fadeTo(90,a?1:0,j),a&&l.target.trigger("qtip-"+this.id+"-inactive"),this))},z.show=function(a){return this.toggle(D,a)},z.hide=function(a){return this.toggle(E,a)},z.focus=function(a){if(!this.rendered||this.destroyed)return this;var b=d(W),c=this.tooltip,e=parseInt(c[0].style.zIndex,10),f=y.zindex+b.length;return c.hasClass($)||this._trigger("focus",[f],a)&&(e!==f&&(b.each(function(){this.style.zIndex>e&&(this.style.zIndex=this.style.zIndex-1)}),b.filter("."+$).qtip("blur",a)),c.addClass($)[0].style.zIndex=f),this},z.blur=function(a){return!this.rendered||this.destroyed?this:(this.tooltip.removeClass($),this._trigger("blur",[this.tooltip.css("zIndex")],a),this)},z.disable=function(a){return this.destroyed?this:("toggle"===a?a=!(this.rendered?this.tooltip.hasClass(aa):this.disabled):"boolean"!=typeof a&&(a=D),this.rendered&&this.tooltip.toggleClass(aa,a).attr("aria-disabled",a),this.disabled=!!a,this)},z.enable=function(){return this.disable(E)},z._createButton=function(){var a=this,b=this.elements,c=b.tooltip,e=this.options.content.button,f="string"==typeof e,g=f?e:"Close tooltip";b.button&&b.button.remove(),e.jquery?b.button=e:b.button=d("<a />",{"class":"qtip-close "+(this.options.style.widget?"":S+"-icon"),title:g,"aria-label":g}).prepend(d("<span />",{"class":"ui-icon ui-icon-close",html:"&times;"})),b.button.appendTo(b.titlebar||c).attr("role","button").click(function(b){return c.hasClass(aa)||a.hide(b),E})},z._updateButton=function(a){if(!this.rendered)return E;var b=this.elements.button;a?this._createButton():b.remove()},z._setWidget=function(){var a=this.options.style.widget,b=this.elements,c=b.tooltip,d=c.hasClass(aa);c.removeClass(aa),aa=a?"ui-state-disabled":"qtip-disabled",c.toggleClass(aa,d),c.toggleClass("ui-helper-reset "+k(),a).toggleClass(Z,this.options.style.def&&!a),b.content&&b.content.toggleClass(k("content"),a),b.titlebar&&b.titlebar.toggleClass(k("header"),a),b.button&&b.button.toggleClass(S+"-icon",!a)},z._storeMouse=function(a){return(this.mouse=d.event.fix(a)).type="mousemove",this},z._bind=function(a,b,c,e,f){if(a&&c&&b.length){var g="."+this._id+(e?"-"+e:"");return d(a).bind((b.split?b:b.join(g+" "))+g,d.proxy(c,f||this)),this}},z._unbind=function(a,b){return a&&d(a).unbind("."+this._id+(b?"-"+b:"")),this},z._trigger=function(a,b,c){var e=new d.Event("tooltip"+a);return e.originalEvent=c&&d.extend({},c)||this.cache.event||F,this.triggering=a,this.tooltip.trigger(e,[this].concat(b||[])),this.triggering=E,!e.isDefaultPrevented()},z._bindEvents=function(a,b,c,e,f,g){var h=c.filter(e).add(e.filter(c)),i=[];h.length&&(d.each(b,function(b,c){var e=d.inArray(c,a);e>-1&&i.push(a.splice(e,1)[0])}),i.length&&(this._bind(h,i,function(a){var b=this.rendered?this.tooltip[0].offsetWidth>0:!1;(b?g:f).call(this,a)}),c=c.not(h),e=e.not(h))),this._bind(c,a,f),this._bind(e,b,g)},z._assignInitialEvents=function(a){function b(a){return this.disabled||this.destroyed?E:(this.cache.event=a&&d.event.fix(a),this.cache.target=a&&d(a.target),clearTimeout(this.timers.show),void(this.timers.show=l.call(this,function(){this.render("object"==typeof a||c.show.ready)},c.prerender?0:c.show.delay)))}var c=this.options,e=c.show.target,f=c.hide.target,g=c.show.event?d.trim(""+c.show.event).split(" "):[],h=c.hide.event?d.trim(""+c.hide.event).split(" "):[];this._bind(this.elements.target,["remove","removeqtip"],function(){this.destroy(!0)},"destroy"),/mouse(over|enter)/i.test(c.show.event)&&!/mouse(out|leave)/i.test(c.hide.event)&&h.push("mouseleave"),this._bind(e,"mousemove",function(a){this._storeMouse(a),this.cache.onTarget=D}),this._bindEvents(g,h,e,f,b,function(){return this.timers?void clearTimeout(this.timers.show):E}),(c.show.ready||c.prerender)&&b.call(this,a)},z._assignEvents=function(){var c=this,e=this.options,f=e.position,g=this.tooltip,h=e.show.target,i=e.hide.target,j=f.container,k=f.viewport,l=d(b),q=d(a),r=e.show.event?d.trim(""+e.show.event).split(" "):[],s=e.hide.event?d.trim(""+e.hide.event).split(" "):[];d.each(e.events,function(a,b){c._bind(g,"toggle"===a?["tooltipshow","tooltiphide"]:["tooltip"+a],b,null,g)}),/mouse(out|leave)/i.test(e.hide.event)&&"window"===e.hide.leave&&this._bind(l,["mouseout","blur"],function(a){/select|option/.test(a.target.nodeName)||a.relatedTarget||this.hide(a)}),e.hide.fixed?i=i.add(g.addClass(Y)):/mouse(over|enter)/i.test(e.show.event)&&this._bind(i,"mouseleave",function(){clearTimeout(this.timers.show)}),(""+e.hide.event).indexOf("unfocus")>-1&&this._bind(j.closest("html"),["mousedown","touchstart"],function(a){var b=d(a.target),c=this.rendered&&!this.tooltip.hasClass(aa)&&this.tooltip[0].offsetWidth>0,e=b.parents(W).filter(this.tooltip[0]).length>0;b[0]===this.target[0]||b[0]===this.tooltip[0]||e||this.target.has(b[0]).length||!c||this.hide(a)}),"number"==typeof e.hide.inactive&&(this._bind(h,"qtip-"+this.id+"-inactive",o,"inactive"),this._bind(i.add(g),y.inactiveEvents,o)),this._bindEvents(r,s,h,i,m,n),this._bind(h.add(g),"mousemove",function(a){if("number"==typeof e.hide.distance){var b=this.cache.origin||{},c=this.options.hide.distance,d=Math.abs;(d(a.pageX-b.pageX)>=c||d(a.pageY-b.pageY)>=c)&&this.hide(a)}this._storeMouse(a)}),"mouse"===f.target&&f.adjust.mouse&&(e.hide.event&&this._bind(h,["mouseenter","mouseleave"],function(a){return this.cache?void(this.cache.onTarget="mouseenter"===a.type):E}),this._bind(l,"mousemove",function(a){this.rendered&&this.cache.onTarget&&!this.tooltip.hasClass(aa)&&this.tooltip[0].offsetWidth>0&&this.reposition(a)})),(f.adjust.resize||k.length)&&this._bind(d.event.special.resize?k:q,"resize",p),f.adjust.scroll&&this._bind(q.add(f.container),"scroll",p)},z._unassignEvents=function(){var c=this.options,e=c.show.target,f=c.hide.target,g=d.grep([this.elements.target[0],this.rendered&&this.tooltip[0],c.position.container[0],c.position.viewport[0],c.position.container.closest("html")[0],a,b],function(a){return"object"==typeof a});e&&e.toArray&&(g=g.concat(e.toArray())),f&&f.toArray&&(g=g.concat(f.toArray())),this._unbind(g)._unbind(g,"destroy")._unbind(g,"inactive")},d(function(){q(W,["mouseenter","mouseleave"],function(a){var b="mouseenter"===a.type,c=d(a.currentTarget),e=d(a.relatedTarget||a.target),f=this.options;b?(this.focus(a),c.hasClass(Y)&&!c.hasClass(aa)&&clearTimeout(this.timers.hide)):"mouse"===f.position.target&&f.position.adjust.mouse&&f.hide.event&&f.show.target&&!e.closest(f.show.target[0]).length&&this.hide(a),c.toggleClass(_,b)}),q("["+U+"]",X,o)}),y=d.fn.qtip=function(a,b,e){var f=(""+a).toLowerCase(),g=F,i=d.makeArray(arguments).slice(1),j=i[i.length-1],k=this[0]?d.data(this[0],S):F;return!arguments.length&&k||"api"===f?k:"string"==typeof a?(this.each(function(){var a=d.data(this,S);if(!a)return D;if(j&&j.timeStamp&&(a.cache.event=j),!b||"option"!==f&&"options"!==f)a[f]&&a[f].apply(a,i);else{if(e===c&&!d.isPlainObject(b))return g=a.get(b),E;a.set(b,e)}}),g!==F?g:this):"object"!=typeof a&&arguments.length?void 0:(k=h(d.extend(D,{},a)),this.each(function(a){var b,c;return c=d.isArray(k.id)?k.id[a]:k.id,c=!c||c===E||c.length<1||y.api[c]?y.nextid++:c,b=r(d(this),c,k),b===E?D:(y.api[c]=b,d.each(R,function(){"initialize"===this.initialize&&this(b)}),void b._assignInitialEvents(j))}))},d.qtip=e,y.api={},d.each({attr:function(a,b){if(this.length){var c=this[0],e="title",f=d.data(c,"qtip");if(a===e&&f&&f.options&&"object"==typeof f&&"object"==typeof f.options&&f.options.suppress)return arguments.length<2?d.attr(c,ca):(f&&f.options.content.attr===e&&f.cache.attr&&f.set("content.text",b),this.attr(ca,b))}return d.fn["attr"+ba].apply(this,arguments)},clone:function(a){var b=d.fn["clone"+ba].apply(this,arguments);return a||b.filter("["+ca+"]").attr("title",function(){return d.attr(this,ca)}).removeAttr(ca),b}},function(a,b){if(!b||d.fn[a+ba])return D;var c=d.fn[a+ba]=d.fn[a];d.fn[a]=function(){return b.apply(this,arguments)||c.apply(this,arguments)}}),d.ui||(d["cleanData"+ba]=d.cleanData,d.cleanData=function(a){for(var b,c=0;(b=d(a[c])).length;c++)if(b.attr(T))try{b.triggerHandler("removeqtip")}catch(e){}d["cleanData"+ba].apply(this,arguments)}),y.version="3.0.3",y.nextid=0,y.inactiveEvents=X,y.zindex=15e3,y.defaults={prerender:E,id:E,overwrite:D,suppress:D,content:{text:D,attr:"title",title:E,button:E},position:{my:"top left",at:"bottom right",target:E,container:E,viewport:E,adjust:{x:0,y:0,mouse:D,scroll:D,resize:D,method:"flipinvert flipinvert"},effect:function(a,b){d(this).animate(b,{duration:200,queue:E})}},show:{target:E,event:"mouseenter",effect:D,delay:90,solo:E,ready:E,autofocus:E},hide:{target:E,event:"mouseleave",effect:D,delay:0,fixed:E,inactive:E,leave:"window",distance:E},style:{classes:"",widget:E,width:E,height:E,def:D},events:{render:F,move:F,show:F,hide:F,toggle:F,visible:F,hidden:F,focus:F,blur:F}};var ha,ia,ja,ka,la,ma="margin",na="border",oa="color",pa="background-color",qa="transparent",ra=" !important",sa=!!b.createElement("canvas").getContext,ta=/rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i,ua={},va=["Webkit","O","Moz","ms"];sa?(ka=a.devicePixelRatio||1,la=function(){var a=b.createElement("canvas").getContext("2d");return a.backingStorePixelRatio||a.webkitBackingStorePixelRatio||a.mozBackingStorePixelRatio||a.msBackingStorePixelRatio||a.oBackingStorePixelRatio||1}(),ja=ka/la):ia=function(a,b,c){return"<qtipvml:"+a+' xmlns="urn:schemas-microsoft.com:vml" class="qtip-vml" '+(b||"")+' style="behavior: url(#default#VML); '+(c||"")+'" />'},d.extend(v.prototype,{init:function(a){var b,c;c=this.element=a.elements.tip=d("<div />",{"class":S+"-tip"}).prependTo(a.tooltip),sa?(b=d("<canvas />").appendTo(this.element)[0].getContext("2d"),b.lineJoin="miter",b.miterLimit=1e5,b.save()):(b=ia("shape",'coordorigin="0,0"',"position:absolute;"),this.element.html(b+b),a._bind(d("*",c).add(c),["click","mousedown"],function(a){a.stopPropagation()},this._ns)),a._bind(a.tooltip,"tooltipmove",this.reposition,this._ns,this),this.create()},_swapDimensions:function(){this.size[0]=this.options.height,this.size[1]=this.options.width},_resetDimensions:function(){this.size[0]=this.options.width,this.size[1]=this.options.height},_useTitle:function(a){var b=this.qtip.elements.titlebar;return b&&(a.y===K||a.y===O&&this.element.position().top+this.size[1]/2+this.options.offset<b.outerHeight(D))},_parseCorner:function(a){var b=this.qtip.options.position.my;return a===E||b===E?a=E:a===D?a=new A(b.string()):a.string||(a=new A(a),a.fixed=D),a},_parseWidth:function(a,b,c){var d=this.qtip.elements,e=na+s(b)+"Width";return(c?u(c,e):u(d.content,e)||u(this._useTitle(a)&&d.titlebar||d.content,e)||u(d.tooltip,e))||0},_parseRadius:function(a){var b=this.qtip.elements,c=na+s(a.y)+s(a.x)+"Radius";return da.ie<9?0:u(this._useTitle(a)&&b.titlebar||b.content,c)||u(b.tooltip,c)||0},_invalidColour:function(a,b,c){var d=a.css(b);return!d||c&&d===a.css(c)||ta.test(d)?E:d},_parseColours:function(a){var b=this.qtip.elements,c=this.element.css("cssText",""),e=na+s(a[a.precedance])+s(oa),f=this._useTitle(a)&&b.titlebar||b.content,g=this._invalidColour,h=[];return h[0]=g(c,pa)||g(f,pa)||g(b.content,pa)||g(b.tooltip,pa)||c.css(pa),h[1]=g(c,e,oa)||g(f,e,oa)||g(b.content,e,oa)||g(b.tooltip,e,oa)||b.tooltip.css(e),d("*",c).add(c).css("cssText",pa+":"+qa+ra+";"+na+":0"+ra+";"),h},_calculateSize:function(a){var b,c,d,e=a.precedance===H,f=this.options.width,g=this.options.height,h="c"===a.abbrev(),i=(e?f:g)*(h?.5:1),j=Math.pow,k=Math.round,l=Math.sqrt(j(i,2)+j(g,2)),m=[this.border/i*l,this.border/g*l];return m[2]=Math.sqrt(j(m[0],2)-j(this.border,2)),m[3]=Math.sqrt(j(m[1],2)-j(this.border,2)),b=l+m[2]+m[3]+(h?0:m[0]),c=b/l,d=[k(c*f),k(c*g)],e?d:d.reverse()},_calculateTip:function(a,b,c){c=c||1,b=b||this.size;var d=b[0]*c,e=b[1]*c,f=Math.ceil(d/2),g=Math.ceil(e/2),h={br:[0,0,d,e,d,0],bl:[0,0,d,0,0,e],tr:[0,e,d,0,d,e],tl:[0,0,0,e,d,e],tc:[0,e,f,0,d,e],bc:[0,0,d,0,f,e],rc:[0,0,d,g,0,e],lc:[d,0,d,e,0,g]};return h.lt=h.br,h.rt=h.bl,h.lb=h.tr,h.rb=h.tl,h[a.abbrev()]},_drawCoords:function(a,b){a.beginPath(),a.moveTo(b[0],b[1]),a.lineTo(b[2],b[3]),a.lineTo(b[4],b[5]),a.closePath()},create:function(){var a=this.corner=(sa||da.ie)&&this._parseCorner(this.options.corner);return this.enabled=!!this.corner&&"c"!==this.corner.abbrev(),this.enabled&&(this.qtip.cache.corner=a.clone(),this.update()),this.element.toggle(this.enabled),this.corner},update:function(b,c){if(!this.enabled)return this;var e,f,g,h,i,j,k,l,m=this.qtip.elements,n=this.element,o=n.children(),p=this.options,q=this.size,r=p.mimic,s=Math.round;b||(b=this.qtip.cache.corner||this.corner),r===E?r=b:(r=new A(r),r.precedance=b.precedance,"inherit"===r.x?r.x=b.x:"inherit"===r.y?r.y=b.y:r.x===r.y&&(r[b.precedance]=b[b.precedance])),f=r.precedance,b.precedance===G?this._swapDimensions():this._resetDimensions(),e=this.color=this._parseColours(b),e[1]!==qa?(l=this.border=this._parseWidth(b,b[b.precedance]),p.border&&1>l&&!ta.test(e[1])&&(e[0]=e[1]),this.border=l=p.border!==D?p.border:l):this.border=l=0,k=this.size=this._calculateSize(b),n.css({width:k[0],height:k[1],lineHeight:k[1]+"px"}),j=b.precedance===H?[s(r.x===L?l:r.x===N?k[0]-q[0]-l:(k[0]-q[0])/2),s(r.y===K?k[1]-q[1]:0)]:[s(r.x===L?k[0]-q[0]:0),s(r.y===K?l:r.y===M?k[1]-q[1]-l:(k[1]-q[1])/2)],sa?(g=o[0].getContext("2d"),g.restore(),g.save(),g.clearRect(0,0,6e3,6e3),h=this._calculateTip(r,q,ja),i=this._calculateTip(r,this.size,ja),o.attr(I,k[0]*ja).attr(J,k[1]*ja),o.css(I,k[0]).css(J,k[1]),this._drawCoords(g,i),g.fillStyle=e[1],g.fill(),g.translate(j[0]*ja,j[1]*ja),this._drawCoords(g,h),g.fillStyle=e[0],g.fill()):(h=this._calculateTip(r),h="m"+h[0]+","+h[1]+" l"+h[2]+","+h[3]+" "+h[4]+","+h[5]+" xe",j[2]=l&&/^(r|b)/i.test(b.string())?8===da.ie?2:1:0,o.css({coordsize:k[0]+l+" "+k[1]+l,antialias:""+(r.string().indexOf(O)>-1),left:j[0]-j[2]*Number(f===G),top:j[1]-j[2]*Number(f===H),width:k[0]+l,height:k[1]+l}).each(function(a){var b=d(this);b[b.prop?"prop":"attr"]({coordsize:k[0]+l+" "+k[1]+l,path:h,fillcolor:e[0],filled:!!a,stroked:!a}).toggle(!(!l&&!a)),!a&&b.html(ia("stroke",'weight="'+2*l+'px" color="'+e[1]+'" miterlimit="1000" joinstyle="miter"'))})),a.opera&&setTimeout(function(){m.tip.css({display:"inline-block",visibility:"visible"})},1),c!==E&&this.calculate(b,k)},calculate:function(a,b){if(!this.enabled)return E;var c,e,f=this,g=this.qtip.elements,h=this.element,i=this.options.offset,j={};
4
- return a=a||this.corner,c=a.precedance,b=b||this._calculateSize(a),e=[a.x,a.y],c===G&&e.reverse(),d.each(e,function(d,e){var h,k,l;e===O?(h=c===H?L:K,j[h]="50%",j[ma+"-"+h]=-Math.round(b[c===H?0:1]/2)+i):(h=f._parseWidth(a,e,g.tooltip),k=f._parseWidth(a,e,g.content),l=f._parseRadius(a),j[e]=Math.max(-f.border,d?k:i+(l>h?l:-h)))}),j[a[c]]-=b[c===G?0:1],h.css({margin:"",top:"",bottom:"",left:"",right:""}).css(j),j},reposition:function(a,b,d){function e(a,b,c,d,e){a===Q&&j.precedance===b&&k[d]&&j[c]!==O?j.precedance=j.precedance===G?H:G:a!==Q&&k[d]&&(j[b]=j[b]===O?k[d]>0?d:e:j[b]===d?e:d)}function f(a,b,e){j[a]===O?p[ma+"-"+b]=o[a]=g[ma+"-"+b]-k[b]:(h=g[e]!==c?[k[b],-g[b]]:[-k[b],g[b]],(o[a]=Math.max(h[0],h[1]))>h[0]&&(d[b]-=k[b],o[b]=E),p[g[e]!==c?e:b]=o[a])}if(this.enabled){var g,h,i=b.cache,j=this.corner.clone(),k=d.adjusted,l=b.options.position.adjust.method.split(" "),m=l[0],n=l[1]||l[0],o={left:E,top:E,x:0,y:0},p={};this.corner.fixed!==D&&(e(m,G,H,L,N),e(n,H,G,K,M),j.string()===i.corner.string()&&i.cornerTop===k.top&&i.cornerLeft===k.left||this.update(j,E)),g=this.calculate(j),g.right!==c&&(g.left=-g.right),g.bottom!==c&&(g.top=-g.bottom),g.user=this.offset,o.left=m===Q&&!!k.left,o.left&&f(G,L,N),o.top=n===Q&&!!k.top,o.top&&f(H,K,M),this.element.css(p).toggle(!(o.x&&o.y||j.x===O&&o.y||j.y===O&&o.x)),d.left-=g.left.charAt?g.user:m!==Q||o.top||!o.left&&!o.top?g.left+this.border:0,d.top-=g.top.charAt?g.user:n!==Q||o.left||!o.left&&!o.top?g.top+this.border:0,i.cornerLeft=k.left,i.cornerTop=k.top,i.corner=j.clone()}},destroy:function(){this.qtip._unbind(this.qtip.tooltip,this._ns),this.qtip.elements.tip&&this.qtip.elements.tip.find("*").remove().end().remove()}}),ha=R.tip=function(a){return new v(a,a.options.style.tip)},ha.initialize="render",ha.sanitize=function(a){if(a.style&&"tip"in a.style){var b=a.style.tip;"object"!=typeof b&&(b=a.style.tip={corner:b}),/string|boolean/i.test(typeof b.corner)||(b.corner=D)}},B.tip={"^position.my|style.tip.(corner|mimic|border)$":function(){this.create(),this.qtip.reposition()},"^style.tip.(height|width)$":function(a){this.size=[a.width,a.height],this.update(),this.qtip.reposition()},"^content.title|style.(classes|widget)$":function(){this.update()}},d.extend(D,y.defaults,{style:{tip:{corner:D,mimic:E,width:6,height:6,border:D,offset:0}}});var wa,xa,ya="qtip-modal",za="."+ya;xa=function(){function a(a){if(d.expr[":"].focusable)return d.expr[":"].focusable;var b,c,e,f=!isNaN(d.attr(a,"tabindex")),g=a.nodeName&&a.nodeName.toLowerCase();return"area"===g?(b=a.parentNode,c=b.name,a.href&&c&&"map"===b.nodeName.toLowerCase()?(e=d("img[usemap=#"+c+"]")[0],!!e&&e.is(":visible")):!1):/input|select|textarea|button|object/.test(g)?!a.disabled:"a"===g?a.href||f:f}function c(a){j.length<1&&a.length?a.not("body").blur():j.first().focus()}function e(a){if(h.is(":visible")){var b,e=d(a.target),g=f.tooltip,i=e.closest(W);b=i.length<1?E:parseInt(i[0].style.zIndex,10)>parseInt(g[0].style.zIndex,10),b||e.closest(W)[0]===g[0]||c(e)}}var f,g,h,i=this,j={};d.extend(i,{init:function(){return h=i.elem=d("<div />",{id:"qtip-overlay",html:"<div></div>",mousedown:function(){return E}}).hide(),d(b.body).bind("focusin"+za,e),d(b).bind("keydown"+za,function(a){f&&f.options.show.modal.escape&&27===a.keyCode&&f.hide(a)}),h.bind("click"+za,function(a){f&&f.options.show.modal.blur&&f.hide(a)}),i},update:function(b){f=b,j=b.options.show.modal.stealfocus!==E?b.tooltip.find("*").filter(function(){return a(this)}):[]},toggle:function(a,e,j){var k=a.tooltip,l=a.options.show.modal,m=l.effect,n=e?"show":"hide",o=h.is(":visible"),p=d(za).filter(":visible:not(:animated)").not(k);return i.update(a),e&&l.stealfocus!==E&&c(d(":focus")),h.toggleClass("blurs",l.blur),e&&h.appendTo(b.body),h.is(":animated")&&o===e&&g!==E||!e&&p.length?i:(h.stop(D,E),d.isFunction(m)?m.call(h,e):m===E?h[n]():h.fadeTo(parseInt(j,10)||90,e?1:0,function(){e||h.hide()}),e||h.queue(function(a){h.css({left:"",top:""}),d(za).length||h.detach(),a()}),g=e,f.destroyed&&(f=F),i)}}),i.init()},xa=new xa,d.extend(w.prototype,{init:function(a){var b=a.tooltip;return this.options.on?(a.elements.overlay=xa.elem,b.addClass(ya).css("z-index",y.modal_zindex+d(za).length),a._bind(b,["tooltipshow","tooltiphide"],function(a,c,e){var f=a.originalEvent;if(a.target===b[0])if(f&&"tooltiphide"===a.type&&/mouse(leave|enter)/.test(f.type)&&d(f.relatedTarget).closest(xa.elem[0]).length)try{a.preventDefault()}catch(g){}else(!f||f&&"tooltipsolo"!==f.type)&&this.toggle(a,"tooltipshow"===a.type,e)},this._ns,this),a._bind(b,"tooltipfocus",function(a,c){if(!a.isDefaultPrevented()&&a.target===b[0]){var e=d(za),f=y.modal_zindex+e.length,g=parseInt(b[0].style.zIndex,10);xa.elem[0].style.zIndex=f-1,e.each(function(){this.style.zIndex>g&&(this.style.zIndex-=1)}),e.filter("."+$).qtip("blur",a.originalEvent),b.addClass($)[0].style.zIndex=f,xa.update(c);try{a.preventDefault()}catch(h){}}},this._ns,this),void a._bind(b,"tooltiphide",function(a){a.target===b[0]&&d(za).filter(":visible").not(b).last().qtip("focus",a)},this._ns,this)):this},toggle:function(a,b,c){return a&&a.isDefaultPrevented()?this:void xa.toggle(this.qtip,!!b,c)},destroy:function(){this.qtip.tooltip.removeClass(ya),this.qtip._unbind(this.qtip.tooltip,this._ns),xa.toggle(this.qtip,E),delete this.qtip.elements.overlay}}),wa=R.modal=function(a){return new w(a,a.options.show.modal)},wa.sanitize=function(a){a.show&&("object"!=typeof a.show.modal?a.show.modal={on:!!a.show.modal}:"undefined"==typeof a.show.modal.on&&(a.show.modal.on=D))},y.modal_zindex=y.zindex-200,wa.initialize="render",B.modal={"^show.modal.(on|blur)$":function(){this.destroy(),this.init(),this.qtip.elems.overlay.toggle(this.qtip.tooltip[0].offsetWidth>0)}},d.extend(D,y.defaults,{show:{modal:{on:E,effect:D,blur:D,stealfocus:D,escape:D}}}),R.viewport=function(c,d,e,f,g,h,i){function j(a,b,c,e,f,g,h,i,j){var k=d[f],s=u[a],t=v[a],w=c===Q,x=s===f?j:s===g?-j:-j/2,y=t===f?i:t===g?-i:-i/2,z=q[f]+r[f]-(n?0:m[f]),A=z-k,B=k+j-(h===I?o:p)-z,C=x-(u.precedance===a||s===u[b]?y:0)-(t===O?i/2:0);return w?(C=(s===f?1:-1)*x,d[f]+=A>0?A:B>0?-B:0,d[f]=Math.max(-m[f]+r[f],k-C,Math.min(Math.max(-m[f]+r[f]+(h===I?o:p),k+C),d[f],"center"===s?k-x:1e9))):(e*=c===P?2:0,A>0&&(s!==f||B>0)?(d[f]-=C+e,l.invert(a,f)):B>0&&(s!==g||A>0)&&(d[f]-=(s===O?-C:C)+e,l.invert(a,g)),d[f]<q[f]&&-d[f]>B&&(d[f]=k,l=u.clone())),d[f]-k}var k,l,m,n,o,p,q,r,s=e.target,t=c.elements.tooltip,u=e.my,v=e.at,w=e.adjust,x=w.method.split(" "),y=x[0],z=x[1]||x[0],A=e.viewport,B=e.container,C={left:0,top:0};return A.jquery&&s[0]!==a&&s[0]!==b.body&&"none"!==w.method?(m=B.offset()||C,n="static"===B.css("position"),k="fixed"===t.css("position"),o=A[0]===a?A.width():A.outerWidth(E),p=A[0]===a?A.height():A.outerHeight(E),q={left:k?0:A.scrollLeft(),top:k?0:A.scrollTop()},r=A.offset()||C,"shift"===y&&"shift"===z||(l=u.clone()),C={left:"none"!==y?j(G,H,y,w.x,L,N,I,f,h):0,top:"none"!==z?j(H,G,z,w.y,K,M,J,g,i):0,my:l}):C},R.polys={polygon:function(a,b){var c,d,e,f={width:0,height:0,position:{top:1e10,right:0,bottom:0,left:1e10},adjustable:E},g=0,h=[],i=1,j=1,k=0,l=0;for(g=a.length;g--;)c=[parseInt(a[--g],10),parseInt(a[g+1],10)],c[0]>f.position.right&&(f.position.right=c[0]),c[0]<f.position.left&&(f.position.left=c[0]),c[1]>f.position.bottom&&(f.position.bottom=c[1]),c[1]<f.position.top&&(f.position.top=c[1]),h.push(c);if(d=f.width=Math.abs(f.position.right-f.position.left),e=f.height=Math.abs(f.position.bottom-f.position.top),"c"===b.abbrev())f.position={left:f.position.left+f.width/2,top:f.position.top+f.height/2};else{for(;d>0&&e>0&&i>0&&j>0;)for(d=Math.floor(d/2),e=Math.floor(e/2),b.x===L?i=d:b.x===N?i=f.width-d:i+=Math.floor(d/2),b.y===K?j=e:b.y===M?j=f.height-e:j+=Math.floor(e/2),g=h.length;g--&&!(h.length<2);)k=h[g][0]-f.position.left,l=h[g][1]-f.position.top,(b.x===L&&k>=i||b.x===N&&i>=k||b.x===O&&(i>k||k>f.width-i)||b.y===K&&l>=j||b.y===M&&j>=l||b.y===O&&(j>l||l>f.height-j))&&h.splice(g,1);f.position={left:h[0][0],top:h[0][1]}}return f},rect:function(a,b,c,d){return{width:Math.abs(c-a),height:Math.abs(d-b),position:{left:Math.min(a,c),top:Math.min(b,d)}}},_angles:{tc:1.5,tr:7/4,tl:5/4,bc:.5,br:.25,bl:.75,rc:2,lc:1,c:0},ellipse:function(a,b,c,d,e){var f=R.polys._angles[e.abbrev()],g=0===f?0:c*Math.cos(f*Math.PI),h=d*Math.sin(f*Math.PI);return{width:2*c-Math.abs(g),height:2*d-Math.abs(h),position:{left:a+g,top:b+h},adjustable:E}},circle:function(a,b,c,d){return R.polys.ellipse(a,b,c,c,d)}},R.svg=function(a,c,e){for(var f,g,h,i,j,k,l,m,n,o=c[0],p=d(o.ownerSVGElement),q=o.ownerDocument,r=(parseInt(c.css("stroke-width"),10)||0)/2;!o.getBBox;)o=o.parentNode;if(!o.getBBox||!o.parentNode)return E;switch(o.nodeName){case"ellipse":case"circle":m=R.polys.ellipse(o.cx.baseVal.value,o.cy.baseVal.value,(o.rx||o.r).baseVal.value+r,(o.ry||o.r).baseVal.value+r,e);break;case"line":case"polygon":case"polyline":for(l=o.points||[{x:o.x1.baseVal.value,y:o.y1.baseVal.value},{x:o.x2.baseVal.value,y:o.y2.baseVal.value}],m=[],k=-1,i=l.numberOfItems||l.length;++k<i;)j=l.getItem?l.getItem(k):l[k],m.push.apply(m,[j.x,j.y]);m=R.polys.polygon(m,e);break;default:m=o.getBBox(),m={width:m.width,height:m.height,position:{left:m.x,top:m.y}}}return n=m.position,p=p[0],p.createSVGPoint&&(g=o.getScreenCTM(),l=p.createSVGPoint(),l.x=n.left,l.y=n.top,h=l.matrixTransform(g),n.left=h.x,n.top=h.y),q!==b&&"mouse"!==a.position.target&&(f=d((q.defaultView||q.parentWindow).frameElement).offset(),f&&(n.left+=f.left,n.top+=f.top)),q=d(q),n.left+=q.scrollLeft(),n.top+=q.scrollTop(),m},R.imagemap=function(a,b,c){b.jquery||(b=d(b));var e,f,g,h,i,j=(b.attr("shape")||"rect").toLowerCase().replace("poly","polygon"),k=d('img[usemap="#'+b.parent("map").attr("name")+'"]'),l=d.trim(b.attr("coords")),m=l.replace(/,$/,"").split(",");if(!k.length)return E;if("polygon"===j)h=R.polys.polygon(m,c);else{if(!R.polys[j])return E;for(g=-1,i=m.length,f=[];++g<i;)f.push(parseInt(m[g],10));h=R.polys[j].apply(this,f.concat(c))}return e=k.offset(),e.left+=Math.ceil((k.outerWidth(E)-k.width())/2),e.top+=Math.ceil((k.outerHeight(E)-k.height())/2),h.position.left+=e.left,h.position.top+=e.top,h};var Aa,Ba='<iframe class="qtip-bgiframe" frameborder="0" tabindex="-1" src="javascript:\'\';" style="display:block; position:absolute; z-index:-1; filter:alpha(opacity=0); -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";"></iframe>';d.extend(x.prototype,{_scroll:function(){var b=this.qtip.elements.overlay;b&&(b[0].style.top=d(a).scrollTop()+"px")},init:function(c){var e=c.tooltip;d("select, object").length<1&&(this.bgiframe=c.elements.bgiframe=d(Ba).appendTo(e),c._bind(e,"tooltipmove",this.adjustBGIFrame,this._ns,this)),this.redrawContainer=d("<div/>",{id:S+"-rcontainer"}).appendTo(b.body),c.elements.overlay&&c.elements.overlay.addClass("qtipmodal-ie6fix")&&(c._bind(a,["scroll","resize"],this._scroll,this._ns,this),c._bind(e,["tooltipshow"],this._scroll,this._ns,this)),this.redraw()},adjustBGIFrame:function(){var a,b,c=this.qtip.tooltip,d={height:c.outerHeight(E),width:c.outerWidth(E)},e=this.qtip.plugins.tip,f=this.qtip.elements.tip;b=parseInt(c.css("borderLeftWidth"),10)||0,b={left:-b,top:-b},e&&f&&(a="x"===e.corner.precedance?[I,L]:[J,K],b[a[1]]-=f[a[0]]()),this.bgiframe.css(b).css(d)},redraw:function(){if(this.qtip.rendered<1||this.drawing)return this;var a,b,c,d,e=this.qtip.tooltip,f=this.qtip.options.style,g=this.qtip.options.position.container;return this.qtip.drawing=1,f.height&&e.css(J,f.height),f.width?e.css(I,f.width):(e.css(I,"").appendTo(this.redrawContainer),b=e.width(),1>b%2&&(b+=1),c=e.css("maxWidth")||"",d=e.css("minWidth")||"",a=(c+d).indexOf("%")>-1?g.width()/100:0,c=(c.indexOf("%")>-1?a:1*parseInt(c,10))||b,d=(d.indexOf("%")>-1?a:1*parseInt(d,10))||0,b=c+d?Math.min(Math.max(b,d),c):b,e.css(I,Math.round(b)).appendTo(g)),this.drawing=0,this},destroy:function(){this.bgiframe&&this.bgiframe.remove(),this.qtip._unbind([a,this.qtip.tooltip],this._ns)}}),Aa=R.ie6=function(a){return 6===da.ie?new x(a):E},Aa.initialize="render",B.ie6={"^content|style$":function(){this.redraw()}}})}(window,document);
 
 
 
 
assets/js/metaseo_admin.js CHANGED
@@ -53,7 +53,7 @@ var oldDescValues = {};
53
  * @param updateSnippet
54
  */
55
  function metaseo_titlelength(metatitle_id, updateSnippet) {
56
- var title = jQuery.trim(metaseo_clean(jQuery('#' + metatitle_id).val()));
57
  var postid = metatitle_id.replace('metaseo-metatitle-', '');
58
  var counter_id = 'metaseo-metatitle-len' + postid;
59
  jQuery('#' + counter_id).text(title_max_len - title.length);
@@ -80,7 +80,7 @@ function metaseo_titlelength(metatitle_id, updateSnippet) {
80
  * @param needToSave
81
  */
82
  function metaseo_updateTitle(metatitle_id, needToSave) {
83
- var title = jQuery.trim(metaseo_clean(jQuery('#' + metatitle_id).val()));
84
  var postid = metatitle_id.replace('metaseo-metatitle-', '');
85
  if (needToSave === true && oldTitleValues[postid] !== title) {
86
  saveMetaContentChanges('metatitle', postid, title);
@@ -95,7 +95,7 @@ function metaseo_updateTitle(metatitle_id, needToSave) {
95
  * @param metakeywords_id string id of element tag
96
  */
97
  function metaseo_keywordlength(metakeywords_id) {
98
- var keywords = jQuery.trim(metaseo_clean(jQuery('#' + metakeywords_id).val()));
99
  var postid = metakeywords_id.replace('metaseo-metakeywords-', '');
100
 
101
  var counter_id = 'metaseo-metakeywords-len' + postid;
@@ -114,7 +114,7 @@ function metaseo_keywordlength(metakeywords_id) {
114
  * @param needToSave
115
  */
116
  function metaseo_updatekeywords(metakeywords_id, needToSave) {
117
- var keywords = jQuery.trim(metaseo_clean(jQuery('#' + metakeywords_id).val()));
118
  var postid = metakeywords_id.replace('metaseo-metakeywords-', '');
119
  if (needToSave === true && oldKeywordsValues[postid] !== keywords) {
120
  saveMetaContentChanges('metakeywords', postid, keywords);
@@ -155,7 +155,7 @@ function wpmsRemoveLink(link_id) {
155
  function saveMetaLinkChanges(button_update) {
156
  var link_id = jQuery(button_update).closest('tr').data('link');
157
  var meta_title = jQuery(button_update).closest('tr').find('.metaseo_link_title').val();
158
- meta_title = jQuery.trim(metaseo_clean(meta_title));
159
  jQuery.ajax({
160
  url: ajaxurl,
161
  method: 'POST',
@@ -277,7 +277,7 @@ function wpmsScanLink($this) {
277
  if (wpms_process_new > 100)
278
  wpms_process_new = 100;
279
  jQuery('.wpms_process').data('w', wpms_process_new).html('<span>' + parseInt(wpms_process_new) + '%</span>').css('width', wpms_process_new + '%').show();
280
- $this.click();
281
  } else if (res.type === 'limit_comment_content') {
282
  wpms_process = jQuery('.wpms_process').data('w');
283
  if (wpms_process < 33.33)
@@ -287,7 +287,7 @@ function wpmsScanLink($this) {
287
  wpms_process_new = 100;
288
  jQuery('.wpms_process').data('w', wpms_process_new).html('<span>' + parseInt(wpms_process_new) + '%</span>').css('width', wpms_process_new + '%').show();
289
  $this.data('comment_paged', parseInt(res.paged) + 1);
290
- $this.click();
291
  } else {
292
  wpms_process = jQuery('.wpms_process').data('w');
293
  if (wpms_process < 66.66)
@@ -297,7 +297,7 @@ function wpmsScanLink($this) {
297
  wpms_process_new = 100;
298
  jQuery('.wpms_process').data('w', wpms_process_new).html('<span>' + parseInt(wpms_process_new) + '%</span>').css('width', wpms_process_new + '%').show();
299
  $this.data('paged', parseInt(res.paged) + 1);
300
- $this.click();
301
  }
302
  } else {
303
  $this.removeClass('scaning');
@@ -363,7 +363,7 @@ function wpmsLinkDoAction(button) {
363
  } else {
364
  if (action_name === 'follow_all' || action_name === 'nofollow_all' || action_name === 'copy_title_all') {
365
  if (response.message === 'limit') {
366
- $this.click();
367
  }
368
  }
369
  }
@@ -376,7 +376,7 @@ function wpmsLinkDoAction(button) {
376
  * @param metadesc_id string id of element tag
377
  */
378
  function metaseo_desclength(metadesc_id) {
379
- var desc = jQuery.trim(metaseo_clean(jQuery('#' + metadesc_id).val()));
380
  var postid = metadesc_id.replace('metaseo-metadesc-', '');
381
  var counter_id = 'metaseo-metadesc-len' + postid;
382
  jQuery('#' + counter_id).text(desc_max_len - desc.length);
@@ -398,7 +398,7 @@ function metaseo_desclength(metadesc_id) {
398
  * @param needToSave
399
  */
400
  function metaseo_updateDesc(metadesc_id, needToSave) {
401
- var desc = jQuery.trim(metaseo_clean(jQuery('#' + metadesc_id).val()));
402
  var postid = metadesc_id.replace('metaseo-metadesc-', '');
403
  if (needToSave === true && oldDescValues[postid] !== desc) {
404
  saveMetaContentChanges('metadesc', postid, desc);
@@ -429,7 +429,7 @@ function saveMetaContentChanges(metakey, postid, data) {
429
  // We can also pass the url value separately from ajaxurl for front end AJAX implementations
430
  jQuery.post(wpms_localize.ajax_url, postData, function (response) {
431
  jQuery('.wpms_loader' + postid).hide();
432
- result = jQuery.parseJSON(response);
433
 
434
  if (result.updated) {
435
  autosaveNotification = setTimeout(function () {
@@ -672,23 +672,15 @@ function _metaSeoScanImages(imgs) {
672
  }
673
 
674
  // show tooltip when hover 'Fix meta/Edit meta' button
675
- jQuery('.fix-metas').qtip({
676
- content: {
677
- attr: 'alt'
678
- },
679
- position: {
680
- my: 'bottom center',
681
- at: 'top center'
682
- },
683
- style: {
684
- tip: {
685
- corner: true
686
- },
687
- classes: 'wpms-widgets-qtip_show_arow'
688
- },
689
- hide: {
690
- fixed: true,
691
- delay: 1
692
  }
693
  });
694
  },
@@ -846,7 +838,7 @@ function optimize_imgs_group(that) {
846
  jQuery(that).parent().find('span.spinner').show();
847
  }
848
 
849
- jQuery(this).click();
850
 
851
  if (parseInt(i) === (jQuery(el).length - 1)) {
852
  jQuery(that).parent().find('span.spinner').hide();
@@ -1064,7 +1056,7 @@ function wpms_image_scan_meta($this) {
1064
  wpms_process_new = 100;
1065
  $this.data('paged', parseInt(res.paged) + 1);
1066
  jQuery('.wpms_process').data('w', wpms_process_new).html('<span>' + parseInt(wpms_process_new) + '%</span>').css('width', wpms_process_new + '%').show();
1067
- jQuery('.image_scan_meta').click();
1068
  }
1069
  } else {
1070
  $this.removeClass('scaning');
@@ -1103,7 +1095,7 @@ jQuery(document).ready(function ($) {
1103
  wpms_image_scan_meta($(this));
1104
  });
1105
 
1106
- $('.wp-meta-seo_page_metaseo_image_meta #image-submit').click(function (e) {
1107
  e.preventDefault();
1108
  $('.imgspinner').show().css('visibility', 'visible');
1109
  $('#wp-seo-meta-form').submit();
@@ -1117,12 +1109,12 @@ jQuery(document).ready(function ($) {
1117
  $('body').css({'cursor': 'default'});
1118
  });
1119
 
1120
- $('span.pagination-links a.disabled').click(function (e) {
1121
  e.preventDefault();
1122
  });
1123
 
1124
  // when change value of per page input in image view
1125
- $('.metaseo_imgs_per_page').bind('input propertychange', function () {
1126
  var perpage = $(this).val();
1127
  $('.metaseo_imgs_per_page').each(function (i, e) {
1128
  if ($(e).val() !== perpage) {
@@ -1132,7 +1124,7 @@ jQuery(document).ready(function ($) {
1132
  });
1133
 
1134
  // when change link source filter in link view
1135
- $('.metaseo_link_source').bind('change', function () {
1136
  var value = $(this).val();
1137
  $('.metaseo_link_source').each(function (i, e) {
1138
  if ($(e).val() !== value) {
@@ -1142,7 +1134,7 @@ jQuery(document).ready(function ($) {
1142
  });
1143
 
1144
  // when change follow value of link in link view
1145
- $('.metaseo_follow_action').bind('change', function () {
1146
  var value = $(this).val();
1147
  $('.metaseo_follow_action').each(function (i, e) {
1148
  if ($(e).val() !== value) {
@@ -1152,7 +1144,7 @@ jQuery(document).ready(function ($) {
1152
  });
1153
 
1154
  // when change the filter
1155
- $('.metaseo-filter').bind('change', function () {
1156
  var value = $(this).val();
1157
  $('.metaseo-filter').each(function (i, e) {
1158
  if ($(e).val() !== value) {
@@ -1162,7 +1154,7 @@ jQuery(document).ready(function ($) {
1162
  });
1163
 
1164
  // when change 'All images' filter in image view
1165
- $('.meta_filter').bind('change', function () {
1166
  var value = $(this).val();
1167
  $('.meta_filter').each(function (i, e) {
1168
  if ($(e).val() !== value) {
@@ -1172,7 +1164,7 @@ jQuery(document).ready(function ($) {
1172
  });
1173
 
1174
  // when change 'Status' filter in 404 view
1175
- $('.redirect_filter').bind('change', function () {
1176
  var value = $(this).val();
1177
  $('.redirect_filter').each(function (i, e) {
1178
  if ($(e).val() !== value) {
@@ -1182,7 +1174,7 @@ jQuery(document).ready(function ($) {
1182
  });
1183
 
1184
  // when change broken filter in 404 view
1185
- $('.broken_filter').bind('change', function () {
1186
  var value = $(this).val();
1187
  $('.broken_filter').each(function (i, e) {
1188
  if ($(e).val() !== value) {
@@ -1192,7 +1184,7 @@ jQuery(document).ready(function ($) {
1192
  });
1193
 
1194
  // when change 'All meta infomation' filter in content view
1195
- $('.wpms_duplicate_meta').bind('change', function () {
1196
  var value = $(this).val();
1197
  $('.wpms_duplicate_meta').each(function (i, e) {
1198
  if ($(e).val() !== value) {
@@ -1201,7 +1193,7 @@ jQuery(document).ready(function ($) {
1201
  });
1202
  });
1203
 
1204
- $('.wpms_post_visibility').bind('change', function () {
1205
  var value = $(this).val();
1206
  $('.wpms_post_visibility').each(function (i, e) {
1207
  if ($(e).val() !== value) {
@@ -1210,7 +1202,7 @@ jQuery(document).ready(function ($) {
1210
  });
1211
  });
1212
 
1213
- $('.wpms_lang_list').bind('change', function () {
1214
  var value = $(this).val();
1215
  $('.wpms_lang_list').each(function (i, e) {
1216
  if ($(e).val() !== value) {
@@ -1219,7 +1211,7 @@ jQuery(document).ready(function ($) {
1219
  });
1220
  });
1221
 
1222
- $('.metaseo-img-name').bind('input propertychange', function () {
1223
  var savedInfo = $(this).parent().find('span.saved-info');
1224
  var iname = validateiName($(this).val());
1225
  var msg = iname.msg;
@@ -1242,14 +1234,14 @@ jQuery(document).ready(function ($) {
1242
  if ($(this).hasClass('metaseo-img-name')) {
1243
  metaseoValueHolder[this.id + '_prev'] = jQuery(this).val();
1244
  }
1245
- $(element).bind('keydown', function (event) {
1246
  if (parseInt(event.which) === 13 || parseInt(event.keyCode) === 13) {
1247
  return false;
1248
  }
1249
  });
1250
  });
1251
 
1252
- $('.metaseo-img-meta').change(function () {
1253
  if (jQuery(this).val() === '') {
1254
  jQuery(this).val(metaseoValueHolder[this.id + '_prev']);
1255
  $(this).parent().find('span.saved-info').empty().append('<span class="spinner"></span>');
@@ -1260,7 +1252,7 @@ jQuery(document).ready(function ($) {
1260
  });
1261
 
1262
  // when import meta
1263
- $('.dissmiss-import').bind('click', function (e) {
1264
  e.preventDefault();
1265
  $(this).closest('.error').fadeOut(1000);
1266
  setTimeout(function () {
@@ -1326,21 +1318,21 @@ jQuery(document).ready(function ($) {
1326
  var btnClose = obj.find('.popup-close');
1327
  bg.animate({opacity: 0.2}, 0).fadeIn(200);
1328
  obj.fadeIn(200).absoluteCenter();
1329
- btnClose.click(function () {
1330
  bg.fadeOut(100);
1331
  obj.fadeOut(100).find('div.popup-content').empty();
1332
  });
1333
- bg.click(function () {
1334
- btnClose.click();
1335
  });
1336
  $(document).keydown(function (e) {
1337
  if (parseInt(e.keyCode) === 27) {
1338
- btnClose.click();
1339
  }
1340
  });
1341
  return false;
1342
  };
1343
- $('a.show-popup').bind('click', function () {
1344
  $(this).showPopup($(this));
1345
  });
1346
 
53
  * @param updateSnippet
54
  */
55
  function metaseo_titlelength(metatitle_id, updateSnippet) {
56
+ var title = (metaseo_clean(jQuery('#' + metatitle_id).val())).trim();
57
  var postid = metatitle_id.replace('metaseo-metatitle-', '');
58
  var counter_id = 'metaseo-metatitle-len' + postid;
59
  jQuery('#' + counter_id).text(title_max_len - title.length);
80
  * @param needToSave
81
  */
82
  function metaseo_updateTitle(metatitle_id, needToSave) {
83
+ var title = (metaseo_clean(jQuery('#' + metatitle_id).val())).trim();
84
  var postid = metatitle_id.replace('metaseo-metatitle-', '');
85
  if (needToSave === true && oldTitleValues[postid] !== title) {
86
  saveMetaContentChanges('metatitle', postid, title);
95
  * @param metakeywords_id string id of element tag
96
  */
97
  function metaseo_keywordlength(metakeywords_id) {
98
+ var keywords = (metaseo_clean(jQuery('#' + metakeywords_id).val())).trim();
99
  var postid = metakeywords_id.replace('metaseo-metakeywords-', '');
100
 
101
  var counter_id = 'metaseo-metakeywords-len' + postid;
114
  * @param needToSave
115
  */
116
  function metaseo_updatekeywords(metakeywords_id, needToSave) {
117
+ var keywords = (metaseo_clean(jQuery('#' + metakeywords_id).val())).trim();
118
  var postid = metakeywords_id.replace('metaseo-metakeywords-', '');
119
  if (needToSave === true && oldKeywordsValues[postid] !== keywords) {
120
  saveMetaContentChanges('metakeywords', postid, keywords);
155
  function saveMetaLinkChanges(button_update) {
156
  var link_id = jQuery(button_update).closest('tr').data('link');
157
  var meta_title = jQuery(button_update).closest('tr').find('.metaseo_link_title').val();
158
+ meta_title = (metaseo_clean(meta_title)).trim();
159
  jQuery.ajax({
160
  url: ajaxurl,
161
  method: 'POST',
277
  if (wpms_process_new > 100)
278
  wpms_process_new = 100;
279
  jQuery('.wpms_process').data('w', wpms_process_new).html('<span>' + parseInt(wpms_process_new) + '%</span>').css('width', wpms_process_new + '%').show();
280
+ $this.trigger('click');
281
  } else if (res.type === 'limit_comment_content') {
282
  wpms_process = jQuery('.wpms_process').data('w');
283
  if (wpms_process < 33.33)
287
  wpms_process_new = 100;
288
  jQuery('.wpms_process').data('w', wpms_process_new).html('<span>' + parseInt(wpms_process_new) + '%</span>').css('width', wpms_process_new + '%').show();
289
  $this.data('comment_paged', parseInt(res.paged) + 1);
290
+ $this.trigger('click');
291
  } else {
292
  wpms_process = jQuery('.wpms_process').data('w');
293
  if (wpms_process < 66.66)
297
  wpms_process_new = 100;
298
  jQuery('.wpms_process').data('w', wpms_process_new).html('<span>' + parseInt(wpms_process_new) + '%</span>').css('width', wpms_process_new + '%').show();
299
  $this.data('paged', parseInt(res.paged) + 1);
300
+ $this.trigger('click');
301
  }
302
  } else {
303
  $this.removeClass('scaning');
363
  } else {
364
  if (action_name === 'follow_all' || action_name === 'nofollow_all' || action_name === 'copy_title_all') {
365
  if (response.message === 'limit') {
366
+ $this.trigger('click');
367
  }
368
  }
369
  }
376
  * @param metadesc_id string id of element tag
377
  */
378
  function metaseo_desclength(metadesc_id) {
379
+ var desc = (metaseo_clean(jQuery('#' + metadesc_id).val())).trim();
380
  var postid = metadesc_id.replace('metaseo-metadesc-', '');
381
  var counter_id = 'metaseo-metadesc-len' + postid;
382
  jQuery('#' + counter_id).text(desc_max_len - desc.length);
398
  * @param needToSave
399
  */
400
  function metaseo_updateDesc(metadesc_id, needToSave) {
401
+ var desc = (metaseo_clean(jQuery('#' + metadesc_id).val())).trim();
402
  var postid = metadesc_id.replace('metaseo-metadesc-', '');
403
  if (needToSave === true && oldDescValues[postid] !== desc) {
404
  saveMetaContentChanges('metadesc', postid, desc);
429
  // We can also pass the url value separately from ajaxurl for front end AJAX implementations
430
  jQuery.post(wpms_localize.ajax_url, postData, function (response) {
431
  jQuery('.wpms_loader' + postid).hide();
432
+ result = JSON.parse(response);
433
 
434
  if (result.updated) {
435
  autosaveNotification = setTimeout(function () {
672
  }
673
 
674
  // show tooltip when hover 'Fix meta/Edit meta' button
675
+ tippy('.fix-metas', {
676
+ animation: 'scale',
677
+ duration: 0,
678
+ arrow: false,
679
+ placement: 'top',
680
+ theme: 'wpms-widgets-tippy_show_arow',
681
+ onShow(instance) {
682
+ instance.popper.hidden = instance.reference.dataset.tippy ? false : true;
683
+ instance.setContent(instance.reference.dataset.tippy);
 
 
 
 
 
 
 
 
684
  }
685
  });
686
  },
838
  jQuery(that).parent().find('span.spinner').show();
839
  }
840
 
841
+ jQuery(this).trigger('click');
842
 
843
  if (parseInt(i) === (jQuery(el).length - 1)) {
844
  jQuery(that).parent().find('span.spinner').hide();
1056
  wpms_process_new = 100;
1057
  $this.data('paged', parseInt(res.paged) + 1);
1058
  jQuery('.wpms_process').data('w', wpms_process_new).html('<span>' + parseInt(wpms_process_new) + '%</span>').css('width', wpms_process_new + '%').show();
1059
+ jQuery('.image_scan_meta').trigger('click');
1060
  }
1061
  } else {
1062
  $this.removeClass('scaning');
1095
  wpms_image_scan_meta($(this));
1096
  });
1097
 
1098
+ $('.wp-meta-seo_page_metaseo_image_meta #image-submit').on('click', function (e) {
1099
  e.preventDefault();
1100
  $('.imgspinner').show().css('visibility', 'visible');
1101
  $('#wp-seo-meta-form').submit();
1109
  $('body').css({'cursor': 'default'});
1110
  });
1111
 
1112
+ $('span.pagination-links a.disabled').on('click', function (e) {
1113
  e.preventDefault();
1114
  });
1115
 
1116
  // when change value of per page input in image view
1117
+ $('.metaseo_imgs_per_page').on('input propertychange', function () {
1118
  var perpage = $(this).val();
1119
  $('.metaseo_imgs_per_page').each(function (i, e) {
1120
  if ($(e).val() !== perpage) {
1124
  });
1125
 
1126
  // when change link source filter in link view
1127
+ $('.metaseo_link_source').on('change', function () {
1128
  var value = $(this).val();
1129
  $('.metaseo_link_source').each(function (i, e) {
1130
  if ($(e).val() !== value) {
1134
  });
1135
 
1136
  // when change follow value of link in link view
1137
+ $('.metaseo_follow_action').on('change', function () {
1138
  var value = $(this).val();
1139
  $('.metaseo_follow_action').each(function (i, e) {
1140
  if ($(e).val() !== value) {
1144
  });
1145
 
1146
  // when change the filter
1147
+ $('.metaseo-filter').on('change', function () {
1148
  var value = $(this).val();
1149
  $('.metaseo-filter').each(function (i, e) {
1150
  if ($(e).val() !== value) {
1154
  });
1155
 
1156
  // when change 'All images' filter in image view
1157
+ $('.meta_filter').on('change', function () {
1158
  var value = $(this).val();
1159
  $('.meta_filter').each(function (i, e) {
1160
  if ($(e).val() !== value) {
1164
  });
1165
 
1166
  // when change 'Status' filter in 404 view
1167
+ $('.redirect_filter').on('change', function () {
1168
  var value = $(this).val();
1169
  $('.redirect_filter').each(function (i, e) {
1170
  if ($(e).val() !== value) {
1174
  });
1175
 
1176
  // when change broken filter in 404 view
1177
+ $('.broken_filter').on('change', function () {
1178
  var value = $(this).val();
1179
  $('.broken_filter').each(function (i, e) {
1180
  if ($(e).val() !== value) {
1184
  });
1185
 
1186
  // when change 'All meta infomation' filter in content view
1187
+ $('.wpms_duplicate_meta').on('change', function () {
1188
  var value = $(this).val();
1189
  $('.wpms_duplicate_meta').each(function (i, e) {
1190
  if ($(e).val() !== value) {
1193
  });
1194
  });
1195
 
1196
+ $('.wpms_post_visibility').on('change', function () {
1197
  var value = $(this).val();
1198
  $('.wpms_post_visibility').each(function (i, e) {
1199
  if ($(e).val() !== value) {
1202
  });
1203
  });
1204
 
1205
+ $('.wpms_lang_list').on('change', function () {
1206
  var value = $(this).val();
1207
  $('.wpms_lang_list').each(function (i, e) {
1208
  if ($(e).val() !== value) {
1211
  });
1212
  });
1213
 
1214
+ $('.metaseo-img-name').on('input propertychange', function () {
1215
  var savedInfo = $(this).parent().find('span.saved-info');
1216
  var iname = validateiName($(this).val());
1217
  var msg = iname.msg;
1234
  if ($(this).hasClass('metaseo-img-name')) {
1235
  metaseoValueHolder[this.id + '_prev'] = jQuery(this).val();
1236
  }
1237
+ $(element).on('keydown', function (event) {
1238
  if (parseInt(event.which) === 13 || parseInt(event.keyCode) === 13) {
1239
  return false;
1240
  }
1241
  });
1242
  });
1243
 
1244
+ $('.metaseo-img-meta').on('change', function () {
1245
  if (jQuery(this).val() === '') {
1246
  jQuery(this).val(metaseoValueHolder[this.id + '_prev']);
1247
  $(this).parent().find('span.saved-info').empty().append('<span class="spinner"></span>');
1252
  });
1253
 
1254
  // when import meta
1255
+ $('.dissmiss-import').on('click', function (e) {
1256
  e.preventDefault();
1257
  $(this).closest('.error').fadeOut(1000);
1258
  setTimeout(function () {
1318
  var btnClose = obj.find('.popup-close');
1319
  bg.animate({opacity: 0.2}, 0).fadeIn(200);
1320
  obj.fadeIn(200).absoluteCenter();
1321
+ btnClose.on('click', function () {
1322
  bg.fadeOut(100);
1323
  obj.fadeOut(100).find('div.popup-content').empty();
1324
  });
1325
+ bg.on('click', function () {
1326
+ btnClose.trigger('click');
1327
  });
1328
  $(document).keydown(function (e) {
1329
  if (parseInt(e.keyCode) === 27) {
1330
+ btnClose.trigger('click');
1331
  }
1332
  });
1333
  return false;
1334
  };
1335
+ $('a.show-popup').on('click', function () {
1336
  $(this).showPopup($(this));
1337
  });
1338
 
assets/js/metaseo_sitemap.js CHANGED
@@ -1,7 +1,7 @@
1
  (function ($) {
2
  $.fn.hScroll = function (amount) {
3
  amount = amount || 120;
4
- $(this).bind("DOMMouseScroll mousewheel", function (event) {
5
  var oEvent = event.originalEvent,
6
  direction = oEvent.detail ? oEvent.detail * -amount : oEvent.wheelDelta,
7
  position = $(this).scrollLeft();
@@ -93,24 +93,16 @@
93
  delay: 20
94
  });
95
 
96
- // Open qtip
97
- jQuery('.wpms_source .ju-setting-label').qtip({
98
- content: {
99
- attr: 'data-alt'
100
- },
101
- position: {
102
- my: 'bottom center',
103
- at: 'center center'
104
- },
105
- style: {
106
- tip: {
107
- corner: true
108
- },
109
- classes: 'metaseo-qtip qtip-rounded'
110
- },
111
- hide: {
112
- fixed: true,
113
- delay: 1
114
  }
115
  });
116
 
1
  (function ($) {
2
  $.fn.hScroll = function (amount) {
3
  amount = amount || 120;
4
+ $(this).on("DOMMouseScroll mousewheel", function (event) {
5
  var oEvent = event.originalEvent,
6
  direction = oEvent.detail ? oEvent.detail * -amount : oEvent.wheelDelta,
7
  position = $(this).scrollLeft();
93
  delay: 20
94
  });
95
 
96
+ // Open tippy
97
+ tippy('.wpms_source .ju-setting-label', {
98
+ animation: 'scale',
99
+ duration: 0,
100
+ arrow: false,
101
+ placement: 'top',
102
+ theme: 'metaseo-tippy tippy-rounded',
103
+ onShow(instance) {
104
+ instance.popper.hidden = instance.reference.dataset.tippy ? false : true;
105
+ instance.setContent(instance.reference.dataset.tippy);
 
 
 
 
 
 
 
 
106
  }
107
  });
108
 
assets/js/my-qtips.js DELETED
@@ -1,61 +0,0 @@
1
- jQuery(document).ready(function ($) {
2
- jQuery('.label-dash-widgets').qtip({
3
- content: {
4
- attr: 'data-alt'
5
- },
6
- position: {
7
- my: 'bottom left',
8
- at: 'top center'
9
- },
10
- style: {
11
- tip: {
12
- corner: true
13
- },
14
- classes: 'wpms-widgets-qtip'
15
- },
16
- hide: {
17
- fixed: true,
18
- delay: 1
19
- }
20
- });
21
-
22
- jQuery('.wpms_dash_widgets').qtip({
23
- content: {
24
- attr: 'data-alt'
25
- },
26
- position: {
27
- my: 'bottom center',
28
- at: 'top center'
29
- },
30
- style: {
31
- tip: {
32
- corner: true
33
- },
34
- classes: 'wpms-widgets-qtip'
35
- },
36
- hide: {
37
- fixed: true,
38
- delay: 1
39
- }
40
- });
41
-
42
- jQuery('.intro-topic-tooltip').qtip({
43
- content: {
44
- attr: 'data-alt'
45
- },
46
- position: {
47
- my: 'top center',
48
- at: 'bottom center'
49
- },
50
- style: {
51
- tip: {
52
- corner: true
53
- },
54
- classes: 'wpms-widgets-qtip'
55
- },
56
- hide: {
57
- fixed: true,
58
- delay: 1
59
- }
60
- });
61
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/js/notification.js CHANGED
@@ -1,5 +1,5 @@
1
  jQuery(document).ready(function($){
2
- $('.wpmsclose_notification').click(function(){
3
  var $this = $(this);
4
  var page = $this.data('page');
5
  $.ajax({
1
  jQuery(document).ready(function($){
2
+ $('.wpmsclose_notification').on('click', function(){
3
  var $this = $(this);
4
  var page = $this.data('page');
5
  $.ajax({
assets/js/settings.js CHANGED
@@ -1,6 +1,6 @@
1
  (function ($) {
2
  $(document).ready(function () {
3
- $('.ju-top-tabs .link-tab').click(function () {
4
  var href = $(this).attr('href').replace(/#/g, '');
5
  $('.wpms_hash').val(href);
6
  });
@@ -17,28 +17,19 @@
17
  }, 100);
18
  });
19
 
20
- jQuery('.wp-meta-seo_page_metaseo_settings .ju-setting-label').qtip({
21
- content: {
22
- attr: 'data-alt'
23
- },
24
- position: {
25
- my: 'bottom center',
26
- at: 'center center'
27
- },
28
- style: {
29
- tip: {
30
- corner: true
31
- },
32
- classes: 'metaseo-qtip qtip-rounded'
33
- },
34
- hide: {
35
- fixed: true,
36
- delay: 1
37
  }
38
-
39
  });
40
 
41
- $('.wpms-settings-dismiss').click(function() {
42
  $(this).parent('.save-settings-mess').hide('fade');
43
  });
44
  });
1
  (function ($) {
2
  $(document).ready(function () {
3
+ $('.ju-top-tabs .link-tab').on('click', function () {
4
  var href = $(this).attr('href').replace(/#/g, '');
5
  $('.wpms_hash').val(href);
6
  });
17
  }, 100);
18
  });
19
 
20
+ tippy('.wp-meta-seo_page_metaseo_settings .ju-setting-label', {
21
+ animation: 'scale',
22
+ duration: 0,
23
+ arrow: false,
24
+ placement: 'top',
25
+ theme: 'metaseo-tippy tippy-rounded',
26
+ onShow(instance) {
27
+ instance.popper.hidden = instance.reference.dataset.tippy ? false : true;
28
+ instance.setContent(instance.reference.dataset.tippy);
 
 
 
 
 
 
 
 
29
  }
 
30
  });
31
 
32
+ $('.wpms-settings-dismiss').on('click', function() {
33
  $(this).parent('.save-settings-mess').hide('fade');
34
  });
35
  });
assets/js/wp-metaseo-admin-media.js CHANGED
@@ -2,7 +2,7 @@
2
  var wpmseo_target_id;
3
  jQuery(document).ready(function ($) {
4
  var wpmseo_uploader;
5
- $('.wpmseo_image_upload_button').click(function (e) {
6
  wpmseo_target_id = $(this).attr('id').replace(/_button$/, '');
7
  e.preventDefault();
8
  if (wpmseo_uploader) {
2
  var wpmseo_target_id;
3
  jQuery(document).ready(function ($) {
4
  var wpmseo_uploader;
5
+ $('.wpmseo_image_upload_button').on('click', function (e) {
6
  wpmseo_target_id = $(this).attr('id').replace(/_button$/, '');
7
  e.preventDefault();
8
  if (wpmseo_uploader) {
assets/js/wp-metaseo-metabox.js CHANGED
@@ -183,7 +183,7 @@ function msSanitizeTitle(title) {
183
  * Change meta description in meta box
184
  */
185
  function msUpdateDesc() {
186
- var desc = jQuery.trim(msClean(jQuery('#' + wpmseoMetaboxL10n.field_prefix + 'desc').val()));
187
  var divHtml = jQuery('<div />');
188
  var snippet = jQuery('#wpmseosnippet');
189
 
@@ -315,7 +315,7 @@ jQuery(document).ready(function ($) {
315
  return this;
316
  }
317
 
318
- $('.snippet-preview').click(function(e){
319
  e.preventDefault();
320
  });
321
 
@@ -405,7 +405,7 @@ jQuery(document).ready(function ($) {
405
  });
406
  }
407
 
408
- $('#wpms-csl-search-submit').click(function (e) {
409
  var keycsl = $('.wpms-search-key-csl').val().trim().toLocaleString();
410
 
411
  if (keycsl === '') {
@@ -477,7 +477,7 @@ jQuery(document).ready(function ($) {
477
  }
478
 
479
  // Show filter row
480
- $('.filter-row').click(function () {
481
  $('#filter-row-list').toggle('fade');
482
  });
483
  // Show filter row outside
@@ -490,7 +490,7 @@ jQuery(document).ready(function ($) {
490
  });
491
 
492
  // Set filter row
493
- $('.filter-row-checkbox').click(function () {
494
  var showitems = [];
495
  $('input[name="filter-row-name"]:checked').each(function () {
496
  showitems.push(this.value);
@@ -519,7 +519,7 @@ jQuery(document).ready(function ($) {
519
 
520
  if (isSavingPost && !isAutosavingPost) {
521
  wpms_filter_search_keywords();
522
- console.log(23);
523
  }
524
  });
525
  }
@@ -551,7 +551,7 @@ jQuery(document).ready(function ($) {
551
  });
552
 
553
 
554
- $('#gsc_keywords_table tfoot').click(function () {
555
  var page = $(this).data('page');
556
  wpms_filter_search_keywords_more(page, 2);
557
  });
@@ -626,47 +626,27 @@ jQuery(document).ready(function ($) {
626
  500
627
  );
628
 
629
- $('.metaseo_help').qtip({
630
- content: {
631
- attr: 'data-alt'
632
- },
633
- position: {
634
- my: 'bottom left',
635
- at: 'top center'
636
- },
637
- style: {
638
- tip: {
639
- corner: true
640
- },
641
- classes: 'metaseo-qtip qtip-rounded'
642
- },
643
- show: 'click',
644
- hide: {
645
- fixed: true,
646
- delay: 1
647
  }
648
-
649
  });
650
-
651
- $('.metaseo_tool').qtip({
652
- content: {
653
- attr: 'data-alt'
654
- },
655
- position: {
656
- my: 'bottom left',
657
- at: 'top center'
658
- },
659
- style: {
660
- tip: {
661
- corner: true
662
- },
663
- classes: 'metaseo-qtip qtip-rounded'
664
- },
665
- hide: {
666
- fixed: true,
667
- delay: 1
668
  }
669
-
670
  });
671
 
672
  $('#metaseo_wpmseo_title, #metaseo_wpmseo_desc, #metaseo_snippet_title').on('mouseover', function () {
183
  * Change meta description in meta box
184
  */
185
  function msUpdateDesc() {
186
+ var desc = (msClean(jQuery('#' + wpmseoMetaboxL10n.field_prefix + 'desc').val())).trim();
187
  var divHtml = jQuery('<div />');
188
  var snippet = jQuery('#wpmseosnippet');
189
 
315
  return this;
316
  }
317
 
318
+ $('.snippet-preview').on('click', function(e){
319
  e.preventDefault();
320
  });
321
 
405
  });
406
  }
407
 
408
+ $('#wpms-csl-search-submit').on('click', function (e) {
409
  var keycsl = $('.wpms-search-key-csl').val().trim().toLocaleString();
410
 
411
  if (keycsl === '') {
477
  }
478
 
479
  // Show filter row
480
+ $('.filter-row').on('click', function () {
481
  $('#filter-row-list').toggle('fade');
482
  });
483
  // Show filter row outside
490
  });
491
 
492
  // Set filter row
493
+ $('.filter-row-checkbox').on('click', function () {
494
  var showitems = [];
495
  $('input[name="filter-row-name"]:checked').each(function () {
496
  showitems.push(this.value);
519
 
520
  if (isSavingPost && !isAutosavingPost) {
521
  wpms_filter_search_keywords();
522
+ /*console.log(23);*/
523
  }
524
  });
525
  }
551
  });
552
 
553
 
554
+ $('#gsc_keywords_table tfoot').on('click', function () {
555
  var page = $(this).data('page');
556
  wpms_filter_search_keywords_more(page, 2);
557
  });
626
  500
627
  );
628
 
629
+ tippy('.metaseo_help', {
630
+ animation: 'scale',
631
+ duration: 0,
632
+ arrow: false,
633
+ placement: 'top',
634
+ theme: 'metaseo-tippy tippy-rounded',
635
+ onShow(instance) {
636
+ instance.popper.hidden = instance.reference.dataset.tippy ? false : true;
637
+ instance.setContent(instance.reference.dataset.tippy);
 
 
 
 
 
 
 
 
 
638
  }
 
639
  });
640
+ tippy('.metaseo_tool', {
641
+ animation: 'scale',
642
+ duration: 0,
643
+ arrow: false,
644
+ placement: 'top',
645
+ theme: 'metaseo-tippy tippy-rounded',
646
+ onShow(instance) {
647
+ instance.popper.hidden = instance.reference.dataset.tippy ? false : true;
648
+ instance.setContent(instance.reference.dataset.tippy);
 
 
 
 
 
 
 
 
 
649
  }
 
650
  });
651
 
652
  $('#metaseo_wpmseo_title, #metaseo_wpmseo_desc, #metaseo_snippet_title').on('mouseover', function () {
assets/js/wpms-broken-link.js CHANGED
@@ -197,13 +197,13 @@ jQuery(document).ready(function ($) {
197
  if (res.status) {
198
  var status = res.status_text;
199
  if (status.indexOf('404') !== -1 || status === 'Server Not Found') {
200
- $this.closest('tr').find('.col_status').html('<i class="material-icons wpms_warning metaseo_help_status" data-alt="404 error, not found">warning</i>');
201
  } else if (status.indexOf('200') !== -1) {
202
- $this.closest('tr').find('.col_status').html('<i class="material-icons wpms_ok metaseo_help_status" data-alt="Link is OK">done</i>');
203
  } else if (status.indexOf('301') !== -1) {
204
- $this.closest('tr').find('.col_status').html('<i class="material-icons wpms_ok metaseo_help_status" data-alt="Permanent redirect">done</i>');
205
  } else if (status.indexOf('302') !== -1) {
206
- $this.closest('tr').find('.col_status').html('<i class="material-icons wpms_ok metaseo_help_status" data-alt="Moved temporarily">done</i>');
207
  } else {
208
  $this.closest('tr').find('.col_status').html(res.status_text);
209
  }
@@ -266,13 +266,13 @@ jQuery(document).ready(function ($) {
266
 
267
  var status = res.status_text;
268
  if (status.indexOf('404') !== -1 || status === 'Server Not Found') {
269
- $this.closest('tr').find('.col_status').html('<i class="material-icons wpms_warning metaseo_help_status" data-alt="404 error, not found">warning</i>');
270
  } else if (status.indexOf('200') !== -1) {
271
- $this.closest('tr').find('.col_status').html('<i class="material-icons wpms_ok metaseo_help_status" data-alt="Link is OK">done</i>');
272
  } else if (status.indexOf('301') !== -1) {
273
- $this.closest('tr').find('.col_status').html('<i class="material-icons wpms_ok metaseo_help_status" data-alt="Permanent redirect">done</i>');
274
  } else if (status.indexOf('302') !== -1) {
275
- $this.closest('tr').find('.col_status').html('<i class="material-icons wpms_ok metaseo_help_status" data-alt="Moved temporarily">done</i>');
276
  } else {
277
  $this.closest('tr').find('.col_status').html(res.status_text);
278
  }
@@ -290,49 +290,30 @@ jQuery(document).ready(function ($) {
290
  }
291
 
292
  /*
293
- * Open qtip
294
  */
295
  function wpms_tooltip() {
296
- jQuery('.referrers_qtip').qtip({
297
- content: {
298
- attr: 'data-alt'
299
- },
300
- position: {
301
- my: 'bottom center',
302
- at: 'center center'
303
- },
304
- style: {
305
- tip: {
306
- corner: true
307
- },
308
- classes: 'metaseo-qtip qtip-rounded'
309
- },
310
- hide: {
311
- fixed: true,
312
- delay: 1
313
  }
314
-
315
  });
316
-
317
- jQuery('.metaseo_help_status').qtip({
318
- content: {
319
- attr: 'data-alt'
320
- },
321
- position: {
322
- my: 'bottom left',
323
- at: 'top center'
324
- },
325
- style: {
326
- tip: {
327
- corner: true
328
- },
329
- classes: 'metaseo-qtip qtip-rounded'
330
- },
331
- hide: {
332
- fixed: true,
333
- delay: 1
334
  }
335
-
336
  });
337
  }
338
 
197
  if (res.status) {
198
  var status = res.status_text;
199
  if (status.indexOf('404') !== -1 || status === 'Server Not Found') {
200
+ $this.closest('tr').find('.col_status').html('<i class="material-icons wpms_warning metaseo_help_status" data-tippy="404 error, not found">warning</i>');
201
  } else if (status.indexOf('200') !== -1) {
202
+ $this.closest('tr').find('.col_status').html('<i class="material-icons wpms_ok metaseo_help_status" data-tippy="Link is OK">done</i>');
203
  } else if (status.indexOf('301') !== -1) {
204
+ $this.closest('tr').find('.col_status').html('<i class="material-icons wpms_ok metaseo_help_status" data-tippy="Permanent redirect">done</i>');
205
  } else if (status.indexOf('302') !== -1) {
206
+ $this.closest('tr').find('.col_status').html('<i class="material-icons wpms_ok metaseo_help_status" data-tippy="Moved temporarily">done</i>');
207
  } else {
208
  $this.closest('tr').find('.col_status').html(res.status_text);
209
  }
266
 
267
  var status = res.status_text;
268
  if (status.indexOf('404') !== -1 || status === 'Server Not Found') {
269
+ $this.closest('tr').find('.col_status').html('<i class="material-icons wpms_warning metaseo_help_status" data-tippy="404 error, not found">warning</i>');
270
  } else if (status.indexOf('200') !== -1) {
271
+ $this.closest('tr').find('.col_status').html('<i class="material-icons wpms_ok metaseo_help_status" data-tippy="Link is OK">done</i>');
272
  } else if (status.indexOf('301') !== -1) {
273
+ $this.closest('tr').find('.col_status').html('<i class="material-icons wpms_ok metaseo_help_status" data-tippy="Permanent redirect">done</i>');
274
  } else if (status.indexOf('302') !== -1) {
275
+ $this.closest('tr').find('.col_status').html('<i class="material-icons wpms_ok metaseo_help_status" data-tippy="Moved temporarily">done</i>');
276
  } else {
277
  $this.closest('tr').find('.col_status').html(res.status_text);
278
  }
290
  }
291
 
292
  /*
293
+ * Open tippy
294
  */
295
  function wpms_tooltip() {
296
+ tippy('.referrers_tippy', {
297
+ animation: 'scale',
298
+ duration: 0,
299
+ arrow: false,
300
+ placement: 'top',
301
+ theme: 'metaseo-tippy tippy-rounded',
302
+ onShow(instance) {
303
+ instance.popper.hidden = instance.reference.dataset.tippy ? false : true;
304
+ instance.setContent(instance.reference.dataset.tippy);
 
 
 
 
 
 
 
 
305
  }
 
306
  });
307
+ tippy('.metaseo_help_status', {
308
+ animation: 'scale',
309
+ duration: 0,
310
+ arrow: false,
311
+ placement: 'top',
312
+ theme: 'metaseo-tippy tippy-rounded',
313
+ onShow(instance) {
314
+ instance.popper.hidden = instance.reference.dataset.tippy ? false : true;
315
+ instance.setContent(instance.reference.dataset.tippy);
 
 
 
 
 
 
 
 
 
316
  }
 
317
  });
318
  }
319
 
assets/js/wpms-bulk-action.js CHANGED
@@ -1,6 +1,6 @@
1
  jQuery(document).ready(function ($) {
2
 
3
- $('.tablenav.top #post-query-submit , .tablenav.bottom #post-query-submit').click(function (e) {
4
  if ($('.metaseo-filter').val() === 'bulk-copy-metatitle') {
5
  e.preventDefault();
6
  $('#bulk-copy-metatitle').show();
@@ -10,7 +10,7 @@ jQuery(document).ready(function ($) {
10
  /*
11
  * Copy image alt and image title from image name
12
  */
13
- $('.btn_do_copy').click(function () {
14
  var $this = $(this);
15
  var sl_bulk = $('.mbulk_copy:checked').val();
16
  if (typeof sl_bulk === "undefined" || $('.wpms-bulk-action:checked').length === 0) {
1
  jQuery(document).ready(function ($) {
2
 
3
+ $('.tablenav.top #post-query-submit , .tablenav.bottom #post-query-submit').on('click', function (e) {
4
  if ($('.metaseo-filter').val() === 'bulk-copy-metatitle') {
5
  e.preventDefault();
6
  $('#bulk-copy-metatitle').show();
10
  /*
11
  * Copy image alt and image title from image name
12
  */
13
+ $('.btn_do_copy').on('click', function () {
14
  var $this = $(this);
15
  var sl_bulk = $('.mbulk_copy:checked').val();
16
  if (typeof sl_bulk === "undefined" || $('.wpms-bulk-action:checked').length === 0) {
assets/js/wpms-link-title-field.js CHANGED
@@ -54,7 +54,7 @@ var wpmsLinkTitle;
54
  },
55
  getAttrs: function () {
56
  attrs = wpmsLinkTitle.origgetAttrs.apply(this, arguments);
57
- attrs.title = $.trim(inputs.title.val());
58
  return attrs;
59
  },
60
  htmlUpdate: function () {
54
  },
55
  getAttrs: function () {
56
  attrs = wpmsLinkTitle.origgetAttrs.apply(this, arguments);
57
+ attrs.title = (inputs.title.val()).trim();
58
  return attrs;
59
  },
60
  htmlUpdate: function () {
assets/js/wpms-seokeyword-metabox.js CHANGED
@@ -12,16 +12,16 @@
12
  this.resultAnalytics = null;
13
 
14
  // Function
15
- this.editPost = this.editPost.bind(this);
16
- this.init = this.init.bind(this);
17
- this.replaceVariables = this.replaceVariables.bind(this)
18
  }
19
 
20
  init = () => {
21
  this.bindEvents();
22
- this.tagsElement.bind('itemAdded itemRemoved', this.bindEvents);
23
- this.metaTitleElement.bind('keyup', this.bindEvents);
24
- this.metaDescElement.bind('keyup', this.bindEvents);
25
  }
26
 
27
  bindEvents = () => {
12
  this.resultAnalytics = null;
13
 
14
  // Function
15
+ this.editPost = this.editPost.on(this);
16
+ this.init = this.init.on(this);
17
+ this.replaceVariables = this.replaceVariables.on(this)
18
  }
19
 
20
  init = () => {
21
  this.bindEvents();
22
+ this.tagsElement.on('itemAdded itemRemoved', this.bindEvents);
23
+ this.metaTitleElement.on('keyup', this.bindEvents);
24
+ this.metaDescElement.on('keyup', this.bindEvents);
25
  }
26
 
27
  bindEvents = () => {
assets/js/wpms-tabs.js CHANGED
@@ -1,7 +1,7 @@
1
  (function ($) {
2
  $(document).ready(function(){
3
  $("ul.wpmstabs .tab a").on('click', function(e) {
4
- $(this).unbind('click').trigger('click');
5
  });
6
  });
7
  }( jQuery ));
1
  (function ($) {
2
  $(document).ready(function(){
3
  $("ul.wpmstabs .tab a").on('click', function(e) {
4
+ $(this).off('click').trigger('click');
5
  });
6
  });
7
  }( jQuery ));
assets/tippy/my-tippy.css ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .tippy-box[data-theme~='wpms-widgets-tippy'] {
2
+ border: 1px solid #707070 !important;
3
+ color: #fff !important;
4
+ background-color: #707070 !important;
5
+ z-index: 10000;
6
+ border-radius: 2px;
7
+ font-size: 12px !important;
8
+ line-height: 18px !important;
9
+ }
10
+ .tippy-box[data-theme~='metaseo-tippy'] {
11
+ border: 1px solid #707070 !important;
12
+ color: #fff !important;
13
+ background-color: #707070 !important;
14
+ z-index: 10000;
15
+ border-radius: 2px;
16
+ font-size: 12px !important;
17
+ line-height: 18px !important;
18
+ }
19
+ .tippy-box[data-theme~='wpms-widgets-tippy_show_arow'] {
20
+ border: 1px solid #707070 !important;
21
+ color: #fff !important;
22
+ background-color: #707070 !important;
23
+ z-index: 10000;
24
+ border-radius: 2px;
25
+ font-size: 12px !important;
26
+ line-height: 18px !important;
27
+ }
assets/tippy/my-tippy.js ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery(document).ready(function () {
2
+ tippy('.label-dash-widgets', {
3
+ animation: 'scale',
4
+ duration: 0,
5
+ arrow: false,
6
+ placement: 'auto',
7
+ theme: 'wpms-widgets-tippy',
8
+ onShow(instance) {
9
+ instance.popper.hidden = instance.reference.dataset.tippy ? false : true;
10
+ instance.setContent(instance.reference.dataset.tippy);
11
+ }
12
+ });
13
+
14
+ tippy('.wpms_dash_widgets', {
15
+ animation: 'scale',
16
+ duration: 0,
17
+ arrow: false,
18
+ placement: 'auto',
19
+ theme: 'wpms-widgets-tippy',
20
+ onShow(instance) {
21
+ instance.popper.hidden = instance.reference.dataset.tippy ? false : true;
22
+ instance.setContent(instance.reference.dataset.tippy);
23
+ }
24
+ });
25
+ tippy('.intro-topic-tooltip', {
26
+ animation: 'scale',
27
+ duration: 0,
28
+ arrow: false,
29
+ placement: 'auto',
30
+ theme: 'wpms-widgets-tippy',
31
+ onShow(instance) {
32
+ instance.popper.hidden = instance.reference.dataset.tippy ? false : true;
33
+ instance.setContent(instance.reference.dataset.tippy);
34
+ }
35
+ });
36
+ });
37
+
assets/tippy/tippy-core.js ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ /**
2
+ * @popperjs/core v2.9.2 - MIT License
3
+ */
4
+
5
+ "use strict";!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){function t(e){return{width:(e=e.getBoundingClientRect()).width,height:e.height,top:e.top,right:e.right,bottom:e.bottom,left:e.left,x:e.left,y:e.top}}function n(e){return null==e?window:"[object Window]"!==e.toString()?(e=e.ownerDocument)&&e.defaultView||window:e}function o(e){return{scrollLeft:(e=n(e)).pageXOffset,scrollTop:e.pageYOffset}}function r(e){return e instanceof n(e).Element||e instanceof Element}function i(e){return e instanceof n(e).HTMLElement||e instanceof HTMLElement}function a(e){return"undefined"!=typeof ShadowRoot&&(e instanceof n(e).ShadowRoot||e instanceof ShadowRoot)}function s(e){return e?(e.nodeName||"").toLowerCase():null}function f(e){return((r(e)?e.ownerDocument:e.document)||window.document).documentElement}function p(e){return t(f(e)).left+o(e).scrollLeft}function c(e){return n(e).getComputedStyle(e)}function l(e){return e=c(e),/auto|scroll|overlay|hidden/.test(e.overflow+e.overflowY+e.overflowX)}function u(e,r,a){void 0===a&&(a=!1);var c=f(r);e=t(e);var u=i(r),d={scrollLeft:0,scrollTop:0},m={x:0,y:0};return(u||!u&&!a)&&(("body"!==s(r)||l(c))&&(d=r!==n(r)&&i(r)?{scrollLeft:r.scrollLeft,scrollTop:r.scrollTop}:o(r)),i(r)?((m=t(r)).x+=r.clientLeft,m.y+=r.clientTop):c&&(m.x=p(c))),{x:e.left+d.scrollLeft-m.x,y:e.top+d.scrollTop-m.y,width:e.width,height:e.height}}function d(e){var n=t(e),o=e.offsetWidth,r=e.offsetHeight;return 1>=Math.abs(n.width-o)&&(o=n.width),1>=Math.abs(n.height-r)&&(r=n.height),{x:e.offsetLeft,y:e.offsetTop,width:o,height:r}}function m(e){return"html"===s(e)?e:e.assignedSlot||e.parentNode||(a(e)?e.host:null)||f(e)}function h(e){return 0<=["html","body","#document"].indexOf(s(e))?e.ownerDocument.body:i(e)&&l(e)?e:h(m(e))}function v(e,t){var o;void 0===t&&(t=[]);var r=h(e);return e=r===(null==(o=e.ownerDocument)?void 0:o.body),o=n(r),r=e?[o].concat(o.visualViewport||[],l(r)?r:[]):r,t=t.concat(r),e?t:t.concat(v(m(r)))}function g(e){return i(e)&&"fixed"!==c(e).position?e.offsetParent:null}function y(e){for(var t=n(e),o=g(e);o&&0<=["table","td","th"].indexOf(s(o))&&"static"===c(o).position;)o=g(o);if(o&&("html"===s(o)||"body"===s(o)&&"static"===c(o).position))return t;if(!o)e:{if(o=-1!==navigator.userAgent.toLowerCase().indexOf("firefox"),-1===navigator.userAgent.indexOf("Trident")||!i(e)||"fixed"!==c(e).position)for(e=m(e);i(e)&&0>["html","body"].indexOf(s(e));){var r=c(e);if("none"!==r.transform||"none"!==r.perspective||"paint"===r.contain||-1!==["transform","perspective"].indexOf(r.willChange)||o&&"filter"===r.willChange||o&&r.filter&&"none"!==r.filter){o=e;break e}e=e.parentNode}o=null}return o||t}function b(e){function t(e){o.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){o.has(e)||(e=n.get(e))&&t(e)})),r.push(e)}var n=new Map,o=new Set,r=[];return e.forEach((function(e){n.set(e.name,e)})),e.forEach((function(e){o.has(e.name)||t(e)})),r}function w(e){var t;return function(){return t||(t=new Promise((function(n){Promise.resolve().then((function(){t=void 0,n(e())}))}))),t}}function x(e){return e.split("-")[0]}function O(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&a(n))do{if(t&&e.isSameNode(t))return!0;t=t.parentNode||t.host}while(t);return!1}function j(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function E(e,r){if("viewport"===r){r=n(e);var a=f(e);r=r.visualViewport;var s=a.clientWidth;a=a.clientHeight;var l=0,u=0;r&&(s=r.width,a=r.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(l=r.offsetLeft,u=r.offsetTop)),e=j(e={width:s,height:a,x:l+p(e),y:u})}else i(r)?((e=t(r)).top+=r.clientTop,e.left+=r.clientLeft,e.bottom=e.top+r.clientHeight,e.right=e.left+r.clientWidth,e.width=r.clientWidth,e.height=r.clientHeight,e.x=e.left,e.y=e.top):(u=f(e),e=f(u),s=o(u),r=null==(a=u.ownerDocument)?void 0:a.body,a=_(e.scrollWidth,e.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),l=_(e.scrollHeight,e.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),u=-s.scrollLeft+p(u),s=-s.scrollTop,"rtl"===c(r||e).direction&&(u+=_(e.clientWidth,r?r.clientWidth:0)-a),e=j({width:a,height:l,x:u,y:s}));return e}function D(e,t,n){return t="clippingParents"===t?function(e){var t=v(m(e)),n=0<=["absolute","fixed"].indexOf(c(e).position)&&i(e)?y(e):e;return r(n)?t.filter((function(e){return r(e)&&O(e,n)&&"body"!==s(e)})):[]}(e):[].concat(t),(n=(n=[].concat(t,[n])).reduce((function(t,n){return n=E(e,n),t.top=_(n.top,t.top),t.right=U(n.right,t.right),t.bottom=U(n.bottom,t.bottom),t.left=_(n.left,t.left),t}),E(e,n[0]))).width=n.right-n.left,n.height=n.bottom-n.top,n.x=n.left,n.y=n.top,n}function L(e){return 0<=["top","bottom"].indexOf(e)?"x":"y"}function P(e){var t=e.reference,n=e.element,o=(e=e.placement)?x(e):null;e=e?e.split("-")[1]:null;var r=t.x+t.width/2-n.width/2,i=t.y+t.height/2-n.height/2;switch(o){case"top":r={x:r,y:t.y-n.height};break;case"bottom":r={x:r,y:t.y+t.height};break;case"right":r={x:t.x+t.width,y:i};break;case"left":r={x:t.x-n.width,y:i};break;default:r={x:t.x,y:t.y}}if(null!=(o=o?L(o):null))switch(i="y"===o?"height":"width",e){case"start":r[o]-=t[i]/2-n[i]/2;break;case"end":r[o]+=t[i]/2-n[i]/2}return r}function M(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function k(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function A(e,n){void 0===n&&(n={});var o=n;n=void 0===(n=o.placement)?e.placement:n;var i=o.boundary,a=void 0===i?"clippingParents":i,s=void 0===(i=o.rootBoundary)?"viewport":i;i=void 0===(i=o.elementContext)?"popper":i;var p=o.altBoundary,c=void 0!==p&&p;o=M("number"!=typeof(o=void 0===(o=o.padding)?0:o)?o:k(o,C));var l=e.elements.reference;p=e.rects.popper,a=D(r(c=e.elements[c?"popper"===i?"reference":"popper":i])?c:c.contextElement||f(e.elements.popper),a,s),c=P({reference:s=t(l),element:p,strategy:"absolute",placement:n}),p=j(Object.assign({},p,c)),s="popper"===i?p:s;var u={top:a.top-s.top+o.top,bottom:s.bottom-a.bottom+o.bottom,left:a.left-s.left+o.left,right:s.right-a.right+o.right};if(e=e.modifiersData.offset,"popper"===i&&e){var d=e[n];Object.keys(u).forEach((function(e){var t=0<=["right","bottom"].indexOf(e)?1:-1,n=0<=["top","bottom"].indexOf(e)?"y":"x";u[e]+=d[n]*t}))}return u}function W(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return!t.some((function(e){return!(e&&"function"==typeof e.getBoundingClientRect)}))}function B(e){void 0===e&&(e={});var t=e.defaultModifiers,n=void 0===t?[]:t,o=void 0===(e=e.defaultOptions)?F:e;return function(e,t,i){function a(){f.forEach((function(e){return e()})),f=[]}void 0===i&&(i=o);var s={placement:"bottom",orderedModifiers:[],options:Object.assign({},F,o),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},f=[],p=!1,c={state:s,setOptions:function(i){return a(),s.options=Object.assign({},o,s.options,i),s.scrollParents={reference:r(e)?v(e):e.contextElement?v(e.contextElement):[],popper:v(t)},i=function(e){var t=b(e);return I.reduce((function(e,n){return e.concat(t.filter((function(e){return e.phase===n})))}),[])}(function(e){var t=e.reduce((function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e}),{});return Object.keys(t).map((function(e){return t[e]}))}([].concat(n,s.options.modifiers))),s.orderedModifiers=i.filter((function(e){return e.enabled})),s.orderedModifiers.forEach((function(e){var t=e.name,n=e.options;n=void 0===n?{}:n,"function"==typeof(e=e.effect)&&(t=e({state:s,name:t,instance:c,options:n}),f.push(t||function(){}))})),c.update()},forceUpdate:function(){if(!p){var e=s.elements,t=e.reference;if(W(t,e=e.popper))for(s.rects={reference:u(t,y(e),"fixed"===s.options.strategy),popper:d(e)},s.reset=!1,s.placement=s.options.placement,s.orderedModifiers.forEach((function(e){return s.modifiersData[e.name]=Object.assign({},e.data)})),t=0;t<s.orderedModifiers.length;t++)if(!0===s.reset)s.reset=!1,t=-1;else{var n=s.orderedModifiers[t];e=n.fn;var o=n.options;o=void 0===o?{}:o,n=n.name,"function"==typeof e&&(s=e({state:s,options:o,name:n,instance:c})||s)}}},update:w((function(){return new Promise((function(e){c.forceUpdate(),e(s)}))})),destroy:function(){a(),p=!0}};return W(e,t)?(c.setOptions(i).then((function(e){!p&&i.onFirstUpdate&&i.onFirstUpdate(e)})),c):c}}function T(e){var t,o=e.popper,r=e.popperRect,i=e.placement,a=e.offsets,s=e.position,p=e.gpuAcceleration,l=e.adaptive;if(!0===(e=e.roundOffsets)){e=a.y;var u=window.devicePixelRatio||1;e={x:z(z(a.x*u)/u)||0,y:z(z(e*u)/u)||0}}else e="function"==typeof e?e(a):a;e=void 0===(e=(u=e).x)?0:e,u=void 0===(u=u.y)?0:u;var d=a.hasOwnProperty("x");a=a.hasOwnProperty("y");var m,h="left",v="top",g=window;if(l){var b=y(o),w="clientHeight",x="clientWidth";b===n(o)&&("static"!==c(b=f(o)).position&&(w="scrollHeight",x="scrollWidth")),"top"===i&&(v="bottom",u-=b[w]-r.height,u*=p?1:-1),"left"===i&&(h="right",e-=b[x]-r.width,e*=p?1:-1)}return o=Object.assign({position:s},l&&J),p?Object.assign({},o,((m={})[v]=a?"0":"",m[h]=d?"0":"",m.transform=2>(g.devicePixelRatio||1)?"translate("+e+"px, "+u+"px)":"translate3d("+e+"px, "+u+"px, 0)",m)):Object.assign({},o,((t={})[v]=a?u+"px":"",t[h]=d?e+"px":"",t.transform="",t))}function H(e){return e.replace(/left|right|bottom|top/g,(function(e){return $[e]}))}function R(e){return e.replace(/start|end/g,(function(e){return ee[e]}))}function S(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function q(e){return["top","right","bottom","left"].some((function(t){return 0<=e[t]}))}var C=["top","bottom","right","left"],N=C.reduce((function(e,t){return e.concat([t+"-start",t+"-end"])}),[]),V=[].concat(C,["auto"]).reduce((function(e,t){return e.concat([t,t+"-start",t+"-end"])}),[]),I="beforeRead read afterRead beforeMain main afterMain beforeWrite write afterWrite".split(" "),_=Math.max,U=Math.min,z=Math.round,F={placement:"bottom",modifiers:[],strategy:"absolute"},X={passive:!0},Y={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,o=e.instance,r=(e=e.options).scroll,i=void 0===r||r,a=void 0===(e=e.resize)||e,s=n(t.elements.popper),f=[].concat(t.scrollParents.reference,t.scrollParents.popper);return i&&f.forEach((function(e){e.addEventListener("scroll",o.update,X)})),a&&s.addEventListener("resize",o.update,X),function(){i&&f.forEach((function(e){e.removeEventListener("scroll",o.update,X)})),a&&s.removeEventListener("resize",o.update,X)}},data:{}},G={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state;t.modifiersData[e.name]=P({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},J={top:"auto",right:"auto",bottom:"auto",left:"auto"},K={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options;e=void 0===(e=n.gpuAcceleration)||e;var o=n.adaptive;o=void 0===o||o,n=void 0===(n=n.roundOffsets)||n,e={placement:x(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:e},null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,T(Object.assign({},e,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:o,roundOffsets:n})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,T(Object.assign({},e,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:n})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},Q={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},o=t.attributes[e]||{},r=t.elements[e];i(r)&&s(r)&&(Object.assign(r.style,n),Object.keys(o).forEach((function(e){var t=o[e];!1===t?r.removeAttribute(e):r.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var o=t.elements[e],r=t.attributes[e]||{};e=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{}),i(o)&&s(o)&&(Object.assign(o.style,e),Object.keys(r).forEach((function(e){o.removeAttribute(e)})))}))}},requires:["computeStyles"]},Z={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.name,o=void 0===(e=e.options.offset)?[0,0]:e,r=(e=V.reduce((function(e,n){var r=t.rects,i=x(n),a=0<=["left","top"].indexOf(i)?-1:1,s="function"==typeof o?o(Object.assign({},r,{placement:n})):o;return r=(r=s[0])||0,s=((s=s[1])||0)*a,i=0<=["left","right"].indexOf(i)?{x:s,y:r}:{x:r,y:s},e[n]=i,e}),{}))[t.placement],i=r.x;r=r.y,null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=i,t.modifiersData.popperOffsets.y+=r),t.modifiersData[n]=e}},$={left:"right",right:"left",bottom:"top",top:"bottom"},ee={start:"end",end:"start"},te={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options;if(e=e.name,!t.modifiersData[e]._skip){var o=n.mainAxis;o=void 0===o||o;var r=n.altAxis;r=void 0===r||r;var i=n.fallbackPlacements,a=n.padding,s=n.boundary,f=n.rootBoundary,p=n.altBoundary,c=n.flipVariations,l=void 0===c||c,u=n.allowedAutoPlacements;c=x(n=t.options.placement),i=i||(c!==n&&l?function(e){if("auto"===x(e))return[];var t=H(e);return[R(e),t,R(t)]}(n):[H(n)]);var d=[n].concat(i).reduce((function(e,n){return e.concat("auto"===x(n)?function(e,t){void 0===t&&(t={});var n=t.boundary,o=t.rootBoundary,r=t.padding,i=t.flipVariations,a=t.allowedAutoPlacements,s=void 0===a?V:a,f=t.placement.split("-")[1];0===(i=(t=f?i?N:N.filter((function(e){return e.split("-")[1]===f})):C).filter((function(e){return 0<=s.indexOf(e)}))).length&&(i=t);var p=i.reduce((function(t,i){return t[i]=A(e,{placement:i,boundary:n,rootBoundary:o,padding:r})[x(i)],t}),{});return Object.keys(p).sort((function(e,t){return p[e]-p[t]}))}(t,{placement:n,boundary:s,rootBoundary:f,padding:a,flipVariations:l,allowedAutoPlacements:u}):n)}),[]);n=t.rects.reference,i=t.rects.popper;var m=new Map;c=!0;for(var h=d[0],v=0;v<d.length;v++){var g=d[v],y=x(g),b="start"===g.split("-")[1],w=0<=["top","bottom"].indexOf(y),O=w?"width":"height",j=A(t,{placement:g,boundary:s,rootBoundary:f,altBoundary:p,padding:a});if(b=w?b?"right":"left":b?"bottom":"top",n[O]>i[O]&&(b=H(b)),O=H(b),w=[],o&&w.push(0>=j[y]),r&&w.push(0>=j[b],0>=j[O]),w.every((function(e){return e}))){h=g,c=!1;break}m.set(g,w)}if(c)for(o=function(e){var t=d.find((function(t){if(t=m.get(t))return t.slice(0,e).every((function(e){return e}))}));if(t)return h=t,"break"},r=l?3:1;0<r&&"break"!==o(r);r--);t.placement!==h&&(t.modifiersData[e]._skip=!0,t.placement=h,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}},ne={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options;e=e.name;var o=n.mainAxis,r=void 0===o||o,i=void 0!==(o=n.altAxis)&&o;o=void 0===(o=n.tether)||o;var a=n.tetherOffset,s=void 0===a?0:a,f=A(t,{boundary:n.boundary,rootBoundary:n.rootBoundary,padding:n.padding,altBoundary:n.altBoundary});n=x(t.placement);var p=t.placement.split("-")[1],c=!p,l=L(n);n="x"===l?"y":"x",a=t.modifiersData.popperOffsets;var u=t.rects.reference,m=t.rects.popper,h="function"==typeof s?s(Object.assign({},t.rects,{placement:t.placement})):s;if(s={x:0,y:0},a){if(r||i){var v="y"===l?"top":"left",g="y"===l?"bottom":"right",b="y"===l?"height":"width",w=a[l],O=a[l]+f[v],j=a[l]-f[g],E=o?-m[b]/2:0,D="start"===p?u[b]:m[b];p="start"===p?-m[b]:-u[b],m=t.elements.arrow,m=o&&m?d(m):{width:0,height:0};var P=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0};v=P[v],g=P[g],m=_(0,U(u[b],m[b])),D=c?u[b]/2-E-m-v-h:D-m-v-h,u=c?-u[b]/2+E+m+g+h:p+m+g+h,c=t.elements.arrow&&y(t.elements.arrow),h=t.modifiersData.offset?t.modifiersData.offset[t.placement][l]:0,c=a[l]+D-h-(c?"y"===l?c.clientTop||0:c.clientLeft||0:0),u=a[l]+u-h,r&&(r=o?U(O,c):O,j=o?_(j,u):j,r=_(r,U(w,j)),a[l]=r,s[l]=r-w),i&&(r=(i=a[n])+f["x"===l?"top":"left"],f=i-f["x"===l?"bottom":"right"],r=o?U(r,c):r,o=o?_(f,u):f,o=_(r,U(i,o)),a[n]=o,s[n]=o-i)}t.modifiersData[e]=s}},requiresIfExists:["offset"]},oe={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,o=e.name,r=e.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=x(n.placement);if(e=L(s),s=0<=["left","right"].indexOf(s)?"height":"width",i&&a){r=M("number"!=typeof(r="function"==typeof(r=r.padding)?r(Object.assign({},n.rects,{placement:n.placement})):r)?r:k(r,C));var f=d(i),p="y"===e?"top":"left",c="y"===e?"bottom":"right",l=n.rects.reference[s]+n.rects.reference[e]-a[e]-n.rects.popper[s];a=a[e]-n.rects.reference[e],a=(i=(i=y(i))?"y"===e?i.clientHeight||0:i.clientWidth||0:0)/2-f[s]/2+(l/2-a/2),s=_(r[p],U(a,i-f[s]-r[c])),n.modifiersData[o]=((t={})[e]=s,t.centerOffset=s-a,t)}},effect:function(e){var t=e.state;if(null!=(e=void 0===(e=e.options.element)?"[data-popper-arrow]":e)){if("string"==typeof e&&!(e=t.elements.popper.querySelector(e)))return;O(t.elements.popper,e)&&(t.elements.arrow=e)}},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]},re={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state;e=e.name;var n=t.rects.reference,o=t.rects.popper,r=t.modifiersData.preventOverflow,i=A(t,{elementContext:"reference"}),a=A(t,{altBoundary:!0});n=S(i,n),o=S(a,o,r),r=q(n),a=q(o),t.modifiersData[e]={referenceClippingOffsets:n,popperEscapeOffsets:o,isReferenceHidden:r,hasPopperEscaped:a},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":r,"data-popper-escaped":a})}},ie=B({defaultModifiers:[Y,G,K,Q]}),ae=[Y,G,K,Q,Z,te,ne,oe,re],se=B({defaultModifiers:ae});e.applyStyles=Q,e.arrow=oe,e.computeStyles=K,e.createPopper=se,e.createPopperLite=ie,e.defaultModifiers=ae,e.detectOverflow=A,e.eventListeners=Y,e.flip=te,e.hide=re,e.offset=Z,e.popperGenerator=B,e.popperOffsets=G,e.preventOverflow=ne,Object.defineProperty(e,"__esModule",{value:!0})}));
6
+ //# sourceMappingURL=popper.min.js.map
assets/tippy/tippy.css ADDED
@@ -0,0 +1 @@
 
1
+ .tippy-touch{cursor:pointer!important}.tippy-popper{max-width:400px;-webkit-perspective:800px;perspective:800px;z-index:9999}.tippy-popper.html-template{max-width:96%;max-width:calc(100% - 20px)}.tippy-popper[x-placement^=top] [x-arrow]{position:absolute;width:0;height:0;border-top:7px solid #333;border-right:7px solid transparent;border-left:7px solid transparent;bottom:-7px}.tippy-popper[x-placement^=top] [x-arrow].arrow-small{border-top:5px solid #333;border-right:5px solid transparent;border-left:5px solid transparent;bottom:-5px}.tippy-popper[x-placement^=top] [x-arrow].arrow-big{border-top:9px solid #333;border-right:9px solid transparent;border-left:9px solid transparent;bottom:-9px}.tippy-popper[x-placement^=top] [x-circle]{-webkit-transform-origin:0 50%;transform-origin:0 50%}.tippy-popper[x-placement^=top] [x-circle].enter{opacity:1;-webkit-transform:scale(1) translate(-50%,-50%);transform:scale(1) translate(-50%,-50%)}.tippy-popper[x-placement^=top] [x-circle].leave{opacity:0;-webkit-transform:scale(.4) translate(-50%,-50%);transform:scale(.4) translate(-50%,-50%)}.tippy-popper[x-placement^=top] .tippy-tooltip.light-theme [x-circle]{background-color:#fff}.tippy-popper[x-placement^=top] .tippy-tooltip.light-theme [x-arrow]{border-top:7px solid #fff;border-right:7px solid transparent;border-left:7px solid transparent}.tippy-popper[x-placement^=top] .tippy-tooltip.light-theme [x-arrow].arrow-small{border-top:5px solid #fff;border-right:5px solid transparent;border-left:5px solid transparent}.tippy-popper[x-placement^=top] .tippy-tooltip.light-theme [x-arrow].arrow-big{border-top:9px solid #fff;border-right:9px solid transparent;border-left:9px solid transparent}.tippy-popper[x-placement^=top] .tippy-tooltip.transparent-theme [x-circle]{background-color:rgba(0,0,0,.7)}.tippy-popper[x-placement^=top] .tippy-tooltip.transparent-theme [x-arrow]{border-top:7px solid rgba(0,0,0,.7);border-right:7px solid transparent;border-left:7px solid transparent}.tippy-popper[x-placement^=top] .tippy-tooltip.transparent-theme [x-arrow].arrow-small{border-top:5px solid rgba(0,0,0,.7);border-right:5px solid transparent;border-left:5px solid transparent}.tippy-popper[x-placement^=top] .tippy-tooltip.transparent-theme [x-arrow].arrow-big{border-top:9px solid rgba(0,0,0,.7);border-right:9px solid transparent;border-left:9px solid transparent}.tippy-popper[x-placement^=top] [data-animation=perspective]{-webkit-transform-origin:bottom;transform-origin:bottom}.tippy-popper[x-placement^=top] [data-animation=perspective].enter{opacity:1;-webkit-transform:translateY(-10px) rotateX(0);transform:translateY(-10px) rotateX(0)}.tippy-popper[x-placement^=top] [data-animation=perspective].leave{opacity:0;-webkit-transform:translateY(0) rotateX(90deg);transform:translateY(0) rotateX(90deg)}.tippy-popper[x-placement^=top] [data-animation=fade].enter{opacity:1;-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=fade].leave{opacity:0;-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=shift].enter{opacity:1;-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=shift].leave{opacity:0;-webkit-transform:translateY(0);transform:translateY(0)}.tippy-popper[x-placement^=top] [data-animation=scale].enter{opacity:1;-webkit-transform:translateY(-10px) scale(1);transform:translateY(-10px) scale(1)}.tippy-popper[x-placement^=top] [data-animation=scale].leave{opacity:0;-webkit-transform:translateY(0) scale(0);transform:translateY(0) scale(0)}.tippy-popper[x-placement^=bottom] [x-arrow]{position:absolute;width:0;height:0;border-bottom:7px solid #333;border-right:7px solid transparent;border-left:7px solid transparent;top:-7px}.tippy-popper[x-placement^=bottom] [x-arrow].arrow-small{border-bottom:5px solid #333;border-right:5px solid transparent;border-left:5px solid transparent;top:-5px}.tippy-popper[x-placement^=bottom] [x-arrow].arrow-big{border-bottom:9px solid #333;border-right:9px solid transparent;border-left:9px solid transparent;top:-9px}.tippy-popper[x-placement^=bottom] [x-circle]{-webkit-transform-origin:0 -50%;transform-origin:0 -50%}.tippy-popper[x-placement^=bottom] [x-circle].enter{opacity:1;-webkit-transform:scale(1) translate(-50%,-50%);transform:scale(1) translate(-50%,-50%)}.tippy-popper[x-placement^=bottom] [x-circle].leave{opacity:0;-webkit-transform:scale(.4) translate(-50%);transform:scale(.4) translate(-50%)}.tippy-popper[x-placement^=bottom] .tippy-tooltip.light-theme [x-circle]{background-color:#fff}.tippy-popper[x-placement^=bottom] .tippy-tooltip.light-theme [x-arrow]{border-bottom:7px solid #fff;border-right:7px solid transparent;border-left:7px solid transparent}.tippy-popper[x-placement^=bottom] .tippy-tooltip.light-theme [x-arrow].arrow-small{border-bottom:5px solid #fff;border-right:5px solid transparent;border-left:5px solid transparent}.tippy-popper[x-placement^=bottom] .tippy-tooltip.light-theme [x-arrow].arrow-big{border-bottom:9px solid #fff;border-right:9px solid transparent;border-left:9px solid transparent}.tippy-popper[x-placement^=bottom] .tippy-tooltip.transparent-theme [x-circle]{background-color:rgba(0,0,0,.7)}.tippy-popper[x-placement^=bottom] .tippy-tooltip.transparent-theme [x-arrow]{border-bottom:7px solid rgba(0,0,0,.7);border-right:7px solid transparent;border-left:7px solid transparent}.tippy-popper[x-placement^=bottom] .tippy-tooltip.transparent-theme [x-arrow].arrow-small{border-bottom:5px solid rgba(0,0,0,.7);border-right:5px solid transparent;border-left:5px solid transparent}.tippy-popper[x-placement^=bottom] .tippy-tooltip.transparent-theme [x-arrow].arrow-big{border-bottom:9px solid rgba(0,0,0,.7);border-right:9px solid transparent;border-left:9px solid transparent}.tippy-popper[x-placement^=bottom] [data-animation=perspective]{-webkit-transform-origin:top;transform-origin:top}.tippy-popper[x-placement^=bottom] [data-animation=perspective].enter{opacity:1;-webkit-transform:translateY(10px) rotateX(0);transform:translateY(10px) rotateX(0)}.tippy-popper[x-placement^=bottom] [data-animation=perspective].leave{opacity:0;-webkit-transform:translateY(0) rotateX(-90deg);transform:translateY(0) rotateX(-90deg)}.tippy-popper[x-placement^=bottom] [data-animation=fade].enter{opacity:1;-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=fade].leave{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=shift].enter{opacity:1;-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=shift].leave{opacity:0;-webkit-transform:translateY(0);transform:translateY(0)}.tippy-popper[x-placement^=bottom] [data-animation=scale].enter{opacity:1;-webkit-transform:translateY(10px) scale(1);transform:translateY(10px) scale(1)}.tippy-popper[x-placement^=bottom] [data-animation=scale].leave{opacity:0;-webkit-transform:translateY(0) scale(0);transform:translateY(0) scale(0)}.tippy-popper[x-placement^=left] [x-arrow]{position:absolute;width:0;height:0;border-left:7px solid #333;border-top:7px solid transparent;border-bottom:7px solid transparent;right:-7px;top:50%}.tippy-popper[x-placement^=left] [x-arrow].arrow-small{border-left:5px solid #333;border-top:5px solid transparent;border-bottom:5px solid transparent;right:-5px;top:50%}.tippy-popper[x-placement^=left] [x-arrow].arrow-big{border-left:9px solid #333;border-top:9px solid transparent;border-bottom:9px solid transparent;right:-9px;top:50%}.tippy-popper[x-placement^=left] [x-circle]{-webkit-transform-origin:50% 5%;transform-origin:50% 5%}.tippy-popper[x-placement^=left] [x-circle].enter{opacity:1;-webkit-transform:scale(1) translate(-50%,-50%);transform:scale(1) translate(-50%,-50%)}.tippy-popper[x-placement^=left] [x-circle].leave{opacity:0;-webkit-transform:scale(.4) translate(-50%,-33%);transform:scale(.4) translate(-50%,-33%)}.tippy-popper[x-placement^=left] .tippy-tooltip.light-theme [x-circle]{background-color:#fff}.tippy-popper[x-placement^=left] .tippy-tooltip.light-theme [x-arrow]{border-left:7px solid #fff;border-top:7px solid transparent;border-bottom:7px solid transparent}.tippy-popper[x-placement^=left] .tippy-tooltip.light-theme [x-arrow].arrow-small{border-left:5px solid #fff;border-top:5px solid transparent;border-bottom:5px solid transparent}.tippy-popper[x-placement^=left] .tippy-tooltip.light-theme [x-arrow].arrow-big{border-left:9px solid #fff;border-top:9px solid transparent;border-bottom:9px solid transparent}.tippy-popper[x-placement^=left] .tippy-tooltip.transparent-theme [x-circle]{background-color:rgba(0,0,0,.7)}.tippy-popper[x-placement^=left] .tippy-tooltip.transparent-theme [x-arrow]{border-left:7px solid rgba(0,0,0,.7);border-top:7px solid transparent;border-bottom:7px solid transparent}.tippy-popper[x-placement^=left] .tippy-tooltip.transparent-theme [x-arrow].arrow-small{border-left:5px solid rgba(0,0,0,.7);border-top:5px solid transparent;border-bottom:5px solid transparent}.tippy-popper[x-placement^=left] .tippy-tooltip.transparent-theme [x-arrow].arrow-big{border-left:9px solid rgba(0,0,0,.7);border-top:9px solid transparent;border-bottom:9px solid transparent}.tippy-popper[x-placement^=left] [data-animation=perspective]{-webkit-transform-origin:right;transform-origin:right}.tippy-popper[x-placement^=left] [data-animation=perspective].enter{opacity:1;-webkit-transform:translateX(-10px) rotateY(0);transform:translateX(-10px) rotateY(0)}.tippy-popper[x-placement^=left] [data-animation=perspective].leave{opacity:0;-webkit-transform:translateX(0) rotateY(-90deg);transform:translateX(0) rotateY(-90deg)}.tippy-popper[x-placement^=left] [data-animation=fade].enter{opacity:1;-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=fade].leave{opacity:0;-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=shift].enter{opacity:1;-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=shift].leave{opacity:0;-webkit-transform:translateX(0);transform:translateX(0)}.tippy-popper[x-placement^=left] [data-animation=scale].enter{opacity:1;-webkit-transform:translateX(-10px) scale(1);transform:translateX(-10px) scale(1)}.tippy-popper[x-placement^=left] [data-animation=scale].leave{opacity:0;-webkit-transform:translateX(0) scale(0);transform:translateX(0) scale(0)}.tippy-popper[x-placement^=right] [x-arrow]{position:absolute;width:0;height:0;border-right:7px solid #333;border-top:7px solid transparent;border-bottom:7px solid transparent;left:-7px;top:50%}.tippy-popper[x-placement^=right] [x-arrow].arrow-small{border-right:5px solid #333;border-top:5px solid transparent;border-bottom:5px solid transparent;left:-5px;top:50%}.tippy-popper[x-placement^=right] [x-arrow].arrow-big{border-right:9px solid #333;border-top:9px solid transparent;border-bottom:9px solid transparent;left:-9px;top:50%}.tippy-popper[x-placement^=right] [x-circle]{-webkit-transform-origin:-50% 5%;transform-origin:-50% 5%}.tippy-popper[x-placement^=right] [x-circle].enter{opacity:1;-webkit-transform:scale(1) translate(-50%,-50%);transform:scale(1) translate(-50%,-50%)}.tippy-popper[x-placement^=right] [x-circle].leave{opacity:0;-webkit-transform:scale(.4) translate(-50%,-33%);transform:scale(.4) translate(-50%,-33%)}.tippy-popper[x-placement^=right] .tippy-tooltip.light-theme [x-circle]{background-color:#fff}.tippy-popper[x-placement^=right] .tippy-tooltip.light-theme [x-arrow]{border-right:7px solid #fff;border-top:7px solid transparent;border-bottom:7px solid transparent}.tippy-popper[x-placement^=right] .tippy-tooltip.light-theme [x-arrow].arrow-small{border-right:5px solid #fff;border-top:5px solid transparent;border-bottom:5px solid transparent}.tippy-popper[x-placement^=right] .tippy-tooltip.light-theme [x-arrow].arrow-big{border-right:9px solid #fff;border-top:9px solid transparent;border-bottom:9px solid transparent}.tippy-popper[x-placement^=right] .tippy-tooltip.transparent-theme [x-circle]{background-color:rgba(0,0,0,.7)}.tippy-popper[x-placement^=right] .tippy-tooltip.transparent-theme [x-arrow]{border-right:7px solid rgba(0,0,0,.7);border-top:7px solid transparent;border-bottom:7px solid transparent}.tippy-popper[x-placement^=right] .tippy-tooltip.transparent-theme [x-arrow].arrow-small{border-right:5px solid rgba(0,0,0,.7);border-top:5px solid transparent;border-bottom:5px solid transparent}.tippy-popper[x-placement^=right] .tippy-tooltip.transparent-theme [x-arrow].arrow-big{border-right:9px solid rgba(0,0,0,.7);border-top:9px solid transparent;border-bottom:9px solid transparent}.tippy-popper[x-placement^=right] [data-animation=perspective]{-webkit-transform-origin:left;transform-origin:left}.tippy-popper[x-placement^=right] [data-animation=perspective].enter{opacity:1;-webkit-transform:translateX(10px) rotateY(0);transform:translateX(10px) rotateY(0)}.tippy-popper[x-placement^=right] [data-animation=perspective].leave{opacity:0;-webkit-transform:translateX(0) rotateY(90deg);transform:translateX(0) rotateY(90deg)}.tippy-popper[x-placement^=right] [data-animation=fade].enter{opacity:1;-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=fade].leave{opacity:0;-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=shift].enter{opacity:1;-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=shift].leave{opacity:0;-webkit-transform:translateX(0);transform:translateX(0)}.tippy-popper[x-placement^=right] [data-animation=scale].enter{opacity:1;-webkit-transform:translateX(10px) scale(1);transform:translateX(10px) scale(1)}.tippy-popper[x-placement^=right] [data-animation=scale].leave{opacity:0;-webkit-transform:translateX(0) scale(0);transform:translateX(0) scale(0)}.tippy-popper [x-circle]{background-color:#fff}.tippy-popper[data-animatefill]{background-color:transparent}.tippy-popper [x-arrow]{position:absolute;width:0;height:0}.tippy-popper .tippy-tooltip.transparent-theme{background-color:rgba(0,0,0,.8)}.tippy-popper .tippy-tooltip.transparent-theme[data-animatefill]{background-color:transparent}.tippy-popper .tippy-tooltip.light-theme{color:#203d5d;box-shadow:0 4px 20px 4px rgba(0,20,60,.1),0 4px 80px -8px rgba(0,20,60,.2);background-color:#fff}.tippy-popper .tippy-tooltip.light-theme[data-animatefill]{background-color:transparent}.tippy-tooltip{position:relative;color:#fff;border-radius:4px;font-size:.95rem;padding:.4rem .8rem;text-align:center;will-change:transform;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#333}.tippy-tooltip--small{padding:.25rem .5rem;font-size:.8rem}.tippy-tooltip--big{padding:.6rem 1.2rem;font-size:1.2rem}.tippy-tooltip[data-animatefill]{overflow:hidden;background-color:transparent}.tippy-tooltip[data-inertia]{-webkit-transition-timing-function:cubic-bezier(.53,1,.36,.85);transition-timing-function:cubic-bezier(.53,2,.36,.85)}.tippy-tooltip [x-circle]{position:absolute;will-change:transform;background-color:#333;border-radius:50%;width:120%;width:calc(100% + 2rem);-webkit-transition:all ease-out;transition:all ease-out;left:50%;z-index:-1;opacity:0;overflow:hidden}.tippy-tooltip [x-circle]:before{content:"";padding-top:100%;padding-top:calc(60% + 2rem);float:left}@media (max-width:500px){.tippy-popper{max-width:96%;max-width:calc(100% - 20px)}}
assets/tippy/tippy.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],e):(t=t||self).tippy=e(t.Popper)}(this,(function(t){"use strict";var e="undefined"!=typeof window&&"undefined"!=typeof document,n=e?navigator.userAgent:"",r=/MSIE |Trident\//.test(n),i={passive:!0,capture:!0};function o(t,e,n){if(Array.isArray(t)){var r=t[e];return null==r?Array.isArray(n)?n[e]:n:r}return t}function a(t,e){var n={}.toString.call(t);return 0===n.indexOf("[object")&&n.indexOf(e+"]")>-1}function s(t,e){return"function"==typeof t?t.apply(void 0,e):t}function p(t,e){return 0===e?t:function(r){clearTimeout(n),n=setTimeout((function(){t(r)}),e)};var n}function u(t,e){var n=Object.assign({},t);return e.forEach((function(t){delete n[t]})),n}function c(t){return[].concat(t)}function f(t,e){-1===t.indexOf(e)&&t.push(e)}function l(t){return t.split("-")[0]}function d(t){return[].slice.call(t)}function v(){return document.createElement("div")}function m(t){return["Element","Fragment"].some((function(e){return a(t,e)}))}function g(t){return a(t,"MouseEvent")}function h(t){return!(!t||!t._tippy||t._tippy.reference!==t)}function b(t){return m(t)?[t]:function(t){return a(t,"NodeList")}(t)?d(t):Array.isArray(t)?t:d(document.querySelectorAll(t))}function y(t,e){t.forEach((function(t){t&&(t.style.transitionDuration=e+"ms")}))}function w(t,e){t.forEach((function(t){t&&t.setAttribute("data-state",e)}))}function x(t){var e,n=c(t)[0];return(null==n||null==(e=n.ownerDocument)?void 0:e.body)?n.ownerDocument:document}function E(t,e,n){var r=e+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(e){t[r](e,n)}))}var O={isTouch:!1},C=0;function T(){O.isTouch||(O.isTouch=!0,window.performance&&document.addEventListener("mousemove",A))}function A(){var t=performance.now();t-C<20&&(O.isTouch=!1,document.removeEventListener("mousemove",A)),C=t}function L(){var t=document.activeElement;if(h(t)){var e=t._tippy;t.blur&&!e.state.isVisible&&t.trigger('blur')}}var D=Object.assign({appendTo:function(){return document.body},aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},{animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},{},{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),k=Object.keys(D);function R(t){var e=(t.plugins||[]).reduce((function(e,n){var r=n.name,i=n.defaultValue;return r&&(e[r]=void 0!==t[r]?t[r]:i),e}),{});return Object.assign({},t,{},e)}function j(t,e){var n=Object.assign({},e,{content:s(e.content,[t])},e.ignoreAttributes?{}:function(t,e){return(e?Object.keys(R(Object.assign({},D,{plugins:e}))):k).reduce((function(e,n){var r=(t.getAttribute("data-tippy-"+n)||"").trim();if(!r)return e;if("content"===n)e[n]=r;else try{e[n]=JSON.parse(r)}catch(t){e[n]=r}return e}),{})}(t,e.plugins));return n.aria=Object.assign({},D.aria,{},n.aria),n.aria={expanded:"auto"===n.aria.expanded?e.interactive:n.aria.expanded,content:"auto"===n.aria.content?e.interactive?null:"describedby":n.aria.content},n}function M(t,e){t.innerHTML=e}function P(t){var e=v();return!0===t?e.className="tippy-arrow":(e.className="tippy-svg-arrow",m(t)?e.appendChild(t):M(e,t)),e}function V(t,e){m(e.content)?(M(t,""),t.appendChild(e.content)):"function"!=typeof e.content&&(e.allowHTML?M(t,e.content):t.textContent=e.content)}function I(t){var e=t.firstElementChild,n=d(e.children);return{box:e,content:n.find((function(t){return t.classList.contains("tippy-content")})),arrow:n.find((function(t){return t.classList.contains("tippy-arrow")||t.classList.contains("tippy-svg-arrow")})),backdrop:n.find((function(t){return t.classList.contains("tippy-backdrop")}))}}function S(t){var e=v(),n=v();n.className="tippy-box",n.setAttribute("data-state","hidden"),n.setAttribute("tabindex","-1");var r=v();function i(n,r){var i=I(e),o=i.box,a=i.content,s=i.arrow;r.theme?o.setAttribute("data-theme",r.theme):o.removeAttribute("data-theme"),"string"==typeof r.animation?o.setAttribute("data-animation",r.animation):o.removeAttribute("data-animation"),r.inertia?o.setAttribute("data-inertia",""):o.removeAttribute("data-inertia"),o.style.maxWidth="number"==typeof r.maxWidth?r.maxWidth+"px":r.maxWidth,r.role?o.setAttribute("role",r.role):o.removeAttribute("role"),n.content===r.content&&n.allowHTML===r.allowHTML||V(a,t.props),r.arrow?s?n.arrow!==r.arrow&&(o.removeChild(s),o.appendChild(P(r.arrow))):o.appendChild(P(r.arrow)):s&&o.removeChild(s)}return r.className="tippy-content",r.setAttribute("data-state","hidden"),V(r,t.props),e.appendChild(n),n.appendChild(r),i(t.props,t.props),{popper:e,onUpdate:i}}S.$$tippy=!0;var B=1,H=[],N=[];function U(e,n){var a,u,m,h,b,C,T,A,L,k=j(e,Object.assign({},D,{},R((a=n,Object.keys(a).reduce((function(t,e){return void 0!==a[e]&&(t[e]=a[e]),t}),{}))))),M=!1,P=!1,V=!1,S=!1,U=[],_=p(bt,k.interactiveDebounce),z=B++,F=(L=k.plugins).filter((function(t,e){return L.indexOf(t)===e})),W={id:z,reference:e,popper:v(),popperInstance:null,props:k,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:F,clearDelayTimeouts:function(){clearTimeout(u),clearTimeout(m),cancelAnimationFrame(h)},setProps:function(t){if(W.state.isDestroyed)return;it("onBeforeUpdate",[W,t]),gt();var n=W.props,r=j(e,Object.assign({},W.props,{},t,{ignoreAttributes:!0}));W.props=r,mt(),n.interactiveDebounce!==r.interactiveDebounce&&(st(),_=p(bt,r.interactiveDebounce));n.triggerTarget&&!r.triggerTarget?c(n.triggerTarget).forEach((function(t){t.removeAttribute("aria-expanded")})):r.triggerTarget&&e.removeAttribute("aria-expanded");at(),rt(),q&&q(n,r);W.popperInstance&&(Et(),Ct().forEach((function(t){requestAnimationFrame(t._tippy.popperInstance.forceUpdate)})));it("onAfterUpdate",[W,t])},setContent:function(t){W.setProps({content:t})},show:function(){var t=W.state.isVisible,e=W.state.isDestroyed,n=!W.state.isEnabled,r=O.isTouch&&!W.props.touch,i=o(W.props.duration,0,D.duration);if(t||e||n||r)return;if(Z().hasAttribute("disabled"))return;if(it("onShow",[W],!1),!1===W.props.onShow(W))return;W.state.isVisible=!0,Q()&&(Y.style.visibility="visible");rt(),ft(),W.state.isMounted||(Y.style.transition="none");if(Q()){var a=et(),p=a.box,u=a.content;y([p,u],0)}T=function(){var t;if(W.state.isVisible&&!S){if(S=!0,Y.offsetHeight,Y.style.transition=W.props.moveTransition,Q()&&W.props.animation){var e=et(),n=e.box,r=e.content;y([n,r],i),w([n,r],"visible")}ot(),at(),f(N,W),null==(t=W.popperInstance)||t.forceUpdate(),W.state.isMounted=!0,it("onMount",[W]),W.props.animation&&Q()&&function(t,e){dt(t,e)}(i,(function(){W.state.isShown=!0,it("onShown",[W])}))}},function(){var t,e=W.props.appendTo,n=Z();t=W.props.interactive&&e===D.appendTo||"parent"===e?n.parentNode:s(e,[n]);t.contains(Y)||t.appendChild(Y);Et()}()},hide:function(){var t=!W.state.isVisible,e=W.state.isDestroyed,n=!W.state.isEnabled,r=o(W.props.duration,1,D.duration);if(t||e||n)return;if(it("onHide",[W],!1),!1===W.props.onHide(W))return;W.state.isVisible=!1,W.state.isShown=!1,S=!1,M=!1,Q()&&(Y.style.visibility="hidden");if(st(),lt(),rt(),Q()){var i=et(),a=i.box,s=i.content;W.props.animation&&(y([a,s],r),w([a,s],"hidden"))}ot(),at(),W.props.animation?Q()&&function(t,e){dt(t,(function(){!W.state.isVisible&&Y.parentNode&&Y.parentNode.contains(Y)&&e()}))}(r,W.unmount):W.unmount()},hideWithInteractivity:function(t){tt().addEventListener("mousemove",_),f(H,_),_(t)},enable:function(){W.state.isEnabled=!0},disable:function(){W.hide(),W.state.isEnabled=!1},unmount:function(){W.state.isVisible&&W.hide();if(!W.state.isMounted)return;Ot(),Ct().forEach((function(t){t._tippy.unmount()})),Y.parentNode&&Y.parentNode.removeChild(Y);N=N.filter((function(t){return t!==W})),W.state.isMounted=!1,it("onHidden",[W])},destroy:function(){if(W.state.isDestroyed)return;W.clearDelayTimeouts(),W.unmount(),gt(),delete e._tippy,W.state.isDestroyed=!0,it("onDestroy",[W])}};if(!k.render)return W;var X=k.render(W),Y=X.popper,q=X.onUpdate;Y.setAttribute("data-tippy-root",""),Y.id="tippy-"+W.id,W.popper=Y,e._tippy=W,Y._tippy=W;var $=F.map((function(t){return t.fn(W)})),J=e.hasAttribute("aria-expanded");return mt(),at(),rt(),it("onCreate",[W]),k.showOnCreate&&Tt(),Y.addEventListener("mouseenter",(function(){W.props.interactive&&W.state.isVisible&&W.clearDelayTimeouts()})),Y.addEventListener("mouseleave",(function(t){W.props.interactive&&W.props.trigger.indexOf("mouseenter")>=0&&(tt().addEventListener("mousemove",_),_(t))})),W;function G(){var t=W.props.touch;return Array.isArray(t)?t:[t,0]}function K(){return"hold"===G()[0]}function Q(){var t;return!!(null==(t=W.props.render)?void 0:t.$$tippy)}function Z(){return A||e}function tt(){var t=Z().parentNode;return t?x(t):document}function et(){return I(Y)}function nt(t){return W.state.isMounted&&!W.state.isVisible||O.isTouch||b&&"focus"===b.type?0:o(W.props.delay,t?0:1,D.delay)}function rt(){Y.style.pointerEvents=W.props.interactive&&W.state.isVisible?"":"none",Y.style.zIndex=""+W.props.zIndex}function it(t,e,n){var r;(void 0===n&&(n=!0),$.forEach((function(n){n[t]&&n[t].apply(void 0,e)})),n)&&(r=W.props)[t].apply(r,e)}function ot(){var t=W.props.aria;if(t.content){var n="aria-"+t.content,r=Y.id;c(W.props.triggerTarget||e).forEach((function(t){var e=t.getAttribute(n);if(W.state.isVisible)t.setAttribute(n,e?e+" "+r:r);else{var i=e&&e.replace(r,"").trim();i?t.setAttribute(n,i):t.removeAttribute(n)}}))}}function at(){!J&&W.props.aria.expanded&&c(W.props.triggerTarget||e).forEach((function(t){W.props.interactive?t.setAttribute("aria-expanded",W.state.isVisible&&t===Z()?"true":"false"):t.removeAttribute("aria-expanded")}))}function st(){tt().removeEventListener("mousemove",_),H=H.filter((function(t){return t!==_}))}function pt(t){if(!(O.isTouch&&(V||"mousedown"===t.type)||W.props.interactive&&Y.contains(t.target))){if(Z().contains(t.target)){if(O.isTouch)return;if(W.state.isVisible&&W.props.trigger.indexOf("click")>=0)return}else it("onClickOutside",[W,t]);!0===W.props.hideOnClick&&(W.clearDelayTimeouts(),W.hide(),P=!0,setTimeout((function(){P=!1})),W.state.isMounted||lt())}}function ut(){V=!0}function ct(){V=!1}function ft(){var t=tt();t.addEventListener("mousedown",pt,!0),t.addEventListener("touchend",pt,i),t.addEventListener("touchstart",ct,i),t.addEventListener("touchmove",ut,i)}function lt(){var t=tt();t.removeEventListener("mousedown",pt,!0),t.removeEventListener("touchend",pt,i),t.removeEventListener("touchstart",ct,i),t.removeEventListener("touchmove",ut,i)}function dt(t,e){var n=et().box;function r(t){t.target===n&&(E(n,"remove",r),e())}if(0===t)return e();E(n,"remove",C),E(n,"add",r),C=r}function vt(t,n,r){void 0===r&&(r=!1),c(W.props.triggerTarget||e).forEach((function(e){e.addEventListener(t,n,r),U.push({node:e,eventType:t,handler:n,options:r})}))}function mt(){var t;K()&&(vt("touchstart",ht,{passive:!0}),vt("touchend",yt,{passive:!0})),(t=W.props.trigger,t.split(/\s+/).filter(Boolean)).forEach((function(t){if("manual"!==t)switch(vt(t,ht),t){case"mouseenter":vt("mouseleave",yt);break;case"focus":vt(r?"focusout":"blur",wt);break;case"focusin":vt("focusout",wt)}}))}function gt(){U.forEach((function(t){var e=t.node,n=t.eventType,r=t.handler,i=t.options;e.removeEventListener(n,r,i)})),U=[]}function ht(t){var e,n=!1;if(W.state.isEnabled&&!xt(t)&&!P){var r="focus"===(null==(e=b)?void 0:e.type);b=t,A=t.currentTarget,at(),!W.state.isVisible&&g(t)&&H.forEach((function(e){return e(t)})),"click"===t.type&&(W.props.trigger.indexOf("mouseenter")<0||M)&&!1!==W.props.hideOnClick&&W.state.isVisible?n=!0:Tt(t),"click"===t.type&&(M=!n),n&&!r&&At(t)}}function bt(t){var e=t.target,n=Z().contains(e)||Y.contains(e);"mousemove"===t.type&&n||function(t,e){var n=e.clientX,r=e.clientY;return t.every((function(t){var e=t.popperRect,i=t.popperState,o=t.props.interactiveBorder,a=l(i.placement),s=i.modifiersData.offset;if(!s)return!0;var p="bottom"===a?s.top.y:0,u="top"===a?s.bottom.y:0,c="right"===a?s.left.x:0,f="left"===a?s.right.x:0,d=e.top-r+p>o,v=r-e.bottom-u>o,m=e.left-n+c>o,g=n-e.right-f>o;return d||v||m||g}))}(Ct().concat(Y).map((function(t){var e,n=null==(e=t._tippy.popperInstance)?void 0:e.state;return n?{popperRect:t.getBoundingClientRect(),popperState:n,props:k}:null})).filter(Boolean),t)&&(st(),At(t))}function yt(t){xt(t)||W.props.trigger.indexOf("click")>=0&&M||(W.props.interactive?W.hideWithInteractivity(t):At(t))}function wt(t){W.props.trigger.indexOf("focusin")<0&&t.target!==Z()||W.props.interactive&&t.relatedTarget&&Y.contains(t.relatedTarget)||At(t)}function xt(t){return!!O.isTouch&&K()!==t.type.indexOf("touch")>=0}function Et(){Ot();var n=W.props,r=n.popperOptions,i=n.placement,o=n.offset,a=n.getReferenceClientRect,s=n.moveTransition,p=Q()?I(Y).arrow:null,u=a?{getBoundingClientRect:a,contextElement:a.contextElement||Z()}:e,c=[{name:"offset",options:{offset:o}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!s}},{name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(t){var e=t.state;if(Q()){var n=et().box;["placement","reference-hidden","escaped"].forEach((function(t){"placement"===t?n.setAttribute("data-placement",e.placement):e.attributes.popper["data-popper-"+t]?n.setAttribute("data-"+t,""):n.removeAttribute("data-"+t)})),e.attributes.popper={}}}}];Q()&&p&&c.push({name:"arrow",options:{element:p,padding:3}}),c.push.apply(c,(null==r?void 0:r.modifiers)||[]),W.popperInstance=t.createPopper(u,Y,Object.assign({},r,{placement:i,onFirstUpdate:T,modifiers:c}))}function Ot(){W.popperInstance&&(W.popperInstance.destroy(),W.popperInstance=null)}function Ct(){return d(Y.querySelectorAll("[data-tippy-root]"))}function Tt(t){W.clearDelayTimeouts(),t&&it("onTrigger",[W,t]),ft();var e=nt(!0),n=G(),r=n[0],i=n[1];O.isTouch&&"hold"===r&&i&&(e=i),e?u=setTimeout((function(){W.show()}),e):W.show()}function At(t){if(W.clearDelayTimeouts(),it("onUntrigger",[W,t]),W.state.isVisible){if(!(W.props.trigger.indexOf("mouseenter")>=0&&W.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(t.type)>=0&&M)){var e=nt(!1);e?m=setTimeout((function(){W.state.isVisible&&W.hide()}),e):h=requestAnimationFrame((function(){W.hide()}))}}else lt()}}function _(t,e){void 0===e&&(e={});var n=D.plugins.concat(e.plugins||[]);document.addEventListener("touchstart",T,i),window.addEventListener("blur",L);var r=Object.assign({},e,{plugins:n}),o=b(t).reduce((function(t,e){var n=e&&U(e,r);return n&&t.push(n),t}),[]);return m(t)?o[0]:o}_.defaultProps=D,_.setDefaultProps=function(t){Object.keys(t).forEach((function(e){D[e]=t[e]}))},_.currentInput=O;var z=Object.assign({},t.applyStyles,{effect:function(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow)}}),F={mouseover:"mouseenter",focusin:"focus",click:"click"};var W={name:"animateFill",defaultValue:!1,fn:function(t){var e;if(!(null==(e=t.props.render)?void 0:e.$$tippy))return{};var n=I(t.popper),r=n.box,i=n.content,o=t.props.animateFill?function(){var t=v();return t.className="tippy-backdrop",w([t],"hidden"),t}():null;return{onCreate:function(){o&&(r.insertBefore(o,r.firstElementChild),r.setAttribute("data-animatefill",""),r.style.overflow="hidden",t.setProps({arrow:!1,animation:"shift-away"}))},onMount:function(){if(o){var t=r.style.transitionDuration,e=Number(t.replace("ms",""));i.style.transitionDelay=Math.round(e/10)+"ms",o.style.transitionDuration=t,w([o],"visible")}},onShow:function(){o&&(o.style.transitionDuration="0ms")},onHide:function(){o&&w([o],"hidden")}}}};var X={clientX:0,clientY:0},Y=[];function q(t){var e=t.clientX,n=t.clientY;X={clientX:e,clientY:n}}var $={name:"followCursor",defaultValue:!1,fn:function(t){var e=t.reference,n=x(t.props.triggerTarget||e),r=!1,i=!1,o=!0,a=t.props;function s(){return"initial"===t.props.followCursor&&t.state.isVisible}function p(){n.addEventListener("mousemove",f)}function u(){n.removeEventListener("mousemove",f)}function c(){r=!0,t.setProps({getReferenceClientRect:null}),r=!1}function f(n){var r=!n.target||e.contains(n.target),i=t.props.followCursor,o=n.clientX,a=n.clientY,s=e.getBoundingClientRect(),p=o-s.left,u=a-s.top;!r&&t.props.interactive||t.setProps({getReferenceClientRect:function(){var t=e.getBoundingClientRect(),n=o,r=a;"initial"===i&&(n=t.left+p,r=t.top+u);var s="horizontal"===i?t.top:r,c="vertical"===i?t.right:n,f="horizontal"===i?t.bottom:r,l="vertical"===i?t.left:n;return{width:c-l,height:f-s,top:s,right:c,bottom:f,left:l}}})}function l(){t.props.followCursor&&(Y.push({instance:t,doc:n}),function(t){t.addEventListener("mousemove",q)}(n))}function d(){0===(Y=Y.filter((function(e){return e.instance!==t}))).filter((function(t){return t.doc===n})).length&&function(t){t.removeEventListener("mousemove",q)}(n)}return{onCreate:l,onDestroy:d,onBeforeUpdate:function(){a=t.props},onAfterUpdate:function(e,n){var o=n.followCursor;r||void 0!==o&&a.followCursor!==o&&(d(),o?(l(),!t.state.isMounted||i||s()||p()):(u(),c()))},onMount:function(){t.props.followCursor&&!i&&(o&&(f(X),o=!1),s()||p())},onTrigger:function(t,e){g(e)&&(X={clientX:e.clientX,clientY:e.clientY}),i="focus"===e.type},onHidden:function(){t.props.followCursor&&(c(),u(),o=!0)}}}};var J={name:"inlinePositioning",defaultValue:!1,fn:function(t){var e,n=t.reference;var r=-1,i=!1,o={name:"tippyInlinePositioning",enabled:!0,phase:"afterWrite",fn:function(i){var o=i.state;t.props.inlinePositioning&&(e!==o.placement&&t.setProps({getReferenceClientRect:function(){return function(t){return function(t,e,n,r){if(n.length<2||null===t)return e;if(2===n.length&&r>=0&&n[0].left>n[1].right)return n[r]||e;switch(t){case"top":case"bottom":var i=n[0],o=n[n.length-1],a="top"===t,s=i.top,p=o.bottom,u=a?i.left:o.left,c=a?i.right:o.right;return{top:s,bottom:p,left:u,right:c,width:c-u,height:p-s};case"left":case"right":var f=Math.min.apply(Math,n.map((function(t){return t.left}))),l=Math.max.apply(Math,n.map((function(t){return t.right}))),d=n.filter((function(e){return"left"===t?e.left===f:e.right===l})),v=d[0].top,m=d[d.length-1].bottom;return{top:v,bottom:m,left:f,right:l,width:l-f,height:m-v};default:return e}}(l(t),n.getBoundingClientRect(),d(n.getClientRects()),r)}(o.placement)}}),e=o.placement)}};function a(){var e;i||(e=function(t,e){var n;return{popperOptions:Object.assign({},t.popperOptions,{modifiers:[].concat(((null==(n=t.popperOptions)?void 0:n.modifiers)||[]).filter((function(t){return t.name!==e.name})),[e])})}}(t.props,o),i=!0,t.setProps(e),i=!1)}return{onCreate:a,onAfterUpdate:a,onTrigger:function(e,n){if(g(n)){var i=d(t.reference.getClientRects()),o=i.find((function(t){return t.left-2<=n.clientX&&t.right+2>=n.clientX&&t.top-2<=n.clientY&&t.bottom+2>=n.clientY}));r=i.indexOf(o)}},onUntrigger:function(){r=-1}}}};var G={name:"sticky",defaultValue:!1,fn:function(t){var e=t.reference,n=t.popper;function r(e){return!0===t.props.sticky||t.props.sticky===e}var i=null,o=null;function a(){var s=r("reference")?(t.popperInstance?t.popperInstance.state.elements.reference:e).getBoundingClientRect():null,p=r("popper")?n.getBoundingClientRect():null;(s&&K(i,s)||p&&K(o,p))&&t.popperInstance&&t.popperInstance.update(),i=s,o=p,t.state.isMounted&&requestAnimationFrame(a)}return{onMount:function(){t.props.sticky&&a()}}}};function K(t,e){return!t||!e||(t.top!==e.top||t.right!==e.right||t.bottom!==e.bottom||t.left!==e.left)}return e&&function(t){var e=document.createElement("style");e.textContent=t,e.setAttribute("data-tippy-stylesheet","");var n=document.head,r=document.querySelector("head>style,head>link");r?n.insertBefore(e,r):n.appendChild(e)}('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'),_.setDefaultProps({plugins:[W,$,J,G],render:S}),_.createSingleton=function(t,e){var n;void 0===e&&(e={});var r,i=t,o=[],a=e.overrides,s=[],p=!1;function c(){o=i.map((function(t){return t.reference}))}function f(t){i.forEach((function(e){t?e.enable():e.disable()}))}function l(t){return i.map((function(e){var n=e.setProps;return e.setProps=function(i){n(i),e.reference===r&&t.setProps(i)},function(){e.setProps=n}}))}function d(t,e){var n=o.indexOf(e);if(e!==r){r=e;var s=(a||[]).concat("content").reduce((function(t,e){return t[e]=i[n].props[e],t}),{});t.setProps(Object.assign({},s,{getReferenceClientRect:"function"==typeof s.getReferenceClientRect?s.getReferenceClientRect:function(){return e.getBoundingClientRect()}}))}}f(!1),c();var m={fn:function(){return{onDestroy:function(){f(!0)},onHidden:function(){r=null},onClickOutside:function(t){t.props.showOnCreate&&!p&&(p=!0,r=null)},onShow:function(t){t.props.showOnCreate&&!p&&(p=!0,d(t,o[0]))},onTrigger:function(t,e){d(t,e.currentTarget)}}}},g=_(v(),Object.assign({},u(e,["overrides"]),{plugins:[m].concat(e.plugins||[]),triggerTarget:o,popperOptions:Object.assign({},e.popperOptions,{modifiers:[].concat((null==(n=e.popperOptions)?void 0:n.modifiers)||[],[z])})})),h=g.show;g.show=function(t){if(h(),!r&&null==t)return d(g,o[0]);if(!r||null!=t){if("number"==typeof t)return o[t]&&d(g,o[t]);if(i.includes(t)){var e=t.reference;return d(g,e)}return o.includes(t)?d(g,t):void 0}},g.showNext=function(){var t=o[0];if(!r)return g.show(0);var e=o.indexOf(r);g.show(o[e+1]||t)},g.showPrevious=function(){var t=o[o.length-1];if(!r)return g.show(t);var e=o.indexOf(r),n=o[e-1]||t;g.show(n)};var b=g.setProps;return g.setProps=function(t){a=t.overrides||a,b(t)},g.setInstances=function(t){f(!0),s.forEach((function(t){return t()})),i=t,f(!1),c(),l(g),g.setProps({triggerTarget:o})},s=l(g),g},_.delegate=function(t,e){var n=[],r=[],o=!1,a=e.target,s=u(e,["target"]),p=Object.assign({},s,{trigger:"manual",touch:!1}),f=Object.assign({},s,{showOnCreate:!0}),l=_(t,p);function d(t){if(t.target&&!o){var n=t.target.closest(a);if(n){var i=n.getAttribute("data-tippy-trigger")||e.trigger||D.trigger;if(!n._tippy&&!("touchstart"===t.type&&"boolean"==typeof f.touch||"touchstart"!==t.type&&i.indexOf(F[t.type])<0)){var s=_(n,f);s&&(r=r.concat(s))}}}}function v(t,e,r,i){void 0===i&&(i=!1),t.addEventListener(e,r,i),n.push({node:t,eventType:e,handler:r,options:i})}return c(l).forEach((function(t){var e=t.destroy,a=t.enable,s=t.disable;t.destroy=function(t){void 0===t&&(t=!0),t&&r.forEach((function(t){t.destroy()})),r=[],n.forEach((function(t){var e=t.node,n=t.eventType,r=t.handler,i=t.options;e.removeEventListener(n,r,i)})),n=[],e()},t.enable=function(){a(),r.forEach((function(t){return t.enable()})),o=!1},t.disable=function(){s(),r.forEach((function(t){return t.disable()})),o=!0},function(t){var e=t.reference;v(e,"touchstart",d,i),v(e,"mouseover",d),v(e,"focusin",d),v(e,"click",d)}(t)})),l},_.hideAll=function(t){var e=void 0===t?{}:t,n=e.exclude,r=e.duration;N.forEach((function(t){var e=!1;if(n&&(e=h(n)?t.reference===n:t.popper===n.popper),!e){var i=t.props.duration;t.setProps({duration:r}),t.hide(),t.state.isDestroyed||t.setProps({duration:i})}}))},_.roundArrow='<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>',_}));
2
+ //# sourceMappingURL=tippy-bundle.umd.min.js.map
assets/wordpress-css-framework/js/script.js CHANGED
@@ -1,6 +1,6 @@
1
  (function ( $ ) {
2
  // Pseudo contains case insensitive
3
- $.expr[":"].contains = $.expr.createPseudo(function(arg) {
4
  return function( elem ) {
5
  return $(elem).text().toLowerCase().indexOf(arg.toLowerCase()) >= 0;
6
  };
@@ -8,7 +8,7 @@
8
 
9
  $(document).ready(function ( $ ) {
10
  // Toggle left panel on small screen
11
- $('.ju-left-panel-toggle').unbind('click').click(function () {
12
  var leftPanel = $('.ju-left-panel');
13
  var wpLeftPanel = $('#adminmenuwrap');
14
  var rtl = $('body').hasClass('rtl');
@@ -110,8 +110,8 @@
110
 
111
  $(this).html('<div class="'+ tabClass +'" data-href="'+ tabHref +'">'+ $(this).text() +'</div>');
112
 
113
- $(this).find('div.link-tab').click(function () {
114
- topTab.find('li.tab a[href="'+ tabHref +'"]').click();
115
  currentSubMenu.find('li.tab div.link-tab').removeClass('active');
116
  $(this).addClass('active');
117
  })
@@ -121,7 +121,7 @@
121
  });
122
 
123
  // Top tab click also navigate submenu tabs
124
- $('.ju-top-tabs li.tab').click(function () {
125
  var parentHref = $(this).closest('.ju-content-wrapper').attr('id');
126
  var tabHref = $(this).find('a.link-tab').attr('href');
127
  var subMenu = $('.ju-menu-tabs .tab a.link-tab[href="#'+ parentHref +'"]').closest('li.tab').find('.ju-submenu-tabs');
@@ -131,7 +131,7 @@
131
  });
132
 
133
  // Collapsed the menu when clicking if it opened
134
- $('.ju-menu-tabs li.tab a.link-tab').click(function () {
135
  if (!$(this).hasClass('active')) {
136
  $(this).closest('.ju-menu-tabs').find('li.tab a.link-tab').removeClass('expanded');
137
  }
@@ -154,7 +154,7 @@
154
  });
155
 
156
  // Close notice message
157
- $('.ju-notice-close').click(function () {
158
  $(this).closest('.ju-notice-msg').slideUp();
159
  });
160
 
1
  (function ( $ ) {
2
  // Pseudo contains case insensitive
3
+ $.expr.pseudos.contains = $.expr.createPseudo(function(arg) {
4
  return function( elem ) {
5
  return $(elem).text().toLowerCase().indexOf(arg.toLowerCase()) >= 0;
6
  };
8
 
9
  $(document).ready(function ( $ ) {
10
  // Toggle left panel on small screen
11
+ $('.ju-left-panel-toggle').off('click').on('click', function () {
12
  var leftPanel = $('.ju-left-panel');
13
  var wpLeftPanel = $('#adminmenuwrap');
14
  var rtl = $('body').hasClass('rtl');
110
 
111
  $(this).html('<div class="'+ tabClass +'" data-href="'+ tabHref +'">'+ $(this).text() +'</div>');
112
 
113
+ $(this).find('div.link-tab').on('click', function () {
114
+ topTab.find('li.tab a[href="'+ tabHref +'"]').trigger('click');
115
  currentSubMenu.find('li.tab div.link-tab').removeClass('active');
116
  $(this).addClass('active');
117
  })
121
  });
122
 
123
  // Top tab click also navigate submenu tabs
124
+ $('.ju-top-tabs li.tab').on('click', function () {
125
  var parentHref = $(this).closest('.ju-content-wrapper').attr('id');
126
  var tabHref = $(this).find('a.link-tab').attr('href');
127
  var subMenu = $('.ju-menu-tabs .tab a.link-tab[href="#'+ parentHref +'"]').closest('li.tab').find('.ju-submenu-tabs');
131
  });
132
 
133
  // Collapsed the menu when clicking if it opened
134
+ $('.ju-menu-tabs li.tab a.link-tab').on('click', function () {
135
  if (!$(this).hasClass('active')) {
136
  $(this).closest('.ju-menu-tabs').find('li.tab a.link-tab').removeClass('expanded');
137
  }
154
  });
155
 
156
  // Close notice message
157
+ $('.ju-notice-close').on('click', function () {
158
  $(this).closest('.ju-notice-msg').slideUp();
159
  });
160
 
assets/wordpress-css-framework/js/tabs.js CHANGED
@@ -47,7 +47,7 @@
47
  $indicator.css({"left": liPos});
48
  $indicator.css({"width": $liActive.width()});
49
  }
50
- $(window).resize(function () {
51
  $tabs_width = $this.width();
52
  $tab_width = $this.find('li').first().outerWidth();
53
  if ($index < 0) {
47
  $indicator.css({"left": liPos});
48
  $indicator.css({"width": $liActive.width()});
49
  }
50
+ $(window).on('resize', function () {
51
  $tabs_width = $this.width();
52
  $tab_width = $this.find('li').first().outerWidth();
53
  if ($index < 0) {
inc/SrcGoogle/Google/Auth/Abstract.php DELETED
@@ -1,40 +0,0 @@
1
- <?php
2
- /*
3
- * Copyright 2010 Google Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- require_once realpath(dirname(__FILE__) . '/../../../autoload.php');
18
-
19
- /**
20
- * Abstract class for the Authentication in the API client
21
- *
22
- * @author Chris Chabot <chabotc@google.com>
23
- *
24
- */
25
- abstract class Google_Auth_Abstract
26
- {
27
-
28
- /**
29
- * An utility function that first calls $this->auth->sign($request) and then
30
- * executes makeRequest() on that signed request.
31
- * Used for when a request
32
- * should be authenticated
33
- *
34
- * @param Google_Http_Request $request
35
- * @return Google_Http_Request $request
36
- */
37
- abstract public function authenticatedRequest(Google_Http_Request $request);
38
-
39
- abstract public function sign(Google_Http_Request $request);
40
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Auth/AppIdentity.php DELETED
@@ -1,101 +0,0 @@
1
- <?php
2
- /*
3
- * Copyright 2014 Google Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- /*
18
- * WARNING - this class depends on the Google App Engine PHP library
19
- * which is 5.3 and above only, so if you include this in a PHP 5.2
20
- * setup or one without 5.3 things will blow up.
21
- */
22
- use google\appengine\api\app_identity\AppIdentityService;
23
- require_once realpath(dirname(__FILE__) . '/../../../autoload.php');
24
-
25
- /**
26
- * Authentication via the Google App Engine App Identity service.
27
- */
28
- class Google_Auth_AppIdentity extends Google_Auth_Abstract
29
- {
30
-
31
- const CACHE_PREFIX = "Google_Auth_AppIdentity::";
32
-
33
- private $key = null;
34
-
35
- private $client;
36
-
37
- private $token = false;
38
-
39
- private $tokenScopes = false;
40
-
41
- public function __construct(Google_Client $client, $config = null)
42
- {
43
- $this->client = $client;
44
- }
45
-
46
- /**
47
- * Retrieve an access token for the scopes supplied.
48
- */
49
- public function authenticateForScope($scopes)
50
- {
51
- if ($this->token && $this->tokenScopes == $scopes) {
52
- return $this->token;
53
- }
54
- $cacheKey = self::CACHE_PREFIX;
55
- if (is_string($scopes)) {
56
- $cacheKey .= $scopes;
57
- } else
58
- if (is_array($scopes)) {
59
- $cacheKey .= implode(":", $scopes);
60
- }
61
- $this->token = $this->client->getCache()->get($cacheKey);
62
- if (! $this->token) {
63
- $this->token = AppIdentityService::getAccessToken($scopes);
64
- if ($this->token) {
65
- $this->client->getCache()->set($cacheKey, $this->token);
66
- }
67
- }
68
- $this->tokenScopes = $scopes;
69
- return $this->token;
70
- }
71
-
72
- /**
73
- * Perform an authenticated / signed apiHttpRequest.
74
- * This function takes the apiHttpRequest, calls apiAuth->sign on it
75
- * (which can modify the request in what ever way fits the auth mechanism)
76
- * and then calls apiCurlIO::makeRequest on the signed request
77
- *
78
- * @param Google_Http_Request $request
79
- * @return Google_Http_Request The resulting HTTP response including the
80
- * responseHttpCode, responseHeaders and responseBody.
81
- */
82
- public function authenticatedRequest(Google_Http_Request $request)
83
- {
84
- $request = $this->sign($request);
85
- return $this->client->getIo()->makeRequest($request);
86
- }
87
-
88
- public function sign(Google_Http_Request $request)
89
- {
90
- if (! $this->token) {
91
- // No token, so nothing to do.
92
- return $request;
93
- }
94
- $this->client->getLogger()->debug('App Identity authentication');
95
- // Add the OAuth2 header to the request
96
- $request->setRequestHeaders(array(
97
- 'Authorization' => 'Bearer ' . $this->token['access_token']
98
- ));
99
- return $request;
100
- }
101
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Auth/AssertionCredentials.php DELETED
@@ -1,143 +0,0 @@
1
- <?php
2
- /*
3
- * Copyright 2012 Google Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- require_once realpath(dirname(__FILE__) . '/../../../autoload.php');
18
-
19
- /**
20
- * Credentials object used for OAuth 2.0 Signed JWT assertion grants.
21
- *
22
- * @author Chirag Shah <chirags@google.com>
23
- */
24
- class Google_Auth_AssertionCredentials
25
- {
26
-
27
- const MAX_TOKEN_LIFETIME_SECS = 3600;
28
-
29
- public $serviceAccountName;
30
-
31
- public $scopes;
32
-
33
- public $privateKey;
34
-
35
- public $privateKeyPassword;
36
-
37
- public $assertionType;
38
-
39
- public $sub;
40
-
41
- /**
42
- *
43
- * @deprecated
44
- *
45
- * @link http://tools.ietf.org/html/draft-ietf-oauth-json-web-token-06
46
- */
47
- public $prn;
48
-
49
- private $useCache;
50
-
51
- /**
52
- *
53
- * @param
54
- * $serviceAccountName
55
- * @param $scopes array
56
- * List of scopes
57
- * @param
58
- * $privateKey
59
- * @param string $privateKeyPassword
60
- * @param string $assertionType
61
- * @param bool|string $sub
62
- * The email address of the user for which the
63
- * application is requesting delegated access.
64
- * @param
65
- * bool useCache Whether to generate a cache key and allow
66
- * automatic caching of the generated token.
67
- */
68
- public function __construct($serviceAccountName, $scopes, $privateKey, $privateKeyPassword = 'notasecret', $assertionType = 'http://oauth.net/grant_type/jwt/1.0/bearer', $sub = false, $useCache = true)
69
- {
70
- $this->serviceAccountName = $serviceAccountName;
71
- $this->scopes = is_string($scopes) ? $scopes : implode(' ', $scopes);
72
- $this->privateKey = $privateKey;
73
- $this->privateKeyPassword = $privateKeyPassword;
74
- $this->assertionType = $assertionType;
75
- $this->sub = $sub;
76
- $this->prn = $sub;
77
- $this->useCache = $useCache;
78
- }
79
-
80
- /**
81
- * Generate a unique key to represent this credential.
82
- *
83
- * @return string
84
- */
85
- public function getCacheKey()
86
- {
87
- if (! $this->useCache) {
88
- return false;
89
- }
90
- $h = $this->sub;
91
- $h .= $this->assertionType;
92
- $h .= $this->privateKey;
93
- $h .= $this->scopes;
94
- $h .= $this->serviceAccountName;
95
- return md5($h);
96
- }
97
-
98
- public function generateAssertion()
99
- {
100
- $now = time();
101
- $jwtParams = array(
102
- 'aud' => Google_Auth_OAuth2::OAUTH2_TOKEN_URI,
103
- 'scope' => $this->scopes,
104
- 'iat' => $now,
105
- 'exp' => $now + self::MAX_TOKEN_LIFETIME_SECS,
106
- 'iss' => $this->serviceAccountName
107
- );
108
- if ($this->sub !== false) {
109
- $jwtParams['sub'] = $this->sub;
110
- } else
111
- if ($this->prn !== false) {
112
- $jwtParams['prn'] = $this->prn;
113
- }
114
- return $this->makeSignedJwt($jwtParams);
115
- }
116
-
117
- /**
118
- * Creates a signed JWT.
119
- *
120
- * @param array $payload
121
- * @return string The signed JWT.
122
- */
123
- private function makeSignedJwt($payload)
124
- {
125
- $header = array(
126
- 'typ' => 'JWT',
127
- 'alg' => 'RS256'
128
- );
129
- $payload = json_encode($payload);
130
- // Handle some overzealous escaping in PHP json that seemed to cause some errors
131
- // with claimsets.
132
- $payload = str_replace('\/', '/', $payload);
133
- $segments = array(
134
- Google_Utils::urlSafeB64Encode(json_encode($header)),
135
- Google_Utils::urlSafeB64Encode($payload)
136
- );
137
- $signingInput = implode('.', $segments);
138
- $signer = new Google_Signer_P12($this->privateKey, $this->privateKeyPassword);
139
- $signature = $signer->sign($signingInput);
140
- $segments[] = Google_Utils::urlSafeB64Encode($signature);
141
- return implode(".", $segments);
142
- }
143
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Auth/LoginTicket.php DELETED
@@ -1,76 +0,0 @@
1
- <?php
2
- /*
3
- * Copyright 2011 Google Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- require_once realpath(dirname(__FILE__) . '/../../../autoload.php');
18
-
19
- /**
20
- * Class to hold information about an authenticated login.
21
- *
22
- * @author Brian Eaton <beaton@google.com>
23
- */
24
- class Google_Auth_LoginTicket
25
- {
26
-
27
- const USER_ATTR = "sub";
28
- // Information from id token envelope.
29
- private $envelope;
30
- // Information from id token payload.
31
- private $payload;
32
-
33
- /**
34
- * Creates a user based on the supplied token.
35
- *
36
- * @param string $envelope
37
- * Header from a verified authentication token.
38
- * @param string $payload
39
- * Information from a verified authentication token.
40
- */
41
- public function __construct($envelope, $payload)
42
- {
43
- $this->envelope = $envelope;
44
- $this->payload = $payload;
45
- }
46
-
47
- /**
48
- * Returns the numeric identifier for the user.
49
- *
50
- * @throws Google_Auth_Exception
51
- * @return
52
- *
53
- */
54
- public function getUserId()
55
- {
56
- if (array_key_exists(self::USER_ATTR, $this->payload)) {
57
- return $this->payload[self::USER_ATTR];
58
- }
59
- throw new Google_Auth_Exception("No user_id in token");
60
- }
61
-
62
- /**
63
- * Returns attributes from the login ticket.
64
- * This can contain
65
- * various information about the user session.
66
- *
67
- * @return array
68
- */
69
- public function getAttributes()
70
- {
71
- return array(
72
- "envelope" => $this->envelope,
73
- "payload" => $this->payload
74
- );
75
- }
76
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Auth/OAuth2.php DELETED
@@ -1,547 +0,0 @@
1
- <?php
2
- /*
3
- * Copyright 2008 Google Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- require_once realpath(dirname(__FILE__) . '/../../../autoload.php');
18
-
19
- /**
20
- * Authentication class that deals with the OAuth 2 web-server authentication flow
21
- *
22
- * @author Chris Chabot <chabotc@google.com>
23
- * @author Chirag Shah <chirags@google.com>
24
- *
25
- */
26
- class Google_Auth_OAuth2 extends Google_Auth_Abstract
27
- {
28
-
29
- const OAUTH2_REVOKE_URI = 'https://accounts.google.com/o/oauth2/revoke';
30
-
31
- const OAUTH2_TOKEN_URI = 'https://accounts.google.com/o/oauth2/token';
32
-
33
- const OAUTH2_AUTH_URL = 'https://accounts.google.com/o/oauth2/auth';
34
-
35
- const CLOCK_SKEW_SECS = 300;
36
- // five minutes in seconds
37
- const AUTH_TOKEN_LIFETIME_SECS = 300;
38
- // five minutes in seconds
39
- const MAX_TOKEN_LIFETIME_SECS = 86400;
40
- // one day in seconds
41
- const OAUTH2_ISSUER = 'accounts.google.com';
42
-
43
- /**
44
- *
45
- * @var Google_Auth_AssertionCredentials $assertionCredentials
46
- */
47
- private $assertionCredentials;
48
-
49
- /**
50
- *
51
- * @var string The state parameters for CSRF and other forgery protection.
52
- */
53
- private $state;
54
-
55
- /**
56
- *
57
- * @var array The token bundle.
58
- */
59
- private $token = array();
60
-
61
- /**
62
- *
63
- * @var Google_Client the base client
64
- */
65
- private $client;
66
-
67
- /**
68
- * Instantiates the class, but does not initiate the login flow, leaving it
69
- * to the discretion of the caller.
70
- */
71
- public function __construct(Google_Client $client)
72
- {
73
- $this->client = $client;
74
- }
75
-
76
- /**
77
- * Perform an authenticated / signed apiHttpRequest.
78
- * This function takes the apiHttpRequest, calls apiAuth->sign on it
79
- * (which can modify the request in what ever way fits the auth mechanism)
80
- * and then calls apiCurlIO::makeRequest on the signed request
81
- *
82
- * @param Google_Http_Request $request
83
- * @return Google_Http_Request The resulting HTTP response including the
84
- * responseHttpCode, responseHeaders and responseBody.
85
- */
86
- public function authenticatedRequest(Google_Http_Request $request)
87
- {
88
- $request = $this->sign($request);
89
- return $this->client->getIo()->makeRequest($request);
90
- }
91
-
92
- /**
93
- *
94
- * @param string $code
95
- * @throws Google_Auth_Exception
96
- * @return string
97
- */
98
- public function authenticate($code)
99
- {
100
- if (strlen($code) == 0) {
101
- throw new Google_Auth_Exception("Invalid code");
102
- }
103
- // We got here from the redirect from a successful authorization grant,
104
- // fetch the access token
105
- $request = new Google_Http_Request(self::OAUTH2_TOKEN_URI, 'POST', array(), array(
106
- 'code' => $code,
107
- 'grant_type' => 'authorization_code',
108
- 'redirect_uri' => $this->client->getClassConfig($this, 'redirect_uri'),
109
- 'client_id' => $this->client->getClassConfig($this, 'client_id'),
110
- 'client_secret' => $this->client->getClassConfig($this, 'client_secret')
111
- ));
112
- $request->disableGzip();
113
- $response = $this->client->getIo()->makeRequest($request);
114
- if ($response->getResponseHttpCode() == 200) {
115
- $this->setAccessToken($response->getResponseBody());
116
- $this->token['created'] = time();
117
- return $this->getAccessToken();
118
- } else {
119
- $decodedResponse = json_decode($response->getResponseBody(), true);
120
- if ($decodedResponse != null && $decodedResponse['error']) {
121
- $errorText = $decodedResponse['error'];
122
- if (isset($decodedResponse['error_description'])) {
123
- $errorText .= ": " . $decodedResponse['error_description'];
124
- }
125
- }
126
- throw new Google_Auth_Exception(sprintf("Error fetching OAuth2 access token, message: '%s'", $errorText), $response->getResponseHttpCode());
127
- }
128
- }
129
-
130
- /**
131
- * Create a URL to obtain user authorization.
132
- * The authorization endpoint allows the user to first
133
- * authenticate, and then grant/deny the access request.
134
- *
135
- * @param string $scope
136
- * The scope is expressed as a list of space-delimited strings.
137
- * @return string
138
- */
139
- public function createAuthUrl($scope)
140
- {
141
- $params = array(
142
- 'response_type' => 'code',
143
- 'redirect_uri' => $this->client->getClassConfig($this, 'redirect_uri'),
144
- 'client_id' => $this->client->getClassConfig($this, 'client_id'),
145
- 'scope' => $scope,
146
- 'access_type' => $this->client->getClassConfig($this, 'access_type')
147
- );
148
- // Prefer prompt to approval prompt.
149
- if ($this->client->getClassConfig($this, 'prompt')) {
150
- $params = $this->maybeAddParam($params, 'prompt');
151
- } else {
152
- $params = $this->maybeAddParam($params, 'approval_prompt');
153
- }
154
- $params = $this->maybeAddParam($params, 'login_hint');
155
- $params = $this->maybeAddParam($params, 'hd');
156
- $params = $this->maybeAddParam($params, 'openid.realm');
157
- $params = $this->maybeAddParam($params, 'include_granted_scopes');
158
- // If the list of scopes contains plus.login, add request_visible_actions
159
- // to auth URL.
160
- $rva = $this->client->getClassConfig($this, 'request_visible_actions');
161
- if (strpos($scope, 'plus.login') && strlen($rva) > 0) {
162
- $params['request_visible_actions'] = $rva;
163
- }
164
- if (isset($this->state)) {
165
- $params['state'] = $this->state;
166
- }
167
- return self::OAUTH2_AUTH_URL . "?" . http_build_query($params, '', '&');
168
- }
169
-
170
- /**
171
- *
172
- * @param string $token
173
- * @throws Google_Auth_Exception
174
- */
175
- public function setAccessToken($token)
176
- {
177
- $token = json_decode($token, true);
178
- if ($token == null) {
179
- throw new Google_Auth_Exception('Could not json decode the token');
180
- }
181
- if (! isset($token['access_token'])) {
182
- throw new Google_Auth_Exception("Invalid token format");
183
- }
184
- $this->token = $token;
185
- }
186
-
187
- public function getAccessToken()
188
- {
189
- return json_encode($this->token);
190
- }
191
-
192
- public function getRefreshToken()
193
- {
194
- if (array_key_exists('refresh_token', $this->token)) {
195
- return $this->token['refresh_token'];
196
- } else {
197
- return null;
198
- }
199
- }
200
-
201
- public function setState($state)
202
- {
203
- $this->state = $state;
204
- }
205
-
206
- public function setAssertionCredentials(Google_Auth_AssertionCredentials $creds)
207
- {
208
- $this->assertionCredentials = $creds;
209
- }
210
-
211
- /**
212
- * Include an accessToken in a given apiHttpRequest.
213
- *
214
- * @param Google_Http_Request $request
215
- * @return Google_Http_Request
216
- * @throws Google_Auth_Exception
217
- */
218
- public function sign(Google_Http_Request $request)
219
- {
220
- // add the developer key to the request before signing it
221
- if ($this->client->getClassConfig($this, 'developer_key')) {
222
- $request->setQueryParam('key', $this->client->getClassConfig($this, 'developer_key'));
223
- }
224
- // Cannot sign the request without an OAuth access token.
225
- if (null == $this->token && null == $this->assertionCredentials) {
226
- return $request;
227
- }
228
- // Check if the token is set to expire in the next 30 seconds
229
- // (or has already expired).
230
- if ($this->isAccessTokenExpired()) {
231
- if ($this->assertionCredentials) {
232
- $this->refreshTokenWithAssertion();
233
- } else {
234
- $this->client->getLogger()->debug('OAuth2 access token expired');
235
- if (! array_key_exists('refresh_token', $this->token)) {
236
- $error = "The OAuth 2.0 access token has expired," . " and a refresh token is not available. Refresh tokens" . " are not returned for responses that were auto-approved.";
237
- $this->client->getLogger()->error($error);
238
- throw new Google_Auth_Exception($error);
239
- }
240
- $this->refreshToken($this->token['refresh_token']);
241
- }
242
- }
243
- $this->client->getLogger()->debug('OAuth2 authentication');
244
- // Add the OAuth2 header to the request
245
- $request->setRequestHeaders(array(
246
- 'Authorization' => 'Bearer ' . $this->token['access_token']
247
- ));
248
- return $request;
249
- }
250
-
251
- /**
252
- * Fetches a fresh access token with the given refresh token.
253
- *
254
- * @param string $refreshToken
255
- * @return void
256
- */
257
- public function refreshToken($refreshToken)
258
- {
259
- $this->refreshTokenRequest(array(
260
- 'client_id' => $this->client->getClassConfig($this, 'client_id'),
261
- 'client_secret' => $this->client->getClassConfig($this, 'client_secret'),
262
- 'refresh_token' => $refreshToken,
263
- 'grant_type' => 'refresh_token'
264
- ));
265
- }
266
-
267
- /**
268
- * Fetches a fresh access token with a given assertion token.
269
- *
270
- * @param Google_Auth_AssertionCredentials $assertionCredentials
271
- * optional.
272
- * @return void
273
- */
274
- public function refreshTokenWithAssertion($assertionCredentials = null)
275
- {
276
- if (! $assertionCredentials) {
277
- $assertionCredentials = $this->assertionCredentials;
278
- }
279
- $cacheKey = $assertionCredentials->getCacheKey();
280
- if ($cacheKey) {
281
- // We can check whether we have a token available in the
282
- // cache. If it is expired, we can retrieve a new one from
283
- // the assertion.
284
- $token = $this->client->getCache()->get($cacheKey);
285
- if ($token) {
286
- $this->setAccessToken($token);
287
- }
288
- if (! $this->isAccessTokenExpired()) {
289
- return;
290
- }
291
- }
292
- $this->client->getLogger()->debug('OAuth2 access token expired');
293
- $this->refreshTokenRequest(array(
294
- 'grant_type' => 'assertion',
295
- 'assertion_type' => $assertionCredentials->assertionType,
296
- 'assertion' => $assertionCredentials->generateAssertion()
297
- ));
298
- if ($cacheKey) {
299
- // Attempt to cache the token.
300
- $this->client->getCache()->set($cacheKey, $this->getAccessToken());
301
- }
302
- }
303
-
304
- private function refreshTokenRequest($params)
305
- {
306
- if (isset($params['assertion'])) {
307
- $this->client->getLogger()->info('OAuth2 access token refresh with Signed JWT assertion grants.');
308
- } else {
309
- $this->client->getLogger()->info('OAuth2 access token refresh');
310
- }
311
- $http = new Google_Http_Request(self::OAUTH2_TOKEN_URI, 'POST', array(), $params);
312
- $http->disableGzip();
313
- $request = $this->client->getIo()->makeRequest($http);
314
- $code = $request->getResponseHttpCode();
315
- $body = $request->getResponseBody();
316
- if (200 == $code) {
317
- $token = json_decode($body, true);
318
- if ($token == null) {
319
- throw new Google_Auth_Exception("Could not json decode the access token");
320
- }
321
- if (! isset($token['access_token']) || ! isset($token['expires_in'])) {
322
- throw new Google_Auth_Exception("Invalid token format");
323
- }
324
- if (isset($token['id_token'])) {
325
- $this->token['id_token'] = $token['id_token'];
326
- }
327
- $this->token['access_token'] = $token['access_token'];
328
- $this->token['expires_in'] = $token['expires_in'];
329
- $this->token['created'] = time();
330
- } else {
331
- throw new Google_Auth_Exception("Error refreshing the OAuth2 token, message: '$body'", $code);
332
- }
333
- }
334
-
335
- /**
336
- * Revoke an OAuth2 access token or refresh token.
337
- * This method will revoke the current access
338
- * token, if a token isn't provided.
339
- *
340
- * @throws Google_Auth_Exception
341
- * @param string|null $token
342
- * The token (access token or a refresh token) that should be revoked.
343
- * @return boolean Returns True if the revocation was successful, otherwise False.
344
- */
345
- public function revokeToken($token = null)
346
- {
347
- if (! $token) {
348
- if (! $this->token) {
349
- // Not initialized, no token to actually revoke
350
- return false;
351
- } elseif (array_key_exists('refresh_token', $this->token)) {
352
- $token = $this->token['refresh_token'];
353
- } else {
354
- $token = $this->token['access_token'];
355
- }
356
- }
357
- $request = new Google_Http_Request(self::OAUTH2_REVOKE_URI, 'POST', array(), "token=$token");
358
- $request->disableGzip();
359
- $response = $this->client->getIo()->makeRequest($request);
360
- $code = $response->getResponseHttpCode();
361
- if ($code == 200) {
362
- $this->token = null;
363
- return true;
364
- }
365
- return false;
366
- }
367
-
368
- /**
369
- * Returns if the access_token is expired.
370
- *
371
- * @return bool Returns True if the access_token is expired.
372
- */
373
- public function isAccessTokenExpired()
374
- {
375
- if (! $this->token || ! isset($this->token['created'])) {
376
- return true;
377
- }
378
- // If the token is set to expire in the next 30 seconds.
379
- $expired = ($this->token['created'] + ($this->token['expires_in'] - 30)) < time();
380
- return $expired;
381
- }
382
- // Gets federated sign-on certificates to use for verifying identity tokens.
383
- // Returns certs as array structure, where keys are key ids, and values
384
- // are PEM encoded certificates.
385
- private function getFederatedSignOnCerts()
386
- {
387
- return $this->retrieveCertsFromLocation($this->client->getClassConfig($this, 'federated_signon_certs_url'));
388
- }
389
-
390
- /**
391
- * Retrieve and cache a certificates file.
392
- *
393
- * @param $url string
394
- * location
395
- * @throws Google_Auth_Exception
396
- * @return array certificates
397
- */
398
- public function retrieveCertsFromLocation($url)
399
- {
400
- // If we're retrieving a local file, just grab it.
401
- if ("http" != substr($url, 0, 4)) {
402
- $file = file_get_contents($url);
403
- if ($file) {
404
- return json_decode($file, true);
405
- } else {
406
- throw new Google_Auth_Exception("Failed to retrieve verification certificates: '" . $url . "'.");
407
- }
408
- }
409
- // This relies on makeRequest caching certificate responses.
410
- $request = $this->client->getIo()->makeRequest(new Google_Http_Request($url));
411
- if ($request->getResponseHttpCode() == 200) {
412
- $certs = json_decode($request->getResponseBody(), true);
413
- if ($certs) {
414
- return $certs;
415
- }
416
- }
417
- throw new Google_Auth_Exception("Failed to retrieve verification certificates: '" . $request->getResponseBody() . "'.", $request->getResponseHttpCode());
418
- }
419
-
420
- /**
421
- * Verifies an id token and returns the authenticated apiLoginTicket.
422
- * Throws an exception if the id token is not valid.
423
- * The audience parameter can be used to control which id tokens are
424
- * accepted. By default, the id token must have been issued to this OAuth2 client.
425
- *
426
- * @param
427
- * $id_token
428
- * @param
429
- * $audience
430
- * @return Google_Auth_LoginTicket
431
- */
432
- public function verifyIdToken($id_token = null, $audience = null)
433
- {
434
- if (! $id_token) {
435
- $id_token = $this->token['id_token'];
436
- }
437
- $certs = $this->getFederatedSignonCerts();
438
- if (! $audience) {
439
- $audience = $this->client->getClassConfig($this, 'client_id');
440
- }
441
- return $this->verifySignedJwtWithCerts($id_token, $certs, $audience, self::OAUTH2_ISSUER);
442
- }
443
-
444
- /**
445
- * Verifies the id token, returns the verified token contents.
446
- *
447
- * @param $jwt string
448
- * the token
449
- * @param $certs array
450
- * of certificates
451
- * @param $required_audience string
452
- * the expected consumer of the token
453
- * @param
454
- * [$issuer] the expected issues, defaults to Google
455
- * @param
456
- * [$max_expiry] the max lifetime of a token, defaults to MAX_TOKEN_LIFETIME_SECS
457
- * @throws Google_Auth_Exception
458
- * @return mixed token information if valid, false if not
459
- */
460
- public function verifySignedJwtWithCerts($jwt, $certs, $required_audience, $issuer = null, $max_expiry = null)
461
- {
462
- if (! $max_expiry) {
463
- // Set the maximum time we will accept a token for.
464
- $max_expiry = self::MAX_TOKEN_LIFETIME_SECS;
465
- }
466
- $segments = explode(".", $jwt);
467
- if (count($segments) != 3) {
468
- throw new Google_Auth_Exception("Wrong number of segments in token: $jwt");
469
- }
470
- $signed = $segments[0] . "." . $segments[1];
471
- $signature = Google_Utils::urlSafeB64Decode($segments[2]);
472
- // Parse envelope.
473
- $envelope = json_decode(Google_Utils::urlSafeB64Decode($segments[0]), true);
474
- if (! $envelope) {
475
- throw new Google_Auth_Exception("Can't parse token envelope: " . $segments[0]);
476
- }
477
- // Parse token
478
- $json_body = Google_Utils::urlSafeB64Decode($segments[1]);
479
- $payload = json_decode($json_body, true);
480
- if (! $payload) {
481
- throw new Google_Auth_Exception("Can't parse token payload: " . $segments[1]);
482
- }
483
- // Check signature
484
- $verified = false;
485
- foreach ($certs as $keyName => $pem) {
486
- $public_key = new Google_Verifier_Pem($pem);
487
- if ($public_key->verify($signed, $signature)) {
488
- $verified = true;
489
- break;
490
- }
491
- }
492
- if (! $verified) {
493
- throw new Google_Auth_Exception("Invalid token signature: $jwt");
494
- }
495
- // Check issued-at timestamp
496
- $iat = 0;
497
- if (array_key_exists("iat", $payload)) {
498
- $iat = $payload["iat"];
499
- }
500
- if (! $iat) {
501
- throw new Google_Auth_Exception("No issue time in token: $json_body");
502
- }
503
- $earliest = $iat - self::CLOCK_SKEW_SECS;
504
- // Check expiration timestamp
505
- $now = time();
506
- $exp = 0;
507
- if (array_key_exists("exp", $payload)) {
508
- $exp = $payload["exp"];
509
- }
510
- if (! $exp) {
511
- throw new Google_Auth_Exception("No expiration time in token: $json_body");
512
- }
513
- if ($exp >= $now + $max_expiry) {
514
- throw new Google_Auth_Exception(sprintf("Expiration time too far in future: %s", $json_body));
515
- }
516
- $latest = $exp + self::CLOCK_SKEW_SECS;
517
- if ($now < $earliest) {
518
- throw new Google_Auth_Exception(sprintf("Token used too early, %s < %s: %s", $now, $earliest, $json_body));
519
- }
520
- if ($now > $latest) {
521
- throw new Google_Auth_Exception(sprintf("Token used too late, %s > %s: %s", $now, $latest, $json_body));
522
- }
523
- $iss = $payload['iss'];
524
- if ($issuer && $iss != $issuer) {
525
- throw new Google_Auth_Exception(sprintf("Invalid issuer, %s != %s: %s", $iss, $issuer, $json_body));
526
- }
527
- // Check audience
528
- $aud = $payload["aud"];
529
- if ($aud != $required_audience) {
530
- throw new Google_Auth_Exception(sprintf("Wrong recipient, %s != %s:", $aud, $required_audience, $json_body));
531
- }
532
- // All good.
533
- return new Google_Auth_LoginTicket($envelope, $payload);
534
- }
535
-
536
- /**
537
- * Add a parameter to the auth params if not empty string.
538
- */
539
- private function maybeAddParam($params, $name)
540
- {
541
- $param = $this->client->getClassConfig($this, $name);
542
- if ($param != '') {
543
- $params[$name] = $param;
544
- }
545
- return $params;
546
- }
547
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Auth/Simple.php DELETED
@@ -1,65 +0,0 @@
1
- <?php
2
- /*
3
- * Copyright 2010 Google Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- require_once realpath(dirname(__FILE__) . '/../../../autoload.php');
18
-
19
- /**
20
- * Simple API access implementation.
21
- * Can either be used to make requests
22
- * completely unauthenticated, or by using a Simple API Access developer
23
- * key.
24
- *
25
- * @author Chris Chabot <chabotc@google.com>
26
- * @author Chirag Shah <chirags@google.com>
27
- */
28
- class Google_Auth_Simple extends Google_Auth_Abstract
29
- {
30
-
31
- private $key = null;
32
-
33
- private $client;
34
-
35
- public function __construct(Google_Client $client, $config = null)
36
- {
37
- $this->client = $client;
38
- }
39
-
40
- /**
41
- * Perform an authenticated / signed apiHttpRequest.
42
- * This function takes the apiHttpRequest, calls apiAuth->sign on it
43
- * (which can modify the request in what ever way fits the auth mechanism)
44
- * and then calls apiCurlIO::makeRequest on the signed request
45
- *
46
- * @param Google_Http_Request $request
47
- * @return Google_Http_Request The resulting HTTP response including the
48
- * responseHttpCode, responseHeaders and responseBody.
49
- */
50
- public function authenticatedRequest(Google_Http_Request $request)
51
- {
52
- $request = $this->sign($request);
53
- return $this->io->makeRequest($request);
54
- }
55
-
56
- public function sign(Google_Http_Request $request)
57
- {
58
- $key = $this->client->getClassConfig($this, 'developer_key');
59
- if ($key) {
60
- $this->client->getLogger()->debug('Simple API Access developer key authentication');
61
- $request->setQueryParam('key', $key);
62
- }
63
- return $request;
64
- }
65
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Cache/Abstract.php DELETED
@@ -1,58 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * Copyright 2008 Google Inc.
5
- *
6
- * Licensed under the Apache License, Version 2.0 (the "License");
7
- * you may not use this file except in compliance with the License.
8
- * You may obtain a copy of the License at
9
- *
10
- * http://www.apache.org/licenses/LICENSE-2.0
11
- *
12
- * Unless required by applicable law or agreed to in writing, software
13
- * distributed under the License is distributed on an "AS IS" BASIS,
14
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- * See the License for the specific language governing permissions and
16
- * limitations under the License.
17
- */
18
- /**
19
- * Abstract storage class
20
- *
21
- * @author Chris Chabot <chabotc@google.com>
22
- */
23
- abstract class Google_Cache_Abstract
24
- {
25
-
26
- abstract public function __construct(Google_Client $client);
27
-
28
- /**
29
- * Retrieves the data for the given key, or false if they
30
- * key is unknown or expired
31
- *
32
- * @param String $key
33
- * The key who's data to retrieve
34
- * @param boolean|int $expiration
35
- * Expiration time in seconds
36
- *
37
- */
38
- abstract public function get($key, $expiration = false);
39
-
40
- /**
41
- * Store the key => $value set.
42
- * The $value is serialized
43
- * by this function so can be of any type
44
- *
45
- * @param string $key
46
- * Key of the data
47
- * @param string $value
48
- * data
49
- */
50
- abstract public function set($key, $value);
51
-
52
- /**
53
- * Removes the key/data pair for the given $key
54
- *
55
- * @param String $key
56
- */
57
- abstract public function delete($key);
58
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Cache/Apc.php DELETED
@@ -1,108 +0,0 @@
1
- <?php
2
- /*
3
- * Copyright 2010 Google Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- require_once realpath(dirname(__FILE__) . '/../../../autoload.php');
18
-
19
- /**
20
- * A persistent storage class based on the APC cache, which is not
21
- * really very persistent, as soon as you restart your web server
22
- * the storage will be wiped, however for debugging and/or speed
23
- * it can be useful, and cache is a lot cheaper then storage.
24
- *
25
- * @author Chris Chabot <chabotc@google.com>
26
- */
27
- class Google_Cache_Apc extends Google_Cache_Abstract
28
- {
29
-
30
- /**
31
- *
32
- * @var Google_Client the current client
33
- */
34
- private $client;
35
-
36
- public function __construct(Google_Client $client)
37
- {
38
- if (! function_exists('apc_add')) {
39
- $error = "Apc functions not available";
40
- $client->getLogger()->error($error);
41
- throw new Google_Cache_Exception($error);
42
- }
43
- $this->client = $client;
44
- }
45
-
46
- /**
47
- * @inheritDoc
48
- */
49
- public function get($key, $expiration = false)
50
- {
51
- $ret = apc_fetch($key);
52
- if ($ret === false) {
53
- $this->client->getLogger()->debug('APC cache miss', array(
54
- 'key' => $key
55
- ));
56
- return false;
57
- }
58
- if (is_numeric($expiration) && (time() - $ret['time'] > $expiration)) {
59
- $this->client->getLogger()->debug('APC cache miss (expired)', array(
60
- 'key' => $key,
61
- 'var' => $ret
62
- ));
63
- $this->delete($key);
64
- return false;
65
- }
66
- $this->client->getLogger()->debug('APC cache hit', array(
67
- 'key' => $key,
68
- 'var' => $ret
69
- ));
70
- return $ret['data'];
71
- }
72
-
73
- /**
74
- * @inheritDoc
75
- */
76
- public function set($key, $value)
77
- {
78
- $var = array(
79
- 'time' => time(),
80
- 'data' => $value
81
- );
82
- $rc = apc_store($key, $var);
83
- if ($rc == false) {
84
- $this->client->getLogger()->error('APC cache set failed', array(
85
- 'key' => $key,
86
- 'var' => $var
87
- ));
88
- throw new Google_Cache_Exception("Couldn't store data");
89
- }
90
- $this->client->getLogger()->debug('APC cache set', array(
91
- 'key' => $key,
92
- 'var' => $var
93
- ));
94
- }
95
-
96
- /**
97
- * @inheritDoc
98
- *
99
- * @param String $key
100
- */
101
- public function delete($key)
102
- {
103
- $this->client->getLogger()->debug('APC cache delete', array(
104
- 'key' => $key
105
- ));
106
- apc_delete($key);
107
- }
108
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Cache/File.php DELETED
@@ -1,186 +0,0 @@
1
- <?php
2
- /*
3
- * Copyright 2008 Google Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- require_once realpath(dirname(__FILE__) . '/../../../autoload.php');
18
-
19
- /*
20
- * This class implements a basic on disk storage. While that does
21
- * work quite well it's not the most elegant and scalable solution.
22
- * It will also get you into a heap of trouble when you try to run
23
- * this in a clustered environment.
24
- *
25
- * @author Chris Chabot <chabotc@google.com>
26
- */
27
- class Google_Cache_File extends Google_Cache_Abstract
28
- {
29
-
30
- const MAX_LOCK_RETRIES = 10;
31
-
32
- private $path;
33
-
34
- private $fh;
35
-
36
- /**
37
- *
38
- * @var Google_Client the current client
39
- */
40
- private $client;
41
-
42
- public function __construct(Google_Client $client)
43
- {
44
- $this->client = $client;
45
- $this->path = $this->client->getClassConfig($this, 'directory');
46
- }
47
-
48
- public function get($key, $expiration = false)
49
- {
50
- $storageFile = $this->getCacheFile($key);
51
- $data = false;
52
- if (! file_exists($storageFile)) {
53
- $this->client->getLogger()->debug('File cache miss', array(
54
- 'key' => $key,
55
- 'file' => $storageFile
56
- ));
57
- return false;
58
- }
59
- if ($expiration) {
60
- $mtime = filemtime($storageFile);
61
- if ((time() - $mtime) >= $expiration) {
62
- $this->client->getLogger()->debug('File cache miss (expired)', array(
63
- 'key' => $key,
64
- 'file' => $storageFile
65
- ));
66
- $this->delete($key);
67
- return false;
68
- }
69
- }
70
- if ($this->acquireReadLock($storageFile)) {
71
- $data = fread($this->fh, filesize($storageFile));
72
- $data = unserialize($data);
73
- $this->unlock($storageFile);
74
- }
75
- $this->client->getLogger()->debug('File cache hit', array(
76
- 'key' => $key,
77
- 'file' => $storageFile,
78
- 'var' => $data
79
- ));
80
- return $data;
81
- }
82
-
83
- public function set($key, $value)
84
- {
85
- $storageFile = $this->getWriteableCacheFile($key);
86
- if ($this->acquireWriteLock($storageFile)) {
87
- // We serialize the whole request object, since we don't only want the
88
- // responseContent but also the postBody used, headers, size, etc.
89
- $data = serialize($value);
90
- $result = fwrite($this->fh, $data);
91
- $this->unlock($storageFile);
92
- $this->client->getLogger()->debug('File cache set', array(
93
- 'key' => $key,
94
- 'file' => $storageFile,
95
- 'var' => $value
96
- ));
97
- } else {
98
- $this->client->getLogger()->notice('File cache set failed', array(
99
- 'key' => $key,
100
- 'file' => $storageFile
101
- ));
102
- }
103
- }
104
-
105
- public function delete($key)
106
- {
107
- $file = $this->getCacheFile($key);
108
- if (file_exists($file) && ! unlink($file)) {
109
- $this->client->getLogger()->error('File cache delete failed', array(
110
- 'key' => $key,
111
- 'file' => $file
112
- ));
113
- throw new Google_Cache_Exception("Cache file could not be deleted");
114
- }
115
- $this->client->getLogger()->debug('File cache delete', array(
116
- 'key' => $key,
117
- 'file' => $file
118
- ));
119
- }
120
-
121
- private function getWriteableCacheFile($file)
122
- {
123
- return $this->getCacheFile($file, true);
124
- }
125
-
126
- private function getCacheFile($file, $forWrite = false)
127
- {
128
- return $this->getCacheDir($file, $forWrite) . '/' . md5($file);
129
- }
130
-
131
- private function getCacheDir($file, $forWrite)
132
- {
133
- // use the first 2 characters of the hash as a directory prefix
134
- // this should prevent slowdowns due to huge directory listings
135
- // and thus give some basic amount of scalability
136
- $storageDir = $this->path . '/' . substr(md5($file), 0, 2);
137
- if ($forWrite && ! is_dir($storageDir)) {
138
- if (! mkdir($storageDir, 0755, true)) {
139
- $this->client->getLogger()->error('File cache creation failed', array(
140
- 'dir' => $storageDir
141
- ));
142
- throw new Google_Cache_Exception("Could not create storage directory: $storageDir");
143
- }
144
- }
145
- return $storageDir;
146
- }
147
-
148
- private function acquireReadLock($storageFile)
149
- {
150
- return $this->acquireLock(LOCK_SH, $storageFile);
151
- }
152
-
153
- private function acquireWriteLock($storageFile)
154
- {
155
- $rc = $this->acquireLock(LOCK_EX, $storageFile);
156
- if (! $rc) {
157
- $this->client->getLogger()->notice('File cache write lock failed', array(
158
- 'file' => $storageFile
159
- ));
160
- $this->delete($storageFile);
161
- }
162
- return $rc;
163
- }
164
-
165
- private function acquireLock($type, $storageFile)
166
- {
167
- $mode = $type == LOCK_EX ? "w" : "r";
168
- $this->fh = fopen($storageFile, $mode);
169
- $count = 0;
170
- while (! flock($this->fh, $type | LOCK_NB)) {
171
- // Sleep for 10ms.
172
- usleep(10000);
173
- if (++ $count < self::MAX_LOCK_RETRIES) {
174
- return false;
175
- }
176
- }
177
- return true;
178
- }
179
-
180
- public function unlock($storageFile)
181
- {
182
- if ($this->fh) {
183
- flock($this->fh, LOCK_UN);
184
- }
185
- }
186
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Cache/Memcache.php DELETED
@@ -1,178 +0,0 @@
1
- <?php
2
- /*
3
- * Copyright 2008 Google Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- require_once realpath(dirname(__FILE__) . '/../../../autoload.php');
18
-
19
- /**
20
- * A persistent storage class based on the memcache, which is not
21
- * really very persistent, as soon as you restart your memcache daemon
22
- * the storage will be wiped.
23
- *
24
- * Will use either the memcache or memcached extensions, preferring
25
- * memcached.
26
- *
27
- * @author Chris Chabot <chabotc@google.com>
28
- */
29
- class Google_Cache_Memcache extends Google_Cache_Abstract
30
- {
31
-
32
- private $connection = false;
33
-
34
- private $mc = false;
35
-
36
- private $host;
37
-
38
- private $port;
39
-
40
- /**
41
- *
42
- * @var Google_Client the current client
43
- */
44
- private $client;
45
-
46
- public function __construct(Google_Client $client)
47
- {
48
- if (! function_exists('memcache_connect') && ! class_exists("Memcached")) {
49
- $error = "Memcache functions not available";
50
- $client->getLogger()->error($error);
51
- throw new Google_Cache_Exception($error);
52
- }
53
- $this->client = $client;
54
- if ($client->isAppEngine()) {
55
- // No credentials needed for GAE.
56
- $this->mc = new Memcached();
57
- $this->connection = true;
58
- } else {
59
- $this->host = $client->getClassConfig($this, 'host');
60
- $this->port = $client->getClassConfig($this, 'port');
61
- if (empty($this->host) || (empty($this->port) && (string) $this->port != "0")) {
62
- $error = "You need to supply a valid memcache host and port";
63
- $client->getLogger()->error($error);
64
- throw new Google_Cache_Exception($error);
65
- }
66
- }
67
- }
68
-
69
- /**
70
- * @inheritDoc
71
- */
72
- public function get($key, $expiration = false)
73
- {
74
- $this->connect();
75
- $ret = false;
76
- if ($this->mc) {
77
- $ret = $this->mc->get($key);
78
- } else {
79
- $ret = memcache_get($this->connection, $key);
80
- }
81
- if ($ret === false) {
82
- $this->client->getLogger()->debug('Memcache cache miss', array(
83
- 'key' => $key
84
- ));
85
- return false;
86
- }
87
- if (is_numeric($expiration) && (time() - $ret['time'] > $expiration)) {
88
- $this->client->getLogger()->debug('Memcache cache miss (expired)', array(
89
- 'key' => $key,
90
- 'var' => $ret
91
- ));
92
- $this->delete($key);
93
- return false;
94
- }
95
- $this->client->getLogger()->debug('Memcache cache hit', array(
96
- 'key' => $key,
97
- 'var' => $ret
98
- ));
99
- return $ret['data'];
100
- }
101
-
102
- /**
103
- * @inheritDoc
104
- *
105
- * @param string $key
106
- * @param string $value
107
- * @throws Google_Cache_Exception
108
- */
109
- public function set($key, $value)
110
- {
111
- $this->connect();
112
- // we store it with the cache_time default expiration so objects will at
113
- // least get cleaned eventually.
114
- $data = array(
115
- 'time' => time(),
116
- 'data' => $value
117
- );
118
- $rc = false;
119
- if ($this->mc) {
120
- $rc = $this->mc->set($key, $data);
121
- } else {
122
- $rc = memcache_set($this->connection, $key, $data, false);
123
- }
124
- if ($rc == false) {
125
- $this->client->getLogger()->error('Memcache cache set failed', array(
126
- 'key' => $key,
127
- 'var' => $data
128
- ));
129
- throw new Google_Cache_Exception("Couldn't store data in cache");
130
- }
131
- $this->client->getLogger()->debug('Memcache cache set', array(
132
- 'key' => $key,
133
- 'var' => $data
134
- ));
135
- }
136
-
137
- /**
138
- * @inheritDoc
139
- *
140
- * @param String $key
141
- */
142
- public function delete($key)
143
- {
144
- $this->connect();
145
- if ($this->mc) {
146
- $this->mc->delete($key, 0);
147
- } else {
148
- memcache_delete($this->connection, $key, 0);
149
- }
150
- $this->client->getLogger()->debug('Memcache cache delete', array(
151
- 'key' => $key
152
- ));
153
- }
154
-
155
- /**
156
- * Lazy initialiser for memcache connection.
157
- * Uses pconnect for to take
158
- * advantage of the persistence pool where possible.
159
- */
160
- private function connect()
161
- {
162
- if ($this->connection) {
163
- return;
164
- }
165
- if (class_exists("Memcached")) {
166
- $this->mc = new Memcached();
167
- $this->mc->addServer($this->host, $this->port);
168
- $this->connection = true;
169
- } else {
170
- $this->connection = memcache_pconnect($this->host, $this->port);
171
- }
172
- if (! $this->connection) {
173
- $error = "Couldn't connect to memcache server";
174
- $this->client->getLogger()->error($error);
175
- throw new Google_Cache_Exception($error);
176
- }
177
- }
178
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Cache/Null.php DELETED
@@ -1,54 +0,0 @@
1
- <?php
2
- /*
3
- * Copyright 2014 Google Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- require_once realpath(dirname(__FILE__) . '/../../../autoload.php');
18
-
19
- /**
20
- * A blank storage class, for cases where caching is not
21
- * required.
22
- */
23
- class Google_Cache_Null extends Google_Cache_Abstract
24
- {
25
-
26
- public function __construct(Google_Client $client)
27
- {}
28
-
29
- /**
30
- * @inheritDoc
31
- */
32
- public function get($key, $expiration = false)
33
- {
34
- return false;
35
- }
36
-
37
- /**
38
- * @inheritDoc
39
- */
40
- public function set($key, $value)
41
- {
42
- // Nop.
43
- }
44
-
45
- /**
46
- * @inheritDoc
47
- *
48
- * @param String $key
49
- */
50
- public function delete($key)
51
- {
52
- // Nop.
53
- }
54
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Client.php DELETED
@@ -1,761 +0,0 @@
1
- <?php
2
- /*
3
- * Copyright 2010 Google Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- require_once realpath(dirname(__FILE__) . '/../../autoload.php');
18
-
19
- /**
20
- * The Google API Client
21
- * http://code.google.com/p/google-api-php-client/
22
- *
23
- * @author Chris Chabot <chabotc@google.com>
24
- * @author Chirag Shah <chirags@google.com>
25
- */
26
- class Google_Client
27
- {
28
-
29
- const LIBVER = "1.1.2";
30
-
31
- const USER_AGENT_SUFFIX = "google-api-php-client/";
32
-
33
- /**
34
- *
35
- * @var Google_Auth_Abstract $auth
36
- */
37
- private $auth;
38
-
39
- /**
40
- *
41
- * @var Google_IO_Abstract $io
42
- */
43
- private $io;
44
-
45
- /**
46
- *
47
- * @var Google_Cache_Abstract $cache
48
- */
49
- private $cache;
50
-
51
- /**
52
- *
53
- * @var Google_Config $config
54
- */
55
- private $config;
56
-
57
- /**
58
- *
59
- * @var Google_Logger_Abstract $logger
60
- */
61
- private $logger;
62
-
63
- /**
64
- *
65
- * @var boolean $deferExecution
66
- */
67
- private $deferExecution = false;
68
-
69
- /**
70
- *
71
- * @var array $scopes
72
- */
73
- // Scopes requested by the client
74
- protected $requestedScopes = array();
75
- // definitions of services that are discovered.
76
- protected $services = array();
77
- // Used to track authenticated state, can't discover services after doing authenticate()
78
- private $authenticated = false;
79
-
80
- /**
81
- * Construct the Google Client.
82
- *
83
- * @param $config Google_Config
84
- * or string for the ini file to load
85
- */
86
- public function __construct($config = null)
87
- {
88
- if (is_string($config) && strlen($config)) {
89
- $config = new Google_Config($config);
90
- } else
91
- if (! ($config instanceof Google_Config)) {
92
- $config = new Google_Config();
93
- if ($this->isAppEngine()) {
94
- // Automatically use Memcache if we're in AppEngine.
95
- $config->setCacheClass('Google_Cache_Memcache');
96
- }
97
- if (version_compare(phpversion(), "5.3.4", "<=") || $this->isAppEngine()) {
98
- // Automatically disable compress.zlib, as currently unsupported.
99
- $config->setClassConfig('Google_Http_Request', 'disable_gzip', true);
100
- }
101
- }
102
- if ($config->getIoClass() == Google_Config::USE_AUTO_IO_SELECTION) {
103
- if (function_exists('curl_version') && function_exists('curl_exec') && ! $this->isAppEngine()) {
104
- $config->setIoClass("Google_IO_Curl");
105
- } else {
106
- $config->setIoClass("Google_IO_Stream");
107
- }
108
- }
109
- $this->config = $config;
110
- }
111
-
112
- /**
113
- * Get a string containing the version of the library.
114
- *
115
- * @return string
116
- */
117
- public function getLibraryVersion()
118
- {
119
- return self::LIBVER;
120
- }
121
-
122
- /**
123
- * Attempt to exchange a code for an valid authentication token.
124
- * Helper wrapped around the OAuth 2.0 implementation.
125
- *
126
- * @param $code string
127
- * code from accounts.google.com
128
- * @return string token
129
- */
130
- public function authenticate($code)
131
- {
132
- $this->authenticated = true;
133
- return $this->getAuth()->authenticate($code);
134
- }
135
-
136
- /**
137
- * Set the auth config from the JSON string provided.
138
- * This structure should match the file downloaded from
139
- * the "Download JSON" button on in the Google Developer
140
- * Console.
141
- *
142
- * @param string $json
143
- * the configuration json
144
- * @throws Google_Exception
145
- */
146
- public function setAuthConfig($json)
147
- {
148
- $data = json_decode($json);
149
- $key = isset($data->installed) ? 'installed' : 'web';
150
- if (! isset($data->$key)) {
151
- throw new Google_Exception("Invalid client secret JSON file.");
152
- }
153
- $this->setClientId($data->$key->client_id);
154
- $this->setClientSecret($data->$key->client_secret);
155
- if (isset($data->$key->redirect_uris)) {
156
- $this->setRedirectUri($data->$key->redirect_uris[0]);
157
- }
158
- }
159
-
160
- /**
161
- * Set the auth config from the JSON file in the path
162
- * provided.
163
- * This should match the file downloaded from
164
- * the "Download JSON" button on in the Google Developer
165
- * Console.
166
- *
167
- * @param string $file
168
- * the file location of the client json
169
- */
170
- public function setAuthConfigFile($file)
171
- {
172
- $this->setAuthConfig(file_get_contents($file));
173
- }
174
-
175
- /**
176
- *
177
- * @throws Google_Auth_Exception
178
- * @return array @visible For Testing
179
- */
180
- public function prepareScopes()
181
- {
182
- if (empty($this->requestedScopes)) {
183
- throw new Google_Auth_Exception("No scopes specified");
184
- }
185
- $scopes = implode(' ', $this->requestedScopes);
186
- return $scopes;
187
- }
188
-
189
- /**
190
- * Set the OAuth 2.0 access token using the string that resulted from calling createAuthUrl()
191
- * or Google_Client#getAccessToken().
192
- *
193
- * @param string $accessToken
194
- * JSON encoded string containing in the following format:
195
- * {"access_token":"TOKEN", "refresh_token":"TOKEN", "token_type":"Bearer",
196
- * "expires_in":3600, "id_token":"TOKEN", "created":1320790426}
197
- */
198
- public function setAccessToken($accessToken)
199
- {
200
- if ($accessToken == 'null') {
201
- $accessToken = null;
202
- }
203
- $this->getAuth()->setAccessToken($accessToken);
204
- }
205
-
206
- /**
207
- * Set the authenticator object
208
- *
209
- * @param Google_Auth_Abstract $auth
210
- */
211
- public function setAuth(Google_Auth_Abstract $auth)
212
- {
213
- $this->config->setAuthClass(get_class($auth));
214
- $this->auth = $auth;
215
- }
216
-
217
- /**
218
- * Set the IO object
219
- *
220
- * @param Google_IO_Abstract $io
221
- */
222
- public function setIo(Google_IO_Abstract $io)
223
- {
224
- $this->config->setIoClass(get_class($io));
225
- $this->io = $io;
226
- }
227
-
228
- /**
229
- * Set the Cache object
230
- *
231
- * @param Google_Cache_Abstract $cache
232
- */
233
- public function setCache(Google_Cache_Abstract $cache)
234
- {
235
- $this->config->setCacheClass(get_class($cache));
236
- $this->cache = $cache;
237
- }
238
-
239
- /**
240
- * Set the Logger object
241
- *
242
- * @param Google_Logger_Abstract $logger
243
- */
244
- public function setLogger(Google_Logger_Abstract $logger)
245
- {
246
- $this->config->setLoggerClass(get_class($logger));
247
- $this->logger = $logger;
248
- }
249
-
250
- /**
251
- * Construct the OAuth 2.0 authorization request URI.
252
- *
253
- * @return string
254
- */
255
- public function createAuthUrl()
256
- {
257
- $scopes = $this->prepareScopes();
258
- return $this->getAuth()->createAuthUrl($scopes);
259
- }
260
-
261
- /**
262
- * Get the OAuth 2.0 access token.
263
- *
264
- * @return string $accessToken JSON encoded string in the following format:
265
- * {"access_token":"TOKEN", "refresh_token":"TOKEN", "token_type":"Bearer",
266
- * "expires_in":3600,"id_token":"TOKEN", "created":1320790426}
267
- */
268
- public function getAccessToken()
269
- {
270
- $token = $this->getAuth()->getAccessToken();
271
- // The response is json encoded, so could be the string null.
272
- // It is arguable whether this check should be here or lower
273
- // in the library.
274
- return (null == $token || 'null' == $token || '[]' == $token) ? null : $token;
275
- }
276
-
277
- /**
278
- * Get the OAuth 2.0 refresh token.
279
- *
280
- * @return string $refreshToken refresh token or null if not available
281
- */
282
- public function getRefreshToken()
283
- {
284
- return $this->getAuth()->getRefreshToken();
285
- }
286
-
287
- /**
288
- * Returns if the access_token is expired.
289
- *
290
- * @return bool Returns True if the access_token is expired.
291
- */
292
- public function isAccessTokenExpired()
293
- {
294
- return $this->getAuth()->isAccessTokenExpired();
295
- }
296
-
297
- /**
298
- * Set OAuth 2.0 "state" parameter to achieve per-request customization.
299
- *
300
- * @see http://tools.ietf.org/html/draft-ietf-oauth-v2-22#section-3.1.2.2
301
- * @param string $state
302
- */
303
- public function setState($state)
304
- {
305
- $this->getAuth()->setState($state);
306
- }
307
-
308
- /**
309
- *
310
- * @param string $accessType
311
- * Possible values for access_type include:
312
- * {@code "offline"} to request offline access from the user.
313
- * {@code "online"} to request online access from the user.
314
- */
315
- public function setAccessType($accessType)
316
- {
317
- $this->config->setAccessType($accessType);
318
- }
319
-
320
- /**
321
- *
322
- * @param string $approvalPrompt
323
- * Possible values for approval_prompt include:
324
- * {@code "force"} to force the approval UI to appear. (This is the default value)
325
- * {@code "auto"} to request auto-approval when possible.
326
- */
327
- public function setApprovalPrompt($approvalPrompt)
328
- {
329
- $this->config->setApprovalPrompt($approvalPrompt);
330
- }
331
-
332
- /**
333
- * Set the login hint, email address or sub id.
334
- *
335
- * @param string $loginHint
336
- */
337
- public function setLoginHint($loginHint)
338
- {
339
- $this->config->setLoginHint($loginHint);
340
- }
341
-
342
- /**
343
- * Set the application name, this is included in the User-Agent HTTP header.
344
- *
345
- * @param string $applicationName
346
- */
347
- public function setApplicationName($applicationName)
348
- {
349
- $this->config->setApplicationName($applicationName);
350
- }
351
-
352
- /**
353
- * Set the OAuth 2.0 Client ID.
354
- *
355
- * @param string $clientId
356
- */
357
- public function setClientId($clientId)
358
- {
359
- $this->config->setClientId($clientId);
360
- }
361
-
362
- /**
363
- * Set the OAuth 2.0 Client Secret.
364
- *
365
- * @param string $clientSecret
366
- */
367
- public function setClientSecret($clientSecret)
368
- {
369
- $this->config->setClientSecret($clientSecret);
370
- }
371
-
372
- /**
373
- * Set the OAuth 2.0 Redirect URI.
374
- *
375
- * @param string $redirectUri
376
- */
377
- public function setRedirectUri($redirectUri)
378
- {
379
- $this->config->setRedirectUri($redirectUri);
380
- }
381
-
382
- /**
383
- * If 'plus.login' is included in the list of requested scopes, you can use
384
- * this method to define types of app activities that your app will write.
385
- * You can find a list of available types here:
386
- *
387
- * @link https://developers.google.com/+/api/moment-types
388
- *
389
- * @param array $requestVisibleActions
390
- * Array of app activity types
391
- */
392
- public function setRequestVisibleActions($requestVisibleActions)
393
- {
394
- if (is_array($requestVisibleActions)) {
395
- $requestVisibleActions = join(" ", $requestVisibleActions);
396
- }
397
- $this->config->setRequestVisibleActions($requestVisibleActions);
398
- }
399
-
400
- /**
401
- * Set the developer key to use, these are obtained through the API Console.
402
- *
403
- * @see http://code.google.com/apis/console-help/#generatingdevkeys
404
- * @param string $developerKey
405
- */
406
- public function setDeveloperKey($developerKey)
407
- {
408
- $this->config->setDeveloperKey($developerKey);
409
- }
410
-
411
- /**
412
- * Set the hd (hosted domain) parameter streamlines the login process for
413
- * Google Apps hosted accounts.
414
- * By including the domain of the user, you
415
- * restrict sign-in to accounts at that domain.
416
- *
417
- * @param $hd string
418
- * - the domain to use.
419
- */
420
- public function setHostedDomain($hd)
421
- {
422
- $this->config->setHostedDomain($hd);
423
- }
424
-
425
- /**
426
- * Set the prompt hint.
427
- * Valid values are none, consent and select_account.
428
- * If no value is specified and the user has not previously authorized
429
- * access, then the user is shown a consent screen.
430
- *
431
- * @param $prompt string
432
- */
433
- public function setPrompt($prompt)
434
- {
435
- $this->config->setPrompt($prompt);
436
- }
437
-
438
- /**
439
- * openid.realm is a parameter from the OpenID 2.0 protocol, not from OAuth
440
- * 2.0.
441
- * It is used in OpenID 2.0 requests to signify the URL-space for which
442
- * an authentication request is valid.
443
- *
444
- * @param $realm string
445
- * - the URL-space to use.
446
- */
447
- public function setOpenidRealm($realm)
448
- {
449
- $this->config->setOpenidRealm($realm);
450
- }
451
-
452
- /**
453
- * If this is provided with the value true, and the authorization request is
454
- * granted, the authorization will include any previous authorizations
455
- * granted to this user/application combination for other scopes.
456
- *
457
- * @param $include boolean
458
- * - the URL-space to use.
459
- */
460
- public function setIncludeGrantedScopes($include)
461
- {
462
- $this->config->setIncludeGrantedScopes($include);
463
- }
464
-
465
- /**
466
- * Fetches a fresh OAuth 2.0 access token with the given refresh token.
467
- *
468
- * @param string $refreshToken
469
- */
470
- public function refreshToken($refreshToken)
471
- {
472
- $this->getAuth()->refreshToken($refreshToken);
473
- }
474
-
475
- /**
476
- * Revoke an OAuth2 access token or refresh token.
477
- * This method will revoke the current access
478
- * token, if a token isn't provided.
479
- *
480
- * @throws Google_Auth_Exception
481
- * @param string|null $token
482
- * The token (access token or a refresh token) that should be revoked.
483
- * @return boolean Returns True if the revocation was successful, otherwise False.
484
- */
485
- public function revokeToken($token = null)
486
- {
487
- return $this->getAuth()->revokeToken($token);
488
- }
489
-
490
- /**
491
- * Verify an id_token.
492
- * This method will verify the current id_token, if one
493
- * isn't provided.
494
- *
495
- * @throws Google_Auth_Exception
496
- * @param string|null $token
497
- * The token (id_token) that should be verified.
498
- * @return Google_Auth_LoginTicket Returns an apiLoginTicket if the verification was
499
- * successful.
500
- */
501
- public function verifyIdToken($token = null)
502
- {
503
- return $this->getAuth()->verifyIdToken($token);
504
- }
505
-
506
- /**
507
- * Verify a JWT that was signed with your own certificates.
508
- *
509
- * @param $id_token string
510
- * The JWT token
511
- * @param $cert_location array
512
- * of certificates
513
- * @param $audience string
514
- * the expected consumer of the token
515
- * @param $issuer string
516
- * the expected issuer, defaults to Google
517
- * @param
518
- * [$max_expiry] the max lifetime of a token, defaults to MAX_TOKEN_LIFETIME_SECS
519
- * @return mixed token information if valid, false if not
520
- */
521
- public function verifySignedJwt($id_token, $cert_location, $audience, $issuer, $max_expiry = null)
522
- {
523
- $auth = new Google_Auth_OAuth2($this);
524
- $certs = $auth->retrieveCertsFromLocation($cert_location);
525
- return $auth->verifySignedJwtWithCerts($id_token, $certs, $audience, $issuer, $max_expiry);
526
- }
527
-
528
- /**
529
- *
530
- * @param $creds Google_Auth_AssertionCredentials
531
- */
532
- public function setAssertionCredentials(Google_Auth_AssertionCredentials $creds)
533
- {
534
- $this->getAuth()->setAssertionCredentials($creds);
535
- }
536
-
537
- /**
538
- * Set the scopes to be requested.
539
- * Must be called before createAuthUrl().
540
- * Will remove any previously configured scopes.
541
- *
542
- * @param array $scopes,
543
- * ie: array('https://www.googleapis.com/auth/plus.login',
544
- * 'https://www.googleapis.com/auth/moderator')
545
- */
546
- public function setScopes($scopes)
547
- {
548
- $this->requestedScopes = array();
549
- $this->addScope($scopes);
550
- }
551
-
552
- /**
553
- * This functions adds a scope to be requested as part of the OAuth2.0 flow.
554
- * Will append any scopes not previously requested to the scope parameter.
555
- * A single string will be treated as a scope to request. An array of strings
556
- * will each be appended.
557
- *
558
- * @param $scope_or_scopes string|array
559
- * e.g. "profile"
560
- */
561
- public function addScope($scope_or_scopes)
562
- {
563
- if (is_string($scope_or_scopes) && ! in_array($scope_or_scopes, $this->requestedScopes)) {
564
- $this->requestedScopes[] = $scope_or_scopes;
565
- } else
566
- if (is_array($scope_or_scopes)) {
567
- foreach ($scope_or_scopes as $scope) {
568
- $this->addScope($scope);
569
- }
570
- }
571
- }
572
-
573
- /**
574
- * Returns the list of scopes requested by the client
575
- *
576
- * @return array the list of scopes
577
- *
578
- */
579
- public function getScopes()
580
- {
581
- return $this->requestedScopes;
582
- }
583
-
584
- /**
585
- * Declare whether batch calls should be used.
586
- * This may increase throughput
587
- * by making multiple requests in one connection.
588
- *
589
- * @param boolean $useBatch
590
- * True if the batch support should
591
- * be enabled. Defaults to False.
592
- */
593
- public function setUseBatch($useBatch)
594
- {
595
- // This is actually an alias for setDefer.
596
- $this->setDefer($useBatch);
597
- }
598
-
599
- /**
600
- * Declare whether making API calls should make the call immediately, or
601
- * return a request which can be called with ->execute();
602
- *
603
- * @param boolean $defer
604
- * True if calls should not be executed right away.
605
- */
606
- public function setDefer($defer)
607
- {
608
- $this->deferExecution = $defer;
609
- }
610
-
611
- /**
612
- * Helper method to execute deferred HTTP requests.
613
- *
614
- * @param $request Google_Http_Request|Google_Http_Batch
615
- * @throws Google_Exception
616
- * @return object of the type of the expected class or array.
617
- */
618
- public function execute($request)
619
- {
620
- if ($request instanceof Google_Http_Request) {
621
- $request->setUserAgent($this->getApplicationName() . " " . self::USER_AGENT_SUFFIX . $this->getLibraryVersion());
622
- if (! $this->getClassConfig("Google_Http_Request", "disable_gzip")) {
623
- $request->enableGzip();
624
- }
625
- $request->maybeMoveParametersToBody();
626
- return Google_Http_REST::execute($this, $request);
627
- } else
628
- if ($request instanceof Google_Http_Batch) {
629
- return $request->execute();
630
- } else {
631
- throw new Google_Exception("Do not know how to execute this type of object.");
632
- }
633
- }
634
-
635
- /**
636
- * Whether or not to return raw requests
637
- *
638
- * @return boolean
639
- */
640
- public function shouldDefer()
641
- {
642
- return $this->deferExecution;
643
- }
644
-
645
- /**
646
- *
647
- * @return Google_Auth_Abstract Authentication implementation
648
- */
649
- public function getAuth()
650
- {
651
- if (! isset($this->auth)) {
652
- $class = $this->config->getAuthClass();
653
- $this->auth = new $class($this);
654
- }
655
- return $this->auth;
656
- }
657
-
658
- /**
659
- *
660
- * @return Google_IO_Abstract IO implementation
661
- */
662
- public function getIo()
663
- {
664
- if (! isset($this->io)) {
665
- $class = $this->config->getIoClass();
666
- $this->io = new $class($this);
667
- }
668
- return $this->io;
669
- }
670
-
671
- /**
672
- *
673
- * @return Google_Cache_Abstract Cache implementation
674
- */
675
- public function getCache()
676
- {
677
- if (! isset($this->cache)) {
678
- $class = $this->config->getCacheClass();
679
- $this->cache = new $class($this);
680
- }
681
- return $this->cache;
682
- }
683
-
684
- /**
685
- *
686
- * @return Google_Logger_Abstract Logger implementation
687
- */
688
- public function getLogger()
689
- {
690
- if (! isset($this->logger)) {
691
- $class = $this->config->getLoggerClass();
692
- $this->logger = new $class($this);
693
- }
694
- return $this->logger;
695
- }
696
-
697
- /**
698
- * Retrieve custom configuration for a specific class.
699
- *
700
- * @param $class string|object
701
- * - class or instance of class to retrieve
702
- * @param $key string
703
- * optional - key to retrieve
704
- * @return array
705
- */
706
- public function getClassConfig($class, $key = null)
707
- {
708
- if (! is_string($class)) {
709
- $class = get_class($class);
710
- }
711
- return $this->config->getClassConfig($class, $key);
712
- }
713
-
714
- /**
715
- * Set configuration specific to a given class.
716
- * $config->setClassConfig('Google_Cache_File',
717
- * array('directory' => '/tmp/cache'));
718
- *
719
- * @param $class string|object
720
- * - The class name for the configuration
721
- * @param $config string
722
- * key or an array of configuration values
723
- * @param $value string
724
- * optional - if $config is a key, the value
725
- *
726
- */
727
- public function setClassConfig($class, $config, $value = null)
728
- {
729
- if (! is_string($class)) {
730
- $class = get_class($class);
731
- }
732
- $this->config->setClassConfig($class, $config, $value);
733
- }
734
-
735
- /**
736
- *
737
- * @return string the base URL to use for calls to the APIs
738
- */
739
- public function getBasePath()
740
- {
741
- return $this->config->getBasePath();
742
- }
743
-
744
- /**
745
- *
746
- * @return string the name of the application
747
- */
748
- public function getApplicationName()
749
- {
750
- return $this->config->getApplicationName();
751
- }
752
-
753
- /**
754
- * Are we running in Google AppEngine?
755
- * return bool
756
- */
757
- public function isAppEngine()
758
- {
759
- return (isset($_SERVER['SERVER_SOFTWARE']) && strpos($_SERVER['SERVER_SOFTWARE'], 'Google App Engine') !== false);
760
- }
761
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Collection.php DELETED
@@ -1,93 +0,0 @@
1
- <?php
2
- require_once realpath(dirname(__FILE__) . '/../../autoload.php');
3
-
4
- /**
5
- * Extension to the regular Google_Model that automatically
6
- * exposes the items array for iteration, so you can just
7
- * iterate over the object rather than a reference inside.
8
- */
9
- class Google_Collection extends Google_Model implements Iterator, Countable
10
- {
11
-
12
- protected $collection_key = 'items';
13
-
14
- public function rewind()
15
- {
16
- if (isset($this->modelData[$this->collection_key]) && is_array($this->modelData[$this->collection_key])) {
17
- reset($this->modelData[$this->collection_key]);
18
- }
19
- }
20
-
21
- public function current()
22
- {
23
- $this->coerceType($this->key());
24
- if (is_array($this->modelData[$this->collection_key])) {
25
- return current($this->modelData[$this->collection_key]);
26
- }
27
- }
28
-
29
- public function key()
30
- {
31
- if (isset($this->modelData[$this->collection_key]) && is_array($this->modelData[$this->collection_key])) {
32
- return key($this->modelData[$this->collection_key]);
33
- }
34
- }
35
-
36
- public function next()
37
- {
38
- return next($this->modelData[$this->collection_key]);
39
- }
40
-
41
- public function valid()
42
- {
43
- $key = $this->key();
44
- return $key !== null && $key !== false;
45
- }
46
-
47
- public function count()
48
- {
49
- return count($this->modelData[$this->collection_key]);
50
- }
51
-
52
- public function offsetExists($offset)
53
- {
54
- if (! is_numeric($offset)) {
55
- return parent::offsetExists($offset);
56
- }
57
- return isset($this->modelData[$this->collection_key][$offset]);
58
- }
59
-
60
- public function offsetGet($offset)
61
- {
62
- if (! is_numeric($offset)) {
63
- return parent::offsetGet($offset);
64
- }
65
- $this->coerceType($offset);
66
- return $this->modelData[$this->collection_key][$offset];
67
- }
68
-
69
- public function offsetSet($offset, $value)
70
- {
71
- if (! is_numeric($offset)) {
72
- return parent::offsetSet($offset, $value);
73
- }
74
- $this->modelData[$this->collection_key][$offset] = $value;
75
- }
76
-
77
- public function offsetUnset($offset)
78
- {
79
- if (! is_numeric($offset)) {
80
- return parent::offsetUnset($offset);
81
- }
82
- unset($this->modelData[$this->collection_key][$offset]);
83
- }
84
-
85
- private function coerceType($offset)
86
- {
87
- $typeKey = $this->keyType($this->collection_key);
88
- if (isset($this->$typeKey) && ! is_object($this->modelData[$this->collection_key][$offset])) {
89
- $type = $this->$typeKey;
90
- $this->modelData[$this->collection_key][$offset] = new $type($this->modelData[$this->collection_key][$offset]);
91
- }
92
- }
93
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Config.php DELETED
@@ -1,447 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * Copyright 2010 Google Inc.
5
- *
6
- * Licensed under the Apache License, Version 2.0 (the "License");
7
- * you may not use this file except in compliance with the License.
8
- * You may obtain a copy of the License at
9
- *
10
- * http://www.apache.org/licenses/LICENSE-2.0
11
- *
12
- * Unless required by applicable law or agreed to in writing, software
13
- * distributed under the License is distributed on an "AS IS" BASIS,
14
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- * See the License for the specific language governing permissions and
16
- * limitations under the License.
17
- */
18
- /**
19
- * A class to contain the library configuration for the Google API client.
20
- */
21
- class Google_Config
22
- {
23
-
24
- const GZIP_DISABLED = true;
25
-
26
- const GZIP_ENABLED = false;
27
-
28
- const GZIP_UPLOADS_ENABLED = true;
29
-
30
- const GZIP_UPLOADS_DISABLED = false;
31
-
32
- const USE_AUTO_IO_SELECTION = "auto";
33
-
34
- protected $configuration;
35
-
36
- /**
37
- * Create a new Google_Config.
38
- * Can accept an ini file location with the
39
- * local configuration. For example:
40
- * application_name="My App"
41
- *
42
- * @param
43
- * [$ini_file_location] - optional - The location of the ini file to load
44
- */
45
- public function __construct($ini_file_location = null)
46
- {
47
- $this->configuration = array(
48
- // The application_name is included in the User-Agent HTTP header.
49
- 'application_name' => '',
50
- // Which Authentication, Storage and HTTP IO classes to use.
51
- 'auth_class' => 'Google_Auth_OAuth2',
52
- 'io_class' => self::USE_AUTO_IO_SELECTION,
53
- 'cache_class' => 'Google_Cache_File',
54
- 'logger_class' => 'Google_Logger_Null',
55
- // Don't change these unless you're working against a special development
56
- // or testing environment.
57
- 'base_path' => 'https://www.googleapis.com',
58
- // Definition of class specific values, like file paths and so on.
59
- 'classes' => array(
60
- 'Google_IO_Abstract' => array(
61
- 'request_timeout_seconds' => 100
62
- ),
63
- 'Google_Logger_Abstract' => array(
64
- 'level' => 'debug',
65
- 'log_format' => "[%datetime%] %level%: %message% %context%\n",
66
- 'date_format' => 'd/M/Y:H:i:s O',
67
- 'allow_newlines' => true
68
- ),
69
- 'Google_Logger_File' => array(
70
- 'file' => 'php://stdout',
71
- 'mode' => 0640,
72
- 'lock' => false
73
- ),
74
- 'Google_Http_Request' => array(
75
- // Disable the use of gzip on calls if set to true. Defaults to false.
76
- 'disable_gzip' => self::GZIP_ENABLED,
77
- // We default gzip to disabled on uploads even if gzip is otherwise
78
- // enabled, due to some issues seen with small packet sizes for uploads.
79
- // Please test with this option before enabling gzip for uploads in
80
- // a production environment.
81
- 'enable_gzip_for_uploads' => self::GZIP_UPLOADS_DISABLED
82
- ),
83
- // If you want to pass in OAuth 2.0 settings, they will need to be
84
- // structured like this.
85
- 'Google_Auth_OAuth2' => array(
86
- // Keys for OAuth 2.0 access, see the API console at
87
- // https://developers.google.com/console
88
- 'client_id' => '',
89
- 'client_secret' => '',
90
- 'redirect_uri' => '',
91
- // Simple API access key, also from the API console. Ensure you get
92
- // a Server key, and not a Browser key.
93
- 'developer_key' => '',
94
- // Other parameters.
95
- 'hd' => '',
96
- 'prompt' => '',
97
- 'openid.realm' => '',
98
- 'include_granted_scopes' => '',
99
- 'login_hint' => '',
100
- 'request_visible_actions' => '',
101
- 'access_type' => 'online',
102
- 'approval_prompt' => 'auto',
103
- 'federated_signon_certs_url' => 'https://www.googleapis.com/oauth2/v1/certs'
104
- ),
105
- // Set a default directory for the file cache.
106
- 'Google_Cache_File' => array(
107
- 'directory' => sys_get_temp_dir() . '/Google_Client'
108
- )
109
- )
110
- );
111
- if ($ini_file_location) {
112
- $ini = parse_ini_file($ini_file_location, true);
113
- if (is_array($ini) && count($ini)) {
114
- $merged_configuration = $ini + $this->configuration;
115
- if (isset($ini['classes']) && isset($this->configuration['classes'])) {
116
- $merged_configuration['classes'] = $ini['classes'] + $this->configuration['classes'];
117
- }
118
- $this->configuration = $merged_configuration;
119
- }
120
- }
121
- }
122
-
123
- /**
124
- * Set configuration specific to a given class.
125
- * $config->setClassConfig('Google_Cache_File',
126
- * array('directory' => '/tmp/cache'));
127
- *
128
- * @param $class string
129
- * The class name for the configuration
130
- * @param $config string
131
- * key or an array of configuration values
132
- * @param $value string
133
- * optional - if $config is a key, the value
134
- */
135
- public function setClassConfig($class, $config, $value = null)
136
- {
137
- if (! is_array($config)) {
138
- if (! isset($this->configuration['classes'][$class])) {
139
- $this->configuration['classes'][$class] = array();
140
- }
141
- $this->configuration['classes'][$class][$config] = $value;
142
- } else {
143
- $this->configuration['classes'][$class] = $config;
144
- }
145
- }
146
-
147
- public function getClassConfig($class, $key = null)
148
- {
149
- if (! isset($this->configuration['classes'][$class])) {
150
- return null;
151
- }
152
- if ($key === null) {
153
- return $this->configuration['classes'][$class];
154
- } else {
155
- return $this->configuration['classes'][$class][$key];
156
- }
157
- }
158
-
159
- /**
160
- * Return the configured cache class.
161
- *
162
- * @return string
163
- */
164
- public function getCacheClass()
165
- {
166
- return $this->configuration['cache_class'];
167
- }
168
-
169
- /**
170
- * Return the configured logger class.
171
- *
172
- * @return string
173
- */
174
- public function getLoggerClass()
175
- {
176
- return $this->configuration['logger_class'];
177
- }
178
-
179
- /**
180
- * Return the configured Auth class.
181
- *
182
- * @return string
183
- */
184
- public function getAuthClass()
185
- {
186
- return $this->configuration['auth_class'];
187
- }
188
-
189
- /**
190
- * Set the auth class.
191
- *
192
- * @param $class string
193
- * the class name to set
194
- */
195
- public function setAuthClass($class)
196
- {
197
- $prev = $this->configuration['auth_class'];
198
- if (! isset($this->configuration['classes'][$class]) && isset($this->configuration['classes'][$prev])) {
199
- $this->configuration['classes'][$class] = $this->configuration['classes'][$prev];
200
- }
201
- $this->configuration['auth_class'] = $class;
202
- }
203
-
204
- /**
205
- * Set the IO class.
206
- *
207
- * @param $class string
208
- * the class name to set
209
- */
210
- public function setIoClass($class)
211
- {
212
- $prev = $this->configuration['io_class'];
213
- if (! isset($this->configuration['classes'][$class]) && isset($this->configuration['classes'][$prev])) {
214
- $this->configuration['classes'][$class] = $this->configuration['classes'][$prev];
215
- }
216
- $this->configuration['io_class'] = $class;
217
- }
218
-
219
- /**
220
- * Set the cache class.
221
- *
222
- * @param $class string
223
- * the class name to set
224
- */
225
- public function setCacheClass($class)
226
- {
227
- $prev = $this->configuration['cache_class'];
228
- if (! isset($this->configuration['classes'][$class]) && isset($this->configuration['classes'][$prev])) {
229
- $this->configuration['classes'][$class] = $this->configuration['classes'][$prev];
230
- }
231
- $this->configuration['cache_class'] = $class;
232
- }
233
-
234
- /**
235
- * Set the logger class.
236
- *
237
- * @param $class string
238
- * the class name to set
239
- */
240
- public function setLoggerClass($class)
241
- {
242
- $prev = $this->configuration['logger_class'];
243
- if (! isset($this->configuration['classes'][$class]) && isset($this->configuration['classes'][$prev])) {
244
- $this->configuration['classes'][$class] = $this->configuration['classes'][$prev];
245
- }
246
- $this->configuration['logger_class'] = $class;
247
- }
248
-
249
- /**
250
- * Return the configured IO class.
251
- *
252
- * @return string
253
- */
254
- public function getIoClass()
255
- {
256
- return $this->configuration['io_class'];
257
- }
258
-
259
- /**
260
- * Set the application name, this is included in the User-Agent HTTP header.
261
- *
262
- * @param string $name
263
- */
264
- public function setApplicationName($name)
265
- {
266
- $this->configuration['application_name'] = $name;
267
- }
268
-
269
- /**
270
- *
271
- * @return string the name of the application
272
- */
273
- public function getApplicationName()
274
- {
275
- return $this->configuration['application_name'];
276
- }
277
-
278
- /**
279
- * Set the client ID for the auth class.
280
- *
281
- * @param $clientId string
282
- * - the API console client ID
283
- */
284
- public function setClientId($clientId)
285
- {
286
- $this->setAuthConfig('client_id', $clientId);
287
- }
288
-
289
- /**
290
- * Set the client secret for the auth class.
291
- *
292
- * @param $secret string
293
- * - the API console client secret
294
- */
295
- public function setClientSecret($secret)
296
- {
297
- $this->setAuthConfig('client_secret', $secret);
298
- }
299
-
300
- /**
301
- * Set the redirect uri for the auth class.
302
- * Note that if using the
303
- * Javascript based sign in flow, this should be the string 'postmessage'.
304
- *
305
- * @param $uri string
306
- * - the URI that users should be redirected to
307
- */
308
- public function setRedirectUri($uri)
309
- {
310
- $this->setAuthConfig('redirect_uri', $uri);
311
- }
312
-
313
- /**
314
- * Set the app activities for the auth class.
315
- *
316
- * @param $rva string
317
- * a space separated list of app activity types
318
- */
319
- public function setRequestVisibleActions($rva)
320
- {
321
- $this->setAuthConfig('request_visible_actions', $rva);
322
- }
323
-
324
- /**
325
- * Set the the access type requested (offline or online.)
326
- *
327
- * @param $access string
328
- * - the access type
329
- */
330
- public function setAccessType($access)
331
- {
332
- $this->setAuthConfig('access_type', $access);
333
- }
334
-
335
- /**
336
- * Set when to show the approval prompt (auto or force)
337
- *
338
- * @param $approval string
339
- * - the approval request
340
- */
341
- public function setApprovalPrompt($approval)
342
- {
343
- $this->setAuthConfig('approval_prompt', $approval);
344
- }
345
-
346
- /**
347
- * Set the login hint (email address or sub identifier)
348
- *
349
- * @param $hint string
350
- */
351
- public function setLoginHint($hint)
352
- {
353
- $this->setAuthConfig('login_hint', $hint);
354
- }
355
-
356
- /**
357
- * Set the developer key for the auth class.
358
- * Note that this is separate value
359
- * from the client ID - if it looks like a URL, its a client ID!
360
- *
361
- * @param $key string
362
- * - the API console developer key
363
- */
364
- public function setDeveloperKey($key)
365
- {
366
- $this->setAuthConfig('developer_key', $key);
367
- }
368
-
369
- /**
370
- * Set the hd (hosted domain) parameter streamlines the login process for
371
- * Google Apps hosted accounts.
372
- * By including the domain of the user, you
373
- * restrict sign-in to accounts at that domain.
374
- *
375
- * @param $hd string
376
- * - the domain to use.
377
- */
378
- public function setHostedDomain($hd)
379
- {
380
- $this->setAuthConfig('hd', $hd);
381
- }
382
-
383
- /**
384
- * Set the prompt hint.
385
- * Valid values are none, consent and select_account.
386
- * If no value is specified and the user has not previously authorized
387
- * access, then the user is shown a consent screen.
388
- *
389
- * @param $prompt string
390
- */
391
- public function setPrompt($prompt)
392
- {
393
- $this->setAuthConfig('prompt', $prompt);
394
- }
395
-
396
- /**
397
- * openid.realm is a parameter from the OpenID 2.0 protocol, not from OAuth
398
- * 2.0.
399
- * It is used in OpenID 2.0 requests to signify the URL-space for which
400
- * an authentication request is valid.
401
- *
402
- * @param $realm string
403
- * - the URL-space to use.
404
- */
405
- public function setOpenidRealm($realm)
406
- {
407
- $this->setAuthConfig('openid.realm', $realm);
408
- }
409
-
410
- /**
411
- * If this is provided with the value true, and the authorization request is
412
- * granted, the authorization will include any previous authorizations
413
- * granted to this user/application combination for other scopes.
414
- *
415
- * @param $include boolean
416
- * - the URL-space to use.
417
- */
418
- public function setIncludeGrantedScopes($include)
419
- {
420
- $this->setAuthConfig('include_granted_scopes', $include ? "true" : "false");
421
- }
422
-
423
- /**
424
- *
425
- * @return string the base URL to use for API calls
426
- */
427
- public function getBasePath()
428
- {
429
- return $this->configuration['base_path'];
430
- }
431
-
432
- /**
433
- * Set the auth configuration for the current auth class.
434
- *
435
- * @param $key -
436
- * the key to set
437
- * @param $value -
438
- * the parameter value
439
- */
440
- private function setAuthConfig($key, $value)
441
- {
442
- if (! isset($this->configuration['classes'][$this->getAuthClass()])) {
443
- $this->configuration['classes'][$this->getAuthClass()] = array();
444
- }
445
- $this->configuration['classes'][$this->getAuthClass()][$key] = $value;
446
- }
447
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Http/Batch.php DELETED
@@ -1,138 +0,0 @@
1
- <?php
2
- /*
3
- * Copyright 2012 Google Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- require_once realpath(dirname(__FILE__) . '/../../../autoload.php');
18
-
19
- /**
20
- *
21
- * @author Chirag Shah <chirags@google.com>
22
- */
23
- class Google_Http_Batch
24
- {
25
-
26
- /**
27
- *
28
- * @var string Multipart Boundary.
29
- */
30
- private $boundary;
31
-
32
- /**
33
- *
34
- * @var array service requests to be executed.
35
- */
36
- private $requests = array();
37
-
38
- /**
39
- *
40
- * @var Google_Client
41
- */
42
- private $client;
43
-
44
- private $expected_classes = array();
45
-
46
- private $base_path;
47
-
48
- public function __construct(Google_Client $client, $boundary = false)
49
- {
50
- $this->client = $client;
51
- $this->base_path = $this->client->getBasePath();
52
- $this->expected_classes = array();
53
- $boundary = (false == $boundary) ? mt_rand() : $boundary;
54
- $this->boundary = str_replace('"', '', $boundary);
55
- }
56
-
57
- public function add(Google_Http_Request $request, $key = false)
58
- {
59
- if (false == $key) {
60
- $key = mt_rand();
61
- }
62
- $this->requests[$key] = $request;
63
- }
64
-
65
- public function execute()
66
- {
67
- $body = '';
68
- /**
69
- *
70
- * @var Google_Http_Request $req
71
- */
72
- foreach ($this->requests as $key => $req) {
73
- $body .= "--{$this->boundary}\n";
74
- $body .= $req->toBatchString($key) . "\n";
75
- $this->expected_classes["response-" . $key] = $req->getExpectedClass();
76
- }
77
- $body = rtrim($body);
78
- $body .= "\n--{$this->boundary}--";
79
- $url = $this->base_path . '/batch';
80
- $httpRequest = new Google_Http_Request($url, 'POST');
81
- $httpRequest->setRequestHeaders(array(
82
- 'Content-Type' => 'multipart/mixed; boundary=' . $this->boundary
83
- ));
84
- $httpRequest->setPostBody($body);
85
- $response = $this->client->getIo()->makeRequest($httpRequest);
86
- return $this->parseResponse($response);
87
- }
88
-
89
- public function parseResponse(Google_Http_Request $response)
90
- {
91
- $contentType = $response->getResponseHeader('content-type');
92
- $contentType = explode(';', $contentType);
93
- $boundary = false;
94
- foreach ($contentType as $part) {
95
- $part = (explode('=', $part, 2));
96
- if (isset($part[0]) && 'boundary' == trim($part[0])) {
97
- $boundary = $part[1];
98
- }
99
- }
100
- $body = $response->getResponseBody();
101
- if ($body) {
102
- $body = str_replace("--$boundary--", "--$boundary", $body);
103
- $parts = explode("--$boundary", $body);
104
- $responses = array();
105
- foreach ($parts as $part) {
106
- $part = trim($part);
107
- if (! empty($part)) {
108
- list ($metaHeaders, $part) = explode("\r\n\r\n", $part, 2);
109
- $metaHeaders = $this->client->getIo()->getHttpResponseHeaders($metaHeaders);
110
- $status = substr($part, 0, strpos($part, "\n"));
111
- $status = explode(" ", $status);
112
- $status = $status[1];
113
- list ($partHeaders, $partBody) = $this->client->getIo()->ParseHttpResponse($part, false);
114
- $response = new Google_Http_Request("");
115
- $response->setResponseHttpCode($status);
116
- $response->setResponseHeaders($partHeaders);
117
- $response->setResponseBody($partBody);
118
- // Need content id.
119
- $key = $metaHeaders['content-id'];
120
- if (isset($this->expected_classes[$key]) && strlen($this->expected_classes[$key]) > 0) {
121
- $class = $this->expected_classes[$key];
122
- $response->setExpectedClass($class);
123
- }
124
- try {
125
- $response = Google_Http_REST::decodeHttpResponse($response, $this->client);
126
- $responses[$key] = $response;
127
- } catch (Google_Service_Exception $e) {
128
- // Store the exception as the response, so successful responses
129
- // can be processed.
130
- $responses[$key] = $e;
131
- }
132
- }
133
- }
134
- return $responses;
135
- }
136
- return null;
137
- }
138
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Http/CacheParser.php DELETED
@@ -1,182 +0,0 @@
1
- <?php
2
- /*
3
- * Copyright 2012 Google Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- require_once realpath(dirname(__FILE__) . '/../../../autoload.php');
18
-
19
- /**
20
- * Implement the caching directives specified in rfc2616.
21
- * This
22
- * implementation is guided by the guidance offered in rfc2616-sec13.
23
- *
24
- * @author Chirag Shah <chirags@google.com>
25
- */
26
- class Google_Http_CacheParser
27
- {
28
-
29
- public static $CACHEABLE_HTTP_METHODS = array(
30
- 'GET',
31
- 'HEAD'
32
- );
33
-
34
- public static $CACHEABLE_STATUS_CODES = array(
35
- '200',
36
- '203',
37
- '300',
38
- '301'
39
- );
40
-
41
- /**
42
- * Check if an HTTP request can be cached by a private local cache.
43
- *
44
- * @static
45
- *
46
- * @param Google_Http_Request $resp
47
- * @return bool True if the request is cacheable.
48
- * False if the request is uncacheable.
49
- */
50
- public static function isRequestCacheable(Google_Http_Request $resp)
51
- {
52
- $method = $resp->getRequestMethod();
53
- if (! in_array($method, self::$CACHEABLE_HTTP_METHODS)) {
54
- return false;
55
- }
56
- // Don't cache authorized requests/responses.
57
- // [rfc2616-14.8] When a shared cache receives a request containing an
58
- // Authorization field, it MUST NOT return the corresponding response
59
- // as a reply to any other request...
60
- if ($resp->getRequestHeader("authorization")) {
61
- return false;
62
- }
63
- return true;
64
- }
65
-
66
- /**
67
- * Check if an HTTP response can be cached by a private local cache.
68
- *
69
- * @static
70
- *
71
- * @param Google_Http_Request $resp
72
- * @return bool True if the response is cacheable.
73
- * False if the response is un-cacheable.
74
- */
75
- public static function isResponseCacheable(Google_Http_Request $resp)
76
- {
77
- // First, check if the HTTP request was cacheable before inspecting the
78
- // HTTP response.
79
- if (false == self::isRequestCacheable($resp)) {
80
- return false;
81
- }
82
- $code = $resp->getResponseHttpCode();
83
- if (! in_array($code, self::$CACHEABLE_STATUS_CODES)) {
84
- return false;
85
- }
86
- // The resource is uncacheable if the resource is already expired and
87
- // the resource doesn't have an ETag for revalidation.
88
- $etag = $resp->getResponseHeader("etag");
89
- if (self::isExpired($resp) && $etag == false) {
90
- return false;
91
- }
92
- // [rfc2616-14.9.2] If [no-store is] sent in a response, a cache MUST NOT
93
- // store any part of either this response or the request that elicited it.
94
- $cacheControl = $resp->getParsedCacheControl();
95
- if (isset($cacheControl['no-store'])) {
96
- return false;
97
- }
98
- // Pragma: no-cache is an http request directive, but is occasionally
99
- // used as a response header incorrectly.
100
- $pragma = $resp->getResponseHeader('pragma');
101
- if ($pragma == 'no-cache' || strpos($pragma, 'no-cache') !== false) {
102
- return false;
103
- }
104
- // [rfc2616-14.44] Vary: * is extremely difficult to cache. "It implies that
105
- // a cache cannot determine from the request headers of a subsequent request
106
- // whether this response is the appropriate representation."
107
- // Given this, we deem responses with the Vary header as uncacheable.
108
- $vary = $resp->getResponseHeader('vary');
109
- if ($vary) {
110
- return false;
111
- }
112
- return true;
113
- }
114
-
115
- /**
116
- *
117
- * @static
118
- *
119
- * @param Google_Http_Request $resp
120
- * @return bool True if the HTTP response is considered to be expired.
121
- * False if it is considered to be fresh.
122
- */
123
- public static function isExpired(Google_Http_Request $resp)
124
- {
125
- // HTTP/1.1 clients and caches MUST treat other invalid date formats,
126
- // especially including the value “0”, as in the past.
127
- $parsedExpires = false;
128
- $responseHeaders = $resp->getResponseHeaders();
129
- if (isset($responseHeaders['expires'])) {
130
- $rawExpires = $responseHeaders['expires'];
131
- // Check for a malformed expires header first.
132
- if (empty($rawExpires) || (is_numeric($rawExpires) && $rawExpires <= 0)) {
133
- return true;
134
- }
135
- // See if we can parse the expires header.
136
- $parsedExpires = strtotime($rawExpires);
137
- if (false == $parsedExpires || $parsedExpires <= 0) {
138
- return true;
139
- }
140
- }
141
- // Calculate the freshness of an http response.
142
- $freshnessLifetime = false;
143
- $cacheControl = $resp->getParsedCacheControl();
144
- if (isset($cacheControl['max-age'])) {
145
- $freshnessLifetime = $cacheControl['max-age'];
146
- }
147
- $rawDate = $resp->getResponseHeader('date');
148
- $parsedDate = strtotime($rawDate);
149
- if (empty($rawDate) || false == $parsedDate) {
150
- // We can't default this to now, as that means future cache reads
151
- // will always pass with the logic below, so we will require a
152
- // date be injected if not supplied.
153
- throw new Google_Exception("All cacheable requests must have creation dates.");
154
- }
155
- if (false == $freshnessLifetime && isset($responseHeaders['expires'])) {
156
- $freshnessLifetime = $parsedExpires - $parsedDate;
157
- }
158
- if (false == $freshnessLifetime) {
159
- return true;
160
- }
161
- // Calculate the age of an http response.
162
- $age = max(0, time() - $parsedDate);
163
- if (isset($responseHeaders['age'])) {
164
- $age = max($age, strtotime($responseHeaders['age']));
165
- }
166
- return $freshnessLifetime <= $age;
167
- }
168
-
169
- /**
170
- * Determine if a cache entry should be revalidated with by the origin.
171
- *
172
- * @param Google_Http_Request $response
173
- * @return bool True if the entry is expired, else return false.
174
- */
175
- public static function mustRevalidate(Google_Http_Request $response)
176
- {
177
- // [13.3] When a cache has a stale entry that it would like to use as a
178
- // response to a client's request, it first has to check with the origin
179
- // server to see if its cached entry is still usable.
180
- return self::isExpired($response);
181
- }
182
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Http/MediaFileUpload.php DELETED
@@ -1,315 +0,0 @@
1
- <?php
2
- /**
3
- * Copyright 2012 Google Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- require_once realpath(dirname(__FILE__) . '/../../../autoload.php');
18
-
19
- /**
20
- *
21
- * @author Chirag Shah <chirags@google.com>
22
- *
23
- */
24
- class Google_Http_MediaFileUpload
25
- {
26
-
27
- const UPLOAD_MEDIA_TYPE = 'media';
28
-
29
- const UPLOAD_MULTIPART_TYPE = 'multipart';
30
-
31
- const UPLOAD_RESUMABLE_TYPE = 'resumable';
32
-
33
- /**
34
- *
35
- * @var string $mimeType
36
- */
37
- private $mimeType;
38
-
39
- /**
40
- *
41
- * @var string $data
42
- */
43
- private $data;
44
-
45
- /**
46
- *
47
- * @var bool $resumable
48
- */
49
- private $resumable;
50
-
51
- /**
52
- *
53
- * @var int $chunkSize
54
- */
55
- private $chunkSize;
56
-
57
- /**
58
- *
59
- * @var int $size
60
- */
61
- private $size;
62
-
63
- /**
64
- *
65
- * @var string $resumeUri
66
- */
67
- private $resumeUri;
68
-
69
- /**
70
- *
71
- * @var int $progress
72
- */
73
- private $progress;
74
-
75
- /**
76
- *
77
- * @var Google_Client
78
- */
79
- private $client;
80
-
81
- /**
82
- *
83
- * @var Google_Http_Request
84
- */
85
- private $request;
86
-
87
- /**
88
- *
89
- * @var string
90
- */
91
- private $boundary;
92
-
93
- /**
94
- * Result code from last HTTP call
95
- *
96
- * @var int
97
- */
98
- private $httpResultCode;
99
-
100
- /**
101
- *
102
- * @param $mimeType string
103
- * @param $data string
104
- * The bytes you want to upload.
105
- * @param $resumable bool
106
- * @param bool $chunkSize
107
- * File will be uploaded in chunks of this many bytes.
108
- * only used if resumable=True
109
- */
110
- public function __construct(Google_Client $client, Google_Http_Request $request, $mimeType, $data, $resumable = false, $chunkSize = false, $boundary = false)
111
- {
112
- $this->client = $client;
113
- $this->request = $request;
114
- $this->mimeType = $mimeType;
115
- $this->data = $data;
116
- $this->size = strlen($this->data);
117
- $this->resumable = $resumable;
118
- if (! $chunkSize) {
119
- $chunkSize = 256 * 1024;
120
- }
121
- $this->chunkSize = $chunkSize;
122
- $this->progress = 0;
123
- $this->boundary = $boundary;
124
- // Process Media Request
125
- $this->process();
126
- }
127
-
128
- /**
129
- * Set the size of the file that is being uploaded.
130
- *
131
- * @param $size -
132
- * int file size in bytes
133
- */
134
- public function setFileSize($size)
135
- {
136
- $this->size = $size;
137
- }
138
-
139
- /**
140
- * Return the progress on the upload
141
- *
142
- * @return int progress in bytes uploaded.
143
- */
144
- public function getProgress()
145
- {
146
- return $this->progress;
147
- }
148
-
149
- /**
150
- * Return the HTTP result code from the last call made.
151
- *
152
- * @return int code
153
- */
154
- public function getHttpResultCode()
155
- {
156
- return $this->httpResultCode;
157
- }
158
-
159
- /**
160
- * Send the next part of the file to upload.
161
- *
162
- * @param
163
- * [$chunk] the next set of bytes to send. If false will used $data passed
164
- * at construct time.
165
- */
166
- public function nextChunk($chunk = false)
167
- {
168
- if (false == $this->resumeUri) {
169
- $this->resumeUri = $this->getResumeUri();
170
- }
171
- if (false == $chunk) {
172
- $chunk = substr($this->data, $this->progress, $this->chunkSize);
173
- }
174
- $lastBytePos = $this->progress + strlen($chunk) - 1;
175
- $headers = array(
176
- 'content-range' => "bytes $this->progress-$lastBytePos/$this->size",
177
- 'content-type' => $this->request->getRequestHeader('content-type'),
178
- 'content-length' => $this->chunkSize,
179
- 'expect' => ''
180
- );
181
- $httpRequest = new Google_Http_Request($this->resumeUri, 'PUT', $headers, $chunk);
182
- if ($this->client->getClassConfig("Google_Http_Request", "enable_gzip_for_uploads")) {
183
- $httpRequest->enableGzip();
184
- } else {
185
- $httpRequest->disableGzip();
186
- }
187
- $response = $this->client->getIo()->makeRequest($httpRequest);
188
- $response->setExpectedClass($this->request->getExpectedClass());
189
- $code = $response->getResponseHttpCode();
190
- $this->httpResultCode = $code;
191
- if (308 == $code) {
192
- // Track the amount uploaded.
193
- $range = explode('-', $response->getResponseHeader('range'));
194
- $this->progress = $range[1] + 1;
195
- // Allow for changing upload URLs.
196
- $location = $response->getResponseHeader('location');
197
- if ($location) {
198
- $this->resumeUri = $location;
199
- }
200
- // No problems, but upload not complete.
201
- return false;
202
- } else {
203
- return Google_Http_REST::decodeHttpResponse($response, $this->client);
204
- }
205
- }
206
-
207
- /**
208
- *
209
- * @param
210
- * $meta
211
- * @param
212
- * $params
213
- * @return array|bool @visible for testing
214
- */
215
- private function process()
216
- {
217
- $postBody = false;
218
- $contentType = false;
219
- $meta = $this->request->getPostBody();
220
- $meta = is_string($meta) ? json_decode($meta, true) : $meta;
221
- $uploadType = $this->getUploadType($meta);
222
- $this->request->setQueryParam('uploadType', $uploadType);
223
- $this->transformToUploadUrl();
224
- $mimeType = $this->mimeType ? $this->mimeType : $this->request->getRequestHeader('content-type');
225
- if (self::UPLOAD_RESUMABLE_TYPE == $uploadType) {
226
- $contentType = $mimeType;
227
- $postBody = is_string($meta) ? $meta : json_encode($meta);
228
- } else
229
- if (self::UPLOAD_MEDIA_TYPE == $uploadType) {
230
- $contentType = $mimeType;
231
- $postBody = $this->data;
232
- } else
233
- if (self::UPLOAD_MULTIPART_TYPE == $uploadType) {
234
- // This is a multipart/related upload.
235
- $boundary = $this->boundary ? $this->boundary : mt_rand();
236
- $boundary = str_replace('"', '', $boundary);
237
- $contentType = 'multipart/related; boundary=' . $boundary;
238
- $related = "--$boundary\r\n";
239
- $related .= "Content-Type: application/json; charset=UTF-8\r\n";
240
- $related .= "\r\n" . json_encode($meta) . "\r\n";
241
- $related .= "--$boundary\r\n";
242
- $related .= "Content-Type: $mimeType\r\n";
243
- $related .= "Content-Transfer-Encoding: base64\r\n";
244
- $related .= "\r\n" . base64_encode($this->data) . "\r\n";
245
- $related .= "--$boundary--";
246
- $postBody = $related;
247
- }
248
- $this->request->setPostBody($postBody);
249
- if (isset($contentType) && $contentType) {
250
- $contentTypeHeader['content-type'] = $contentType;
251
- $this->request->setRequestHeaders($contentTypeHeader);
252
- }
253
- }
254
-
255
- private function transformToUploadUrl()
256
- {
257
- $base = $this->request->getBaseComponent();
258
- $this->request->setBaseComponent($base . '/upload');
259
- }
260
-
261
- /**
262
- * Valid upload types:
263
- * - resumable (UPLOAD_RESUMABLE_TYPE)
264
- * - media (UPLOAD_MEDIA_TYPE)
265
- * - multipart (UPLOAD_MULTIPART_TYPE)
266
- *
267
- * @param
268
- * $meta
269
- * @return string @visible for testing
270
- */
271
- public function getUploadType($meta)
272
- {
273
- if ($this->resumable) {
274
- return self::UPLOAD_RESUMABLE_TYPE;
275
- }
276
- if (false == $meta && $this->data) {
277
- return self::UPLOAD_MEDIA_TYPE;
278
- }
279
- return self::UPLOAD_MULTIPART_TYPE;
280
- }
281
-
282
- private function getResumeUri()
283
- {
284
- $result = null;
285
- $body = $this->request->getPostBody();
286
- if ($body) {
287
- $headers = array(
288
- 'content-type' => 'application/json; charset=UTF-8',
289
- 'content-length' => Google_Utils::getStrLen($body),
290
- 'x-upload-content-type' => $this->mimeType,
291
- 'x-upload-content-length' => $this->size,
292
- 'expect' => ''
293
- );
294
- $this->request->setRequestHeaders($headers);
295
- }
296
- $response = $this->client->getIo()->makeRequest($this->request);
297
- $location = $response->getResponseHeader('location');
298
- $code = $response->getResponseHttpCode();
299
- if (200 == $code && true == $location) {
300
- return $location;
301
- }
302
- $message = $code;
303
- $body = @json_decode($response->getResponseBody());
304
- if (! empty($body->error->errors)) {
305
- $message .= ': ';
306
- foreach ($body->error->errors as $error) {
307
- $message .= "{$error->domain}, {$error->message};";
308
- }
309
- $message = rtrim($message, ';');
310
- }
311
- $error = "Failed to start the resumable upload (HTTP {$message})";
312
- $this->client->getLogger()->error($error);
313
- throw new Google_Exception($error);
314
- }
315
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Http/REST.php DELETED
@@ -1,143 +0,0 @@
1
- <?php
2
- /*
3
- * Copyright 2010 Google Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- require_once realpath(dirname(__FILE__) . '/../../../autoload.php');
18
-
19
- /**
20
- * This class implements the RESTful transport of apiServiceRequest()'s
21
- *
22
- * @author Chris Chabot <chabotc@google.com>
23
- * @author Chirag Shah <chirags@google.com>
24
- */
25
- class Google_Http_REST
26
- {
27
-
28
- /**
29
- * Executes a Google_Http_Request
30
- *
31
- * @param Google_Client $client
32
- * @param Google_Http_Request $req
33
- * @return array decoded result
34
- * @throws Google_Service_Exception on server side error (ie: not authenticated,
35
- * invalid or malformed post body, invalid url)
36
- */
37
- public static function execute(Google_Client $client, Google_Http_Request $req)
38
- {
39
- $httpRequest = $client->getIo()->makeRequest($req);
40
- $httpRequest->setExpectedClass($req->getExpectedClass());
41
- return self::decodeHttpResponse($httpRequest, $client);
42
- }
43
-
44
- /**
45
- * Decode an HTTP Response.
46
- *
47
- * @static
48
- *
49
- * @throws Google_Service_Exception
50
- * @param Google_Http_Request $response
51
- * The http response to be decoded.
52
- * @param Google_Client $client
53
- * @return mixed|null
54
- */
55
- public static function decodeHttpResponse($response, Google_Client $client = null)
56
- {
57
- $code = $response->getResponseHttpCode();
58
- $body = $response->getResponseBody();
59
- $decoded = null;
60
- if ((intVal($code)) >= 300) {
61
- $decoded = json_decode($body, true);
62
- $err = 'Error calling ' . $response->getRequestMethod() . ' ' . $response->getUrl();
63
- if (isset($decoded['error']) && isset($decoded['error']['message']) && isset($decoded['error']['code'])) {
64
- // if we're getting a json encoded error definition, use that instead of the raw response
65
- // body for improved readability
66
- $err .= ": ({$decoded['error']['code']}) {$decoded['error']['message']}";
67
- } else {
68
- $err .= ": ($code) $body";
69
- }
70
- $errors = null;
71
- // Specific check for APIs which don't return error details, such as Blogger.
72
- if (isset($decoded['error']) && isset($decoded['error']['errors'])) {
73
- $errors = $decoded['error']['errors'];
74
- }
75
- if ($client) {
76
- $client->getLogger()->error($err, array(
77
- 'code' => $code,
78
- 'errors' => $errors
79
- ));
80
- }
81
- throw new Google_Service_Exception($err, $code, null, $errors);
82
- }
83
- // Only attempt to decode the response, if the response code wasn't (204) 'no content'
84
- if ($code != '204') {
85
- $decoded = json_decode($body, true);
86
- if ($decoded === null || $decoded === "") {
87
- $error = "Invalid json in service response: $body";
88
- if ($client) {
89
- $client->getLogger()->error($error);
90
- }
91
- throw new Google_Service_Exception($error);
92
- }
93
- if ($response->getExpectedClass()) {
94
- $class = $response->getExpectedClass();
95
- $decoded = new $class($decoded);
96
- }
97
- }
98
- return $decoded;
99
- }
100
-
101
- /**
102
- * Parse/expand request parameters and create a fully qualified
103
- * request uri.
104
- *
105
- * @static
106
- *
107
- * @param string $servicePath
108
- * @param string $restPath
109
- * @param array $params
110
- * @return string $requestUrl
111
- */
112
- public static function createRequestUri($servicePath, $restPath, $params)
113
- {
114
- $requestUrl = $servicePath . $restPath;
115
- $uriTemplateVars = array();
116
- $queryVars = array();
117
- foreach ($params as $paramName => $paramSpec) {
118
- if ($paramSpec['type'] == 'boolean') {
119
- $paramSpec['value'] = ($paramSpec['value']) ? 'true' : 'false';
120
- }
121
- if ($paramSpec['location'] == 'path') {
122
- $uriTemplateVars[$paramName] = $paramSpec['value'];
123
- } else
124
- if ($paramSpec['location'] == 'query') {
125
- if (isset($paramSpec['repeated']) && is_array($paramSpec['value'])) {
126
- foreach ($paramSpec['value'] as $value) {
127
- $queryVars[] = $paramName . '=' . rawurlencode(rawurldecode($value));
128
- }
129
- } else {
130
- $queryVars[] = $paramName . '=' . rawurlencode(rawurldecode($paramSpec['value']));
131
- }
132
- }
133
- }
134
- if (count($uriTemplateVars)) {
135
- $uriTemplateParser = new Google_Utils_URITemplate();
136
- $requestUrl = $uriTemplateParser->parse($requestUrl, $uriTemplateVars);
137
- }
138
- if (count($queryVars)) {
139
- $requestUrl .= '?' . implode($queryVars, '&');
140
- }
141
- return $requestUrl;
142
- }
143
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Http/Request.php DELETED
@@ -1,498 +0,0 @@
1
- <?php
2
- /*
3
- * Copyright 2010 Google Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- require_once realpath(dirname(__FILE__) . '/../../../autoload.php');
18
-
19
- /**
20
- * HTTP Request to be executed by IO classes.
21
- * Upon execution, the
22
- * responseHttpCode, responseHeaders and responseBody will be filled in.
23
- *
24
- * @author Chris Chabot <chabotc@google.com>
25
- * @author Chirag Shah <chirags@google.com>
26
- *
27
- */
28
- class Google_Http_Request
29
- {
30
-
31
- const GZIP_UA = " (gzip)";
32
-
33
- private $batchHeaders = array(
34
- 'Content-Type' => 'application/http',
35
- 'Content-Transfer-Encoding' => 'binary',
36
- 'MIME-Version' => '1.0'
37
- );
38
-
39
- protected $queryParams;
40
-
41
- protected $requestMethod;
42
-
43
- protected $requestHeaders;
44
-
45
- protected $baseComponent = null;
46
-
47
- protected $path;
48
-
49
- protected $postBody;
50
-
51
- protected $userAgent;
52
-
53
- protected $canGzip = null;
54
-
55
- protected $responseHttpCode;
56
-
57
- protected $responseHeaders;
58
-
59
- protected $responseBody;
60
-
61
- protected $expectedClass;
62
-
63
- public $accessKey;
64
-
65
- public function __construct($url, $method = 'GET', $headers = array(), $postBody = null)
66
- {
67
- $this->setUrl($url);
68
- $this->setRequestMethod($method);
69
- $this->setRequestHeaders($headers);
70
- $this->setPostBody($postBody);
71
- }
72
-
73
- /**
74
- * Misc function that returns the base url component of the $url
75
- * used by the OAuth signing class to calculate the base string
76
- *
77
- * @return string The base url component of the $url.
78
- */
79
- public function getBaseComponent()
80
- {
81
- return $this->baseComponent;
82
- }
83
-
84
- /**
85
- * Set the base URL that path and query parameters will be added to.
86
- *
87
- * @param $baseComponent string
88
- */
89
- public function setBaseComponent($baseComponent)
90
- {
91
- $this->baseComponent = $baseComponent;
92
- }
93
-
94
- /**
95
- * Enable support for gzipped responses with this request.
96
- */
97
- public function enableGzip()
98
- {
99
- $this->setRequestHeaders(array(
100
- "Accept-Encoding" => "gzip"
101
- ));
102
- $this->canGzip = true;
103
- $this->setUserAgent($this->userAgent);
104
- }
105
-
106
- /**
107
- * Disable support for gzip responses with this request.
108
- */
109
- public function disableGzip()
110
- {
111
- if (isset($this->requestHeaders['accept-encoding']) && $this->requestHeaders['accept-encoding'] == "gzip") {
112
- unset($this->requestHeaders['accept-encoding']);
113
- }
114
- $this->canGzip = false;
115
- $this->userAgent = str_replace(self::GZIP_UA, "", $this->userAgent);
116
- }
117
-
118
- /**
119
- * Can this request accept a gzip response?
120
- *
121
- * @return bool
122
- */
123
- public function canGzip()
124
- {
125
- return $this->canGzip;
126
- }
127
-
128
- /**
129
- * Misc function that returns an array of the query parameters of the current
130
- * url used by the OAuth signing class to calculate the signature
131
- *
132
- * @return array Query parameters in the query string.
133
- */
134
- public function getQueryParams()
135
- {
136
- return $this->queryParams;
137
- }
138
-
139
- /**
140
- * Set a new query parameter.
141
- *
142
- * @param $key -
143
- * string to set, does not need to be URL encoded
144
- * @param $value -
145
- * string to set, does not need to be URL encoded
146
- */
147
- public function setQueryParam($key, $value)
148
- {
149
- $this->queryParams[$key] = $value;
150
- }
151
-
152
- /**
153
- *
154
- * @return string HTTP Response Code.
155
- */
156
- public function getResponseHttpCode()
157
- {
158
- return (int) $this->responseHttpCode;
159
- }
160
-
161
- /**
162
- *
163
- * @param int $responseHttpCode
164
- * HTTP Response Code.
165
- */
166
- public function setResponseHttpCode($responseHttpCode)
167
- {
168
- $this->responseHttpCode = $responseHttpCode;
169
- }
170
-
171
- /**
172
- *
173
- * @return $responseHeaders (array) HTTP Response Headers.
174
- */
175
- public function getResponseHeaders()
176
- {
177
- return $this->responseHeaders;
178
- }
179
-
180
- /**
181
- *
182
- * @return string HTTP Response Body
183
- */
184
- public function getResponseBody()
185
- {
186
- return $this->responseBody;
187
- }
188
-
189
- /**
190
- * Set the class the response to this request should expect.
191
- *
192
- * @param $class string
193
- * the class name
194
- */
195
- public function setExpectedClass($class)
196
- {
197
- $this->expectedClass = $class;
198
- }
199
-
200
- /**
201
- * Retrieve the expected class the response should expect.
202
- *
203
- * @return string class name
204
- */
205
- public function getExpectedClass()
206
- {
207
- return $this->expectedClass;
208
- }
209
-
210
- /**
211
- *
212
- * @param array $headers
213
- * The HTTP response headers
214
- * to be normalized.
215
- */
216
- public function setResponseHeaders($headers)
217
- {
218
- $headers = Google_Utils::normalize($headers);
219
- if ($this->responseHeaders) {
220
- $headers = array_merge($this->responseHeaders, $headers);
221
- }
222
- $this->responseHeaders = $headers;
223
- }
224
-
225
- /**
226
- *
227
- * @param string $key
228
- * @return array|boolean Returns the requested HTTP header or
229
- * false if unavailable.
230
- */
231
- public function getResponseHeader($key)
232
- {
233
- return isset($this->responseHeaders[$key]) ? $this->responseHeaders[$key] : false;
234
- }
235
-
236
- /**
237
- *
238
- * @param string $responseBody
239
- * The HTTP response body.
240
- */
241
- public function setResponseBody($responseBody)
242
- {
243
- $this->responseBody = $responseBody;
244
- }
245
-
246
- /**
247
- *
248
- * @return string $url The request URL.
249
- */
250
- public function getUrl()
251
- {
252
- return $this->baseComponent . $this->path . (count($this->queryParams) ? "?" . $this->buildQuery($this->queryParams) : '');
253
- }
254
-
255
- /**
256
- *
257
- * @return string $method HTTP Request Method.
258
- */
259
- public function getRequestMethod()
260
- {
261
- return $this->requestMethod;
262
- }
263
-
264
- /**
265
- *
266
- * @return array $headers HTTP Request Headers.
267
- */
268
- public function getRequestHeaders()
269
- {
270
- return $this->requestHeaders;
271
- }
272
-
273
- /**
274
- *
275
- * @param string $key
276
- * @return array|boolean Returns the requested HTTP header or
277
- * false if unavailable.
278
- */
279
- public function getRequestHeader($key)
280
- {
281
- return isset($this->requestHeaders[$key]) ? $this->requestHeaders[$key] : false;
282
- }
283
-
284
- /**
285
- *
286
- * @return string $postBody HTTP Request Body.
287
- */
288
- public function getPostBody()
289
- {
290
- return $this->postBody;
291
- }
292
-
293
- /**
294
- *
295
- * @param string $url
296
- * the url to set
297
- */
298
- public function setUrl($url)
299
- {
300
- if (substr($url, 0, 4) != 'http') {
301
- // Force the path become relative.
302
- if (substr($url, 0, 1) !== '/') {
303
- $url = '/' . $url;
304
- }
305
- }
306
- $parts = parse_url($url);
307
- if (isset($parts['host'])) {
308
- $this->baseComponent = sprintf("%s%s%s", isset($parts['scheme']) ? $parts['scheme'] . "://" : '', isset($parts['host']) ? $parts['host'] : '', isset($parts['port']) ? ":" . $parts['port'] : '');
309
- }
310
- $this->path = isset($parts['path']) ? $parts['path'] : '';
311
- $this->queryParams = array();
312
- if (isset($parts['query'])) {
313
- $this->queryParams = $this->parseQuery($parts['query']);
314
- }
315
- }
316
-
317
- /**
318
- *
319
- * @param string $method
320
- * Set he HTTP Method and normalize
321
- * it to upper-case, as required by HTTP.
322
- *
323
- */
324
- public function setRequestMethod($method)
325
- {
326
- $this->requestMethod = strtoupper($method);
327
- }
328
-
329
- /**
330
- *
331
- * @param array $headers
332
- * The HTTP request headers
333
- * to be set and normalized.
334
- */
335
- public function setRequestHeaders($headers)
336
- {
337
- $headers = Google_Utils::normalize($headers);
338
- if ($this->requestHeaders) {
339
- $headers = array_merge($this->requestHeaders, $headers);
340
- }
341
- $this->requestHeaders = $headers;
342
- }
343
-
344
- /**
345
- *
346
- * @param string $postBody
347
- * the postBody to set
348
- */
349
- public function setPostBody($postBody)
350
- {
351
- $this->postBody = $postBody;
352
- }
353
-
354
- /**
355
- * Set the User-Agent Header.
356
- *
357
- * @param string $userAgent
358
- * The User-Agent.
359
- */
360
- public function setUserAgent($userAgent)
361
- {
362
- $this->userAgent = $userAgent;
363
- if ($this->canGzip) {
364
- $this->userAgent = $userAgent . self::GZIP_UA;
365
- }
366
- }
367
-
368
- /**
369
- *
370
- * @return string The User-Agent.
371
- */
372
- public function getUserAgent()
373
- {
374
- return $this->userAgent;
375
- }
376
-
377
- /**
378
- * Returns a cache key depending on if this was an OAuth signed request
379
- * in which case it will use the non-signed url and access key to make this
380
- * cache key unique per authenticated user, else use the plain request url
381
- *
382
- * @return string The md5 hash of the request cache key.
383
- */
384
- public function getCacheKey()
385
- {
386
- $key = $this->getUrl();
387
- if (isset($this->accessKey)) {
388
- $key .= $this->accessKey;
389
- }
390
- if (isset($this->requestHeaders['authorization'])) {
391
- $key .= $this->requestHeaders['authorization'];
392
- }
393
- return md5($key);
394
- }
395
-
396
- public function getParsedCacheControl()
397
- {
398
- $parsed = array();
399
- $rawCacheControl = $this->getResponseHeader('cache-control');
400
- if ($rawCacheControl) {
401
- $rawCacheControl = str_replace(', ', '&', $rawCacheControl);
402
- parse_str($rawCacheControl, $parsed);
403
- }
404
- return $parsed;
405
- }
406
-
407
- /**
408
- *
409
- * @param string $id
410
- * @return string A string representation of the HTTP Request.
411
- */
412
- public function toBatchString($id)
413
- {
414
- $str = '';
415
- $path = parse_url($this->getUrl(), PHP_URL_PATH) . "?" . http_build_query($this->queryParams);
416
- $str .= $this->getRequestMethod() . ' ' . $path . " HTTP/1.1\n";
417
- foreach ($this->getRequestHeaders() as $key => $val) {
418
- $str .= $key . ': ' . $val . "\n";
419
- }
420
- if ($this->getPostBody()) {
421
- $str .= "\n";
422
- $str .= $this->getPostBody();
423
- }
424
- $headers = '';
425
- foreach ($this->batchHeaders as $key => $val) {
426
- $headers .= $key . ': ' . $val . "\n";
427
- }
428
- $headers .= "Content-ID: $id\n";
429
- $str = $headers . "\n" . $str;
430
- return $str;
431
- }
432
-
433
- /**
434
- * Our own version of parse_str that allows for multiple variables
435
- * with the same name.
436
- *
437
- * @param $string -
438
- * the query string to parse
439
- */
440
- private function parseQuery($string)
441
- {
442
- $return = array();
443
- $parts = explode("&", $string);
444
- foreach ($parts as $part) {
445
- list ($key, $value) = explode('=', $part, 2);
446
- $value = urldecode($value);
447
- if (isset($return[$key])) {
448
- if (! is_array($return[$key])) {
449
- $return[$key] = array(
450
- $return[$key]
451
- );
452
- }
453
- $return[$key][] = $value;
454
- } else {
455
- $return[$key] = $value;
456
- }
457
- }
458
- return $return;
459
- }
460
-
461
- /**
462
- * A version of build query that allows for multiple
463
- * duplicate keys.
464
- *
465
- * @param $parts array
466
- * of key value pairs
467
- */
468
- private function buildQuery($parts)
469
- {
470
- $return = array();
471
- foreach ($parts as $key => $value) {
472
- if (is_array($value)) {
473
- foreach ($value as $v) {
474
- $return[] = urlencode($key) . "=" . urlencode($v);
475
- }
476
- } else {
477
- $return[] = urlencode($key) . "=" . urlencode($value);
478
- }
479
- }
480
- return implode('&', $return);
481
- }
482
-
483
- /**
484
- * If we're POSTing and have no body to send, we can send the query
485
- * parameters in there, which avoids length issues with longer query
486
- * params.
487
- */
488
- public function maybeMoveParametersToBody()
489
- {
490
- if ($this->getRequestMethod() == "POST" && empty($this->postBody)) {
491
- $this->setRequestHeaders(array(
492
- "content-type" => "application/x-www-form-urlencoded; charset=UTF-8"
493
- ));
494
- $this->setPostBody($this->buildQuery($this->queryParams));
495
- $this->queryParams = array();
496
- }
497
- }
498
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/IO/Abstract.php DELETED
@@ -1,340 +0,0 @@
1
- <?php
2
- /*
3
- * Copyright 2013 Google Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- /**
18
- * Abstract IO base class
19
- */
20
- require_once realpath(dirname(__FILE__) . '/../../../autoload.php');
21
-
22
- abstract class Google_IO_Abstract
23
- {
24
-
25
- const UNKNOWN_CODE = 0;
26
-
27
- const FORM_URLENCODED = 'application/x-www-form-urlencoded';
28
-
29
- private static $CONNECTION_ESTABLISHED_HEADERS = array(
30
- "HTTP/1.0 200 Connection established\r\n\r\n",
31
- "HTTP/1.1 200 Connection established\r\n\r\n"
32
- );
33
-
34
- private static $ENTITY_HTTP_METHODS = array(
35
- "POST" => null,
36
- "PUT" => null
37
- );
38
-
39
- /**
40
- *
41
- * @var Google_Client
42
- */
43
- protected $client;
44
-
45
- public function __construct(Google_Client $client)
46
- {
47
- $this->client = $client;
48
- $timeout = $client->getClassConfig('Google_IO_Abstract', 'request_timeout_seconds');
49
- if ($timeout > 0) {
50
- $this->setTimeout($timeout);
51
- }
52
- }
53
-
54
- /**
55
- * Executes a Google_Http_Request and returns the resulting populated Google_Http_Request
56
- *
57
- * @param Google_Http_Request $request
58
- * @return Google_Http_Request $request
59
- */
60
- abstract public function executeRequest(Google_Http_Request $request);
61
-
62
- /**
63
- * Set options that update the transport implementation's behavior.
64
- *
65
- * @param
66
- * $options
67
- */
68
- abstract public function setOptions($options);
69
-
70
- /**
71
- * Set the maximum request time in seconds.
72
- *
73
- * @param $timeout in
74
- * seconds
75
- */
76
- abstract public function setTimeout($timeout);
77
-
78
- /**
79
- * Get the maximum request time in seconds.
80
- *
81
- * @return timeout in seconds
82
- */
83
- abstract public function getTimeout();
84
-
85
- /**
86
- * Test for the presence of a cURL header processing bug
87
- *
88
- * The cURL bug was present in versions prior to 7.30.0 and caused the header
89
- * length to be miscalculated when a "Connection established" header added by
90
- * some proxies was present.
91
- *
92
- * @return boolean
93
- */
94
- abstract protected function needsQuirk();
95
-
96
- /**
97
- * @visible for testing.
98
- * Cache the response to an HTTP request if it is cacheable.
99
- *
100
- * @param Google_Http_Request $request
101
- * @return bool Returns true if the insertion was successful.
102
- * Otherwise, return false.
103
- */
104
- public function setCachedRequest(Google_Http_Request $request)
105
- {
106
- // Determine if the request is cacheable.
107
- if (Google_Http_CacheParser::isResponseCacheable($request)) {
108
- $this->client->getCache()->set($request->getCacheKey(), $request);
109
- return true;
110
- }
111
- return false;
112
- }
113
-
114
- /**
115
- * Execute an HTTP Request
116
- *
117
- * @param Google_HttpRequest $request
118
- * the http request to be executed
119
- * @return Google_HttpRequest http request with the response http code,
120
- * response headers and response body filled in
121
- * @throws Google_IO_Exception on curl or IO error
122
- */
123
- public function makeRequest(Google_Http_Request $request)
124
- {
125
- // First, check to see if we have a valid cached version.
126
- $cached = $this->getCachedRequest($request);
127
- if ($cached !== false && $cached instanceof Google_Http_Request) {
128
- if (! $this->checkMustRevalidateCachedRequest($cached, $request)) {
129
- return $cached;
130
- }
131
- }
132
- if (array_key_exists($request->getRequestMethod(), self::$ENTITY_HTTP_METHODS)) {
133
- $request = $this->processEntityRequest($request);
134
- }
135
- list ($responseData, $responseHeaders, $respHttpCode) = $this->executeRequest($request);
136
- if ($respHttpCode == 304 && $cached) {
137
- // If the server responded NOT_MODIFIED, return the cached request.
138
- $this->updateCachedRequest($cached, $responseHeaders);
139
- return $cached;
140
- }
141
- if (! isset($responseHeaders['Date']) && ! isset($responseHeaders['date'])) {
142
- $responseHeaders['Date'] = date("r");
143
- }
144
- $request->setResponseHttpCode($respHttpCode);
145
- $request->setResponseHeaders($responseHeaders);
146
- $request->setResponseBody($responseData);
147
- // Store the request in cache (the function checks to see if the request
148
- // can actually be cached)
149
- $this->setCachedRequest($request);
150
- return $request;
151
- }
152
-
153
- /**
154
- * @visible for testing.
155
- *
156
- * @param Google_Http_Request $request
157
- * @return Google_Http_Request|bool Returns the cached object or
158
- * false if the operation was unsuccessful.
159
- */
160
- public function getCachedRequest(Google_Http_Request $request)
161
- {
162
- if (false === Google_Http_CacheParser::isRequestCacheable($request)) {
163
- return false;
164
- }
165
- return $this->client->getCache()->get($request->getCacheKey());
166
- }
167
-
168
- /**
169
- * @visible for testing
170
- * Process an http request that contains an enclosed entity.
171
- *
172
- * @param Google_Http_Request $request
173
- * @return Google_Http_Request Processed request with the enclosed entity.
174
- */
175
- public function processEntityRequest(Google_Http_Request $request)
176
- {
177
- $postBody = $request->getPostBody();
178
- $contentType = $request->getRequestHeader("content-type");
179
- // Set the default content-type as application/x-www-form-urlencoded.
180
- if (false == $contentType) {
181
- $contentType = self::FORM_URLENCODED;
182
- $request->setRequestHeaders(array(
183
- 'content-type' => $contentType
184
- ));
185
- }
186
- // Force the payload to match the content-type asserted in the header.
187
- if ($contentType == self::FORM_URLENCODED && is_array($postBody)) {
188
- $postBody = http_build_query($postBody, '', '&');
189
- $request->setPostBody($postBody);
190
- }
191
- // Make sure the content-length header is set.
192
- if (! $postBody || is_string($postBody)) {
193
- $postsLength = strlen($postBody);
194
- $request->setRequestHeaders(array(
195
- 'content-length' => $postsLength
196
- ));
197
- }
198
- return $request;
199
- }
200
-
201
- /**
202
- * Check if an already cached request must be revalidated, and if so update
203
- * the request with the correct ETag headers.
204
- *
205
- * @param Google_Http_Request $cached
206
- * A previously cached response.
207
- * @param Google_Http_Request $request
208
- * The outbound request.
209
- * return bool If the cached object needs to be revalidated, false if it is
210
- * still current and can be re-used.
211
- */
212
- protected function checkMustRevalidateCachedRequest($cached, $request)
213
- {
214
- if (Google_Http_CacheParser::mustRevalidate($cached)) {
215
- $addHeaders = array();
216
- if ($cached->getResponseHeader('etag')) {
217
- // [13.3.4] If an entity tag has been provided by the origin server,
218
- // we must use that entity tag in any cache-conditional request.
219
- $addHeaders['If-None-Match'] = $cached->getResponseHeader('etag');
220
- } elseif ($cached->getResponseHeader('date')) {
221
- $addHeaders['If-Modified-Since'] = $cached->getResponseHeader('date');
222
- }
223
- $request->setRequestHeaders($addHeaders);
224
- return true;
225
- } else {
226
- return false;
227
- }
228
- }
229
-
230
- /**
231
- * Update a cached request, using the headers from the last response.
232
- *
233
- * @param Google_HttpRequest $cached
234
- * A previously cached response.
235
- * @param
236
- * mixed Associative array of response headers from the last request.
237
- */
238
- protected function updateCachedRequest($cached, $responseHeaders)
239
- {
240
- if (isset($responseHeaders['connection'])) {
241
- $hopByHop = array_merge(self::$HOP_BY_HOP, explode(',', $responseHeaders['connection']));
242
- $endToEnd = array();
243
- foreach ($hopByHop as $key) {
244
- if (isset($responseHeaders[$key])) {
245
- $endToEnd[$key] = $responseHeaders[$key];
246
- }
247
- }
248
- $cached->setResponseHeaders($endToEnd);
249
- }
250
- }
251
-
252
- /**
253
- * Used by the IO lib and also the batch processing.
254
- *
255
- * @param
256
- * $respData
257
- * @param
258
- * $headerSize
259
- * @return array
260
- */
261
- public function parseHttpResponse($respData, $headerSize)
262
- {
263
- // check proxy header
264
- foreach (self::$CONNECTION_ESTABLISHED_HEADERS as $established_header) {
265
- if (stripos($respData, $established_header) !== false) {
266
- // existed, remove it
267
- $respData = str_ireplace($established_header, '', $respData);
268
- // Subtract the proxy header size unless the cURL bug prior to 7.30.0
269
- // is present which prevented the proxy header size from being taken into
270
- // account.
271
- if (! $this->needsQuirk()) {
272
- $headerSize -= strlen($established_header);
273
- }
274
- break;
275
- }
276
- }
277
- if ($headerSize) {
278
- $responseBody = substr($respData, $headerSize);
279
- $responseHeaders = substr($respData, 0, $headerSize);
280
- } else {
281
- $responseSegments = explode("\r\n\r\n", $respData, 2);
282
- $responseHeaders = $responseSegments[0];
283
- $responseBody = isset($responseSegments[1]) ? $responseSegments[1] : null;
284
- }
285
- $responseHeaders = $this->getHttpResponseHeaders($responseHeaders);
286
- return array(
287
- $responseHeaders,
288
- $responseBody
289
- );
290
- }
291
-
292
- /**
293
- * Parse out headers from raw headers
294
- *
295
- * @param
296
- * rawHeaders array or string
297
- * @return array
298
- */
299
- public function getHttpResponseHeaders($rawHeaders)
300
- {
301
- if (is_array($rawHeaders)) {
302
- return $this->parseArrayHeaders($rawHeaders);
303
- } else {
304
- return $this->parseStringHeaders($rawHeaders);
305
- }
306
- }
307
-
308
- private function parseStringHeaders($rawHeaders)
309
- {
310
- $headers = array();
311
- $responseHeaderLines = explode("\r\n", $rawHeaders);
312
- foreach ($responseHeaderLines as $headerLine) {
313
- if ($headerLine && strpos($headerLine, ':') !== false) {
314
- list ($header, $value) = explode(': ', $headerLine, 2);
315
- $header = strtolower($header);
316
- if (isset($headers[$header])) {
317
- $headers[$header] .= "\n" . $value;
318
- } else {
319
- $headers[$header] = $value;
320
- }
321
- }
322
- }
323
- return $headers;
324
- }
325
-
326
- private function parseArrayHeaders($rawHeaders)
327
- {
328
- $header_count = count($rawHeaders);
329
- $headers = array();
330
- for ($i = 0; $i < $header_count; $i ++) {
331
- $header = $rawHeaders[$i];
332
- // Times will have colons in - so we just want the first match.
333
- $header_parts = explode(': ', $header, 2);
334
- if (count($header_parts) == 2) {
335
- $headers[$header_parts[0]] = $header_parts[1];
336
- }
337
- }
338
- return $headers;
339
- }
340
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/IO/Curl.php DELETED
@@ -1,153 +0,0 @@
1
- <?php
2
- /*
3
- * Copyright 2014 Google Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- /**
18
- * Curl based implementation of Google_IO.
19
- *
20
- * @author Stuart Langley <slangley@google.com>
21
- */
22
- require_once realpath(dirname(__FILE__) . '/../../../autoload.php');
23
-
24
- class Google_IO_Curl extends Google_IO_Abstract
25
- {
26
- // cURL hex representation of version 7.30.0
27
- const NO_QUIRK_VERSION = 0x071E00;
28
-
29
- private $options = array();
30
-
31
- /**
32
- * Execute an HTTP Request
33
- *
34
- * @param Google_HttpRequest $request
35
- * the http request to be executed
36
- * @return Google_HttpRequest http request with the response http code,
37
- * response headers and response body filled in
38
- * @throws Google_IO_Exception on curl or IO error
39
- */
40
- public function executeRequest(Google_Http_Request $request)
41
- {
42
- $curl = curl_init();
43
- if ($request->getPostBody()) {
44
- curl_setopt($curl, CURLOPT_POSTFIELDS, $request->getPostBody());
45
- }
46
- $requestHeaders = $request->getRequestHeaders();
47
- if ($requestHeaders && is_array($requestHeaders)) {
48
- $curlHeaders = array();
49
- foreach ($requestHeaders as $k => $v) {
50
- $curlHeaders[] = "$k: $v";
51
- }
52
- curl_setopt($curl, CURLOPT_HTTPHEADER, $curlHeaders);
53
- }
54
- curl_setopt($curl, CURLOPT_URL, $request->getUrl());
55
- curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $request->getRequestMethod());
56
- curl_setopt($curl, CURLOPT_USERAGENT, $request->getUserAgent());
57
- curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false);
58
- curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
59
- // 1 is CURL_SSLVERSION_TLSv1, which is not always defined in PHP.
60
- curl_setopt($curl, CURLOPT_SSLVERSION, 1);
61
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
62
- curl_setopt($curl, CURLOPT_HEADER, true);
63
- if ($request->canGzip()) {
64
- curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');
65
- }
66
- $options = $this->client->getClassConfig('Google_IO_Curl', 'options');
67
- if (is_array($options)) {
68
- $this->setOptions($options);
69
- }
70
- foreach ($this->options as $key => $var) {
71
- curl_setopt($curl, $key, $var);
72
- }
73
- if (! isset($this->options[CURLOPT_CAINFO])) {
74
- curl_setopt($curl, CURLOPT_CAINFO, dirname(__FILE__) . '/cacerts.pem');
75
- }
76
- $this->client->getLogger()->debug('cURL request', array(
77
- 'url' => $request->getUrl(),
78
- 'method' => $request->getRequestMethod(),
79
- 'headers' => $requestHeaders,
80
- 'body' => $request->getPostBody()
81
- ));
82
- $response = curl_exec($curl);
83
- if ($response === false) {
84
- $error = curl_error($curl);
85
- $this->client->getLogger()->error('cURL ' . $error);
86
- throw new Google_IO_Exception($error);
87
- }
88
- $headerSize = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
89
- list ($responseHeaders, $responseBody) = $this->parseHttpResponse($response, $headerSize);
90
- $responseCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
91
- $this->client->getLogger()->debug('cURL response', array(
92
- 'code' => $responseCode,
93
- 'headers' => $responseHeaders,
94
- 'body' => $responseBody
95
- ));
96
- return array(
97
- $responseBody,
98
- $responseHeaders,
99
- $responseCode
100
- );
101
- }
102
-
103
- /**
104
- * Set options that update the transport implementation's behavior.
105
- *
106
- * @param
107
- * $options
108
- */
109
- public function setOptions($options)
110
- {
111
- $this->options = $options + $this->options;
112
- }
113
-
114
- /**
115
- * Set the maximum request time in seconds.
116
- *
117
- * @param $timeout in
118
- * seconds
119
- */
120
- public function setTimeout($timeout)
121
- {
122
- // Since this timeout is really for putting a bound on the time
123
- // we'll set them both to the same. If you need to specify a longer
124
- // CURLOPT_TIMEOUT, or a tigher CONNECTTIMEOUT, the best thing to
125
- // do is use the setOptions method for the values individually.
126
- $this->options[CURLOPT_CONNECTTIMEOUT] = $timeout;
127
- $this->options[CURLOPT_TIMEOUT] = $timeout;
128
- }
129
-
130
- /**
131
- * Get the maximum request time in seconds.
132
- *
133
- * @return timeout in seconds
134
- */
135
- public function getTimeout()
136
- {
137
- return $this->options[CURLOPT_TIMEOUT];
138
- }
139
-
140
- /**
141
- * Test for the presence of a cURL header processing bug
142
- *
143
- * {@inheritDoc}
144
- *
145
- * @return boolean
146
- */
147
- protected function needsQuirk()
148
- {
149
- $ver = curl_version();
150
- $versionNum = $ver['version_number'];
151
- return $versionNum < Google_IO_Curl::NO_QUIRK_VERSION;
152
- }
153
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/IO/Stream.php DELETED
@@ -1,202 +0,0 @@
1
- <?php
2
- /*
3
- * Copyright 2013 Google Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- /**
18
- * Http Streams based implementation of Google_IO.
19
- *
20
- * @author Stuart Langley <slangley@google.com>
21
- */
22
- require_once realpath(dirname(__FILE__) . '/../../../autoload.php');
23
-
24
- class Google_IO_Stream extends Google_IO_Abstract
25
- {
26
-
27
- const TIMEOUT = "timeout";
28
-
29
- const ZLIB = "compress.zlib://";
30
-
31
- private $options = array();
32
-
33
- private $trappedErrorNumber;
34
-
35
- private $trappedErrorString;
36
-
37
- private static $DEFAULT_HTTP_CONTEXT = array(
38
- "follow_location" => 0,
39
- "ignore_errors" => 1
40
- );
41
-
42
- private static $DEFAULT_SSL_CONTEXT = array(
43
- "verify_peer" => true
44
- );
45
-
46
- /**
47
- * Execute an HTTP Request
48
- *
49
- * @param Google_HttpRequest $request
50
- * the http request to be executed
51
- * @return Google_HttpRequest http request with the response http code,
52
- * response headers and response body filled in
53
- * @throws Google_IO_Exception on curl or IO error
54
- */
55
- public function executeRequest(Google_Http_Request $request)
56
- {
57
- $default_options = stream_context_get_options(stream_context_get_default());
58
- $requestHttpContext = array_key_exists('http', $default_options) ? $default_options['http'] : array();
59
- if ($request->getPostBody()) {
60
- $requestHttpContext["content"] = $request->getPostBody();
61
- }
62
- $requestHeaders = $request->getRequestHeaders();
63
- if ($requestHeaders && is_array($requestHeaders)) {
64
- $headers = "";
65
- foreach ($requestHeaders as $k => $v) {
66
- $headers .= "$k: $v\r\n";
67
- }
68
- $requestHttpContext["header"] = $headers;
69
- }
70
- $requestHttpContext["method"] = $request->getRequestMethod();
71
- $requestHttpContext["user_agent"] = $request->getUserAgent();
72
- $requestSslContext = array_key_exists('ssl', $default_options) ? $default_options['ssl'] : array();
73
- if (! array_key_exists("cafile", $requestSslContext)) {
74
- $requestSslContext["cafile"] = dirname(__FILE__) . '/cacerts.pem';
75
- }
76
- $options = array(
77
- "http" => array_merge(self::$DEFAULT_HTTP_CONTEXT, $requestHttpContext),
78
- "ssl" => array_merge(self::$DEFAULT_SSL_CONTEXT, $requestSslContext)
79
- );
80
- $context = stream_context_create($options);
81
- $url = $request->getUrl();
82
- if ($request->canGzip()) {
83
- $url = self::ZLIB . $url;
84
- }
85
- $this->client->getLogger()->debug('Stream request', array(
86
- 'url' => $url,
87
- 'method' => $request->getRequestMethod(),
88
- 'headers' => $requestHeaders,
89
- 'body' => $request->getPostBody()
90
- ));
91
- // We are trapping any thrown errors in this method only and
92
- // throwing an exception.
93
- $this->trappedErrorNumber = null;
94
- $this->trappedErrorString = null;
95
- // START - error trap.
96
- set_error_handler(array(
97
- $this,
98
- 'trapError'
99
- ));
100
- $fh = fopen($url, 'r', false, $context);
101
- restore_error_handler();
102
- // END - error trap.
103
- if ($this->trappedErrorNumber) {
104
- $error = sprintf("HTTP Error: Unable to connect: '%s'", $this->trappedErrorString);
105
- $this->client->getLogger()->error('Stream ' . $error);
106
- throw new Google_IO_Exception($error, $this->trappedErrorNumber);
107
- }
108
- $response_data = false;
109
- $respHttpCode = self::UNKNOWN_CODE;
110
- if ($fh) {
111
- if (isset($this->options[self::TIMEOUT])) {
112
- stream_set_timeout($fh, $this->options[self::TIMEOUT]);
113
- }
114
- $response_data = stream_get_contents($fh);
115
- fclose($fh);
116
- $respHttpCode = $this->getHttpResponseCode($http_response_header);
117
- }
118
- if (false === $response_data) {
119
- $error = sprintf("HTTP Error: Unable to connect: '%s'", $respHttpCode);
120
- $this->client->getLogger()->error('Stream ' . $error);
121
- throw new Google_IO_Exception($error, $respHttpCode);
122
- }
123
- $responseHeaders = $this->getHttpResponseHeaders($http_response_header);
124
- $this->client->getLogger()->debug('Stream response', array(
125
- 'code' => $respHttpCode,
126
- 'headers' => $responseHeaders,
127
- 'body' => $response_data
128
- ));
129
- return array(
130
- $response_data,
131
- $responseHeaders,
132
- $respHttpCode
133
- );
134
- }
135
-
136
- /**
137
- * Set options that update the transport implementation's behavior.
138
- *
139
- * @param
140
- * $options
141
- */
142
- public function setOptions($options)
143
- {
144
- $this->options = $options + $this->options;
145
- }
146
-
147
- /**
148
- * Method to handle errors, used for error handling around
149
- * stream connection methods.
150
- */
151
- public function trapError($errno, $errstr)
152
- {
153
- $this->trappedErrorNumber = $errno;
154
- $this->trappedErrorString = $errstr;
155
- }
156
-
157
- /**
158
- * Set the maximum request time in seconds.
159
- *
160
- * @param $timeout in
161
- * seconds
162
- */
163
- public function setTimeout($timeout)
164
- {
165
- $this->options[self::TIMEOUT] = $timeout;
166
- }
167
-
168
- /**
169
- * Get the maximum request time in seconds.
170
- *
171
- * @return timeout in seconds
172
- */
173
- public function getTimeout()
174
- {
175
- return $this->options[self::TIMEOUT];
176
- }
177
-
178
- /**
179
- * Test for the presence of a cURL header processing bug
180
- *
181
- * {@inheritDoc}
182
- *
183
- * @return boolean
184
- */
185
- protected function needsQuirk()
186
- {
187
- return false;
188
- }
189
-
190
- protected function getHttpResponseCode($response_headers)
191
- {
192
- $header_count = count($response_headers);
193
- for ($i = 0; $i < $header_count; $i ++) {
194
- $header = $response_headers[$i];
195
- if (strncasecmp("HTTP", $header, strlen("HTTP")) == 0) {
196
- $response = explode(' ', $header);
197
- return $response[1];
198
- }
199
- }
200
- return self::UNKNOWN_CODE;
201
- }
202
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/IO/cacerts.pem DELETED
@@ -1,2183 +0,0 @@
1
- # Issuer: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc.
2
- # Subject: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc.
3
- # Label: "GTE CyberTrust Global Root"
4
- # Serial: 421
5
- # MD5 Fingerprint: ca:3d:d3:68:f1:03:5c:d0:32:fa:b8:2b:59:e8:5a:db
6
- # SHA1 Fingerprint: 97:81:79:50:d8:1c:96:70:cc:34:d8:09:cf:79:44:31:36:7e:f4:74
7
- # SHA256 Fingerprint: a5:31:25:18:8d:21:10:aa:96:4b:02:c7:b7:c6:da:32:03:17:08:94:e5:fb:71:ff:fb:66:67:d5:e6:81:0a:36
8
- -----BEGIN CERTIFICATE-----
9
- MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYD
10
- VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv
11
- bHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv
12
- b3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1MQswCQYDVQQGEwJV
13
- UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU
14
- cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds
15
- b2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrH
16
- iM3dFw4usJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTS
17
- r41tiGeA5u2ylc9yMcqlHHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X4
18
- 04Wqk2kmhXBIgD8SFcd5tB8FLztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3r
19
- GwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l9
20
- 3PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0P
21
- lZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/
22
- -----END CERTIFICATE-----
23
-
24
- # Issuer: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division
25
- # Subject: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division
26
- # Label: "Thawte Server CA"
27
- # Serial: 1
28
- # MD5 Fingerprint: c5:70:c4:a2:ed:53:78:0c:c8:10:53:81:64:cb:d0:1d
29
- # SHA1 Fingerprint: 23:e5:94:94:51:95:f2:41:48:03:b4:d5:64:d2:a3:a3:f5:d8:8b:8c
30
- # SHA256 Fingerprint: b4:41:0b:73:e2:e6:ea:ca:47:fb:c4:2f:8f:a4:01:8a:f4:38:1d:c5:4c:fa:a8:44:50:46:1e:ed:09:45:4d:e9
31
- -----BEGIN CERTIFICATE-----
32
- MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkEx
33
- FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD
34
- VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv
35
- biBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEm
36
- MCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wHhcNOTYwODAx
37
- MDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT
38
- DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3
39
- dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl
40
- cyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3
41
- DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD
42
- gY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91
43
- yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCX
44
- L+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGj
45
- EzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG
46
- 7oWDTSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e
47
- QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZ
48
- qdq5snUb9kLy78fyGPmJvKP/iiMucEc=
49
- -----END CERTIFICATE-----
50
-
51
- # Issuer: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division
52
- # Subject: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division
53
- # Label: "Thawte Premium Server CA"
54
- # Serial: 1
55
- # MD5 Fingerprint: 06:9f:69:79:16:66:90:02:1b:8c:8c:a2:c3:07:6f:3a
56
- # SHA1 Fingerprint: 62:7f:8d:78:27:65:63:99:d2:7d:7f:90:44:c9:fe:b3:f3:3e:fa:9a
57
- # SHA256 Fingerprint: ab:70:36:36:5c:71:54:aa:29:c2:c2:9f:5d:41:91:16:3b:16:2a:22:25:01:13:57:d5:6d:07:ff:a7:bc:1f:72
58
- -----BEGIN CERTIFICATE-----
59
- MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx
60
- FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD
61
- VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv
62
- biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy
63
- dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t
64
- MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB
65
- MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG
66
- A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp
67
- b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl
68
- cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv
69
- bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE
70
- VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ
71
- ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR
72
- uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG
73
- 9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI
74
- hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM
75
- pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg==
76
- -----END CERTIFICATE-----
77
-
78
- # Issuer: O=Equifax OU=Equifax Secure Certificate Authority
79
- # Subject: O=Equifax OU=Equifax Secure Certificate Authority
80
- # Label: "Equifax Secure CA"
81
- # Serial: 903804111
82
- # MD5 Fingerprint: 67:cb:9d:c0:13:24:8a:82:9b:b2:17:1e:d1:1b:ec:d4
83
- # SHA1 Fingerprint: d2:32:09:ad:23:d3:14:23:21:74:e4:0d:7f:9d:62:13:97:86:63:3a
84
- # SHA256 Fingerprint: 08:29:7a:40:47:db:a2:36:80:c7:31:db:6e:31:76:53:ca:78:48:e1:be:bd:3a:0b:01:79:a7:07:f9:2c:f1:78
85
- -----BEGIN CERTIFICATE-----
86
- MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV
87
- UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy
88
- dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1
89
- MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx
90
- dWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B
91
- AQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f
92
- BeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A
93
- cJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC
94
- AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ
95
- MA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm
96
- aWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw
97
- ODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj
98
- IBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF
99
- MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA
100
- A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y
101
- 7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh
102
- 1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4
103
- -----END CERTIFICATE-----
104
-
105
- # Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority
106
- # Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority
107
- # Label: "Verisign Class 3 Public Primary Certification Authority"
108
- # Serial: 149843929435818692848040365716851702463
109
- # MD5 Fingerprint: 10:fc:63:5d:f6:26:3e:0d:f3:25:be:5f:79:cd:67:67
110
- # SHA1 Fingerprint: 74:2c:31:92:e6:07:e4:24:eb:45:49:54:2b:e1:bb:c5:3e:61:74:e2
111
- # SHA256 Fingerprint: e7:68:56:34:ef:ac:f6:9a:ce:93:9a:6b:25:5b:7b:4f:ab:ef:42:93:5b:50:a2:65:ac:b5:cb:60:27:e4:4e:70
112
- -----BEGIN CERTIFICATE-----
113
- MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG
114
- A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz
115
- cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2
116
- MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV
117
- BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt
118
- YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN
119
- ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE
120
- BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is
121
- I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G
122
- CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do
123
- lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc
124
- AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k
125
- -----END CERTIFICATE-----
126
-
127
- # Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network
128
- # Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network
129
- # Label: "Verisign Class 3 Public Primary Certification Authority - G2"
130
- # Serial: 167285380242319648451154478808036881606
131
- # MD5 Fingerprint: a2:33:9b:4c:74:78:73:d4:6c:e7:c1:f3:8d:cb:5c:e9
132
- # SHA1 Fingerprint: 85:37:1c:a6:e5:50:14:3d:ce:28:03:47:1b:de:3a:09:e8:f8:77:0f
133
- # SHA256 Fingerprint: 83:ce:3c:12:29:68:8a:59:3d:48:5f:81:97:3c:0f:91:95:43:1e:da:37:cc:5e:36:43:0e:79:c7:a8:88:63:8b
134
- -----BEGIN CERTIFICATE-----
135
- MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ
136
- BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh
137
- c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy
138
- MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp
139
- emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X
140
- DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw
141
- FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg
142
- UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo
143
- YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5
144
- MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB
145
- AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4
146
- pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0
147
- 13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID
148
- AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk
149
- U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i
150
- F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY
151
- oJ2daZH9
152
- -----END CERTIFICATE-----
153
-
154
- # Issuer: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA
155
- # Subject: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA
156
- # Label: "GlobalSign Root CA"
157
- # Serial: 4835703278459707669005204
158
- # MD5 Fingerprint: 3e:45:52:15:09:51:92:e1:b7:5d:37:9f:b1:87:29:8a
159
- # SHA1 Fingerprint: b1:bc:96:8b:d4:f4:9d:62:2a:a8:9a:81:f2:15:01:52:a4:1d:82:9c
160
- # SHA256 Fingerprint: eb:d4:10:40:e4:bb:3e:c7:42:c9:e3:81:d3:1e:f2:a4:1a:48:b6:68:5c:96:e7:ce:f3:c1:df:6c:d4:33:1c:99
161
- -----BEGIN CERTIFICATE-----
162
- MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG
163
- A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv
164
- b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw
165
- MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i
166
- YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT
167
- aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ
168
- jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp
169
- xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp
170
- 1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG
171
- snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ
172
- U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8
173
- 9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E
174
- BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B
175
- AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz
176
- yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE
177
- 38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP
178
- AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad
179
- DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME
180
- HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
181
- -----END CERTIFICATE-----
182
-
183
- # Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R2
184
- # Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R2
185
- # Label: "GlobalSign Root CA - R2"
186
- # Serial: 4835703278459682885658125
187
- # MD5 Fingerprint: 94:14:77:7e:3e:5e:fd:8f:30:bd:41:b0:cf:e7:d0:30
188
- # SHA1 Fingerprint: 75:e0:ab:b6:13:85:12:27:1c:04:f8:5f:dd:de:38:e4:b7:24:2e:fe
189
- # SHA256 Fingerprint: ca:42:dd:41:74:5f:d0:b8:1e:b9:02:36:2c:f9:d8:bf:71:9d:a1:bd:1b:1e:fc:94:6f:5b:4c:99:f4:2c:1b:9e
190
- -----BEGIN CERTIFICATE-----
191
- MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4G
192
- A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNp
193
- Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1
194
- MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEG
195
- A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI
196
- hvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6ErPL
197
- v4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8
198
- eoLrvozps6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklq
199
- tTleiDTsvHgMCJiEbKjNS7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzd
200
- C9XZzPnqJworc5HGnRusyMvo4KD0L5CLTfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pa
201
- zq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6CygPCm48CAwEAAaOBnDCB
202
- mTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm+IH
203
- V2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5n
204
- bG9iYWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG
205
- 3lm0mi3f3BmGLjANBgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4Gs
206
- J0/WwbgcQ3izDJr86iw8bmEbTUsp9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO
207
- 291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu01yiPqFbQfXf5WRDLenVOavS
208
- ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd
209
- AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
210
- TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
211
- -----END CERTIFICATE-----
212
-
213
- # Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority
214
- # Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority
215
- # Label: "ValiCert Class 1 VA"
216
- # Serial: 1
217
- # MD5 Fingerprint: 65:58:ab:15:ad:57:6c:1e:a8:a7:b5:69:ac:bf:ff:eb
218
- # SHA1 Fingerprint: e5:df:74:3c:b6:01:c4:9b:98:43:dc:ab:8c:e8:6a:81:10:9f:e4:8e
219
- # SHA256 Fingerprint: f4:c1:49:55:1a:30:13:a3:5b:c7:bf:fe:17:a7:f3:44:9b:c1:ab:5b:5a:0a:e7:4b:06:c2:3b:90:00:4c:01:04
220
- -----BEGIN CERTIFICATE-----
221
- MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0
222
- IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz
223
- BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y
224
- aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG
225
- 9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIyMjM0OFoXDTE5MDYy
226
- NTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y
227
- azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
228
- YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw
229
- Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl
230
- cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9Y
231
- LqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIiGQj4/xEjm84H9b9pGib+
232
- TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCmDuJWBQ8Y
233
- TfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0
234
- LBwGlN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLW
235
- I8sogTLDAHkY7FkXicnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPw
236
- nXS3qT6gpf+2SQMT2iLM7XGCK5nPOrf1LXLI
237
- -----END CERTIFICATE-----
238
-
239
- # Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority
240
- # Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority
241
- # Label: "ValiCert Class 2 VA"
242
- # Serial: 1
243
- # MD5 Fingerprint: a9:23:75:9b:ba:49:36:6e:31:c2:db:f2:e7:66:ba:87
244
- # SHA1 Fingerprint: 31:7a:2a:d0:7f:2b:33:5e:f5:a1:c3:4e:4b:57:e8:b7:d8:f1:fc:a6
245
- # SHA256 Fingerprint: 58:d0:17:27:9c:d4:dc:63:ab:dd:b1:96:a6:c9:90:6c:30:c4:e0:87:83:ea:e8:c1:60:99:54:d6:93:55:59:6b
246
- -----BEGIN CERTIFICATE-----
247
- MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0
248
- IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz
249
- BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y
250
- aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG
251
- 9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy
252
- NjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y
253
- azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
254
- YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw
255
- Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl
256
- cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY
257
- dA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9
258
- WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS
259
- v4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v
260
- UJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu
261
- IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC
262
- W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd
263
- -----END CERTIFICATE-----
264
-
265
- # Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority
266
- # Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority
267
- # Label: "RSA Root Certificate 1"
268
- # Serial: 1
269
- # MD5 Fingerprint: a2:6f:53:b7:ee:40:db:4a:68:e7:fa:18:d9:10:4b:72
270
- # SHA1 Fingerprint: 69:bd:8c:f4:9c:d3:00:fb:59:2e:17:93:ca:55:6a:f3:ec:aa:35:fb
271
- # SHA256 Fingerprint: bc:23:f9:8a:31:3c:b9:2d:e3:bb:fc:3a:5a:9f:44:61:ac:39:49:4c:4a:e1:5a:9e:9d:f1:31:e9:9b:73:01:9a
272
- -----BEGIN CERTIFICATE-----
273
- MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0
274
- IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz
275
- BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y
276
- aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG
277
- 9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMjIzM1oXDTE5MDYy
278
- NjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y
279
- azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
280
- YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw
281
- Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl
282
- cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjmFGWHOjVsQaBalfD
283
- cnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td3zZxFJmP3MKS8edgkpfs
284
- 2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89HBFx1cQqY
285
- JJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliE
286
- Zwgs3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJ
287
- n0WuPIqpsHEzXcjFV9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/A
288
- PhmcGcwTTYJBtYze4D1gCCAPRX5ron+jjBXu
289
- -----END CERTIFICATE-----
290
-
291
- # Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only
292
- # Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only
293
- # Label: "Verisign Class 3 Public Primary Certification Authority - G3"
294
- # Serial: 206684696279472310254277870180966723415
295
- # MD5 Fingerprint: cd:68:b6:a7:c7:c4:ce:75:e0:1d:4f:57:44:61:92:09
296
- # SHA1 Fingerprint: 13:2d:0d:45:53:4b:69:97:cd:b2:d5:c3:39:e2:55:76:60:9b:5c:c6
297
- # SHA256 Fingerprint: eb:04:cf:5e:b1:f3:9a:fa:76:2f:2b:b1:20:f2:96:cb:a5:20:c1:b9:7d:b1:58:95:65:b8:1c:b9:a1:7b:72:44
298
- -----BEGIN CERTIFICATE-----
299
- MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQsw
300
- CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl
301
- cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu
302
- LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT
303
- aWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
304
- dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD
305
- VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT
306
- aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ
307
- bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu
308
- IENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg
309
- LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMu6nFL8eB8aHm8b
310
- N3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1EUGO+i2t
311
- KmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGu
312
- kxUccLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBm
313
- CC+Vk7+qRy+oRpfwEuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJ
314
- Xwzw3sJ2zq/3avL6QaaiMxTJ5Xpj055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWu
315
- imi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAERSWwauSCPc/L8my/uRan2Te
316
- 2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5fj267Cz3qWhMe
317
- DGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC
318
- /Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565p
319
- F4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGt
320
- TxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ==
321
- -----END CERTIFICATE-----
322
-
323
- # Issuer: CN=VeriSign Class 4 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only
324
- # Subject: CN=VeriSign Class 4 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only
325
- # Label: "Verisign Class 4 Public Primary Certification Authority - G3"
326
- # Serial: 314531972711909413743075096039378935511
327
- # MD5 Fingerprint: db:c8:f2:27:2e:b1:ea:6a:29:23:5d:fe:56:3e:33:df
328
- # SHA1 Fingerprint: c8:ec:8c:87:92:69:cb:4b:ab:39:e9:8d:7e:57:67:f3:14:95:73:9d
329
- # SHA256 Fingerprint: e3:89:36:0d:0f:db:ae:b3:d2:50:58:4b:47:30:31:4e:22:2f:39:c1:56:a0:20:14:4e:8d:96:05:61:79:15:06
330
- -----BEGIN CERTIFICATE-----
331
- MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQsw
332
- CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl
333
- cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu
334
- LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT
335
- aWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
336
- dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD
337
- VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT
338
- aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ
339
- bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu
340
- IENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg
341
- LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK3LpRFpxlmr8Y+1
342
- GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaStBO3IFsJ
343
- +mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0Gbd
344
- U6LM8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLm
345
- NxdLMEYH5IBtptiWLugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XY
346
- ufTsgsbSPZUd5cBPhMnZo0QoBmrXRazwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/
347
- ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAj/ola09b5KROJ1WrIhVZPMq1
348
- CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXttmhwwjIDLk5Mq
349
- g6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm
350
- fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c
351
- 2NU8Qh0XwRJdRTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/
352
- bLvSHgCwIe34QWKCudiyxLtGUPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg==
353
- -----END CERTIFICATE-----
354
-
355
- # Issuer: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited
356
- # Subject: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited
357
- # Label: "Entrust.net Secure Server CA"
358
- # Serial: 927650371
359
- # MD5 Fingerprint: df:f2:80:73:cc:f1:e6:61:73:fc:f5:42:e9:c5:7c:ee
360
- # SHA1 Fingerprint: 99:a6:9b:e6:1a:fe:88:6b:4d:2b:82:00:7c:b8:54:fc:31:7e:15:39
361
- # SHA256 Fingerprint: 62:f2:40:27:8c:56:4c:4d:d8:bf:7d:9d:4f:6f:36:6e:a8:94:d2:2f:5f:34:d9:89:a9:83:ac:ec:2f:ff:ed:50
362
- -----BEGIN CERTIFICATE-----
363
- MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC
364
- VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u
365
- ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc
366
- KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u
367
- ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1
368
- MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE
369
- ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j
370
- b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF
371
- bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg
372
- U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA
373
- A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/
374
- I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3
375
- wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC
376
- AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb
377
- oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5
378
- BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p
379
- dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk
380
- MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp
381
- b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu
382
- dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0
383
- MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi
384
- E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa
385
- MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI
386
- hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN
387
- 95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd
388
- 2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI=
389
- -----END CERTIFICATE-----
390
-
391
- # Issuer: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited
392
- # Subject: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited
393
- # Label: "Entrust.net Premium 2048 Secure Server CA"
394
- # Serial: 946059622
395
- # MD5 Fingerprint: ba:21:ea:20:d6:dd:db:8f:c1:57:8b:40:ad:a1:fc:fc
396
- # SHA1 Fingerprint: 80:1d:62:d0:7b:44:9d:5c:5c:03:5c:98:ea:61:fa:44:3c:2a:58:fe
397
- # SHA256 Fingerprint: d1:c3:39:ea:27:84:eb:87:0f:93:4f:c5:63:4e:4a:a9:ad:55:05:01:64:01:f2:64:65:d3:7a:57:46:63:35:9f
398
- -----BEGIN CERTIFICATE-----
399
- MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML
400
- RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp
401
- bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5
402
- IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp
403
- ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0xOTEy
404
- MjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3
405
- LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp
406
- YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG
407
- A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp
408
- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq
409
- K0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe
410
- sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX
411
- MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT
412
- XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/
413
- HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH
414
- 4QIDAQABo3QwcjARBglghkgBhvhCAQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGA
415
- vtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdERgL7YibkIozH5oSQJFrlwMB0G
416
- CSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEA
417
- WUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo
418
- oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQ
419
- h7A6tcOdBTcSo8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18
420
- f3v/rxzP5tsHrV7bhZ3QKw0z2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfN
421
- B/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjXOP/swNlQ8C5LWK5Gb9Auw2DaclVy
422
- vUxFnmG6v4SBkgPR0ml8xQ==
423
- -----END CERTIFICATE-----
424
-
425
- # Issuer: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust
426
- # Subject: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust
427
- # Label: "Baltimore CyberTrust Root"
428
- # Serial: 33554617
429
- # MD5 Fingerprint: ac:b6:94:a5:9c:17:e0:d7:91:52:9b:b1:97:06:a6:e4
430
- # SHA1 Fingerprint: d4:de:20:d0:5e:66:fc:53:fe:1a:50:88:2c:78:db:28:52:ca:e4:74
431
- # SHA256 Fingerprint: 16:af:57:a9:f6:76:b0:ab:12:60:95:aa:5e:ba:de:f2:2a:b3:11:19:d6:44:ac:95:cd:4b:93:db:f3:f2:6a:eb
432
- -----BEGIN CERTIFICATE-----
433
- MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ
434
- RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD
435
- VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX
436
- DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y
437
- ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy
438
- VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr
439
- mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr
440
- IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK
441
- mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu
442
- XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy
443
- dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye
444
- jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1
445
- BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3
446
- DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92
447
- 9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx
448
- jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0
449
- Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz
450
- ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS
451
- R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
452
- -----END CERTIFICATE-----
453
-
454
- # Issuer: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc.
455
- # Subject: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc.
456
- # Label: "Equifax Secure Global eBusiness CA"
457
- # Serial: 1
458
- # MD5 Fingerprint: 8f:5d:77:06:27:c4:98:3c:5b:93:78:e7:d7:7d:9b:cc
459
- # SHA1 Fingerprint: 7e:78:4a:10:1c:82:65:cc:2d:e1:f1:6d:47:b4:40:ca:d9:0a:19:45
460
- # SHA256 Fingerprint: 5f:0b:62:ea:b5:e3:53:ea:65:21:65:16:58:fb:b6:53:59:f4:43:28:0a:4a:fb:d1:04:d7:7d:10:f9:f0:4c:07
461
- -----BEGIN CERTIFICATE-----
462
- MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEc
463
- MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBT
464
- ZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIw
465
- MDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0VxdWlmYXggU2Vj
466
- dXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEdsb2JhbCBlQnVzaW5l
467
- c3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRVPEnC
468
- UdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc
469
- 58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/
470
- o5brhTMhHD4ePmBudpxnhcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAH
471
- MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1dr
472
- aGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUA
473
- A4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkA
474
- Z70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv
475
- 8qIYNMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV
476
- -----END CERTIFICATE-----
477
-
478
- # Issuer: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc.
479
- # Subject: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc.
480
- # Label: "Equifax Secure eBusiness CA 1"
481
- # Serial: 4
482
- # MD5 Fingerprint: 64:9c:ef:2e:44:fc:c6:8f:52:07:d0:51:73:8f:cb:3d
483
- # SHA1 Fingerprint: da:40:18:8b:91:89:a3:ed:ee:ae:da:97:fe:2f:9d:f5:b7:d1:8a:41
484
- # SHA256 Fingerprint: cf:56:ff:46:a4:a1:86:10:9d:d9:65:84:b5:ee:b5:8a:51:0c:42:75:b0:e5:f9:4f:40:bb:ae:86:5e:19:f6:73
485
- -----BEGIN CERTIFICATE-----
486
- MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEc
487
- MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBT
488
- ZWN1cmUgZUJ1c2luZXNzIENBLTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQw
489
- MDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5j
490
- LjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENBLTEwgZ8wDQYJ
491
- KoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ1MRo
492
- RvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBu
493
- WqDZQu4aIZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKw
494
- Env+j6YDAgMBAAGjZjBkMBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTAD
495
- AQH/MB8GA1UdIwQYMBaAFEp4MlIR21kWNl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRK
496
- eDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQFAAOBgQB1W6ibAxHm6VZM
497
- zfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5lSE/9dR+
498
- WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN
499
- /Bf+KpYrtWKmpj29f5JZzVoqgrI3eQ==
500
- -----END CERTIFICATE-----
501
-
502
- # Issuer: O=Equifax Secure OU=Equifax Secure eBusiness CA-2
503
- # Subject: O=Equifax Secure OU=Equifax Secure eBusiness CA-2
504
- # Label: "Equifax Secure eBusiness CA 2"
505
- # Serial: 930140085
506
- # MD5 Fingerprint: aa:bf:bf:64:97:da:98:1d:6f:c6:08:3a:95:70:33:ca
507
- # SHA1 Fingerprint: 39:4f:f6:85:0b:06:be:52:e5:18:56:cc:10:e1:80:e8:82:b3:85:cc
508
- # SHA256 Fingerprint: 2f:27:4e:48:ab:a4:ac:7b:76:59:33:10:17:75:50:6d:c3:0e:e3:8e:f6:ac:d5:c0:49:32:cf:e0:41:23:42:20
509
- -----BEGIN CERTIFICATE-----
510
- MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV
511
- UzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2Vj
512
- dXJlIGVCdXNpbmVzcyBDQS0yMB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0
513
- NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkVxdWlmYXggU2VjdXJlMSYwJAYD
514
- VQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCBnzANBgkqhkiG9w0B
515
- AQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn2Z0G
516
- vxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/
517
- BPO3QSQ5BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0C
518
- AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEX
519
- MBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJl
520
- IGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTkw
521
- NjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9euSBIplBq
522
- y/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQF
523
- MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA
524
- A4GBAAyGgq3oThr1jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy
525
- 0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1
526
- E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUmV+GRMOrN
527
- -----END CERTIFICATE-----
528
-
529
- # Issuer: CN=AddTrust Class 1 CA Root O=AddTrust AB OU=AddTrust TTP Network
530
- # Subject: CN=AddTrust Class 1 CA Root O=AddTrust AB OU=AddTrust TTP Network
531
- # Label: "AddTrust Low-Value Services Root"
532
- # Serial: 1
533
- # MD5 Fingerprint: 1e:42:95:02:33:92:6b:b9:5f:c0:7f:da:d6:b2:4b:fc
534
- # SHA1 Fingerprint: cc:ab:0e:a0:4c:23:01:d6:69:7b:dd:37:9f:cd:12:eb:24:e3:94:9d
535
- # SHA256 Fingerprint: 8c:72:09:27:9a:c0:4e:27:5e:16:d0:7f:d3:b7:75:e8:01:54:b5:96:80:46:e3:1f:52:dd:25:76:63:24:e9:a7
536
- -----BEGIN CERTIFICATE-----
537
- MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEU
538
- MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3
539
- b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMw
540
- MTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
541
- QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYD
542
- VQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUA
543
- A4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ul
544
- CDtbKRY654eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6n
545
- tGO0/7Gcrjyvd7ZWxbWroulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyl
546
- dI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1Zmne3yzxbrww2ywkEtvrNTVokMsAsJch
547
- PXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJuiGMx1I4S+6+JNM3GOGvDC
548
- +Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8wHQYDVR0O
549
- BBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8E
550
- BTADAQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBl
551
- MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFk
552
- ZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENB
553
- IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxtZBsfzQ3duQH6lmM0MkhHma6X
554
- 7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0PhiVYrqW9yTkkz
555
- 43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY
556
- eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJl
557
- pz/+0WatC7xrmYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOA
558
- WiFeIc9TVPC6b4nbqKqVz4vjccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk=
559
- -----END CERTIFICATE-----
560
-
561
- # Issuer: CN=AddTrust External CA Root O=AddTrust AB OU=AddTrust External TTP Network
562
- # Subject: CN=AddTrust External CA Root O=AddTrust AB OU=AddTrust External TTP Network
563
- # Label: "AddTrust External Root"
564
- # Serial: 1
565
- # MD5 Fingerprint: 1d:35:54:04:85:78:b0:3f:42:42:4d:bf:20:73:0a:3f
566
- # SHA1 Fingerprint: 02:fa:f3:e2:91:43:54:68:60:78:57:69:4d:f5:e4:5b:68:85:18:68
567
- # SHA256 Fingerprint: 68:7f:a4:51:38:22:78:ff:f0:c8:b1:1f:8d:43:d5:76:67:1c:6e:b2:bc:ea:b4:13:fb:83:d9:65:d0:6d:2f:f2
568
- -----BEGIN CERTIFICATE-----
569
- MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU
570
- MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs
571
- IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290
572
- MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux
573
- FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h
574
- bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v
575
- dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt
576
- H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9
577
- uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX
578
- mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX
579
- a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN
580
- E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0
581
- WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD
582
- VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0
583
- Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU
584
- cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx
585
- IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN
586
- AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH
587
- YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
588
- 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC
589
- Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX
590
- c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a
591
- mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
592
- -----END CERTIFICATE-----
593
-
594
- # Issuer: CN=AddTrust Public CA Root O=AddTrust AB OU=AddTrust TTP Network
595
- # Subject: CN=AddTrust Public CA Root O=AddTrust AB OU=AddTrust TTP Network
596
- # Label: "AddTrust Public Services Root"
597
- # Serial: 1
598
- # MD5 Fingerprint: c1:62:3e:23:c5:82:73:9c:03:59:4b:2b:e9:77:49:7f
599
- # SHA1 Fingerprint: 2a:b6:28:48:5e:78:fb:f3:ad:9e:79:10:dd:6b:df:99:72:2c:96:e5
600
- # SHA256 Fingerprint: 07:91:ca:07:49:b2:07:82:aa:d3:c7:d7:bd:0c:df:c9:48:58:35:84:3e:b2:d7:99:60:09:ce:43:ab:6c:69:27
601
- -----BEGIN CERTIFICATE-----
602
- MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEU
603
- MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3
604
- b3JrMSAwHgYDVQQDExdBZGRUcnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAx
605
- MDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtB
606
- ZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5ldHdvcmsxIDAeBgNV
607
- BAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOC
608
- AQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV
609
- 6tsfSlbunyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nX
610
- GCwwfQ56HmIexkvA/X1id9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnP
611
- dzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSGAa2Il+tmzV7R/9x98oTaunet3IAIx6eH
612
- 1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAwHM+A+WD+eeSI8t0A65RF
613
- 62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0GA1UdDgQW
614
- BBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUw
615
- AwEB/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDEL
616
- MAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRU
617
- cnVzdCBUVFAgTmV0d29yazEgMB4GA1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJv
618
- b3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4JNojVhaTdt02KLmuG7jD8WS6
619
- IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL+YPoRNWyQSW/
620
- iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao
621
- GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh
622
- 4SINhwBk/ox9Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQm
623
- XiLsks3/QppEIW1cxeMiHV9HEufOX1362KqxMy3ZdvJOOjMMK7MtkAY=
624
- -----END CERTIFICATE-----
625
-
626
- # Issuer: CN=AddTrust Qualified CA Root O=AddTrust AB OU=AddTrust TTP Network
627
- # Subject: CN=AddTrust Qualified CA Root O=AddTrust AB OU=AddTrust TTP Network
628
- # Label: "AddTrust Qualified Certificates Root"
629
- # Serial: 1
630
- # MD5 Fingerprint: 27:ec:39:47:cd:da:5a:af:e2:9a:01:65:21:a9:4c:bb
631
- # SHA1 Fingerprint: 4d:23:78:ec:91:95:39:b5:00:7f:75:8f:03:3b:21:1e:c5:4d:8b:cf
632
- # SHA256 Fingerprint: 80:95:21:08:05:db:4b:bc:35:5e:44:28:d8:fd:6e:c2:cd:e3:ab:5f:b9:7a:99:42:98:8e:b8:f4:dc:d0:60:16
633
- -----BEGIN CERTIFICATE-----
634
- MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEU
635
- MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3
636
- b3JrMSMwIQYDVQQDExpBZGRUcnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1
637
- MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcxCzAJBgNVBAYTAlNFMRQwEgYDVQQK
638
- EwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5ldHdvcmsxIzAh
639
- BgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG9w0B
640
- AQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwq
641
- xBb/4Oxx64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G
642
- 87B4pfYOQnrjfxvM0PC3KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i
643
- 2O+tCBGaKZnhqkRFmhJePp1tUvznoD1oL/BLcHwTOK28FSXx1s6rosAx1i+f4P8U
644
- WfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GRwVY18BTcZTYJbqukB8c1
645
- 0cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HUMIHRMB0G
646
- A1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0T
647
- AQH/BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6Fr
648
- pGkwZzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQL
649
- ExRBZGRUcnVzdCBUVFAgTmV0d29yazEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlm
650
- aWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBABmrder4i2VhlRO6aQTv
651
- hsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxGGuoYQ992zPlm
652
- hpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X
653
- dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3
654
- P6CxB9bpT9zeRXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9Y
655
- iQBCYz95OdBEsIJuQRno3eDBiFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5no
656
- xqE=
657
- -----END CERTIFICATE-----
658
-
659
- # Issuer: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc.
660
- # Subject: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc.
661
- # Label: "Entrust Root Certification Authority"
662
- # Serial: 1164660820
663
- # MD5 Fingerprint: d6:a5:c3:ed:5d:dd:3e:00:c1:3d:87:92:1f:1d:3f:e4
664
- # SHA1 Fingerprint: b3:1e:b1:b7:40:e3:6c:84:02:da:dc:37:d4:4d:f5:d4:67:49:52:f9
665
- # SHA256 Fingerprint: 73:c1:76:43:4f:1b:c6:d5:ad:f4:5b:0e:76:e7:27:28:7c:8d:e5:76:16:c1:e6:e6:14:1a:2b:2c:bc:7d:8e:4c
666
- -----BEGIN CERTIFICATE-----
667
- MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMC
668
- VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0
669
- Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW
670
- KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl
671
- cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0MloXDTI2MTEyNzIw
672
- NTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMTkw
673
- NwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSBy
674
- ZWZlcmVuY2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNV
675
- BAMTJEVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJ
676
- KoZIhvcNAQEBBQADggEPADCCAQoCggEBALaVtkNC+sZtKm9I35RMOVcF7sN5EUFo
677
- Nu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYszA9u3g3s+IIRe7bJWKKf4
678
- 4LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOwwCj0Yzfv9
679
- KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGI
680
- rb68j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi
681
- 94DkZfs0Nw4pgHBNrziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOB
682
- sDCBrTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAi
683
- gA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1MzQyWjAfBgNVHSMEGDAWgBRo
684
- kORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DHhmak8fdLQ/uE
685
- vW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA
686
- A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9t
687
- O1KzKtvn1ISMY/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6Zua
688
- AGAT/3B+XxFNSRuzFVJ7yVTav52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP
689
- 9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTSW3iDVuycNsMm4hH2Z0kdkquM++v/
690
- eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0tHuu2guQOHXvgR1m
691
- 0vdXcDazv/wor3ElhVsT/h5/WrQ8
692
- -----END CERTIFICATE-----
693
-
694
- # Issuer: CN=GeoTrust Global CA O=GeoTrust Inc.
695
- # Subject: CN=GeoTrust Global CA O=GeoTrust Inc.
696
- # Label: "GeoTrust Global CA"
697
- # Serial: 144470
698
- # MD5 Fingerprint: f7:75:ab:29:fb:51:4e:b7:77:5e:ff:05:3c:99:8e:f5
699
- # SHA1 Fingerprint: de:28:f4:a4:ff:e5:b9:2f:a3:c5:03:d1:a3:49:a7:f9:96:2a:82:12
700
- # SHA256 Fingerprint: ff:85:6a:2d:25:1d:cd:88:d3:66:56:f4:50:12:67:98:cf:ab:aa:de:40:79:9c:72:2d:e4:d2:b5:db:36:a7:3a
701
- -----BEGIN CERTIFICATE-----
702
- MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT
703
- MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i
704
- YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG
705
- EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg
706
- R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9
707
- 9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq
708
- fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv
709
- iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU
710
- 1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+
711
- bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW
712
- MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA
713
- ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l
714
- uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn
715
- Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS
716
- tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF
717
- PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un
718
- hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV
719
- 5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw==
720
- -----END CERTIFICATE-----
721
-
722
- # Issuer: CN=GeoTrust Global CA 2 O=GeoTrust Inc.
723
- # Subject: CN=GeoTrust Global CA 2 O=GeoTrust Inc.
724
- # Label: "GeoTrust Global CA 2"
725
- # Serial: 1
726
- # MD5 Fingerprint: 0e:40:a7:6c:de:03:5d:8f:d1:0f:e4:d1:8d:f9:6c:a9
727
- # SHA1 Fingerprint: a9:e9:78:08:14:37:58:88:f2:05:19:b0:6d:2b:0d:2b:60:16:90:7d
728
- # SHA256 Fingerprint: ca:2d:82:a0:86:77:07:2f:8a:b6:76:4f:f0:35:67:6c:fe:3e:5e:32:5e:01:21:72:df:3f:92:09:6d:b7:9b:85
729
- -----BEGIN CERTIFICATE-----
730
- MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEW
731
- MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFs
732
- IENBIDIwHhcNMDQwMzA0MDUwMDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQG
733
- EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3Qg
734
- R2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDvPE1A
735
- PRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/NTL8
736
- Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hL
737
- TytCOb1kLUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL
738
- 5mkWRxHCJ1kDs6ZgwiFAVvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7
739
- S4wMcoKK+xfNAGw6EzywhIdLFnopsk/bHdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe
740
- 2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
741
- FHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNHK266ZUap
742
- EBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6td
743
- EPx7srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv
744
- /NgdRN3ggX+d6YvhZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywN
745
- A0ZF66D0f0hExghAzN4bcLUprbqLOzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0
746
- abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkCx1YAzUm5s2x7UwQa4qjJqhIF
747
- I8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqFH4z1Ir+rzoPz
748
- 4iIprn2DQKi6bA==
749
- -----END CERTIFICATE-----
750
-
751
- # Issuer: CN=GeoTrust Universal CA O=GeoTrust Inc.
752
- # Subject: CN=GeoTrust Universal CA O=GeoTrust Inc.
753
- # Label: "GeoTrust Universal CA"
754
- # Serial: 1
755
- # MD5 Fingerprint: 92:65:58:8b:a2:1a:31:72:73:68:5c:b4:a5:7a:07:48
756
- # SHA1 Fingerprint: e6:21:f3:35:43:79:05:9a:4b:68:30:9d:8a:2f:74:22:15:87:ec:79
757
- # SHA256 Fingerprint: a0:45:9b:9f:63:b2:25:59:f5:fa:5d:4c:6d:b3:f9:f7:2f:f1:93:42:03:35:78:f0:73:bf:1d:1b:46:cb:b9:12
758
- -----BEGIN CERTIFICATE-----
759
- MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEW
760
- MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVy
761
- c2FsIENBMB4XDTA0MDMwNDA1MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UE
762
- BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xHjAcBgNVBAMTFUdlb1RydXN0
763
- IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKYV
764
- VaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9tJPi8
765
- cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTT
766
- QjOgNB0eRXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFh
767
- F7em6fgemdtzbvQKoiFs7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2v
768
- c7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d8Lsrlh/eezJS/R27tQahsiFepdaVaH/w
769
- mZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7VqnJNk22CDtucvc+081xd
770
- VHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3CgaRr0BHdCX
771
- teGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZ
772
- f9hBZ3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfRe
773
- Bi9Fi1jUIxaS5BZuKGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+
774
- nhutxx9z3SxPGWX9f5NAEC7S8O08ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB
775
- /wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0XG0D08DYj3rWMB8GA1UdIwQY
776
- MBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG
777
- 9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc
778
- aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fX
779
- IwjhmF7DWgh2qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzyn
780
- ANXH/KttgCJwpQzgXQQpAvvLoJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0z
781
- uzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsKxr2EoyNB3tZ3b4XUhRxQ4K5RirqN
782
- Pnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxFKyDuSN/n3QmOGKja
783
- QI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2DFKW
784
- koRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9
785
- ER/frslKxfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQt
786
- DF4JbAiXfKM9fJP/P6EUp8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/Sfuvm
787
- bJxPgWp6ZKy7PtXny3YuxadIwVyQD8vIP/rmMuGNG2+k5o7Y+SlIis5z/iw=
788
- -----END CERTIFICATE-----
789
-
790
- # Issuer: CN=GeoTrust Universal CA 2 O=GeoTrust Inc.
791
- # Subject: CN=GeoTrust Universal CA 2 O=GeoTrust Inc.
792
- # Label: "GeoTrust Universal CA 2"
793
- # Serial: 1
794
- # MD5 Fingerprint: 34:fc:b8:d0:36:db:9e:14:b3:c2:f2:db:8f:e4:94:c7
795
- # SHA1 Fingerprint: 37:9a:19:7b:41:85:45:35:0c:a6:03:69:f3:3c:2e:af:47:4f:20:79
796
- # SHA256 Fingerprint: a0:23:4f:3b:c8:52:7c:a5:62:8e:ec:81:ad:5d:69:89:5d:a5:68:0d:c9:1d:1c:b8:47:7f:33:f8:78:b9:5b:0b
797
- -----BEGIN CERTIFICATE-----
798
- MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEW
799
- MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVy
800
- c2FsIENBIDIwHhcNMDQwMzA0MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYD
801
- VQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1
802
- c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
803
- AQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0DE81
804
- WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUG
805
- FF+3Qs17j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdq
806
- XbboW0W63MOhBW9Wjo8QJqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxL
807
- se4YuU6W3Nx2/zu+z18DwPw76L5GG//aQMJS9/7jOvdqdzXQ2o3rXhhqMcceujwb
808
- KNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2WP0+GfPtDCapkzj4T8Fd
809
- IgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP20gaXT73
810
- y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRt
811
- hAAnZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgoc
812
- QIgfksILAAX/8sgCSqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4
813
- Lt1ZrtmhN79UNdxzMk+MBB4zsslG8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNV
814
- HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAfBgNV
815
- HSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8EBAMCAYYwDQYJ
816
- KoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z
817
- dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQ
818
- L1EuxBRa3ugZ4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgr
819
- Fg5fNuH8KrUwJM/gYwx7WBr+mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSo
820
- ag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpqA1Ihn0CoZ1Dy81of398j9tx4TuaY
821
- T1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpgY+RdM4kX2TGq2tbz
822
- GDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiPpm8m
823
- 1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJV
824
- OCiNUW7dFGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH
825
- 6aLcr34YEoP9VhdBLtUpgn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwX
826
- QMAJKOSLakhT2+zNVVXxxvjpoixMptEmX36vWkzaH6byHCx+rgIW0lbQL1dTR+iS
827
- -----END CERTIFICATE-----
828
-
829
- # Issuer: CN=America Online Root Certification Authority 1 O=America Online Inc.
830
- # Subject: CN=America Online Root Certification Authority 1 O=America Online Inc.
831
- # Label: "America Online Root Certification Authority 1"
832
- # Serial: 1
833
- # MD5 Fingerprint: 14:f1:08:ad:9d:fa:64:e2:89:e7:1c:cf:a8:ad:7d:5e
834
- # SHA1 Fingerprint: 39:21:c1:15:c1:5d:0e:ca:5c:cb:5b:c4:f0:7d:21:d8:05:0b:56:6a
835
- # SHA256 Fingerprint: 77:40:73:12:c6:3a:15:3d:5b:c0:0b:4e:51:75:9c:df:da:c2:37:dc:2a:33:b6:79:46:e9:8e:9b:fa:68:0a:e3
836
- -----BEGIN CERTIFICATE-----
837
- MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc
838
- MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP
839
- bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2
840
- MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft
841
- ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg
842
- Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQADggEP
843
- ADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lk
844
- hsmj76CGv2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym
845
- 1BW32J/X3HGrfpq/m44zDyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsW
846
- OqMFf6Dch9Wc/HKpoH145LcxVR5lu9RhsCFg7RAycsWSJR74kEoYeEfffjA3PlAb
847
- 2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP8c9GsEsPPt2IYriMqQko
848
- O3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0TAQH/BAUw
849
- AwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAU
850
- AK3Zo/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB
851
- BQUAA4IBAQB8itEfGDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkF
852
- Zu90821fnZmv9ov761KyBZiibyrFVL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAb
853
- LjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft3OJvx8Fi8eNy1gTIdGcL+oir
854
- oQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43gKd8hdIaC2y+C
855
- MMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds
856
- sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7
857
- -----END CERTIFICATE-----
858
-
859
- # Issuer: CN=America Online Root Certification Authority 2 O=America Online Inc.
860
- # Subject: CN=America Online Root Certification Authority 2 O=America Online Inc.
861
- # Label: "America Online Root Certification Authority 2"
862
- # Serial: 1
863
- # MD5 Fingerprint: d6:ed:3c:ca:e2:66:0f:af:10:43:0d:77:9b:04:09:bf
864
- # SHA1 Fingerprint: 85:b5:ff:67:9b:0c:79:96:1f:c8:6e:44:22:00:46:13:db:17:92:84
865
- # SHA256 Fingerprint: 7d:3b:46:5a:60:14:e5:26:c0:af:fc:ee:21:27:d2:31:17:27:ad:81:1c:26:84:2d:00:6a:f3:73:06:cc:80:bd
866
- -----BEGIN CERTIFICATE-----
867
- MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc
868
- MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP
869
- bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2
870
- MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft
871
- ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg
872
- Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
873
- ADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC
874
- 206B89enfHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFci
875
- KtZHgVdEglZTvYYUAQv8f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2
876
- JxhP7JsowtS013wMPgwr38oE18aO6lhOqKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9
877
- BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JNRvCAOVIyD+OEsnpD8l7e
878
- Xz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0gBe4lL8B
879
- PeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67
880
- Xnfn6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEq
881
- Z8A9W6Wa6897GqidFEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZ
882
- o2C7HK2JNDJiuEMhBnIMoVxtRsX6Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3
883
- +L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnjB453cMor9H124HhnAgMBAAGj
884
- YzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3OpaaEg5+31IqEj
885
- FNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE
886
- AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmn
887
- xPBUlgtk87FYT15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2
888
- LHo1YGwRgJfMqZJS5ivmae2p+DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzccc
889
- obGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXgJXUjhx5c3LqdsKyzadsXg8n33gy8
890
- CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//ZoyzH1kUQ7rVyZ2OuMe
891
- IjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgOZtMA
892
- DjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2F
893
- AjgQ5ANh1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUX
894
- Om/9riW99XJZZLF0KjhfGEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPb
895
- AZO1XB4Y3WRayhgoPmMEEf0cjQAPuDffZ4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQl
896
- Zvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuPcX/9XhmgD0uRuMRUvAaw
897
- RY8mkaKO/qk=
898
- -----END CERTIFICATE-----
899
-
900
- # Issuer: CN=AAA Certificate Services O=Comodo CA Limited
901
- # Subject: CN=AAA Certificate Services O=Comodo CA Limited
902
- # Label: "Comodo AAA Services root"
903
- # Serial: 1
904
- # MD5 Fingerprint: 49:79:04:b0:eb:87:19:ac:47:b0:bc:11:51:9b:74:d0
905
- # SHA1 Fingerprint: d1:eb:23:a4:6d:17:d6:8f:d9:25:64:c2:f1:f1:60:17:64:d8:e3:49
906
- # SHA256 Fingerprint: d7:a7:a0:fb:5d:7e:27:31:d7:71:e9:48:4e:bc:de:f7:1d:5f:0c:3e:0a:29:48:78:2b:c8:3e:e0:ea:69:9e:f4
907
- -----BEGIN CERTIFICATE-----
908
- MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb
909
- MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow
910
- GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj
911
- YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL
912
- MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE
913
- BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM
914
- GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
915
- ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua
916
- BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe
917
- 3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4
918
- YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR
919
- rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm
920
- ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU
921
- oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
922
- MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v
923
- QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t
924
- b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF
925
- AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q
926
- GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
927
- Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2
928
- G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi
929
- l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3
930
- smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
931
- -----END CERTIFICATE-----
932
-
933
- # Issuer: CN=Secure Certificate Services O=Comodo CA Limited
934
- # Subject: CN=Secure Certificate Services O=Comodo CA Limited
935
- # Label: "Comodo Secure Services root"
936
- # Serial: 1
937
- # MD5 Fingerprint: d3:d9:bd:ae:9f:ac:67:24:b3:c8:1b:52:e1:b9:a9:bd
938
- # SHA1 Fingerprint: 4a:65:d5:f4:1d:ef:39:b8:b8:90:4a:4a:d3:64:81:33:cf:c7:a1:d1
939
- # SHA256 Fingerprint: bd:81:ce:3b:4f:65:91:d1:1a:67:b5:fc:7a:47:fd:ef:25:52:1b:f9:aa:4e:18:b9:e3:df:2e:34:a7:80:3b:e8
940
- -----BEGIN CERTIFICATE-----
941
- MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEb
942
- MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow
943
- GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRp
944
- ZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVow
945
- fjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
946
- A1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAiBgNV
947
- BAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEB
948
- BQADggEPADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPM
949
- cm3ye5drswfxdySRXyWP9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3S
950
- HpR7LZQdqnXXs5jLrLxkU0C8j6ysNstcrbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996
951
- CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rCoznl2yY4rYsK7hljxxwk
952
- 3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3Vp6ea5EQz
953
- 6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNV
954
- HQ4EFgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1Ud
955
- EwEB/wQFMAMBAf8wgYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2Rv
956
- Y2EuY29tL1NlY3VyZUNlcnRpZmljYXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRw
957
- Oi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmww
958
- DQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm4J4oqF7Tt/Q0
959
- 5qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj
960
- Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtI
961
- gKvcnDe4IRRLDXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJ
962
- aD61JlfutuC23bkpgHl9j6PwpCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDl
963
- izeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1HRR3B7Hzs/Sk=
964
- -----END CERTIFICATE-----
965
-
966
- # Issuer: CN=Trusted Certificate Services O=Comodo CA Limited
967
- # Subject: CN=Trusted Certificate Services O=Comodo CA Limited
968
- # Label: "Comodo Trusted Services root"
969
- # Serial: 1
970
- # MD5 Fingerprint: 91:1b:3f:6e:cd:9e:ab:ee:07:fe:1f:71:d2:b3:61:27
971
- # SHA1 Fingerprint: e1:9f:e3:0e:8b:84:60:9e:80:9b:17:0d:72:a8:c5:ba:6e:14:09:bd
972
- # SHA256 Fingerprint: 3f:06:e5:56:81:d4:96:f5:be:16:9e:b5:38:9f:9f:2b:8f:f6:1e:17:08:df:68:81:72:48:49:cd:5d:27:cb:69
973
- -----BEGIN CERTIFICATE-----
974
- MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEb
975
- MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow
976
- GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0
977
- aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEwMDAwMDBaFw0yODEyMzEyMzU5NTla
978
- MH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO
979
- BgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUwIwYD
980
- VQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0B
981
- AQEFAAOCAQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWW
982
- fnJSoBVC21ndZHoa0Lh73TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMt
983
- TGo87IvDktJTdyR0nAducPy9C1t2ul/y/9c3S0pgePfw+spwtOpZqqPOSC+pw7IL
984
- fhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6juljatEPmsbS9Is6FARW
985
- 1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsSivnkBbA7
986
- kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0G
987
- A1UdDgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYD
988
- VR0TAQH/BAUwAwEB/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21v
989
- ZG9jYS5jb20vVHJ1c3RlZENlcnRpZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRo
990
- dHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENlcnRpZmljYXRlU2VydmljZXMu
991
- Y3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8NtwuleGFTQQuS9/
992
- HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32
993
- pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxIS
994
- jBc/lDb+XbDABHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+
995
- xqFx7D+gIIxmOom0jtTYsU0lR+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/Atyjcn
996
- dBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O9y5Xt5hwXsjEeLBi
997
- -----END CERTIFICATE-----
998
-
999
- # Issuer: CN=UTN - DATACorp SGC O=The USERTRUST Network OU=http://www.usertrust.com
1000
- # Subject: CN=UTN - DATACorp SGC O=The USERTRUST Network OU=http://www.usertrust.com
1001
- # Label: "UTN DATACorp SGC Root CA"
1002
- # Serial: 91374294542884689855167577680241077609
1003
- # MD5 Fingerprint: b3:a5:3e:77:21:6d:ac:4a:c0:c9:fb:d5:41:3d:ca:06
1004
- # SHA1 Fingerprint: 58:11:9f:0e:12:82:87:ea:50:fd:d9:87:45:6f:4f:78:dc:fa:d6:d4
1005
- # SHA256 Fingerprint: 85:fb:2f:91:dd:12:27:5a:01:45:b6:36:53:4f:84:02:4a:d6:8b:69:b8:ee:88:68:4f:f7:11:37:58:05:b3:48
1006
- -----BEGIN CERTIFICATE-----
1007
- MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCB
1008
- kzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug
1009
- Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho
1010
- dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZBgNVBAMTElVUTiAtIERBVEFDb3Jw
1011
- IFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBaMIGTMQswCQYDVQQG
1012
- EwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYD
1013
- VQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cu
1014
- dXNlcnRydXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjAN
1015
- BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6
1016
- E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ysraP6LnD43m77VkIVni5c7yPeIbkFdicZ
1017
- D0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlowHDyUwDAXlCCpVZvNvlK
1018
- 4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA9P4yPykq
1019
- lXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulW
1020
- bfXv33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQAB
1021
- o4GrMIGoMAsGA1UdDwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRT
1022
- MtGzz3/64PGgXYVOktKeRR20TzA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3Js
1023
- LnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dDLmNybDAqBgNVHSUEIzAhBggr
1024
- BgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3DQEBBQUAA4IB
1025
- AQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft
1026
- Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyj
1027
- j98C5OBxOvG0I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVH
1028
- KWss5nbZqSl9Mt3JNjy9rjXxEZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv
1029
- 2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwPDPafepE39peC4N1xaf92P2BNPM/3
1030
- mfnGV/TJVTl4uix5yaaIK/QI
1031
- -----END CERTIFICATE-----
1032
-
1033
- # Issuer: CN=UTN-USERFirst-Hardware O=The USERTRUST Network OU=http://www.usertrust.com
1034
- # Subject: CN=UTN-USERFirst-Hardware O=The USERTRUST Network OU=http://www.usertrust.com
1035
- # Label: "UTN USERFirst Hardware Root CA"
1036
- # Serial: 91374294542884704022267039221184531197
1037
- # MD5 Fingerprint: 4c:56:41:e5:0d:bb:2b:e8:ca:a3:ed:18:08:ad:43:39
1038
- # SHA1 Fingerprint: 04:83:ed:33:99:ac:36:08:05:87:22:ed:bc:5e:46:00:e3:be:f9:d7
1039
- # SHA256 Fingerprint: 6e:a5:47:41:d0:04:66:7e:ed:1b:48:16:63:4a:a3:a7:9e:6e:4b:96:95:0f:82:79:da:fc:8d:9b:d8:81:21:37
1040
- -----BEGIN CERTIFICATE-----
1041
- MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCB
1042
- lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug
1043
- Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho
1044
- dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt
1045
- SGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgxOTIyWjCBlzELMAkG
1046
- A1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEe
1047
- MBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8v
1048
- d3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdh
1049
- cmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn
1050
- 0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlIwrthdBKWHTxqctU8EGc6Oe0rE81m65UJ
1051
- M6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFdtqdt++BxF2uiiPsA3/4a
1052
- MXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8i4fDidNd
1053
- oI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqI
1054
- DsjfPe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9Ksy
1055
- oUhbAgMBAAGjgbkwgbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYD
1056
- VR0OBBYEFKFyXyYbKJhDlV0HN9WFlp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0
1057
- dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LUhhcmR3YXJlLmNy
1058
- bDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEF
1059
- BQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM
1060
- //bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28Gpgoiskli
1061
- CE7/yMgUsogWXecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gE
1062
- CJChicsZUN/KHAG8HQQZexB2lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t
1063
- 3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kniCrVWFCVH/A7HFe7fRQ5YiuayZSS
1064
- KqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67nfhmqA==
1065
- -----END CERTIFICATE-----
1066
-
1067
- # Issuer: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com
1068
- # Subject: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com
1069
- # Label: "XRamp Global CA Root"
1070
- # Serial: 107108908803651509692980124233745014957
1071
- # MD5 Fingerprint: a1:0b:44:b3:ca:10:d8:00:6e:9d:0f:d8:0f:92:0a:d1
1072
- # SHA1 Fingerprint: b8:01:86:d1:eb:9c:86:a5:41:04:cf:30:54:f3:4c:52:b7:e5:58:c6
1073
- # SHA256 Fingerprint: ce:cd:dc:90:50:99:d8:da:df:c5:b1:d2:09:b7:37:cb:e2:c1:8c:fb:2c:10:c0:ff:0b:cf:0d:32:86:fc:1a:a2
1074
- -----BEGIN CERTIFICATE-----
1075
- MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCB
1076
- gjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk
1077
- MCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRY
1078
- UmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQxMTAxMTcx
1079
- NDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3
1080
- dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2Vy
1081
- dmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB
1082
- dXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS6
1083
- 38eMpSe2OAtp87ZOqCwuIR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCP
1084
- KZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMxfoArtYzAQDsRhtDLooY2YKTVMIJt2W7Q
1085
- DxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FEzG+gSqmUsE3a56k0enI4
1086
- qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqsAxcZZPRa
1087
- JSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNVi
1088
- PvryxS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0P
1089
- BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASs
1090
- jVy16bYbMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0
1091
- eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQEwDQYJKoZIhvcNAQEFBQAD
1092
- ggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc/Kh4ZzXxHfAR
1093
- vbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt
1094
- qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLa
1095
- IR9NmXmd4c8nnxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSy
1096
- i6mx5O+aGtA9aZnuqCij4Tyz8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQ
1097
- O+7ETPTsJ3xCwnR8gooJybQDJbw=
1098
- -----END CERTIFICATE-----
1099
-
1100
- # Issuer: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority
1101
- # Subject: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority
1102
- # Label: "Go Daddy Class 2 CA"
1103
- # Serial: 0
1104
- # MD5 Fingerprint: 91:de:06:25:ab:da:fd:32:17:0c:bb:25:17:2a:84:67
1105
- # SHA1 Fingerprint: 27:96:ba:e6:3f:18:01:e2:77:26:1b:a0:d7:77:70:02:8f:20:ee:e4
1106
- # SHA256 Fingerprint: c3:84:6b:f2:4b:9e:93:ca:64:27:4c:0e:c6:7c:1e:cc:5e:02:4f:fc:ac:d2:d7:40:19:35:0e:81:fe:54:6a:e4
1107
- -----BEGIN CERTIFICATE-----
1108
- MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh
1109
- MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE
1110
- YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3
1111
- MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo
1112
- ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg
1113
- MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN
1114
- ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA
1115
- PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w
1116
- wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi
1117
- EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY
1118
- avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+
1119
- YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE
1120
- sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h
1121
- /t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5
1122
- IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj
1123
- YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD
1124
- ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy
1125
- OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P
1126
- TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ
1127
- HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER
1128
- dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf
1129
- ReYNnyicsbkqWletNw+vHX/bvZ8=
1130
- -----END CERTIFICATE-----
1131
-
1132
- # Issuer: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority
1133
- # Subject: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority
1134
- # Label: "Starfield Class 2 CA"
1135
- # Serial: 0
1136
- # MD5 Fingerprint: 32:4a:4b:bb:c8:63:69:9b:be:74:9a:c6:dd:1d:46:24
1137
- # SHA1 Fingerprint: ad:7e:1c:28:b0:64:ef:8f:60:03:40:20:14:c3:d0:e3:37:0e:b5:8a
1138
- # SHA256 Fingerprint: 14:65:fa:20:53:97:b8:76:fa:a6:f0:a9:95:8e:55:90:e4:0f:cc:7f:aa:4f:b7:c2:c8:67:75:21:fb:5f:b6:58
1139
- -----BEGIN CERTIFICATE-----
1140
- MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzEl
1141
- MCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMp
1142
- U3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQw
1143
- NjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBoMQswCQYDVQQGEwJVUzElMCMGA1UE
1144
- ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZp
1145
- ZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqGSIb3
1146
- DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf
1147
- 8MOh2tTYbitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN
1148
- +lq2cwQlZut3f+dZxkqZJRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0
1149
- X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVmepsZGD3/cVE8MC5fvj13c7JdBmzDI1aa
1150
- K4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSNF4Azbl5KXZnJHoe0nRrA
1151
- 1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HFMIHCMB0G
1152
- A1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fR
1153
- zt0fhvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0
1154
- YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBD
1155
- bGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8w
1156
- DQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGsafPzWdqbAYcaT1epoXkJKtv3
1157
- L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLMPUxA2IGvd56D
1158
- eruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl
1159
- xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynp
1160
- VSJYACPq4xJDKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEY
1161
- WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q=
1162
- -----END CERTIFICATE-----
1163
-
1164
- # Issuer: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing
1165
- # Subject: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing
1166
- # Label: "StartCom Certification Authority"
1167
- # Serial: 1
1168
- # MD5 Fingerprint: 22:4d:8f:8a:fc:f7:35:c2:bb:57:34:90:7b:8b:22:16
1169
- # SHA1 Fingerprint: 3e:2b:f7:f2:03:1b:96:f3:8c:e6:c4:d8:a8:5d:3e:2d:58:47:6a:0f
1170
- # SHA256 Fingerprint: c7:66:a9:be:f2:d4:07:1c:86:3a:31:aa:49:20:e8:13:b2:d1:98:60:8c:b7:b7:cf:e2:11:43:b8:36:df:09:ea
1171
- -----BEGIN CERTIFICATE-----
1172
- MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEW
1173
- MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg
1174
- Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh
1175
- dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM2WhcNMzYwOTE3MTk0NjM2WjB9
1176
- MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi
1177
- U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh
1178
- cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA
1179
- A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk
1180
- pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf
1181
- OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C
1182
- Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT
1183
- Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi
1184
- HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM
1185
- Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w
1186
- +2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+
1187
- Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3
1188
- Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B
1189
- 26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID
1190
- AQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE
1191
- FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9j
1192
- ZXJ0LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3Js
1193
- LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFM
1194
- BgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUHAgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0
1195
- Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRwOi8vY2VydC5zdGFy
1196
- dGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYgU3Rh
1197
- cnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlh
1198
- YmlsaXR5LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2Yg
1199
- dGhlIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFp
1200
- bGFibGUgYXQgaHR0cDovL2NlcnQuc3RhcnRjb20ub3JnL3BvbGljeS5wZGYwEQYJ
1201
- YIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNT
1202
- TCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAgEAFmyZ
1203
- 9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8
1204
- jhvh3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUW
1205
- FjgKXlf2Ysd6AgXmvB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJz
1206
- ewT4F+irsfMuXGRuczE6Eri8sxHkfY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1
1207
- ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3fsNrarnDy0RLrHiQi+fHLB5L
1208
- EUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZEoalHmdkrQYu
1209
- L6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq
1210
- yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuC
1211
- O3NJo2pXh5Tl1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6V
1212
- um0ABj6y6koQOdjQK/W/7HW/lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkySh
1213
- NOsF/5oirpt9P/FlUQqmMGqz9IgcgA38corog14=
1214
- -----END CERTIFICATE-----
1215
-
1216
- # Issuer: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com
1217
- # Subject: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com
1218
- # Label: "DigiCert Assured ID Root CA"
1219
- # Serial: 17154717934120587862167794914071425081
1220
- # MD5 Fingerprint: 87:ce:0b:7b:2a:0e:49:00:e1:58:71:9b:37:a8:93:72
1221
- # SHA1 Fingerprint: 05:63:b8:63:0d:62:d7:5a:bb:c8:ab:1e:4b:df:b5:a8:99:b2:4d:43
1222
- # SHA256 Fingerprint: 3e:90:99:b5:01:5e:8f:48:6c:00:bc:ea:9d:11:1e:e7:21:fa:ba:35:5a:89:bc:f1:df:69:56:1e:3d:c6:32:5c
1223
- -----BEGIN CERTIFICATE-----
1224
- MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl
1225
- MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
1226
- d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv
1227
- b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG
1228
- EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl
1229
- cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi
1230
- MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c
1231
- JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP
1232
- mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+
1233
- wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4
1234
- VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/
1235
- AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB
1236
- AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW
1237
- BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
1238
- pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC
1239
- dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf
1240
- fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm
1241
- NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx
1242
- H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
1243
- +o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
1244
- -----END CERTIFICATE-----
1245
-
1246
- # Issuer: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com
1247
- # Subject: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com
1248
- # Label: "DigiCert Global Root CA"
1249
- # Serial: 10944719598952040374951832963794454346
1250
- # MD5 Fingerprint: 79:e4:a9:84:0d:7d:3a:96:d7:c0:4f:e2:43:4c:89:2e
1251
- # SHA1 Fingerprint: a8:98:5d:3a:65:e5:e5:c4:b2:d7:d6:6d:40:c6:dd:2f:b1:9c:54:36
1252
- # SHA256 Fingerprint: 43:48:a0:e9:44:4c:78:cb:26:5e:05:8d:5e:89:44:b4:d8:4f:96:62:bd:26:db:25:7f:89:34:a4:43:c7:01:61
1253
- -----BEGIN CERTIFICATE-----
1254
- MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh
1255
- MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
1256
- d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
1257
- QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT
1258
- MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
1259
- b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG
1260
- 9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB
1261
- CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97
1262
- nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt
1263
- 43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P
1264
- T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4
1265
- gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO
1266
- BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR
1267
- TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw
1268
- DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr
1269
- hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg
1270
- 06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF
1271
- PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls
1272
- YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
1273
- CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
1274
- -----END CERTIFICATE-----
1275
-
1276
- # Issuer: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com
1277
- # Subject: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com
1278
- # Label: "DigiCert High Assurance EV Root CA"
1279
- # Serial: 3553400076410547919724730734378100087
1280
- # MD5 Fingerprint: d4:74:de:57:5c:39:b2:d3:9c:85:83:c5:c0:65:49:8a
1281
- # SHA1 Fingerprint: 5f:b7:ee:06:33:e2:59:db:ad:0c:4c:9a:e6:d3:8f:1a:61:c7:dc:25
1282
- # SHA256 Fingerprint: 74:31:e5:f4:c3:c1:ce:46:90:77:4f:0b:61:e0:54:40:88:3b:a9:a0:1e:d0:0b:a6:ab:d7:80:6e:d3:b1:18:cf
1283
- -----BEGIN CERTIFICATE-----
1284
- MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs
1285
- MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
1286
- d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j
1287
- ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL
1288
- MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3
1289
- LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug
1290
- RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm
1291
- +9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW
1292
- PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM
1293
- xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB
1294
- Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3
1295
- hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg
1296
- EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF
1297
- MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA
1298
- FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec
1299
- nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z
1300
- eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF
1301
- hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2
1302
- Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
1303
- vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep
1304
- +OkuE6N36B9K
1305
- -----END CERTIFICATE-----
1306
-
1307
- # Issuer: CN=GeoTrust Primary Certification Authority O=GeoTrust Inc.
1308
- # Subject: CN=GeoTrust Primary Certification Authority O=GeoTrust Inc.
1309
- # Label: "GeoTrust Primary Certification Authority"
1310
- # Serial: 32798226551256963324313806436981982369
1311
- # MD5 Fingerprint: 02:26:c3:01:5e:08:30:37:43:a9:d0:7d:cf:37:e6:bf
1312
- # SHA1 Fingerprint: 32:3c:11:8e:1b:f7:b8:b6:52:54:e2:e2:10:0d:d6:02:90:37:f0:96
1313
- # SHA256 Fingerprint: 37:d5:10:06:c5:12:ea:ab:62:64:21:f1:ec:8c:92:01:3f:c5:f8:2a:e9:8e:e5:33:eb:46:19:b8:de:b4:d0:6c
1314
- -----BEGIN CERTIFICATE-----
1315
- MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBY
1316
- MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMo
1317
- R2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEx
1318
- MjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgxCzAJBgNVBAYTAlVTMRYwFAYDVQQK
1319
- Ew1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQcmltYXJ5IENlcnRp
1320
- ZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
1321
- AQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9
1322
- AWbK7hWNb6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjA
1323
- ZIVcFU2Ix7e64HXprQU9nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE0
1324
- 7e9GceBrAqg1cmuXm2bgyxx5X9gaBGgeRwLmnWDiNpcB3841kt++Z8dtd1k7j53W
1325
- kBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGttm/81w7a4DSwDRp35+MI
1326
- mO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4G
1327
- A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJ
1328
- KoZIhvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ1
1329
- 6CePbJC/kRYkRj5KTs4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl
1330
- 4b7UVXGYNTq+k+qurUKykG/g/CFNNWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6K
1331
- oKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHaFloxt/m0cYASSJlyc1pZU8Fj
1332
- UjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG1riR/aYNKxoU
1333
- AT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk=
1334
- -----END CERTIFICATE-----
1335
-
1336
- # Issuer: CN=thawte Primary Root CA O=thawte, Inc. OU=Certification Services Division/(c) 2006 thawte, Inc. - For authorized use only
1337
- # Subject: CN=thawte Primary Root CA O=thawte, Inc. OU=Certification Services Division/(c) 2006 thawte, Inc. - For authorized use only
1338
- # Label: "thawte Primary Root CA"
1339
- # Serial: 69529181992039203566298953787712940909
1340
- # MD5 Fingerprint: 8c:ca:dc:0b:22:ce:f5:be:72:ac:41:1a:11:a8:d8:12
1341
- # SHA1 Fingerprint: 91:c6:d6:ee:3e:8a:c8:63:84:e5:48:c2:99:29:5c:75:6c:81:7b:81
1342
- # SHA256 Fingerprint: 8d:72:2f:81:a9:c1:13:c0:79:1d:f1:36:a2:96:6d:b2:6c:95:0a:97:1d:b4:6b:41:99:f4:ea:54:b7:8b:fb:9f
1343
- -----BEGIN CERTIFICATE-----
1344
- MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCB
1345
- qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf
1346
- Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw
1347
- MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV
1348
- BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3MDAwMDAwWhcNMzYw
1349
- NzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5j
1350
- LjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYG
1351
- A1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
1352
- IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqG
1353
- SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFs
1354
- W0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta
1355
- 3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk
1356
- 6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6
1357
- Sk/KaAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94J
1358
- NqR32HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA
1359
- MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XP
1360
- r87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7ORtvzw6WfU
1361
- DW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeEuzLlQRHAd9mz
1362
- YJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX
1363
- xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2
1364
- /qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/
1365
- LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7
1366
- jVaMaA==
1367
- -----END CERTIFICATE-----
1368
-
1369
- # Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G5 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2006 VeriSign, Inc. - For authorized use only
1370
- # Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G5 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2006 VeriSign, Inc. - For authorized use only
1371
- # Label: "VeriSign Class 3 Public Primary Certification Authority - G5"
1372
- # Serial: 33037644167568058970164719475676101450
1373
- # MD5 Fingerprint: cb:17:e4:31:67:3e:e2:09:fe:45:57:93:f3:0a:fa:1c
1374
- # SHA1 Fingerprint: 4e:b6:d5:78:49:9b:1c:cf:5f:58:1e:ad:56:be:3d:9b:67:44:a5:e5
1375
- # SHA256 Fingerprint: 9a:cf:ab:7e:43:c8:d8:80:d0:6b:26:2a:94:de:ee:e4:b4:65:99:89:c3:d0:ca:f1:9b:af:64:05:e4:1a:b7:df
1376
- -----BEGIN CERTIFICATE-----
1377
- MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB
1378
- yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
1379
- ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp
1380
- U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW
1381
- ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0
1382
- aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL
1383
- MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW
1384
- ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln
1385
- biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp
1386
- U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y
1387
- aXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1
1388
- nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex
1389
- t0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz
1390
- SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG
1391
- BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+
1392
- rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/
1393
- NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E
1394
- BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH
1395
- BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
1396
- aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv
1397
- MzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE
1398
- p6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y
1399
- 5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK
1400
- WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ
1401
- 4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N
1402
- hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
1403
- -----END CERTIFICATE-----
1404
-
1405
- # Issuer: CN=COMODO Certification Authority O=COMODO CA Limited
1406
- # Subject: CN=COMODO Certification Authority O=COMODO CA Limited
1407
- # Label: "COMODO Certification Authority"
1408
- # Serial: 104350513648249232941998508985834464573
1409
- # MD5 Fingerprint: 5c:48:dc:f7:42:72:ec:56:94:6d:1c:cc:71:35:80:75
1410
- # SHA1 Fingerprint: 66:31:bf:9e:f7:4f:9e:b6:c9:d5:a6:0c:ba:6a:be:d1:f7:bd:ef:7b
1411
- # SHA256 Fingerprint: 0c:2c:d6:3d:f7:80:6f:a3:99:ed:e8:09:11:6b:57:5b:f8:79:89:f0:65:18:f9:80:8c:86:05:03:17:8b:af:66
1412
- -----BEGIN CERTIFICATE-----
1413
- MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCB
1414
- gTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
1415
- A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV
1416
- BAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEyMDEwMDAw
1417
- MDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl
1418
- YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P
1419
- RE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0
1420
- aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3
1421
- UcEbVASY06m/weaKXTuH+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI
1422
- 2GqGd0S7WWaXUF601CxwRM/aN5VCaTwwxHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8
1423
- Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV4EajcNxo2f8ESIl33rXp
1424
- +2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA1KGzqSX+
1425
- DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5O
1426
- nKVIrLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW
1427
- /zAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6g
1428
- PKA6hjhodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9u
1429
- QXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOCAQEAPpiem/Yb6dc5t3iuHXIY
1430
- SdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CPOGEIqB6BCsAv
1431
- IC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/
1432
- RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4
1433
- zJVSk/BwJVmcIGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5dd
1434
- BA6+C4OmF4O5MBKgxTMVBbkN+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IB
1435
- ZQ==
1436
- -----END CERTIFICATE-----
1437
-
1438
- # Issuer: CN=Network Solutions Certificate Authority O=Network Solutions L.L.C.
1439
- # Subject: CN=Network Solutions Certificate Authority O=Network Solutions L.L.C.
1440
- # Label: "Network Solutions Certificate Authority"
1441
- # Serial: 116697915152937497490437556386812487904
1442
- # MD5 Fingerprint: d3:f3:a6:16:c0:fa:6b:1d:59:b1:2d:96:4d:0e:11:2e
1443
- # SHA1 Fingerprint: 74:f8:a3:c3:ef:e7:b3:90:06:4b:83:90:3c:21:64:60:20:e5:df:ce
1444
- # SHA256 Fingerprint: 15:f0:ba:00:a3:ac:7a:f3:ac:88:4c:07:2b:10:11:a0:77:bd:77:c0:97:f4:01:64:b2:f8:59:8a:bd:83:86:0c
1445
- -----BEGIN CERTIFICATE-----
1446
- MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBi
1447
- MQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu
1448
- MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3Jp
1449
- dHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMxMjM1OTU5WjBiMQswCQYDVQQGEwJV
1450
- UzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydO
1451
- ZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG
1452
- SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwz
1453
- c7MEL7xxjOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPP
1454
- OCwGJgl6cvf6UDL4wpPTaaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rl
1455
- mGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXTcrA/vGp97Eh/jcOrqnErU2lBUzS1sLnF
1456
- BgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc/Qzpf14Dl847ABSHJ3A4
1457
- qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMBAAGjgZcw
1458
- gZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIB
1459
- BjAPBgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwu
1460
- bmV0c29sc3NsLmNvbS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3Jp
1461
- dHkuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc8
1462
- 6fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q4LqILPxFzBiwmZVRDuwduIj/
1463
- h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/GGUsyfJj4akH
1464
- /nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv
1465
- wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHN
1466
- pGxlaKFJdlxDydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
1467
- -----END CERTIFICATE-----
1468
-
1469
- # Issuer: CN=COMODO ECC Certification Authority O=COMODO CA Limited
1470
- # Subject: CN=COMODO ECC Certification Authority O=COMODO CA Limited
1471
- # Label: "COMODO ECC Certification Authority"
1472
- # Serial: 41578283867086692638256921589707938090
1473
- # MD5 Fingerprint: 7c:62:ff:74:9d:31:53:5e:68:4a:d5:78:aa:1e:bf:23
1474
- # SHA1 Fingerprint: 9f:74:4e:9f:2b:4d:ba:ec:0f:31:2c:50:b6:56:3b:8e:2d:93:c3:11
1475
- # SHA256 Fingerprint: 17:93:92:7a:06:14:54:97:89:ad:ce:2f:8f:34:f7:f0:b6:6d:0f:3a:e3:a3:b8:4d:21:ec:15:db:ba:4f:ad:c7
1476
- -----BEGIN CERTIFICATE-----
1477
- MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL
1478
- MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE
1479
- BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT
1480
- IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw
1481
- MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy
1482
- ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N
1483
- T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv
1484
- biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR
1485
- FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J
1486
- cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW
1487
- BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/
1488
- BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm
1489
- fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv
1490
- GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
1491
- -----END CERTIFICATE-----
1492
-
1493
- # Issuer: CN=TC TrustCenter Class 2 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 2 CA
1494
- # Subject: CN=TC TrustCenter Class 2 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 2 CA
1495
- # Label: "TC TrustCenter Class 2 CA II"
1496
- # Serial: 941389028203453866782103406992443
1497
- # MD5 Fingerprint: ce:78:33:5c:59:78:01:6e:18:ea:b9:36:a0:b9:2e:23
1498
- # SHA1 Fingerprint: ae:50:83:ed:7c:f4:5c:bc:8f:61:c6:21:fe:68:5d:79:42:21:15:6e
1499
- # SHA256 Fingerprint: e6:b8:f8:76:64:85:f8:07:ae:7f:8d:ac:16:70:46:1f:07:c0:a1:3e:ef:3a:1f:f7:17:53:8d:7a:ba:d3:91:b4
1500
- -----BEGIN CERTIFICATE-----
1501
- MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjEL
1502
- MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNV
1503
- BAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0
1504
- Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYwMTEyMTQzODQzWhcNMjUxMjMxMjI1
1505
- OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIgR21i
1506
- SDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UEAxMc
1507
- VEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQAD
1508
- ggEPADCCAQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jf
1509
- tMjWQ+nEdVl//OEd+DFwIxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKg
1510
- uNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2J
1511
- XjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQXa7pIXSSTYtZgo+U4+lK
1512
- 8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7uSNQZu+99
1513
- 5OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1Ud
1514
- EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3
1515
- kUrL84J6E1wIqzCB7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRy
1516
- dXN0Y2VudGVyLmRlL2NybC92Mi90Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6
1517
- Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBUcnVzdENlbnRlciUyMENsYXNz
1518
- JTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21iSCxPVT1yb290
1519
- Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
1520
- TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iS
1521
- GNn3Bzn1LL4GdXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprt
1522
- ZjluS5TmVfwLG4t3wVMTZonZKNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8
1523
- au0WOB9/WIFaGusyiC2y8zl3gK9etmF1KdsjTYjKUCjLhdLTEKJZbtOTVAB6okaV
1524
- hgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kPJOzHdiEoZa5X6AeI
1525
- dUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfkvQ==
1526
- -----END CERTIFICATE-----
1527
-
1528
- # Issuer: CN=TC TrustCenter Class 3 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 3 CA
1529
- # Subject: CN=TC TrustCenter Class 3 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 3 CA
1530
- # Label: "TC TrustCenter Class 3 CA II"
1531
- # Serial: 1506523511417715638772220530020799
1532
- # MD5 Fingerprint: 56:5f:aa:80:61:12:17:f6:67:21:e6:2b:6d:61:56:8e
1533
- # SHA1 Fingerprint: 80:25:ef:f4:6e:70:c8:d4:72:24:65:84:fe:40:3b:8a:8d:6a:db:f5
1534
- # SHA256 Fingerprint: 8d:a0:84:fc:f9:9c:e0:77:22:f8:9b:32:05:93:98:06:fa:5c:b8:11:e1:c8:13:f6:a1:08:c7:d3:36:b3:40:8e
1535
- -----BEGIN CERTIFICATE-----
1536
- MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjEL
1537
- MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNV
1538
- BAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0
1539
- Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYwMTEyMTQ0MTU3WhcNMjUxMjMxMjI1
1540
- OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIgR21i
1541
- SDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UEAxMc
1542
- VEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQAD
1543
- ggEPADCCAQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJW
1544
- Ht4bNwcwIi9v8Qbxq63WyKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+Q
1545
- Vl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo6SI7dYnWRBpl8huXJh0obazovVkdKyT2
1546
- 1oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZuV3bOx4a+9P/FRQI2Alq
1547
- ukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk2ZyqBwi1
1548
- Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1Ud
1549
- EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NX
1550
- XAek0CSnwPIA1DCB7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRy
1551
- dXN0Y2VudGVyLmRlL2NybC92Mi90Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6
1552
- Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBUcnVzdENlbnRlciUyMENsYXNz
1553
- JTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21iSCxPVT1yb290
1554
- Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
1555
- TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlN
1556
- irTzwppVMXzEO2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8
1557
- TtXqluJucsG7Kv5sbviRmEb8yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6
1558
- g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9IJqDnxrcOfHFcqMRA/07QlIp2+gB
1559
- 95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal092Y+tTmBvTwtiBj
1560
- S+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc5A==
1561
- -----END CERTIFICATE-----
1562
-
1563
- # Issuer: CN=TC TrustCenter Universal CA I O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA
1564
- # Subject: CN=TC TrustCenter Universal CA I O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA
1565
- # Label: "TC TrustCenter Universal CA I"
1566
- # Serial: 601024842042189035295619584734726
1567
- # MD5 Fingerprint: 45:e1:a5:72:c5:a9:36:64:40:9e:f5:e4:58:84:67:8c
1568
- # SHA1 Fingerprint: 6b:2f:34:ad:89:58:be:62:fd:b0:6b:5c:ce:bb:9d:d9:4f:4e:39:f3
1569
- # SHA256 Fingerprint: eb:f3:c0:2a:87:89:b1:fb:7d:51:19:95:d6:63:b7:29:06:d9:13:ce:0d:5e:10:56:8a:8a:77:e2:58:61:67:e7
1570
- -----BEGIN CERTIFICATE-----
1571
- MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTEL
1572
- MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNV
1573
- BAsTG1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1
1574
- c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcNMDYwMzIyMTU1NDI4WhcNMjUxMjMx
1575
- MjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIg
1576
- R21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYwJAYD
1577
- VQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcN
1578
- AQEBBQADggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSR
1579
- JJZ4Hgmgm5qVSkr1YnwCqMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3T
1580
- fCZdzHd55yx4Oagmcw6iXSVphU9VDprvxrlE4Vc93x9UIuVvZaozhDrzznq+VZeu
1581
- jRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtwag+1m7Z3W0hZneTvWq3z
1582
- wZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9OgdwZu5GQ
1583
- fezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYD
1584
- VR0jBBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAO
1585
- BgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0G
1586
- CSqGSIb3DQEBBQUAA4IBAQAo0uCG1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X1
1587
- 7caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/CyvwbZ71q+s2IhtNerNXxTPqYn
1588
- 8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3ghUJGooWMNjs
1589
- ydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT
1590
- ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/
1591
- 2TYcuiUaUj0a7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY
1592
- -----END CERTIFICATE-----
1593
-
1594
- # Issuer: CN=Cybertrust Global Root O=Cybertrust, Inc
1595
- # Subject: CN=Cybertrust Global Root O=Cybertrust, Inc
1596
- # Label: "Cybertrust Global Root"
1597
- # Serial: 4835703278459682877484360
1598
- # MD5 Fingerprint: 72:e4:4a:87:e3:69:40:80:77:ea:bc:e3:f4:ff:f0:e1
1599
- # SHA1 Fingerprint: 5f:43:e5:b1:bf:f8:78:8c:ac:1c:c7:ca:4a:9a:c6:22:2b:cc:34:c6
1600
- # SHA256 Fingerprint: 96:0a:df:00:63:e9:63:56:75:0c:29:65:dd:0a:08:67:da:0b:9c:bd:6e:77:71:4a:ea:fb:23:49:ab:39:3d:a3
1601
- -----BEGIN CERTIFICATE-----
1602
- MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYG
1603
- A1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2Jh
1604
- bCBSb290MB4XDTA2MTIxNTA4MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UE
1605
- ChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBS
1606
- b290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+Mi8vRRQZhP/8NN5
1607
- 7CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW0ozS
1608
- J8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2y
1609
- HLtgwEZLAfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iP
1610
- t3sMpTjr3kfb1V05/Iin89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNz
1611
- FtApD0mpSPCzqrdsxacwOUBdrsTiXSZT8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAY
1612
- XSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/
1613
- MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2MDSgMqAw
1614
- hi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3Js
1615
- MB8GA1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUA
1616
- A4IBAQBW7wojoFROlZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMj
1617
- Wqd8BfP9IjsO0QbE2zZMcwSO5bAi5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUx
1618
- XOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2hO0j9n0Hq0V+09+zv+mKts2o
1619
- omcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+TX3EJIrduPuoc
1620
- A06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW
1621
- WL1WMRJOEcgh4LMRkWXbtKaIOM5V
1622
- -----END CERTIFICATE-----
1623
-
1624
- # Issuer: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only
1625
- # Subject: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only
1626
- # Label: "GeoTrust Primary Certification Authority - G3"
1627
- # Serial: 28809105769928564313984085209975885599
1628
- # MD5 Fingerprint: b5:e8:34:36:c9:10:44:58:48:70:6d:2e:83:d4:b8:05
1629
- # SHA1 Fingerprint: 03:9e:ed:b8:0b:e7:a0:3c:69:53:89:3b:20:d2:d9:32:3a:4c:2a:fd
1630
- # SHA256 Fingerprint: b4:78:b8:12:25:0d:f8:78:63:5c:2a:a7:ec:7d:15:5e:aa:62:5e:e8:29:16:e2:cd:29:43:61:88:6c:d1:fb:d4
1631
- -----BEGIN CERTIFICATE-----
1632
- MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCB
1633
- mDELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsT
1634
- MChjKSAyMDA4IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s
1635
- eTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv
1636
- cml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIzNTk1OVowgZgxCzAJ
1637
- BgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg
1638
- MjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0
1639
- BgNVBAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg
1640
- LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz
1641
- +uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5jK/BGvESyiaHAKAxJcCGVn2TAppMSAmUm
1642
- hsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdEc5IiaacDiGydY8hS2pgn
1643
- 5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3CIShwiP/W
1644
- JmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exAL
1645
- DmKudlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZC
1646
- huOl1UcCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw
1647
- HQYDVR0OBBYEFMR5yo6hTgMdHNxr2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IB
1648
- AQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9cr5HqQ6XErhK8WTTOd8lNNTB
1649
- zU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbEAp7aDHdlDkQN
1650
- kv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD
1651
- AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUH
1652
- SJsMC8tJP33st/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2G
1653
- spki4cErx5z481+oghLrGREt
1654
- -----END CERTIFICATE-----
1655
-
1656
- # Issuer: CN=thawte Primary Root CA - G2 O=thawte, Inc. OU=(c) 2007 thawte, Inc. - For authorized use only
1657
- # Subject: CN=thawte Primary Root CA - G2 O=thawte, Inc. OU=(c) 2007 thawte, Inc. - For authorized use only
1658
- # Label: "thawte Primary Root CA - G2"
1659
- # Serial: 71758320672825410020661621085256472406
1660
- # MD5 Fingerprint: 74:9d:ea:60:24:c4:fd:22:53:3e:cc:3a:72:d9:29:4f
1661
- # SHA1 Fingerprint: aa:db:bc:22:23:8f:c4:01:a1:27:bb:38:dd:f4:1d:db:08:9e:f0:12
1662
- # SHA256 Fingerprint: a4:31:0d:50:af:18:a6:44:71:90:37:2a:86:af:af:8b:95:1f:fb:43:1d:83:7f:1e:56:88:b4:59:71:ed:15:57
1663
- -----BEGIN CERTIFICATE-----
1664
- MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDEL
1665
- MAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMp
1666
- IDIwMDcgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAi
1667
- BgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMjAeFw0wNzExMDUwMDAw
1668
- MDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh
1669
- d3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBGb3Ig
1670
- YXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9v
1671
- dCBDQSAtIEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/
1672
- BebfowJPDQfGAFG6DAJSLSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6
1673
- papu+7qzcMBniKI11KOasf2twu8x+qi58/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8E
1674
- BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUmtgAMADna3+FGO6Lts6K
1675
- DPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUNG4k8VIZ3
1676
- KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41ox
1677
- XZ3Krr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg==
1678
- -----END CERTIFICATE-----
1679
-
1680
- # Issuer: CN=thawte Primary Root CA - G3 O=thawte, Inc. OU=Certification Services Division/(c) 2008 thawte, Inc. - For authorized use only
1681
- # Subject: CN=thawte Primary Root CA - G3 O=thawte, Inc. OU=Certification Services Division/(c) 2008 thawte, Inc. - For authorized use only
1682
- # Label: "thawte Primary Root CA - G3"
1683
- # Serial: 127614157056681299805556476275995414779
1684
- # MD5 Fingerprint: fb:1b:5d:43:8a:94:cd:44:c6:76:f2:43:4b:47:e7:31
1685
- # SHA1 Fingerprint: f1:8b:53:8d:1b:e9:03:b6:a6:f0:56:43:5b:17:15:89:ca:f3:6b:f2
1686
- # SHA256 Fingerprint: 4b:03:f4:58:07:ad:70:f2:1b:fc:2c:ae:71:c9:fd:e4:60:4c:06:4c:f5:ff:b6:86:ba:e5:db:aa:d7:fd:d3:4c
1687
- -----BEGIN CERTIFICATE-----
1688
- MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCB
1689
- rjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf
1690
- Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw
1691
- MDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNV
1692
- BAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0wODA0MDIwMDAwMDBa
1693
- Fw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhhd3Rl
1694
- LCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9u
1695
- MTgwNgYDVQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXpl
1696
- ZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEcz
1697
- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsr8nLPvb2FvdeHsbnndm
1698
- gcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2AtP0LMqmsywCPLLEHd5N/8
1699
- YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC+BsUa0Lf
1700
- b1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS9
1701
- 9irY7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2S
1702
- zhkGcuYMXDhpxwTWvGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUk
1703
- OQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNV
1704
- HQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJKoZIhvcNAQELBQADggEBABpA
1705
- 2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweKA3rD6z8KLFIW
1706
- oCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu
1707
- t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7c
1708
- KUGRIjxpp7sC8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fM
1709
- m7v/OeZWYdMKp8RcTGB7BXcmer/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZu
1710
- MdRAGmI0Nj81Aa6sY6A=
1711
- -----END CERTIFICATE-----
1712
-
1713
- # Issuer: CN=GeoTrust Primary Certification Authority - G2 O=GeoTrust Inc. OU=(c) 2007 GeoTrust Inc. - For authorized use only
1714
- # Subject: CN=GeoTrust Primary Certification Authority - G2 O=GeoTrust Inc. OU=(c) 2007 GeoTrust Inc. - For authorized use only
1715
- # Label: "GeoTrust Primary Certification Authority - G2"
1716
- # Serial: 80682863203381065782177908751794619243
1717
- # MD5 Fingerprint: 01:5e:d8:6b:bd:6f:3d:8e:a1:31:f8:12:e0:98:73:6a
1718
- # SHA1 Fingerprint: 8d:17:84:d5:37:f3:03:7d:ec:70:fe:57:8b:51:9a:99:e6:10:d7:b0
1719
- # SHA256 Fingerprint: 5e:db:7a:c4:3b:82:a0:6a:87:61:e8:d7:be:49:79:eb:f2:61:1f:7d:d7:9b:f9:1c:1c:6b:56:6a:21:9e:d7:66
1720
- -----BEGIN CERTIFICATE-----
1721
- MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDEL
1722
- MAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChj
1723
- KSAyMDA3IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2
1724
- MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
1725
- eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1OVowgZgxCzAJBgNV
1726
- BAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykgMjAw
1727
- NyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNV
1728
- BAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH
1729
- MjB2MBAGByqGSM49AgEGBSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcL
1730
- So17VDs6bl8VAsBQps8lL33KSLjHUGMcKiEIfJo22Av+0SbFWDEwKCXzXV2juLal
1731
- tJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO
1732
- BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+EVXVMAoG
1733
- CCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGT
1734
- qQ7mndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBucz
1735
- rD6ogRLQy7rQkgu2npaqBA+K
1736
- -----END CERTIFICATE-----
1737
-
1738
- # Issuer: CN=VeriSign Universal Root Certification Authority O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2008 VeriSign, Inc. - For authorized use only
1739
- # Subject: CN=VeriSign Universal Root Certification Authority O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2008 VeriSign, Inc. - For authorized use only
1740
- # Label: "VeriSign Universal Root Certification Authority"
1741
- # Serial: 85209574734084581917763752644031726877
1742
- # MD5 Fingerprint: 8e:ad:b5:01:aa:4d:81:e4:8c:1d:d1:e1:14:00:95:19
1743
- # SHA1 Fingerprint: 36:79:ca:35:66:87:72:30:4d:30:a5:fb:87:3b:0f:a7:7b:b7:0d:54
1744
- # SHA256 Fingerprint: 23:99:56:11:27:a5:71:25:de:8c:ef:ea:61:0d:df:2f:a0:78:b5:c8:06:7f:4e:82:82:90:bf:b8:60:e8:4b:3c
1745
- -----BEGIN CERTIFICATE-----
1746
- MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCB
1747
- vTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
1748
- ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJp
1749
- U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MTgwNgYDVQQDEy9W
1750
- ZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe
1751
- Fw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJVUzEX
1752
- MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0
1753
- IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9y
1754
- IGF1dGhvcml6ZWQgdXNlIG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNh
1755
- bCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF
1756
- AAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj1mCOkdeQmIN65lgZOIzF
1757
- 9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGPMiJhgsWH
1758
- H26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+H
1759
- LL729fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN
1760
- /BMReYTtXlT2NJ8IAfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPT
1761
- rJ9VAMf2CGqUuV/c4DPxhGD5WycRtPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1Ud
1762
- EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0GCCsGAQUFBwEMBGEwX6FdoFsw
1763
- WTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgs
1764
- exkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud
1765
- DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4
1766
- sAPmLGd75JR3Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+
1767
- seQxIcaBlVZaDrHC1LGmWazxY8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz
1768
- 4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTxP/jgdFcrGJ2BtMQo2pSXpXDrrB2+
1769
- BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+PwGZsY6rp2aQW9IHR
1770
- lRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4mJO3
1771
- 7M2CYfE45k+XmCpajQ==
1772
- -----END CERTIFICATE-----
1773
-
1774
- # Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G4 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2007 VeriSign, Inc. - For authorized use only
1775
- # Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G4 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2007 VeriSign, Inc. - For authorized use only
1776
- # Label: "VeriSign Class 3 Public Primary Certification Authority - G4"
1777
- # Serial: 63143484348153506665311985501458640051
1778
- # MD5 Fingerprint: 3a:52:e1:e7:fd:6f:3a:e3:6f:f3:6f:99:1b:f9:22:41
1779
- # SHA1 Fingerprint: 22:d5:d8:df:8f:02:31:d1:8d:f7:9d:b7:cf:8a:2d:64:c9:3f:6c:3a
1780
- # SHA256 Fingerprint: 69:dd:d7:ea:90:bb:57:c9:3e:13:5d:c8:5e:a6:fc:d5:48:0b:60:32:39:bd:c4:54:fc:75:8b:2a:26:cf:7f:79
1781
- -----BEGIN CERTIFICATE-----
1782
- MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjEL
1783
- MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW
1784
- ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2ln
1785
- biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp
1786
- U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y
1787
- aXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjELMAkG
1788
- A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJp
1789
- U2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwg
1790
- SW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2ln
1791
- biBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5
1792
- IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8Utpkmw4tXNherJI9/gHm
1793
- GUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGzrl0Bp3ve
1794
- fLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUw
1795
- AwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJ
1796
- aW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYj
1797
- aHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMW
1798
- kf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMDA2gAMGUCMGYhDBgmYFo4e1ZC
1799
- 4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIxAJw9SDkjOVga
1800
- FRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA==
1801
- -----END CERTIFICATE-----
1802
-
1803
- # Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority
1804
- # Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority
1805
- # Label: "Verisign Class 3 Public Primary Certification Authority"
1806
- # Serial: 80507572722862485515306429940691309246
1807
- # MD5 Fingerprint: ef:5a:f1:33:ef:f1:cd:bb:51:02:ee:12:14:4b:96:c4
1808
- # SHA1 Fingerprint: a1:db:63:93:91:6f:17:e4:18:55:09:40:04:15:c7:02:40:b0:ae:6b
1809
- # SHA256 Fingerprint: a4:b6:b3:99:6f:c2:f3:06:b3:fd:86:81:bd:63:41:3d:8c:50:09:cc:4f:a3:29:c2:cc:f0:e2:fa:1b:14:03:05
1810
- -----BEGIN CERTIFICATE-----
1811
- MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkG
1812
- A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz
1813
- cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2
1814
- MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV
1815
- BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt
1816
- YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN
1817
- ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE
1818
- BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is
1819
- I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G
1820
- CSqGSIb3DQEBBQUAA4GBABByUqkFFBkyCEHwxWsKzH4PIRnN5GfcX6kb5sroc50i
1821
- 2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWXbj9T/UWZYB2oK0z5XqcJ
1822
- 2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/D/xwzoiQ
1823
- -----END CERTIFICATE-----
1824
-
1825
- # Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3
1826
- # Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3
1827
- # Label: "GlobalSign Root CA - R3"
1828
- # Serial: 4835703278459759426209954
1829
- # MD5 Fingerprint: c5:df:b8:49:ca:05:13:55:ee:2d:ba:1a:c3:3e:b0:28
1830
- # SHA1 Fingerprint: d6:9b:56:11:48:f0:1c:77:c5:45:78:c1:09:26:df:5b:85:69:76:ad
1831
- # SHA256 Fingerprint: cb:b5:22:d7:b7:f1:27:ad:6a:01:13:86:5b:df:1c:d4:10:2e:7d:07:59:af:63:5a:7c:f4:72:0d:c9:63:c5:3b
1832
- -----BEGIN CERTIFICATE-----
1833
- MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G
1834
- A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp
1835
- Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4
1836
- MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG
1837
- A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI
1838
- hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8
1839
- RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT
1840
- gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm
1841
- KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd
1842
- QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ
1843
- XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw
1844
- DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o
1845
- LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU
1846
- RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp
1847
- jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK
1848
- 6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX
1849
- mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs
1850
- Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH
1851
- WD9f
1852
- -----END CERTIFICATE-----
1853
-
1854
- # Issuer: CN=TC TrustCenter Universal CA III O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA
1855
- # Subject: CN=TC TrustCenter Universal CA III O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA
1856
- # Label: "TC TrustCenter Universal CA III"
1857
- # Serial: 2010889993983507346460533407902964
1858
- # MD5 Fingerprint: 9f:dd:db:ab:ff:8e:ff:45:21:5f:f0:6c:9d:8f:fe:2b
1859
- # SHA1 Fingerprint: 96:56:cd:7b:57:96:98:95:d0:e1:41:46:68:06:fb:b8:c6:11:06:87
1860
- # SHA256 Fingerprint: 30:9b:4a:87:f6:ca:56:c9:31:69:aa:a9:9c:6d:98:88:54:d7:89:2b:d5:43:7e:2d:07:b2:9c:be:da:55:d3:5d
1861
- -----BEGIN CERTIFICATE-----
1862
- MIID4TCCAsmgAwIBAgIOYyUAAQACFI0zFQLkbPQwDQYJKoZIhvcNAQEFBQAwezEL
1863
- MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNV
1864
- BAsTG1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQTEoMCYGA1UEAxMfVEMgVHJ1
1865
- c3RDZW50ZXIgVW5pdmVyc2FsIENBIElJSTAeFw0wOTA5MDkwODE1MjdaFw0yOTEy
1866
- MzEyMzU5NTlaMHsxCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNUQyBUcnVzdENlbnRl
1867
- ciBHbWJIMSQwIgYDVQQLExtUQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0ExKDAm
1868
- BgNVBAMTH1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQSBJSUkwggEiMA0GCSqG
1869
- SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDC2pxisLlxErALyBpXsq6DFJmzNEubkKLF
1870
- 5+cvAqBNLaT6hdqbJYUtQCggbergvbFIgyIpRJ9Og+41URNzdNW88jBmlFPAQDYv
1871
- DIRlzg9uwliT6CwLOunBjvvya8o84pxOjuT5fdMnnxvVZ3iHLX8LR7PH6MlIfK8v
1872
- zArZQe+f/prhsq75U7Xl6UafYOPfjdN/+5Z+s7Vy+EutCHnNaYlAJ/Uqwa1D7KRT
1873
- yGG299J5KmcYdkhtWyUB0SbFt1dpIxVbYYqt8Bst2a9c8SaQaanVDED1M4BDj5yj
1874
- dipFtK+/fz6HP3bFzSreIMUWWMv5G/UPyw0RUmS40nZid4PxWJ//AgMBAAGjYzBh
1875
- MB8GA1UdIwQYMBaAFFbn4VslQ4Dg9ozhcbyO5YAvxEjiMA8GA1UdEwEB/wQFMAMB
1876
- Af8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRW5+FbJUOA4PaM4XG8juWAL8RI
1877
- 4jANBgkqhkiG9w0BAQUFAAOCAQEAg8ev6n9NCjw5sWi+e22JLumzCecYV42Fmhfz
1878
- dkJQEw/HkG8zrcVJYCtsSVgZ1OK+t7+rSbyUyKu+KGwWaODIl0YgoGhnYIg5IFHY
1879
- aAERzqf2EQf27OysGh+yZm5WZ2B6dF7AbZc2rrUNXWZzwCUyRdhKBgePxLcHsU0G
1880
- DeGl6/R1yrqc0L2z0zIkTO5+4nYES0lT2PLpVDP85XEfPRRclkvxOvIAu2y0+pZV
1881
- CIgJwcyRGSmwIC3/yzikQOEXvnlhgP8HA4ZMTnsGnxGGjYnuJ8Tb4rwZjgvDwxPH
1882
- LQNjO9Po5KIqwoIIlBZU8O8fJ5AluA0OKBtHd0e9HKgl8ZS0Zg==
1883
- -----END CERTIFICATE-----
1884
-
1885
- # Issuer: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc.
1886
- # Subject: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc.
1887
- # Label: "Go Daddy Root Certificate Authority - G2"
1888
- # Serial: 0
1889
- # MD5 Fingerprint: 80:3a:bc:22:c1:e6:fb:8d:9b:3b:27:4a:32:1b:9a:01
1890
- # SHA1 Fingerprint: 47:be:ab:c9:22:ea:e8:0e:78:78:34:62:a7:9f:45:c2:54:fd:e6:8b
1891
- # SHA256 Fingerprint: 45:14:0b:32:47:eb:9c:c8:c5:b4:f0:d7:b5:30:91:f7:32:92:08:9e:6e:5a:63:e2:74:9d:d3:ac:a9:19:8e:da
1892
- -----BEGIN CERTIFICATE-----
1893
- MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx
1894
- EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT
1895
- EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp
1896
- ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz
1897
- NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH
1898
- EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE
1899
- AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw
1900
- DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD
1901
- E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH
1902
- /PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy
1903
- DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh
1904
- GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR
1905
- tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA
1906
- AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE
1907
- FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX
1908
- WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu
1909
- 9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr
1910
- gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo
1911
- 2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO
1912
- LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI
1913
- 4uJEvlz36hz1
1914
- -----END CERTIFICATE-----
1915
-
1916
- # Issuer: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc.
1917
- # Subject: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc.
1918
- # Label: "Starfield Root Certificate Authority - G2"
1919
- # Serial: 0
1920
- # MD5 Fingerprint: d6:39:81:c6:52:7e:96:69:fc:fc:ca:66:ed:05:f2:96
1921
- # SHA1 Fingerprint: b5:1c:06:7c:ee:2b:0c:3d:f8:55:ab:2d:92:f4:fe:39:d4:e7:0f:0e
1922
- # SHA256 Fingerprint: 2c:e1:cb:0b:f9:d2:f9:e1:02:99:3f:be:21:51:52:c3:b2:dd:0c:ab:de:1c:68:e5:31:9b:83:91:54:db:b7:f5
1923
- -----BEGIN CERTIFICATE-----
1924
- MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx
1925
- EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT
1926
- HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs
1927
- ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAw
1928
- MFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6
1929
- b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj
1930
- aG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZp
1931
- Y2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
1932
- ggEBAL3twQP89o/8ArFvW59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMg
1933
- nLRJdzIpVv257IzdIvpy3Cdhl+72WoTsbhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1
1934
- HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNkN3mSwOxGXn/hbVNMYq/N
1935
- Hwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7NfZTD4p7dN
1936
- dloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0
1937
- HZbUJtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO
1938
- BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0G
1939
- CSqGSIb3DQEBCwUAA4IBAQARWfolTwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjU
1940
- sHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx4mcujJUDJi5DnUox9g61DLu3
1941
- 4jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUwF5okxBDgBPfg
1942
- 8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K
1943
- pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1
1944
- mMpYjn0q7pBZc2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0
1945
- -----END CERTIFICATE-----
1946
-
1947
- # Issuer: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc.
1948
- # Subject: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc.
1949
- # Label: "Starfield Services Root Certificate Authority - G2"
1950
- # Serial: 0
1951
- # MD5 Fingerprint: 17:35:74:af:7b:61:1c:eb:f4:f9:3c:e2:ee:40:f9:a2
1952
- # SHA1 Fingerprint: 92:5a:8f:8d:2c:6d:04:e0:66:5f:59:6a:ff:22:d8:63:e8:25:6f:3f
1953
- # SHA256 Fingerprint: 56:8d:69:05:a2:c8:87:08:a4:b3:02:51:90:ed:cf:ed:b1:97:4a:60:6a:13:c6:e5:29:0f:cb:2a:e6:3e:da:b5
1954
- -----BEGIN CERTIFICATE-----
1955
- MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx
1956
- EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT
1957
- HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs
1958
- ZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5
1959
- MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNVBAYTAlVTMRAwDgYD
1960
- VQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFy
1961
- ZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2Vy
1962
- dmljZXMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI
1963
- hvcNAQEBBQADggEPADCCAQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20p
1964
- OsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm2
1965
- 8xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4PahHQUw2eeBGg6345AWh1K
1966
- Ts9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLPLJGmpufe
1967
- hRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk
1968
- 6mFBrMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAw
1969
- DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+q
1970
- AdcwKziIorhtSpzyEZGDMA0GCSqGSIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMI
1971
- bw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPPE95Dz+I0swSdHynVv/heyNXB
1972
- ve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTyxQGjhdByPq1z
1973
- qwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd
1974
- iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn
1975
- 0q23KXB56jzaYyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCN
1976
- sSi6
1977
- -----END CERTIFICATE-----
1978
-
1979
- # Issuer: CN=AffirmTrust Commercial O=AffirmTrust
1980
- # Subject: CN=AffirmTrust Commercial O=AffirmTrust
1981
- # Label: "AffirmTrust Commercial"
1982
- # Serial: 8608355977964138876
1983
- # MD5 Fingerprint: 82:92:ba:5b:ef:cd:8a:6f:a6:3d:55:f9:84:f6:d6:b7
1984
- # SHA1 Fingerprint: f9:b5:b6:32:45:5f:9c:be:ec:57:5f:80:dc:e9:6e:2c:c7:b2:78:b7
1985
- # SHA256 Fingerprint: 03:76:ab:1d:54:c5:f9:80:3c:e4:b2:e2:01:a0:ee:7e:ef:7b:57:b6:36:e8:a9:3c:9b:8d:48:60:c9:6f:5f:a7
1986
- -----BEGIN CERTIFICATE-----
1987
- MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UE
1988
- BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz
1989
- dCBDb21tZXJjaWFsMB4XDTEwMDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDEL
1990
- MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp
1991
- cm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
1992
- AQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6EqdbDuKP
1993
- Hx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yr
1994
- ba0F8PrVC8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPAL
1995
- MeIrJmqbTFeurCA+ukV6BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1
1996
- yHp52UKqK39c/s4mT6NmgTWvRLpUHhwwMmWd5jyTXlBOeuM61G7MGvv50jeuJCqr
1997
- VwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNVHQ4EFgQUnZPGU4teyq8/
1998
- nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ
1999
- KoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYG
2000
- XUPGhi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNj
2001
- vbz4YYCanrHOQnDiqX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivt
2002
- Z8SOyUOyXGsViQK8YvxO8rUzqrJv0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9g
2003
- N53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0khsUlHRUe072o0EclNmsxZt9YC
2004
- nlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8=
2005
- -----END CERTIFICATE-----
2006
-
2007
- # Issuer: CN=AffirmTrust Networking O=AffirmTrust
2008
- # Subject: CN=AffirmTrust Networking O=AffirmTrust
2009
- # Label: "AffirmTrust Networking"
2010
- # Serial: 8957382827206547757
2011
- # MD5 Fingerprint: 42:65:ca:be:01:9a:9a:4c:a9:8c:41:49:cd:c0:d5:7f
2012
- # SHA1 Fingerprint: 29:36:21:02:8b:20:ed:02:f5:66:c5:32:d1:d6:ed:90:9f:45:00:2f
2013
- # SHA256 Fingerprint: 0a:81:ec:5a:92:97:77:f1:45:90:4a:f3:8d:5d:50:9f:66:b5:e2:c5:8f:cd:b5:31:05:8b:0e:17:f3:f0:b4:1b
2014
- -----BEGIN CERTIFICATE-----
2015
- MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UE
2016
- BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz
2017
- dCBOZXR3b3JraW5nMB4XDTEwMDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDEL
2018
- MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp
2019
- cm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
2020
- AQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SEHi3y
2021
- YJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbua
2022
- kCNrmreIdIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRL
2023
- QESxG9fhwoXA3hA/Pe24/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp
2024
- 6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gbh+0t+nvujArjqWaJGctB+d1ENmHP4ndG
2025
- yH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNVHQ4EFgQUBx/S55zawm6i
2026
- QLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ
2027
- KoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfO
2028
- tDIuUFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzu
2029
- QY0x2+c06lkh1QF612S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZ
2030
- Lgo/bNjR9eUJtGxUAArgFU2HdW23WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4u
2031
- olu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9/ZFvgrG+CJPbFEfxojfHRZ48
2032
- x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s=
2033
- -----END CERTIFICATE-----
2034
-
2035
- # Issuer: CN=AffirmTrust Premium O=AffirmTrust
2036
- # Subject: CN=AffirmTrust Premium O=AffirmTrust
2037
- # Label: "AffirmTrust Premium"
2038
- # Serial: 7893706540734352110
2039
- # MD5 Fingerprint: c4:5d:0e:48:b6:ac:28:30:4e:0a:bc:f9:38:16:87:57
2040
- # SHA1 Fingerprint: d8:a6:33:2c:e0:03:6f:b1:85:f6:63:4f:7d:6a:06:65:26:32:28:27
2041
- # SHA256 Fingerprint: 70:a7:3f:7f:37:6b:60:07:42:48:90:45:34:b1:14:82:d5:bf:0e:69:8e:cc:49:8d:f5:25:77:eb:f2:e9:3b:9a
2042
- -----BEGIN CERTIFICATE-----
2043
- MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UE
2044
- BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVz
2045
- dCBQcmVtaXVtMB4XDTEwMDEyOTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkG
2046
- A1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1U
2047
- cnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxBLf
2048
- qV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtnBKAQ
2049
- JG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ
2050
- +jjeRFcV5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrS
2051
- s8PhaJyJ+HoAVt70VZVs+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5
2052
- HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmdGPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d7
2053
- 70O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5Rp9EixAqnOEhss/n/fauG
2054
- V+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NIS+LI+H+S
2055
- qHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S
2056
- 5u046uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4Ia
2057
- C1nEWTJ3s7xgaVY5/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TX
2058
- OwF0lkLgAOIua+rF7nKsu7/+6qqo+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYE
2059
- FJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/
2060
- BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByvMiPIs0laUZx2
2061
- KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg
2062
- Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B
2063
- 8OWycvpEgjNC6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQ
2064
- MKSOyARiqcTtNd56l+0OOF6SL5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc
2065
- 0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK+4w1IX2COPKpVJEZNZOUbWo6xbLQ
2066
- u4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmVBtWVyuEklut89pMF
2067
- u+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFgIxpH
2068
- YoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8
2069
- GKa1qF60g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaO
2070
- RtGdFNrHF+QFlozEJLUbzxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6e
2071
- KeC2uAloGRwYQw==
2072
- -----END CERTIFICATE-----
2073
-
2074
- # Issuer: CN=AffirmTrust Premium ECC O=AffirmTrust
2075
- # Subject: CN=AffirmTrust Premium ECC O=AffirmTrust
2076
- # Label: "AffirmTrust Premium ECC"
2077
- # Serial: 8401224907861490260
2078
- # MD5 Fingerprint: 64:b0:09:55:cf:b1:d5:99:e2:be:13:ab:a6:5d:ea:4d
2079
- # SHA1 Fingerprint: b8:23:6b:00:2f:1d:16:86:53:01:55:6c:11:a4:37:ca:eb:ff:c3:bb
2080
- # SHA256 Fingerprint: bd:71:fd:f6:da:97:e4:cf:62:d1:64:7a:dd:25:81:b0:7d:79:ad:f8:39:7e:b4:ec:ba:9c:5e:84:88:82:14:23
2081
- -----BEGIN CERTIFICATE-----
2082
- MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMC
2083
- VVMxFDASBgNVBAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQ
2084
- cmVtaXVtIEVDQzAeFw0xMDAxMjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJ
2085
- BgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1UcnVzdDEgMB4GA1UEAwwXQWZmaXJt
2086
- VHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNMF4bFZ0D
2087
- 0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQN8O9
2088
- ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0G
2089
- A1UdDgQWBBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4G
2090
- A1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/Vs
2091
- aobgxCd05DhT1wV/GzTjxi+zygk8N53X57hG8f2h4nECMEJZh0PUUd+60wkyWs6I
2092
- flc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKMeQ==
2093
- -----END CERTIFICATE-----
2094
-
2095
- # Issuer: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing
2096
- # Subject: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing
2097
- # Label: "StartCom Certification Authority"
2098
- # Serial: 45
2099
- # MD5 Fingerprint: c9:3b:0d:84:41:fc:a4:76:79:23:08:57:de:10:19:16
2100
- # SHA1 Fingerprint: a3:f1:33:3f:e2:42:bf:cf:c5:d1:4e:8f:39:42:98:40:68:10:d1:a0
2101
- # SHA256 Fingerprint: e1:78:90:ee:09:a3:fb:f4:f4:8b:9c:41:4a:17:d6:37:b7:a5:06:47:e9:bc:75:23:22:72:7f:cc:17:42:a9:11
2102
- -----BEGIN CERTIFICATE-----
2103
- MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEW
2104
- MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg
2105
- Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh
2106
- dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM3WhcNMzYwOTE3MTk0NjM2WjB9
2107
- MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi
2108
- U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh
2109
- cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA
2110
- A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk
2111
- pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf
2112
- OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C
2113
- Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT
2114
- Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi
2115
- HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM
2116
- Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w
2117
- +2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+
2118
- Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3
2119
- Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B
2120
- 26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID
2121
- AQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD
2122
- VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFul
2123
- F2mHMMo0aEPQQa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCC
2124
- ATgwLgYIKwYBBQUHAgEWImh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5w
2125
- ZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL2ludGVybWVk
2126
- aWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENvbW1lcmNpYWwgKFN0
2127
- YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0aGUg
2128
- c2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0
2129
- aWZpY2F0aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93
2130
- d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgG
2131
- CWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1
2132
- dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5fPGFf59Jb2vKXfuM/gTF
2133
- wWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWmN3PH/UvS
2134
- Ta0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst
2135
- 0OcNOrg+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNc
2136
- pRJvkrKTlMeIFw6Ttn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKl
2137
- CcWw0bdT82AUuoVpaiF8H3VhFyAXe2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVF
2138
- P0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA2MFrLH9ZXF2RsXAiV+uKa0hK
2139
- 1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBsHvUwyKMQ5bLm
2140
- KhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE
2141
- JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ
2142
- 8dCAWZvLMdibD4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnm
2143
- fyWl8kgAwKQB2j8=
2144
- -----END CERTIFICATE-----
2145
-
2146
- # Issuer: CN=StartCom Certification Authority G2 O=StartCom Ltd.
2147
- # Subject: CN=StartCom Certification Authority G2 O=StartCom Ltd.
2148
- # Label: "StartCom Certification Authority G2"
2149
- # Serial: 59
2150
- # MD5 Fingerprint: 78:4b:fb:9e:64:82:0a:d3:b8:4c:62:f3:64:f2:90:64
2151
- # SHA1 Fingerprint: 31:f1:fd:68:22:63:20:ee:c6:3b:3f:9d:ea:4a:3e:53:7c:7c:39:17
2152
- # SHA256 Fingerprint: c7:ba:65:67:de:93:a7:98:ae:1f:aa:79:1e:71:2d:37:8f:ae:1f:93:c4:39:7f:ea:44:1b:b7:cb:e6:fd:59:95
2153
- -----BEGIN CERTIFICATE-----
2154
- MIIFYzCCA0ugAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEW
2155
- MBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlm
2156
- aWNhdGlvbiBBdXRob3JpdHkgRzIwHhcNMTAwMTAxMDEwMDAxWhcNMzkxMjMxMjM1
2157
- OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoG
2158
- A1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgRzIwggIiMA0G
2159
- CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8Oo1XJ
2160
- JZlKxdBWQYeQTSFgpBSHO839sj60ZwNq7eEPS8CRhXBF4EKe3ikj1AENoBB5uNsD
2161
- vfOpL9HG4A/LnooUCri99lZi8cVytjIl2bLzvWXFDSxu1ZJvGIsAQRSCb0AgJnoo
2162
- D/Uefyf3lLE3PbfHkffiAez9lInhzG7TNtYKGXmu1zSCZf98Qru23QumNK9LYP5/
2163
- Q0kGi4xDuFby2X8hQxfqp0iVAXV16iulQ5XqFYSdCI0mblWbq9zSOdIxHWDirMxW
2164
- RST1HFSr7obdljKF+ExP6JV2tgXdNiNnvP8V4so75qbsO+wmETRIjfaAKxojAuuK
2165
- HDp2KntWFhxyKrOq42ClAJ8Em+JvHhRYW6Vsi1g8w7pOOlz34ZYrPu8HvKTlXcxN
2166
- nw3h3Kq74W4a7I/htkxNeXJdFzULHdfBR9qWJODQcqhaX2YtENwvKhOuJv4KHBnM
2167
- 0D4LnMgJLvlblnpHnOl68wVQdJVznjAJ85eCXuaPOQgeWeU1FEIT/wCc976qUM/i
2168
- UUjXuG+v+E5+M5iSFGI6dWPPe/regjupuznixL0sAA7IF6wT700ljtizkC+p2il9
2169
- Ha90OrInwMEePnWjFqmveiJdnxMaz6eg6+OGCtP95paV1yPIN93EfKo2rJgaErHg
2170
- TuixO/XWb/Ew1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE
2171
- AwIBBjAdBgNVHQ4EFgQUS8W0QGutHLOlHGVuRjaJhwUMDrYwDQYJKoZIhvcNAQEL
2172
- BQADggIBAHNXPyzVlTJ+N9uWkusZXn5T50HsEbZH77Xe7XRcxfGOSeD8bpkTzZ+K
2173
- 2s06Ctg6Wgk/XzTQLwPSZh0avZyQN8gMjgdalEVGKua+etqhqaRpEpKwfTbURIfX
2174
- UfEpY9Z1zRbkJ4kd+MIySP3bmdCPX1R0zKxnNBFi2QwKN4fRoxdIjtIXHfbX/dtl
2175
- 6/2o1PXWT6RbdejF0mCy2wl+JYt7ulKSnj7oxXehPOBKc2thz4bcQ///If4jXSRK
2176
- 9dNtD2IEBVeC2m6kMyV5Sy5UGYvMLD0w6dEG/+gyRr61M3Z3qAFdlsHB1b6uJcDJ
2177
- HgoJIIihDsnzb02CVAAgp9KP5DlUFy6NHrgbuxu9mk47EDTcnIhT76IxW1hPkWLI
2178
- wpqazRVdOKnWvvgTtZ8SafJQYqz7Fzf07rh1Z2AQ+4NQ+US1dZxAF7L+/XldblhY
2179
- XzD8AK6vM8EOTmy6p6ahfzLbOOCxchcKK5HsamMm7YnUeMx0HgX4a/6ManY5Ka5l
2180
- IxKVCCIcl85bBu4M4ru8H0ST9tg4RQUh7eStqxK2A6RCLi3ECToDZ2mEmuFZkIoo
2181
- hdVddLHRDiBYmxOlsGOm7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulr
2182
- so8uBtjRkcfGEvRM/TAXw8HaOFvjqermobp573PYtlNXLfbQ4ddI
2183
- -----END CERTIFICATE-----
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Logger/Abstract.php DELETED
@@ -1,410 +0,0 @@
1
- <?php
2
- /*
3
- * Copyright 2014 Google Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- require_once realpath(dirname(__FILE__) . '/../../../autoload.php');
18
-
19
- /**
20
- * Abstract logging class based on the PSR-3 standard.
21
- *
22
- * NOTE: We don't implement `Psr\Log\LoggerInterface` because we need to
23
- * maintain PHP 5.2 support.
24
- *
25
- * @see https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md
26
- */
27
- abstract class Google_Logger_Abstract
28
- {
29
-
30
- /**
31
- * Default log format
32
- */
33
- const DEFAULT_LOG_FORMAT = "[%datetime%] %level%: %message% %context%\n";
34
-
35
- /**
36
- * Default date format
37
- *
38
- * Example: 16/Nov/2014:03:26:16 -0500
39
- */
40
- const DEFAULT_DATE_FORMAT = 'd/M/Y:H:i:s O';
41
-
42
- /**
43
- * System is unusable
44
- */
45
- const EMERGENCY = 'emergency';
46
-
47
- /**
48
- * Action must be taken immediately
49
- *
50
- * Example: Entire website down, database unavailable, etc. This should
51
- * trigger the SMS alerts and wake you up.
52
- */
53
- const ALERT = 'alert';
54
-
55
- /**
56
- * Critical conditions
57
- *
58
- * Example: Application component unavailable, unexpected exception.
59
- */
60
- const CRITICAL = 'critical';
61
-
62
- /**
63
- * Runtime errors that do not require immediate action but should typically
64
- * be logged and monitored.
65
- */
66
- const ERROR = 'error';
67
-
68
- /**
69
- * Exceptional occurrences that are not errors.
70
- *
71
- * Example: Use of deprecated APIs, poor use of an API, undesirable things
72
- * that are not necessarily wrong.
73
- */
74
- const WARNING = 'warning';
75
-
76
- /**
77
- * Normal but significant events.
78
- */
79
- const NOTICE = 'notice';
80
-
81
- /**
82
- * Interesting events.
83
- *
84
- * Example: User logs in, SQL logs.
85
- */
86
- const INFO = 'info';
87
-
88
- /**
89
- * Detailed debug information.
90
- */
91
- const DEBUG = 'debug';
92
-
93
- /**
94
- *
95
- * @var array $levels Logging levels
96
- */
97
- protected static $levels = array(
98
- self::EMERGENCY => 600,
99
- self::ALERT => 550,
100
- self::CRITICAL => 500,
101
- self::ERROR => 400,
102
- self::WARNING => 300,
103
- self::NOTICE => 250,
104
- self::INFO => 200,
105
- self::DEBUG => 100
106
- );
107
-
108
- /**
109
- *
110
- * @var integer $level The minimum logging level
111
- */
112
- protected $level = self::DEBUG;
113
-
114
- /**
115
- *
116
- * @var string $logFormat The current log format
117
- */
118
- protected $logFormat = self::DEFAULT_LOG_FORMAT;
119
-
120
- /**
121
- *
122
- * @var string $dateFormat The current date format
123
- */
124
- protected $dateFormat = self::DEFAULT_DATE_FORMAT;
125
-
126
- /**
127
- *
128
- * @var boolean $allowNewLines If newlines are allowed
129
- */
130
- protected $allowNewLines = false;
131
-
132
- /**
133
- *
134
- * @param Google_Client $client
135
- * The current Google client
136
- */
137
- public function __construct(Google_Client $client)
138
- {
139
- $this->setLevel($client->getClassConfig('Google_Logger_Abstract', 'level'));
140
- $format = $client->getClassConfig('Google_Logger_Abstract', 'log_format');
141
- $this->logFormat = $format ? $format : self::DEFAULT_LOG_FORMAT;
142
- $format = $client->getClassConfig('Google_Logger_Abstract', 'date_format');
143
- $this->dateFormat = $format ? $format : self::DEFAULT_DATE_FORMAT;
144
- $this->allowNewLines = (bool) $client->getClassConfig('Google_Logger_Abstract', 'allow_newlines');
145
- }
146
-
147
- /**
148
- * Sets the minimum logging level that this logger handles.
149
- *
150
- * @param integer $level
151
- */
152
- public function setLevel($level)
153
- {
154
- $this->level = $this->normalizeLevel($level);
155
- }
156
-
157
- /**
158
- * Checks if the logger should handle messages at the provided level.
159
- *
160
- * @param integer $level
161
- * @return boolean
162
- */
163
- public function shouldHandle($level)
164
- {
165
- return $this->normalizeLevel($level) >= $this->level;
166
- }
167
-
168
- /**
169
- * System is unusable.
170
- *
171
- * @param string $message
172
- * The log message
173
- * @param array $context
174
- * The log context
175
- */
176
- public function emergency($message, array $context = array())
177
- {
178
- $this->log(self::EMERGENCY, $message, $context);
179
- }
180
-
181
- /**
182
- * Action must be taken immediately.
183
- *
184
- * Example: Entire website down, database unavailable, etc. This should
185
- * trigger the SMS alerts and wake you up.
186
- *
187
- * @param string $message
188
- * The log message
189
- * @param array $context
190
- * The log context
191
- */
192
- public function alert($message, array $context = array())
193
- {
194
- $this->log(self::ALERT, $message, $context);
195
- }
196
-
197
- /**
198
- * Critical conditions.
199
- *
200
- * Example: Application component unavailable, unexpected exception.
201
- *
202
- * @param string $message
203
- * The log message
204
- * @param array $context
205
- * The log context
206
- */
207
- public function critical($message, array $context = array())
208
- {
209
- $this->log(self::CRITICAL, $message, $context);
210
- }
211
-
212
- /**
213
- * Runtime errors that do not require immediate action but should typically
214
- * be logged and monitored.
215
- *
216
- * @param string $message
217
- * The log message
218
- * @param array $context
219
- * The log context
220
- */
221
- public function error($message, array $context = array())
222
- {
223
- $this->log(self::ERROR, $message, $context);
224
- }
225
-
226
- /**
227
- * Exceptional occurrences that are not errors.
228
- *
229
- * Example: Use of deprecated APIs, poor use of an API, undesirable things
230
- * that are not necessarily wrong.
231
- *
232
- * @param string $message
233
- * The log message
234
- * @param array $context
235
- * The log context
236
- */
237
- public function warning($message, array $context = array())
238
- {
239
- $this->log(self::WARNING, $message, $context);
240
- }
241
-
242
- /**
243
- * Normal but significant events.
244
- *
245
- * @param string $message
246
- * The log message
247
- * @param array $context
248
- * The log context
249
- */
250
- public function notice($message, array $context = array())
251
- {
252
- $this->log(self::NOTICE, $message, $context);
253
- }
254
-
255
- /**
256
- * Interesting events.
257
- *
258
- * Example: User logs in, SQL logs.
259
- *
260
- * @param string $message
261
- * The log message
262
- * @param array $context
263
- * The log context
264
- */
265
- public function info($message, array $context = array())
266
- {
267
- $this->log(self::INFO, $message, $context);
268
- }
269
-
270
- /**
271
- * Detailed debug information.
272
- *
273
- * @param string $message
274
- * The log message
275
- * @param array $context
276
- * The log context
277
- */
278
- public function debug($message, array $context = array())
279
- {
280
- $this->log(self::DEBUG, $message, $context);
281
- }
282
-
283
- /**
284
- * Logs with an arbitrary level.
285
- *
286
- * @param mixed $level
287
- * The log level
288
- * @param string $message
289
- * The log message
290
- * @param array $context
291
- * The log context
292
- */
293
- public function log($level, $message, array $context = array())
294
- {
295
- if (! $this->shouldHandle($level)) {
296
- return false;
297
- }
298
- $levelName = is_int($level) ? array_search($level, self::$levels) : $level;
299
- $message = $this->interpolate(array(
300
- 'message' => $message,
301
- 'context' => $context,
302
- 'level' => strtoupper($levelName),
303
- 'datetime' => new DateTime()
304
- ));
305
- $this->write($message);
306
- }
307
-
308
- /**
309
- * Interpolates log variables into the defined log format.
310
- *
311
- * @param array $variables
312
- * The log variables.
313
- * @return string
314
- */
315
- protected function interpolate(array $variables = array())
316
- {
317
- $template = $this->logFormat;
318
- if (! $variables['context']) {
319
- $template = str_replace('%context%', '', $template);
320
- unset($variables['context']);
321
- } else {
322
- $this->reverseJsonInContext($variables['context']);
323
- }
324
- foreach ($variables as $key => $value) {
325
- if (strpos($template, '%' . $key . '%') !== false) {
326
- $template = str_replace('%' . $key . '%', $this->export($value), $template);
327
- }
328
- }
329
- return $template;
330
- }
331
-
332
- /**
333
- * Reverses JSON encoded PHP arrays and objects so that they log better.
334
- *
335
- * @param array $context
336
- * The log context
337
- */
338
- protected function reverseJsonInContext(array &$context)
339
- {
340
- if (! $context) {
341
- return;
342
- }
343
- foreach ($context as $key => $val) {
344
- if (! $val || ! is_string($val) || ! ($val[0] == '{' || $val[0] == '[')) {
345
- continue;
346
- }
347
- $json = @json_decode($val);
348
- if (is_object($json) || is_array($json)) {
349
- $context[$key] = $json;
350
- }
351
- }
352
- }
353
-
354
- /**
355
- * Exports a PHP value for logging to a string.
356
- *
357
- * @param mixed $value
358
- * The value to
359
- */
360
- protected function export($value)
361
- {
362
- if (is_string($value)) {
363
- if ($this->allowNewLines) {
364
- return $value;
365
- }
366
- return preg_replace('/[\r\n]+/', ' ', $value);
367
- }
368
- if (is_resource($value)) {
369
- return sprintf('resource(%d) of type (%s)', $value, get_resource_type($value));
370
- }
371
- if ($value instanceof DateTime) {
372
- return $value->format($this->dateFormat);
373
- }
374
- if (version_compare(PHP_VERSION, '5.4.0', '>=')) {
375
- $options = JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE;
376
- if ($this->allowNewLines) {
377
- $options |= JSON_PRETTY_PRINT;
378
- }
379
- return @json_encode($value, $options);
380
- }
381
- return str_replace('\\/', '/', @json_encode($value));
382
- }
383
-
384
- /**
385
- * Converts a given log level to the integer form.
386
- *
387
- * @param mixed $level
388
- * The logging level
389
- * @return integer $level The normalized level
390
- * @throws Google_Logger_Exception If $level is invalid
391
- */
392
- protected function normalizeLevel($level)
393
- {
394
- if (is_int($level) && array_search($level, self::$levels) !== false) {
395
- return $level;
396
- }
397
- if (is_string($level) && isset(self::$levels[$level])) {
398
- return self::$levels[$level];
399
- }
400
- throw new Google_Logger_Exception(sprintf("Unknown LogLevel: '%s'", $level));
401
- }
402
-
403
- /**
404
- * Writes a message to the current log implementation.
405
- *
406
- * @param string $message
407
- * The message
408
- */
409
- abstract protected function write($message);
410
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Logger/File.php DELETED
@@ -1,149 +0,0 @@
1
- <?php
2
- /*
3
- * Copyright 2014 Google Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- require_once realpath(dirname(__FILE__) . '/../../../autoload.php');
18
-
19
- /**
20
- * File logging class based on the PSR-3 standard.
21
- *
22
- * This logger writes to a PHP stream resource.
23
- */
24
- class Google_Logger_File extends Google_Logger_Abstract
25
- {
26
-
27
- /**
28
- *
29
- * @var string|resource $file Where logs are written
30
- */
31
- private $file;
32
-
33
- /**
34
- *
35
- * @var integer $mode The mode to use if the log file needs to be created
36
- */
37
- private $mode = 0640;
38
-
39
- /**
40
- *
41
- * @var boolean $lock If a lock should be attempted before writing to the log
42
- */
43
- private $lock = false;
44
-
45
- /**
46
- *
47
- * @var integer $trappedErrorNumber Trapped error number
48
- */
49
- private $trappedErrorNumber;
50
-
51
- /**
52
- *
53
- * @var string $trappedErrorString Trapped error string
54
- */
55
- private $trappedErrorString;
56
-
57
- /**
58
- * @ERROR!!!
59
- */
60
- public function __construct(Google_Client $client)
61
- {
62
- parent::__construct($client);
63
- $file = $client->getClassConfig('Google_Logger_File', 'file');
64
- if (! is_string($file) && ! is_resource($file)) {
65
- throw new Google_Logger_Exception('File logger requires a filename or a valid file pointer');
66
- }
67
- $mode = $client->getClassConfig('Google_Logger_File', 'mode');
68
- if (! $mode) {
69
- $this->mode = $mode;
70
- }
71
- $this->lock = (bool) $client->getClassConfig('Google_Logger_File', 'lock');
72
- $this->file = $file;
73
- }
74
-
75
- /**
76
- * @ERROR!!!
77
- */
78
- protected function write($message)
79
- {
80
- if (is_string($this->file)) {
81
- $this->open();
82
- } elseif (! is_resource($this->file)) {
83
- throw new Google_Logger_Exception('File pointer is no longer available');
84
- }
85
- if ($this->lock) {
86
- flock($this->file, LOCK_EX);
87
- }
88
- fwrite($this->file, (string) $message);
89
- if ($this->lock) {
90
- flock($this->file, LOCK_UN);
91
- }
92
- }
93
-
94
- /**
95
- * Opens the log for writing.
96
- *
97
- * @return resource
98
- */
99
- private function open()
100
- {
101
- // Used for trapping `fopen()` errors.
102
- $this->trappedErrorNumber = null;
103
- $this->trappedErrorString = null;
104
- $old = set_error_handler(array(
105
- $this,
106
- 'trapError'
107
- ));
108
- $needsChmod = ! file_exists($this->file);
109
- $fh = fopen($this->file, 'a');
110
- restore_error_handler();
111
- // Handles trapped `fopen()` errors.
112
- if ($this->trappedErrorNumber) {
113
- throw new Google_Logger_Exception(sprintf("Logger Error: '%s'", $this->trappedErrorString), $this->trappedErrorNumber);
114
- }
115
- if ($needsChmod) {
116
- @chmod($this->file, $this->mode & ~ umask());
117
- }
118
- return $this->file = $fh;
119
- }
120
-
121
- /**
122
- * Closes the log stream resource.
123
- */
124
- private function close()
125
- {
126
- if (is_resource($this->file)) {
127
- fclose($this->file);
128
- }
129
- }
130
-
131
- /**
132
- * Traps `fopen()` errors.
133
- *
134
- * @param integer $errno
135
- * The error number
136
- * @param string $errstr
137
- * The error string
138
- */
139
- private function trapError($errno, $errstr)
140
- {
141
- $this->trappedErrorNumber = $errno;
142
- $this->trappedErrorString = $errstr;
143
- }
144
-
145
- public function __destruct()
146
- {
147
- $this->close();
148
- }
149
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Logger/Psr.php DELETED
@@ -1,93 +0,0 @@
1
- <?php
2
- /*
3
- * Copyright 2014 Google Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- require_once realpath(dirname(__FILE__) . '/../../../autoload.php');
18
-
19
- /**
20
- * Psr logging class based on the PSR-3 standard.
21
- *
22
- * This logger will delegate all logging to a PSR-3 compatible logger specified
23
- * with the `Google_Logger_Psr::setLogger()` method.
24
- */
25
- class Google_Logger_Psr extends Google_Logger_Abstract
26
- {
27
-
28
- /**
29
- *
30
- * @param Psr\Log\LoggerInterface $logger
31
- * The PSR-3 logger
32
- */
33
- private $logger;
34
-
35
- /**
36
- *
37
- * @param Google_Client $client
38
- * The current Google client
39
- * @param Psr\Log\LoggerInterface $logger
40
- * PSR-3 logger where logging will be delegated.
41
- */
42
- public function __construct(Google_Client $client, /*Psr\Log\LoggerInterface*/ $logger = null)
43
- {
44
- parent::__construct($client);
45
- if ($logger) {
46
- $this->setLogger($logger);
47
- }
48
- }
49
-
50
- /**
51
- * Sets the PSR-3 logger where logging will be delegated.
52
- *
53
- * NOTE: The `$logger` should technically implement
54
- * `Psr\Log\LoggerInterface`, but we don't explicitly require this so that
55
- * we can be compatible with PHP 5.2.
56
- *
57
- * @param Psr\Log\LoggerInterface $logger
58
- * The PSR-3 logger
59
- */
60
- public function setLogger(/*Psr\Log\LoggerInterface*/ $logger)
61
- {
62
- $this->logger = $logger;
63
- }
64
-
65
- /**
66
- * @ERROR!!!
67
- */
68
- public function shouldHandle($level)
69
- {
70
- return isset($this->logger) && parent::shouldHandle($level);
71
- }
72
-
73
- /**
74
- * @ERROR!!!
75
- */
76
- public function log($level, $message, array $context = array())
77
- {
78
- if (! $this->shouldHandle($level)) {
79
- return false;
80
- }
81
- if ($context) {
82
- $this->reverseJsonInContext($context);
83
- }
84
- $levelName = is_int($level) ? array_search($level, self::$levels) : $level;
85
- $this->logger->log($levelName, $message, $context);
86
- }
87
-
88
- /**
89
- * @ERROR!!!
90
- */
91
- protected function write($message, array $context = array())
92
- {}
93
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Model.php DELETED
@@ -1,283 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * Copyright 2011 Google Inc.
5
- *
6
- * Licensed under the Apache License, Version 2.0 (the "License");
7
- * you may not use this file except in compliance with the License.
8
- * You may obtain a copy of the License at
9
- *
10
- * http://www.apache.org/licenses/LICENSE-2.0
11
- *
12
- * Unless required by applicable law or agreed to in writing, software
13
- * distributed under the License is distributed on an "AS IS" BASIS,
14
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- * See the License for the specific language governing permissions and
16
- * limitations under the License.
17
- */
18
- /**
19
- * This class defines attributes, valid values, and usage which is generated
20
- * from a given json schema.
21
- * http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5
22
- *
23
- * @author Chirag Shah <chirags@google.com>
24
- *
25
- */
26
- class Google_Model implements ArrayAccess
27
- {
28
-
29
- protected $internal_gapi_mappings = array();
30
-
31
- protected $modelData = array();
32
-
33
- protected $processed = array();
34
-
35
- /**
36
- * Polymorphic - accepts a variable number of arguments dependent
37
- * on the type of the model subclass.
38
- */
39
- final public function __construct()
40
- {
41
- if (func_num_args() == 1 && is_array(func_get_arg(0))) {
42
- // Initialize the model with the array's contents.
43
- $array = func_get_arg(0);
44
- $this->mapTypes($array);
45
- }
46
- $this->gapiInit();
47
- }
48
-
49
- /**
50
- * Getter that handles passthrough access to the data array, and lazy object creation.
51
- *
52
- * @param string $key
53
- * Property name.
54
- * @return mixed The value if any, or null.
55
- */
56
- public function __get($key)
57
- {
58
- $keyTypeName = $this->keyType($key);
59
- $keyDataType = $this->dataType($key);
60
- if (isset($this->$keyTypeName) && ! isset($this->processed[$key])) {
61
- if (isset($this->modelData[$key])) {
62
- $val = $this->modelData[$key];
63
- } else
64
- if (isset($this->$keyDataType) && ($this->$keyDataType == 'array' || $this->$keyDataType == 'map')) {
65
- $val = array();
66
- } else {
67
- $val = null;
68
- }
69
- if ($this->isAssociativeArray($val)) {
70
- if (isset($this->$keyDataType) && 'map' == $this->$keyDataType) {
71
- foreach ($val as $arrayKey => $arrayItem) {
72
- $this->modelData[$key][$arrayKey] = $this->createObjectFromName($keyTypeName, $arrayItem);
73
- }
74
- } else {
75
- $this->modelData[$key] = $this->createObjectFromName($keyTypeName, $val);
76
- }
77
- } else
78
- if (is_array($val)) {
79
- $arrayObject = array();
80
- foreach ($val as $arrayIndex => $arrayItem) {
81
- $arrayObject[$arrayIndex] = $this->createObjectFromName($keyTypeName, $arrayItem);
82
- }
83
- $this->modelData[$key] = $arrayObject;
84
- }
85
- $this->processed[$key] = true;
86
- }
87
- return isset($this->modelData[$key]) ? $this->modelData[$key] : null;
88
- }
89
-
90
- /**
91
- * Initialize this object's properties from an array.
92
- *
93
- * @param array $array
94
- * Used to seed this object's properties.
95
- * @return void
96
- */
97
- protected function mapTypes($array)
98
- {
99
- // Hard initilise simple types, lazy load more complex ones.
100
- foreach ($array as $key => $val) {
101
- if (! property_exists($this, $this->keyType($key)) && property_exists($this, $key)) {
102
- $this->$key = $val;
103
- unset($array[$key]);
104
- } elseif (property_exists($this, $camelKey = Google_Utils::camelCase($key))) {
105
- // This checks if property exists as camelCase, leaving it in array as snake_case
106
- // in case of backwards compatibility issues.
107
- $this->$camelKey = $val;
108
- }
109
- }
110
- $this->modelData = $array;
111
- }
112
-
113
- /**
114
- * Blank initialiser to be used in subclasses to do post-construction initialisation - this
115
- * avoids the need for subclasses to have to implement the variadics handling in their
116
- * constructors.
117
- */
118
- protected function gapiInit()
119
- {
120
- return;
121
- }
122
-
123
- /**
124
- * Create a simplified object suitable for straightforward
125
- * conversion to JSON.
126
- * This is relatively expensive
127
- * due to the usage of reflection, but shouldn't be called
128
- * a whole lot, and is the most straightforward way to filter.
129
- */
130
- public function toSimpleObject()
131
- {
132
- $object = new stdClass();
133
- // Process all other data.
134
- foreach ($this->modelData as $key => $val) {
135
- $result = $this->getSimpleValue($val);
136
- if ($result !== null) {
137
- $object->$key = $result;
138
- }
139
- }
140
- // Process all public properties.
141
- $reflect = new ReflectionObject($this);
142
- $props = $reflect->getProperties(ReflectionProperty::IS_PUBLIC);
143
- foreach ($props as $member) {
144
- $name = $member->getName();
145
- $result = $this->getSimpleValue($this->$name);
146
- if ($result !== null) {
147
- $name = $this->getMappedName($name);
148
- $object->$name = $result;
149
- }
150
- }
151
- return $object;
152
- }
153
-
154
- /**
155
- * Handle different types of values, primarily
156
- * other objects and map and array data types.
157
- */
158
- private function getSimpleValue($value)
159
- {
160
- if ($value instanceof Google_Model) {
161
- return $value->toSimpleObject();
162
- } else
163
- if (is_array($value)) {
164
- $return = array();
165
- foreach ($value as $key => $a_value) {
166
- $a_value = $this->getSimpleValue($a_value);
167
- if ($a_value !== null) {
168
- $key = $this->getMappedName($key);
169
- $return[$key] = $a_value;
170
- }
171
- }
172
- return $return;
173
- }
174
- return $value;
175
- }
176
-
177
- /**
178
- * If there is an internal name mapping, use that.
179
- */
180
- private function getMappedName($key)
181
- {
182
- if (isset($this->internal_gapi_mappings) && isset($this->internal_gapi_mappings[$key])) {
183
- $key = $this->internal_gapi_mappings[$key];
184
- }
185
- return $key;
186
- }
187
-
188
- /**
189
- * Returns true only if the array is associative.
190
- *
191
- * @param array $array
192
- * @return bool True if the array is associative.
193
- */
194
- protected function isAssociativeArray($array)
195
- {
196
- if (! is_array($array)) {
197
- return false;
198
- }
199
- $keys = array_keys($array);
200
- foreach ($keys as $key) {
201
- if (is_string($key)) {
202
- return true;
203
- }
204
- }
205
- return false;
206
- }
207
-
208
- /**
209
- * Given a variable name, discover its type.
210
- *
211
- * @param
212
- * $name
213
- * @param
214
- * $item
215
- * @return object The object from the item.
216
- */
217
- private function createObjectFromName($name, $item)
218
- {
219
- $type = $this->$name;
220
- return new $type($item);
221
- }
222
-
223
- /**
224
- * Verify if $obj is an array.
225
- *
226
- * @throws Google_Exception Thrown if $obj isn't an array.
227
- * @param array $obj
228
- * Items that should be validated.
229
- * @param string $method
230
- * Method expecting an array as an argument.
231
- */
232
- public function assertIsArray($obj, $method)
233
- {
234
- if ($obj && ! is_array($obj)) {
235
- throw new Google_Exception("Incorrect parameter type passed to $method(). Expected an array.");
236
- }
237
- }
238
-
239
- public function offsetExists($offset)
240
- {
241
- return isset($this->$offset) || isset($this->modelData[$offset]);
242
- }
243
-
244
- public function offsetGet($offset)
245
- {
246
- return isset($this->$offset) ? $this->$offset : $this->__get($offset);
247
- }
248
-
249
- public function offsetSet($offset, $value)
250
- {
251
- if (property_exists($this, $offset)) {
252
- $this->$offset = $value;
253
- } else {
254
- $this->modelData[$offset] = $value;
255
- $this->processed[$offset] = true;
256
- }
257
- }
258
-
259
- public function offsetUnset($offset)
260
- {
261
- unset($this->modelData[$offset]);
262
- }
263
-
264
- protected function keyType($key)
265
- {
266
- return $key . "Type";
267
- }
268
-
269
- protected function dataType($key)
270
- {
271
- return $key . "DataType";
272
- }
273
-
274
- public function __isset($key)
275
- {
276
- return isset($this->modelData[$key]);
277
- }
278
-
279
- public function __unset($key)
280
- {
281
- unset($this->modelData[$key]);
282
- }
283
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Service.php DELETED
@@ -1,45 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * Copyright 2010 Google Inc.
5
- *
6
- * Licensed under the Apache License, Version 2.0 (the "License");
7
- * you may not use this file except in compliance with the License.
8
- * You may obtain a copy of the License at
9
- *
10
- * http://www.apache.org/licenses/LICENSE-2.0
11
- *
12
- * Unless required by applicable law or agreed to in writing, software
13
- * distributed under the License is distributed on an "AS IS" BASIS,
14
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- * See the License for the specific language governing permissions and
16
- * limitations under the License.
17
- */
18
- class Google_Service
19
- {
20
-
21
- public $version;
22
-
23
- public $servicePath;
24
-
25
- public $availableScopes;
26
-
27
- public $resource;
28
-
29
- private $client;
30
-
31
- public function __construct(Google_Client $client)
32
- {
33
- $this->client = $client;
34
- }
35
-
36
- /**
37
- * Return the associated Google_Client class.
38
- *
39
- * @return Google_Client
40
- */
41
- public function getClient()
42
- {
43
- return $this->client;
44
- }
45
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Service/Analytics.php DELETED
@@ -1,11796 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * Copyright 2010 Google Inc.
5
- *
6
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
7
- * use this file except in compliance with the License. You may obtain a copy of
8
- * the License at
9
- *
10
- * http://www.apache.org/licenses/LICENSE-2.0
11
- *
12
- * Unless required by applicable law or agreed to in writing, software
13
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15
- * License for the specific language governing permissions and limitations under
16
- * the License.
17
- */
18
- /**
19
- * Service definition for Analytics (v3).
20
- *
21
- * <p>
22
- * View and manage your Google Analytics data</p>
23
- *
24
- * <p>
25
- * For more information about this service, see the API
26
- * <a href="https://developers.google.com/analytics/" target="_blank">Documentation</a>
27
- * </p>
28
- *
29
- * @author Google, Inc.
30
- */
31
- class Google_Service_Analytics extends Google_Service
32
- {
33
-
34
- /**
35
- * View and manage your Google Analytics data.
36
- */
37
- const ANALYTICS = "https://www.googleapis.com/auth/analytics";
38
-
39
- /**
40
- * Edit Google Analytics management entities.
41
- */
42
- const ANALYTICS_EDIT = "https://www.googleapis.com/auth/analytics.edit";
43
-
44
- /**
45
- * Manage Google Analytics Account users by email address.
46
- */
47
- const ANALYTICS_MANAGE_USERS = "https://www.googleapis.com/auth/analytics.manage.users";
48
-
49
- /**
50
- * View Google Analytics user permissions.
51
- */
52
- const ANALYTICS_MANAGE_USERS_READONLY = "https://www.googleapis.com/auth/analytics.manage.users.readonly";
53
-
54
- /**
55
- * Create a new Google Analytics account along with its default property and view.
56
- */
57
- const ANALYTICS_PROVISION = "https://www.googleapis.com/auth/analytics.provision";
58
-
59
- /**
60
- * View your Google Analytics data.
61
- */
62
- const ANALYTICS_READONLY = "https://www.googleapis.com/auth/analytics.readonly";
63
-
64
- public $data_ga;
65
-
66
- public $data_mcf;
67
-
68
- public $data_realtime;
69
-
70
- public $management_accountSummaries;
71
-
72
- public $management_accountUserLinks;
73
-
74
- public $management_accounts;
75
-
76
- public $management_customDataSources;
77
-
78
- public $management_dailyUploads;
79
-
80
- public $management_experiments;
81
-
82
- public $management_filters;
83
-
84
- public $management_goals;
85
-
86
- public $management_profileFilterLinks;
87
-
88
- public $management_profileUserLinks;
89
-
90
- public $management_profiles;
91
-
92
- public $management_segments;
93
-
94
- public $management_unsampledReports;
95
-
96
- public $management_uploads;
97
-
98
- public $management_webPropertyAdWordsLinks;
99
-
100
- public $management_webproperties;
101
-
102
- public $management_webpropertyUserLinks;
103
-
104
- public $metadata_columns;
105
-
106
- public $provisioning;
107
-
108
- /**
109
- * Constructs the internal representation of the Analytics service.
110
- *
111
- * @param Google_Client $client
112
- */
113
- public function __construct(Google_Client $client)
114
- {
115
- parent::__construct($client);
116
- $this->servicePath = 'analytics/v3/';
117
- $this->version = 'v3';
118
- $this->serviceName = 'analytics';
119
- $this->data_ga = new Google_Service_Analytics_DataGa_Resource($this, $this->serviceName, 'ga', array(
120
- 'methods' => array(
121
- 'get' => array(
122
- 'path' => 'data/ga',
123
- 'httpMethod' => 'GET',
124
- 'parameters' => array(
125
- 'ids' => array(
126
- 'location' => 'query',
127
- 'type' => 'string',
128
- 'required' => true
129
- ),
130
- 'start-date' => array(
131
- 'location' => 'query',
132
- 'type' => 'string',
133
- 'required' => true
134
- ),
135
- 'end-date' => array(
136
- 'location' => 'query',
137
- 'type' => 'string',
138
- 'required' => true
139
- ),
140
- 'metrics' => array(
141
- 'location' => 'query',
142
- 'type' => 'string',
143
- 'required' => true
144
- ),
145
- 'max-results' => array(
146
- 'location' => 'query',
147
- 'type' => 'integer'
148
- ),
149
- 'sort' => array(
150
- 'location' => 'query',
151
- 'type' => 'string'
152
- ),
153
- 'dimensions' => array(
154
- 'location' => 'query',
155
- 'type' => 'string'
156
- ),
157
- 'start-index' => array(
158
- 'location' => 'query',
159
- 'type' => 'integer'
160
- ),
161
- 'segment' => array(
162
- 'location' => 'query',
163
- 'type' => 'string'
164
- ),
165
- 'samplingLevel' => array(
166
- 'location' => 'query',
167
- 'type' => 'string'
168
- ),
169
- 'filters' => array(
170
- 'location' => 'query',
171
- 'type' => 'string'
172
- ),
173
- 'output' => array(
174
- 'location' => 'query',
175
- 'type' => 'string'
176
- )
177
- )
178
- )
179
- )
180
- ));
181
- $this->data_mcf = new Google_Service_Analytics_DataMcf_Resource($this, $this->serviceName, 'mcf', array(
182
- 'methods' => array(
183
- 'get' => array(
184
- 'path' => 'data/mcf',
185
- 'httpMethod' => 'GET',
186
- 'parameters' => array(
187
- 'ids' => array(
188
- 'location' => 'query',
189
- 'type' => 'string',
190
- 'required' => true
191
- ),
192
- 'start-date' => array(
193
- 'location' => 'query',
194
- 'type' => 'string',
195
- 'required' => true
196
- ),
197
- 'end-date' => array(
198
- 'location' => 'query',
199
- 'type' => 'string',
200
- 'required' => true
201
- ),
202
- 'metrics' => array(
203
- 'location' => 'query',
204
- 'type' => 'string',
205
- 'required' => true
206
- ),
207
- 'max-results' => array(
208
- 'location' => 'query',
209
- 'type' => 'integer'
210
- ),
211
- 'sort' => array(
212
- 'location' => 'query',
213
- 'type' => 'string'
214
- ),
215
- 'dimensions' => array(
216
- 'location' => 'query',
217
- 'type' => 'string'
218
- ),
219
- 'start-index' => array(
220
- 'location' => 'query',
221
- 'type' => 'integer'
222
- ),
223
- 'samplingLevel' => array(
224
- 'location' => 'query',
225
- 'type' => 'string'
226
- ),
227
- 'filters' => array(
228
- 'location' => 'query',
229
- 'type' => 'string'
230
- )
231
- )
232
- )
233
- )
234
- ));
235
- $this->data_realtime = new Google_Service_Analytics_DataRealtime_Resource($this, $this->serviceName, 'realtime', array(
236
- 'methods' => array(
237
- 'get' => array(
238
- 'path' => 'data/realtime',
239
- 'httpMethod' => 'GET',
240
- 'parameters' => array(
241
- 'ids' => array(
242
- 'location' => 'query',
243
- 'type' => 'string',
244
- 'required' => true
245
- ),
246
- 'metrics' => array(
247
- 'location' => 'query',
248
- 'type' => 'string',
249
- 'required' => true
250
- ),
251
- 'max-results' => array(
252
- 'location' => 'query',
253
- 'type' => 'integer'
254
- ),
255
- 'sort' => array(
256
- 'location' => 'query',
257
- 'type' => 'string'
258
- ),
259
- 'dimensions' => array(
260
- 'location' => 'query',
261
- 'type' => 'string'
262
- ),
263
- 'filters' => array(
264
- 'location' => 'query',
265
- 'type' => 'string'
266
- )
267
- )
268
- )
269
- )
270
- ));
271
- $this->management_accountSummaries = new Google_Service_Analytics_ManagementAccountSummaries_Resource($this, $this->serviceName, 'accountSummaries', array(
272
- 'methods' => array(
273
- 'list' => array(
274
- 'path' => 'management/accountSummaries',
275
- 'httpMethod' => 'GET',
276
- 'parameters' => array(
277
- 'max-results' => array(
278
- 'location' => 'query',
279
- 'type' => 'integer'
280
- ),
281
- 'start-index' => array(
282
- 'location' => 'query',
283
- 'type' => 'integer'
284
- )
285
- )
286
- )
287
- )
288
- ));
289
- $this->management_accountUserLinks = new Google_Service_Analytics_ManagementAccountUserLinks_Resource($this, $this->serviceName, 'accountUserLinks', array(
290
- 'methods' => array(
291
- 'delete' => array(
292
- 'path' => 'management/accounts/{accountId}/entityUserLinks/{linkId}',
293
- 'httpMethod' => 'DELETE',
294
- 'parameters' => array(
295
- 'accountId' => array(
296
- 'location' => 'path',
297
- 'type' => 'string',
298
- 'required' => true
299
- ),
300
- 'linkId' => array(
301
- 'location' => 'path',
302
- 'type' => 'string',
303
- 'required' => true
304
- )
305
- )
306
- ),
307
- 'insert' => array(
308
- 'path' => 'management/accounts/{accountId}/entityUserLinks',
309
- 'httpMethod' => 'POST',
310
- 'parameters' => array(
311
- 'accountId' => array(
312
- 'location' => 'path',
313
- 'type' => 'string',
314
- 'required' => true
315
- )
316
- )
317
- ),
318
- 'list' => array(
319
- 'path' => 'management/accounts/{accountId}/entityUserLinks',
320
- 'httpMethod' => 'GET',
321
- 'parameters' => array(
322
- 'accountId' => array(
323
- 'location' => 'path',
324
- 'type' => 'string',
325
- 'required' => true
326
- ),
327
- 'max-results' => array(
328
- 'location' => 'query',
329
- 'type' => 'integer'
330
- ),
331
- 'start-index' => array(
332
- 'location' => 'query',
333
- 'type' => 'integer'
334
- )
335
- )
336
- ),
337
- 'update' => array(
338
- 'path' => 'management/accounts/{accountId}/entityUserLinks/{linkId}',
339
- 'httpMethod' => 'PUT',
340
- 'parameters' => array(
341
- 'accountId' => array(
342
- 'location' => 'path',
343
- 'type' => 'string',
344
- 'required' => true
345
- ),
346
- 'linkId' => array(
347
- 'location' => 'path',
348
- 'type' => 'string',
349
- 'required' => true
350
- )
351
- )
352
- )
353
- )
354
- ));
355
- $this->management_accounts = new Google_Service_Analytics_ManagementAccounts_Resource($this, $this->serviceName, 'accounts', array(
356
- 'methods' => array(
357
- 'list' => array(
358
- 'path' => 'management/accounts',
359
- 'httpMethod' => 'GET',
360
- 'parameters' => array(
361
- 'max-results' => array(
362
- 'location' => 'query',
363
- 'type' => 'integer'
364
- ),
365
- 'start-index' => array(
366
- 'location' => 'query',
367
- 'type' => 'integer'
368
- )
369
- )
370
- )
371
- )
372
- ));
373
- $this->management_customDataSources = new Google_Service_Analytics_ManagementCustomDataSources_Resource($this, $this->serviceName, 'customDataSources', array(
374
- 'methods' => array(
375
- 'list' => array(
376
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDataSources',
377
- 'httpMethod' => 'GET',
378
- 'parameters' => array(
379
- 'accountId' => array(
380
- 'location' => 'path',
381
- 'type' => 'string',
382
- 'required' => true
383
- ),
384
- 'webPropertyId' => array(
385
- 'location' => 'path',
386
- 'type' => 'string',
387
- 'required' => true
388
- ),
389
- 'max-results' => array(
390
- 'location' => 'query',
391
- 'type' => 'integer'
392
- ),
393
- 'start-index' => array(
394
- 'location' => 'query',
395
- 'type' => 'integer'
396
- )
397
- )
398
- )
399
- )
400
- ));
401
- $this->management_dailyUploads = new Google_Service_Analytics_ManagementDailyUploads_Resource($this, $this->serviceName, 'dailyUploads', array(
402
- 'methods' => array(
403
- 'delete' => array(
404
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDataSources/{customDataSourceId}/dailyUploads/{date}',
405
- 'httpMethod' => 'DELETE',
406
- 'parameters' => array(
407
- 'accountId' => array(
408
- 'location' => 'path',
409
- 'type' => 'string',
410
- 'required' => true
411
- ),
412
- 'webPropertyId' => array(
413
- 'location' => 'path',
414
- 'type' => 'string',
415
- 'required' => true
416
- ),
417
- 'customDataSourceId' => array(
418
- 'location' => 'path',
419
- 'type' => 'string',
420
- 'required' => true
421
- ),
422
- 'date' => array(
423
- 'location' => 'path',
424
- 'type' => 'string',
425
- 'required' => true
426
- ),
427
- 'type' => array(
428
- 'location' => 'query',
429
- 'type' => 'string',
430
- 'required' => true
431
- )
432
- )
433
- ),
434
- 'list' => array(
435
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDataSources/{customDataSourceId}/dailyUploads',
436
- 'httpMethod' => 'GET',
437
- 'parameters' => array(
438
- 'accountId' => array(
439
- 'location' => 'path',
440
- 'type' => 'string',
441
- 'required' => true
442
- ),
443
- 'webPropertyId' => array(
444
- 'location' => 'path',
445
- 'type' => 'string',
446
- 'required' => true
447
- ),
448
- 'customDataSourceId' => array(
449
- 'location' => 'path',
450
- 'type' => 'string',
451
- 'required' => true
452
- ),
453
- 'start-date' => array(
454
- 'location' => 'query',
455
- 'type' => 'string',
456
- 'required' => true
457
- ),
458
- 'end-date' => array(
459
- 'location' => 'query',
460
- 'type' => 'string',
461
- 'required' => true
462
- ),
463
- 'max-results' => array(
464
- 'location' => 'query',
465
- 'type' => 'integer'
466
- ),
467
- 'start-index' => array(
468
- 'location' => 'query',
469
- 'type' => 'integer'
470
- )
471
- )
472
- ),
473
- 'upload' => array(
474
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDataSources/{customDataSourceId}/dailyUploads/{date}/uploads',
475
- 'httpMethod' => 'POST',
476
- 'parameters' => array(
477
- 'accountId' => array(
478
- 'location' => 'path',
479
- 'type' => 'string',
480
- 'required' => true
481
- ),
482
- 'webPropertyId' => array(
483
- 'location' => 'path',
484
- 'type' => 'string',
485
- 'required' => true
486
- ),
487
- 'customDataSourceId' => array(
488
- 'location' => 'path',
489
- 'type' => 'string',
490
- 'required' => true
491
- ),
492
- 'date' => array(
493
- 'location' => 'path',
494
- 'type' => 'string',
495
- 'required' => true
496
- ),
497
- 'appendNumber' => array(
498
- 'location' => 'query',
499
- 'type' => 'integer',
500
- 'required' => true
501
- ),
502
- 'type' => array(
503
- 'location' => 'query',
504
- 'type' => 'string',
505
- 'required' => true
506
- ),
507
- 'reset' => array(
508
- 'location' => 'query',
509
- 'type' => 'boolean'
510
- )
511
- )
512
- )
513
- )
514
- ));
515
- $this->management_experiments = new Google_Service_Analytics_ManagementExperiments_Resource($this, $this->serviceName, 'experiments', array(
516
- 'methods' => array(
517
- 'delete' => array(
518
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/experiments/{experimentId}',
519
- 'httpMethod' => 'DELETE',
520
- 'parameters' => array(
521
- 'accountId' => array(
522
- 'location' => 'path',
523
- 'type' => 'string',
524
- 'required' => true
525
- ),
526
- 'webPropertyId' => array(
527
- 'location' => 'path',
528
- 'type' => 'string',
529
- 'required' => true
530
- ),
531
- 'profileId' => array(
532
- 'location' => 'path',
533
- 'type' => 'string',
534
- 'required' => true
535
- ),
536
- 'experimentId' => array(
537
- 'location' => 'path',
538
- 'type' => 'string',
539
- 'required' => true
540
- )
541
- )
542
- ),
543
- 'get' => array(
544
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/experiments/{experimentId}',
545
- 'httpMethod' => 'GET',
546
- 'parameters' => array(
547
- 'accountId' => array(
548
- 'location' => 'path',
549
- 'type' => 'string',
550
- 'required' => true
551
- ),
552
- 'webPropertyId' => array(
553
- 'location' => 'path',
554
- 'type' => 'string',
555
- 'required' => true
556
- ),
557
- 'profileId' => array(
558
- 'location' => 'path',
559
- 'type' => 'string',
560
- 'required' => true
561
- ),
562
- 'experimentId' => array(
563
- 'location' => 'path',
564
- 'type' => 'string',
565
- 'required' => true
566
- )
567
- )
568
- ),
569
- 'insert' => array(
570
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/experiments',
571
- 'httpMethod' => 'POST',
572
- 'parameters' => array(
573
- 'accountId' => array(
574
- 'location' => 'path',
575
- 'type' => 'string',
576
- 'required' => true
577
- ),
578
- 'webPropertyId' => array(
579
- 'location' => 'path',
580
- 'type' => 'string',
581
- 'required' => true
582
- ),
583
- 'profileId' => array(
584
- 'location' => 'path',
585
- 'type' => 'string',
586
- 'required' => true
587
- )
588
- )
589
- ),
590
- 'list' => array(
591
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/experiments',
592
- 'httpMethod' => 'GET',
593
- 'parameters' => array(
594
- 'accountId' => array(
595
- 'location' => 'path',
596
- 'type' => 'string',
597
- 'required' => true
598
- ),
599
- 'webPropertyId' => array(
600
- 'location' => 'path',
601
- 'type' => 'string',
602
- 'required' => true
603
- ),
604
- 'profileId' => array(
605
- 'location' => 'path',
606
- 'type' => 'string',
607
- 'required' => true
608
- ),
609
- 'max-results' => array(
610
- 'location' => 'query',
611
- 'type' => 'integer'
612
- ),
613
- 'start-index' => array(
614
- 'location' => 'query',
615
- 'type' => 'integer'
616
- )
617
- )
618
- ),
619
- 'patch' => array(
620
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/experiments/{experimentId}',
621
- 'httpMethod' => 'PATCH',
622
- 'parameters' => array(
623
- 'accountId' => array(
624
- 'location' => 'path',
625
- 'type' => 'string',
626
- 'required' => true
627
- ),
628
- 'webPropertyId' => array(
629
- 'location' => 'path',
630
- 'type' => 'string',
631
- 'required' => true
632
- ),
633
- 'profileId' => array(
634
- 'location' => 'path',
635
- 'type' => 'string',
636
- 'required' => true
637
- ),
638
- 'experimentId' => array(
639
- 'location' => 'path',
640
- 'type' => 'string',
641
- 'required' => true
642
- )
643
- )
644
- ),
645
- 'update' => array(
646
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/experiments/{experimentId}',
647
- 'httpMethod' => 'PUT',
648
- 'parameters' => array(
649
- 'accountId' => array(
650
- 'location' => 'path',
651
- 'type' => 'string',
652
- 'required' => true
653
- ),
654
- 'webPropertyId' => array(
655
- 'location' => 'path',
656
- 'type' => 'string',
657
- 'required' => true
658
- ),
659
- 'profileId' => array(
660
- 'location' => 'path',
661
- 'type' => 'string',
662
- 'required' => true
663
- ),
664
- 'experimentId' => array(
665
- 'location' => 'path',
666
- 'type' => 'string',
667
- 'required' => true
668
- )
669
- )
670
- )
671
- )
672
- ));
673
- $this->management_filters = new Google_Service_Analytics_ManagementFilters_Resource($this, $this->serviceName, 'filters', array(
674
- 'methods' => array(
675
- 'delete' => array(
676
- 'path' => 'management/accounts/{accountId}/filters/{filterId}',
677
- 'httpMethod' => 'DELETE',
678
- 'parameters' => array(
679
- 'accountId' => array(
680
- 'location' => 'path',
681
- 'type' => 'string',
682
- 'required' => true
683
- ),
684
- 'filterId' => array(
685
- 'location' => 'path',
686
- 'type' => 'string',
687
- 'required' => true
688
- )
689
- )
690
- ),
691
- 'get' => array(
692
- 'path' => 'management/accounts/{accountId}/filters/{filterId}',
693
- 'httpMethod' => 'GET',
694
- 'parameters' => array(
695
- 'accountId' => array(
696
- 'location' => 'path',
697
- 'type' => 'string',
698
- 'required' => true
699
- ),
700
- 'filterId' => array(
701
- 'location' => 'path',
702
- 'type' => 'string',
703
- 'required' => true
704
- )
705
- )
706
- ),
707
- 'insert' => array(
708
- 'path' => 'management/accounts/{accountId}/filters',
709
- 'httpMethod' => 'POST',
710
- 'parameters' => array(
711
- 'accountId' => array(
712
- 'location' => 'path',
713
- 'type' => 'string',
714
- 'required' => true
715
- )
716
- )
717
- ),
718
- 'list' => array(
719
- 'path' => 'management/accounts/{accountId}/filters',
720
- 'httpMethod' => 'GET',
721
- 'parameters' => array(
722
- 'accountId' => array(
723
- 'location' => 'path',
724
- 'type' => 'string',
725
- 'required' => true
726
- ),
727
- 'max-results' => array(
728
- 'location' => 'query',
729
- 'type' => 'integer'
730
- ),
731
- 'start-index' => array(
732
- 'location' => 'query',
733
- 'type' => 'integer'
734
- )
735
- )
736
- ),
737
- 'patch' => array(
738
- 'path' => 'management/accounts/{accountId}/filters/{filterId}',
739
- 'httpMethod' => 'PATCH',
740
- 'parameters' => array(
741
- 'accountId' => array(
742
- 'location' => 'path',
743
- 'type' => 'string',
744
- 'required' => true
745
- ),
746
- 'filterId' => array(
747
- 'location' => 'path',
748
- 'type' => 'string',
749
- 'required' => true
750
- )
751
- )
752
- ),
753
- 'update' => array(
754
- 'path' => 'management/accounts/{accountId}/filters/{filterId}',
755
- 'httpMethod' => 'PUT',
756
- 'parameters' => array(
757
- 'accountId' => array(
758
- 'location' => 'path',
759
- 'type' => 'string',
760
- 'required' => true
761
- ),
762
- 'filterId' => array(
763
- 'location' => 'path',
764
- 'type' => 'string',
765
- 'required' => true
766
- )
767
- )
768
- )
769
- )
770
- ));
771
- $this->management_goals = new Google_Service_Analytics_ManagementGoals_Resource($this, $this->serviceName, 'goals', array(
772
- 'methods' => array(
773
- 'get' => array(
774
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/goals/{goalId}',
775
- 'httpMethod' => 'GET',
776
- 'parameters' => array(
777
- 'accountId' => array(
778
- 'location' => 'path',
779
- 'type' => 'string',
780
- 'required' => true
781
- ),
782
- 'webPropertyId' => array(
783
- 'location' => 'path',
784
- 'type' => 'string',
785
- 'required' => true
786
- ),
787
- 'profileId' => array(
788
- 'location' => 'path',
789
- 'type' => 'string',
790
- 'required' => true
791
- ),
792
- 'goalId' => array(
793
- 'location' => 'path',
794
- 'type' => 'string',
795
- 'required' => true
796
- )
797
- )
798
- ),
799
- 'insert' => array(
800
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/goals',
801
- 'httpMethod' => 'POST',
802
- 'parameters' => array(
803
- 'accountId' => array(
804
- 'location' => 'path',
805
- 'type' => 'string',
806
- 'required' => true
807
- ),
808
- 'webPropertyId' => array(
809
- 'location' => 'path',
810
- 'type' => 'string',
811
- 'required' => true
812
- ),
813
- 'profileId' => array(
814
- 'location' => 'path',
815
- 'type' => 'string',
816
- 'required' => true
817
- )
818
- )
819
- ),
820
- 'list' => array(
821
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/goals',
822
- 'httpMethod' => 'GET',
823
- 'parameters' => array(
824
- 'accountId' => array(
825
- 'location' => 'path',
826
- 'type' => 'string',
827
- 'required' => true
828
- ),
829
- 'webPropertyId' => array(
830
- 'location' => 'path',
831
- 'type' => 'string',
832
- 'required' => true
833
- ),
834
- 'profileId' => array(
835
- 'location' => 'path',
836
- 'type' => 'string',
837
- 'required' => true
838
- ),
839
- 'max-results' => array(
840
- 'location' => 'query',
841
- 'type' => 'integer'
842
- ),
843
- 'start-index' => array(
844
- 'location' => 'query',
845
- 'type' => 'integer'
846
- )
847
- )
848
- ),
849
- 'patch' => array(
850
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/goals/{goalId}',
851
- 'httpMethod' => 'PATCH',
852
- 'parameters' => array(
853
- 'accountId' => array(
854
- 'location' => 'path',
855
- 'type' => 'string',
856
- 'required' => true
857
- ),
858
- 'webPropertyId' => array(
859
- 'location' => 'path',
860
- 'type' => 'string',
861
- 'required' => true
862
- ),
863
- 'profileId' => array(
864
- 'location' => 'path',
865
- 'type' => 'string',
866
- 'required' => true
867
- ),
868
- 'goalId' => array(
869
- 'location' => 'path',
870
- 'type' => 'string',
871
- 'required' => true
872
- )
873
- )
874
- ),
875
- 'update' => array(
876
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/goals/{goalId}',
877
- 'httpMethod' => 'PUT',
878
- 'parameters' => array(
879
- 'accountId' => array(
880
- 'location' => 'path',
881
- 'type' => 'string',
882
- 'required' => true
883
- ),
884
- 'webPropertyId' => array(
885
- 'location' => 'path',
886
- 'type' => 'string',
887
- 'required' => true
888
- ),
889
- 'profileId' => array(
890
- 'location' => 'path',
891
- 'type' => 'string',
892
- 'required' => true
893
- ),
894
- 'goalId' => array(
895
- 'location' => 'path',
896
- 'type' => 'string',
897
- 'required' => true
898
- )
899
- )
900
- )
901
- )
902
- ));
903
- $this->management_profileFilterLinks = new Google_Service_Analytics_ManagementProfileFilterLinks_Resource($this, $this->serviceName, 'profileFilterLinks', array(
904
- 'methods' => array(
905
- 'delete' => array(
906
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/profileFilterLinks/{linkId}',
907
- 'httpMethod' => 'DELETE',
908
- 'parameters' => array(
909
- 'accountId' => array(
910
- 'location' => 'path',
911
- 'type' => 'string',
912
- 'required' => true
913
- ),
914
- 'webPropertyId' => array(
915
- 'location' => 'path',
916
- 'type' => 'string',
917
- 'required' => true
918
- ),
919
- 'profileId' => array(
920
- 'location' => 'path',
921
- 'type' => 'string',
922
- 'required' => true
923
- ),
924
- 'linkId' => array(
925
- 'location' => 'path',
926
- 'type' => 'string',
927
- 'required' => true
928
- )
929
- )
930
- ),
931
- 'get' => array(
932
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/profileFilterLinks/{linkId}',
933
- 'httpMethod' => 'GET',
934
- 'parameters' => array(
935
- 'accountId' => array(
936
- 'location' => 'path',
937
- 'type' => 'string',
938
- 'required' => true
939
- ),
940
- 'webPropertyId' => array(
941
- 'location' => 'path',
942
- 'type' => 'string',
943
- 'required' => true
944
- ),
945
- 'profileId' => array(
946
- 'location' => 'path',
947
- 'type' => 'string',
948
- 'required' => true
949
- ),
950
- 'linkId' => array(
951
- 'location' => 'path',
952
- 'type' => 'string',
953
- 'required' => true
954
- )
955
- )
956
- ),
957
- 'insert' => array(
958
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/profileFilterLinks',
959
- 'httpMethod' => 'POST',
960
- 'parameters' => array(
961
- 'accountId' => array(
962
- 'location' => 'path',
963
- 'type' => 'string',
964
- 'required' => true
965
- ),
966
- 'webPropertyId' => array(
967
- 'location' => 'path',
968
- 'type' => 'string',
969
- 'required' => true
970
- ),
971
- 'profileId' => array(
972
- 'location' => 'path',
973
- 'type' => 'string',
974
- 'required' => true
975
- )
976
- )
977
- ),
978
- 'list' => array(
979
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/profileFilterLinks',
980
- 'httpMethod' => 'GET',
981
- 'parameters' => array(
982
- 'accountId' => array(
983
- 'location' => 'path',
984
- 'type' => 'string',
985
- 'required' => true
986
- ),
987
- 'webPropertyId' => array(
988
- 'location' => 'path',
989
- 'type' => 'string',
990
- 'required' => true
991
- ),
992
- 'profileId' => array(
993
- 'location' => 'path',
994
- 'type' => 'string',
995
- 'required' => true
996
- ),
997
- 'max-results' => array(
998
- 'location' => 'query',
999
- 'type' => 'integer'
1000
- ),
1001
- 'start-index' => array(
1002
- 'location' => 'query',
1003
- 'type' => 'integer'
1004
- )
1005
- )
1006
- ),
1007
- 'patch' => array(
1008
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/profileFilterLinks/{linkId}',
1009
- 'httpMethod' => 'PATCH',
1010
- 'parameters' => array(
1011
- 'accountId' => array(
1012
- 'location' => 'path',
1013
- 'type' => 'string',
1014
- 'required' => true
1015
- ),
1016
- 'webPropertyId' => array(
1017
- 'location' => 'path',
1018
- 'type' => 'string',
1019
- 'required' => true
1020
- ),
1021
- 'profileId' => array(
1022
- 'location' => 'path',
1023
- 'type' => 'string',
1024
- 'required' => true
1025
- ),
1026
- 'linkId' => array(
1027
- 'location' => 'path',
1028
- 'type' => 'string',
1029
- 'required' => true
1030
- )
1031
- )
1032
- ),
1033
- 'update' => array(
1034
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/profileFilterLinks/{linkId}',
1035
- 'httpMethod' => 'PUT',
1036
- 'parameters' => array(
1037
- 'accountId' => array(
1038
- 'location' => 'path',
1039
- 'type' => 'string',
1040
- 'required' => true
1041
- ),
1042
- 'webPropertyId' => array(
1043
- 'location' => 'path',
1044
- 'type' => 'string',
1045
- 'required' => true
1046
- ),
1047
- 'profileId' => array(
1048
- 'location' => 'path',
1049
- 'type' => 'string',
1050
- 'required' => true
1051
- ),
1052
- 'linkId' => array(
1053
- 'location' => 'path',
1054
- 'type' => 'string',
1055
- 'required' => true
1056
- )
1057
- )
1058
- )
1059
- )
1060
- ));
1061
- $this->management_profileUserLinks = new Google_Service_Analytics_ManagementProfileUserLinks_Resource($this, $this->serviceName, 'profileUserLinks', array(
1062
- 'methods' => array(
1063
- 'delete' => array(
1064
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/entityUserLinks/{linkId}',
1065
- 'httpMethod' => 'DELETE',
1066
- 'parameters' => array(
1067
- 'accountId' => array(
1068
- 'location' => 'path',
1069
- 'type' => 'string',
1070
- 'required' => true
1071
- ),
1072
- 'webPropertyId' => array(
1073
- 'location' => 'path',
1074
- 'type' => 'string',
1075
- 'required' => true
1076
- ),
1077
- 'profileId' => array(
1078
- 'location' => 'path',
1079
- 'type' => 'string',
1080
- 'required' => true
1081
- ),
1082
- 'linkId' => array(
1083
- 'location' => 'path',
1084
- 'type' => 'string',
1085
- 'required' => true
1086
- )
1087
- )
1088
- ),
1089
- 'insert' => array(
1090
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/entityUserLinks',
1091
- 'httpMethod' => 'POST',
1092
- 'parameters' => array(
1093
- 'accountId' => array(
1094
- 'location' => 'path',
1095
- 'type' => 'string',
1096
- 'required' => true
1097
- ),
1098
- 'webPropertyId' => array(
1099
- 'location' => 'path',
1100
- 'type' => 'string',
1101
- 'required' => true
1102
- ),
1103
- 'profileId' => array(
1104
- 'location' => 'path',
1105
- 'type' => 'string',
1106
- 'required' => true
1107
- )
1108
- )
1109
- ),
1110
- 'list' => array(
1111
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/entityUserLinks',
1112
- 'httpMethod' => 'GET',
1113
- 'parameters' => array(
1114
- 'accountId' => array(
1115
- 'location' => 'path',
1116
- 'type' => 'string',
1117
- 'required' => true
1118
- ),
1119
- 'webPropertyId' => array(
1120
- 'location' => 'path',
1121
- 'type' => 'string',
1122
- 'required' => true
1123
- ),
1124
- 'profileId' => array(
1125
- 'location' => 'path',
1126
- 'type' => 'string',
1127
- 'required' => true
1128
- ),
1129
- 'max-results' => array(
1130
- 'location' => 'query',
1131
- 'type' => 'integer'
1132
- ),
1133
- 'start-index' => array(
1134
- 'location' => 'query',
1135
- 'type' => 'integer'
1136
- )
1137
- )
1138
- ),
1139
- 'update' => array(
1140
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/entityUserLinks/{linkId}',
1141
- 'httpMethod' => 'PUT',
1142
- 'parameters' => array(
1143
- 'accountId' => array(
1144
- 'location' => 'path',
1145
- 'type' => 'string',
1146
- 'required' => true
1147
- ),
1148
- 'webPropertyId' => array(
1149
- 'location' => 'path',
1150
- 'type' => 'string',
1151
- 'required' => true
1152
- ),
1153
- 'profileId' => array(
1154
- 'location' => 'path',
1155
- 'type' => 'string',
1156
- 'required' => true
1157
- ),
1158
- 'linkId' => array(
1159
- 'location' => 'path',
1160
- 'type' => 'string',
1161
- 'required' => true
1162
- )
1163
- )
1164
- )
1165
- )
1166
- ));
1167
- $this->management_profiles = new Google_Service_Analytics_ManagementProfiles_Resource($this, $this->serviceName, 'profiles', array(
1168
- 'methods' => array(
1169
- 'delete' => array(
1170
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}',
1171
- 'httpMethod' => 'DELETE',
1172
- 'parameters' => array(
1173
- 'accountId' => array(
1174
- 'location' => 'path',
1175
- 'type' => 'string',
1176
- 'required' => true
1177
- ),
1178
- 'webPropertyId' => array(
1179
- 'location' => 'path',
1180
- 'type' => 'string',
1181
- 'required' => true
1182
- ),
1183
- 'profileId' => array(
1184
- 'location' => 'path',
1185
- 'type' => 'string',
1186
- 'required' => true
1187
- )
1188
- )
1189
- ),
1190
- 'get' => array(
1191
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}',
1192
- 'httpMethod' => 'GET',
1193
- 'parameters' => array(
1194
- 'accountId' => array(
1195
- 'location' => 'path',
1196
- 'type' => 'string',
1197
- 'required' => true
1198
- ),
1199
- 'webPropertyId' => array(
1200
- 'location' => 'path',
1201
- 'type' => 'string',
1202
- 'required' => true
1203
- ),
1204
- 'profileId' => array(
1205
- 'location' => 'path',
1206
- 'type' => 'string',
1207
- 'required' => true
1208
- )
1209
- )
1210
- ),
1211
- 'insert' => array(
1212
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles',
1213
- 'httpMethod' => 'POST',
1214
- 'parameters' => array(
1215
- 'accountId' => array(
1216
- 'location' => 'path',
1217
- 'type' => 'string',
1218
- 'required' => true
1219
- ),
1220
- 'webPropertyId' => array(
1221
- 'location' => 'path',
1222
- 'type' => 'string',
1223
- 'required' => true
1224
- )
1225
- )
1226
- ),
1227
- 'list' => array(
1228
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles',
1229
- 'httpMethod' => 'GET',
1230
- 'parameters' => array(
1231
- 'accountId' => array(
1232
- 'location' => 'path',
1233
- 'type' => 'string',
1234
- 'required' => true
1235
- ),
1236
- 'webPropertyId' => array(
1237
- 'location' => 'path',
1238
- 'type' => 'string',
1239
- 'required' => true
1240
- ),
1241
- 'max-results' => array(
1242
- 'location' => 'query',
1243
- 'type' => 'integer'
1244
- ),
1245
- 'start-index' => array(
1246
- 'location' => 'query',
1247
- 'type' => 'integer'
1248
- )
1249
- )
1250
- ),
1251
- 'patch' => array(
1252
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}',
1253
- 'httpMethod' => 'PATCH',
1254
- 'parameters' => array(
1255
- 'accountId' => array(
1256
- 'location' => 'path',
1257
- 'type' => 'string',
1258
- 'required' => true
1259
- ),
1260
- 'webPropertyId' => array(
1261
- 'location' => 'path',
1262
- 'type' => 'string',
1263
- 'required' => true
1264
- ),
1265
- 'profileId' => array(
1266
- 'location' => 'path',
1267
- 'type' => 'string',
1268
- 'required' => true
1269
- )
1270
- )
1271
- ),
1272
- 'update' => array(
1273
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}',
1274
- 'httpMethod' => 'PUT',
1275
- 'parameters' => array(
1276
- 'accountId' => array(
1277
- 'location' => 'path',
1278
- 'type' => 'string',
1279
- 'required' => true
1280
- ),
1281
- 'webPropertyId' => array(
1282
- 'location' => 'path',
1283
- 'type' => 'string',
1284
- 'required' => true
1285
- ),
1286
- 'profileId' => array(
1287
- 'location' => 'path',
1288
- 'type' => 'string',
1289
- 'required' => true
1290
- )
1291
- )
1292
- )
1293
- )
1294
- ));
1295
- $this->management_segments = new Google_Service_Analytics_ManagementSegments_Resource($this, $this->serviceName, 'segments', array(
1296
- 'methods' => array(
1297
- 'list' => array(
1298
- 'path' => 'management/segments',
1299
- 'httpMethod' => 'GET',
1300
- 'parameters' => array(
1301
- 'max-results' => array(
1302
- 'location' => 'query',
1303
- 'type' => 'integer'
1304
- ),
1305
- 'start-index' => array(
1306
- 'location' => 'query',
1307
- 'type' => 'integer'
1308
- )
1309
- )
1310
- )
1311
- )
1312
- ));
1313
- $this->management_unsampledReports = new Google_Service_Analytics_ManagementUnsampledReports_Resource($this, $this->serviceName, 'unsampledReports', array(
1314
- 'methods' => array(
1315
- 'get' => array(
1316
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/unsampledReports/{unsampledReportId}',
1317
- 'httpMethod' => 'GET',
1318
- 'parameters' => array(
1319
- 'accountId' => array(
1320
- 'location' => 'path',
1321
- 'type' => 'string',
1322
- 'required' => true
1323
- ),
1324
- 'webPropertyId' => array(
1325
- 'location' => 'path',
1326
- 'type' => 'string',
1327
- 'required' => true
1328
- ),
1329
- 'profileId' => array(
1330
- 'location' => 'path',
1331
- 'type' => 'string',
1332
- 'required' => true
1333
- ),
1334
- 'unsampledReportId' => array(
1335
- 'location' => 'path',
1336
- 'type' => 'string',
1337
- 'required' => true
1338
- )
1339
- )
1340
- ),
1341
- 'insert' => array(
1342
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/unsampledReports',
1343
- 'httpMethod' => 'POST',
1344
- 'parameters' => array(
1345
- 'accountId' => array(
1346
- 'location' => 'path',
1347
- 'type' => 'string',
1348
- 'required' => true
1349
- ),
1350
- 'webPropertyId' => array(
1351
- 'location' => 'path',
1352
- 'type' => 'string',
1353
- 'required' => true
1354
- ),
1355
- 'profileId' => array(
1356
- 'location' => 'path',
1357
- 'type' => 'string',
1358
- 'required' => true
1359
- )
1360
- )
1361
- ),
1362
- 'list' => array(
1363
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/unsampledReports',
1364
- 'httpMethod' => 'GET',
1365
- 'parameters' => array(
1366
- 'accountId' => array(
1367
- 'location' => 'path',
1368
- 'type' => 'string',
1369
- 'required' => true
1370
- ),
1371
- 'webPropertyId' => array(
1372
- 'location' => 'path',
1373
- 'type' => 'string',
1374
- 'required' => true
1375
- ),
1376
- 'profileId' => array(
1377
- 'location' => 'path',
1378
- 'type' => 'string',
1379
- 'required' => true
1380
- ),
1381
- 'max-results' => array(
1382
- 'location' => 'query',
1383
- 'type' => 'integer'
1384
- ),
1385
- 'start-index' => array(
1386
- 'location' => 'query',
1387
- 'type' => 'integer'
1388
- )
1389
- )
1390
- )
1391
- )
1392
- ));
1393
- $this->management_uploads = new Google_Service_Analytics_ManagementUploads_Resource($this, $this->serviceName, 'uploads', array(
1394
- 'methods' => array(
1395
- 'deleteUploadData' => array(
1396
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDataSources/{customDataSourceId}/deleteUploadData',
1397
- 'httpMethod' => 'POST',
1398
- 'parameters' => array(
1399
- 'accountId' => array(
1400
- 'location' => 'path',
1401
- 'type' => 'string',
1402
- 'required' => true
1403
- ),
1404
- 'webPropertyId' => array(
1405
- 'location' => 'path',
1406
- 'type' => 'string',
1407
- 'required' => true
1408
- ),
1409
- 'customDataSourceId' => array(
1410
- 'location' => 'path',
1411
- 'type' => 'string',
1412
- 'required' => true
1413
- )
1414
- )
1415
- ),
1416
- 'get' => array(
1417
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDataSources/{customDataSourceId}/uploads/{uploadId}',
1418
- 'httpMethod' => 'GET',
1419
- 'parameters' => array(
1420
- 'accountId' => array(
1421
- 'location' => 'path',
1422
- 'type' => 'string',
1423
- 'required' => true
1424
- ),
1425
- 'webPropertyId' => array(
1426
- 'location' => 'path',
1427
- 'type' => 'string',
1428
- 'required' => true
1429
- ),
1430
- 'customDataSourceId' => array(
1431
- 'location' => 'path',
1432
- 'type' => 'string',
1433
- 'required' => true
1434
- ),
1435
- 'uploadId' => array(
1436
- 'location' => 'path',
1437
- 'type' => 'string',
1438
- 'required' => true
1439
- )
1440
- )
1441
- ),
1442
- 'list' => array(
1443
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDataSources/{customDataSourceId}/uploads',
1444
- 'httpMethod' => 'GET',
1445
- 'parameters' => array(
1446
- 'accountId' => array(
1447
- 'location' => 'path',
1448
- 'type' => 'string',
1449
- 'required' => true
1450
- ),
1451
- 'webPropertyId' => array(
1452
- 'location' => 'path',
1453
- 'type' => 'string',
1454
- 'required' => true
1455
- ),
1456
- 'customDataSourceId' => array(
1457
- 'location' => 'path',
1458
- 'type' => 'string',
1459
- 'required' => true
1460
- ),
1461
- 'max-results' => array(
1462
- 'location' => 'query',
1463
- 'type' => 'integer'
1464
- ),
1465
- 'start-index' => array(
1466
- 'location' => 'query',
1467
- 'type' => 'integer'
1468
- )
1469
- )
1470
- ),
1471
- 'migrateDataImport' => array(
1472
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDataSources/{customDataSourceId}/migrateDataImport',
1473
- 'httpMethod' => 'POST',
1474
- 'parameters' => array(
1475
- 'accountId' => array(
1476
- 'location' => 'path',
1477
- 'type' => 'string',
1478
- 'required' => true
1479
- ),
1480
- 'webPropertyId' => array(
1481
- 'location' => 'path',
1482
- 'type' => 'string',
1483
- 'required' => true
1484
- ),
1485
- 'customDataSourceId' => array(
1486
- 'location' => 'path',
1487
- 'type' => 'string',
1488
- 'required' => true
1489
- )
1490
- )
1491
- ),
1492
- 'uploadData' => array(
1493
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDataSources/{customDataSourceId}/uploads',
1494
- 'httpMethod' => 'POST',
1495
- 'parameters' => array(
1496
- 'accountId' => array(
1497
- 'location' => 'path',
1498
- 'type' => 'string',
1499
- 'required' => true
1500
- ),
1501
- 'webPropertyId' => array(
1502
- 'location' => 'path',
1503
- 'type' => 'string',
1504
- 'required' => true
1505
- ),
1506
- 'customDataSourceId' => array(
1507
- 'location' => 'path',
1508
- 'type' => 'string',
1509
- 'required' => true
1510
- )
1511
- )
1512
- )
1513
- )
1514
- ));
1515
- $this->management_webPropertyAdWordsLinks = new Google_Service_Analytics_ManagementWebPropertyAdWordsLinks_Resource($this, $this->serviceName, 'webPropertyAdWordsLinks', array(
1516
- 'methods' => array(
1517
- 'delete' => array(
1518
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityAdWordsLinks/{webPropertyAdWordsLinkId}',
1519
- 'httpMethod' => 'DELETE',
1520
- 'parameters' => array(
1521
- 'accountId' => array(
1522
- 'location' => 'path',
1523
- 'type' => 'string',
1524
- 'required' => true
1525
- ),
1526
- 'webPropertyId' => array(
1527
- 'location' => 'path',
1528
- 'type' => 'string',
1529
- 'required' => true
1530
- ),
1531
- 'webPropertyAdWordsLinkId' => array(
1532
- 'location' => 'path',
1533
- 'type' => 'string',
1534
- 'required' => true
1535
- )
1536
- )
1537
- ),
1538
- 'get' => array(
1539
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityAdWordsLinks/{webPropertyAdWordsLinkId}',
1540
- 'httpMethod' => 'GET',
1541
- 'parameters' => array(
1542
- 'accountId' => array(
1543
- 'location' => 'path',
1544
- 'type' => 'string',
1545
- 'required' => true
1546
- ),
1547
- 'webPropertyId' => array(
1548
- 'location' => 'path',
1549
- 'type' => 'string',
1550
- 'required' => true
1551
- ),
1552
- 'webPropertyAdWordsLinkId' => array(
1553
- 'location' => 'path',
1554
- 'type' => 'string',
1555
- 'required' => true
1556
- )
1557
- )
1558
- ),
1559
- 'insert' => array(
1560
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityAdWordsLinks',
1561
- 'httpMethod' => 'POST',
1562
- 'parameters' => array(
1563
- 'accountId' => array(
1564
- 'location' => 'path',
1565
- 'type' => 'string',
1566
- 'required' => true
1567
- ),
1568
- 'webPropertyId' => array(
1569
- 'location' => 'path',
1570
- 'type' => 'string',
1571
- 'required' => true
1572
- )
1573
- )
1574
- ),
1575
- 'list' => array(
1576
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityAdWordsLinks',
1577
- 'httpMethod' => 'GET',
1578
- 'parameters' => array(
1579
- 'accountId' => array(
1580
- 'location' => 'path',
1581
- 'type' => 'string',
1582
- 'required' => true
1583
- ),
1584
- 'webPropertyId' => array(
1585
- 'location' => 'path',
1586
- 'type' => 'string',
1587
- 'required' => true
1588
- ),
1589
- 'max-results' => array(
1590
- 'location' => 'query',
1591
- 'type' => 'integer'
1592
- ),
1593
- 'start-index' => array(
1594
- 'location' => 'query',
1595
- 'type' => 'integer'
1596
- )
1597
- )
1598
- ),
1599
- 'patch' => array(
1600
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityAdWordsLinks/{webPropertyAdWordsLinkId}',
1601
- 'httpMethod' => 'PATCH',
1602
- 'parameters' => array(
1603
- 'accountId' => array(
1604
- 'location' => 'path',
1605
- 'type' => 'string',
1606
- 'required' => true
1607
- ),
1608
- 'webPropertyId' => array(
1609
- 'location' => 'path',
1610
- 'type' => 'string',
1611
- 'required' => true
1612
- ),
1613
- 'webPropertyAdWordsLinkId' => array(
1614
- 'location' => 'path',
1615
- 'type' => 'string',
1616
- 'required' => true
1617
- )
1618
- )
1619
- ),
1620
- 'update' => array(
1621
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityAdWordsLinks/{webPropertyAdWordsLinkId}',
1622
- 'httpMethod' => 'PUT',
1623
- 'parameters' => array(
1624
- 'accountId' => array(
1625
- 'location' => 'path',
1626
- 'type' => 'string',
1627
- 'required' => true
1628
- ),
1629
- 'webPropertyId' => array(
1630
- 'location' => 'path',
1631
- 'type' => 'string',
1632
- 'required' => true
1633
- ),
1634
- 'webPropertyAdWordsLinkId' => array(
1635
- 'location' => 'path',
1636
- 'type' => 'string',
1637
- 'required' => true
1638
- )
1639
- )
1640
- )
1641
- )
1642
- ));
1643
- $this->management_webproperties = new Google_Service_Analytics_ManagementWebproperties_Resource($this, $this->serviceName, 'webproperties', array(
1644
- 'methods' => array(
1645
- 'get' => array(
1646
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}',
1647
- 'httpMethod' => 'GET',
1648
- 'parameters' => array(
1649
- 'accountId' => array(
1650
- 'location' => 'path',
1651
- 'type' => 'string',
1652
- 'required' => true
1653
- ),
1654
- 'webPropertyId' => array(
1655
- 'location' => 'path',
1656
- 'type' => 'string',
1657
- 'required' => true
1658
- )
1659
- )
1660
- ),
1661
- 'insert' => array(
1662
- 'path' => 'management/accounts/{accountId}/webproperties',
1663
- 'httpMethod' => 'POST',
1664
- 'parameters' => array(
1665
- 'accountId' => array(
1666
- 'location' => 'path',
1667
- 'type' => 'string',
1668
- 'required' => true
1669
- )
1670
- )
1671
- ),
1672
- 'list' => array(
1673
- 'path' => 'management/accounts/{accountId}/webproperties',
1674
- 'httpMethod' => 'GET',
1675
- 'parameters' => array(
1676
- 'accountId' => array(
1677
- 'location' => 'path',
1678
- 'type' => 'string',
1679
- 'required' => true
1680
- ),
1681
- 'max-results' => array(
1682
- 'location' => 'query',
1683
- 'type' => 'integer'
1684
- ),
1685
- 'start-index' => array(
1686
- 'location' => 'query',
1687
- 'type' => 'integer'
1688
- )
1689
- )
1690
- ),
1691
- 'patch' => array(
1692
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}',
1693
- 'httpMethod' => 'PATCH',
1694
- 'parameters' => array(
1695
- 'accountId' => array(
1696
- 'location' => 'path',
1697
- 'type' => 'string',
1698
- 'required' => true
1699
- ),
1700
- 'webPropertyId' => array(
1701
- 'location' => 'path',
1702
- 'type' => 'string',
1703
- 'required' => true
1704
- )
1705
- )
1706
- ),
1707
- 'update' => array(
1708
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}',
1709
- 'httpMethod' => 'PUT',
1710
- 'parameters' => array(
1711
- 'accountId' => array(
1712
- 'location' => 'path',
1713
- 'type' => 'string',
1714
- 'required' => true
1715
- ),
1716
- 'webPropertyId' => array(
1717
- 'location' => 'path',
1718
- 'type' => 'string',
1719
- 'required' => true
1720
- )
1721
- )
1722
- )
1723
- )
1724
- ));
1725
- $this->management_webpropertyUserLinks = new Google_Service_Analytics_ManagementWebpropertyUserLinks_Resource($this, $this->serviceName, 'webpropertyUserLinks', array(
1726
- 'methods' => array(
1727
- 'delete' => array(
1728
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityUserLinks/{linkId}',
1729
- 'httpMethod' => 'DELETE',
1730
- 'parameters' => array(
1731
- 'accountId' => array(
1732
- 'location' => 'path',
1733
- 'type' => 'string',
1734
- 'required' => true
1735
- ),
1736
- 'webPropertyId' => array(
1737
- 'location' => 'path',
1738
- 'type' => 'string',
1739
- 'required' => true
1740
- ),
1741
- 'linkId' => array(
1742
- 'location' => 'path',
1743
- 'type' => 'string',
1744
- 'required' => true
1745
- )
1746
- )
1747
- ),
1748
- 'insert' => array(
1749
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityUserLinks',
1750
- 'httpMethod' => 'POST',
1751
- 'parameters' => array(
1752
- 'accountId' => array(
1753
- 'location' => 'path',
1754
- 'type' => 'string',
1755
- 'required' => true
1756
- ),
1757
- 'webPropertyId' => array(
1758
- 'location' => 'path',
1759
- 'type' => 'string',
1760
- 'required' => true
1761
- )
1762
- )
1763
- ),
1764
- 'list' => array(
1765
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityUserLinks',
1766
- 'httpMethod' => 'GET',
1767
- 'parameters' => array(
1768
- 'accountId' => array(
1769
- 'location' => 'path',
1770
- 'type' => 'string',
1771
- 'required' => true
1772
- ),
1773
- 'webPropertyId' => array(
1774
- 'location' => 'path',
1775
- 'type' => 'string',
1776
- 'required' => true
1777
- ),
1778
- 'max-results' => array(
1779
- 'location' => 'query',
1780
- 'type' => 'integer'
1781
- ),
1782
- 'start-index' => array(
1783
- 'location' => 'query',
1784
- 'type' => 'integer'
1785
- )
1786
- )
1787
- ),
1788
- 'update' => array(
1789
- 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityUserLinks/{linkId}',
1790
- 'httpMethod' => 'PUT',
1791
- 'parameters' => array(
1792
- 'accountId' => array(
1793
- 'location' => 'path',
1794
- 'type' => 'string',
1795
- 'required' => true
1796
- ),
1797
- 'webPropertyId' => array(
1798
- 'location' => 'path',
1799
- 'type' => 'string',
1800
- 'required' => true
1801
- ),
1802
- 'linkId' => array(
1803
- 'location' => 'path',
1804
- 'type' => 'string',
1805
- 'required' => true
1806
- )
1807
- )
1808
- )
1809
- )
1810
- ));
1811
- $this->metadata_columns = new Google_Service_Analytics_MetadataColumns_Resource($this, $this->serviceName, 'columns', array(
1812
- 'methods' => array(
1813
- 'list' => array(
1814
- 'path' => 'metadata/{reportType}/columns',
1815
- 'httpMethod' => 'GET',
1816
- 'parameters' => array(
1817
- 'reportType' => array(
1818
- 'location' => 'path',
1819
- 'type' => 'string',
1820
- 'required' => true
1821
- )
1822
- )
1823
- )
1824
- )
1825
- ));
1826
- $this->provisioning = new Google_Service_Analytics_Provisioning_Resource($this, $this->serviceName, 'provisioning', array(
1827
- 'methods' => array(
1828
- 'createAccountTicket' => array(
1829
- 'path' => 'provisioning/createAccountTicket',
1830
- 'httpMethod' => 'POST',
1831
- 'parameters' => array()
1832
- )
1833
- )
1834
- ));
1835
- }
1836
- }
1837
-
1838
- /**
1839
- * The "data" collection of methods.
1840
- * Typical usage is:
1841
- * <code>
1842
- * $analyticsService = new Google_Service_Analytics(...);
1843
- * $data = $analyticsService->data;
1844
- * </code>
1845
- */
1846
- class Google_Service_Analytics_Data_Resource extends Google_Service_Resource
1847
- {
1848
- }
1849
-
1850
- /**
1851
- * The "ga" collection of methods.
1852
- * Typical usage is:
1853
- * <code>
1854
- * $analyticsService = new Google_Service_Analytics(...);
1855
- * $ga = $analyticsService->ga;
1856
- * </code>
1857
- */
1858
- class Google_Service_Analytics_DataGa_Resource extends Google_Service_Resource
1859
- {
1860
-
1861
- /**
1862
- * Returns Analytics data for a view (profile).
1863
- * (ga.get)
1864
- *
1865
- * @param string $ids
1866
- * Unique table ID for retrieving Analytics data. Table ID is
1867
- * of the form ga:XXXX, where XXXX is the Analytics view (profile) ID.
1868
- * @param string $startDate
1869
- * Start date for fetching Analytics data. Requests can
1870
- * specify a start date formatted as YYYY-MM-DD, or as a relative date (e.g.,
1871
- * today, yesterday, or 7daysAgo). The default value is 7daysAgo.
1872
- * @param string $endDate
1873
- * End date for fetching Analytics data. Request can
1874
- * should specify an end date formatted as YYYY-MM-DD, or as a relative date
1875
- * (e.g., today, yesterday, or 7daysAgo). The default value is yesterday.
1876
- * @param string $metrics
1877
- * A comma-separated list of Analytics metrics. E.g.,
1878
- * 'ga:sessions,ga:pageviews'. At least one metric must be specified.
1879
- * @param array $optParams
1880
- * Optional parameters.
1881
- *
1882
- * @opt_param int max-results The maximum number of entries to include in this
1883
- * feed.
1884
- * @opt_param string sort A comma-separated list of dimensions or metrics that
1885
- * determine the sort order for Analytics data.
1886
- * @opt_param string dimensions A comma-separated list of Analytics dimensions.
1887
- * E.g., 'ga:browser,ga:city'.
1888
- * @opt_param int start-index An index of the first entity to retrieve. Use this
1889
- * parameter as a pagination mechanism along with the max-results parameter.
1890
- * @opt_param string segment An Analytics segment to be applied to data.
1891
- * @opt_param string samplingLevel The desired sampling level.
1892
- * @opt_param string filters A comma-separated list of dimension or metric
1893
- * filters to be applied to Analytics data.
1894
- * @opt_param string output The selected format for the response. Default format
1895
- * is JSON.
1896
- * @return Google_Service_Analytics_GaData
1897
- */
1898
- public function get($ids, $startDate, $endDate, $metrics, $optParams = array())
1899
- {
1900
- $params = array(
1901
- 'ids' => $ids,
1902
- 'start-date' => $startDate,
1903
- 'end-date' => $endDate,
1904
- 'metrics' => $metrics
1905
- );
1906
- $params = array_merge($params, $optParams);
1907
- return $this->call('get', array(
1908
- $params
1909
- ), "Google_Service_Analytics_GaData");
1910
- }
1911
- }
1912
-
1913
- /**
1914
- * The "mcf" collection of methods.
1915
- * Typical usage is:
1916
- * <code>
1917
- * $analyticsService = new Google_Service_Analytics(...);
1918
- * $mcf = $analyticsService->mcf;
1919
- * </code>
1920
- */
1921
- class Google_Service_Analytics_DataMcf_Resource extends Google_Service_Resource
1922
- {
1923
-
1924
- /**
1925
- * Returns Analytics Multi-Channel Funnels data for a view (profile).
1926
- * (mcf.get)
1927
- *
1928
- * @param string $ids
1929
- * Unique table ID for retrieving Analytics data. Table ID is
1930
- * of the form ga:XXXX, where XXXX is the Analytics view (profile) ID.
1931
- * @param string $startDate
1932
- * Start date for fetching Analytics data. Requests can
1933
- * specify a start date formatted as YYYY-MM-DD, or as a relative date (e.g.,
1934
- * today, yesterday, or 7daysAgo). The default value is 7daysAgo.
1935
- * @param string $endDate
1936
- * End date for fetching Analytics data. Requests can
1937
- * specify a start date formatted as YYYY-MM-DD, or as a relative date (e.g.,
1938
- * today, yesterday, or 7daysAgo). The default value is 7daysAgo.
1939
- * @param string $metrics
1940
- * A comma-separated list of Multi-Channel Funnels
1941
- * metrics. E.g., 'mcf:totalConversions,mcf:totalConversionValue'. At least one
1942
- * metric must be specified.
1943
- * @param array $optParams
1944
- * Optional parameters.
1945
- *
1946
- * @opt_param int max-results The maximum number of entries to include in this
1947
- * feed.
1948
- * @opt_param string sort A comma-separated list of dimensions or metrics that
1949
- * determine the sort order for the Analytics data.
1950
- * @opt_param string dimensions A comma-separated list of Multi-Channel Funnels
1951
- * dimensions. E.g., 'mcf:source,mcf:medium'.
1952
- * @opt_param int start-index An index of the first entity to retrieve. Use this
1953
- * parameter as a pagination mechanism along with the max-results parameter.
1954
- * @opt_param string samplingLevel The desired sampling level.
1955
- * @opt_param string filters A comma-separated list of dimension or metric
1956
- * filters to be applied to the Analytics data.
1957
- * @return Google_Service_Analytics_McfData
1958
- */
1959
- public function get($ids, $startDate, $endDate, $metrics, $optParams = array())
1960
- {
1961
- $params = array(
1962
- 'ids' => $ids,
1963
- 'start-date' => $startDate,
1964
- 'end-date' => $endDate,
1965
- 'metrics' => $metrics
1966
- );
1967
- $params = array_merge($params, $optParams);
1968
- return $this->call('get', array(
1969
- $params
1970
- ), "Google_Service_Analytics_McfData");
1971
- }
1972
- }
1973
-
1974
- /**
1975
- * The "realtime" collection of methods.
1976
- * Typical usage is:
1977
- * <code>
1978
- * $analyticsService = new Google_Service_Analytics(...);
1979
- * $realtime = $analyticsService->realtime;
1980
- * </code>
1981
- */
1982
- class Google_Service_Analytics_DataRealtime_Resource extends Google_Service_Resource
1983
- {
1984
-
1985
- /**
1986
- * Returns real time data for a view (profile).
1987
- * (realtime.get)
1988
- *
1989
- * @param string $ids
1990
- * Unique table ID for retrieving real time data. Table ID is
1991
- * of the form ga:XXXX, where XXXX is the Analytics view (profile) ID.
1992
- * @param string $metrics
1993
- * A comma-separated list of real time metrics. E.g.,
1994
- * 'rt:activeUsers'. At least one metric must be specified.
1995
- * @param array $optParams
1996
- * Optional parameters.
1997
- *
1998
- * @opt_param int max-results The maximum number of entries to include in this
1999
- * feed.
2000
- * @opt_param string sort A comma-separated list of dimensions or metrics that
2001
- * determine the sort order for real time data.
2002
- * @opt_param string dimensions A comma-separated list of real time dimensions.
2003
- * E.g., 'rt:medium,rt:city'.
2004
- * @opt_param string filters A comma-separated list of dimension or metric
2005
- * filters to be applied to real time data.
2006
- * @return Google_Service_Analytics_RealtimeData
2007
- */
2008
- public function get($ids, $metrics, $optParams = array())
2009
- {
2010
- $params = array(
2011
- 'ids' => $ids,
2012
- 'metrics' => $metrics
2013
- );
2014
- $params = array_merge($params, $optParams);
2015
- return $this->call('get', array(
2016
- $params
2017
- ), "Google_Service_Analytics_RealtimeData");
2018
- }
2019
- }
2020
-
2021
- /**
2022
- * The "management" collection of methods.
2023
- * Typical usage is:
2024
- * <code>
2025
- * $analyticsService = new Google_Service_Analytics(...);
2026
- * $management = $analyticsService->management;
2027
- * </code>
2028
- */
2029
- class Google_Service_Analytics_Management_Resource extends Google_Service_Resource
2030
- {
2031
- }
2032
-
2033
- /**
2034
- * The "accountSummaries" collection of methods.
2035
- * Typical usage is:
2036
- * <code>
2037
- * $analyticsService = new Google_Service_Analytics(...);
2038
- * $accountSummaries = $analyticsService->accountSummaries;
2039
- * </code>
2040
- */
2041
- class Google_Service_Analytics_ManagementAccountSummaries_Resource extends Google_Service_Resource
2042
- {
2043
-
2044
- /**
2045
- * Lists account summaries (lightweight tree comprised of
2046
- * accounts/properties/profiles) to which the user has access.
2047
- * (accountSummaries.listManagementAccountSummaries)
2048
- *
2049
- * @param array $optParams
2050
- * Optional parameters.
2051
- *
2052
- * @opt_param int max-results The maximum number of account summaries to include
2053
- * in this response, where the largest acceptable value is 1000.
2054
- * @opt_param int start-index An index of the first entity to retrieve. Use this
2055
- * parameter as a pagination mechanism along with the max-results parameter.
2056
- * @return Google_Service_Analytics_AccountSummaries
2057
- */
2058
- public function listManagementAccountSummaries($optParams = array())
2059
- {
2060
- $params = array();
2061
- $params = array_merge($params, $optParams);
2062
- return $this->call('list', array(
2063
- $params
2064
- ), "Google_Service_Analytics_AccountSummaries");
2065
- }
2066
- }
2067
-
2068
- /**
2069
- * The "accountUserLinks" collection of methods.
2070
- * Typical usage is:
2071
- * <code>
2072
- * $analyticsService = new Google_Service_Analytics(...);
2073
- * $accountUserLinks = $analyticsService->accountUserLinks;
2074
- * </code>
2075
- */
2076
- class Google_Service_Analytics_ManagementAccountUserLinks_Resource extends Google_Service_Resource
2077
- {
2078
-
2079
- /**
2080
- * Removes a user from the given account.
2081
- * (accountUserLinks.delete)
2082
- *
2083
- * @param string $accountId
2084
- * Account ID to delete the user link for.
2085
- * @param string $linkId
2086
- * Link ID to delete the user link for.
2087
- * @param array $optParams
2088
- * Optional parameters.
2089
- */
2090
- public function delete($accountId, $linkId, $optParams = array())
2091
- {
2092
- $params = array(
2093
- 'accountId' => $accountId,
2094
- 'linkId' => $linkId
2095
- );
2096
- $params = array_merge($params, $optParams);
2097
- return $this->call('delete', array(
2098
- $params
2099
- ));
2100
- }
2101
-
2102
- /**
2103
- * Adds a new user to the given account.
2104
- * (accountUserLinks.insert)
2105
- *
2106
- * @param string $accountId
2107
- * Account ID to create the user link for.
2108
- * @param Google_EntityUserLink $postBody
2109
- * @param array $optParams
2110
- * Optional parameters.
2111
- * @return Google_Service_Analytics_EntityUserLink
2112
- */
2113
- public function insert($accountId, Google_Service_Analytics_EntityUserLink $postBody, $optParams = array())
2114
- {
2115
- $params = array(
2116
- 'accountId' => $accountId,
2117
- 'postBody' => $postBody
2118
- );
2119
- $params = array_merge($params, $optParams);
2120
- return $this->call('insert', array(
2121
- $params
2122
- ), "Google_Service_Analytics_EntityUserLink");
2123
- }
2124
-
2125
- /**
2126
- * Lists account-user links for a given account.
2127
- * (accountUserLinks.listManagementAccountUserLinks)
2128
- *
2129
- * @param string $accountId
2130
- * Account ID to retrieve the user links for.
2131
- * @param array $optParams
2132
- * Optional parameters.
2133
- *
2134
- * @opt_param int max-results The maximum number of account-user links to
2135
- * include in this response.
2136
- * @opt_param int start-index An index of the first account-user link to
2137
- * retrieve. Use this parameter as a pagination mechanism along with the max-
2138
- * results parameter.
2139
- * @return Google_Service_Analytics_EntityUserLinks
2140
- */
2141
- public function listManagementAccountUserLinks($accountId, $optParams = array())
2142
- {
2143
- $params = array(
2144
- 'accountId' => $accountId
2145
- );
2146
- $params = array_merge($params, $optParams);
2147
- return $this->call('list', array(
2148
- $params
2149
- ), "Google_Service_Analytics_EntityUserLinks");
2150
- }
2151
-
2152
- /**
2153
- * Updates permissions for an existing user on the given account.
2154
- * (accountUserLinks.update)
2155
- *
2156
- * @param string $accountId
2157
- * Account ID to update the account-user link for.
2158
- * @param string $linkId
2159
- * Link ID to update the account-user link for.
2160
- * @param Google_EntityUserLink $postBody
2161
- * @param array $optParams
2162
- * Optional parameters.
2163
- * @return Google_Service_Analytics_EntityUserLink
2164
- */
2165
- public function update($accountId, $linkId, Google_Service_Analytics_EntityUserLink $postBody, $optParams = array())
2166
- {
2167
- $params = array(
2168
- 'accountId' => $accountId,
2169
- 'linkId' => $linkId,
2170
- 'postBody' => $postBody
2171
- );
2172
- $params = array_merge($params, $optParams);
2173
- return $this->call('update', array(
2174
- $params
2175
- ), "Google_Service_Analytics_EntityUserLink");
2176
- }
2177
- }
2178
-
2179
- /**
2180
- * The "accounts" collection of methods.
2181
- * Typical usage is:
2182
- * <code>
2183
- * $analyticsService = new Google_Service_Analytics(...);
2184
- * $accounts = $analyticsService->accounts;
2185
- * </code>
2186
- */
2187
- class Google_Service_Analytics_ManagementAccounts_Resource extends Google_Service_Resource
2188
- {
2189
-
2190
- /**
2191
- * Lists all accounts to which the user has access.
2192
- * (accounts.listManagementAccounts)
2193
- *
2194
- * @param array $optParams
2195
- * Optional parameters.
2196
- *
2197
- * @opt_param int max-results The maximum number of accounts to include in this
2198
- * response.
2199
- * @opt_param int start-index An index of the first account to retrieve. Use
2200
- * this parameter as a pagination mechanism along with the max-results
2201
- * parameter.
2202
- * @return Google_Service_Analytics_Accounts
2203
- */
2204
- public function listManagementAccounts($optParams = array())
2205
- {
2206
- $params = array();
2207
- $params = array_merge($params, $optParams);
2208
- return $this->call('list', array(
2209
- $params
2210
- ), "Google_Service_Analytics_Accounts");
2211
- }
2212
- }
2213
-
2214
- /**
2215
- * The "customDataSources" collection of methods.
2216
- * Typical usage is:
2217
- * <code>
2218
- * $analyticsService = new Google_Service_Analytics(...);
2219
- * $customDataSources = $analyticsService->customDataSources;
2220
- * </code>
2221
- */
2222
- class Google_Service_Analytics_ManagementCustomDataSources_Resource extends Google_Service_Resource
2223
- {
2224
-
2225
- /**
2226
- * List custom data sources to which the user has access.
2227
- * (customDataSources.listManagementCustomDataSources)
2228
- *
2229
- * @param string $accountId
2230
- * Account Id for the custom data sources to retrieve.
2231
- * @param string $webPropertyId
2232
- * Web property Id for the custom data sources to
2233
- * retrieve.
2234
- * @param array $optParams
2235
- * Optional parameters.
2236
- *
2237
- * @opt_param int max-results The maximum number of custom data sources to
2238
- * include in this response.
2239
- * @opt_param int start-index A 1-based index of the first custom data source to
2240
- * retrieve. Use this parameter as a pagination mechanism along with the max-
2241
- * results parameter.
2242
- * @return Google_Service_Analytics_CustomDataSources
2243
- */
2244
- public function listManagementCustomDataSources($accountId, $webPropertyId, $optParams = array())
2245
- {
2246
- $params = array(
2247
- 'accountId' => $accountId,
2248
- 'webPropertyId' => $webPropertyId
2249
- );
2250
- $params = array_merge($params, $optParams);
2251
- return $this->call('list', array(
2252
- $params
2253
- ), "Google_Service_Analytics_CustomDataSources");
2254
- }
2255
- }
2256
-
2257
- /**
2258
- * The "dailyUploads" collection of methods.
2259
- * Typical usage is:
2260
- * <code>
2261
- * $analyticsService = new Google_Service_Analytics(...);
2262
- * $dailyUploads = $analyticsService->dailyUploads;
2263
- * </code>
2264
- */
2265
- class Google_Service_Analytics_ManagementDailyUploads_Resource extends Google_Service_Resource
2266
- {
2267
-
2268
- /**
2269
- * Delete uploaded data for the given date.
2270
- * (dailyUploads.delete)
2271
- *
2272
- * @param string $accountId
2273
- * Account Id associated with daily upload delete.
2274
- * @param string $webPropertyId
2275
- * Web property Id associated with daily upload
2276
- * delete.
2277
- * @param string $customDataSourceId
2278
- * Custom data source Id associated with daily
2279
- * upload delete.
2280
- * @param string $date
2281
- * Date for which data is to be deleted. Date should be
2282
- * formatted as YYYY-MM-DD.
2283
- * @param string $type
2284
- * Type of data for this delete.
2285
- * @param array $optParams
2286
- * Optional parameters.
2287
- */
2288
- public function delete($accountId, $webPropertyId, $customDataSourceId, $date, $type, $optParams = array())
2289
- {
2290
- $params = array(
2291
- 'accountId' => $accountId,
2292
- 'webPropertyId' => $webPropertyId,
2293
- 'customDataSourceId' => $customDataSourceId,
2294
- 'date' => $date,
2295
- 'type' => $type
2296
- );
2297
- $params = array_merge($params, $optParams);
2298
- return $this->call('delete', array(
2299
- $params
2300
- ));
2301
- }
2302
-
2303
- /**
2304
- * List daily uploads to which the user has access.
2305
- * (dailyUploads.listManagementDailyUploads)
2306
- *
2307
- * @param string $accountId
2308
- * Account Id for the daily uploads to retrieve.
2309
- * @param string $webPropertyId
2310
- * Web property Id for the daily uploads to
2311
- * retrieve.
2312
- * @param string $customDataSourceId
2313
- * Custom data source Id for daily uploads to
2314
- * retrieve.
2315
- * @param string $startDate
2316
- * Start date of the form YYYY-MM-DD.
2317
- * @param string $endDate
2318
- * End date of the form YYYY-MM-DD.
2319
- * @param array $optParams
2320
- * Optional parameters.
2321
- *
2322
- * @opt_param int max-results The maximum number of custom data sources to
2323
- * include in this response.
2324
- * @opt_param int start-index A 1-based index of the first daily upload to
2325
- * retrieve. Use this parameter as a pagination mechanism along with the max-
2326
- * results parameter.
2327
- * @return Google_Service_Analytics_DailyUploads
2328
- */
2329
- public function listManagementDailyUploads($accountId, $webPropertyId, $customDataSourceId, $startDate, $endDate, $optParams = array())
2330
- {
2331
- $params = array(
2332
- 'accountId' => $accountId,
2333
- 'webPropertyId' => $webPropertyId,
2334
- 'customDataSourceId' => $customDataSourceId,
2335
- 'start-date' => $startDate,
2336
- 'end-date' => $endDate
2337
- );
2338
- $params = array_merge($params, $optParams);
2339
- return $this->call('list', array(
2340
- $params
2341
- ), "Google_Service_Analytics_DailyUploads");
2342
- }
2343
-
2344
- /**
2345
- * Update/Overwrite data for a custom data source.
2346
- * (dailyUploads.upload)
2347
- *
2348
- * @param string $accountId
2349
- * Account Id associated with daily upload.
2350
- * @param string $webPropertyId
2351
- * Web property Id associated with daily upload.
2352
- * @param string $customDataSourceId
2353
- * Custom data source Id to which the data
2354
- * being uploaded belongs.
2355
- * @param string $date
2356
- * Date for which data is uploaded. Date should be formatted
2357
- * as YYYY-MM-DD.
2358
- * @param int $appendNumber
2359
- * Append number for this upload indexed from 1.
2360
- * @param string $type
2361
- * Type of data for this upload.
2362
- * @param array $optParams
2363
- * Optional parameters.
2364
- *
2365
- * @opt_param bool reset Reset/Overwrite all previous appends for this date and
2366
- * start over with this file as the first upload.
2367
- * @return Google_Service_Analytics_DailyUploadAppend
2368
- */
2369
- public function upload($accountId, $webPropertyId, $customDataSourceId, $date, $appendNumber, $type, $optParams = array())
2370
- {
2371
- $params = array(
2372
- 'accountId' => $accountId,
2373
- 'webPropertyId' => $webPropertyId,
2374
- 'customDataSourceId' => $customDataSourceId,
2375
- 'date' => $date,
2376
- 'appendNumber' => $appendNumber,
2377
- 'type' => $type
2378
- );
2379
- $params = array_merge($params, $optParams);
2380
- return $this->call('upload', array(
2381
- $params
2382
- ), "Google_Service_Analytics_DailyUploadAppend");
2383
- }
2384
- }
2385
-
2386
- /**
2387
- * The "experiments" collection of methods.
2388
- * Typical usage is:
2389
- * <code>
2390
- * $analyticsService = new Google_Service_Analytics(...);
2391
- * $experiments = $analyticsService->experiments;
2392
- * </code>
2393
- */
2394
- class Google_Service_Analytics_ManagementExperiments_Resource extends Google_Service_Resource
2395
- {
2396
-
2397
- /**
2398
- * Delete an experiment.
2399
- * (experiments.delete)
2400
- *
2401
- * @param string $accountId
2402
- * Account ID to which the experiment belongs
2403
- * @param string $webPropertyId
2404
- * Web property ID to which the experiment belongs
2405
- * @param string $profileId
2406
- * View (Profile) ID to which the experiment belongs
2407
- * @param string $experimentId
2408
- * ID of the experiment to delete
2409
- * @param array $optParams
2410
- * Optional parameters.
2411
- */
2412
- public function delete($accountId, $webPropertyId, $profileId, $experimentId, $optParams = array())
2413
- {
2414
- $params = array(
2415
- 'accountId' => $accountId,
2416
- 'webPropertyId' => $webPropertyId,
2417
- 'profileId' => $profileId,
2418
- 'experimentId' => $experimentId
2419
- );
2420
- $params = array_merge($params, $optParams);
2421
- return $this->call('delete', array(
2422
- $params
2423
- ));
2424
- }
2425
-
2426
- /**
2427
- * Returns an experiment to which the user has access.
2428
- * (experiments.get)
2429
- *
2430
- * @param string $accountId
2431
- * Account ID to retrieve the experiment for.
2432
- * @param string $webPropertyId
2433
- * Web property ID to retrieve the experiment for.
2434
- * @param string $profileId
2435
- * View (Profile) ID to retrieve the experiment for.
2436
- * @param string $experimentId
2437
- * Experiment ID to retrieve the experiment for.
2438
- * @param array $optParams
2439
- * Optional parameters.
2440
- * @return Google_Service_Analytics_Experiment
2441
- */
2442
- public function get($accountId, $webPropertyId, $profileId, $experimentId, $optParams = array())
2443
- {
2444
- $params = array(
2445
- 'accountId' => $accountId,
2446
- 'webPropertyId' => $webPropertyId,
2447
- 'profileId' => $profileId,
2448
- 'experimentId' => $experimentId
2449
- );
2450
- $params = array_merge($params, $optParams);
2451
- return $this->call('get', array(
2452
- $params
2453
- ), "Google_Service_Analytics_Experiment");
2454
- }
2455
-
2456
- /**
2457
- * Create a new experiment.
2458
- * (experiments.insert)
2459
- *
2460
- * @param string $accountId
2461
- * Account ID to create the experiment for.
2462
- * @param string $webPropertyId
2463
- * Web property ID to create the experiment for.
2464
- * @param string $profileId
2465
- * View (Profile) ID to create the experiment for.
2466
- * @param Google_Experiment $postBody
2467
- * @param array $optParams
2468
- * Optional parameters.
2469
- * @return Google_Service_Analytics_Experiment
2470
- */
2471
- public function insert($accountId, $webPropertyId, $profileId, Google_Service_Analytics_Experiment $postBody, $optParams = array())
2472
- {
2473
- $params = array(
2474
- 'accountId' => $accountId,
2475
- 'webPropertyId' => $webPropertyId,
2476
- 'profileId' => $profileId,
2477
- 'postBody' => $postBody
2478
- );
2479
- $params = array_merge($params, $optParams);
2480
- return $this->call('insert', array(
2481
- $params
2482
- ), "Google_Service_Analytics_Experiment");
2483
- }
2484
-
2485
- /**
2486
- * Lists experiments to which the user has access.
2487
- * (experiments.listManagementExperiments)
2488
- *
2489
- * @param string $accountId
2490
- * Account ID to retrieve experiments for.
2491
- * @param string $webPropertyId
2492
- * Web property ID to retrieve experiments for.
2493
- * @param string $profileId
2494
- * View (Profile) ID to retrieve experiments for.
2495
- * @param array $optParams
2496
- * Optional parameters.
2497
- *
2498
- * @opt_param int max-results The maximum number of experiments to include in
2499
- * this response.
2500
- * @opt_param int start-index An index of the first experiment to retrieve. Use
2501
- * this parameter as a pagination mechanism along with the max-results
2502
- * parameter.
2503
- * @return Google_Service_Analytics_Experiments
2504
- */
2505
- public function listManagementExperiments($accountId, $webPropertyId, $profileId, $optParams = array())
2506
- {
2507
- $params = array(
2508
- 'accountId' => $accountId,
2509
- 'webPropertyId' => $webPropertyId,
2510
- 'profileId' => $profileId
2511
- );
2512
- $params = array_merge($params, $optParams);
2513
- return $this->call('list', array(
2514
- $params
2515
- ), "Google_Service_Analytics_Experiments");
2516
- }
2517
-
2518
- /**
2519
- * Update an existing experiment.
2520
- * This method supports patch semantics.
2521
- * (experiments.patch)
2522
- *
2523
- * @param string $accountId
2524
- * Account ID of the experiment to update.
2525
- * @param string $webPropertyId
2526
- * Web property ID of the experiment to update.
2527
- * @param string $profileId
2528
- * View (Profile) ID of the experiment to update.
2529
- * @param string $experimentId
2530
- * Experiment ID of the experiment to update.
2531
- * @param Google_Experiment $postBody
2532
- * @param array $optParams
2533
- * Optional parameters.
2534
- * @return Google_Service_Analytics_Experiment
2535
- */
2536
- public function patch($accountId, $webPropertyId, $profileId, $experimentId, Google_Service_Analytics_Experiment $postBody, $optParams = array())
2537
- {
2538
- $params = array(
2539
- 'accountId' => $accountId,
2540
- 'webPropertyId' => $webPropertyId,
2541
- 'profileId' => $profileId,
2542
- 'experimentId' => $experimentId,
2543
- 'postBody' => $postBody
2544
- );
2545
- $params = array_merge($params, $optParams);
2546
- return $this->call('patch', array(
2547
- $params
2548
- ), "Google_Service_Analytics_Experiment");
2549
- }
2550
-
2551
- /**
2552
- * Update an existing experiment.
2553
- * (experiments.update)
2554
- *
2555
- * @param string $accountId
2556
- * Account ID of the experiment to update.
2557
- * @param string $webPropertyId
2558
- * Web property ID of the experiment to update.
2559
- * @param string $profileId
2560
- * View (Profile) ID of the experiment to update.
2561
- * @param string $experimentId
2562
- * Experiment ID of the experiment to update.
2563
- * @param Google_Experiment $postBody
2564
- * @param array $optParams
2565
- * Optional parameters.
2566
- * @return Google_Service_Analytics_Experiment
2567
- */
2568
- public function update($accountId, $webPropertyId, $profileId, $experimentId, Google_Service_Analytics_Experiment $postBody, $optParams = array())
2569
- {
2570
- $params = array(
2571
- 'accountId' => $accountId,
2572
- 'webPropertyId' => $webPropertyId,
2573
- 'profileId' => $profileId,
2574
- 'experimentId' => $experimentId,
2575
- 'postBody' => $postBody
2576
- );
2577
- $params = array_merge($params, $optParams);
2578
- return $this->call('update', array(
2579
- $params
2580
- ), "Google_Service_Analytics_Experiment");
2581
- }
2582
- }
2583
-
2584
- /**
2585
- * The "filters" collection of methods.
2586
- * Typical usage is:
2587
- * <code>
2588
- * $analyticsService = new Google_Service_Analytics(...);
2589
- * $filters = $analyticsService->filters;
2590
- * </code>
2591
- */
2592
- class Google_Service_Analytics_ManagementFilters_Resource extends Google_Service_Resource
2593
- {
2594
-
2595
- /**
2596
- * Delete a filter.
2597
- * (filters.delete)
2598
- *
2599
- * @param string $accountId
2600
- * Account ID to delete the filter for.
2601
- * @param string $filterId
2602
- * ID of the filter to be deleted.
2603
- * @param array $optParams
2604
- * Optional parameters.
2605
- * @return Google_Service_Analytics_Filter
2606
- */
2607
- public function delete($accountId, $filterId, $optParams = array())
2608
- {
2609
- $params = array(
2610
- 'accountId' => $accountId,
2611
- 'filterId' => $filterId
2612
- );
2613
- $params = array_merge($params, $optParams);
2614
- return $this->call('delete', array(
2615
- $params
2616
- ), "Google_Service_Analytics_Filter");
2617
- }
2618
-
2619
- /**
2620
- * Returns a filters to which the user has access.
2621
- * (filters.get)
2622
- *
2623
- * @param string $accountId
2624
- * Account ID to retrieve filters for.
2625
- * @param string $filterId
2626
- * Filter ID to retrieve filters for.
2627
- * @param array $optParams
2628
- * Optional parameters.
2629
- * @return Google_Service_Analytics_Filter
2630
- */
2631
- public function get($accountId, $filterId, $optParams = array())
2632
- {
2633
- $params = array(
2634
- 'accountId' => $accountId,
2635
- 'filterId' => $filterId
2636
- );
2637
- $params = array_merge($params, $optParams);
2638
- return $this->call('get', array(
2639
- $params
2640
- ), "Google_Service_Analytics_Filter");
2641
- }
2642
-
2643
- /**
2644
- * Create a new filter.
2645
- * (filters.insert)
2646
- *
2647
- * @param string $accountId
2648
- * Account ID to create filter for.
2649
- * @param Google_Filter $postBody
2650
- * @param array $optParams
2651
- * Optional parameters.
2652
- * @return Google_Service_Analytics_Filter
2653
- */
2654
- public function insert($accountId, Google_Service_Analytics_Filter $postBody, $optParams = array())
2655
- {
2656
- $params = array(
2657
- 'accountId' => $accountId,
2658
- 'postBody' => $postBody
2659
- );
2660
- $params = array_merge($params, $optParams);
2661
- return $this->call('insert', array(
2662
- $params
2663
- ), "Google_Service_Analytics_Filter");
2664
- }
2665
-
2666
- /**
2667
- * Lists all filters for an account (filters.listManagementFilters)
2668
- *
2669
- * @param string $accountId
2670
- * Account ID to retrieve filters for.
2671
- * @param array $optParams
2672
- * Optional parameters.
2673
- *
2674
- * @opt_param int max-results The maximum number of filters to include in this
2675
- * response.
2676
- * @opt_param int start-index An index of the first entity to retrieve. Use this
2677
- * parameter as a pagination mechanism along with the max-results parameter.
2678
- * @return Google_Service_Analytics_Filters
2679
- */
2680
- public function listManagementFilters($accountId, $optParams = array())
2681
- {
2682
- $params = array(
2683
- 'accountId' => $accountId
2684
- );
2685
- $params = array_merge($params, $optParams);
2686
- return $this->call('list', array(
2687
- $params
2688
- ), "Google_Service_Analytics_Filters");
2689
- }
2690
-
2691
- /**
2692
- * Updates an existing filter.
2693
- * This method supports patch semantics.
2694
- * (filters.patch)
2695
- *
2696
- * @param string $accountId
2697
- * Account ID to which the filter belongs.
2698
- * @param string $filterId
2699
- * ID of the filter to be updated.
2700
- * @param Google_Filter $postBody
2701
- * @param array $optParams
2702
- * Optional parameters.
2703
- * @return Google_Service_Analytics_Filter
2704
- */
2705
- public function patch($accountId, $filterId, Google_Service_Analytics_Filter $postBody, $optParams = array())
2706
- {
2707
- $params = array(
2708
- 'accountId' => $accountId,
2709
- 'filterId' => $filterId,
2710
- 'postBody' => $postBody
2711
- );
2712
- $params = array_merge($params, $optParams);
2713
- return $this->call('patch', array(
2714
- $params
2715
- ), "Google_Service_Analytics_Filter");
2716
- }
2717
-
2718
- /**
2719
- * Updates an existing filter.
2720
- * (filters.update)
2721
- *
2722
- * @param string $accountId
2723
- * Account ID to which the filter belongs.
2724
- * @param string $filterId
2725
- * ID of the filter to be updated.
2726
- * @param Google_Filter $postBody
2727
- * @param array $optParams
2728
- * Optional parameters.
2729
- * @return Google_Service_Analytics_Filter
2730
- */
2731
- public function update($accountId, $filterId, Google_Service_Analytics_Filter $postBody, $optParams = array())
2732
- {
2733
- $params = array(
2734
- 'accountId' => $accountId,
2735
- 'filterId' => $filterId,
2736
- 'postBody' => $postBody
2737
- );
2738
- $params = array_merge($params, $optParams);
2739
- return $this->call('update', array(
2740
- $params
2741
- ), "Google_Service_Analytics_Filter");
2742
- }
2743
- }
2744
-
2745
- /**
2746
- * The "goals" collection of methods.
2747
- * Typical usage is:
2748
- * <code>
2749
- * $analyticsService = new Google_Service_Analytics(...);
2750
- * $goals = $analyticsService->goals;
2751
- * </code>
2752
- */
2753
- class Google_Service_Analytics_ManagementGoals_Resource extends Google_Service_Resource
2754
- {
2755
-
2756
- /**
2757
- * Gets a goal to which the user has access.
2758
- * (goals.get)
2759
- *
2760
- * @param string $accountId
2761
- * Account ID to retrieve the goal for.
2762
- * @param string $webPropertyId
2763
- * Web property ID to retrieve the goal for.
2764
- * @param string $profileId
2765
- * View (Profile) ID to retrieve the goal for.
2766
- * @param string $goalId
2767
- * Goal ID to retrieve the goal for.
2768
- * @param array $optParams
2769
- * Optional parameters.
2770
- * @return Google_Service_Analytics_Goal
2771
- */
2772
- public function get($accountId, $webPropertyId, $profileId, $goalId, $optParams = array())
2773
- {
2774
- $params = array(
2775
- 'accountId' => $accountId,
2776
- 'webPropertyId' => $webPropertyId,
2777
- 'profileId' => $profileId,
2778
- 'goalId' => $goalId
2779
- );
2780
- $params = array_merge($params, $optParams);
2781
- return $this->call('get', array(
2782
- $params
2783
- ), "Google_Service_Analytics_Goal");
2784
- }
2785
-
2786
- /**
2787
- * Create a new goal.
2788
- * (goals.insert)
2789
- *
2790
- * @param string $accountId
2791
- * Account ID to create the goal for.
2792
- * @param string $webPropertyId
2793
- * Web property ID to create the goal for.
2794
- * @param string $profileId
2795
- * View (Profile) ID to create the goal for.
2796
- * @param Google_Goal $postBody
2797
- * @param array $optParams
2798
- * Optional parameters.
2799
- * @return Google_Service_Analytics_Goal
2800
- */
2801
- public function insert($accountId, $webPropertyId, $profileId, Google_Service_Analytics_Goal $postBody, $optParams = array())
2802
- {
2803
- $params = array(
2804
- 'accountId' => $accountId,
2805
- 'webPropertyId' => $webPropertyId,
2806
- 'profileId' => $profileId,
2807
- 'postBody' => $postBody
2808
- );
2809
- $params = array_merge($params, $optParams);
2810
- return $this->call('insert', array(
2811
- $params
2812
- ), "Google_Service_Analytics_Goal");
2813
- }
2814
-
2815
- /**
2816
- * Lists goals to which the user has access.
2817
- * (goals.listManagementGoals)
2818
- *
2819
- * @param string $accountId
2820
- * Account ID to retrieve goals for. Can either be a
2821
- * specific account ID or '~all', which refers to all the accounts that user has
2822
- * access to.
2823
- * @param string $webPropertyId
2824
- * Web property ID to retrieve goals for. Can
2825
- * either be a specific web property ID or '~all', which refers to all the web
2826
- * properties that user has access to.
2827
- * @param string $profileId
2828
- * View (Profile) ID to retrieve goals for. Can either
2829
- * be a specific view (profile) ID or '~all', which refers to all the views
2830
- * (profiles) that user has access to.
2831
- * @param array $optParams
2832
- * Optional parameters.
2833
- *
2834
- * @opt_param int max-results The maximum number of goals to include in this
2835
- * response.
2836
- * @opt_param int start-index An index of the first goal to retrieve. Use this
2837
- * parameter as a pagination mechanism along with the max-results parameter.
2838
- * @return Google_Service_Analytics_Goals
2839
- */
2840
- public function listManagementGoals($accountId, $webPropertyId, $profileId, $optParams = array())
2841
- {
2842
- $params = array(
2843
- 'accountId' => $accountId,
2844
- 'webPropertyId' => $webPropertyId,
2845
- 'profileId' => $profileId
2846
- );
2847
- $params = array_merge($params, $optParams);
2848
- return $this->call('list', array(
2849
- $params
2850
- ), "Google_Service_Analytics_Goals");
2851
- }
2852
-
2853
- /**
2854
- * Updates an existing view (profile).
2855
- * This method supports patch semantics.
2856
- * (goals.patch)
2857
- *
2858
- * @param string $accountId
2859
- * Account ID to update the goal.
2860
- * @param string $webPropertyId
2861
- * Web property ID to update the goal.
2862
- * @param string $profileId
2863
- * View (Profile) ID to update the goal.
2864
- * @param string $goalId
2865
- * Index of the goal to be updated.
2866
- * @param Google_Goal $postBody
2867
- * @param array $optParams
2868
- * Optional parameters.
2869
- * @return Google_Service_Analytics_Goal
2870
- */
2871
- public function patch($accountId, $webPropertyId, $profileId, $goalId, Google_Service_Analytics_Goal $postBody, $optParams = array())
2872
- {
2873
- $params = array(
2874
- 'accountId' => $accountId,
2875
- 'webPropertyId' => $webPropertyId,
2876
- 'profileId' => $profileId,
2877
- 'goalId' => $goalId,
2878
- 'postBody' => $postBody
2879
- );
2880
- $params = array_merge($params, $optParams);
2881
- return $this->call('patch', array(
2882
- $params
2883
- ), "Google_Service_Analytics_Goal");
2884
- }
2885
-
2886
- /**
2887
- * Updates an existing view (profile).
2888
- * (goals.update)
2889
- *
2890
- * @param string $accountId
2891
- * Account ID to update the goal.
2892
- * @param string $webPropertyId
2893
- * Web property ID to update the goal.
2894
- * @param string $profileId
2895
- * View (Profile) ID to update the goal.
2896
- * @param string $goalId
2897
- * Index of the goal to be updated.
2898
- * @param Google_Goal $postBody
2899
- * @param array $optParams
2900
- * Optional parameters.
2901
- * @return Google_Service_Analytics_Goal
2902
- */
2903
- public function update($accountId, $webPropertyId, $profileId, $goalId, Google_Service_Analytics_Goal $postBody, $optParams = array())
2904
- {
2905
- $params = array(
2906
- 'accountId' => $accountId,
2907
- 'webPropertyId' => $webPropertyId,
2908
- 'profileId' => $profileId,
2909
- 'goalId' => $goalId,
2910
- 'postBody' => $postBody
2911
- );
2912
- $params = array_merge($params, $optParams);
2913
- return $this->call('update', array(
2914
- $params
2915
- ), "Google_Service_Analytics_Goal");
2916
- }
2917
- }
2918
-
2919
- /**
2920
- * The "profileFilterLinks" collection of methods.
2921
- * Typical usage is:
2922
- * <code>
2923
- * $analyticsService = new Google_Service_Analytics(...);
2924
- * $profileFilterLinks = $analyticsService->profileFilterLinks;
2925
- * </code>
2926
- */
2927
- class Google_Service_Analytics_ManagementProfileFilterLinks_Resource extends Google_Service_Resource
2928
- {
2929
-
2930
- /**
2931
- * Delete a profile filter link.
2932
- * (profileFilterLinks.delete)
2933
- *
2934
- * @param string $accountId
2935
- * Account ID to which the profile filter link belongs.
2936
- * @param string $webPropertyId
2937
- * Web property Id to which the profile filter link
2938
- * belongs.
2939
- * @param string $profileId
2940
- * Profile ID to which the filter link belongs.
2941
- * @param string $linkId
2942
- * ID of the profile filter link to delete.
2943
- * @param array $optParams
2944
- * Optional parameters.
2945
- */
2946
- public function delete($accountId, $webPropertyId, $profileId, $linkId, $optParams = array())
2947
- {
2948
- $params = array(
2949
- 'accountId' => $accountId,
2950
- 'webPropertyId' => $webPropertyId,
2951
- 'profileId' => $profileId,
2952
- 'linkId' => $linkId
2953
- );
2954
- $params = array_merge($params, $optParams);
2955
- return $this->call('delete', array(
2956
- $params
2957
- ));
2958
- }
2959
-
2960
- /**
2961
- * Returns a single profile filter link.
2962
- * (profileFilterLinks.get)
2963
- *
2964
- * @param string $accountId
2965
- * Account ID to retrieve profile filter link for.
2966
- * @param string $webPropertyId
2967
- * Web property Id to retrieve profile filter link
2968
- * for.
2969
- * @param string $profileId
2970
- * Profile ID to retrieve filter link for.
2971
- * @param string $linkId
2972
- * ID of the profile filter link.
2973
- * @param array $optParams
2974
- * Optional parameters.
2975
- * @return Google_Service_Analytics_ProfileFilterLink
2976
- */
2977
- public function get($accountId, $webPropertyId, $profileId, $linkId, $optParams = array())
2978
- {
2979
- $params = array(
2980
- 'accountId' => $accountId,
2981
- 'webPropertyId' => $webPropertyId,
2982
- 'profileId' => $profileId,
2983
- 'linkId' => $linkId
2984
- );
2985
- $params = array_merge($params, $optParams);
2986
- return $this->call('get', array(
2987
- $params
2988
- ), "Google_Service_Analytics_ProfileFilterLink");
2989
- }
2990
-
2991
- /**
2992
- * Create a new profile filter link.
2993
- * (profileFilterLinks.insert)
2994
- *
2995
- * @param string $accountId
2996
- * Account ID to create profile filter link for.
2997
- * @param string $webPropertyId
2998
- * Web property Id to create profile filter link
2999
- * for.
3000
- * @param string $profileId
3001
- * Profile ID to create filter link for.
3002
- * @param Google_ProfileFilterLink $postBody
3003
- * @param array $optParams
3004
- * Optional parameters.
3005
- * @return Google_Service_Analytics_ProfileFilterLink
3006
- */
3007
- public function insert($accountId, $webPropertyId, $profileId, Google_Service_Analytics_ProfileFilterLink $postBody, $optParams = array())
3008
- {
3009
- $params = array(
3010
- 'accountId' => $accountId,
3011
- 'webPropertyId' => $webPropertyId,
3012
- 'profileId' => $profileId,
3013
- 'postBody' => $postBody
3014
- );
3015
- $params = array_merge($params, $optParams);
3016
- return $this->call('insert', array(
3017
- $params
3018
- ), "Google_Service_Analytics_ProfileFilterLink");
3019
- }
3020
-
3021
- /**
3022
- * Lists all profile filter links for a profile.
3023
- * (profileFilterLinks.listManagementProfileFilterLinks)
3024
- *
3025
- * @param string $accountId
3026
- * Account ID to retrieve profile filter links for.
3027
- * @param string $webPropertyId
3028
- * Web property Id for profile filter links for.
3029
- * Can either be a specific web property ID or '~all', which refers to all the
3030
- * web properties that user has access to.
3031
- * @param string $profileId
3032
- * Profile ID to retrieve filter links for. Can either
3033
- * be a specific profile ID or '~all', which refers to all the profiles that
3034
- * user has access to.
3035
- * @param array $optParams
3036
- * Optional parameters.
3037
- *
3038
- * @opt_param int max-results The maximum number of profile filter links to
3039
- * include in this response.
3040
- * @opt_param int start-index An index of the first entity to retrieve. Use this
3041
- * parameter as a pagination mechanism along with the max-results parameter.
3042
- * @return Google_Service_Analytics_ProfileFilterLinks
3043
- */
3044
- public function listManagementProfileFilterLinks($accountId, $webPropertyId, $profileId, $optParams = array())
3045
- {
3046
- $params = array(
3047
- 'accountId' => $accountId,
3048
- 'webPropertyId' => $webPropertyId,
3049
- 'profileId' => $profileId
3050
- );
3051
- $params = array_merge($params, $optParams);
3052
- return $this->call('list', array(
3053
- $params
3054
- ), "Google_Service_Analytics_ProfileFilterLinks");
3055
- }
3056
-
3057
- /**
3058
- * Update an existing profile filter link.
3059
- * This method supports patch semantics.
3060
- * (profileFilterLinks.patch)
3061
- *
3062
- * @param string $accountId
3063
- * Account ID to which profile filter link belongs.
3064
- * @param string $webPropertyId
3065
- * Web property Id to which profile filter link
3066
- * belongs
3067
- * @param string $profileId
3068
- * Profile ID to which filter link belongs
3069
- * @param string $linkId
3070
- * ID of the profile filter link to be updated.
3071
- * @param Google_ProfileFilterLink $postBody
3072
- * @param array $optParams
3073
- * Optional parameters.
3074
- * @return Google_Service_Analytics_ProfileFilterLink
3075
- */
3076
- public function patch($accountId, $webPropertyId, $profileId, $linkId, Google_Service_Analytics_ProfileFilterLink $postBody, $optParams = array())
3077
- {
3078
- $params = array(
3079
- 'accountId' => $accountId,
3080
- 'webPropertyId' => $webPropertyId,
3081
- 'profileId' => $profileId,
3082
- 'linkId' => $linkId,
3083
- 'postBody' => $postBody
3084
- );
3085
- $params = array_merge($params, $optParams);
3086
- return $this->call('patch', array(
3087
- $params
3088
- ), "Google_Service_Analytics_ProfileFilterLink");
3089
- }
3090
-
3091
- /**
3092
- * Update an existing profile filter link.
3093
- * (profileFilterLinks.update)
3094
- *
3095
- * @param string $accountId
3096
- * Account ID to which profile filter link belongs.
3097
- * @param string $webPropertyId
3098
- * Web property Id to which profile filter link
3099
- * belongs
3100
- * @param string $profileId
3101
- * Profile ID to which filter link belongs
3102
- * @param string $linkId
3103
- * ID of the profile filter link to be updated.
3104
- * @param Google_ProfileFilterLink $postBody
3105
- * @param array $optParams
3106
- * Optional parameters.
3107
- * @return Google_Service_Analytics_ProfileFilterLink
3108
- */
3109
- public function update($accountId, $webPropertyId, $profileId, $linkId, Google_Service_Analytics_ProfileFilterLink $postBody, $optParams = array())
3110
- {
3111
- $params = array(
3112
- 'accountId' => $accountId,
3113
- 'webPropertyId' => $webPropertyId,
3114
- 'profileId' => $profileId,
3115
- 'linkId' => $linkId,
3116
- 'postBody' => $postBody
3117
- );
3118
- $params = array_merge($params, $optParams);
3119
- return $this->call('update', array(
3120
- $params
3121
- ), "Google_Service_Analytics_ProfileFilterLink");
3122
- }
3123
- }
3124
-
3125
- /**
3126
- * The "profileUserLinks" collection of methods.
3127
- * Typical usage is:
3128
- * <code>
3129
- * $analyticsService = new Google_Service_Analytics(...);
3130
- * $profileUserLinks = $analyticsService->profileUserLinks;
3131
- * </code>
3132
- */
3133
- class Google_Service_Analytics_ManagementProfileUserLinks_Resource extends Google_Service_Resource
3134
- {
3135
-
3136
- /**
3137
- * Removes a user from the given view (profile).
3138
- * (profileUserLinks.delete)
3139
- *
3140
- * @param string $accountId
3141
- * Account ID to delete the user link for.
3142
- * @param string $webPropertyId
3143
- * Web Property ID to delete the user link for.
3144
- * @param string $profileId
3145
- * View (Profile) ID to delete the user link for.
3146
- * @param string $linkId
3147
- * Link ID to delete the user link for.
3148
- * @param array $optParams
3149
- * Optional parameters.
3150
- */
3151
- public function delete($accountId, $webPropertyId, $profileId, $linkId, $optParams = array())
3152
- {
3153
- $params = array(
3154
- 'accountId' => $accountId,
3155
- 'webPropertyId' => $webPropertyId,
3156
- 'profileId' => $profileId,
3157
- 'linkId' => $linkId
3158
- );
3159
- $params = array_merge($params, $optParams);
3160
- return $this->call('delete', array(
3161
- $params
3162
- ));
3163
- }
3164
-
3165
- /**
3166
- * Adds a new user to the given view (profile).
3167
- * (profileUserLinks.insert)
3168
- *
3169
- * @param string $accountId
3170
- * Account ID to create the user link for.
3171
- * @param string $webPropertyId
3172
- * Web Property ID to create the user link for.
3173
- * @param string $profileId
3174
- * View (Profile) ID to create the user link for.
3175
- * @param Google_EntityUserLink $postBody
3176
- * @param array $optParams
3177
- * Optional parameters.
3178
- * @return Google_Service_Analytics_EntityUserLink
3179
- */
3180
- public function insert($accountId, $webPropertyId, $profileId, Google_Service_Analytics_EntityUserLink $postBody, $optParams = array())
3181
- {
3182
- $params = array(
3183
- 'accountId' => $accountId,
3184
- 'webPropertyId' => $webPropertyId,
3185
- 'profileId' => $profileId,
3186
- 'postBody' => $postBody
3187
- );
3188
- $params = array_merge($params, $optParams);
3189
- return $this->call('insert', array(
3190
- $params
3191
- ), "Google_Service_Analytics_EntityUserLink");
3192
- }
3193
-
3194
- /**
3195
- * Lists profile-user links for a given view (profile).
3196
- * (profileUserLinks.listManagementProfileUserLinks)
3197
- *
3198
- * @param string $accountId
3199
- * Account ID which the given view (profile) belongs
3200
- * to.
3201
- * @param string $webPropertyId
3202
- * Web Property ID which the given view (profile)
3203
- * belongs to. Can either be a specific web property ID or '~all', which refers
3204
- * to all the web properties that user has access to.
3205
- * @param string $profileId
3206
- * View (Profile) ID to retrieve the profile-user links
3207
- * for. Can either be a specific profile ID or '~all', which refers to all the
3208
- * profiles that user has access to.
3209
- * @param array $optParams
3210
- * Optional parameters.
3211
- *
3212
- * @opt_param int max-results The maximum number of profile-user links to
3213
- * include in this response.
3214
- * @opt_param int start-index An index of the first profile-user link to
3215
- * retrieve. Use this parameter as a pagination mechanism along with the max-
3216
- * results parameter.
3217
- * @return Google_Service_Analytics_EntityUserLinks
3218
- */
3219
- public function listManagementProfileUserLinks($accountId, $webPropertyId, $profileId, $optParams = array())
3220
- {
3221
- $params = array(
3222
- 'accountId' => $accountId,
3223
- 'webPropertyId' => $webPropertyId,
3224
- 'profileId' => $profileId
3225
- );
3226
- $params = array_merge($params, $optParams);
3227
- return $this->call('list', array(
3228
- $params
3229
- ), "Google_Service_Analytics_EntityUserLinks");
3230
- }
3231
-
3232
- /**
3233
- * Updates permissions for an existing user on the given view (profile).
3234
- * (profileUserLinks.update)
3235
- *
3236
- * @param string $accountId
3237
- * Account ID to update the user link for.
3238
- * @param string $webPropertyId
3239
- * Web Property ID to update the user link for.
3240
- * @param string $profileId
3241
- * View (Profile ID) to update the user link for.
3242
- * @param string $linkId
3243
- * Link ID to update the user link for.
3244
- * @param Google_EntityUserLink $postBody
3245
- * @param array $optParams
3246
- * Optional parameters.
3247
- * @return Google_Service_Analytics_EntityUserLink
3248
- */
3249
- public function update($accountId, $webPropertyId, $profileId, $linkId, Google_Service_Analytics_EntityUserLink $postBody, $optParams = array())
3250
- {
3251
- $params = array(
3252
- 'accountId' => $accountId,
3253
- 'webPropertyId' => $webPropertyId,
3254
- 'profileId' => $profileId,
3255
- 'linkId' => $linkId,
3256
- 'postBody' => $postBody
3257
- );
3258
- $params = array_merge($params, $optParams);
3259
- return $this->call('update', array(
3260
- $params
3261
- ), "Google_Service_Analytics_EntityUserLink");
3262
- }
3263
- }
3264
-
3265
- /**
3266
- * The "profiles" collection of methods.
3267
- * Typical usage is:
3268
- * <code>
3269
- * $analyticsService = new Google_Service_Analytics(...);
3270
- * $profiles = $analyticsService->profiles;
3271
- * </code>
3272
- */
3273
- class Google_Service_Analytics_ManagementProfiles_Resource extends Google_Service_Resource
3274
- {
3275
-
3276
- /**
3277
- * Deletes a view (profile).
3278
- * (profiles.delete)
3279
- *
3280
- * @param string $accountId
3281
- * Account ID to delete the view (profile) for.
3282
- * @param string $webPropertyId
3283
- * Web property ID to delete the view (profile)
3284
- * for.
3285
- * @param string $profileId
3286
- * ID of the view (profile) to be deleted.
3287
- * @param array $optParams
3288
- * Optional parameters.
3289
- */
3290
- public function delete($accountId, $webPropertyId, $profileId, $optParams = array())
3291
- {
3292
- $params = array(
3293
- 'accountId' => $accountId,
3294
- 'webPropertyId' => $webPropertyId,
3295
- 'profileId' => $profileId
3296
- );
3297
- $params = array_merge($params, $optParams);
3298
- return $this->call('delete', array(
3299
- $params
3300
- ));
3301
- }
3302
-
3303
- /**
3304
- * Gets a view (profile) to which the user has access.
3305
- * (profiles.get)
3306
- *
3307
- * @param string $accountId
3308
- * Account ID to retrieve the goal for.
3309
- * @param string $webPropertyId
3310
- * Web property ID to retrieve the goal for.
3311
- * @param string $profileId
3312
- * View (Profile) ID to retrieve the goal for.
3313
- * @param array $optParams
3314
- * Optional parameters.
3315
- * @return Google_Service_Analytics_Profile
3316
- */
3317
- public function get($accountId, $webPropertyId, $profileId, $optParams = array())
3318
- {
3319
- $params = array(
3320
- 'accountId' => $accountId,
3321
- 'webPropertyId' => $webPropertyId,
3322
- 'profileId' => $profileId
3323
- );
3324
- $params = array_merge($params, $optParams);
3325
- return $this->call('get', array(
3326
- $params
3327
- ), "Google_Service_Analytics_Profile");
3328
- }
3329
-
3330
- /**
3331
- * Create a new view (profile).
3332
- * (profiles.insert)
3333
- *
3334
- * @param string $accountId
3335
- * Account ID to create the view (profile) for.
3336
- * @param string $webPropertyId
3337
- * Web property ID to create the view (profile)
3338
- * for.
3339
- * @param Google_Profile $postBody
3340
- * @param array $optParams
3341
- * Optional parameters.
3342
- * @return Google_Service_Analytics_Profile
3343
- */
3344
- public function insert($accountId, $webPropertyId, Google_Service_Analytics_Profile $postBody, $optParams = array())
3345
- {
3346
- $params = array(
3347
- 'accountId' => $accountId,
3348
- 'webPropertyId' => $webPropertyId,
3349
- 'postBody' => $postBody
3350
- );
3351
- $params = array_merge($params, $optParams);
3352
- return $this->call('insert', array(
3353
- $params
3354
- ), "Google_Service_Analytics_Profile");
3355
- }
3356
-
3357
- /**
3358
- * Lists views (profiles) to which the user has access.
3359
- * (profiles.listManagementProfiles)
3360
- *
3361
- * @param string $accountId
3362
- * Account ID for the view (profiles) to retrieve. Can
3363
- * either be a specific account ID or '~all', which refers to all the accounts
3364
- * to which the user has access.
3365
- * @param string $webPropertyId
3366
- * Web property ID for the views (profiles) to
3367
- * retrieve. Can either be a specific web property ID or '~all', which refers to
3368
- * all the web properties to which the user has access.
3369
- * @param array $optParams
3370
- * Optional parameters.
3371
- *
3372
- * @opt_param int max-results The maximum number of views (profiles) to include
3373
- * in this response.
3374
- * @opt_param int start-index An index of the first entity to retrieve. Use this
3375
- * parameter as a pagination mechanism along with the max-results parameter.
3376
- * @return Google_Service_Analytics_Profiles
3377
- */
3378
- public function listManagementProfiles($accountId, $webPropertyId, $optParams = array())
3379
- {
3380
- $params = array(
3381
- 'accountId' => $accountId,
3382
- 'webPropertyId' => $webPropertyId
3383
- );
3384
- $params = array_merge($params, $optParams);
3385
- return $this->call('list', array(
3386
- $params
3387
- ), "Google_Service_Analytics_Profiles");
3388
- }
3389
-
3390
- /**
3391
- * Updates an existing view (profile).
3392
- * This method supports patch semantics.
3393
- * (profiles.patch)
3394
- *
3395
- * @param string $accountId
3396
- * Account ID to which the view (profile) belongs
3397
- * @param string $webPropertyId
3398
- * Web property ID to which the view (profile)
3399
- * belongs
3400
- * @param string $profileId
3401
- * ID of the view (profile) to be updated.
3402
- * @param Google_Profile $postBody
3403
- * @param array $optParams
3404
- * Optional parameters.
3405
- * @return Google_Service_Analytics_Profile
3406
- */
3407
- public function patch($accountId, $webPropertyId, $profileId, Google_Service_Analytics_Profile $postBody, $optParams = array())
3408
- {
3409
- $params = array(
3410
- 'accountId' => $accountId,
3411
- 'webPropertyId' => $webPropertyId,
3412
- 'profileId' => $profileId,
3413
- 'postBody' => $postBody
3414
- );
3415
- $params = array_merge($params, $optParams);
3416
- return $this->call('patch', array(
3417
- $params
3418
- ), "Google_Service_Analytics_Profile");
3419
- }
3420
-
3421
- /**
3422
- * Updates an existing view (profile).
3423
- * (profiles.update)
3424
- *
3425
- * @param string $accountId
3426
- * Account ID to which the view (profile) belongs
3427
- * @param string $webPropertyId
3428
- * Web property ID to which the view (profile)
3429
- * belongs
3430
- * @param string $profileId
3431
- * ID of the view (profile) to be updated.
3432
- * @param Google_Profile $postBody
3433
- * @param array $optParams
3434
- * Optional parameters.
3435
- * @return Google_Service_Analytics_Profile
3436
- */
3437
- public function update($accountId, $webPropertyId, $profileId, Google_Service_Analytics_Profile $postBody, $optParams = array())
3438
- {
3439
- $params = array(
3440
- 'accountId' => $accountId,
3441
- 'webPropertyId' => $webPropertyId,
3442
- 'profileId' => $profileId,
3443
- 'postBody' => $postBody
3444
- );
3445
- $params = array_merge($params, $optParams);
3446
- return $this->call('update', array(
3447
- $params
3448
- ), "Google_Service_Analytics_Profile");
3449
- }
3450
- }
3451
-
3452
- /**
3453
- * The "segments" collection of methods.
3454
- * Typical usage is:
3455
- * <code>
3456
- * $analyticsService = new Google_Service_Analytics(...);
3457
- * $segments = $analyticsService->segments;
3458
- * </code>
3459
- */
3460
- class Google_Service_Analytics_ManagementSegments_Resource extends Google_Service_Resource
3461
- {
3462
-
3463
- /**
3464
- * Lists segments to which the user has access.
3465
- * (segments.listManagementSegments)
3466
- *
3467
- * @param array $optParams
3468
- * Optional parameters.
3469
- *
3470
- * @opt_param int max-results The maximum number of segments to include in this
3471
- * response.
3472
- * @opt_param int start-index An index of the first segment to retrieve. Use
3473
- * this parameter as a pagination mechanism along with the max-results
3474
- * parameter.
3475
- * @return Google_Service_Analytics_Segments
3476
- */
3477
- public function listManagementSegments($optParams = array())
3478
- {
3479
- $params = array();
3480
- $params = array_merge($params, $optParams);
3481
- return $this->call('list', array(
3482
- $params
3483
- ), "Google_Service_Analytics_Segments");
3484
- }
3485
- }
3486
-
3487
- /**
3488
- * The "unsampledReports" collection of methods.
3489
- * Typical usage is:
3490
- * <code>
3491
- * $analyticsService = new Google_Service_Analytics(...);
3492
- * $unsampledReports = $analyticsService->unsampledReports;
3493
- * </code>
3494
- */
3495
- class Google_Service_Analytics_ManagementUnsampledReports_Resource extends Google_Service_Resource
3496
- {
3497
-
3498
- /**
3499
- * Returns a single unsampled report.
3500
- * (unsampledReports.get)
3501
- *
3502
- * @param string $accountId
3503
- * Account ID to retrieve unsampled report for.
3504
- * @param string $webPropertyId
3505
- * Web property ID to retrieve unsampled reports
3506
- * for.
3507
- * @param string $profileId
3508
- * View (Profile) ID to retrieve unsampled report for.
3509
- * @param string $unsampledReportId
3510
- * ID of the unsampled report to retrieve.
3511
- * @param array $optParams
3512
- * Optional parameters.
3513
- * @return Google_Service_Analytics_UnsampledReport
3514
- */
3515
- public function get($accountId, $webPropertyId, $profileId, $unsampledReportId, $optParams = array())
3516
- {
3517
- $params = array(
3518
- 'accountId' => $accountId,
3519
- 'webPropertyId' => $webPropertyId,
3520
- 'profileId' => $profileId,
3521
- 'unsampledReportId' => $unsampledReportId
3522
- );
3523
- $params = array_merge($params, $optParams);
3524
- return $this->call('get', array(
3525
- $params
3526
- ), "Google_Service_Analytics_UnsampledReport");
3527
- }
3528
-
3529
- /**
3530
- * Create a new unsampled report.
3531
- * (unsampledReports.insert)
3532
- *
3533
- * @param string $accountId
3534
- * Account ID to create the unsampled report for.
3535
- * @param string $webPropertyId
3536
- * Web property ID to create the unsampled report
3537
- * for.
3538
- * @param string $profileId
3539
- * View (Profile) ID to create the unsampled report
3540
- * for.
3541
- * @param Google_UnsampledReport $postBody
3542
- * @param array $optParams
3543
- * Optional parameters.
3544
- * @return Google_Service_Analytics_UnsampledReport
3545
- */
3546
- public function insert($accountId, $webPropertyId, $profileId, Google_Service_Analytics_UnsampledReport $postBody, $optParams = array())
3547
- {
3548
- $params = array(
3549
- 'accountId' => $accountId,
3550
- 'webPropertyId' => $webPropertyId,
3551
- 'profileId' => $profileId,
3552
- 'postBody' => $postBody
3553
- );
3554
- $params = array_merge($params, $optParams);
3555
- return $this->call('insert', array(
3556
- $params
3557
- ), "Google_Service_Analytics_UnsampledReport");
3558
- }
3559
-
3560
- /**
3561
- * Lists unsampled reports to which the user has access.
3562
- * (unsampledReports.listManagementUnsampledReports)
3563
- *
3564
- * @param string $accountId
3565
- * Account ID to retrieve unsampled reports for. Must
3566
- * be a specific account ID, ~all is not supported.
3567
- * @param string $webPropertyId
3568
- * Web property ID to retrieve unsampled reports
3569
- * for. Must be a specific web property ID, ~all is not supported.
3570
- * @param string $profileId
3571
- * View (Profile) ID to retrieve unsampled reports for.
3572
- * Must be a specific view (profile) ID, ~all is not supported.
3573
- * @param array $optParams
3574
- * Optional parameters.
3575
- *
3576
- * @opt_param int max-results The maximum number of unsampled reports to include
3577
- * in this response.
3578
- * @opt_param int start-index An index of the first unsampled report to
3579
- * retrieve. Use this parameter as a pagination mechanism along with the max-
3580
- * results parameter.
3581
- * @return Google_Service_Analytics_UnsampledReports
3582
- */
3583
- public function listManagementUnsampledReports($accountId, $webPropertyId, $profileId, $optParams = array())
3584
- {
3585
- $params = array(
3586
- 'accountId' => $accountId,
3587
- 'webPropertyId' => $webPropertyId,
3588
- 'profileId' => $profileId
3589
- );
3590
- $params = array_merge($params, $optParams);
3591
- return $this->call('list', array(
3592
- $params
3593
- ), "Google_Service_Analytics_UnsampledReports");
3594
- }
3595
- }
3596
-
3597
- /**
3598
- * The "uploads" collection of methods.
3599
- * Typical usage is:
3600
- * <code>
3601
- * $analyticsService = new Google_Service_Analytics(...);
3602
- * $uploads = $analyticsService->uploads;
3603
- * </code>
3604
- */
3605
- class Google_Service_Analytics_ManagementUploads_Resource extends Google_Service_Resource
3606
- {
3607
-
3608
- /**
3609
- * Delete data associated with a previous upload.
3610
- * (uploads.deleteUploadData)
3611
- *
3612
- * @param string $accountId
3613
- * Account Id for the uploads to be deleted.
3614
- * @param string $webPropertyId
3615
- * Web property Id for the uploads to be deleted.
3616
- * @param string $customDataSourceId
3617
- * Custom data source Id for the uploads to be
3618
- * deleted.
3619
- * @param Google_AnalyticsDataimportDeleteUploadDataRequest $postBody
3620
- * @param array $optParams
3621
- * Optional parameters.
3622
- */
3623
- public function deleteUploadData($accountId, $webPropertyId, $customDataSourceId, Google_Service_Analytics_AnalyticsDataimportDeleteUploadDataRequest $postBody, $optParams = array())
3624
- {
3625
- $params = array(
3626
- 'accountId' => $accountId,
3627
- 'webPropertyId' => $webPropertyId,
3628
- 'customDataSourceId' => $customDataSourceId,
3629
- 'postBody' => $postBody
3630
- );
3631
- $params = array_merge($params, $optParams);
3632
- return $this->call('deleteUploadData', array(
3633
- $params
3634
- ));
3635
- }
3636
-
3637
- /**
3638
- * List uploads to which the user has access.
3639
- * (uploads.get)
3640
- *
3641
- * @param string $accountId
3642
- * Account Id for the upload to retrieve.
3643
- * @param string $webPropertyId
3644
- * Web property Id for the upload to retrieve.
3645
- * @param string $customDataSourceId
3646
- * Custom data source Id for upload to
3647
- * retrieve.
3648
- * @param string $uploadId
3649
- * Upload Id to retrieve.
3650
- * @param array $optParams
3651
- * Optional parameters.
3652
- * @return Google_Service_Analytics_Upload
3653
- */
3654
- public function get($accountId, $webPropertyId, $customDataSourceId, $uploadId, $optParams = array())
3655
- {
3656
- $params = array(
3657
- 'accountId' => $accountId,
3658
- 'webPropertyId' => $webPropertyId,
3659
- 'customDataSourceId' => $customDataSourceId,
3660
- 'uploadId' => $uploadId
3661
- );
3662
- $params = array_merge($params, $optParams);
3663
- return $this->call('get', array(
3664
- $params
3665
- ), "Google_Service_Analytics_Upload");
3666
- }
3667
-
3668
- /**
3669
- * List uploads to which the user has access.
3670
- * (uploads.listManagementUploads)
3671
- *
3672
- * @param string $accountId
3673
- * Account Id for the uploads to retrieve.
3674
- * @param string $webPropertyId
3675
- * Web property Id for the uploads to retrieve.
3676
- * @param string $customDataSourceId
3677
- * Custom data source Id for uploads to
3678
- * retrieve.
3679
- * @param array $optParams
3680
- * Optional parameters.
3681
- *
3682
- * @opt_param int max-results The maximum number of uploads to include in this
3683
- * response.
3684
- * @opt_param int start-index A 1-based index of the first upload to retrieve.
3685
- * Use this parameter as a pagination mechanism along with the max-results
3686
- * parameter.
3687
- * @return Google_Service_Analytics_Uploads
3688
- */
3689
- public function listManagementUploads($accountId, $webPropertyId, $customDataSourceId, $optParams = array())
3690
- {
3691
- $params = array(
3692
- 'accountId' => $accountId,
3693
- 'webPropertyId' => $webPropertyId,
3694
- 'customDataSourceId' => $customDataSourceId
3695
- );
3696
- $params = array_merge($params, $optParams);
3697
- return $this->call('list', array(
3698
- $params
3699
- ), "Google_Service_Analytics_Uploads");
3700
- }
3701
-
3702
- /**
3703
- * Migrate custom data source and data imports to latest version.
3704
- * (uploads.migrateDataImport)
3705
- *
3706
- * @param string $accountId
3707
- * Account Id for migration.
3708
- * @param string $webPropertyId
3709
- * Web property Id for migration.
3710
- * @param string $customDataSourceId
3711
- * Custom data source Id for migration.
3712
- * @param array $optParams
3713
- * Optional parameters.
3714
- */
3715
- public function migrateDataImport($accountId, $webPropertyId, $customDataSourceId, $optParams = array())
3716
- {
3717
- $params = array(
3718
- 'accountId' => $accountId,
3719
- 'webPropertyId' => $webPropertyId,
3720
- 'customDataSourceId' => $customDataSourceId
3721
- );
3722
- $params = array_merge($params, $optParams);
3723
- return $this->call('migrateDataImport', array(
3724
- $params
3725
- ));
3726
- }
3727
-
3728
- /**
3729
- * Upload data for a custom data source.
3730
- * (uploads.uploadData)
3731
- *
3732
- * @param string $accountId
3733
- * Account Id associated with the upload.
3734
- * @param string $webPropertyId
3735
- * Web property UA-string associated with the
3736
- * upload.
3737
- * @param string $customDataSourceId
3738
- * Custom data source Id to which the data
3739
- * being uploaded belongs.
3740
- * @param array $optParams
3741
- * Optional parameters.
3742
- * @return Google_Service_Analytics_Upload
3743
- */
3744
- public function uploadData($accountId, $webPropertyId, $customDataSourceId, $optParams = array())
3745
- {
3746
- $params = array(
3747
- 'accountId' => $accountId,
3748
- 'webPropertyId' => $webPropertyId,
3749
- 'customDataSourceId' => $customDataSourceId
3750
- );
3751
- $params = array_merge($params, $optParams);
3752
- return $this->call('uploadData', array(
3753
- $params
3754
- ), "Google_Service_Analytics_Upload");
3755
- }
3756
- }
3757
-
3758
- /**
3759
- * The "webPropertyAdWordsLinks" collection of methods.
3760
- * Typical usage is:
3761
- * <code>
3762
- * $analyticsService = new Google_Service_Analytics(...);
3763
- * $webPropertyAdWordsLinks = $analyticsService->webPropertyAdWordsLinks;
3764
- * </code>
3765
- */
3766
- class Google_Service_Analytics_ManagementWebPropertyAdWordsLinks_Resource extends Google_Service_Resource
3767
- {
3768
-
3769
- /**
3770
- * Deletes a web property-AdWords link.
3771
- * (webPropertyAdWordsLinks.delete)
3772
- *
3773
- * @param string $accountId
3774
- * ID of the account which the given web property
3775
- * belongs to.
3776
- * @param string $webPropertyId
3777
- * Web property ID to delete the AdWords link for.
3778
- * @param string $webPropertyAdWordsLinkId
3779
- * Web property AdWords link ID.
3780
- * @param array $optParams
3781
- * Optional parameters.
3782
- */
3783
- public function delete($accountId, $webPropertyId, $webPropertyAdWordsLinkId, $optParams = array())
3784
- {
3785
- $params = array(
3786
- 'accountId' => $accountId,
3787
- 'webPropertyId' => $webPropertyId,
3788
- 'webPropertyAdWordsLinkId' => $webPropertyAdWordsLinkId
3789
- );
3790
- $params = array_merge($params, $optParams);
3791
- return $this->call('delete', array(
3792
- $params
3793
- ));
3794
- }
3795
-
3796
- /**
3797
- * Returns a web property-AdWords link to which the user has access.
3798
- * (webPropertyAdWordsLinks.get)
3799
- *
3800
- * @param string $accountId
3801
- * ID of the account which the given web property
3802
- * belongs to.
3803
- * @param string $webPropertyId
3804
- * Web property ID to retrieve the AdWords link
3805
- * for.
3806
- * @param string $webPropertyAdWordsLinkId
3807
- * Web property-AdWords link ID.
3808
- * @param array $optParams
3809
- * Optional parameters.
3810
- * @return Google_Service_Analytics_EntityAdWordsLink
3811
- */
3812
- public function get($accountId, $webPropertyId, $webPropertyAdWordsLinkId, $optParams = array())
3813
- {
3814
- $params = array(
3815
- 'accountId' => $accountId,
3816
- 'webPropertyId' => $webPropertyId,
3817
- 'webPropertyAdWordsLinkId' => $webPropertyAdWordsLinkId
3818
- );
3819
- $params = array_merge($params, $optParams);
3820
- return $this->call('get', array(
3821
- $params
3822
- ), "Google_Service_Analytics_EntityAdWordsLink");
3823
- }
3824
-
3825
- /**
3826
- * Creates a webProperty-AdWords link.
3827
- * (webPropertyAdWordsLinks.insert)
3828
- *
3829
- * @param string $accountId
3830
- * ID of the Google Analytics account to create the
3831
- * link for.
3832
- * @param string $webPropertyId
3833
- * Web property ID to create the link for.
3834
- * @param Google_EntityAdWordsLink $postBody
3835
- * @param array $optParams
3836
- * Optional parameters.
3837
- * @return Google_Service_Analytics_EntityAdWordsLink
3838
- */
3839
- public function insert($accountId, $webPropertyId, Google_Service_Analytics_EntityAdWordsLink $postBody, $optParams = array())
3840
- {
3841
- $params = array(
3842
- 'accountId' => $accountId,
3843
- 'webPropertyId' => $webPropertyId,
3844
- 'postBody' => $postBody
3845
- );
3846
- $params = array_merge($params, $optParams);
3847
- return $this->call('insert', array(
3848
- $params
3849
- ), "Google_Service_Analytics_EntityAdWordsLink");
3850
- }
3851
-
3852
- /**
3853
- * Lists webProperty-AdWords links for a given web property.
3854
- * (webPropertyAdWordsLinks.listManagementWebPropertyAdWordsLinks)
3855
- *
3856
- * @param string $accountId
3857
- * ID of the account which the given web property
3858
- * belongs to.
3859
- * @param string $webPropertyId
3860
- * Web property ID to retrieve the AdWords links
3861
- * for.
3862
- * @param array $optParams
3863
- * Optional parameters.
3864
- *
3865
- * @opt_param int max-results The maximum number of webProperty-AdWords links to
3866
- * include in this response.
3867
- * @opt_param int start-index An index of the first webProperty-AdWords link to
3868
- * retrieve. Use this parameter as a pagination mechanism along with the max-
3869
- * results parameter.
3870
- * @return Google_Service_Analytics_EntityAdWordsLinks
3871
- */
3872
- public function listManagementWebPropertyAdWordsLinks($accountId, $webPropertyId, $optParams = array())
3873
- {
3874
- $params = array(
3875
- 'accountId' => $accountId,
3876
- 'webPropertyId' => $webPropertyId
3877
- );
3878
- $params = array_merge($params, $optParams);
3879
- return $this->call('list', array(
3880
- $params
3881
- ), "Google_Service_Analytics_EntityAdWordsLinks");
3882
- }
3883
-
3884
- /**
3885
- * Updates an existing webProperty-AdWords link.
3886
- * This method supports patch
3887
- * semantics. (webPropertyAdWordsLinks.patch)
3888
- *
3889
- * @param string $accountId
3890
- * ID of the account which the given web property
3891
- * belongs to.
3892
- * @param string $webPropertyId
3893
- * Web property ID to retrieve the AdWords link
3894
- * for.
3895
- * @param string $webPropertyAdWordsLinkId
3896
- * Web property-AdWords link ID.
3897
- * @param Google_EntityAdWordsLink $postBody
3898
- * @param array $optParams
3899
- * Optional parameters.
3900
- * @return Google_Service_Analytics_EntityAdWordsLink
3901
- */
3902
- public function patch($accountId, $webPropertyId, $webPropertyAdWordsLinkId, Google_Service_Analytics_EntityAdWordsLink $postBody, $optParams = array())
3903
- {
3904
- $params = array(
3905
- 'accountId' => $accountId,
3906
- 'webPropertyId' => $webPropertyId,
3907
- 'webPropertyAdWordsLinkId' => $webPropertyAdWordsLinkId,
3908
- 'postBody' => $postBody
3909
- );
3910
- $params = array_merge($params, $optParams);
3911
- return $this->call('patch', array(
3912
- $params
3913
- ), "Google_Service_Analytics_EntityAdWordsLink");
3914
- }
3915
-
3916
- /**
3917
- * Updates an existing webProperty-AdWords link.
3918
- * (webPropertyAdWordsLinks.update)
3919
- *
3920
- * @param string $accountId
3921
- * ID of the account which the given web property
3922
- * belongs to.
3923
- * @param string $webPropertyId
3924
- * Web property ID to retrieve the AdWords link
3925
- * for.
3926
- * @param string $webPropertyAdWordsLinkId
3927
- * Web property-AdWords link ID.
3928
- * @param Google_EntityAdWordsLink $postBody
3929
- * @param array $optParams
3930
- * Optional parameters.
3931
- * @return Google_Service_Analytics_EntityAdWordsLink
3932
- */
3933
- public function update($accountId, $webPropertyId, $webPropertyAdWordsLinkId, Google_Service_Analytics_EntityAdWordsLink $postBody, $optParams = array())
3934
- {
3935
- $params = array(
3936
- 'accountId' => $accountId,
3937
- 'webPropertyId' => $webPropertyId,
3938
- 'webPropertyAdWordsLinkId' => $webPropertyAdWordsLinkId,
3939
- 'postBody' => $postBody
3940
- );
3941
- $params = array_merge($params, $optParams);
3942
- return $this->call('update', array(
3943
- $params
3944
- ), "Google_Service_Analytics_EntityAdWordsLink");
3945
- }
3946
- }
3947
-
3948
- /**
3949
- * The "webproperties" collection of methods.
3950
- * Typical usage is:
3951
- * <code>
3952
- * $analyticsService = new Google_Service_Analytics(...);
3953
- * $webproperties = $analyticsService->webproperties;
3954
- * </code>
3955
- */
3956
- class Google_Service_Analytics_ManagementWebproperties_Resource extends Google_Service_Resource
3957
- {
3958
-
3959
- /**
3960
- * Gets a web property to which the user has access.
3961
- * (webproperties.get)
3962
- *
3963
- * @param string $accountId
3964
- * Account ID to retrieve the web property for.
3965
- * @param string $webPropertyId
3966
- * ID to retrieve the web property for.
3967
- * @param array $optParams
3968
- * Optional parameters.
3969
- * @return Google_Service_Analytics_Webproperty
3970
- */
3971
- public function get($accountId, $webPropertyId, $optParams = array())
3972
- {
3973
- $params = array(
3974
- 'accountId' => $accountId,
3975
- 'webPropertyId' => $webPropertyId
3976
- );
3977
- $params = array_merge($params, $optParams);
3978
- return $this->call('get', array(
3979
- $params
3980
- ), "Google_Service_Analytics_Webproperty");
3981
- }
3982
-
3983
- /**
3984
- * Create a new property if the account has fewer than 20 properties.
3985
- * Web
3986
- * properties are visible in the Google Analytics interface only if they have at
3987
- * least one profile. (webproperties.insert)
3988
- *
3989
- * @param string $accountId
3990
- * Account ID to create the web property for.
3991
- * @param Google_Webproperty $postBody
3992
- * @param array $optParams
3993
- * Optional parameters.
3994
- * @return Google_Service_Analytics_Webproperty
3995
- */
3996
- public function insert($accountId, Google_Service_Analytics_Webproperty $postBody, $optParams = array())
3997
- {
3998
- $params = array(
3999
- 'accountId' => $accountId,
4000
- 'postBody' => $postBody
4001
- );
4002
- $params = array_merge($params, $optParams);
4003
- return $this->call('insert', array(
4004
- $params
4005
- ), "Google_Service_Analytics_Webproperty");
4006
- }
4007
-
4008
- /**
4009
- * Lists web properties to which the user has access.
4010
- * (webproperties.listManagementWebproperties)
4011
- *
4012
- * @param string $accountId
4013
- * Account ID to retrieve web properties for. Can
4014
- * either be a specific account ID or '~all', which refers to all the accounts
4015
- * that user has access to.
4016
- * @param array $optParams
4017
- * Optional parameters.
4018
- *
4019
- * @opt_param int max-results The maximum number of web properties to include in
4020
- * this response.
4021
- * @opt_param int start-index An index of the first entity to retrieve. Use this
4022
- * parameter as a pagination mechanism along with the max-results parameter.
4023
- * @return Google_Service_Analytics_Webproperties
4024
- */
4025
- public function listManagementWebproperties($accountId, $optParams = array())
4026
- {
4027
- $params = array(
4028
- 'accountId' => $accountId
4029
- );
4030
- $params = array_merge($params, $optParams);
4031
- return $this->call('list', array(
4032
- $params
4033
- ), "Google_Service_Analytics_Webproperties");
4034
- }
4035
-
4036
- /**
4037
- * Updates an existing web property.
4038
- * This method supports patch semantics.
4039
- * (webproperties.patch)
4040
- *
4041
- * @param string $accountId
4042
- * Account ID to which the web property belongs
4043
- * @param string $webPropertyId
4044
- * Web property ID
4045
- * @param Google_Webproperty $postBody
4046
- * @param array $optParams
4047
- * Optional parameters.
4048
- * @return Google_Service_Analytics_Webproperty
4049
- */
4050
- public function patch($accountId, $webPropertyId, Google_Service_Analytics_Webproperty $postBody, $optParams = array())
4051
- {
4052
- $params = array(
4053
- 'accountId' => $accountId,
4054
- 'webPropertyId' => $webPropertyId,
4055
- 'postBody' => $postBody
4056
- );
4057
- $params = array_merge($params, $optParams);
4058
- return $this->call('patch', array(
4059
- $params
4060
- ), "Google_Service_Analytics_Webproperty");
4061
- }
4062
-
4063
- /**
4064
- * Updates an existing web property.
4065
- * (webproperties.update)
4066
- *
4067
- * @param string $accountId
4068
- * Account ID to which the web property belongs
4069
- * @param string $webPropertyId
4070
- * Web property ID
4071
- * @param Google_Webproperty $postBody
4072
- * @param array $optParams
4073
- * Optional parameters.
4074
- * @return Google_Service_Analytics_Webproperty
4075
- */
4076
- public function update($accountId, $webPropertyId, Google_Service_Analytics_Webproperty $postBody, $optParams = array())
4077
- {
4078
- $params = array(
4079
- 'accountId' => $accountId,
4080
- 'webPropertyId' => $webPropertyId,
4081
- 'postBody' => $postBody
4082
- );
4083
- $params = array_merge($params, $optParams);
4084
- return $this->call('update', array(
4085
- $params
4086
- ), "Google_Service_Analytics_Webproperty");
4087
- }
4088
- }
4089
-
4090
- /**
4091
- * The "webpropertyUserLinks" collection of methods.
4092
- * Typical usage is:
4093
- * <code>
4094
- * $analyticsService = new Google_Service_Analytics(...);
4095
- * $webpropertyUserLinks = $analyticsService->webpropertyUserLinks;
4096
- * </code>
4097
- */
4098
- class Google_Service_Analytics_ManagementWebpropertyUserLinks_Resource extends Google_Service_Resource
4099
- {
4100
-
4101
- /**
4102
- * Removes a user from the given web property.
4103
- * (webpropertyUserLinks.delete)
4104
- *
4105
- * @param string $accountId
4106
- * Account ID to delete the user link for.
4107
- * @param string $webPropertyId
4108
- * Web Property ID to delete the user link for.
4109
- * @param string $linkId
4110
- * Link ID to delete the user link for.
4111
- * @param array $optParams
4112
- * Optional parameters.
4113
- */
4114
- public function delete($accountId, $webPropertyId, $linkId, $optParams = array())
4115
- {
4116
- $params = array(
4117
- 'accountId' => $accountId,
4118
- 'webPropertyId' => $webPropertyId,
4119
- 'linkId' => $linkId
4120
- );
4121
- $params = array_merge($params, $optParams);
4122
- return $this->call('delete', array(
4123
- $params
4124
- ));
4125
- }
4126
-
4127
- /**
4128
- * Adds a new user to the given web property.
4129
- * (webpropertyUserLinks.insert)
4130
- *
4131
- * @param string $accountId
4132
- * Account ID to create the user link for.
4133
- * @param string $webPropertyId
4134
- * Web Property ID to create the user link for.
4135
- * @param Google_EntityUserLink $postBody
4136
- * @param array $optParams
4137
- * Optional parameters.
4138
- * @return Google_Service_Analytics_EntityUserLink
4139
- */
4140
- public function insert($accountId, $webPropertyId, Google_Service_Analytics_EntityUserLink $postBody, $optParams = array())
4141
- {
4142
- $params = array(
4143
- 'accountId' => $accountId,
4144
- 'webPropertyId' => $webPropertyId,
4145
- 'postBody' => $postBody
4146
- );
4147
- $params = array_merge($params, $optParams);
4148
- return $this->call('insert', array(
4149
- $params
4150
- ), "Google_Service_Analytics_EntityUserLink");
4151
- }
4152
-
4153
- /**
4154
- * Lists webProperty-user links for a given web property.
4155
- * (webpropertyUserLinks.listManagementWebpropertyUserLinks)
4156
- *
4157
- * @param string $accountId
4158
- * Account ID which the given web property belongs to.
4159
- * @param string $webPropertyId
4160
- * Web Property ID for the webProperty-user links
4161
- * to retrieve. Can either be a specific web property ID or '~all', which refers
4162
- * to all the web properties that user has access to.
4163
- * @param array $optParams
4164
- * Optional parameters.
4165
- *
4166
- * @opt_param int max-results The maximum number of webProperty-user Links to
4167
- * include in this response.
4168
- * @opt_param int start-index An index of the first webProperty-user link to
4169
- * retrieve. Use this parameter as a pagination mechanism along with the max-
4170
- * results parameter.
4171
- * @return Google_Service_Analytics_EntityUserLinks
4172
- */
4173
- public function listManagementWebpropertyUserLinks($accountId, $webPropertyId, $optParams = array())
4174
- {
4175
- $params = array(
4176
- 'accountId' => $accountId,
4177
- 'webPropertyId' => $webPropertyId
4178
- );
4179
- $params = array_merge($params, $optParams);
4180
- return $this->call('list', array(
4181
- $params
4182
- ), "Google_Service_Analytics_EntityUserLinks");
4183
- }
4184
-
4185
- /**
4186
- * Updates permissions for an existing user on the given web property.
4187
- * (webpropertyUserLinks.update)
4188
- *
4189
- * @param string $accountId
4190
- * Account ID to update the account-user link for.
4191
- * @param string $webPropertyId
4192
- * Web property ID to update the account-user link
4193
- * for.
4194
- * @param string $linkId
4195
- * Link ID to update the account-user link for.
4196
- * @param Google_EntityUserLink $postBody
4197
- * @param array $optParams
4198
- * Optional parameters.
4199
- * @return Google_Service_Analytics_EntityUserLink
4200
- */
4201
- public function update($accountId, $webPropertyId, $linkId, Google_Service_Analytics_EntityUserLink $postBody, $optParams = array())
4202
- {
4203
- $params = array(
4204
- 'accountId' => $accountId,
4205
- 'webPropertyId' => $webPropertyId,
4206
- 'linkId' => $linkId,
4207
- 'postBody' => $postBody
4208
- );
4209
- $params = array_merge($params, $optParams);
4210
- return $this->call('update', array(
4211
- $params
4212
- ), "Google_Service_Analytics_EntityUserLink");
4213
- }
4214
- }
4215
-
4216
- /**
4217
- * The "metadata" collection of methods.
4218
- * Typical usage is:
4219
- * <code>
4220
- * $analyticsService = new Google_Service_Analytics(...);
4221
- * $metadata = $analyticsService->metadata;
4222
- * </code>
4223
- */
4224
- class Google_Service_Analytics_Metadata_Resource extends Google_Service_Resource
4225
- {
4226
- }
4227
-
4228
- /**
4229
- * The "columns" collection of methods.
4230
- * Typical usage is:
4231
- * <code>
4232
- * $analyticsService = new Google_Service_Analytics(...);
4233
- * $columns = $analyticsService->columns;
4234
- * </code>
4235
- */
4236
- class Google_Service_Analytics_MetadataColumns_Resource extends Google_Service_Resource
4237
- {
4238
-
4239
- /**
4240
- * Lists all columns for a report type (columns.listMetadataColumns)
4241
- *
4242
- * @param string $reportType
4243
- * Report type. Allowed Values: 'ga'. Where 'ga'
4244
- * corresponds to the Core Reporting API
4245
- * @param array $optParams
4246
- * Optional parameters.
4247
- * @return Google_Service_Analytics_Columns
4248
- */
4249
- public function listMetadataColumns($reportType, $optParams = array())
4250
- {
4251
- $params = array(
4252
- 'reportType' => $reportType
4253
- );
4254
- $params = array_merge($params, $optParams);
4255
- return $this->call('list', array(
4256
- $params
4257
- ), "Google_Service_Analytics_Columns");
4258
- }
4259
- }
4260
-
4261
- /**
4262
- * The "provisioning" collection of methods.
4263
- * Typical usage is:
4264
- * <code>
4265
- * $analyticsService = new Google_Service_Analytics(...);
4266
- * $provisioning = $analyticsService->provisioning;
4267
- * </code>
4268
- */
4269
- class Google_Service_Analytics_Provisioning_Resource extends Google_Service_Resource
4270
- {
4271
-
4272
- /**
4273
- * Creates an account ticket.
4274
- * (provisioning.createAccountTicket)
4275
- *
4276
- * @param Google_AccountTicket $postBody
4277
- * @param array $optParams
4278
- * Optional parameters.
4279
- * @return Google_Service_Analytics_AccountTicket
4280
- */
4281
- public function createAccountTicket(Google_Service_Analytics_AccountTicket $postBody, $optParams = array())
4282
- {
4283
- $params = array(
4284
- 'postBody' => $postBody
4285
- );
4286
- $params = array_merge($params, $optParams);
4287
- return $this->call('createAccountTicket', array(
4288
- $params
4289
- ), "Google_Service_Analytics_AccountTicket");
4290
- }
4291
- }
4292
-
4293
- class Google_Service_Analytics_Account extends Google_Model
4294
- {
4295
-
4296
- protected $internal_gapi_mappings = array();
4297
-
4298
- protected $childLinkType = 'Google_Service_Analytics_AccountChildLink';
4299
-
4300
- protected $childLinkDataType = '';
4301
-
4302
- public $created;
4303
-
4304
- public $id;
4305
-
4306
- public $kind;
4307
-
4308
- public $name;
4309
-
4310
- protected $permissionsType = 'Google_Service_Analytics_AccountPermissions';
4311
-
4312
- protected $permissionsDataType = '';
4313
-
4314
- public $selfLink;
4315
-
4316
- public $updated;
4317
-
4318
- public function setChildLink(Google_Service_Analytics_AccountChildLink $childLink)
4319
- {
4320
- $this->childLink = $childLink;
4321
- }
4322
-
4323
- public function getChildLink()
4324
- {
4325
- return $this->childLink;
4326
- }
4327
-
4328
- public function setCreated($created)
4329
- {
4330
- $this->created = $created;
4331
- }
4332
-
4333
- public function getCreated()
4334
- {
4335
- return $this->created;
4336
- }
4337
-
4338
- public function setId($id)
4339
- {
4340
- $this->id = $id;
4341
- }
4342
-
4343
- public function getId()
4344
- {
4345
- return $this->id;
4346
- }
4347
-
4348
- public function setKind($kind)
4349
- {
4350
- $this->kind = $kind;
4351
- }
4352
-
4353
- public function getKind()
4354
- {
4355
- return $this->kind;
4356
- }
4357
-
4358
- public function setName($name)
4359
- {
4360
- $this->name = $name;
4361
- }
4362
-
4363
- public function getName()
4364
- {
4365
- return $this->name;
4366
- }
4367
-
4368
- public function setPermissions(Google_Service_Analytics_AccountPermissions $permissions)
4369
- {
4370
- $this->permissions = $permissions;
4371
- }
4372
-
4373
- public function getPermissions()
4374
- {
4375
- return $this->permissions;
4376
- }
4377
-
4378
- public function setSelfLink($selfLink)
4379
- {
4380
- $this->selfLink = $selfLink;
4381
- }
4382
-
4383
- public function getSelfLink()
4384
- {
4385
- return $this->selfLink;
4386
- }
4387
-
4388
- public function setUpdated($updated)
4389
- {
4390
- $this->updated = $updated;
4391
- }
4392
-
4393
- public function getUpdated()
4394
- {
4395
- return $this->updated;
4396
- }
4397
- }
4398
-
4399
- class Google_Service_Analytics_AccountChildLink extends Google_Model
4400
- {
4401
-
4402
- protected $internal_gapi_mappings = array();
4403
-
4404
- public $href;
4405
-
4406
- public $type;
4407
-
4408
- public function setHref($href)
4409
- {
4410
- $this->href = $href;
4411
- }
4412
-
4413
- public function getHref()
4414
- {
4415
- return $this->href;
4416
- }
4417
-
4418
- public function setType($type)
4419
- {
4420
- $this->type = $type;
4421
- }
4422
-
4423
- public function getType()
4424
- {
4425
- return $this->type;
4426
- }
4427
- }
4428
-
4429
- class Google_Service_Analytics_AccountPermissions extends Google_Collection
4430
- {
4431
-
4432
- protected $collection_key = 'effective';
4433
-
4434
- protected $internal_gapi_mappings = array();
4435
-
4436
- public $effective;
4437
-
4438
- public function setEffective($effective)
4439
- {
4440
- $this->effective = $effective;
4441
- }
4442
-
4443
- public function getEffective()
4444
- {
4445
- return $this->effective;
4446
- }
4447
- }
4448
-
4449
- class Google_Service_Analytics_AccountRef extends Google_Model
4450
- {
4451
-
4452
- protected $internal_gapi_mappings = array();
4453
-
4454
- public $href;
4455
-
4456
- public $id;
4457
-
4458
- public $kind;
4459
-
4460
- public $name;
4461
-
4462
- public function setHref($href)
4463
- {
4464
- $this->href = $href;
4465
- }
4466
-
4467
- public function getHref()
4468
- {
4469
- return $this->href;
4470
- }
4471
-
4472
- public function setId($id)
4473
- {
4474
- $this->id = $id;
4475
- }
4476
-
4477
- public function getId()
4478
- {
4479
- return $this->id;
4480
- }
4481
-
4482
- public function setKind($kind)
4483
- {
4484
- $this->kind = $kind;
4485
- }
4486
-
4487
- public function getKind()
4488
- {
4489
- return $this->kind;
4490
- }
4491
-
4492
- public function setName($name)
4493
- {
4494
- $this->name = $name;
4495
- }
4496
-
4497
- public function getName()
4498
- {
4499
- return $this->name;
4500
- }
4501
- }
4502
-
4503
- class Google_Service_Analytics_AccountSummaries extends Google_Collection
4504
- {
4505
-
4506
- protected $collection_key = 'items';
4507
-
4508
- protected $internal_gapi_mappings = array();
4509
-
4510
- protected $itemsType = 'Google_Service_Analytics_AccountSummary';
4511
-
4512
- protected $itemsDataType = 'array';
4513
-
4514
- public $itemsPerPage;
4515
-
4516
- public $kind;
4517
-
4518
- public $nextLink;
4519
-
4520
- public $previousLink;
4521
-
4522
- public $startIndex;
4523
-
4524
- public $totalResults;
4525
-
4526
- public $username;
4527
-
4528
- public function setItems($items)
4529
- {
4530
- $this->items = $items;
4531
- }
4532
-
4533
- public function getItems()
4534
- {
4535
- return $this->items;
4536
- }
4537
-
4538
- public function setItemsPerPage($itemsPerPage)
4539
- {
4540
- $this->itemsPerPage = $itemsPerPage;
4541
- }
4542
-
4543
- public function getItemsPerPage()
4544
- {
4545
- return $this->itemsPerPage;
4546
- }
4547
-
4548
- public function setKind($kind)
4549
- {
4550
- $this->kind = $kind;
4551
- }
4552
-
4553
- public function getKind()
4554
- {
4555
- return $this->kind;
4556
- }
4557
-
4558
- public function setNextLink($nextLink)
4559
- {
4560
- $this->nextLink = $nextLink;
4561
- }
4562
-
4563
- public function getNextLink()
4564
- {
4565
- return $this->nextLink;
4566
- }
4567
-
4568
- public function setPreviousLink($previousLink)
4569
- {
4570
- $this->previousLink = $previousLink;
4571
- }
4572
-
4573
- public function getPreviousLink()
4574
- {
4575
- return $this->previousLink;
4576
- }
4577
-
4578
- public function setStartIndex($startIndex)
4579
- {
4580
- $this->startIndex = $startIndex;
4581
- }
4582
-
4583
- public function getStartIndex()
4584
- {
4585
- return $this->startIndex;
4586
- }
4587
-
4588
- public function setTotalResults($totalResults)
4589
- {
4590
- $this->totalResults = $totalResults;
4591
- }
4592
-
4593
- public function getTotalResults()
4594
- {
4595
- return $this->totalResults;
4596
- }
4597
-
4598
- public function setUsername($username)
4599
- {
4600
- $this->username = $username;
4601
- }
4602
-
4603
- public function getUsername()
4604
- {
4605
- return $this->username;
4606
- }
4607
- }
4608
-
4609
- class Google_Service_Analytics_AccountSummary extends Google_Collection
4610
- {
4611
-
4612
- protected $collection_key = 'webProperties';
4613
-
4614
- protected $internal_gapi_mappings = array();
4615
-
4616
- public $id;
4617
-
4618
- public $kind;
4619
-
4620
- public $name;
4621
-
4622
- protected $webPropertiesType = 'Google_Service_Analytics_WebPropertySummary';
4623
-
4624
- protected $webPropertiesDataType = 'array';
4625
-
4626
- public function setId($id)
4627
- {
4628
- $this->id = $id;
4629
- }
4630
-
4631
- public function getId()
4632
- {
4633
- return $this->id;
4634
- }
4635
-
4636
- public function setKind($kind)
4637
- {
4638
- $this->kind = $kind;
4639
- }
4640
-
4641
- public function getKind()
4642
- {
4643
- return $this->kind;
4644
- }
4645
-
4646
- public function setName($name)
4647
- {
4648
- $this->name = $name;
4649
- }
4650
-
4651
- public function getName()
4652
- {
4653
- return $this->name;
4654
- }
4655
-
4656
- public function setWebProperties($webProperties)
4657
- {
4658
- $this->webProperties = $webProperties;
4659
- }
4660
-
4661
- public function getWebProperties()
4662
- {
4663
- return $this->webProperties;
4664
- }
4665
- }
4666
-
4667
- class Google_Service_Analytics_AccountTicket extends Google_Model
4668
- {
4669
-
4670
- protected $internal_gapi_mappings = array();
4671
-
4672
- protected $accountType = 'Google_Service_Analytics_Account';
4673
-
4674
- protected $accountDataType = '';
4675
-
4676
- public $id;
4677
-
4678
- public $kind;
4679
-
4680
- protected $profileType = 'Google_Service_Analytics_Profile';
4681
-
4682
- protected $profileDataType = '';
4683
-
4684
- public $redirectUri;
4685
-
4686
- protected $webpropertyType = 'Google_Service_Analytics_Webproperty';
4687
-
4688
- protected $webpropertyDataType = '';
4689
-
4690
- public function setAccount(Google_Service_Analytics_Account $account)
4691
- {
4692
- $this->account = $account;
4693
- }
4694
-
4695
- public function getAccount()
4696
- {
4697
- return $this->account;
4698
- }
4699
-
4700
- public function setId($id)
4701
- {
4702
- $this->id = $id;
4703
- }
4704
-
4705
- public function getId()
4706
- {
4707
- return $this->id;
4708
- }
4709
-
4710
- public function setKind($kind)
4711
- {
4712
- $this->kind = $kind;
4713
- }
4714
-
4715
- public function getKind()
4716
- {
4717
- return $this->kind;
4718
- }
4719
-
4720
- public function setProfile(Google_Service_Analytics_Profile $profile)
4721
- {
4722
- $this->profile = $profile;
4723
- }
4724
-
4725
- public function getProfile()
4726
- {
4727
- return $this->profile;
4728
- }
4729
-
4730
- public function setRedirectUri($redirectUri)
4731
- {
4732
- $this->redirectUri = $redirectUri;
4733
- }
4734
-
4735
- public function getRedirectUri()
4736
- {
4737
- return $this->redirectUri;
4738
- }
4739
-
4740
- public function setWebproperty(Google_Service_Analytics_Webproperty $webproperty)
4741
- {
4742
- $this->webproperty = $webproperty;
4743
- }
4744
-
4745
- public function getWebproperty()
4746
- {
4747
- return $this->webproperty;
4748
- }
4749
- }
4750
-
4751
- class Google_Service_Analytics_Accounts extends Google_Collection
4752
- {
4753
-
4754
- protected $collection_key = 'items';
4755
-
4756
- protected $internal_gapi_mappings = array();
4757
-
4758
- protected $itemsType = 'Google_Service_Analytics_Account';
4759
-
4760
- protected $itemsDataType = 'array';
4761
-
4762
- public $itemsPerPage;
4763
-
4764
- public $kind;
4765
-
4766
- public $nextLink;
4767
-
4768
- public $previousLink;
4769
-
4770
- public $startIndex;
4771
-
4772
- public $totalResults;
4773
-
4774
- public $username;
4775
-
4776
- public function setItems($items)
4777
- {
4778
- $this->items = $items;
4779
- }
4780
-
4781
- public function getItems()
4782
- {
4783
- return $this->items;
4784
- }
4785
-
4786
- public function setItemsPerPage($itemsPerPage)
4787
- {
4788
- $this->itemsPerPage = $itemsPerPage;
4789
- }
4790
-
4791
- public function getItemsPerPage()
4792
- {
4793
- return $this->itemsPerPage;
4794
- }
4795
-
4796
- public function setKind($kind)
4797
- {
4798
- $this->kind = $kind;
4799
- }
4800
-
4801
- public function getKind()
4802
- {
4803
- return $this->kind;
4804
- }
4805
-
4806
- public function setNextLink($nextLink)
4807
- {
4808
- $this->nextLink = $nextLink;
4809
- }
4810
-
4811
- public function getNextLink()
4812
- {
4813
- return $this->nextLink;
4814
- }
4815
-
4816
- public function setPreviousLink($previousLink)
4817
- {
4818
- $this->previousLink = $previousLink;
4819
- }
4820
-
4821
- public function getPreviousLink()
4822
- {
4823
- return $this->previousLink;
4824
- }
4825
-
4826
- public function setStartIndex($startIndex)
4827
- {
4828
- $this->startIndex = $startIndex;
4829
- }
4830
-
4831
- public function getStartIndex()
4832
- {
4833
- return $this->startIndex;
4834
- }
4835
-
4836
- public function setTotalResults($totalResults)
4837
- {
4838
- $this->totalResults = $totalResults;
4839
- }
4840
-
4841
- public function getTotalResults()
4842
- {
4843
- return $this->totalResults;
4844
- }
4845
-
4846
- public function setUsername($username)
4847
- {
4848
- $this->username = $username;
4849
- }
4850
-
4851
- public function getUsername()
4852
- {
4853
- return $this->username;
4854
- }
4855
- }
4856
-
4857
- class Google_Service_Analytics_AdWordsAccount extends Google_Model
4858
- {
4859
-
4860
- protected $internal_gapi_mappings = array();
4861
-
4862
- public $autoTaggingEnabled;
4863
-
4864
- public $customerId;
4865
-
4866
- public $kind;
4867
-
4868
- public function setAutoTaggingEnabled($autoTaggingEnabled)
4869
- {
4870
- $this->autoTaggingEnabled = $autoTaggingEnabled;
4871
- }
4872
-
4873
- public function getAutoTaggingEnabled()
4874
- {
4875
- return $this->autoTaggingEnabled;
4876
- }
4877
-
4878
- public function setCustomerId($customerId)
4879
- {
4880
- $this->customerId = $customerId;
4881
- }
4882
-
4883
- public function getCustomerId()
4884
- {
4885
- return $this->customerId;
4886
- }
4887
-
4888
- public function setKind($kind)
4889
- {
4890
- $this->kind = $kind;
4891
- }
4892
-
4893
- public function getKind()
4894
- {
4895
- return $this->kind;
4896
- }
4897
- }
4898
-
4899
- class Google_Service_Analytics_AnalyticsDataimportDeleteUploadDataRequest extends Google_Collection
4900
- {
4901
-
4902
- protected $collection_key = 'customDataImportUids';
4903
-
4904
- protected $internal_gapi_mappings = array();
4905
-
4906
- public $customDataImportUids;
4907
-
4908
- public function setCustomDataImportUids($customDataImportUids)
4909
- {
4910
- $this->customDataImportUids = $customDataImportUids;
4911
- }
4912
-
4913
- public function getCustomDataImportUids()
4914
- {
4915
- return $this->customDataImportUids;
4916
- }
4917
- }
4918
-
4919
- class Google_Service_Analytics_Column extends Google_Model
4920
- {
4921
-
4922
- protected $internal_gapi_mappings = array();
4923
-
4924
- public $attributes;
4925
-
4926
- public $id;
4927
-
4928
- public $kind;
4929
-
4930
- public function setAttributes($attributes)
4931
- {
4932
- $this->attributes = $attributes;
4933
- }
4934
-
4935
- public function getAttributes()
4936
- {
4937
- return $this->attributes;
4938
- }
4939
-
4940
- public function setId($id)
4941
- {
4942
- $this->id = $id;
4943
- }
4944
-
4945
- public function getId()
4946
- {
4947
- return $this->id;
4948
- }
4949
-
4950
- public function setKind($kind)
4951
- {
4952
- $this->kind = $kind;
4953
- }
4954
-
4955
- public function getKind()
4956
- {
4957
- return $this->kind;
4958
- }
4959
- }
4960
-
4961
- class Google_Service_Analytics_ColumnAttributes extends Google_Model
4962
- {
4963
- }
4964
-
4965
- class Google_Service_Analytics_Columns extends Google_Collection
4966
- {
4967
-
4968
- protected $collection_key = 'items';
4969
-
4970
- protected $internal_gapi_mappings = array();
4971
-
4972
- public $attributeNames;
4973
-
4974
- public $etag;
4975
-
4976
- protected $itemsType = 'Google_Service_Analytics_Column';
4977
-
4978
- protected $itemsDataType = 'array';
4979
-
4980
- public $kind;
4981
-
4982
- public $totalResults;
4983
-
4984
- public function setAttributeNames($attributeNames)
4985
- {
4986
- $this->attributeNames = $attributeNames;
4987
- }
4988
-
4989
- public function getAttributeNames()
4990
- {
4991
- return $this->attributeNames;
4992
- }
4993
-
4994
- public function setEtag($etag)
4995
- {
4996
- $this->etag = $etag;
4997
- }
4998
-
4999
- public function getEtag()
5000
- {
5001
- return $this->etag;
5002
- }
5003
-
5004
- public function setItems($items)
5005
- {
5006
- $this->items = $items;
5007
- }
5008
-
5009
- public function getItems()
5010
- {
5011
- return $this->items;
5012
- }
5013
-
5014
- public function setKind($kind)
5015
- {
5016
- $this->kind = $kind;
5017
- }
5018
-
5019
- public function getKind()
5020
- {
5021
- return $this->kind;
5022
- }
5023
-
5024
- public function setTotalResults($totalResults)
5025
- {
5026
- $this->totalResults = $totalResults;
5027
- }
5028
-
5029
- public function getTotalResults()
5030
- {
5031
- return $this->totalResults;
5032
- }
5033
- }
5034
-
5035
- class Google_Service_Analytics_CustomDataSource extends Google_Collection
5036
- {
5037
-
5038
- protected $collection_key = 'profilesLinked';
5039
-
5040
- protected $internal_gapi_mappings = array();
5041
-
5042
- public $accountId;
5043
-
5044
- protected $childLinkType = 'Google_Service_Analytics_CustomDataSourceChildLink';
5045
-
5046
- protected $childLinkDataType = '';
5047
-
5048
- public $created;
5049
-
5050
- public $description;
5051
-
5052
- public $id;
5053
-
5054
- public $importBehavior;
5055
-
5056
- public $kind;
5057
-
5058
- public $name;
5059
-
5060
- protected $parentLinkType = 'Google_Service_Analytics_CustomDataSourceParentLink';
5061
-
5062
- protected $parentLinkDataType = '';
5063
-
5064
- public $profilesLinked;
5065
-
5066
- public $selfLink;
5067
-
5068
- public $type;
5069
-
5070
- public $updated;
5071
-
5072
- public $uploadType;
5073
-
5074
- public $webPropertyId;
5075
-
5076
- public function setAccountId($accountId)
5077
- {
5078
- $this->accountId = $accountId;
5079
- }
5080
-
5081
- public function getAccountId()
5082
- {
5083
- return $this->accountId;
5084
- }
5085
-
5086
- public function setChildLink(Google_Service_Analytics_CustomDataSourceChildLink $childLink)
5087
- {
5088
- $this->childLink = $childLink;
5089
- }
5090
-
5091
- public function getChildLink()
5092
- {
5093
- return $this->childLink;
5094
- }
5095
-
5096
- public function setCreated($created)
5097
- {
5098
- $this->created = $created;
5099
- }
5100
-
5101
- public function getCreated()
5102
- {
5103
- return $this->created;
5104
- }
5105
-
5106
- public function setDescription($description)
5107
- {
5108
- $this->description = $description;
5109
- }
5110
-
5111
- public function getDescription()
5112
- {
5113
- return $this->description;
5114
- }
5115
-
5116
- public function setId($id)
5117
- {
5118
- $this->id = $id;
5119
- }
5120
-
5121
- public function getId()
5122
- {
5123
- return $this->id;
5124
- }
5125
-
5126
- public function setImportBehavior($importBehavior)
5127
- {
5128
- $this->importBehavior = $importBehavior;
5129
- }
5130
-
5131
- public function getImportBehavior()
5132
- {
5133
- return $this->importBehavior;
5134
- }
5135
-
5136
- public function setKind($kind)
5137
- {
5138
- $this->kind = $kind;
5139
- }
5140
-
5141
- public function getKind()
5142
- {
5143
- return $this->kind;
5144
- }
5145
-
5146
- public function setName($name)
5147
- {
5148
- $this->name = $name;
5149
- }
5150
-
5151
- public function getName()
5152
- {
5153
- return $this->name;
5154
- }
5155
-
5156
- public function setParentLink(Google_Service_Analytics_CustomDataSourceParentLink $parentLink)
5157
- {
5158
- $this->parentLink = $parentLink;
5159
- }
5160
-
5161
- public function getParentLink()
5162
- {
5163
- return $this->parentLink;
5164
- }
5165
-
5166
- public function setProfilesLinked($profilesLinked)
5167
- {
5168
- $this->profilesLinked = $profilesLinked;
5169
- }
5170
-
5171
- public function getProfilesLinked()
5172
- {
5173
- return $this->profilesLinked;
5174
- }
5175
-
5176
- public function setSelfLink($selfLink)
5177
- {
5178
- $this->selfLink = $selfLink;
5179
- }
5180
-
5181
- public function getSelfLink()
5182
- {
5183
- return $this->selfLink;
5184
- }
5185
-
5186
- public function setType($type)
5187
- {
5188
- $this->type = $type;
5189
- }
5190
-
5191
- public function getType()
5192
- {
5193
- return $this->type;
5194
- }
5195
-
5196
- public function setUpdated($updated)
5197
- {
5198
- $this->updated = $updated;
5199
- }
5200
-
5201
- public function getUpdated()
5202
- {
5203
- return $this->updated;
5204
- }
5205
-
5206
- public function setUploadType($uploadType)
5207
- {
5208
- $this->uploadType = $uploadType;
5209
- }
5210
-
5211
- public function getUploadType()
5212
- {
5213
- return $this->uploadType;
5214
- }
5215
-
5216
- public function setWebPropertyId($webPropertyId)
5217
- {
5218
- $this->webPropertyId = $webPropertyId;
5219
- }
5220
-
5221
- public function getWebPropertyId()
5222
- {
5223
- return $this->webPropertyId;
5224
- }
5225
- }
5226
-
5227
- class Google_Service_Analytics_CustomDataSourceChildLink extends Google_Model
5228
- {
5229
-
5230
- protected $internal_gapi_mappings = array();
5231
-
5232
- public $href;
5233
-
5234
- public $type;
5235
-
5236
- public function setHref($href)
5237
- {
5238
- $this->href = $href;
5239
- }
5240
-
5241
- public function getHref()
5242
- {
5243
- return $this->href;
5244
- }
5245
-
5246
- public function setType($type)
5247
- {
5248
- $this->type = $type;
5249
- }
5250
-
5251
- public function getType()
5252
- {
5253
- return $this->type;
5254
- }
5255
- }
5256
-
5257
- class Google_Service_Analytics_CustomDataSourceParentLink extends Google_Model
5258
- {
5259
-
5260
- protected $internal_gapi_mappings = array();
5261
-
5262
- public $href;
5263
-
5264
- public $type;
5265
-
5266
- public function setHref($href)
5267
- {
5268
- $this->href = $href;
5269
- }
5270
-
5271
- public function getHref()
5272
- {
5273
- return $this->href;
5274
- }
5275
-
5276
- public function setType($type)
5277
- {
5278
- $this->type = $type;
5279
- }
5280
-
5281
- public function getType()
5282
- {
5283
- return $this->type;
5284
- }
5285
- }
5286
-
5287
- class Google_Service_Analytics_CustomDataSources extends Google_Collection
5288
- {
5289
-
5290
- protected $collection_key = 'items';
5291
-
5292
- protected $internal_gapi_mappings = array();
5293
-
5294
- protected $itemsType = 'Google_Service_Analytics_CustomDataSource';
5295
-
5296
- protected $itemsDataType = 'array';
5297
-
5298
- public $itemsPerPage;
5299
-
5300
- public $kind;
5301
-
5302
- public $nextLink;
5303
-
5304
- public $previousLink;
5305
-
5306
- public $startIndex;
5307
-
5308
- public $totalResults;
5309
-
5310
- public $username;
5311
-
5312
- public function setItems($items)
5313
- {
5314
- $this->items = $items;
5315
- }
5316
-
5317
- public function getItems()
5318
- {
5319
- return $this->items;
5320
- }
5321
-
5322
- public function setItemsPerPage($itemsPerPage)
5323
- {
5324
- $this->itemsPerPage = $itemsPerPage;
5325
- }
5326
-
5327
- public function getItemsPerPage()
5328
- {
5329
- return $this->itemsPerPage;
5330
- }
5331
-
5332
- public function setKind($kind)
5333
- {
5334
- $this->kind = $kind;
5335
- }
5336
-
5337
- public function getKind()
5338
- {
5339
- return $this->kind;
5340
- }
5341
-
5342
- public function setNextLink($nextLink)
5343
- {
5344
- $this->nextLink = $nextLink;
5345
- }
5346
-
5347
- public function getNextLink()
5348
- {
5349
- return $this->nextLink;
5350
- }
5351
-
5352
- public function setPreviousLink($previousLink)
5353
- {
5354
- $this->previousLink = $previousLink;
5355
- }
5356
-
5357
- public function getPreviousLink()
5358
- {
5359
- return $this->previousLink;
5360
- }
5361
-
5362
- public function setStartIndex($startIndex)
5363
- {
5364
- $this->startIndex = $startIndex;
5365
- }
5366
-
5367
- public function getStartIndex()
5368
- {
5369
- return $this->startIndex;
5370
- }
5371
-
5372
- public function setTotalResults($totalResults)
5373
- {
5374
- $this->totalResults = $totalResults;
5375
- }
5376
-
5377
- public function getTotalResults()
5378
- {
5379
- return $this->totalResults;
5380
- }
5381
-
5382
- public function setUsername($username)
5383
- {
5384
- $this->username = $username;
5385
- }
5386
-
5387
- public function getUsername()
5388
- {
5389
- return $this->username;
5390
- }
5391
- }
5392
-
5393
- class Google_Service_Analytics_DailyUpload extends Google_Collection
5394
- {
5395
-
5396
- protected $collection_key = 'recentChanges';
5397
-
5398
- protected $internal_gapi_mappings = array();
5399
-
5400
- public $accountId;
5401
-
5402
- public $appendCount;
5403
-
5404
- public $createdTime;
5405
-
5406
- public $customDataSourceId;
5407
-
5408
- public $date;
5409
-
5410
- public $kind;
5411
-
5412
- public $modifiedTime;
5413
-
5414
- protected $parentLinkType = 'Google_Service_Analytics_DailyUploadParentLink';
5415
-
5416
- protected $parentLinkDataType = '';
5417
-
5418
- protected $recentChangesType = 'Google_Service_Analytics_DailyUploadRecentChanges';
5419
-
5420
- protected $recentChangesDataType = 'array';
5421
-
5422
- public $selfLink;
5423
-
5424
- public $webPropertyId;
5425
-
5426
- public function setAccountId($accountId)
5427
- {
5428
- $this->accountId = $accountId;
5429
- }
5430
-
5431
- public function getAccountId()
5432
- {
5433
- return $this->accountId;
5434
- }
5435
-
5436
- public function setAppendCount($appendCount)
5437
- {
5438
- $this->appendCount = $appendCount;
5439
- }
5440
-
5441
- public function getAppendCount()
5442
- {
5443
- return $this->appendCount;
5444
- }
5445
-
5446
- public function setCreatedTime($createdTime)
5447
- {
5448
- $this->createdTime = $createdTime;
5449
- }
5450
-
5451
- public function getCreatedTime()
5452
- {
5453
- return $this->createdTime;
5454
- }
5455
-
5456
- public function setCustomDataSourceId($customDataSourceId)
5457
- {
5458
- $this->customDataSourceId = $customDataSourceId;
5459
- }
5460
-
5461
- public function getCustomDataSourceId()
5462
- {
5463
- return $this->customDataSourceId;
5464
- }
5465
-
5466
- public function setDate($date)
5467
- {
5468
- $this->date = $date;
5469
- }
5470
-
5471
- public function getDate()
5472
- {
5473
- return $this->date;
5474
- }
5475
-
5476
- public function setKind($kind)
5477
- {
5478
- $this->kind = $kind;
5479
- }
5480
-
5481
- public function getKind()
5482
- {
5483
- return $this->kind;
5484
- }
5485
-
5486
- public function setModifiedTime($modifiedTime)
5487
- {
5488
- $this->modifiedTime = $modifiedTime;
5489
- }
5490
-
5491
- public function getModifiedTime()
5492
- {
5493
- return $this->modifiedTime;
5494
- }
5495
-
5496
- public function setParentLink(Google_Service_Analytics_DailyUploadParentLink $parentLink)
5497
- {
5498
- $this->parentLink = $parentLink;
5499
- }
5500
-
5501
- public function getParentLink()
5502
- {
5503
- return $this->parentLink;
5504
- }
5505
-
5506
- public function setRecentChanges($recentChanges)
5507
- {
5508
- $this->recentChanges = $recentChanges;
5509
- }
5510
-
5511
- public function getRecentChanges()
5512
- {
5513
- return $this->recentChanges;
5514
- }
5515
-
5516
- public function setSelfLink($selfLink)
5517
- {
5518
- $this->selfLink = $selfLink;
5519
- }
5520
-
5521
- public function getSelfLink()
5522
- {
5523
- return $this->selfLink;
5524
- }
5525
-
5526
- public function setWebPropertyId($webPropertyId)
5527
- {
5528
- $this->webPropertyId = $webPropertyId;
5529
- }
5530
-
5531
- public function getWebPropertyId()
5532
- {
5533
- return $this->webPropertyId;
5534
- }
5535
- }
5536
-
5537
- class Google_Service_Analytics_DailyUploadAppend extends Google_Model
5538
- {
5539
-
5540
- protected $internal_gapi_mappings = array();
5541
-
5542
- public $accountId;
5543
-
5544
- public $appendNumber;
5545
-
5546
- public $customDataSourceId;
5547
-
5548
- public $date;
5549
-
5550
- public $kind;
5551
-
5552
- public $nextAppendLink;
5553
-
5554
- public $webPropertyId;
5555
-
5556
- public function setAccountId($accountId)
5557
- {
5558
- $this->accountId = $accountId;
5559
- }
5560
-
5561
- public function getAccountId()
5562
- {
5563
- return $this->accountId;
5564
- }
5565
-
5566
- public function setAppendNumber($appendNumber)
5567
- {
5568
- $this->appendNumber = $appendNumber;
5569
- }
5570
-
5571
- public function getAppendNumber()
5572
- {
5573
- return $this->appendNumber;
5574
- }
5575
-
5576
- public function setCustomDataSourceId($customDataSourceId)
5577
- {
5578
- $this->customDataSourceId = $customDataSourceId;
5579
- }
5580
-
5581
- public function getCustomDataSourceId()
5582
- {
5583
- return $this->customDataSourceId;
5584
- }
5585
-
5586
- public function setDate($date)
5587
- {
5588
- $this->date = $date;
5589
- }
5590
-
5591
- public function getDate()
5592
- {
5593
- return $this->date;
5594
- }
5595
-
5596
- public function setKind($kind)
5597
- {
5598
- $this->kind = $kind;
5599
- }
5600
-
5601
- public function getKind()
5602
- {
5603
- return $this->kind;
5604
- }
5605
-
5606
- public function setNextAppendLink($nextAppendLink)
5607
- {
5608
- $this->nextAppendLink = $nextAppendLink;
5609
- }
5610
-
5611
- public function getNextAppendLink()
5612
- {
5613
- return $this->nextAppendLink;
5614
- }
5615
-
5616
- public function setWebPropertyId($webPropertyId)
5617
- {
5618
- $this->webPropertyId = $webPropertyId;
5619
- }
5620
-
5621
- public function getWebPropertyId()
5622
- {
5623
- return $this->webPropertyId;
5624
- }
5625
- }
5626
-
5627
- class Google_Service_Analytics_DailyUploadParentLink extends Google_Model
5628
- {
5629
-
5630
- protected $internal_gapi_mappings = array();
5631
-
5632
- public $href;
5633
-
5634
- public $type;
5635
-
5636
- public function setHref($href)
5637
- {
5638
- $this->href = $href;
5639
- }
5640
-
5641
- public function getHref()
5642
- {
5643
- return $this->href;
5644
- }
5645
-
5646
- public function setType($type)
5647
- {
5648
- $this->type = $type;
5649
- }
5650
-
5651
- public function getType()
5652
- {
5653
- return $this->type;
5654
- }
5655
- }
5656
-
5657
- class Google_Service_Analytics_DailyUploadRecentChanges extends Google_Model
5658
- {
5659
-
5660
- protected $internal_gapi_mappings = array();
5661
-
5662
- public $change;
5663
-
5664
- public $time;
5665
-
5666
- public function setChange($change)
5667
- {
5668
- $this->change = $change;
5669
- }
5670
-
5671
- public function getChange()
5672
- {
5673
- return $this->change;
5674
- }
5675
-
5676
- public function setTime($time)
5677
- {
5678
- $this->time = $time;
5679
- }
5680
-
5681
- public function getTime()
5682
- {
5683
- return $this->time;
5684
- }
5685
- }
5686
-
5687
- class Google_Service_Analytics_DailyUploads extends Google_Collection
5688
- {
5689
-
5690
- protected $collection_key = 'items';
5691
-
5692
- protected $internal_gapi_mappings = array();
5693
-
5694
- protected $itemsType = 'Google_Service_Analytics_DailyUpload';
5695
-
5696
- protected $itemsDataType = 'array';
5697
-
5698
- public $itemsPerPage;
5699
-
5700
- public $kind;
5701
-
5702
- public $nextLink;
5703
-
5704
- public $previousLink;
5705
-
5706
- public $startIndex;
5707
-
5708
- public $totalResults;
5709
-
5710
- public $username;
5711
-
5712
- public function setItems($items)
5713
- {
5714
- $this->items = $items;
5715
- }
5716
-
5717
- public function getItems()
5718
- {
5719
- return $this->items;
5720
- }
5721
-
5722
- public function setItemsPerPage($itemsPerPage)
5723
- {
5724
- $this->itemsPerPage = $itemsPerPage;
5725
- }
5726
-
5727
- public function getItemsPerPage()
5728
- {
5729
- return $this->itemsPerPage;
5730
- }
5731
-
5732
- public function setKind($kind)
5733
- {
5734
- $this->kind = $kind;
5735
- }
5736
-
5737
- public function getKind()
5738
- {
5739
- return $this->kind;
5740
- }
5741
-
5742
- public function setNextLink($nextLink)
5743
- {
5744
- $this->nextLink = $nextLink;
5745
- }
5746
-
5747
- public function getNextLink()
5748
- {
5749
- return $this->nextLink;
5750
- }
5751
-
5752
- public function setPreviousLink($previousLink)
5753
- {
5754
- $this->previousLink = $previousLink;
5755
- }
5756
-
5757
- public function getPreviousLink()
5758
- {
5759
- return $this->previousLink;
5760
- }
5761
-
5762
- public function setStartIndex($startIndex)
5763
- {
5764
- $this->startIndex = $startIndex;
5765
- }
5766
-
5767
- public function getStartIndex()
5768
- {
5769
- return $this->startIndex;
5770
- }
5771
-
5772
- public function setTotalResults($totalResults)
5773
- {
5774
- $this->totalResults = $totalResults;
5775
- }
5776
-
5777
- public function getTotalResults()
5778
- {
5779
- return $this->totalResults;
5780
- }
5781
-
5782
- public function setUsername($username)
5783
- {
5784
- $this->username = $username;
5785
- }
5786
-
5787
- public function getUsername()
5788
- {
5789
- return $this->username;
5790
- }
5791
- }
5792
-
5793
- class Google_Service_Analytics_EntityAdWordsLink extends Google_Collection
5794
- {
5795
-
5796
- protected $collection_key = 'profileIds';
5797
-
5798
- protected $internal_gapi_mappings = array();
5799
-
5800
- protected $adWordsAccountsType = 'Google_Service_Analytics_AdWordsAccount';
5801
-
5802
- protected $adWordsAccountsDataType = 'array';
5803
-
5804
- protected $entityType = 'Google_Service_Analytics_EntityAdWordsLinkEntity';
5805
-
5806
- protected $entityDataType = '';
5807
-
5808
- public $id;
5809
-
5810
- public $kind;
5811
-
5812
- public $name;
5813
-
5814
- public $profileIds;
5815
-
5816
- public $selfLink;
5817
-
5818
- public function setAdWordsAccounts($adWordsAccounts)
5819
- {
5820
- $this->adWordsAccounts = $adWordsAccounts;
5821
- }
5822
-
5823
- public function getAdWordsAccounts()
5824
- {
5825
- return $this->adWordsAccounts;
5826
- }
5827
-
5828
- public function setEntity(Google_Service_Analytics_EntityAdWordsLinkEntity $entity)
5829
- {
5830
- $this->entity = $entity;
5831
- }
5832
-
5833
- public function getEntity()
5834
- {
5835
- return $this->entity;
5836
- }
5837
-
5838
- public function setId($id)
5839
- {
5840
- $this->id = $id;
5841
- }
5842
-
5843
- public function getId()
5844
- {
5845
- return $this->id;
5846
- }
5847
-
5848
- public function setKind($kind)
5849
- {
5850
- $this->kind = $kind;
5851
- }
5852
-
5853
- public function getKind()
5854
- {
5855
- return $this->kind;
5856
- }
5857
-
5858
- public function setName($name)
5859
- {
5860
- $this->name = $name;
5861
- }
5862
-
5863
- public function getName()
5864
- {
5865
- return $this->name;
5866
- }
5867
-
5868
- public function setProfileIds($profileIds)
5869
- {
5870
- $this->profileIds = $profileIds;
5871
- }
5872
-
5873
- public function getProfileIds()
5874
- {
5875
- return $this->profileIds;
5876
- }
5877
-
5878
- public function setSelfLink($selfLink)
5879
- {
5880
- $this->selfLink = $selfLink;
5881
- }
5882
-
5883
- public function getSelfLink()
5884
- {
5885
- return $this->selfLink;
5886
- }
5887
- }
5888
-
5889
- class Google_Service_Analytics_EntityAdWordsLinkEntity extends Google_Model
5890
- {
5891
-
5892
- protected $internal_gapi_mappings = array();
5893
-
5894
- protected $webPropertyRefType = 'Google_Service_Analytics_WebPropertyRef';
5895
-
5896
- protected $webPropertyRefDataType = '';
5897
-
5898
- public function setWebPropertyRef(Google_Service_Analytics_WebPropertyRef $webPropertyRef)
5899
- {
5900
- $this->webPropertyRef = $webPropertyRef;
5901
- }
5902
-
5903
- public function getWebPropertyRef()
5904
- {
5905
- return $this->webPropertyRef;
5906
- }
5907
- }
5908
-
5909
- class Google_Service_Analytics_EntityAdWordsLinks extends Google_Collection
5910
- {
5911
-
5912
- protected $collection_key = 'items';
5913
-
5914
- protected $internal_gapi_mappings = array();
5915
-
5916
- protected $itemsType = 'Google_Service_Analytics_EntityAdWordsLink';
5917
-
5918
- protected $itemsDataType = 'array';
5919
-
5920
- public $itemsPerPage;
5921
-
5922
- public $kind;
5923
-
5924
- public $nextLink;
5925
-
5926
- public $previousLink;
5927
-
5928
- public $startIndex;
5929
-
5930
- public $totalResults;
5931
-
5932
- public function setItems($items)
5933
- {
5934
- $this->items = $items;
5935
- }
5936
-
5937
- public function getItems()
5938
- {
5939
- return $this->items;
5940
- }
5941
-
5942
- public function setItemsPerPage($itemsPerPage)
5943
- {
5944
- $this->itemsPerPage = $itemsPerPage;
5945
- }
5946
-
5947
- public function getItemsPerPage()
5948
- {
5949
- return $this->itemsPerPage;
5950
- }
5951
-
5952
- public function setKind($kind)
5953
- {
5954
- $this->kind = $kind;
5955
- }
5956
-
5957
- public function getKind()
5958
- {
5959
- return $this->kind;
5960
- }
5961
-
5962
- public function setNextLink($nextLink)
5963
- {
5964
- $this->nextLink = $nextLink;
5965
- }
5966
-
5967
- public function getNextLink()
5968
- {
5969
- return $this->nextLink;
5970
- }
5971
-
5972
- public function setPreviousLink($previousLink)
5973
- {
5974
- $this->previousLink = $previousLink;
5975
- }
5976
-
5977
- public function getPreviousLink()
5978
- {
5979
- return $this->previousLink;
5980
- }
5981
-
5982
- public function setStartIndex($startIndex)
5983
- {
5984
- $this->startIndex = $startIndex;
5985
- }
5986
-
5987
- public function getStartIndex()
5988
- {
5989
- return $this->startIndex;
5990
- }
5991
-
5992
- public function setTotalResults($totalResults)
5993
- {
5994
- $this->totalResults = $totalResults;
5995
- }
5996
-
5997
- public function getTotalResults()
5998
- {
5999
- return $this->totalResults;
6000
- }
6001
- }
6002
-
6003
- class Google_Service_Analytics_EntityUserLink extends Google_Model
6004
- {
6005
-
6006
- protected $internal_gapi_mappings = array();
6007
-
6008
- protected $entityType = 'Google_Service_Analytics_EntityUserLinkEntity';
6009
-
6010
- protected $entityDataType = '';
6011
-
6012
- public $id;
6013
-
6014
- public $kind;
6015
-
6016
- protected $permissionsType = 'Google_Service_Analytics_EntityUserLinkPermissions';
6017
-
6018
- protected $permissionsDataType = '';
6019
-
6020
- public $selfLink;
6021
-
6022
- protected $userRefType = 'Google_Service_Analytics_UserRef';
6023
-
6024
- protected $userRefDataType = '';
6025
-
6026
- public function setEntity(Google_Service_Analytics_EntityUserLinkEntity $entity)
6027
- {
6028
- $this->entity = $entity;
6029
- }
6030
-
6031
- public function getEntity()
6032
- {
6033
- return $this->entity;
6034
- }
6035
-
6036
- public function setId($id)
6037
- {
6038
- $this->id = $id;
6039
- }
6040
-
6041
- public function getId()
6042
- {
6043
- return $this->id;
6044
- }
6045
-
6046
- public function setKind($kind)
6047
- {
6048
- $this->kind = $kind;
6049
- }
6050
-
6051
- public function getKind()
6052
- {
6053
- return $this->kind;
6054
- }
6055
-
6056
- public function setPermissions(Google_Service_Analytics_EntityUserLinkPermissions $permissions)
6057
- {
6058
- $this->permissions = $permissions;
6059
- }
6060
-
6061
- public function getPermissions()
6062
- {
6063
- return $this->permissions;
6064
- }
6065
-
6066
- public function setSelfLink($selfLink)
6067
- {
6068
- $this->selfLink = $selfLink;
6069
- }
6070
-
6071
- public function getSelfLink()
6072
- {
6073
- return $this->selfLink;
6074
- }
6075
-
6076
- public function setUserRef(Google_Service_Analytics_UserRef $userRef)
6077
- {
6078
- $this->userRef = $userRef;
6079
- }
6080
-
6081
- public function getUserRef()
6082
- {
6083
- return $this->userRef;
6084
- }
6085
- }
6086
-
6087
- class Google_Service_Analytics_EntityUserLinkEntity extends Google_Model
6088
- {
6089
-
6090
- protected $internal_gapi_mappings = array();
6091
-
6092
- protected $accountRefType = 'Google_Service_Analytics_AccountRef';
6093
-
6094
- protected $accountRefDataType = '';
6095
-
6096
- protected $profileRefType = 'Google_Service_Analytics_ProfileRef';
6097
-
6098
- protected $profileRefDataType = '';
6099
-
6100
- protected $webPropertyRefType = 'Google_Service_Analytics_WebPropertyRef';
6101
-
6102
- protected $webPropertyRefDataType = '';
6103
-
6104
- public function setAccountRef(Google_Service_Analytics_AccountRef $accountRef)
6105
- {
6106
- $this->accountRef = $accountRef;
6107
- }
6108
-
6109
- public function getAccountRef()
6110
- {
6111
- return $this->accountRef;
6112
- }
6113
-
6114
- public function setProfileRef(Google_Service_Analytics_ProfileRef $profileRef)
6115
- {
6116
- $this->profileRef = $profileRef;
6117
- }
6118
-
6119
- public function getProfileRef()
6120
- {
6121
- return $this->profileRef;
6122
- }
6123
-
6124
- public function setWebPropertyRef(Google_Service_Analytics_WebPropertyRef $webPropertyRef)
6125
- {
6126
- $this->webPropertyRef = $webPropertyRef;
6127
- }
6128
-
6129
- public function getWebPropertyRef()
6130
- {
6131
- return $this->webPropertyRef;
6132
- }
6133
- }
6134
-
6135
- class Google_Service_Analytics_EntityUserLinkPermissions extends Google_Collection
6136
- {
6137
-
6138
- protected $collection_key = 'local';
6139
-
6140
- protected $internal_gapi_mappings = array();
6141
-
6142
- public $effective;
6143
-
6144
- public $local;
6145
-
6146
- public function setEffective($effective)
6147
- {
6148
- $this->effective = $effective;
6149
- }
6150
-
6151
- public function getEffective()
6152
- {
6153
- return $this->effective;
6154
- }
6155
-
6156
- public function setLocal($local)
6157
- {
6158
- $this->local = $local;
6159
- }
6160
-
6161
- public function getLocal()
6162
- {
6163
- return $this->local;
6164
- }
6165
- }
6166
-
6167
- class Google_Service_Analytics_EntityUserLinks extends Google_Collection
6168
- {
6169
-
6170
- protected $collection_key = 'items';
6171
-
6172
- protected $internal_gapi_mappings = array();
6173
-
6174
- protected $itemsType = 'Google_Service_Analytics_EntityUserLink';
6175
-
6176
- protected $itemsDataType = 'array';
6177
-
6178
- public $itemsPerPage;
6179
-
6180
- public $kind;
6181
-
6182
- public $nextLink;
6183
-
6184
- public $previousLink;
6185
-
6186
- public $startIndex;
6187
-
6188
- public $totalResults;
6189
-
6190
- public function setItems($items)
6191
- {
6192
- $this->items = $items;
6193
- }
6194
-
6195
- public function getItems()
6196
- {
6197
- return $this->items;
6198
- }
6199
-
6200
- public function setItemsPerPage($itemsPerPage)
6201
- {
6202
- $this->itemsPerPage = $itemsPerPage;
6203
- }
6204
-
6205
- public function getItemsPerPage()
6206
- {
6207
- return $this->itemsPerPage;
6208
- }
6209
-
6210
- public function setKind($kind)
6211
- {
6212
- $this->kind = $kind;
6213
- }
6214
-
6215
- public function getKind()
6216
- {
6217
- return $this->kind;
6218
- }
6219
-
6220
- public function setNextLink($nextLink)
6221
- {
6222
- $this->nextLink = $nextLink;
6223
- }
6224
-
6225
- public function getNextLink()
6226
- {
6227
- return $this->nextLink;
6228
- }
6229
-
6230
- public function setPreviousLink($previousLink)
6231
- {
6232
- $this->previousLink = $previousLink;
6233
- }
6234
-
6235
- public function getPreviousLink()
6236
- {
6237
- return $this->previousLink;
6238
- }
6239
-
6240
- public function setStartIndex($startIndex)
6241
- {
6242
- $this->startIndex = $startIndex;
6243
- }
6244
-
6245
- public function getStartIndex()
6246
- {
6247
- return $this->startIndex;
6248
- }
6249
-
6250
- public function setTotalResults($totalResults)
6251
- {
6252
- $this->totalResults = $totalResults;
6253
- }
6254
-
6255
- public function getTotalResults()
6256
- {
6257
- return $this->totalResults;
6258
- }
6259
- }
6260
-
6261
- class Google_Service_Analytics_Experiment extends Google_Collection
6262
- {
6263
-
6264
- protected $collection_key = 'variations';
6265
-
6266
- protected $internal_gapi_mappings = array();
6267
-
6268
- public $accountId;
6269
-
6270
- public $created;
6271
-
6272
- public $description;
6273
-
6274
- public $editableInGaUi;
6275
-
6276
- public $endTime;
6277
-
6278
- public $equalWeighting;
6279
-
6280
- public $id;
6281
-
6282
- public $internalWebPropertyId;
6283
-
6284
- public $kind;
6285
-
6286
- public $minimumExperimentLengthInDays;
6287
-
6288
- public $name;
6289
-
6290
- public $objectiveMetric;
6291
-
6292
- public $optimizationType;
6293
-
6294
- protected $parentLinkType = 'Google_Service_Analytics_ExperimentParentLink';
6295
-
6296
- protected $parentLinkDataType = '';
6297
-
6298
- public $profileId;
6299
-
6300
- public $reasonExperimentEnded;
6301
-
6302
- public $rewriteVariationUrlsAsOriginal;
6303
-
6304
- public $selfLink;
6305
-
6306
- public $servingFramework;
6307
-
6308
- public $snippet;
6309
-
6310
- public $startTime;
6311
-
6312
- public $status;
6313
-
6314
- public $trafficCoverage;
6315
-
6316
- public $updated;
6317
-
6318
- protected $variationsType = 'Google_Service_Analytics_ExperimentVariations';
6319
-
6320
- protected $variationsDataType = 'array';
6321
-
6322
- public $webPropertyId;
6323
-
6324
- public $winnerConfidenceLevel;
6325
-
6326
- public $winnerFound;
6327
-
6328
- public function setAccountId($accountId)
6329
- {
6330
- $this->accountId = $accountId;
6331
- }
6332
-
6333
- public function getAccountId()
6334
- {
6335
- return $this->accountId;
6336
- }
6337
-
6338
- public function setCreated($created)
6339
- {
6340
- $this->created = $created;
6341
- }
6342
-
6343
- public function getCreated()
6344
- {
6345
- return $this->created;
6346
- }
6347
-
6348
- public function setDescription($description)
6349
- {
6350
- $this->description = $description;
6351
- }
6352
-
6353
- public function getDescription()
6354
- {
6355
- return $this->description;
6356
- }
6357
-
6358
- public function setEditableInGaUi($editableInGaUi)
6359
- {
6360
- $this->editableInGaUi = $editableInGaUi;
6361
- }
6362
-
6363
- public function getEditableInGaUi()
6364
- {
6365
- return $this->editableInGaUi;
6366
- }
6367
-
6368
- public function setEndTime($endTime)
6369
- {
6370
- $this->endTime = $endTime;
6371
- }
6372
-
6373
- public function getEndTime()
6374
- {
6375
- return $this->endTime;
6376
- }
6377
-
6378
- public function setEqualWeighting($equalWeighting)
6379
- {
6380
- $this->equalWeighting = $equalWeighting;
6381
- }
6382
-
6383
- public function getEqualWeighting()
6384
- {
6385
- return $this->equalWeighting;
6386
- }
6387
-
6388
- public function setId($id)
6389
- {
6390
- $this->id = $id;
6391
- }
6392
-
6393
- public function getId()
6394
- {
6395
- return $this->id;
6396
- }
6397
-
6398
- public function setInternalWebPropertyId($internalWebPropertyId)
6399
- {
6400
- $this->internalWebPropertyId = $internalWebPropertyId;
6401
- }
6402
-
6403
- public function getInternalWebPropertyId()
6404
- {
6405
- return $this->internalWebPropertyId;
6406
- }
6407
-
6408
- public function setKind($kind)
6409
- {
6410
- $this->kind = $kind;
6411
- }
6412
-
6413
- public function getKind()
6414
- {
6415
- return $this->kind;
6416
- }
6417
-
6418
- public function setMinimumExperimentLengthInDays($minimumExperimentLengthInDays)
6419
- {
6420
- $this->minimumExperimentLengthInDays = $minimumExperimentLengthInDays;
6421
- }
6422
-
6423
- public function getMinimumExperimentLengthInDays()
6424
- {
6425
- return $this->minimumExperimentLengthInDays;
6426
- }
6427
-
6428
- public function setName($name)
6429
- {
6430
- $this->name = $name;
6431
- }
6432
-
6433
- public function getName()
6434
- {
6435
- return $this->name;
6436
- }
6437
-
6438
- public function setObjectiveMetric($objectiveMetric)
6439
- {
6440
- $this->objectiveMetric = $objectiveMetric;
6441
- }
6442
-
6443
- public function getObjectiveMetric()
6444
- {
6445
- return $this->objectiveMetric;
6446
- }
6447
-
6448
- public function setOptimizationType($optimizationType)
6449
- {
6450
- $this->optimizationType = $optimizationType;
6451
- }
6452
-
6453
- public function getOptimizationType()
6454
- {
6455
- return $this->optimizationType;
6456
- }
6457
-
6458
- public function setParentLink(Google_Service_Analytics_ExperimentParentLink $parentLink)
6459
- {
6460
- $this->parentLink = $parentLink;
6461
- }
6462
-
6463
- public function getParentLink()
6464
- {
6465
- return $this->parentLink;
6466
- }
6467
-
6468
- public function setProfileId($profileId)
6469
- {
6470
- $this->profileId = $profileId;
6471
- }
6472
-
6473
- public function getProfileId()
6474
- {
6475
- return $this->profileId;
6476
- }
6477
-
6478
- public function setReasonExperimentEnded($reasonExperimentEnded)
6479
- {
6480
- $this->reasonExperimentEnded = $reasonExperimentEnded;
6481
- }
6482
-
6483
- public function getReasonExperimentEnded()
6484
- {
6485
- return $this->reasonExperimentEnded;
6486
- }
6487
-
6488
- public function setRewriteVariationUrlsAsOriginal($rewriteVariationUrlsAsOriginal)
6489
- {
6490
- $this->rewriteVariationUrlsAsOriginal = $rewriteVariationUrlsAsOriginal;
6491
- }
6492
-
6493
- public function getRewriteVariationUrlsAsOriginal()
6494
- {
6495
- return $this->rewriteVariationUrlsAsOriginal;
6496
- }
6497
-
6498
- public function setSelfLink($selfLink)
6499
- {
6500
- $this->selfLink = $selfLink;
6501
- }
6502
-
6503
- public function getSelfLink()
6504
- {
6505
- return $this->selfLink;
6506
- }
6507
-
6508
- public function setServingFramework($servingFramework)
6509
- {
6510
- $this->servingFramework = $servingFramework;
6511
- }
6512
-
6513
- public function getServingFramework()
6514
- {
6515
- return $this->servingFramework;
6516
- }
6517
-
6518
- public function setSnippet($snippet)
6519
- {
6520
- $this->snippet = $snippet;
6521
- }
6522
-
6523
- public function getSnippet()
6524
- {
6525
- return $this->snippet;
6526
- }
6527
-
6528
- public function setStartTime($startTime)
6529
- {
6530
- $this->startTime = $startTime;
6531
- }
6532
-
6533
- public function getStartTime()
6534
- {
6535
- return $this->startTime;
6536
- }
6537
-
6538
- public function setStatus($status)
6539
- {
6540
- $this->status = $status;
6541
- }
6542
-
6543
- public function getStatus()
6544
- {
6545
- return $this->status;
6546
- }
6547
-
6548
- public function setTrafficCoverage($trafficCoverage)
6549
- {
6550
- $this->trafficCoverage = $trafficCoverage;
6551
- }
6552
-
6553
- public function getTrafficCoverage()
6554
- {
6555
- return $this->trafficCoverage;
6556
- }
6557
-
6558
- public function setUpdated($updated)
6559
- {
6560
- $this->updated = $updated;
6561
- }
6562
-
6563
- public function getUpdated()
6564
- {
6565
- return $this->updated;
6566
- }
6567
-
6568
- public function setVariations($variations)
6569
- {
6570
- $this->variations = $variations;
6571
- }
6572
-
6573
- public function getVariations()
6574
- {
6575
- return $this->variations;
6576
- }
6577
-
6578
- public function setWebPropertyId($webPropertyId)
6579
- {
6580
- $this->webPropertyId = $webPropertyId;
6581
- }
6582
-
6583
- public function getWebPropertyId()
6584
- {
6585
- return $this->webPropertyId;
6586
- }
6587
-
6588
- public function setWinnerConfidenceLevel($winnerConfidenceLevel)
6589
- {
6590
- $this->winnerConfidenceLevel = $winnerConfidenceLevel;
6591
- }
6592
-
6593
- public function getWinnerConfidenceLevel()
6594
- {
6595
- return $this->winnerConfidenceLevel;
6596
- }
6597
-
6598
- public function setWinnerFound($winnerFound)
6599
- {
6600
- $this->winnerFound = $winnerFound;
6601
- }
6602
-
6603
- public function getWinnerFound()
6604
- {
6605
- return $this->winnerFound;
6606
- }
6607
- }
6608
-
6609
- class Google_Service_Analytics_ExperimentParentLink extends Google_Model
6610
- {
6611
-
6612
- protected $internal_gapi_mappings = array();
6613
-
6614
- public $href;
6615
-
6616
- public $type;
6617
-
6618
- public function setHref($href)
6619
- {
6620
- $this->href = $href;
6621
- }
6622
-
6623
- public function getHref()
6624
- {
6625
- return $this->href;
6626
- }
6627
-
6628
- public function setType($type)
6629
- {
6630
- $this->type = $type;
6631
- }
6632
-
6633
- public function getType()
6634
- {
6635
- return $this->type;
6636
- }
6637
- }
6638
-
6639
- class Google_Service_Analytics_ExperimentVariations extends Google_Model
6640
- {
6641
-
6642
- protected $internal_gapi_mappings = array();
6643
-
6644
- public $name;
6645
-
6646
- public $status;
6647
-
6648
- public $url;
6649
-
6650
- public $weight;
6651
-
6652
- public $won;
6653
-
6654
- public function setName($name)
6655
- {
6656
- $this->name = $name;
6657
- }
6658
-
6659
- public function getName()
6660
- {
6661
- return $this->name;
6662
- }
6663
-
6664
- public function setStatus($status)
6665
- {
6666
- $this->status = $status;
6667
- }
6668
-
6669
- public function getStatus()
6670
- {
6671
- return $this->status;
6672
- }
6673
-
6674
- public function setUrl($url)
6675
- {
6676
- $this->url = $url;
6677
- }
6678
-
6679
- public function getUrl()
6680
- {
6681
- return $this->url;
6682
- }
6683
-
6684
- public function setWeight($weight)
6685
- {
6686
- $this->weight = $weight;
6687
- }
6688
-
6689
- public function getWeight()
6690
- {
6691
- return $this->weight;
6692
- }
6693
-
6694
- public function setWon($won)
6695
- {
6696
- $this->won = $won;
6697
- }
6698
-
6699
- public function getWon()
6700
- {
6701
- return $this->won;
6702
- }
6703
- }
6704
-
6705
- class Google_Service_Analytics_Experiments extends Google_Collection
6706
- {
6707
-
6708
- protected $collection_key = 'items';
6709
-
6710
- protected $internal_gapi_mappings = array();
6711
-
6712
- protected $itemsType = 'Google_Service_Analytics_Experiment';
6713
-
6714
- protected $itemsDataType = 'array';
6715
-
6716
- public $itemsPerPage;
6717
-
6718
- public $kind;
6719
-
6720
- public $nextLink;
6721
-
6722
- public $previousLink;
6723
-
6724
- public $startIndex;
6725
-
6726
- public $totalResults;
6727
-
6728
- public $username;
6729
-
6730
- public function setItems($items)
6731
- {
6732
- $this->items = $items;
6733
- }
6734
-
6735
- public function getItems()
6736
- {
6737
- return $this->items;
6738
- }
6739
-
6740
- public function setItemsPerPage($itemsPerPage)
6741
- {
6742
- $this->itemsPerPage = $itemsPerPage;
6743
- }
6744
-
6745
- public function getItemsPerPage()
6746
- {
6747
- return $this->itemsPerPage;
6748
- }
6749
-
6750
- public function setKind($kind)
6751
- {
6752
- $this->kind = $kind;
6753
- }
6754
-
6755
- public function getKind()
6756
- {
6757
- return $this->kind;
6758
- }
6759
-
6760
- public function setNextLink($nextLink)
6761
- {
6762
- $this->nextLink = $nextLink;
6763
- }
6764
-
6765
- public function getNextLink()
6766
- {
6767
- return $this->nextLink;
6768
- }
6769
-
6770
- public function setPreviousLink($previousLink)
6771
- {
6772
- $this->previousLink = $previousLink;
6773
- }
6774
-
6775
- public function getPreviousLink()
6776
- {
6777
- return $this->previousLink;
6778
- }
6779
-
6780
- public function setStartIndex($startIndex)
6781
- {
6782
- $this->startIndex = $startIndex;
6783
- }
6784
-
6785
- public function getStartIndex()
6786
- {
6787
- return $this->startIndex;
6788
- }
6789
-
6790
- public function setTotalResults($totalResults)
6791
- {
6792
- $this->totalResults = $totalResults;
6793
- }
6794
-
6795
- public function getTotalResults()
6796
- {
6797
- return $this->totalResults;
6798
- }
6799
-
6800
- public function setUsername($username)
6801
- {
6802
- $this->username = $username;
6803
- }
6804
-
6805
- public function getUsername()
6806
- {
6807
- return $this->username;
6808
- }
6809
- }
6810
-
6811
- class Google_Service_Analytics_Filter extends Google_Model
6812
- {
6813
-
6814
- protected $internal_gapi_mappings = array();
6815
-
6816
- public $accountId;
6817
-
6818
- protected $advancedDetailsType = 'Google_Service_Analytics_FilterAdvancedDetails';
6819
-
6820
- protected $advancedDetailsDataType = '';
6821
-
6822
- public $created;
6823
-
6824
- protected $excludeDetailsType = 'Google_Service_Analytics_FilterExpression';
6825
-
6826
- protected $excludeDetailsDataType = '';
6827
-
6828
- public $id;
6829
-
6830
- protected $includeDetailsType = 'Google_Service_Analytics_FilterExpression';
6831
-
6832
- protected $includeDetailsDataType = '';
6833
-
6834
- public $kind;
6835
-
6836
- protected $lowercaseDetailsType = 'Google_Service_Analytics_FilterLowercaseDetails';
6837
-
6838
- protected $lowercaseDetailsDataType = '';
6839
-
6840
- public $name;
6841
-
6842
- protected $parentLinkType = 'Google_Service_Analytics_FilterParentLink';
6843
-
6844
- protected $parentLinkDataType = '';
6845
-
6846
- protected $searchAndReplaceDetailsType = 'Google_Service_Analytics_FilterSearchAndReplaceDetails';
6847
-
6848
- protected $searchAndReplaceDetailsDataType = '';
6849
-
6850
- public $selfLink;
6851
-
6852
- public $type;
6853
-
6854
- public $updated;
6855
-
6856
- protected $uppercaseDetailsType = 'Google_Service_Analytics_FilterUppercaseDetails';
6857
-
6858
- protected $uppercaseDetailsDataType = '';
6859
-
6860
- public function setAccountId($accountId)
6861
- {
6862
- $this->accountId = $accountId;
6863
- }
6864
-
6865
- public function getAccountId()
6866
- {
6867
- return $this->accountId;
6868
- }
6869
-
6870
- public function setAdvancedDetails(Google_Service_Analytics_FilterAdvancedDetails $advancedDetails)
6871
- {
6872
- $this->advancedDetails = $advancedDetails;
6873
- }
6874
-
6875
- public function getAdvancedDetails()
6876
- {
6877
- return $this->advancedDetails;
6878
- }
6879
-
6880
- public function setCreated($created)
6881
- {
6882
- $this->created = $created;
6883
- }
6884
-
6885
- public function getCreated()
6886
- {
6887
- return $this->created;
6888
- }
6889
-
6890
- public function setExcludeDetails(Google_Service_Analytics_FilterExpression $excludeDetails)
6891
- {
6892
- $this->excludeDetails = $excludeDetails;
6893
- }
6894
-
6895
- public function getExcludeDetails()
6896
- {
6897
- return $this->excludeDetails;
6898
- }
6899
-
6900
- public function setId($id)
6901
- {
6902
- $this->id = $id;
6903
- }
6904
-
6905
- public function getId()
6906
- {
6907
- return $this->id;
6908
- }
6909
-
6910
- public function setIncludeDetails(Google_Service_Analytics_FilterExpression $includeDetails)
6911
- {
6912
- $this->includeDetails = $includeDetails;
6913
- }
6914
-
6915
- public function getIncludeDetails()
6916
- {
6917
- return $this->includeDetails;
6918
- }
6919
-
6920
- public function setKind($kind)
6921
- {
6922
- $this->kind = $kind;
6923
- }
6924
-
6925
- public function getKind()
6926
- {
6927
- return $this->kind;
6928
- }
6929
-
6930
- public function setLowercaseDetails(Google_Service_Analytics_FilterLowercaseDetails $lowercaseDetails)
6931
- {
6932
- $this->lowercaseDetails = $lowercaseDetails;
6933
- }
6934
-
6935
- public function getLowercaseDetails()
6936
- {
6937
- return $this->lowercaseDetails;
6938
- }
6939
-
6940
- public function setName($name)
6941
- {
6942
- $this->name = $name;
6943
- }
6944
-
6945
- public function getName()
6946
- {
6947
- return $this->name;
6948
- }
6949
-
6950
- public function setParentLink(Google_Service_Analytics_FilterParentLink $parentLink)
6951
- {
6952
- $this->parentLink = $parentLink;
6953
- }
6954
-
6955
- public function getParentLink()
6956
- {
6957
- return $this->parentLink;
6958
- }
6959
-
6960
- public function setSearchAndReplaceDetails(Google_Service_Analytics_FilterSearchAndReplaceDetails $searchAndReplaceDetails)
6961
- {
6962
- $this->searchAndReplaceDetails = $searchAndReplaceDetails;
6963
- }
6964
-
6965
- public function getSearchAndReplaceDetails()
6966
- {
6967
- return $this->searchAndReplaceDetails;
6968
- }
6969
-
6970
- public function setSelfLink($selfLink)
6971
- {
6972
- $this->selfLink = $selfLink;
6973
- }
6974
-
6975
- public function getSelfLink()
6976
- {
6977
- return $this->selfLink;
6978
- }
6979
-
6980
- public function setType($type)
6981
- {
6982
- $this->type = $type;
6983
- }
6984
-
6985
- public function getType()
6986
- {
6987
- return $this->type;
6988
- }
6989
-
6990
- public function setUpdated($updated)
6991
- {
6992
- $this->updated = $updated;
6993
- }
6994
-
6995
- public function getUpdated()
6996
- {
6997
- return $this->updated;
6998
- }
6999
-
7000
- public function setUppercaseDetails(Google_Service_Analytics_FilterUppercaseDetails $uppercaseDetails)
7001
- {
7002
- $this->uppercaseDetails = $uppercaseDetails;
7003
- }
7004
-
7005
- public function getUppercaseDetails()
7006
- {
7007
- return $this->uppercaseDetails;
7008
- }
7009
- }
7010
-
7011
- class Google_Service_Analytics_FilterAdvancedDetails extends Google_Model
7012
- {
7013
-
7014
- protected $internal_gapi_mappings = array();
7015
-
7016
- public $caseSensitive;
7017
-
7018
- public $extractA;
7019
-
7020
- public $extractB;
7021
-
7022
- public $fieldA;
7023
-
7024
- public $fieldARequired;
7025
-
7026
- public $fieldB;
7027
-
7028
- public $fieldBRequired;
7029
-
7030
- public $outputConstructor;
7031
-
7032
- public $outputToField;
7033
-
7034
- public $overrideOutputField;
7035
-
7036
- public function setCaseSensitive($caseSensitive)
7037
- {
7038
- $this->caseSensitive = $caseSensitive;
7039
- }
7040
-
7041
- public function getCaseSensitive()
7042
- {
7043
- return $this->caseSensitive;
7044
- }
7045
-
7046
- public function setExtractA($extractA)
7047
- {
7048
- $this->extractA = $extractA;
7049
- }
7050
-
7051
- public function getExtractA()
7052
- {
7053
- return $this->extractA;
7054
- }
7055
-
7056
- public function setExtractB($extractB)
7057
- {
7058
- $this->extractB = $extractB;
7059
- }
7060
-
7061
- public function getExtractB()
7062
- {
7063
- return $this->extractB;
7064
- }
7065
-
7066
- public function setFieldA($fieldA)
7067
- {
7068
- $this->fieldA = $fieldA;
7069
- }
7070
-
7071
- public function getFieldA()
7072
- {
7073
- return $this->fieldA;
7074
- }
7075
-
7076
- public function setFieldARequired($fieldARequired)
7077
- {
7078
- $this->fieldARequired = $fieldARequired;
7079
- }
7080
-
7081
- public function getFieldARequired()
7082
- {
7083
- return $this->fieldARequired;
7084
- }
7085
-
7086
- public function setFieldB($fieldB)
7087
- {
7088
- $this->fieldB = $fieldB;
7089
- }
7090
-
7091
- public function getFieldB()
7092
- {
7093
- return $this->fieldB;
7094
- }
7095
-
7096
- public function setFieldBRequired($fieldBRequired)
7097
- {
7098
- $this->fieldBRequired = $fieldBRequired;
7099
- }
7100
-
7101
- public function getFieldBRequired()
7102
- {
7103
- return $this->fieldBRequired;
7104
- }
7105
-
7106
- public function setOutputConstructor($outputConstructor)
7107
- {
7108
- $this->outputConstructor = $outputConstructor;
7109
- }
7110
-
7111
- public function getOutputConstructor()
7112
- {
7113
- return $this->outputConstructor;
7114
- }
7115
-
7116
- public function setOutputToField($outputToField)
7117
- {
7118
- $this->outputToField = $outputToField;
7119
- }
7120
-
7121
- public function getOutputToField()
7122
- {
7123
- return $this->outputToField;
7124
- }
7125
-
7126
- public function setOverrideOutputField($overrideOutputField)
7127
- {
7128
- $this->overrideOutputField = $overrideOutputField;
7129
- }
7130
-
7131
- public function getOverrideOutputField()
7132
- {
7133
- return $this->overrideOutputField;
7134
- }
7135
- }
7136
-
7137
- class Google_Service_Analytics_FilterExpression extends Google_Model
7138
- {
7139
-
7140
- protected $internal_gapi_mappings = array();
7141
-
7142
- public $caseSensitive;
7143
-
7144
- public $expressionValue;
7145
-
7146
- public $field;
7147
-
7148
- public $kind;
7149
-
7150
- public $matchType;
7151
-
7152
- public function setCaseSensitive($caseSensitive)
7153
- {
7154
- $this->caseSensitive = $caseSensitive;
7155
- }
7156
-
7157
- public function getCaseSensitive()
7158
- {
7159
- return $this->caseSensitive;
7160
- }
7161
-
7162
- public function setExpressionValue($expressionValue)
7163
- {
7164
- $this->expressionValue = $expressionValue;
7165
- }
7166
-
7167
- public function getExpressionValue()
7168
- {
7169
- return $this->expressionValue;
7170
- }
7171
-
7172
- public function setField($field)
7173
- {
7174
- $this->field = $field;
7175
- }
7176
-
7177
- public function getField()
7178
- {
7179
- return $this->field;
7180
- }
7181
-
7182
- public function setKind($kind)
7183
- {
7184
- $this->kind = $kind;
7185
- }
7186
-
7187
- public function getKind()
7188
- {
7189
- return $this->kind;
7190
- }
7191
-
7192
- public function setMatchType($matchType)
7193
- {
7194
- $this->matchType = $matchType;
7195
- }
7196
-
7197
- public function getMatchType()
7198
- {
7199
- return $this->matchType;
7200
- }
7201
- }
7202
-
7203
- class Google_Service_Analytics_FilterLowercaseDetails extends Google_Model
7204
- {
7205
-
7206
- protected $internal_gapi_mappings = array();
7207
-
7208
- public $field;
7209
-
7210
- public function setField($field)
7211
- {
7212
- $this->field = $field;
7213
- }
7214
-
7215
- public function getField()
7216
- {
7217
- return $this->field;
7218
- }
7219
- }
7220
-
7221
- class Google_Service_Analytics_FilterParentLink extends Google_Model
7222
- {
7223
-
7224
- protected $internal_gapi_mappings = array();
7225
-
7226
- public $href;
7227
-
7228
- public $type;
7229
-
7230
- public function setHref($href)
7231
- {
7232
- $this->href = $href;
7233
- }
7234
-
7235
- public function getHref()
7236
- {
7237
- return $this->href;
7238
- }
7239
-
7240
- public function setType($type)
7241
- {
7242
- $this->type = $type;
7243
- }
7244
-
7245
- public function getType()
7246
- {
7247
- return $this->type;
7248
- }
7249
- }
7250
-
7251
- class Google_Service_Analytics_FilterRef extends Google_Model
7252
- {
7253
-
7254
- protected $internal_gapi_mappings = array();
7255
-
7256
- public $accountId;
7257
-
7258
- public $href;
7259
-
7260
- public $id;
7261
-
7262
- public $kind;
7263
-
7264
- public $name;
7265
-
7266
- public function setAccountId($accountId)
7267
- {
7268
- $this->accountId = $accountId;
7269
- }
7270
-
7271
- public function getAccountId()
7272
- {
7273
- return $this->accountId;
7274
- }
7275
-
7276
- public function setHref($href)
7277
- {
7278
- $this->href = $href;
7279
- }
7280
-
7281
- public function getHref()
7282
- {
7283
- return $this->href;
7284
- }
7285
-
7286
- public function setId($id)
7287
- {
7288
- $this->id = $id;
7289
- }
7290
-
7291
- public function getId()
7292
- {
7293
- return $this->id;
7294
- }
7295
-
7296
- public function setKind($kind)
7297
- {
7298
- $this->kind = $kind;
7299
- }
7300
-
7301
- public function getKind()
7302
- {
7303
- return $this->kind;
7304
- }
7305
-
7306
- public function setName($name)
7307
- {
7308
- $this->name = $name;
7309
- }
7310
-
7311
- public function getName()
7312
- {
7313
- return $this->name;
7314
- }
7315
- }
7316
-
7317
- class Google_Service_Analytics_FilterSearchAndReplaceDetails extends Google_Model
7318
- {
7319
-
7320
- protected $internal_gapi_mappings = array();
7321
-
7322
- public $caseSensitive;
7323
-
7324
- public $field;
7325
-
7326
- public $replaceString;
7327
-
7328
- public $searchString;
7329
-
7330
- public function setCaseSensitive($caseSensitive)
7331
- {
7332
- $this->caseSensitive = $caseSensitive;
7333
- }
7334
-
7335
- public function getCaseSensitive()
7336
- {
7337
- return $this->caseSensitive;
7338
- }
7339
-
7340
- public function setField($field)
7341
- {
7342
- $this->field = $field;
7343
- }
7344
-
7345
- public function getField()
7346
- {
7347
- return $this->field;
7348
- }
7349
-
7350
- public function setReplaceString($replaceString)
7351
- {
7352
- $this->replaceString = $replaceString;
7353
- }
7354
-
7355
- public function getReplaceString()
7356
- {
7357
- return $this->replaceString;
7358
- }
7359
-
7360
- public function setSearchString($searchString)
7361
- {
7362
- $this->searchString = $searchString;
7363
- }
7364
-
7365
- public function getSearchString()
7366
- {
7367
- return $this->searchString;
7368
- }
7369
- }
7370
-
7371
- class Google_Service_Analytics_FilterUppercaseDetails extends Google_Model
7372
- {
7373
-
7374
- protected $internal_gapi_mappings = array();
7375
-
7376
- public $field;
7377
-
7378
- public function setField($field)
7379
- {
7380
- $this->field = $field;
7381
- }
7382
-
7383
- public function getField()
7384
- {
7385
- return $this->field;
7386
- }
7387
- }
7388
-
7389
- class Google_Service_Analytics_Filters extends Google_Collection
7390
- {
7391
-
7392
- protected $collection_key = 'items';
7393
-
7394
- protected $internal_gapi_mappings = array();
7395
-
7396
- protected $itemsType = 'Google_Service_Analytics_Filter';
7397
-
7398
- protected $itemsDataType = 'array';
7399
-
7400
- public $itemsPerPage;
7401
-
7402
- public $kind;
7403
-
7404
- public $nextLink;
7405
-
7406
- public $previousLink;
7407
-
7408
- public $startIndex;
7409
-
7410
- public $totalResults;
7411
-
7412
- public $username;
7413
-
7414
- public function setItems($items)
7415
- {
7416
- $this->items = $items;
7417
- }
7418
-
7419
- public function getItems()
7420
- {
7421
- return $this->items;
7422
- }
7423
-
7424
- public function setItemsPerPage($itemsPerPage)
7425
- {
7426
- $this->itemsPerPage = $itemsPerPage;
7427
- }
7428
-
7429
- public function getItemsPerPage()
7430
- {
7431
- return $this->itemsPerPage;
7432
- }
7433
-
7434
- public function setKind($kind)
7435
- {
7436
- $this->kind = $kind;
7437
- }
7438
-
7439
- public function getKind()
7440
- {
7441
- return $this->kind;
7442
- }
7443
-
7444
- public function setNextLink($nextLink)
7445
- {
7446
- $this->nextLink = $nextLink;
7447
- }
7448
-
7449
- public function getNextLink()
7450
- {
7451
- return $this->nextLink;
7452
- }
7453
-
7454
- public function setPreviousLink($previousLink)
7455
- {
7456
- $this->previousLink = $previousLink;
7457
- }
7458
-
7459
- public function getPreviousLink()
7460
- {
7461
- return $this->previousLink;
7462
- }
7463
-
7464
- public function setStartIndex($startIndex)
7465
- {
7466
- $this->startIndex = $startIndex;
7467
- }
7468
-
7469
- public function getStartIndex()
7470
- {
7471
- return $this->startIndex;
7472
- }
7473
-
7474
- public function setTotalResults($totalResults)
7475
- {
7476
- $this->totalResults = $totalResults;
7477
- }
7478
-
7479
- public function getTotalResults()
7480
- {
7481
- return $this->totalResults;
7482
- }
7483
-
7484
- public function setUsername($username)
7485
- {
7486
- $this->username = $username;
7487
- }
7488
-
7489
- public function getUsername()
7490
- {
7491
- return $this->username;
7492
- }
7493
- }
7494
-
7495
- class Google_Service_Analytics_GaData extends Google_Collection
7496
- {
7497
-
7498
- protected $collection_key = 'rows';
7499
-
7500
- protected $internal_gapi_mappings = array();
7501
-
7502
- protected $columnHeadersType = 'Google_Service_Analytics_GaDataColumnHeaders';
7503
-
7504
- protected $columnHeadersDataType = 'array';
7505
-
7506
- public $containsSampledData;
7507
-
7508
- protected $dataTableType = 'Google_Service_Analytics_GaDataDataTable';
7509
-
7510
- protected $dataTableDataType = '';
7511
-
7512
- public $id;
7513
-
7514
- public $itemsPerPage;
7515
-
7516
- public $kind;
7517
-
7518
- public $nextLink;
7519
-
7520
- public $previousLink;
7521
-
7522
- protected $profileInfoType = 'Google_Service_Analytics_GaDataProfileInfo';
7523
-
7524
- protected $profileInfoDataType = '';
7525
-
7526
- protected $queryType = 'Google_Service_Analytics_GaDataQuery';
7527
-
7528
- protected $queryDataType = '';
7529
-
7530
- public $rows;
7531
-
7532
- public $sampleSize;
7533
-
7534
- public $sampleSpace;
7535
-
7536
- public $selfLink;
7537
-
7538
- public $totalResults;
7539
-
7540
- public $totalsForAllResults;
7541
-
7542
- public function setColumnHeaders($columnHeaders)
7543
- {
7544
- $this->columnHeaders = $columnHeaders;
7545
- }
7546
-
7547
- public function getColumnHeaders()
7548
- {
7549
- return $this->columnHeaders;
7550
- }
7551
-
7552
- public function setContainsSampledData($containsSampledData)
7553
- {
7554
- $this->containsSampledData = $containsSampledData;
7555
- }
7556
-
7557
- public function getContainsSampledData()
7558
- {
7559
- return $this->containsSampledData;
7560
- }
7561
-
7562
- public function setDataTable(Google_Service_Analytics_GaDataDataTable $dataTable)
7563
- {
7564
- $this->dataTable = $dataTable;
7565
- }
7566
-
7567
- public function getDataTable()
7568
- {
7569
- return $this->dataTable;
7570
- }
7571
-
7572
- public function setId($id)
7573
- {
7574
- $this->id = $id;
7575
- }
7576
-
7577
- public function getId()
7578
- {
7579
- return $this->id;
7580
- }
7581
-
7582
- public function setItemsPerPage($itemsPerPage)
7583
- {
7584
- $this->itemsPerPage = $itemsPerPage;
7585
- }
7586
-
7587
- public function getItemsPerPage()
7588
- {
7589
- return $this->itemsPerPage;
7590
- }
7591
-
7592
- public function setKind($kind)
7593
- {
7594
- $this->kind = $kind;
7595
- }
7596
-
7597
- public function getKind()
7598
- {
7599
- return $this->kind;
7600
- }
7601
-
7602
- public function setNextLink($nextLink)
7603
- {
7604
- $this->nextLink = $nextLink;
7605
- }
7606
-
7607
- public function getNextLink()
7608
- {
7609
- return $this->nextLink;
7610
- }
7611
-
7612
- public function setPreviousLink($previousLink)
7613
- {
7614
- $this->previousLink = $previousLink;
7615
- }
7616
-
7617
- public function getPreviousLink()
7618
- {
7619
- return $this->previousLink;
7620
- }
7621
-
7622
- public function setProfileInfo(Google_Service_Analytics_GaDataProfileInfo $profileInfo)
7623
- {
7624
- $this->profileInfo = $profileInfo;
7625
- }
7626
-
7627
- public function getProfileInfo()
7628
- {
7629
- return $this->profileInfo;
7630
- }
7631
-
7632
- public function setQuery(Google_Service_Analytics_GaDataQuery $query)
7633
- {
7634
- $this->query = $query;
7635
- }
7636
-
7637
- public function getQuery()
7638
- {
7639
- return $this->query;
7640
- }
7641
-
7642
- public function setRows($rows)
7643
- {
7644
- $this->rows = $rows;
7645
- }
7646
-
7647
- public function getRows()
7648
- {
7649
- return $this->rows;
7650
- }
7651
-
7652
- public function setSampleSize($sampleSize)
7653
- {
7654
- $this->sampleSize = $sampleSize;
7655
- }
7656
-
7657
- public function getSampleSize()
7658
- {
7659
- return $this->sampleSize;
7660
- }
7661
-
7662
- public function setSampleSpace($sampleSpace)
7663
- {
7664
- $this->sampleSpace = $sampleSpace;
7665
- }
7666
-
7667
- public function getSampleSpace()
7668
- {
7669
- return $this->sampleSpace;
7670
- }
7671
-
7672
- public function setSelfLink($selfLink)
7673
- {
7674
- $this->selfLink = $selfLink;
7675
- }
7676
-
7677
- public function getSelfLink()
7678
- {
7679
- return $this->selfLink;
7680
- }
7681
-
7682
- public function setTotalResults($totalResults)
7683
- {
7684
- $this->totalResults = $totalResults;
7685
- }
7686
-
7687
- public function getTotalResults()
7688
- {
7689
- return $this->totalResults;
7690
- }
7691
-
7692
- public function setTotalsForAllResults($totalsForAllResults)
7693
- {
7694
- $this->totalsForAllResults = $totalsForAllResults;
7695
- }
7696
-
7697
- public function getTotalsForAllResults()
7698
- {
7699
- return $this->totalsForAllResults;
7700
- }
7701
- }
7702
-
7703
- class Google_Service_Analytics_GaDataColumnHeaders extends Google_Model
7704
- {
7705
-
7706
- protected $internal_gapi_mappings = array();
7707
-
7708
- public $columnType;
7709
-
7710
- public $dataType;
7711
-
7712
- public $name;
7713
-
7714
- public function setColumnType($columnType)
7715
- {
7716
- $this->columnType = $columnType;
7717
- }
7718
-
7719
- public function getColumnType()
7720
- {
7721
- return $this->columnType;
7722
- }
7723
-
7724
- public function setDataType($dataType)
7725
- {
7726
- $this->dataType = $dataType;
7727
- }
7728
-
7729
- public function getDataType()
7730
- {
7731
- return $this->dataType;
7732
- }
7733
-
7734
- public function setName($name)
7735
- {
7736
- $this->name = $name;
7737
- }
7738
-
7739
- public function getName()
7740
- {
7741
- return $this->name;
7742
- }
7743
- }
7744
-
7745
- class Google_Service_Analytics_GaDataDataTable extends Google_Collection
7746
- {
7747
-
7748
- protected $collection_key = 'rows';
7749
-
7750
- protected $internal_gapi_mappings = array();
7751
-
7752
- protected $colsType = 'Google_Service_Analytics_GaDataDataTableCols';
7753
-
7754
- protected $colsDataType = 'array';
7755
-
7756
- protected $rowsType = 'Google_Service_Analytics_GaDataDataTableRows';
7757
-
7758
- protected $rowsDataType = 'array';
7759
-
7760
- public function setCols($cols)
7761
- {
7762
- $this->cols = $cols;
7763
- }
7764
-
7765
- public function getCols()
7766
- {
7767
- return $this->cols;
7768
- }
7769
-
7770
- public function setRows($rows)
7771
- {
7772
- $this->rows = $rows;
7773
- }
7774
-
7775
- public function getRows()
7776
- {
7777
- return $this->rows;
7778
- }
7779
- }
7780
-
7781
- class Google_Service_Analytics_GaDataDataTableCols extends Google_Model
7782
- {
7783
-
7784
- protected $internal_gapi_mappings = array();
7785
-
7786
- public $id;
7787
-
7788
- public $label;
7789
-
7790
- public $type;
7791
-
7792
- public function setId($id)
7793
- {
7794
- $this->id = $id;
7795
- }
7796
-
7797
- public function getId()
7798
- {
7799
- return $this->id;
7800
- }
7801
-
7802
- public function setLabel($label)
7803
- {
7804
- $this->label = $label;
7805
- }
7806
-
7807
- public function getLabel()
7808
- {
7809
- return $this->label;
7810
- }
7811
-
7812
- public function setType($type)
7813
- {
7814
- $this->type = $type;
7815
- }
7816
-
7817
- public function getType()
7818
- {
7819
- return $this->type;
7820
- }
7821
- }
7822
-
7823
- class Google_Service_Analytics_GaDataDataTableRows extends Google_Collection
7824
- {
7825
-
7826
- protected $collection_key = 'c';
7827
-
7828
- protected $internal_gapi_mappings = array();
7829
-
7830
- protected $cType = 'Google_Service_Analytics_GaDataDataTableRowsC';
7831
-
7832
- protected $cDataType = 'array';
7833
-
7834
- public function setC($c)
7835
- {
7836
- $this->c = $c;
7837
- }
7838
-
7839
- public function getC()
7840
- {
7841
- return $this->c;
7842
- }
7843
- }
7844
-
7845
- class Google_Service_Analytics_GaDataDataTableRowsC extends Google_Model
7846
- {
7847
-
7848
- protected $internal_gapi_mappings = array();
7849
-
7850
- public $v;
7851
-
7852
- public function setV($v)
7853
- {
7854
- $this->v = $v;
7855
- }
7856
-
7857
- public function getV()
7858
- {
7859
- return $this->v;
7860
- }
7861
- }
7862
-
7863
- class Google_Service_Analytics_GaDataProfileInfo extends Google_Model
7864
- {
7865
-
7866
- protected $internal_gapi_mappings = array();
7867
-
7868
- public $accountId;
7869
-
7870
- public $internalWebPropertyId;
7871
-
7872
- public $profileId;
7873
-
7874
- public $profileName;
7875
-
7876
- public $tableId;
7877
-
7878
- public $webPropertyId;
7879
-
7880
- public function setAccountId($accountId)
7881
- {
7882
- $this->accountId = $accountId;
7883
- }
7884
-
7885
- public function getAccountId()
7886
- {
7887
- return $this->accountId;
7888
- }
7889
-
7890
- public function setInternalWebPropertyId($internalWebPropertyId)
7891
- {
7892
- $this->internalWebPropertyId = $internalWebPropertyId;
7893
- }
7894
-
7895
- public function getInternalWebPropertyId()
7896
- {
7897
- return $this->internalWebPropertyId;
7898
- }
7899
-
7900
- public function setProfileId($profileId)
7901
- {
7902
- $this->profileId = $profileId;
7903
- }
7904
-
7905
- public function getProfileId()
7906
- {
7907
- return $this->profileId;
7908
- }
7909
-
7910
- public function setProfileName($profileName)
7911
- {
7912
- $this->profileName = $profileName;
7913
- }
7914
-
7915
- public function getProfileName()
7916
- {
7917
- return $this->profileName;
7918
- }
7919
-
7920
- public function setTableId($tableId)
7921
- {
7922
- $this->tableId = $tableId;
7923
- }
7924
-
7925
- public function getTableId()
7926
- {
7927
- return $this->tableId;
7928
- }
7929
-
7930
- public function setWebPropertyId($webPropertyId)
7931
- {
7932
- $this->webPropertyId = $webPropertyId;
7933
- }
7934
-
7935
- public function getWebPropertyId()
7936
- {
7937
- return $this->webPropertyId;
7938
- }
7939
- }
7940
-
7941
- class Google_Service_Analytics_GaDataQuery extends Google_Collection
7942
- {
7943
-
7944
- protected $collection_key = 'sort';
7945
-
7946
- protected $internal_gapi_mappings = array(
7947
- "endDate" => "end-date",
7948
- "maxResults" => "max-results",
7949
- "startDate" => "start-date",
7950
- "startIndex" => "start-index"
7951
- );
7952
-
7953
- public $dimensions;
7954
-
7955
- public $endDate;
7956
-
7957
- public $filters;
7958
-
7959
- public $ids;
7960
-
7961
- public $maxResults;
7962
-
7963
- public $metrics;
7964
-
7965
- public $samplingLevel;
7966
-
7967
- public $segment;
7968
-
7969
- public $sort;
7970
-
7971
- public $startDate;
7972
-
7973
- public $startIndex;
7974
-
7975
- public function setDimensions($dimensions)
7976
- {
7977
- $this->dimensions = $dimensions;
7978
- }
7979
-
7980
- public function getDimensions()
7981
- {
7982
- return $this->dimensions;
7983
- }
7984
-
7985
- public function setEndDate($endDate)
7986
- {
7987
- $this->endDate = $endDate;
7988
- }
7989
-
7990
- public function getEndDate()
7991
- {
7992
- return $this->endDate;
7993
- }
7994
-
7995
- public function setFilters($filters)
7996
- {
7997
- $this->filters = $filters;
7998
- }
7999
-
8000
- public function getFilters()
8001
- {
8002
- return $this->filters;
8003
- }
8004
-
8005
- public function setIds($ids)
8006
- {
8007
- $this->ids = $ids;
8008
- }
8009
-
8010
- public function getIds()
8011
- {
8012
- return $this->ids;
8013
- }
8014
-
8015
- public function setMaxResults($maxResults)
8016
- {
8017
- $this->maxResults = $maxResults;
8018
- }
8019
-
8020
- public function getMaxResults()
8021
- {
8022
- return $this->maxResults;
8023
- }
8024
-
8025
- public function setMetrics($metrics)
8026
- {
8027
- $this->metrics = $metrics;
8028
- }
8029
-
8030
- public function getMetrics()
8031
- {
8032
- return $this->metrics;
8033
- }
8034
-
8035
- public function setSamplingLevel($samplingLevel)
8036
- {
8037
- $this->samplingLevel = $samplingLevel;
8038
- }
8039
-
8040
- public function getSamplingLevel()
8041
- {
8042
- return $this->samplingLevel;
8043
- }
8044
-
8045
- public function setSegment($segment)
8046
- {
8047
- $this->segment = $segment;
8048
- }
8049
-
8050
- public function getSegment()
8051
- {
8052
- return $this->segment;
8053
- }
8054
-
8055
- public function setSort($sort)
8056
- {
8057
- $this->sort = $sort;
8058
- }
8059
-
8060
- public function getSort()
8061
- {
8062
- return $this->sort;
8063
- }
8064
-
8065
- public function setStartDate($startDate)
8066
- {
8067
- $this->startDate = $startDate;
8068
- }
8069
-
8070
- public function getStartDate()
8071
- {
8072
- return $this->startDate;
8073
- }
8074
-
8075
- public function setStartIndex($startIndex)
8076
- {
8077
- $this->startIndex = $startIndex;
8078
- }
8079
-
8080
- public function getStartIndex()
8081
- {
8082
- return $this->startIndex;
8083
- }
8084
- }
8085
-
8086
- class Google_Service_Analytics_GaDataTotalsForAllResults extends Google_Model
8087
- {
8088
- }
8089
-
8090
- class Google_Service_Analytics_Goal extends Google_Model
8091
- {
8092
-
8093
- protected $internal_gapi_mappings = array();
8094
-
8095
- public $accountId;
8096
-
8097
- public $active;
8098
-
8099
- public $created;
8100
-
8101
- protected $eventDetailsType = 'Google_Service_Analytics_GoalEventDetails';
8102
-
8103
- protected $eventDetailsDataType = '';
8104
-
8105
- public $id;
8106
-
8107
- public $internalWebPropertyId;
8108
-
8109
- public $kind;
8110
-
8111
- public $name;
8112
-
8113
- protected $parentLinkType = 'Google_Service_Analytics_GoalParentLink';
8114
-
8115
- protected $parentLinkDataType = '';
8116
-
8117
- public $profileId;
8118
-
8119
- public $selfLink;
8120
-
8121
- public $type;
8122
-
8123
- public $updated;
8124
-
8125
- protected $urlDestinationDetailsType = 'Google_Service_Analytics_GoalUrlDestinationDetails';
8126
-
8127
- protected $urlDestinationDetailsDataType = '';
8128
-
8129
- public $value;
8130
-
8131
- protected $visitNumPagesDetailsType = 'Google_Service_Analytics_GoalVisitNumPagesDetails';
8132
-
8133
- protected $visitNumPagesDetailsDataType = '';
8134
-
8135
- protected $visitTimeOnSiteDetailsType = 'Google_Service_Analytics_GoalVisitTimeOnSiteDetails';
8136
-
8137
- protected $visitTimeOnSiteDetailsDataType = '';
8138
-
8139
- public $webPropertyId;
8140
-
8141
- public function setAccountId($accountId)
8142
- {
8143
- $this->accountId = $accountId;
8144
- }
8145
-
8146
- public function getAccountId()
8147
- {
8148
- return $this->accountId;
8149
- }
8150
-
8151
- public function setActive($active)
8152
- {
8153
- $this->active = $active;
8154
- }
8155
-
8156
- public function getActive()
8157
- {
8158
- return $this->active;
8159
- }
8160
-
8161
- public function setCreated($created)
8162
- {
8163
- $this->created = $created;
8164
- }
8165
-
8166
- public function getCreated()
8167
- {
8168
- return $this->created;
8169
- }
8170
-
8171
- public function setEventDetails(Google_Service_Analytics_GoalEventDetails $eventDetails)
8172
- {
8173
- $this->eventDetails = $eventDetails;
8174
- }
8175
-
8176
- public function getEventDetails()
8177
- {
8178
- return $this->eventDetails;
8179
- }
8180
-
8181
- public function setId($id)
8182
- {
8183
- $this->id = $id;
8184
- }
8185
-
8186
- public function getId()
8187
- {
8188
- return $this->id;
8189
- }
8190
-
8191
- public function setInternalWebPropertyId($internalWebPropertyId)
8192
- {
8193
- $this->internalWebPropertyId = $internalWebPropertyId;
8194
- }
8195
-
8196
- public function getInternalWebPropertyId()
8197
- {
8198
- return $this->internalWebPropertyId;
8199
- }
8200
-
8201
- public function setKind($kind)
8202
- {
8203
- $this->kind = $kind;
8204
- }
8205
-
8206
- public function getKind()
8207
- {
8208
- return $this->kind;
8209
- }
8210
-
8211
- public function setName($name)
8212
- {
8213
- $this->name = $name;
8214
- }
8215
-
8216
- public function getName()
8217
- {
8218
- return $this->name;
8219
- }
8220
-
8221
- public function setParentLink(Google_Service_Analytics_GoalParentLink $parentLink)
8222
- {
8223
- $this->parentLink = $parentLink;
8224
- }
8225
-
8226
- public function getParentLink()
8227
- {
8228
- return $this->parentLink;
8229
- }
8230
-
8231
- public function setProfileId($profileId)
8232
- {
8233
- $this->profileId = $profileId;
8234
- }
8235
-
8236
- public function getProfileId()
8237
- {
8238
- return $this->profileId;
8239
- }
8240
-
8241
- public function setSelfLink($selfLink)
8242
- {
8243
- $this->selfLink = $selfLink;
8244
- }
8245
-
8246
- public function getSelfLink()
8247
- {
8248
- return $this->selfLink;
8249
- }
8250
-
8251
- public function setType($type)
8252
- {
8253
- $this->type = $type;
8254
- }
8255
-
8256
- public function getType()
8257
- {
8258
- return $this->type;
8259
- }
8260
-
8261
- public function setUpdated($updated)
8262
- {
8263
- $this->updated = $updated;
8264
- }
8265
-
8266
- public function getUpdated()
8267
- {
8268
- return $this->updated;
8269
- }
8270
-
8271
- public function setUrlDestinationDetails(Google_Service_Analytics_GoalUrlDestinationDetails $urlDestinationDetails)
8272
- {
8273
- $this->urlDestinationDetails = $urlDestinationDetails;
8274
- }
8275
-
8276
- public function getUrlDestinationDetails()
8277
- {
8278
- return $this->urlDestinationDetails;
8279
- }
8280
-
8281
- public function setValue($value)
8282
- {
8283
- $this->value = $value;
8284
- }
8285
-
8286
- public function getValue()
8287
- {
8288
- return $this->value;
8289
- }
8290
-
8291
- public function setVisitNumPagesDetails(Google_Service_Analytics_GoalVisitNumPagesDetails $visitNumPagesDetails)
8292
- {
8293
- $this->visitNumPagesDetails = $visitNumPagesDetails;
8294
- }
8295
-
8296
- public function getVisitNumPagesDetails()
8297
- {
8298
- return $this->visitNumPagesDetails;
8299
- }
8300
-
8301
- public function setVisitTimeOnSiteDetails(Google_Service_Analytics_GoalVisitTimeOnSiteDetails $visitTimeOnSiteDetails)
8302
- {
8303
- $this->visitTimeOnSiteDetails = $visitTimeOnSiteDetails;
8304
- }
8305
-
8306
- public function getVisitTimeOnSiteDetails()
8307
- {
8308
- return $this->visitTimeOnSiteDetails;
8309
- }
8310
-
8311
- public function setWebPropertyId($webPropertyId)
8312
- {
8313
- $this->webPropertyId = $webPropertyId;
8314
- }
8315
-
8316
- public function getWebPropertyId()
8317
- {
8318
- return $this->webPropertyId;
8319
- }
8320
- }
8321
-
8322
- class Google_Service_Analytics_GoalEventDetails extends Google_Collection
8323
- {
8324
-
8325
- protected $collection_key = 'eventConditions';
8326
-
8327
- protected $internal_gapi_mappings = array();
8328
-
8329
- protected $eventConditionsType = 'Google_Service_Analytics_GoalEventDetailsEventConditions';
8330
-
8331
- protected $eventConditionsDataType = 'array';
8332
-
8333
- public $useEventValue;
8334
-
8335
- public function setEventConditions($eventConditions)
8336
- {
8337
- $this->eventConditions = $eventConditions;
8338
- }
8339
-
8340
- public function getEventConditions()
8341
- {
8342
- return $this->eventConditions;
8343
- }
8344
-
8345
- public function setUseEventValue($useEventValue)
8346
- {
8347
- $this->useEventValue = $useEventValue;
8348
- }
8349
-
8350
- public function getUseEventValue()
8351
- {
8352
- return $this->useEventValue;
8353
- }
8354
- }
8355
-
8356
- class Google_Service_Analytics_GoalEventDetailsEventConditions extends Google_Model
8357
- {
8358
-
8359
- protected $internal_gapi_mappings = array();
8360
-
8361
- public $comparisonType;
8362
-
8363
- public $comparisonValue;
8364
-
8365
- public $expression;
8366
-
8367
- public $matchType;
8368
-
8369
- public $type;
8370
-
8371
- public function setComparisonType($comparisonType)
8372
- {
8373
- $this->comparisonType = $comparisonType;
8374
- }
8375
-
8376
- public function getComparisonType()
8377
- {
8378
- return $this->comparisonType;
8379
- }
8380
-
8381
- public function setComparisonValue($comparisonValue)
8382
- {
8383
- $this->comparisonValue = $comparisonValue;
8384
- }
8385
-
8386
- public function getComparisonValue()
8387
- {
8388
- return $this->comparisonValue;
8389
- }
8390
-
8391
- public function setExpression($expression)
8392
- {
8393
- $this->expression = $expression;
8394
- }
8395
-
8396
- public function getExpression()
8397
- {
8398
- return $this->expression;
8399
- }
8400
-
8401
- public function setMatchType($matchType)
8402
- {
8403
- $this->matchType = $matchType;
8404
- }
8405
-
8406
- public function getMatchType()
8407
- {
8408
- return $this->matchType;
8409
- }
8410
-
8411
- public function setType($type)
8412
- {
8413
- $this->type = $type;
8414
- }
8415
-
8416
- public function getType()
8417
- {
8418
- return $this->type;
8419
- }
8420
- }
8421
-
8422
- class Google_Service_Analytics_GoalParentLink extends Google_Model
8423
- {
8424
-
8425
- protected $internal_gapi_mappings = array();
8426
-
8427
- public $href;
8428
-
8429
- public $type;
8430
-
8431
- public function setHref($href)
8432
- {
8433
- $this->href = $href;
8434
- }
8435
-
8436
- public function getHref()
8437
- {
8438
- return $this->href;
8439
- }
8440
-
8441
- public function setType($type)
8442
- {
8443
- $this->type = $type;
8444
- }
8445
-
8446
- public function getType()
8447
- {
8448
- return $this->type;
8449
- }
8450
- }
8451
-
8452
- class Google_Service_Analytics_GoalUrlDestinationDetails extends Google_Collection
8453
- {
8454
-
8455
- protected $collection_key = 'steps';
8456
-
8457
- protected $internal_gapi_mappings = array();
8458
-
8459
- public $caseSensitive;
8460
-
8461
- public $firstStepRequired;
8462
-
8463
- public $matchType;
8464
-
8465
- protected $stepsType = 'Google_Service_Analytics_GoalUrlDestinationDetailsSteps';
8466
-
8467
- protected $stepsDataType = 'array';
8468
-
8469
- public $url;
8470
-
8471
- public function setCaseSensitive($caseSensitive)
8472
- {
8473
- $this->caseSensitive = $caseSensitive;
8474
- }
8475
-
8476
- public function getCaseSensitive()
8477
- {
8478
- return $this->caseSensitive;
8479
- }
8480
-
8481
- public function setFirstStepRequired($firstStepRequired)
8482
- {
8483
- $this->firstStepRequired = $firstStepRequired;
8484
- }
8485
-
8486
- public function getFirstStepRequired()
8487
- {
8488
- return $this->firstStepRequired;
8489
- }
8490
-
8491
- public function setMatchType($matchType)
8492
- {
8493
- $this->matchType = $matchType;
8494
- }
8495
-
8496
- public function getMatchType()
8497
- {
8498
- return $this->matchType;
8499
- }
8500
-
8501
- public function setSteps($steps)
8502
- {
8503
- $this->steps = $steps;
8504
- }
8505
-
8506
- public function getSteps()
8507
- {
8508
- return $this->steps;
8509
- }
8510
-
8511
- public function setUrl($url)
8512
- {
8513
- $this->url = $url;
8514
- }
8515
-
8516
- public function getUrl()
8517
- {
8518
- return $this->url;
8519
- }
8520
- }
8521
-
8522
- class Google_Service_Analytics_GoalUrlDestinationDetailsSteps extends Google_Model
8523
- {
8524
-
8525
- protected $internal_gapi_mappings = array();
8526
-
8527
- public $name;
8528
-
8529
- public $number;
8530
-
8531
- public $url;
8532
-
8533
- public function setName($name)
8534
- {
8535
- $this->name = $name;
8536
- }
8537
-
8538
- public function getName()
8539
- {
8540
- return $this->name;
8541
- }
8542
-
8543
- public function setNumber($number)
8544
- {
8545
- $this->number = $number;
8546
- }
8547
-
8548
- public function getNumber()
8549
- {
8550
- return $this->number;
8551
- }
8552
-
8553
- public function setUrl($url)
8554
- {
8555
- $this->url = $url;
8556
- }
8557
-
8558
- public function getUrl()
8559
- {
8560
- return $this->url;
8561
- }
8562
- }
8563
-
8564
- class Google_Service_Analytics_GoalVisitNumPagesDetails extends Google_Model
8565
- {
8566
-
8567
- protected $internal_gapi_mappings = array();
8568
-
8569
- public $comparisonType;
8570
-
8571
- public $comparisonValue;
8572
-
8573
- public function setComparisonType($comparisonType)
8574
- {
8575
- $this->comparisonType = $comparisonType;
8576
- }
8577
-
8578
- public function getComparisonType()
8579
- {
8580
- return $this->comparisonType;
8581
- }
8582
-
8583
- public function setComparisonValue($comparisonValue)
8584
- {
8585
- $this->comparisonValue = $comparisonValue;
8586
- }
8587
-
8588
- public function getComparisonValue()
8589
- {
8590
- return $this->comparisonValue;
8591
- }
8592
- }
8593
-
8594
- class Google_Service_Analytics_GoalVisitTimeOnSiteDetails extends Google_Model
8595
- {
8596
-
8597
- protected $internal_gapi_mappings = array();
8598
-
8599
- public $comparisonType;
8600
-
8601
- public $comparisonValue;
8602
-
8603
- public function setComparisonType($comparisonType)
8604
- {
8605
- $this->comparisonType = $comparisonType;
8606
- }
8607
-
8608
- public function getComparisonType()
8609
- {
8610
- return $this->comparisonType;
8611
- }
8612
-
8613
- public function setComparisonValue($comparisonValue)
8614
- {
8615
- $this->comparisonValue = $comparisonValue;
8616
- }
8617
-
8618
- public function getComparisonValue()
8619
- {
8620
- return $this->comparisonValue;
8621
- }
8622
- }
8623
-
8624
- class Google_Service_Analytics_Goals extends Google_Collection
8625
- {
8626
-
8627
- protected $collection_key = 'items';
8628
-
8629
- protected $internal_gapi_mappings = array();
8630
-
8631
- protected $itemsType = 'Google_Service_Analytics_Goal';
8632
-
8633
- protected $itemsDataType = 'array';
8634
-
8635
- public $itemsPerPage;
8636
-
8637
- public $kind;
8638
-
8639
- public $nextLink;
8640
-
8641
- public $previousLink;
8642
-
8643
- public $startIndex;
8644
-
8645
- public $totalResults;
8646
-
8647
- public $username;
8648
-
8649
- public function setItems($items)
8650
- {
8651
- $this->items = $items;
8652
- }
8653
-
8654
- public function getItems()
8655
- {
8656
- return $this->items;
8657
- }
8658
-
8659
- public function setItemsPerPage($itemsPerPage)
8660
- {
8661
- $this->itemsPerPage = $itemsPerPage;
8662
- }
8663
-
8664
- public function getItemsPerPage()
8665
- {
8666
- return $this->itemsPerPage;
8667
- }
8668
-
8669
- public function setKind($kind)
8670
- {
8671
- $this->kind = $kind;
8672
- }
8673
-
8674
- public function getKind()
8675
- {
8676
- return $this->kind;
8677
- }
8678
-
8679
- public function setNextLink($nextLink)
8680
- {
8681
- $this->nextLink = $nextLink;
8682
- }
8683
-
8684
- public function getNextLink()
8685
- {
8686
- return $this->nextLink;
8687
- }
8688
-
8689
- public function setPreviousLink($previousLink)
8690
- {
8691
- $this->previousLink = $previousLink;
8692
- }
8693
-
8694
- public function getPreviousLink()
8695
- {
8696
- return $this->previousLink;
8697
- }
8698
-
8699
- public function setStartIndex($startIndex)
8700
- {
8701
- $this->startIndex = $startIndex;
8702
- }
8703
-
8704
- public function getStartIndex()
8705
- {
8706
- return $this->startIndex;
8707
- }
8708
-
8709
- public function setTotalResults($totalResults)
8710
- {
8711
- $this->totalResults = $totalResults;
8712
- }
8713
-
8714
- public function getTotalResults()
8715
- {
8716
- return $this->totalResults;
8717
- }
8718
-
8719
- public function setUsername($username)
8720
- {
8721
- $this->username = $username;
8722
- }
8723
-
8724
- public function getUsername()
8725
- {
8726
- return $this->username;
8727
- }
8728
- }
8729
-
8730
- class Google_Service_Analytics_McfData extends Google_Collection
8731
- {
8732
-
8733
- protected $collection_key = 'rows';
8734
-
8735
- protected $internal_gapi_mappings = array();
8736
-
8737
- protected $columnHeadersType = 'Google_Service_Analytics_McfDataColumnHeaders';
8738
-
8739
- protected $columnHeadersDataType = 'array';
8740
-
8741
- public $containsSampledData;
8742
-
8743
- public $id;
8744
-
8745
- public $itemsPerPage;
8746
-
8747
- public $kind;
8748
-
8749
- public $nextLink;
8750
-
8751
- public $previousLink;
8752
-
8753
- protected $profileInfoType = 'Google_Service_Analytics_McfDataProfileInfo';
8754
-
8755
- protected $profileInfoDataType = '';
8756
-
8757
- protected $queryType = 'Google_Service_Analytics_McfDataQuery';
8758
-
8759
- protected $queryDataType = '';
8760
-
8761
- protected $rowsType = 'Google_Service_Analytics_McfDataRows';
8762
-
8763
- protected $rowsDataType = 'array';
8764
-
8765
- public $sampleSize;
8766
-
8767
- public $sampleSpace;
8768
-
8769
- public $selfLink;
8770
-
8771
- public $totalResults;
8772
-
8773
- public $totalsForAllResults;
8774
-
8775
- public function setColumnHeaders($columnHeaders)
8776
- {
8777
- $this->columnHeaders = $columnHeaders;
8778
- }
8779
-
8780
- public function getColumnHeaders()
8781
- {
8782
- return $this->columnHeaders;
8783
- }
8784
-
8785
- public function setContainsSampledData($containsSampledData)
8786
- {
8787
- $this->containsSampledData = $containsSampledData;
8788
- }
8789
-
8790
- public function getContainsSampledData()
8791
- {
8792
- return $this->containsSampledData;
8793
- }
8794
-
8795
- public function setId($id)
8796
- {
8797
- $this->id = $id;
8798
- }
8799
-
8800
- public function getId()
8801
- {
8802
- return $this->id;
8803
- }
8804
-
8805
- public function setItemsPerPage($itemsPerPage)
8806
- {
8807
- $this->itemsPerPage = $itemsPerPage;
8808
- }
8809
-
8810
- public function getItemsPerPage()
8811
- {
8812
- return $this->itemsPerPage;
8813
- }
8814
-
8815
- public function setKind($kind)
8816
- {
8817
- $this->kind = $kind;
8818
- }
8819
-
8820
- public function getKind()
8821
- {
8822
- return $this->kind;
8823
- }
8824
-
8825
- public function setNextLink($nextLink)
8826
- {
8827
- $this->nextLink = $nextLink;
8828
- }
8829
-
8830
- public function getNextLink()
8831
- {
8832
- return $this->nextLink;
8833
- }
8834
-
8835
- public function setPreviousLink($previousLink)
8836
- {
8837
- $this->previousLink = $previousLink;
8838
- }
8839
-
8840
- public function getPreviousLink()
8841
- {
8842
- return $this->previousLink;
8843
- }
8844
-
8845
- public function setProfileInfo(Google_Service_Analytics_McfDataProfileInfo $profileInfo)
8846
- {
8847
- $this->profileInfo = $profileInfo;
8848
- }
8849
-
8850
- public function getProfileInfo()
8851
- {
8852
- return $this->profileInfo;
8853
- }
8854
-
8855
- public function setQuery(Google_Service_Analytics_McfDataQuery $query)
8856
- {
8857
- $this->query = $query;
8858
- }
8859
-
8860
- public function getQuery()
8861
- {
8862
- return $this->query;
8863
- }
8864
-
8865
- public function setRows($rows)
8866
- {
8867
- $this->rows = $rows;
8868
- }
8869
-
8870
- public function getRows()
8871
- {
8872
- return $this->rows;
8873
- }
8874
-
8875
- public function setSampleSize($sampleSize)
8876
- {
8877
- $this->sampleSize = $sampleSize;
8878
- }
8879
-
8880
- public function getSampleSize()
8881
- {
8882
- return $this->sampleSize;
8883
- }
8884
-
8885
- public function setSampleSpace($sampleSpace)
8886
- {
8887
- $this->sampleSpace = $sampleSpace;
8888
- }
8889
-
8890
- public function getSampleSpace()
8891
- {
8892
- return $this->sampleSpace;
8893
- }
8894
-
8895
- public function setSelfLink($selfLink)
8896
- {
8897
- $this->selfLink = $selfLink;
8898
- }
8899
-
8900
- public function getSelfLink()
8901
- {
8902
- return $this->selfLink;
8903
- }
8904
-
8905
- public function setTotalResults($totalResults)
8906
- {
8907
- $this->totalResults = $totalResults;
8908
- }
8909
-
8910
- public function getTotalResults()
8911
- {
8912
- return $this->totalResults;
8913
- }
8914
-
8915
- public function setTotalsForAllResults($totalsForAllResults)
8916
- {
8917
- $this->totalsForAllResults = $totalsForAllResults;
8918
- }
8919
-
8920
- public function getTotalsForAllResults()
8921
- {
8922
- return $this->totalsForAllResults;
8923
- }
8924
- }
8925
-
8926
- class Google_Service_Analytics_McfDataColumnHeaders extends Google_Model
8927
- {
8928
-
8929
- protected $internal_gapi_mappings = array();
8930
-
8931
- public $columnType;
8932
-
8933
- public $dataType;
8934
-
8935
- public $name;
8936
-
8937
- public function setColumnType($columnType)
8938
- {
8939
- $this->columnType = $columnType;
8940
- }
8941
-
8942
- public function getColumnType()
8943
- {
8944
- return $this->columnType;
8945
- }
8946
-
8947
- public function setDataType($dataType)
8948
- {
8949
- $this->dataType = $dataType;
8950
- }
8951
-
8952
- public function getDataType()
8953
- {
8954
- return $this->dataType;
8955
- }
8956
-
8957
- public function setName($name)
8958
- {
8959
- $this->name = $name;
8960
- }
8961
-
8962
- public function getName()
8963
- {
8964
- return $this->name;
8965
- }
8966
- }
8967
-
8968
- class Google_Service_Analytics_McfDataProfileInfo extends Google_Model
8969
- {
8970
-
8971
- protected $internal_gapi_mappings = array();
8972
-
8973
- public $accountId;
8974
-
8975
- public $internalWebPropertyId;
8976
-
8977
- public $profileId;
8978
-
8979
- public $profileName;
8980
-
8981
- public $tableId;
8982
-
8983
- public $webPropertyId;
8984
-
8985
- public function setAccountId($accountId)
8986
- {
8987
- $this->accountId = $accountId;
8988
- }
8989
-
8990
- public function getAccountId()
8991
- {
8992
- return $this->accountId;
8993
- }
8994
-
8995
- public function setInternalWebPropertyId($internalWebPropertyId)
8996
- {
8997
- $this->internalWebPropertyId = $internalWebPropertyId;
8998
- }
8999
-
9000
- public function getInternalWebPropertyId()
9001
- {
9002
- return $this->internalWebPropertyId;
9003
- }
9004
-
9005
- public function setProfileId($profileId)
9006
- {
9007
- $this->profileId = $profileId;
9008
- }
9009
-
9010
- public function getProfileId()
9011
- {
9012
- return $this->profileId;
9013
- }
9014
-
9015
- public function setProfileName($profileName)
9016
- {
9017
- $this->profileName = $profileName;
9018
- }
9019
-
9020
- public function getProfileName()
9021
- {
9022
- return $this->profileName;
9023
- }
9024
-
9025
- public function setTableId($tableId)
9026
- {
9027
- $this->tableId = $tableId;
9028
- }
9029
-
9030
- public function getTableId()
9031
- {
9032
- return $this->tableId;
9033
- }
9034
-
9035
- public function setWebPropertyId($webPropertyId)
9036
- {
9037
- $this->webPropertyId = $webPropertyId;
9038
- }
9039
-
9040
- public function getWebPropertyId()
9041
- {
9042
- return $this->webPropertyId;
9043
- }
9044
- }
9045
-
9046
- class Google_Service_Analytics_McfDataQuery extends Google_Collection
9047
- {
9048
-
9049
- protected $collection_key = 'sort';
9050
-
9051
- protected $internal_gapi_mappings = array(
9052
- "endDate" => "end-date",
9053
- "maxResults" => "max-results",
9054
- "startDate" => "start-date",
9055
- "startIndex" => "start-index"
9056
- );
9057
-
9058
- public $dimensions;
9059
-
9060
- public $endDate;
9061
-
9062
- public $filters;
9063
-
9064
- public $ids;
9065
-
9066
- public $maxResults;
9067
-
9068
- public $metrics;
9069
-
9070
- public $samplingLevel;
9071
-
9072
- public $segment;
9073
-
9074
- public $sort;
9075
-
9076
- public $startDate;
9077
-
9078
- public $startIndex;
9079
-
9080
- public function setDimensions($dimensions)
9081
- {
9082
- $this->dimensions = $dimensions;
9083
- }
9084
-
9085
- public function getDimensions()
9086
- {
9087
- return $this->dimensions;
9088
- }
9089
-
9090
- public function setEndDate($endDate)
9091
- {
9092
- $this->endDate = $endDate;
9093
- }
9094
-
9095
- public function getEndDate()
9096
- {
9097
- return $this->endDate;
9098
- }
9099
-
9100
- public function setFilters($filters)
9101
- {
9102
- $this->filters = $filters;
9103
- }
9104
-
9105
- public function getFilters()
9106
- {
9107
- return $this->filters;
9108
- }
9109
-
9110
- public function setIds($ids)
9111
- {
9112
- $this->ids = $ids;
9113
- }
9114
-
9115
- public function getIds()
9116
- {
9117
- return $this->ids;
9118
- }
9119
-
9120
- public function setMaxResults($maxResults)
9121
- {
9122
- $this->maxResults = $maxResults;
9123
- }
9124
-
9125
- public function getMaxResults()
9126
- {
9127
- return $this->maxResults;
9128
- }
9129
-
9130
- public function setMetrics($metrics)
9131
- {
9132
- $this->metrics = $metrics;
9133
- }
9134
-
9135
- public function getMetrics()
9136
- {
9137
- return $this->metrics;
9138
- }
9139
-
9140
- public function setSamplingLevel($samplingLevel)
9141
- {
9142
- $this->samplingLevel = $samplingLevel;
9143
- }
9144
-
9145
- public function getSamplingLevel()
9146
- {
9147
- return $this->samplingLevel;
9148
- }
9149
-
9150
- public function setSegment($segment)
9151
- {
9152
- $this->segment = $segment;
9153
- }
9154
-
9155
- public function getSegment()
9156
- {
9157
- return $this->segment;
9158
- }
9159
-
9160
- public function setSort($sort)
9161
- {
9162
- $this->sort = $sort;
9163
- }
9164
-
9165
- public function getSort()
9166
- {
9167
- return $this->sort;
9168
- }
9169
-
9170
- public function setStartDate($startDate)
9171
- {
9172
- $this->startDate = $startDate;
9173
- }
9174
-
9175
- public function getStartDate()
9176
- {
9177
- return $this->startDate;
9178
- }
9179
-
9180
- public function setStartIndex($startIndex)
9181
- {
9182
- $this->startIndex = $startIndex;
9183
- }
9184
-
9185
- public function getStartIndex()
9186
- {
9187
- return $this->startIndex;
9188
- }
9189
- }
9190
-
9191
- class Google_Service_Analytics_McfDataRows extends Google_Collection
9192
- {
9193
-
9194
- protected $collection_key = 'conversionPathValue';
9195
-
9196
- protected $internal_gapi_mappings = array();
9197
-
9198
- protected $conversionPathValueType = 'Google_Service_Analytics_McfDataRowsConversionPathValue';
9199
-
9200
- protected $conversionPathValueDataType = 'array';
9201
-
9202
- public $primitiveValue;
9203
-
9204
- public function setConversionPathValue($conversionPathValue)
9205
- {
9206
- $this->conversionPathValue = $conversionPathValue;
9207
- }
9208
-
9209
- public function getConversionPathValue()
9210
- {
9211
- return $this->conversionPathValue;
9212
- }
9213
-
9214
- public function setPrimitiveValue($primitiveValue)
9215
- {
9216
- $this->primitiveValue = $primitiveValue;
9217
- }
9218
-
9219
- public function getPrimitiveValue()
9220
- {
9221
- return $this->primitiveValue;
9222
- }
9223
- }
9224
-
9225
- class Google_Service_Analytics_McfDataRowsConversionPathValue extends Google_Model
9226
- {
9227
-
9228
- protected $internal_gapi_mappings = array();
9229
-
9230
- public $interactionType;
9231
-
9232
- public $nodeValue;
9233
-
9234
- public function setInteractionType($interactionType)
9235
- {
9236
- $this->interactionType = $interactionType;
9237
- }
9238
-
9239
- public function getInteractionType()
9240
- {
9241
- return $this->interactionType;
9242
- }
9243
-
9244
- public function setNodeValue($nodeValue)
9245
- {
9246
- $this->nodeValue = $nodeValue;
9247
- }
9248
-
9249
- public function getNodeValue()
9250
- {
9251
- return $this->nodeValue;
9252
- }
9253
- }
9254
-
9255
- class Google_Service_Analytics_McfDataTotalsForAllResults extends Google_Model
9256
- {
9257
- }
9258
-
9259
- class Google_Service_Analytics_Profile extends Google_Model
9260
- {
9261
-
9262
- protected $internal_gapi_mappings = array();
9263
-
9264
- public $accountId;
9265
-
9266
- protected $childLinkType = 'Google_Service_Analytics_ProfileChildLink';
9267
-
9268
- protected $childLinkDataType = '';
9269
-
9270
- public $created;
9271
-
9272
- public $currency;
9273
-
9274
- public $defaultPage;
9275
-
9276
- public $eCommerceTracking;
9277
-
9278
- public $enhancedECommerceTracking;
9279
-
9280
- public $excludeQueryParameters;
9281
-
9282
- public $id;
9283
-
9284
- public $internalWebPropertyId;
9285
-
9286
- public $kind;
9287
-
9288
- public $name;
9289
-
9290
- protected $parentLinkType = 'Google_Service_Analytics_ProfileParentLink';
9291
-
9292
- protected $parentLinkDataType = '';
9293
-
9294
- protected $permissionsType = 'Google_Service_Analytics_ProfilePermissions';
9295
-
9296
- protected $permissionsDataType = '';
9297
-
9298
- public $selfLink;
9299
-
9300
- public $siteSearchCategoryParameters;
9301
-
9302
- public $siteSearchQueryParameters;
9303
-
9304
- public $stripSiteSearchCategoryParameters;
9305
-
9306
- public $stripSiteSearchQueryParameters;
9307
-
9308
- public $timezone;
9309
-
9310
- public $type;
9311
-
9312
- public $updated;
9313
-
9314
- public $webPropertyId;
9315
-
9316
- public $websiteUrl;
9317
-
9318
- public function setAccountId($accountId)
9319
- {
9320
- $this->accountId = $accountId;
9321
- }
9322
-
9323
- public function getAccountId()
9324
- {
9325
- return $this->accountId;
9326
- }
9327
-
9328
- public function setChildLink(Google_Service_Analytics_ProfileChildLink $childLink)
9329
- {
9330
- $this->childLink = $childLink;
9331
- }
9332
-
9333
- public function getChildLink()
9334
- {
9335
- return $this->childLink;
9336
- }
9337
-
9338
- public function setCreated($created)
9339
- {
9340
- $this->created = $created;
9341
- }
9342
-
9343
- public function getCreated()
9344
- {
9345
- return $this->created;
9346
- }
9347
-
9348
- public function setCurrency($currency)
9349
- {
9350
- $this->currency = $currency;
9351
- }
9352
-
9353
- public function getCurrency()
9354
- {
9355
- return $this->currency;
9356
- }
9357
-
9358
- public function setDefaultPage($defaultPage)
9359
- {
9360
- $this->defaultPage = $defaultPage;
9361
- }
9362
-
9363
- public function getDefaultPage()
9364
- {
9365
- return $this->defaultPage;
9366
- }
9367
-
9368
- public function setECommerceTracking($eCommerceTracking)
9369
- {
9370
- $this->eCommerceTracking = $eCommerceTracking;
9371
- }
9372
-
9373
- public function getECommerceTracking()
9374
- {
9375
- return $this->eCommerceTracking;
9376
- }
9377
-
9378
- public function setEnhancedECommerceTracking($enhancedECommerceTracking)
9379
- {
9380
- $this->enhancedECommerceTracking = $enhancedECommerceTracking;
9381
- }
9382
-
9383
- public function getEnhancedECommerceTracking()
9384
- {
9385
- return $this->enhancedECommerceTracking;
9386
- }
9387
-
9388
- public function setExcludeQueryParameters($excludeQueryParameters)
9389
- {
9390
- $this->excludeQueryParameters = $excludeQueryParameters;
9391
- }
9392
-
9393
- public function getExcludeQueryParameters()
9394
- {
9395
- return $this->excludeQueryParameters;
9396
- }
9397
-
9398
- public function setId($id)
9399
- {
9400
- $this->id = $id;
9401
- }
9402
-
9403
- public function getId()
9404
- {
9405
- return $this->id;
9406
- }
9407
-
9408
- public function setInternalWebPropertyId($internalWebPropertyId)
9409
- {
9410
- $this->internalWebPropertyId = $internalWebPropertyId;
9411
- }
9412
-
9413
- public function getInternalWebPropertyId()
9414
- {
9415
- return $this->internalWebPropertyId;
9416
- }
9417
-
9418
- public function setKind($kind)
9419
- {
9420
- $this->kind = $kind;
9421
- }
9422
-
9423
- public function getKind()
9424
- {
9425
- return $this->kind;
9426
- }
9427
-
9428
- public function setName($name)
9429
- {
9430
- $this->name = $name;
9431
- }
9432
-
9433
- public function getName()
9434
- {
9435
- return $this->name;
9436
- }
9437
-
9438
- public function setParentLink(Google_Service_Analytics_ProfileParentLink $parentLink)
9439
- {
9440
- $this->parentLink = $parentLink;
9441
- }
9442
-
9443
- public function getParentLink()
9444
- {
9445
- return $this->parentLink;
9446
- }
9447
-
9448
- public function setPermissions(Google_Service_Analytics_ProfilePermissions $permissions)
9449
- {
9450
- $this->permissions = $permissions;
9451
- }
9452
-
9453
- public function getPermissions()
9454
- {
9455
- return $this->permissions;
9456
- }
9457
-
9458
- public function setSelfLink($selfLink)
9459
- {
9460
- $this->selfLink = $selfLink;
9461
- }
9462
-
9463
- public function getSelfLink()
9464
- {
9465
- return $this->selfLink;
9466
- }
9467
-
9468
- public function setSiteSearchCategoryParameters($siteSearchCategoryParameters)
9469
- {
9470
- $this->siteSearchCategoryParameters = $siteSearchCategoryParameters;
9471
- }
9472
-
9473
- public function getSiteSearchCategoryParameters()
9474
- {
9475
- return $this->siteSearchCategoryParameters;
9476
- }
9477
-
9478
- public function setSiteSearchQueryParameters($siteSearchQueryParameters)
9479
- {
9480
- $this->siteSearchQueryParameters = $siteSearchQueryParameters;
9481
- }
9482
-
9483
- public function getSiteSearchQueryParameters()
9484
- {
9485
- return $this->siteSearchQueryParameters;
9486
- }
9487
-
9488
- public function setStripSiteSearchCategoryParameters($stripSiteSearchCategoryParameters)
9489
- {
9490
- $this->stripSiteSearchCategoryParameters = $stripSiteSearchCategoryParameters;
9491
- }
9492
-
9493
- public function getStripSiteSearchCategoryParameters()
9494
- {
9495
- return $this->stripSiteSearchCategoryParameters;
9496
- }
9497
-
9498
- public function setStripSiteSearchQueryParameters($stripSiteSearchQueryParameters)
9499
- {
9500
- $this->stripSiteSearchQueryParameters = $stripSiteSearchQueryParameters;
9501
- }
9502
-
9503
- public function getStripSiteSearchQueryParameters()
9504
- {
9505
- return $this->stripSiteSearchQueryParameters;
9506
- }
9507
-
9508
- public function setTimezone($timezone)
9509
- {
9510
- $this->timezone = $timezone;
9511
- }
9512
-
9513
- public function getTimezone()
9514
- {
9515
- return $this->timezone;
9516
- }
9517
-
9518
- public function setType($type)
9519
- {
9520
- $this->type = $type;
9521
- }
9522
-
9523
- public function getType()
9524
- {
9525
- return $this->type;
9526
- }
9527
-
9528
- public function setUpdated($updated)
9529
- {
9530
- $this->updated = $updated;
9531
- }
9532
-
9533
- public function getUpdated()
9534
- {
9535
- return $this->updated;
9536
- }
9537
-
9538
- public function setWebPropertyId($webPropertyId)
9539
- {
9540
- $this->webPropertyId = $webPropertyId;
9541
- }
9542
-
9543
- public function getWebPropertyId()
9544
- {
9545
- return $this->webPropertyId;
9546
- }
9547
-
9548
- public function setWebsiteUrl($websiteUrl)
9549
- {
9550
- $this->websiteUrl = $websiteUrl;
9551
- }
9552
-
9553
- public function getWebsiteUrl()
9554
- {
9555
- return $this->websiteUrl;
9556
- }
9557
- }
9558
-
9559
- class Google_Service_Analytics_ProfileChildLink extends Google_Model
9560
- {
9561
-
9562
- protected $internal_gapi_mappings = array();
9563
-
9564
- public $href;
9565
-
9566
- public $type;
9567
-
9568
- public function setHref($href)
9569
- {
9570
- $this->href = $href;
9571
- }
9572
-
9573
- public function getHref()
9574
- {
9575
- return $this->href;
9576
- }
9577
-
9578
- public function setType($type)
9579
- {
9580
- $this->type = $type;
9581
- }
9582
-
9583
- public function getType()
9584
- {
9585
- return $this->type;
9586
- }
9587
- }
9588
-
9589
- class Google_Service_Analytics_ProfileFilterLink extends Google_Model
9590
- {
9591
-
9592
- protected $internal_gapi_mappings = array();
9593
-
9594
- protected $filterRefType = 'Google_Service_Analytics_FilterRef';
9595
-
9596
- protected $filterRefDataType = '';
9597
-
9598
- public $id;
9599
-
9600
- public $kind;
9601
-
9602
- protected $profileRefType = 'Google_Service_Analytics_ProfileRef';
9603
-
9604
- protected $profileRefDataType = '';
9605
-
9606
- public $rank;
9607
-
9608
- public $selfLink;
9609
-
9610
- public function setFilterRef(Google_Service_Analytics_FilterRef $filterRef)
9611
- {
9612
- $this->filterRef = $filterRef;
9613
- }
9614
-
9615
- public function getFilterRef()
9616
- {
9617
- return $this->filterRef;
9618
- }
9619
-
9620
- public function setId($id)
9621
- {
9622
- $this->id = $id;
9623
- }
9624
-
9625
- public function getId()
9626
- {
9627
- return $this->id;
9628
- }
9629
-
9630
- public function setKind($kind)
9631
- {
9632
- $this->kind = $kind;
9633
- }
9634
-
9635
- public function getKind()
9636
- {
9637
- return $this->kind;
9638
- }
9639
-
9640
- public function setProfileRef(Google_Service_Analytics_ProfileRef $profileRef)
9641
- {
9642
- $this->profileRef = $profileRef;
9643
- }
9644
-
9645
- public function getProfileRef()
9646
- {
9647
- return $this->profileRef;
9648
- }
9649
-
9650
- public function setRank($rank)
9651
- {
9652
- $this->rank = $rank;
9653
- }
9654
-
9655
- public function getRank()
9656
- {
9657
- return $this->rank;
9658
- }
9659
-
9660
- public function setSelfLink($selfLink)
9661
- {
9662
- $this->selfLink = $selfLink;
9663
- }
9664
-
9665
- public function getSelfLink()
9666
- {
9667
- return $this->selfLink;
9668
- }
9669
- }
9670
-
9671
- class Google_Service_Analytics_ProfileFilterLinks extends Google_Collection
9672
- {
9673
-
9674
- protected $collection_key = 'items';
9675
-
9676
- protected $internal_gapi_mappings = array();
9677
-
9678
- protected $itemsType = 'Google_Service_Analytics_ProfileFilterLink';
9679
-
9680
- protected $itemsDataType = 'array';
9681
-
9682
- public $itemsPerPage;
9683
-
9684
- public $kind;
9685
-
9686
- public $nextLink;
9687
-
9688
- public $previousLink;
9689
-
9690
- public $startIndex;
9691
-
9692
- public $totalResults;
9693
-
9694
- public $username;
9695
-
9696
- public function setItems($items)
9697
- {
9698
- $this->items = $items;
9699
- }
9700
-
9701
- public function getItems()
9702
- {
9703
- return $this->items;
9704
- }
9705
-
9706
- public function setItemsPerPage($itemsPerPage)
9707
- {
9708
- $this->itemsPerPage = $itemsPerPage;
9709
- }
9710
-
9711
- public function getItemsPerPage()
9712
- {
9713
- return $this->itemsPerPage;
9714
- }
9715
-
9716
- public function setKind($kind)
9717
- {
9718
- $this->kind = $kind;
9719
- }
9720
-
9721
- public function getKind()
9722
- {
9723
- return $this->kind;
9724
- }
9725
-
9726
- public function setNextLink($nextLink)
9727
- {
9728
- $this->nextLink = $nextLink;
9729
- }
9730
-
9731
- public function getNextLink()
9732
- {
9733
- return $this->nextLink;
9734
- }
9735
-
9736
- public function setPreviousLink($previousLink)
9737
- {
9738
- $this->previousLink = $previousLink;
9739
- }
9740
-
9741
- public function getPreviousLink()
9742
- {
9743
- return $this->previousLink;
9744
- }
9745
-
9746
- public function setStartIndex($startIndex)
9747
- {
9748
- $this->startIndex = $startIndex;
9749
- }
9750
-
9751
- public function getStartIndex()
9752
- {
9753
- return $this->startIndex;
9754
- }
9755
-
9756
- public function setTotalResults($totalResults)
9757
- {
9758
- $this->totalResults = $totalResults;
9759
- }
9760
-
9761
- public function getTotalResults()
9762
- {
9763
- return $this->totalResults;
9764
- }
9765
-
9766
- public function setUsername($username)
9767
- {
9768
- $this->username = $username;
9769
- }
9770
-
9771
- public function getUsername()
9772
- {
9773
- return $this->username;
9774
- }
9775
- }
9776
-
9777
- class Google_Service_Analytics_ProfileParentLink extends Google_Model
9778
- {
9779
-
9780
- protected $internal_gapi_mappings = array();
9781
-
9782
- public $href;
9783
-
9784
- public $type;
9785
-
9786
- public function setHref($href)
9787
- {
9788
- $this->href = $href;
9789
- }
9790
-
9791
- public function getHref()
9792
- {
9793
- return $this->href;
9794
- }
9795
-
9796
- public function setType($type)
9797
- {
9798
- $this->type = $type;
9799
- }
9800
-
9801
- public function getType()
9802
- {
9803
- return $this->type;
9804
- }
9805
- }
9806
-
9807
- class Google_Service_Analytics_ProfilePermissions extends Google_Collection
9808
- {
9809
-
9810
- protected $collection_key = 'effective';
9811
-
9812
- protected $internal_gapi_mappings = array();
9813
-
9814
- public $effective;
9815
-
9816
- public function setEffective($effective)
9817
- {
9818
- $this->effective = $effective;
9819
- }
9820
-
9821
- public function getEffective()
9822
- {
9823
- return $this->effective;
9824
- }
9825
- }
9826
-
9827
- class Google_Service_Analytics_ProfileRef extends Google_Model
9828
- {
9829
-
9830
- protected $internal_gapi_mappings = array();
9831
-
9832
- public $accountId;
9833
-
9834
- public $href;
9835
-
9836
- public $id;
9837
-
9838
- public $internalWebPropertyId;
9839
-
9840
- public $kind;
9841
-
9842
- public $name;
9843
-
9844
- public $webPropertyId;
9845
-
9846
- public function setAccountId($accountId)
9847
- {
9848
- $this->accountId = $accountId;
9849
- }
9850
-
9851
- public function getAccountId()
9852
- {
9853
- return $this->accountId;
9854
- }
9855
-
9856
- public function setHref($href)
9857
- {
9858
- $this->href = $href;
9859
- }
9860
-
9861
- public function getHref()
9862
- {
9863
- return $this->href;
9864
- }
9865
-
9866
- public function setId($id)
9867
- {
9868
- $this->id = $id;
9869
- }
9870
-
9871
- public function getId()
9872
- {
9873
- return $this->id;
9874
- }
9875
-
9876
- public function setInternalWebPropertyId($internalWebPropertyId)
9877
- {
9878
- $this->internalWebPropertyId = $internalWebPropertyId;
9879
- }
9880
-
9881
- public function getInternalWebPropertyId()
9882
- {
9883
- return $this->internalWebPropertyId;
9884
- }
9885
-
9886
- public function setKind($kind)
9887
- {
9888
- $this->kind = $kind;
9889
- }
9890
-
9891
- public function getKind()
9892
- {
9893
- return $this->kind;
9894
- }
9895
-
9896
- public function setName($name)
9897
- {
9898
- $this->name = $name;
9899
- }
9900
-
9901
- public function getName()
9902
- {
9903
- return $this->name;
9904
- }
9905
-
9906
- public function setWebPropertyId($webPropertyId)
9907
- {
9908
- $this->webPropertyId = $webPropertyId;
9909
- }
9910
-
9911
- public function getWebPropertyId()
9912
- {
9913
- return $this->webPropertyId;
9914
- }
9915
- }
9916
-
9917
- class Google_Service_Analytics_ProfileSummary extends Google_Model
9918
- {
9919
-
9920
- protected $internal_gapi_mappings = array();
9921
-
9922
- public $id;
9923
-
9924
- public $kind;
9925
-
9926
- public $name;
9927
-
9928
- public $type;
9929
-
9930
- public function setId($id)
9931
- {
9932
- $this->id = $id;
9933
- }
9934
-
9935
- public function getId()
9936
- {
9937
- return $this->id;
9938
- }
9939
-
9940
- public function setKind($kind)
9941
- {
9942
- $this->kind = $kind;
9943
- }
9944
-
9945
- public function getKind()
9946
- {
9947
- return $this->kind;
9948
- }
9949
-
9950
- public function setName($name)
9951
- {
9952
- $this->name = $name;
9953
- }
9954
-
9955
- public function getName()
9956
- {
9957
- return $this->name;
9958
- }
9959
-
9960
- public function setType($type)
9961
- {
9962
- $this->type = $type;
9963
- }
9964
-
9965
- public function getType()
9966
- {
9967
- return $this->type;
9968
- }
9969
- }
9970
-
9971
- class Google_Service_Analytics_Profiles extends Google_Collection
9972
- {
9973
-
9974
- protected $collection_key = 'items';
9975
-
9976
- protected $internal_gapi_mappings = array();
9977
-
9978
- protected $itemsType = 'Google_Service_Analytics_Profile';
9979
-
9980
- protected $itemsDataType = 'array';
9981
-
9982
- public $itemsPerPage;
9983
-
9984
- public $kind;
9985
-
9986
- public $nextLink;
9987
-
9988
- public $previousLink;
9989
-
9990
- public $startIndex;
9991
-
9992
- public $totalResults;
9993
-
9994
- public $username;
9995
-
9996
- public function setItems($items)
9997
- {
9998
- $this->items = $items;
9999
- }
10000
-
10001
- public function getItems()
10002
- {
10003
- return $this->items;
10004
- }
10005
-
10006
- public function setItemsPerPage($itemsPerPage)
10007
- {
10008
- $this->itemsPerPage = $itemsPerPage;
10009
- }
10010
-
10011
- public function getItemsPerPage()
10012
- {
10013
- return $this->itemsPerPage;
10014
- }
10015
-
10016
- public function setKind($kind)
10017
- {
10018
- $this->kind = $kind;
10019
- }
10020
-
10021
- public function getKind()
10022
- {
10023
- return $this->kind;
10024
- }
10025
-
10026
- public function setNextLink($nextLink)
10027
- {
10028
- $this->nextLink = $nextLink;
10029
- }
10030
-
10031
- public function getNextLink()
10032
- {
10033
- return $this->nextLink;
10034
- }
10035
-
10036
- public function setPreviousLink($previousLink)
10037
- {
10038
- $this->previousLink = $previousLink;
10039
- }
10040
-
10041
- public function getPreviousLink()
10042
- {
10043
- return $this->previousLink;
10044
- }
10045
-
10046
- public function setStartIndex($startIndex)
10047
- {
10048
- $this->startIndex = $startIndex;
10049
- }
10050
-
10051
- public function getStartIndex()
10052
- {
10053
- return $this->startIndex;
10054
- }
10055
-
10056
- public function setTotalResults($totalResults)
10057
- {
10058
- $this->totalResults = $totalResults;
10059
- }
10060
-
10061
- public function getTotalResults()
10062
- {
10063
- return $this->totalResults;
10064
- }
10065
-
10066
- public function setUsername($username)
10067
- {
10068
- $this->username = $username;
10069
- }
10070
-
10071
- public function getUsername()
10072
- {
10073
- return $this->username;
10074
- }
10075
- }
10076
-
10077
- class Google_Service_Analytics_RealtimeData extends Google_Collection
10078
- {
10079
-
10080
- protected $collection_key = 'rows';
10081
-
10082
- protected $internal_gapi_mappings = array();
10083
-
10084
- protected $columnHeadersType = 'Google_Service_Analytics_RealtimeDataColumnHeaders';
10085
-
10086
- protected $columnHeadersDataType = 'array';
10087
-
10088
- public $id;
10089
-
10090
- public $kind;
10091
-
10092
- protected $profileInfoType = 'Google_Service_Analytics_RealtimeDataProfileInfo';
10093
-
10094
- protected $profileInfoDataType = '';
10095
-
10096
- protected $queryType = 'Google_Service_Analytics_RealtimeDataQuery';
10097
-
10098
- protected $queryDataType = '';
10099
-
10100
- public $rows;
10101
-
10102
- public $selfLink;
10103
-
10104
- public $totalResults;
10105
-
10106
- public $totalsForAllResults;
10107
-
10108
- public function setColumnHeaders($columnHeaders)
10109
- {
10110
- $this->columnHeaders = $columnHeaders;
10111
- }
10112
-
10113
- public function getColumnHeaders()
10114
- {
10115
- return $this->columnHeaders;
10116
- }
10117
-
10118
- public function setId($id)
10119
- {
10120
- $this->id = $id;
10121
- }
10122
-
10123
- public function getId()
10124
- {
10125
- return $this->id;
10126
- }
10127
-
10128
- public function setKind($kind)
10129
- {
10130
- $this->kind = $kind;
10131
- }
10132
-
10133
- public function getKind()
10134
- {
10135
- return $this->kind;
10136
- }
10137
-
10138
- public function setProfileInfo(Google_Service_Analytics_RealtimeDataProfileInfo $profileInfo)
10139
- {
10140
- $this->profileInfo = $profileInfo;
10141
- }
10142
-
10143
- public function getProfileInfo()
10144
- {
10145
- return $this->profileInfo;
10146
- }
10147
-
10148
- public function setQuery(Google_Service_Analytics_RealtimeDataQuery $query)
10149
- {
10150
- $this->query = $query;
10151
- }
10152
-
10153
- public function getQuery()
10154
- {
10155
- return $this->query;
10156
- }
10157
-
10158
- public function setRows($rows)
10159
- {
10160
- $this->rows = $rows;
10161
- }
10162
-
10163
- public function getRows()
10164
- {
10165
- return $this->rows;
10166
- }
10167
-
10168
- public function setSelfLink($selfLink)
10169
- {
10170
- $this->selfLink = $selfLink;
10171
- }
10172
-
10173
- public function getSelfLink()
10174
- {
10175
- return $this->selfLink;
10176
- }
10177
-
10178
- public function setTotalResults($totalResults)
10179
- {
10180
- $this->totalResults = $totalResults;
10181
- }
10182
-
10183
- public function getTotalResults()
10184
- {
10185
- return $this->totalResults;
10186
- }
10187
-
10188
- public function setTotalsForAllResults($totalsForAllResults)
10189
- {
10190
- $this->totalsForAllResults = $totalsForAllResults;
10191
- }
10192
-
10193
- public function getTotalsForAllResults()
10194
- {
10195
- return $this->totalsForAllResults;
10196
- }
10197
- }
10198
-
10199
- class Google_Service_Analytics_RealtimeDataColumnHeaders extends Google_Model
10200
- {
10201
-
10202
- protected $internal_gapi_mappings = array();
10203
-
10204
- public $columnType;
10205
-
10206
- public $dataType;
10207
-
10208
- public $name;
10209
-
10210
- public function setColumnType($columnType)
10211
- {
10212
- $this->columnType = $columnType;
10213
- }
10214
-
10215
- public function getColumnType()
10216
- {
10217
- return $this->columnType;
10218
- }
10219
-
10220
- public function setDataType($dataType)
10221
- {
10222
- $this->dataType = $dataType;
10223
- }
10224
-
10225
- public function getDataType()
10226
- {
10227
- return $this->dataType;
10228
- }
10229
-
10230
- public function setName($name)
10231
- {
10232
- $this->name = $name;
10233
- }
10234
-
10235
- public function getName()
10236
- {
10237
- return $this->name;
10238
- }
10239
- }
10240
-
10241
- class Google_Service_Analytics_RealtimeDataProfileInfo extends Google_Model
10242
- {
10243
-
10244
- protected $internal_gapi_mappings = array();
10245
-
10246
- public $accountId;
10247
-
10248
- public $internalWebPropertyId;
10249
-
10250
- public $profileId;
10251
-
10252
- public $profileName;
10253
-
10254
- public $tableId;
10255
-
10256
- public $webPropertyId;
10257
-
10258
- public function setAccountId($accountId)
10259
- {
10260
- $this->accountId = $accountId;
10261
- }
10262
-
10263
- public function getAccountId()
10264
- {
10265
- return $this->accountId;
10266
- }
10267
-
10268
- public function setInternalWebPropertyId($internalWebPropertyId)
10269
- {
10270
- $this->internalWebPropertyId = $internalWebPropertyId;
10271
- }
10272
-
10273
- public function getInternalWebPropertyId()
10274
- {
10275
- return $this->internalWebPropertyId;
10276
- }
10277
-
10278
- public function setProfileId($profileId)
10279
- {
10280
- $this->profileId = $profileId;
10281
- }
10282
-
10283
- public function getProfileId()
10284
- {
10285
- return $this->profileId;
10286
- }
10287
-
10288
- public function setProfileName($profileName)
10289
- {
10290
- $this->profileName = $profileName;
10291
- }
10292
-
10293
- public function getProfileName()
10294
- {
10295
- return $this->profileName;
10296
- }
10297
-
10298
- public function setTableId($tableId)
10299
- {
10300
- $this->tableId = $tableId;
10301
- }
10302
-
10303
- public function getTableId()
10304
- {
10305
- return $this->tableId;
10306
- }
10307
-
10308
- public function setWebPropertyId($webPropertyId)
10309
- {
10310
- $this->webPropertyId = $webPropertyId;
10311
- }
10312
-
10313
- public function getWebPropertyId()
10314
- {
10315
- return $this->webPropertyId;
10316
- }
10317
- }
10318
-
10319
- class Google_Service_Analytics_RealtimeDataQuery extends Google_Collection
10320
- {
10321
-
10322
- protected $collection_key = 'sort';
10323
-
10324
- protected $internal_gapi_mappings = array(
10325
- "maxResults" => "max-results"
10326
- );
10327
-
10328
- public $dimensions;
10329
-
10330
- public $filters;
10331
-
10332
- public $ids;
10333
-
10334
- public $maxResults;
10335
-
10336
- public $metrics;
10337
-
10338
- public $sort;
10339
-
10340
- public function setDimensions($dimensions)
10341
- {
10342
- $this->dimensions = $dimensions;
10343
- }
10344
-
10345
- public function getDimensions()
10346
- {
10347
- return $this->dimensions;
10348
- }
10349
-
10350
- public function setFilters($filters)
10351
- {
10352
- $this->filters = $filters;
10353
- }
10354
-
10355
- public function getFilters()
10356
- {
10357
- return $this->filters;
10358
- }
10359
-
10360
- public function setIds($ids)
10361
- {
10362
- $this->ids = $ids;
10363
- }
10364
-
10365
- public function getIds()
10366
- {
10367
- return $this->ids;
10368
- }
10369
-
10370
- public function setMaxResults($maxResults)
10371
- {
10372
- $this->maxResults = $maxResults;
10373
- }
10374
-
10375
- public function getMaxResults()
10376
- {
10377
- return $this->maxResults;
10378
- }
10379
-
10380
- public function setMetrics($metrics)
10381
- {
10382
- $this->metrics = $metrics;
10383
- }
10384
-
10385
- public function getMetrics()
10386
- {
10387
- return $this->metrics;
10388
- }
10389
-
10390
- public function setSort($sort)
10391
- {
10392
- $this->sort = $sort;
10393
- }
10394
-
10395
- public function getSort()
10396
- {
10397
- return $this->sort;
10398
- }
10399
- }
10400
-
10401
- class Google_Service_Analytics_RealtimeDataTotalsForAllResults extends Google_Model
10402
- {
10403
- }
10404
-
10405
- class Google_Service_Analytics_Segment extends Google_Model
10406
- {
10407
-
10408
- protected $internal_gapi_mappings = array();
10409
-
10410
- public $created;
10411
-
10412
- public $definition;
10413
-
10414
- public $id;
10415
-
10416
- public $kind;
10417
-
10418
- public $name;
10419
-
10420
- public $segmentId;
10421
-
10422
- public $selfLink;
10423
-
10424
- public $type;
10425
-
10426
- public $updated;
10427
-
10428
- public function setCreated($created)
10429
- {
10430
- $this->created = $created;
10431
- }
10432
-
10433
- public function getCreated()
10434
- {
10435
- return $this->created;
10436
- }
10437
-
10438
- public function setDefinition($definition)
10439
- {
10440
- $this->definition = $definition;
10441
- }
10442
-
10443
- public function getDefinition()
10444
- {
10445
- return $this->definition;
10446
- }
10447
-
10448
- public function setId($id)
10449
- {
10450
- $this->id = $id;
10451
- }
10452
-
10453
- public function getId()
10454
- {
10455
- return $this->id;
10456
- }
10457
-
10458
- public function setKind($kind)
10459
- {
10460
- $this->kind = $kind;
10461
- }
10462
-
10463
- public function getKind()
10464
- {
10465
- return $this->kind;
10466
- }
10467
-
10468
- public function setName($name)
10469
- {
10470
- $this->name = $name;
10471
- }
10472
-
10473
- public function getName()
10474
- {
10475
- return $this->name;
10476
- }
10477
-
10478
- public function setSegmentId($segmentId)
10479
- {
10480
- $this->segmentId = $segmentId;
10481
- }
10482
-
10483
- public function getSegmentId()
10484
- {
10485
- return $this->segmentId;
10486
- }
10487
-
10488
- public function setSelfLink($selfLink)
10489
- {
10490
- $this->selfLink = $selfLink;
10491
- }
10492
-
10493
- public function getSelfLink()
10494
- {
10495
- return $this->selfLink;
10496
- }
10497
-
10498
- public function setType($type)
10499
- {
10500
- $this->type = $type;
10501
- }
10502
-
10503
- public function getType()
10504
- {
10505
- return $this->type;
10506
- }
10507
-
10508
- public function setUpdated($updated)
10509
- {
10510
- $this->updated = $updated;
10511
- }
10512
-
10513
- public function getUpdated()
10514
- {
10515
- return $this->updated;
10516
- }
10517
- }
10518
-
10519
- class Google_Service_Analytics_Segments extends Google_Collection
10520
- {
10521
-
10522
- protected $collection_key = 'items';
10523
-
10524
- protected $internal_gapi_mappings = array();
10525
-
10526
- protected $itemsType = 'Google_Service_Analytics_Segment';
10527
-
10528
- protected $itemsDataType = 'array';
10529
-
10530
- public $itemsPerPage;
10531
-
10532
- public $kind;
10533
-
10534
- public $nextLink;
10535
-
10536
- public $previousLink;
10537
-
10538
- public $startIndex;
10539
-
10540
- public $totalResults;
10541
-
10542
- public $username;
10543
-
10544
- public function setItems($items)
10545
- {
10546
- $this->items = $items;
10547
- }
10548
-
10549
- public function getItems()
10550
- {
10551
- return $this->items;
10552
- }
10553
-
10554
- public function setItemsPerPage($itemsPerPage)
10555
- {
10556
- $this->itemsPerPage = $itemsPerPage;
10557
- }
10558
-
10559
- public function getItemsPerPage()
10560
- {
10561
- return $this->itemsPerPage;
10562
- }
10563
-
10564
- public function setKind($kind)
10565
- {
10566
- $this->kind = $kind;
10567
- }
10568
-
10569
- public function getKind()
10570
- {
10571
- return $this->kind;
10572
- }
10573
-
10574
- public function setNextLink($nextLink)
10575
- {
10576
- $this->nextLink = $nextLink;
10577
- }
10578
-
10579
- public function getNextLink()
10580
- {
10581
- return $this->nextLink;
10582
- }
10583
-
10584
- public function setPreviousLink($previousLink)
10585
- {
10586
- $this->previousLink = $previousLink;
10587
- }
10588
-
10589
- public function getPreviousLink()
10590
- {
10591
- return $this->previousLink;
10592
- }
10593
-
10594
- public function setStartIndex($startIndex)
10595
- {
10596
- $this->startIndex = $startIndex;
10597
- }
10598
-
10599
- public function getStartIndex()
10600
- {
10601
- return $this->startIndex;
10602
- }
10603
-
10604
- public function setTotalResults($totalResults)
10605
- {
10606
- $this->totalResults = $totalResults;
10607
- }
10608
-
10609
- public function getTotalResults()
10610
- {
10611
- return $this->totalResults;
10612
- }
10613
-
10614
- public function setUsername($username)
10615
- {
10616
- $this->username = $username;
10617
- }
10618
-
10619
- public function getUsername()
10620
- {
10621
- return $this->username;
10622
- }
10623
- }
10624
-
10625
- class Google_Service_Analytics_UnsampledReport extends Google_Model
10626
- {
10627
-
10628
- protected $internal_gapi_mappings = array(
10629
- "endDate" => "end-date",
10630
- "startDate" => "start-date"
10631
- );
10632
-
10633
- public $accountId;
10634
-
10635
- protected $cloudStorageDownloadDetailsType = 'Google_Service_Analytics_UnsampledReportCloudStorageDownloadDetails';
10636
-
10637
- protected $cloudStorageDownloadDetailsDataType = '';
10638
-
10639
- public $created;
10640
-
10641
- public $dimensions;
10642
-
10643
- public $downloadType;
10644
-
10645
- protected $driveDownloadDetailsType = 'Google_Service_Analytics_UnsampledReportDriveDownloadDetails';
10646
-
10647
- protected $driveDownloadDetailsDataType = '';
10648
-
10649
- public $endDate;
10650
-
10651
- public $filters;
10652
-
10653
- public $id;
10654
-
10655
- public $kind;
10656
-
10657
- public $metrics;
10658
-
10659
- public $profileId;
10660
-
10661
- public $segment;
10662
-
10663
- public $selfLink;
10664
-
10665
- public $startDate;
10666
-
10667
- public $status;
10668
-
10669
- public $title;
10670
-
10671
- public $updated;
10672
-
10673
- public $webPropertyId;
10674
-
10675
- public function setAccountId($accountId)
10676
- {
10677
- $this->accountId = $accountId;
10678
- }
10679
-
10680
- public function getAccountId()
10681
- {
10682
- return $this->accountId;
10683
- }
10684
-
10685
- public function setCloudStorageDownloadDetails(Google_Service_Analytics_UnsampledReportCloudStorageDownloadDetails $cloudStorageDownloadDetails)
10686
- {
10687
- $this->cloudStorageDownloadDetails = $cloudStorageDownloadDetails;
10688
- }
10689
-
10690
- public function getCloudStorageDownloadDetails()
10691
- {
10692
- return $this->cloudStorageDownloadDetails;
10693
- }
10694
-
10695
- public function setCreated($created)
10696
- {
10697
- $this->created = $created;
10698
- }
10699
-
10700
- public function getCreated()
10701
- {
10702
- return $this->created;
10703
- }
10704
-
10705
- public function setDimensions($dimensions)
10706
- {
10707
- $this->dimensions = $dimensions;
10708
- }
10709
-
10710
- public function getDimensions()
10711
- {
10712
- return $this->dimensions;
10713
- }
10714
-
10715
- public function setDownloadType($downloadType)
10716
- {
10717
- $this->downloadType = $downloadType;
10718
- }
10719
-
10720
- public function getDownloadType()
10721
- {
10722
- return $this->downloadType;
10723
- }
10724
-
10725
- public function setDriveDownloadDetails(Google_Service_Analytics_UnsampledReportDriveDownloadDetails $driveDownloadDetails)
10726
- {
10727
- $this->driveDownloadDetails = $driveDownloadDetails;
10728
- }
10729
-
10730
- public function getDriveDownloadDetails()
10731
- {
10732
- return $this->driveDownloadDetails;
10733
- }
10734
-
10735
- public function setEndDate($endDate)
10736
- {
10737
- $this->endDate = $endDate;
10738
- }
10739
-
10740
- public function getEndDate()
10741
- {
10742
- return $this->endDate;
10743
- }
10744
-
10745
- public function setFilters($filters)
10746
- {
10747
- $this->filters = $filters;
10748
- }
10749
-
10750
- public function getFilters()
10751
- {
10752
- return $this->filters;
10753
- }
10754
-
10755
- public function setId($id)
10756
- {
10757
- $this->id = $id;
10758
- }
10759
-
10760
- public function getId()
10761
- {
10762
- return $this->id;
10763
- }
10764
-
10765
- public function setKind($kind)
10766
- {
10767
- $this->kind = $kind;
10768
- }
10769
-
10770
- public function getKind()
10771
- {
10772
- return $this->kind;
10773
- }
10774
-
10775
- public function setMetrics($metrics)
10776
- {
10777
- $this->metrics = $metrics;
10778
- }
10779
-
10780
- public function getMetrics()
10781
- {
10782
- return $this->metrics;
10783
- }
10784
-
10785
- public function setProfileId($profileId)
10786
- {
10787
- $this->profileId = $profileId;
10788
- }
10789
-
10790
- public function getProfileId()
10791
- {
10792
- return $this->profileId;
10793
- }
10794
-
10795
- public function setSegment($segment)
10796
- {
10797
- $this->segment = $segment;
10798
- }
10799
-
10800
- public function getSegment()
10801
- {
10802
- return $this->segment;
10803
- }
10804
-
10805
- public function setSelfLink($selfLink)
10806
- {
10807
- $this->selfLink = $selfLink;
10808
- }
10809
-
10810
- public function getSelfLink()
10811
- {
10812
- return $this->selfLink;
10813
- }
10814
-
10815
- public function setStartDate($startDate)
10816
- {
10817
- $this->startDate = $startDate;
10818
- }
10819
-
10820
- public function getStartDate()
10821
- {
10822
- return $this->startDate;
10823
- }
10824
-
10825
- public function setStatus($status)
10826
- {
10827
- $this->status = $status;
10828
- }
10829
-
10830
- public function getStatus()
10831
- {
10832
- return $this->status;
10833
- }
10834
-
10835
- public function setTitle($title)
10836
- {
10837
- $this->title = $title;
10838
- }
10839
-
10840
- public function getTitle()
10841
- {
10842
- return $this->title;
10843
- }
10844
-
10845
- public function setUpdated($updated)
10846
- {
10847
- $this->updated = $updated;
10848
- }
10849
-
10850
- public function getUpdated()
10851
- {
10852
- return $this->updated;
10853
- }
10854
-
10855
- public function setWebPropertyId($webPropertyId)
10856
- {
10857
- $this->webPropertyId = $webPropertyId;
10858
- }
10859
-
10860
- public function getWebPropertyId()
10861
- {
10862
- return $this->webPropertyId;
10863
- }
10864
- }
10865
-
10866
- class Google_Service_Analytics_UnsampledReportCloudStorageDownloadDetails extends Google_Model
10867
- {
10868
-
10869
- protected $internal_gapi_mappings = array();
10870
-
10871
- public $bucketId;
10872
-
10873
- public $objectId;
10874
-
10875
- public function setBucketId($bucketId)
10876
- {
10877
- $this->bucketId = $bucketId;
10878
- }
10879
-
10880
- public function getBucketId()
10881
- {
10882
- return $this->bucketId;
10883
- }
10884
-
10885
- public function setObjectId($objectId)
10886
- {
10887
- $this->objectId = $objectId;
10888
- }
10889
-
10890
- public function getObjectId()
10891
- {
10892
- return $this->objectId;
10893
- }
10894
- }
10895
-
10896
- class Google_Service_Analytics_UnsampledReportDriveDownloadDetails extends Google_Model
10897
- {
10898
-
10899
- protected $internal_gapi_mappings = array();
10900
-
10901
- public $documentId;
10902
-
10903
- public function setDocumentId($documentId)
10904
- {
10905
- $this->documentId = $documentId;
10906
- }
10907
-
10908
- public function getDocumentId()
10909
- {
10910
- return $this->documentId;
10911
- }
10912
- }
10913
-
10914
- class Google_Service_Analytics_UnsampledReports extends Google_Collection
10915
- {
10916
-
10917
- protected $collection_key = 'items';
10918
-
10919
- protected $internal_gapi_mappings = array();
10920
-
10921
- protected $itemsType = 'Google_Service_Analytics_UnsampledReport';
10922
-
10923
- protected $itemsDataType = 'array';
10924
-
10925
- public $itemsPerPage;
10926
-
10927
- public $kind;
10928
-
10929
- public $nextLink;
10930
-
10931
- public $previousLink;
10932
-
10933
- public $startIndex;
10934
-
10935
- public $totalResults;
10936
-
10937
- public $username;
10938
-
10939
- public function setItems($items)
10940
- {
10941
- $this->items = $items;
10942
- }
10943
-
10944
- public function getItems()
10945
- {
10946
- return $this->items;
10947
- }
10948
-
10949
- public function setItemsPerPage($itemsPerPage)
10950
- {
10951
- $this->itemsPerPage = $itemsPerPage;
10952
- }
10953
-
10954
- public function getItemsPerPage()
10955
- {
10956
- return $this->itemsPerPage;
10957
- }
10958
-
10959
- public function setKind($kind)
10960
- {
10961
- $this->kind = $kind;
10962
- }
10963
-
10964
- public function getKind()
10965
- {
10966
- return $this->kind;
10967
- }
10968
-
10969
- public function setNextLink($nextLink)
10970
- {
10971
- $this->nextLink = $nextLink;
10972
- }
10973
-
10974
- public function getNextLink()
10975
- {
10976
- return $this->nextLink;
10977
- }
10978
-
10979
- public function setPreviousLink($previousLink)
10980
- {
10981
- $this->previousLink = $previousLink;
10982
- }
10983
-
10984
- public function getPreviousLink()
10985
- {
10986
- return $this->previousLink;
10987
- }
10988
-
10989
- public function setStartIndex($startIndex)
10990
- {
10991
- $this->startIndex = $startIndex;
10992
- }
10993
-
10994
- public function getStartIndex()
10995
- {
10996
- return $this->startIndex;
10997
- }
10998
-
10999
- public function setTotalResults($totalResults)
11000
- {
11001
- $this->totalResults = $totalResults;
11002
- }
11003
-
11004
- public function getTotalResults()
11005
- {
11006
- return $this->totalResults;
11007
- }
11008
-
11009
- public function setUsername($username)
11010
- {
11011
- $this->username = $username;
11012
- }
11013
-
11014
- public function getUsername()
11015
- {
11016
- return $this->username;
11017
- }
11018
- }
11019
-
11020
- class Google_Service_Analytics_Upload extends Google_Collection
11021
- {
11022
-
11023
- protected $collection_key = 'errors';
11024
-
11025
- protected $internal_gapi_mappings = array();
11026
-
11027
- public $accountId;
11028
-
11029
- public $customDataSourceId;
11030
-
11031
- public $errors;
11032
-
11033
- public $id;
11034
-
11035
- public $kind;
11036
-
11037
- public $status;
11038
-
11039
- public function setAccountId($accountId)
11040
- {
11041
- $this->accountId = $accountId;
11042
- }
11043
-
11044
- public function getAccountId()
11045
- {
11046
- return $this->accountId;
11047
- }
11048
-
11049
- public function setCustomDataSourceId($customDataSourceId)
11050
- {
11051
- $this->customDataSourceId = $customDataSourceId;
11052
- }
11053
-
11054
- public function getCustomDataSourceId()
11055
- {
11056
- return $this->customDataSourceId;
11057
- }
11058
-
11059
- public function setErrors($errors)
11060
- {
11061
- $this->errors = $errors;
11062
- }
11063
-
11064
- public function getErrors()
11065
- {
11066
- return $this->errors;
11067
- }
11068
-
11069
- public function setId($id)
11070
- {
11071
- $this->id = $id;
11072
- }
11073
-
11074
- public function getId()
11075
- {
11076
- return $this->id;
11077
- }
11078
-
11079
- public function setKind($kind)
11080
- {
11081
- $this->kind = $kind;
11082
- }
11083
-
11084
- public function getKind()
11085
- {
11086
- return $this->kind;
11087
- }
11088
-
11089
- public function setStatus($status)
11090
- {
11091
- $this->status = $status;
11092
- }
11093
-
11094
- public function getStatus()
11095
- {
11096
- return $this->status;
11097
- }
11098
- }
11099
-
11100
- class Google_Service_Analytics_Uploads extends Google_Collection
11101
- {
11102
-
11103
- protected $collection_key = 'items';
11104
-
11105
- protected $internal_gapi_mappings = array();
11106
-
11107
- protected $itemsType = 'Google_Service_Analytics_Upload';
11108
-
11109
- protected $itemsDataType = 'array';
11110
-
11111
- public $itemsPerPage;
11112
-
11113
- public $kind;
11114
-
11115
- public $nextLink;
11116
-
11117
- public $previousLink;
11118
-
11119
- public $startIndex;
11120
-
11121
- public $totalResults;
11122
-
11123
- public function setItems($items)
11124
- {
11125
- $this->items = $items;
11126
- }
11127
-
11128
- public function getItems()
11129
- {
11130
- return $this->items;
11131
- }
11132
-
11133
- public function setItemsPerPage($itemsPerPage)
11134
- {
11135
- $this->itemsPerPage = $itemsPerPage;
11136
- }
11137
-
11138
- public function getItemsPerPage()
11139
- {
11140
- return $this->itemsPerPage;
11141
- }
11142
-
11143
- public function setKind($kind)
11144
- {
11145
- $this->kind = $kind;
11146
- }
11147
-
11148
- public function getKind()
11149
- {
11150
- return $this->kind;
11151
- }
11152
-
11153
- public function setNextLink($nextLink)
11154
- {
11155
- $this->nextLink = $nextLink;
11156
- }
11157
-
11158
- public function getNextLink()
11159
- {
11160
- return $this->nextLink;
11161
- }
11162
-
11163
- public function setPreviousLink($previousLink)
11164
- {
11165
- $this->previousLink = $previousLink;
11166
- }
11167
-
11168
- public function getPreviousLink()
11169
- {
11170
- return $this->previousLink;
11171
- }
11172
-
11173
- public function setStartIndex($startIndex)
11174
- {
11175
- $this->startIndex = $startIndex;
11176
- }
11177
-
11178
- public function getStartIndex()
11179
- {
11180
- return $this->startIndex;
11181
- }
11182
-
11183
- public function setTotalResults($totalResults)
11184
- {
11185
- $this->totalResults = $totalResults;
11186
- }
11187
-
11188
- public function getTotalResults()
11189
- {
11190
- return $this->totalResults;
11191
- }
11192
- }
11193
-
11194
- class Google_Service_Analytics_UserRef extends Google_Model
11195
- {
11196
-
11197
- protected $internal_gapi_mappings = array();
11198
-
11199
- public $email;
11200
-
11201
- public $id;
11202
-
11203
- public $kind;
11204
-
11205
- public function setEmail($email)
11206
- {
11207
- $this->email = $email;
11208
- }
11209
-
11210
- public function getEmail()
11211
- {
11212
- return $this->email;
11213
- }
11214
-
11215
- public function setId($id)
11216
- {
11217
- $this->id = $id;
11218
- }
11219
-
11220
- public function getId()
11221
- {
11222
- return $this->id;
11223
- }
11224
-
11225
- public function setKind($kind)
11226
- {
11227
- $this->kind = $kind;
11228
- }
11229
-
11230
- public function getKind()
11231
- {
11232
- return $this->kind;
11233
- }
11234
- }
11235
-
11236
- class Google_Service_Analytics_WebPropertyRef extends Google_Model
11237
- {
11238
-
11239
- protected $internal_gapi_mappings = array();
11240
-
11241
- public $accountId;
11242
-
11243
- public $href;
11244
-
11245
- public $id;
11246
-
11247
- public $internalWebPropertyId;
11248
-
11249
- public $kind;
11250
-
11251
- public $name;
11252
-
11253
- public function setAccountId($accountId)
11254
- {
11255
- $this->accountId = $accountId;
11256
- }
11257
-
11258
- public function getAccountId()
11259
- {
11260
- return $this->accountId;
11261
- }
11262
-
11263
- public function setHref($href)
11264
- {
11265
- $this->href = $href;
11266
- }
11267
-
11268
- public function getHref()
11269
- {
11270
- return $this->href;
11271
- }
11272
-
11273
- public function setId($id)
11274
- {
11275
- $this->id = $id;
11276
- }
11277
-
11278
- public function getId()
11279
- {
11280
- return $this->id;
11281
- }
11282
-
11283
- public function setInternalWebPropertyId($internalWebPropertyId)
11284
- {
11285
- $this->internalWebPropertyId = $internalWebPropertyId;
11286
- }
11287
-
11288
- public function getInternalWebPropertyId()
11289
- {
11290
- return $this->internalWebPropertyId;
11291
- }
11292
-
11293
- public function setKind($kind)
11294
- {
11295
- $this->kind = $kind;
11296
- }
11297
-
11298
- public function getKind()
11299
- {
11300
- return $this->kind;
11301
- }
11302
-
11303
- public function setName($name)
11304
- {
11305
- $this->name = $name;
11306
- }
11307
-
11308
- public function getName()
11309
- {
11310
- return $this->name;
11311
- }
11312
- }
11313
-
11314
- class Google_Service_Analytics_WebPropertySummary extends Google_Collection
11315
- {
11316
-
11317
- protected $collection_key = 'profiles';
11318
-
11319
- protected $internal_gapi_mappings = array();
11320
-
11321
- public $id;
11322
-
11323
- public $internalWebPropertyId;
11324
-
11325
- public $kind;
11326
-
11327
- public $level;
11328
-
11329
- public $name;
11330
-
11331
- protected $profilesType = 'Google_Service_Analytics_ProfileSummary';
11332
-
11333
- protected $profilesDataType = 'array';
11334
-
11335
- public $websiteUrl;
11336
-
11337
- public function setId($id)
11338
- {
11339
- $this->id = $id;
11340
- }
11341
-
11342
- public function getId()
11343
- {
11344
- return $this->id;
11345
- }
11346
-
11347
- public function setInternalWebPropertyId($internalWebPropertyId)
11348
- {
11349
- $this->internalWebPropertyId = $internalWebPropertyId;
11350
- }
11351
-
11352
- public function getInternalWebPropertyId()
11353
- {
11354
- return $this->internalWebPropertyId;
11355
- }
11356
-
11357
- public function setKind($kind)
11358
- {
11359
- $this->kind = $kind;
11360
- }
11361
-
11362
- public function getKind()
11363
- {
11364
- return $this->kind;
11365
- }
11366
-
11367
- public function setLevel($level)
11368
- {
11369
- $this->level = $level;
11370
- }
11371
-
11372
- public function getLevel()
11373
- {
11374
- return $this->level;
11375
- }
11376
-
11377
- public function setName($name)
11378
- {
11379
- $this->name = $name;
11380
- }
11381
-
11382
- public function getName()
11383
- {
11384
- return $this->name;
11385
- }
11386
-
11387
- public function setProfiles($profiles)
11388
- {
11389
- $this->profiles = $profiles;
11390
- }
11391
-
11392
- public function getProfiles()
11393
- {
11394
- return $this->profiles;
11395
- }
11396
-
11397
- public function setWebsiteUrl($websiteUrl)
11398
- {
11399
- $this->websiteUrl = $websiteUrl;
11400
- }
11401
-
11402
- public function getWebsiteUrl()
11403
- {
11404
- return $this->websiteUrl;
11405
- }
11406
- }
11407
-
11408
- class Google_Service_Analytics_Webproperties extends Google_Collection
11409
- {
11410
-
11411
- protected $collection_key = 'items';
11412
-
11413
- protected $internal_gapi_mappings = array();
11414
-
11415
- protected $itemsType = 'Google_Service_Analytics_Webproperty';
11416
-
11417
- protected $itemsDataType = 'array';
11418
-
11419
- public $itemsPerPage;
11420
-
11421
- public $kind;
11422
-
11423
- public $nextLink;
11424
-
11425
- public $previousLink;
11426
-
11427
- public $startIndex;
11428
-
11429
- public $totalResults;
11430
-
11431
- public $username;
11432
-
11433
- public function setItems($items)
11434
- {
11435
- $this->items = $items;
11436
- }
11437
-
11438
- public function getItems()
11439
- {
11440
- return $this->items;
11441
- }
11442
-
11443
- public function setItemsPerPage($itemsPerPage)
11444
- {
11445
- $this->itemsPerPage = $itemsPerPage;
11446
- }
11447
-
11448
- public function getItemsPerPage()
11449
- {
11450
- return $this->itemsPerPage;
11451
- }
11452
-
11453
- public function setKind($kind)
11454
- {
11455
- $this->kind = $kind;
11456
- }
11457
-
11458
- public function getKind()
11459
- {
11460
- return $this->kind;
11461
- }
11462
-
11463
- public function setNextLink($nextLink)
11464
- {
11465
- $this->nextLink = $nextLink;
11466
- }
11467
-
11468
- public function getNextLink()
11469
- {
11470
- return $this->nextLink;
11471
- }
11472
-
11473
- public function setPreviousLink($previousLink)
11474
- {
11475
- $this->previousLink = $previousLink;
11476
- }
11477
-
11478
- public function getPreviousLink()
11479
- {
11480
- return $this->previousLink;
11481
- }
11482
-
11483
- public function setStartIndex($startIndex)
11484
- {
11485
- $this->startIndex = $startIndex;
11486
- }
11487
-
11488
- public function getStartIndex()
11489
- {
11490
- return $this->startIndex;
11491
- }
11492
-
11493
- public function setTotalResults($totalResults)
11494
- {
11495
- $this->totalResults = $totalResults;
11496
- }
11497
-
11498
- public function getTotalResults()
11499
- {
11500
- return $this->totalResults;
11501
- }
11502
-
11503
- public function setUsername($username)
11504
- {
11505
- $this->username = $username;
11506
- }
11507
-
11508
- public function getUsername()
11509
- {
11510
- return $this->username;
11511
- }
11512
- }
11513
-
11514
- class Google_Service_Analytics_Webproperty extends Google_Model
11515
- {
11516
-
11517
- protected $internal_gapi_mappings = array();
11518
-
11519
- public $accountId;
11520
-
11521
- protected $childLinkType = 'Google_Service_Analytics_WebpropertyChildLink';
11522
-
11523
- protected $childLinkDataType = '';
11524
-
11525
- public $created;
11526
-
11527
- public $defaultProfileId;
11528
-
11529
- public $id;
11530
-
11531
- public $industryVertical;
11532
-
11533
- public $internalWebPropertyId;
11534
-
11535
- public $kind;
11536
-
11537
- public $level;
11538
-
11539
- public $name;
11540
-
11541
- protected $parentLinkType = 'Google_Service_Analytics_WebpropertyParentLink';
11542
-
11543
- protected $parentLinkDataType = '';
11544
-
11545
- protected $permissionsType = 'Google_Service_Analytics_WebpropertyPermissions';
11546
-
11547
- protected $permissionsDataType = '';
11548
-
11549
- public $profileCount;
11550
-
11551
- public $selfLink;
11552
-
11553
- public $updated;
11554
-
11555
- public $websiteUrl;
11556
-
11557
- public function setAccountId($accountId)
11558
- {
11559
- $this->accountId = $accountId;
11560
- }
11561
-
11562
- public function getAccountId()
11563
- {
11564
- return $this->accountId;
11565
- }
11566
-
11567
- public function setChildLink(Google_Service_Analytics_WebpropertyChildLink $childLink)
11568
- {
11569
- $this->childLink = $childLink;
11570
- }
11571
-
11572
- public function getChildLink()
11573
- {
11574
- return $this->childLink;
11575
- }
11576
-
11577
- public function setCreated($created)
11578
- {
11579
- $this->created = $created;
11580
- }
11581
-
11582
- public function getCreated()
11583
- {
11584
- return $this->created;
11585
- }
11586
-
11587
- public function setDefaultProfileId($defaultProfileId)
11588
- {
11589
- $this->defaultProfileId = $defaultProfileId;
11590
- }
11591
-
11592
- public function getDefaultProfileId()
11593
- {
11594
- return $this->defaultProfileId;
11595
- }
11596
-
11597
- public function setId($id)
11598
- {
11599
- $this->id = $id;
11600
- }
11601
-
11602
- public function getId()
11603
- {
11604
- return $this->id;
11605
- }
11606
-
11607
- public function setIndustryVertical($industryVertical)
11608
- {
11609
- $this->industryVertical = $industryVertical;
11610
- }
11611
-
11612
- public function getIndustryVertical()
11613
- {
11614
- return $this->industryVertical;
11615
- }
11616
-
11617
- public function setInternalWebPropertyId($internalWebPropertyId)
11618
- {
11619
- $this->internalWebPropertyId = $internalWebPropertyId;
11620
- }
11621
-
11622
- public function getInternalWebPropertyId()
11623
- {
11624
- return $this->internalWebPropertyId;
11625
- }
11626
-
11627
- public function setKind($kind)
11628
- {
11629
- $this->kind = $kind;
11630
- }
11631
-
11632
- public function getKind()
11633
- {
11634
- return $this->kind;
11635
- }
11636
-
11637
- public function setLevel($level)
11638
- {
11639
- $this->level = $level;
11640
- }
11641
-
11642
- public function getLevel()
11643
- {
11644
- return $this->level;
11645
- }
11646
-
11647
- public function setName($name)
11648
- {
11649
- $this->name = $name;
11650
- }
11651
-
11652
- public function getName()
11653
- {
11654
- return $this->name;
11655
- }
11656
-
11657
- public function setParentLink(Google_Service_Analytics_WebpropertyParentLink $parentLink)
11658
- {
11659
- $this->parentLink = $parentLink;
11660
- }
11661
-
11662
- public function getParentLink()
11663
- {
11664
- return $this->parentLink;
11665
- }
11666
-
11667
- public function setPermissions(Google_Service_Analytics_WebpropertyPermissions $permissions)
11668
- {
11669
- $this->permissions = $permissions;
11670
- }
11671
-
11672
- public function getPermissions()
11673
- {
11674
- return $this->permissions;
11675
- }
11676
-
11677
- public function setProfileCount($profileCount)
11678
- {
11679
- $this->profileCount = $profileCount;
11680
- }
11681
-
11682
- public function getProfileCount()
11683
- {
11684
- return $this->profileCount;
11685
- }
11686
-
11687
- public function setSelfLink($selfLink)
11688
- {
11689
- $this->selfLink = $selfLink;
11690
- }
11691
-
11692
- public function getSelfLink()
11693
- {
11694
- return $this->selfLink;
11695
- }
11696
-
11697
- public function setUpdated($updated)
11698
- {
11699
- $this->updated = $updated;
11700
- }
11701
-
11702
- public function getUpdated()
11703
- {
11704
- return $this->updated;
11705
- }
11706
-
11707
- public function setWebsiteUrl($websiteUrl)
11708
- {
11709
- $this->websiteUrl = $websiteUrl;
11710
- }
11711
-
11712
- public function getWebsiteUrl()
11713
- {
11714
- return $this->websiteUrl;
11715
- }
11716
- }
11717
-
11718
- class Google_Service_Analytics_WebpropertyChildLink extends Google_Model
11719
- {
11720
-
11721
- protected $internal_gapi_mappings = array();
11722
-
11723
- public $href;
11724
-
11725
- public $type;
11726
-
11727
- public function setHref($href)
11728
- {
11729
- $this->href = $href;
11730
- }
11731
-
11732
- public function getHref()
11733
- {
11734
- return $this->href;
11735
- }
11736
-
11737
- public function setType($type)
11738
- {
11739
- $this->type = $type;
11740
- }
11741
-
11742
- public function getType()
11743
- {
11744
- return $this->type;
11745
- }
11746
- }
11747
-
11748
- class Google_Service_Analytics_WebpropertyParentLink extends Google_Model
11749
- {
11750
-
11751
- protected $internal_gapi_mappings = array();
11752
-
11753
- public $href;
11754
-
11755
- public $type;
11756
-
11757
- public function setHref($href)
11758
- {
11759
- $this->href = $href;
11760
- }
11761
-
11762
- public function getHref()
11763
- {
11764
- return $this->href;
11765
- }
11766
-
11767
- public function setType($type)
11768
- {
11769
- $this->type = $type;
11770
- }
11771
-
11772
- public function getType()
11773
- {
11774
- return $this->type;
11775
- }
11776
- }
11777
-
11778
- class Google_Service_Analytics_WebpropertyPermissions extends Google_Collection
11779
- {
11780
-
11781
- protected $collection_key = 'effective';
11782
-
11783
- protected $internal_gapi_mappings = array();
11784
-
11785
- public $effective;
11786
-
11787
- public function setEffective($effective)
11788
- {
11789
- $this->effective = $effective;
11790
- }
11791
-
11792
- public function getEffective()
11793
- {
11794
- return $this->effective;
11795
- }
11796
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Service/Exception.php DELETED
@@ -1,49 +0,0 @@
1
- <?php
2
- require_once realpath(dirname(__FILE__) . '/../../../autoload.php');
3
-
4
- class Google_Service_Exception extends Google_Exception
5
- {
6
-
7
- /**
8
- * Optional list of errors returned in a JSON body of an HTTP error response.
9
- */
10
- protected $errors = array();
11
-
12
- /**
13
- * Override default constructor to add ability to set $errors.
14
- *
15
- * @param string $message
16
- * @param int $code
17
- * @param Exception|null $previous
18
- * @param
19
- * [{string, string}] errors List of errors returned in an HTTP
20
- * response. Defaults to [].
21
- */
22
- public function __construct($message, $code = 0, Exception $previous = null, $errors = array())
23
- {
24
- if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
25
- parent::__construct($message, $code, $previous);
26
- } else {
27
- parent::__construct($message, $code);
28
- }
29
- $this->errors = $errors;
30
- }
31
-
32
- /**
33
- * An example of the possible errors returned.
34
- *
35
- * {
36
- * "domain": "global",
37
- * "reason": "authError",
38
- * "message": "Invalid Credentials",
39
- * "locationType": "header",
40
- * "location": "Authorization",
41
- * }
42
- *
43
- * @return [{string, string}] List of errors return in an HTTP response or [].
44
- */
45
- public function getErrors()
46
- {
47
- return $this->errors;
48
- }
49
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Service/Resource.php DELETED
@@ -1,240 +0,0 @@
1
- <?php
2
- /**
3
- * Copyright 2010 Google Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- require_once realpath(dirname(__FILE__) . '/../../../autoload.php');
18
-
19
- /**
20
- * Implements the actual methods/resources of the discovered Google API using magic function
21
- * calling overloading (__call()), which on call will see if the method name (plus.activities.list)
22
- * is available in this service, and if so construct an apiHttpRequest representing it.
23
- *
24
- * @author Chris Chabot <chabotc@google.com>
25
- * @author Chirag Shah <chirags@google.com>
26
- *
27
- */
28
- class Google_Service_Resource
29
- {
30
- // Valid query parameters that work, but don't appear in discovery.
31
- private $stackParameters = array(
32
- 'alt' => array(
33
- 'type' => 'string',
34
- 'location' => 'query'
35
- ),
36
- 'fields' => array(
37
- 'type' => 'string',
38
- 'location' => 'query'
39
- ),
40
- 'trace' => array(
41
- 'type' => 'string',
42
- 'location' => 'query'
43
- ),
44
- 'userIp' => array(
45
- 'type' => 'string',
46
- 'location' => 'query'
47
- ),
48
- 'userip' => array(
49
- 'type' => 'string',
50
- 'location' => 'query'
51
- ),
52
- 'quotaUser' => array(
53
- 'type' => 'string',
54
- 'location' => 'query'
55
- ),
56
- 'data' => array(
57
- 'type' => 'string',
58
- 'location' => 'body'
59
- ),
60
- 'mimeType' => array(
61
- 'type' => 'string',
62
- 'location' => 'header'
63
- ),
64
- 'uploadType' => array(
65
- 'type' => 'string',
66
- 'location' => 'query'
67
- ),
68
- 'mediaUpload' => array(
69
- 'type' => 'complex',
70
- 'location' => 'query'
71
- )
72
- );
73
-
74
- /**
75
- *
76
- * @var Google_Service $service
77
- */
78
- private $service;
79
-
80
- /**
81
- *
82
- * @var Google_Client $client
83
- */
84
- private $client;
85
-
86
- /**
87
- *
88
- * @var string $serviceName
89
- */
90
- private $serviceName;
91
-
92
- /**
93
- *
94
- * @var string $resourceName
95
- */
96
- private $resourceName;
97
-
98
- /**
99
- *
100
- * @var array $methods
101
- */
102
- private $methods;
103
-
104
- public function __construct($service, $serviceName, $resourceName, $resource)
105
- {
106
- $this->service = $service;
107
- $this->client = $service->getClient();
108
- $this->serviceName = $serviceName;
109
- $this->resourceName = $resourceName;
110
- $this->methods = isset($resource['methods']) ? $resource['methods'] : array(
111
- $resourceName => $resource
112
- );
113
- }
114
-
115
- /**
116
- * TODO(ianbarber): This function needs simplifying.
117
- *
118
- * @param
119
- * $name
120
- * @param
121
- * $arguments
122
- * @param $expected_class -
123
- * optional, the expected class name
124
- * @return Google_Http_Request|expected_class
125
- * @throws Google_Exception
126
- */
127
- public function call($name, $arguments, $expected_class = null)
128
- {
129
- if (! isset($this->methods[$name])) {
130
- $this->client->getLogger()->error('Service method unknown', array(
131
- 'service' => $this->serviceName,
132
- 'resource' => $this->resourceName,
133
- 'method' => $name
134
- ));
135
- throw new Google_Exception("Unknown function: " . "{$this->serviceName}->{$this->resourceName}->{$name}()");
136
- }
137
- $method = $this->methods[$name];
138
- $parameters = $arguments[0];
139
- // postBody is a special case since it's not defined in the discovery
140
- // document as parameter, but we abuse the param entry for storing it.
141
- $postBody = null;
142
- if (isset($parameters['postBody'])) {
143
- if ($parameters['postBody'] instanceof Google_Model) {
144
- // In the cases the post body is an existing object, we want
145
- // to use the smart method to create a simple object for
146
- // for JSONification.
147
- $parameters['postBody'] = $parameters['postBody']->toSimpleObject();
148
- } else
149
- if (is_object($parameters['postBody'])) {
150
- // If the post body is another kind of object, we will try and
151
- // wrangle it into a sensible format.
152
- $parameters['postBody'] = $this->convertToArrayAndStripNulls($parameters['postBody']);
153
- }
154
- $postBody = json_encode($parameters['postBody']);
155
- unset($parameters['postBody']);
156
- }
157
- // TODO(ianbarber): optParams here probably should have been
158
- // handled already - this may well be redundant code.
159
- if (isset($parameters['optParams'])) {
160
- $optParams = $parameters['optParams'];
161
- unset($parameters['optParams']);
162
- $parameters = array_merge($parameters, $optParams);
163
- }
164
- if (! isset($method['parameters'])) {
165
- $method['parameters'] = array();
166
- }
167
- $method['parameters'] = array_merge($method['parameters'], $this->stackParameters);
168
- foreach ($parameters as $key => $val) {
169
- if ($key != 'postBody' && ! isset($method['parameters'][$key])) {
170
- $this->client->getLogger()->error('Service parameter unknown', array(
171
- 'service' => $this->serviceName,
172
- 'resource' => $this->resourceName,
173
- 'method' => $name,
174
- 'parameter' => $key
175
- ));
176
- throw new Google_Exception("($name) unknown parameter: '$key'");
177
- }
178
- }
179
- foreach ($method['parameters'] as $paramName => $paramSpec) {
180
- if (isset($paramSpec['required']) && $paramSpec['required'] && ! isset($parameters[$paramName])) {
181
- $this->client->getLogger()->error('Service parameter missing', array(
182
- 'service' => $this->serviceName,
183
- 'resource' => $this->resourceName,
184
- 'method' => $name,
185
- 'parameter' => $paramName
186
- ));
187
- throw new Google_Exception("($name) missing required param: '$paramName'");
188
- }
189
- if (isset($parameters[$paramName])) {
190
- $value = $parameters[$paramName];
191
- $parameters[$paramName] = $paramSpec;
192
- $parameters[$paramName]['value'] = $value;
193
- unset($parameters[$paramName]['required']);
194
- } else {
195
- // Ensure we don't pass nulls.
196
- unset($parameters[$paramName]);
197
- }
198
- }
199
- $servicePath = $this->service->servicePath;
200
- $this->client->getLogger()->info('Service Call', array(
201
- 'service' => $this->serviceName,
202
- 'resource' => $this->resourceName,
203
- 'method' => $name,
204
- 'arguments' => $parameters
205
- ));
206
- $url = Google_Http_REST::createRequestUri($servicePath, $method['path'], $parameters);
207
- $httpRequest = new Google_Http_Request($url, $method['httpMethod'], null, $postBody);
208
- $httpRequest->setBaseComponent($this->client->getBasePath());
209
- if ($postBody) {
210
- $contentTypeHeader = array();
211
- $contentTypeHeader['content-type'] = 'application/json; charset=UTF-8';
212
- $httpRequest->setRequestHeaders($contentTypeHeader);
213
- $httpRequest->setPostBody($postBody);
214
- }
215
- $httpRequest = $this->client->getAuth()->sign($httpRequest);
216
- $httpRequest->setExpectedClass($expected_class);
217
- if (isset($parameters['data']) && ($parameters['uploadType']['value'] == 'media' || $parameters['uploadType']['value'] == 'multipart')) {
218
- // If we are doing a simple media upload, trigger that as a convenience.
219
- $mfu = new Google_Http_MediaFileUpload($this->client, $httpRequest, isset($parameters['mimeType']) ? $parameters['mimeType']['value'] : 'application/octet-stream', $parameters['data']['value']);
220
- }
221
- if ($this->client->shouldDefer()) {
222
- // If we are in batch or upload mode, return the raw request.
223
- return $httpRequest;
224
- }
225
- return $this->client->execute($httpRequest);
226
- }
227
-
228
- protected function convertToArrayAndStripNulls($o)
229
- {
230
- $o = (array) $o;
231
- foreach ($o as $k => $v) {
232
- if ($v === null) {
233
- unset($o[$k]);
234
- } elseif (is_object($v) || is_array($v)) {
235
- $o[$k] = $this->convertToArrayAndStripNulls($o[$k]);
236
- }
237
- }
238
- return $o;
239
- }
240
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Signer/P12.php DELETED
@@ -1,78 +0,0 @@
1
- <?php
2
- /*
3
- * Copyright 2011 Google Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- require_once realpath(dirname(__FILE__) . '/../../../autoload.php');
18
-
19
- /**
20
- * Signs data.
21
- *
22
- * Only used for testing.
23
- *
24
- * @author Brian Eaton <beaton@google.com>
25
- */
26
- class Google_Signer_P12 extends Google_Signer_Abstract
27
- {
28
- // OpenSSL private key resource
29
- private $privateKey;
30
- // Creates a new signer from a .p12 file.
31
- public function __construct($p12, $password)
32
- {
33
- if (! function_exists('openssl_x509_read')) {
34
- throw new Google_Exception('The Google PHP API library needs the openssl PHP extension');
35
- }
36
- // If the private key is provided directly, then this isn't in the p12
37
- // format. Different versions of openssl support different p12 formats
38
- // and the key from google wasn't being accepted by the version available
39
- // at the time.
40
- if (! $password && strpos($p12, "-----BEGIN RSA PRIVATE KEY-----") !== false) {
41
- $this->privateKey = openssl_pkey_get_private($p12);
42
- } else {
43
- // This throws on error
44
- $certs = array();
45
- if (! openssl_pkcs12_read($p12, $certs, $password)) {
46
- throw new Google_Auth_Exception("Unable to parse the p12 file. " . "Is this a .p12 file? Is the password correct? OpenSSL error: " . openssl_error_string());
47
- }
48
- // TODO(beaton): is this part of the contract for the openssl_pkcs12_read
49
- // method? What happens if there are multiple private keys? Do we care?
50
- if (! array_key_exists("pkey", $certs) || ! $certs["pkey"]) {
51
- throw new Google_Auth_Exception("No private key found in p12 file.");
52
- }
53
- $this->privateKey = openssl_pkey_get_private($certs['pkey']);
54
- }
55
- if (! $this->privateKey) {
56
- throw new Google_Auth_Exception("Unable to load private key");
57
- }
58
- }
59
-
60
- public function __destruct()
61
- {
62
- if ($this->privateKey) {
63
- openssl_pkey_free($this->privateKey);
64
- }
65
- }
66
-
67
- public function sign($data)
68
- {
69
- if (version_compare(PHP_VERSION, '5.3.0') < 0) {
70
- throw new Google_Auth_Exception("PHP 5.3.0 or higher is required to use service accounts.");
71
- }
72
- $hash = defined("OPENSSL_ALGO_SHA256") ? OPENSSL_ALGO_SHA256 : "sha256";
73
- if (! openssl_sign($data, $signature, $this->privateKey, $hash)) {
74
- throw new Google_Auth_Exception("Unable to sign data");
75
- }
76
- return $signature;
77
- }
78
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Utils.php DELETED
@@ -1,147 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * Copyright 2011 Google Inc.
5
- *
6
- * Licensed under the Apache License, Version 2.0 (the "License");
7
- * you may not use this file except in compliance with the License.
8
- * You may obtain a copy of the License at
9
- *
10
- * http://www.apache.org/licenses/LICENSE-2.0
11
- *
12
- * Unless required by applicable law or agreed to in writing, software
13
- * distributed under the License is distributed on an "AS IS" BASIS,
14
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- * See the License for the specific language governing permissions and
16
- * limitations under the License.
17
- */
18
- /**
19
- * Collection of static utility methods used for convenience across
20
- * the client library.
21
- *
22
- * @author Chirag Shah <chirags@google.com>
23
- */
24
- class Google_Utils
25
- {
26
-
27
- public static function urlSafeB64Encode($data)
28
- {
29
- $b64 = base64_encode($data);
30
- $b64 = str_replace(array(
31
- '+',
32
- '/',
33
- '\r',
34
- '\n',
35
- '='
36
- ), array(
37
- '-',
38
- '_'
39
- ), $b64);
40
- return $b64;
41
- }
42
-
43
- public static function urlSafeB64Decode($b64)
44
- {
45
- $b64 = str_replace(array(
46
- '-',
47
- '_'
48
- ), array(
49
- '+',
50
- '/'
51
- ), $b64);
52
- return base64_decode($b64);
53
- }
54
-
55
- /**
56
- * Misc function used to count the number of bytes in a post body, in the
57
- * world of multi-byte chars and the unpredictability of
58
- * strlen/mb_strlen/sizeof, this is the only way to do that in a sane
59
- * manner at the moment.
60
- *
61
- * This algorithm was originally developed for the
62
- * Solar Framework by Paul M. Jones
63
- *
64
- * @link http://solarphp.com/
65
- * @link http://svn.solarphp.com/core/trunk/Solar/Json.php
66
- * @link http://framework.zend.com/svn/framework/standard/trunk/library/Zend/Json/Decoder.php
67
- * @param string $str
68
- * @return int The number of bytes in a string.
69
- */
70
- public static function getStrLen($str)
71
- {
72
- $strlenVar = strlen($str);
73
- $d = $ret = 0;
74
- for ($count = 0; $count < $strlenVar; ++ $count) {
75
- $ordinalValue = ord($str{$ret});
76
- switch (true) {
77
- case (($ordinalValue >= 0x20) && ($ordinalValue <= 0x7F)):
78
- // characters U-00000000 - U-0000007F (same as ASCII)
79
- $ret ++;
80
- break;
81
- case (($ordinalValue & 0xE0) == 0xC0):
82
- // characters U-00000080 - U-000007FF, mask 110XXXXX
83
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
84
- $ret += 2;
85
- break;
86
- case (($ordinalValue & 0xF0) == 0xE0):
87
- // characters U-00000800 - U-0000FFFF, mask 1110XXXX
88
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
89
- $ret += 3;
90
- break;
91
- case (($ordinalValue & 0xF8) == 0xF0):
92
- // characters U-00010000 - U-001FFFFF, mask 11110XXX
93
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
94
- $ret += 4;
95
- break;
96
- case (($ordinalValue & 0xFC) == 0xF8):
97
- // characters U-00200000 - U-03FFFFFF, mask 111110XX
98
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
99
- $ret += 5;
100
- break;
101
- case (($ordinalValue & 0xFE) == 0xFC):
102
- // characters U-04000000 - U-7FFFFFFF, mask 1111110X
103
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
104
- $ret += 6;
105
- break;
106
- default:
107
- $ret ++;
108
- }
109
- }
110
- return $ret;
111
- }
112
-
113
- /**
114
- * Normalize all keys in an array to lower-case.
115
- *
116
- * @param array $arr
117
- * @return array Normalized array.
118
- */
119
- public static function normalize($arr)
120
- {
121
- if (! is_array($arr)) {
122
- return array();
123
- }
124
- $normalized = array();
125
- foreach ($arr as $key => $val) {
126
- $normalized[strtolower($key)] = $val;
127
- }
128
- return $normalized;
129
- }
130
-
131
- /**
132
- * Convert a string to camelCase
133
- *
134
- * @param string $value
135
- * @return string
136
- */
137
- public static function camelCase($value)
138
- {
139
- $value = ucwords(str_replace(array(
140
- '-',
141
- '_'
142
- ), ' ', $value));
143
- $value = str_replace(' ', '', $value);
144
- $value[0] = strtolower($value[0]);
145
- return $value;
146
- }
147
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Utils/URITemplate.php DELETED
@@ -1,320 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * Copyright 2013 Google Inc.
5
- *
6
- * Licensed under the Apache License, Version 2.0 (the "License");
7
- * you may not use this file except in compliance with the License.
8
- * You may obtain a copy of the License at
9
- *
10
- * http://www.apache.org/licenses/LICENSE-2.0
11
- *
12
- * Unless required by applicable law or agreed to in writing, software
13
- * distributed under the License is distributed on an "AS IS" BASIS,
14
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- * See the License for the specific language governing permissions and
16
- * limitations under the License.
17
- */
18
- /**
19
- * Implementation of levels 1-3 of the URI Template spec.
20
- *
21
- * @see http://tools.ietf.org/html/rfc6570
22
- */
23
- class Google_Utils_URITemplate
24
- {
25
-
26
- const TYPE_MAP = "1";
27
-
28
- const TYPE_LIST = "2";
29
-
30
- const TYPE_SCALAR = "4";
31
-
32
- /**
33
- *
34
- * @var $operators array
35
- * These are valid at the start of a template block to
36
- * modify the way in which the variables inside are
37
- * processed.
38
- */
39
- private $operators = array(
40
- "+" => "reserved",
41
- "/" => "segments",
42
- "." => "dotprefix",
43
- "#" => "fragment",
44
- ";" => "semicolon",
45
- "?" => "form",
46
- "&" => "continuation"
47
- );
48
-
49
- /**
50
- *
51
- * @var reserved array
52
- * These are the characters which should not be URL encoded in reserved
53
- * strings.
54
- */
55
- private $reserved = array(
56
- "=",
57
- ",",
58
- "!",
59
- "@",
60
- "|",
61
- ":",
62
- "/",
63
- "?",
64
- "#",
65
- "[",
66
- "]",
67
- '$',
68
- "&",
69
- "'",
70
- "(",
71
- ")",
72
- "*",
73
- "+",
74
- ";"
75
- );
76
-
77
- private $reservedEncoded = array(
78
- "%3D",
79
- "%2C",
80
- "%21",
81
- "%40",
82
- "%7C",
83
- "%3A",
84
- "%2F",
85
- "%3F",
86
- "%23",
87
- "%5B",
88
- "%5D",
89
- "%24",
90
- "%26",
91
- "%27",
92
- "%28",
93
- "%29",
94
- "%2A",
95
- "%2B",
96
- "%3B"
97
- );
98
-
99
- public function parse($string, array $parameters)
100
- {
101
- return $this->resolveNextSection($string, $parameters);
102
- }
103
-
104
- /**
105
- * This function finds the first matching {...} block and
106
- * executes the replacement.
107
- * It then calls itself to find
108
- * subsequent blocks, if any.
109
- */
110
- private function resolveNextSection($string, $parameters)
111
- {
112
- $start = strpos($string, "{");
113
- if ($start === false) {
114
- return $string;
115
- }
116
- $end = strpos($string, "}");
117
- if ($end === false) {
118
- return $string;
119
- }
120
- $string = $this->replace($string, $start, $end, $parameters);
121
- return $this->resolveNextSection($string, $parameters);
122
- }
123
-
124
- private function replace($string, $start, $end, $parameters)
125
- {
126
- // We know a data block will have {} round it, so we can strip that.
127
- $data = substr($string, $start + 1, $end - $start - 1);
128
- // If the first character is one of the reserved operators, it effects
129
- // the processing of the stream.
130
- if (isset($this->operators[$data[0]])) {
131
- $op = $this->operators[$data[0]];
132
- $data = substr($data, 1);
133
- $prefix = "";
134
- $prefix_on_missing = false;
135
- switch ($op) {
136
- case "reserved":
137
- // Reserved means certain characters should not be URL encoded
138
- $data = $this->replaceVars($data, $parameters, ",", null, true);
139
- break;
140
- case "fragment":
141
- // Comma separated with fragment prefix. Bare values only.
142
- $prefix = "#";
143
- $prefix_on_missing = true;
144
- $data = $this->replaceVars($data, $parameters, ",", null, true);
145
- break;
146
- case "segments":
147
- // Slash separated data. Bare values only.
148
- $prefix = "/";
149
- $data = $this->replaceVars($data, $parameters, "/");
150
- break;
151
- case "dotprefix":
152
- // Dot separated data. Bare values only.
153
- $prefix = ".";
154
- $prefix_on_missing = true;
155
- $data = $this->replaceVars($data, $parameters, ".");
156
- break;
157
- case "semicolon":
158
- // Semicolon prefixed and separated. Uses the key name
159
- $prefix = ";";
160
- $data = $this->replaceVars($data, $parameters, ";", "=", false, true, false);
161
- break;
162
- case "form":
163
- // Standard URL format. Uses the key name
164
- $prefix = "?";
165
- $data = $this->replaceVars($data, $parameters, "&", "=");
166
- break;
167
- case "continuation":
168
- // Standard URL, but with leading ampersand. Uses key name.
169
- $prefix = "&";
170
- $data = $this->replaceVars($data, $parameters, "&", "=");
171
- break;
172
- }
173
- // Add the initial prefix character if data is valid.
174
- if ($data || ($data !== false && $prefix_on_missing)) {
175
- $data = $prefix . $data;
176
- }
177
- } else {
178
- // If no operator we replace with the defaults.
179
- $data = $this->replaceVars($data, $parameters);
180
- }
181
- // This is chops out the {...} and replaces with the new section.
182
- return substr($string, 0, $start) . $data . substr($string, $end + 1);
183
- }
184
-
185
- private function replaceVars($section, $parameters, $sep = ",", $combine = null, $reserved = false, $tag_empty = false, $combine_on_empty = true)
186
- {
187
- if (strpos($section, ",") === false) {
188
- // If we only have a single value, we can immediately process.
189
- return $this->combine($section, $parameters, $sep, $combine, $reserved, $tag_empty, $combine_on_empty);
190
- } else {
191
- // If we have multiple values, we need to split and loop over them.
192
- // Each is treated individually, then glued together with the
193
- // separator character.
194
- $vars = explode(",", $section);
195
- return $this->combineList($vars, $sep, $parameters, $combine, $reserved, false, // Never emit empty strings in multi-param replacements
196
- $combine_on_empty);
197
- }
198
- }
199
-
200
- public function combine($key, $parameters, $sep, $combine, $reserved, $tag_empty, $combine_on_empty)
201
- {
202
- $length = false;
203
- $explode = false;
204
- $skip_final_combine = false;
205
- $value = false;
206
- // Check for length restriction.
207
- if (strpos($key, ":") !== false) {
208
- list ($key, $length) = explode(":", $key);
209
- }
210
- // Check for explode parameter.
211
- if ($key[strlen($key) - 1] == "*") {
212
- $explode = true;
213
- $key = substr($key, 0, - 1);
214
- $skip_final_combine = true;
215
- }
216
- // Define the list separator.
217
- $list_sep = $explode ? $sep : ",";
218
- if (isset($parameters[$key])) {
219
- $data_type = $this->getDataType($parameters[$key]);
220
- switch ($data_type) {
221
- case self::TYPE_SCALAR:
222
- $value = $this->getValue($parameters[$key], $length);
223
- break;
224
- case self::TYPE_LIST:
225
- $values = array();
226
- foreach ($parameters[$key] as $pkey => $pvalue) {
227
- $pvalue = $this->getValue($pvalue, $length);
228
- if ($combine && $explode) {
229
- $values[$pkey] = $key . $combine . $pvalue;
230
- } else {
231
- $values[$pkey] = $pvalue;
232
- }
233
- }
234
- $value = implode($list_sep, $values);
235
- if ($value == '') {
236
- return '';
237
- }
238
- break;
239
- case self::TYPE_MAP:
240
- $values = array();
241
- foreach ($parameters[$key] as $pkey => $pvalue) {
242
- $pvalue = $this->getValue($pvalue, $length);
243
- if ($explode) {
244
- $pkey = $this->getValue($pkey, $length);
245
- $values[] = $pkey . "=" . $pvalue; // Explode triggers = combine.
246
- } else {
247
- $values[] = $pkey;
248
- $values[] = $pvalue;
249
- }
250
- }
251
- $value = implode($list_sep, $values);
252
- if ($value == '') {
253
- return false;
254
- }
255
- break;
256
- }
257
- } else
258
- if ($tag_empty) {
259
- // If we are just indicating empty values with their key name, return that.
260
- return $key;
261
- } else {
262
- // Otherwise we can skip this variable due to not being defined.
263
- return false;
264
- }
265
- if ($reserved) {
266
- $value = str_replace($this->reservedEncoded, $this->reserved, $value);
267
- }
268
- // If we do not need to include the key name, we just return the raw
269
- // value.
270
- if (! $combine || $skip_final_combine) {
271
- return $value;
272
- }
273
- // Else we combine the key name: foo=bar, if value is not the empty string.
274
- return $key . ($value != '' || $combine_on_empty ? $combine . $value : '');
275
- }
276
-
277
- /**
278
- * Return the type of a passed in value
279
- */
280
- private function getDataType($data)
281
- {
282
- if (is_array($data)) {
283
- reset($data);
284
- if (key($data) !== 0) {
285
- return self::TYPE_MAP;
286
- }
287
- return self::TYPE_LIST;
288
- }
289
- return self::TYPE_SCALAR;
290
- }
291
-
292
- /**
293
- * Utility function that merges multiple combine calls
294
- * for multi-key templates.
295
- */
296
- private function combineList($vars, $sep, $parameters, $combine, $reserved, $tag_empty, $combine_on_empty)
297
- {
298
- $ret = array();
299
- foreach ($vars as $var) {
300
- $response = $this->combine($var, $parameters, $sep, $combine, $reserved, $tag_empty, $combine_on_empty);
301
- if ($response === false) {
302
- continue;
303
- }
304
- $ret[] = $response;
305
- }
306
- return implode($sep, $ret);
307
- }
308
-
309
- /**
310
- * Utility function to encode and trim values
311
- */
312
- private function getValue($value, $length)
313
- {
314
- if ($length) {
315
- $value = substr($value, 0, $length);
316
- }
317
- $value = rawurlencode($value);
318
- return $value;
319
- }
320
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/SrcGoogle/Google/Verifier/Pem.php DELETED
@@ -1,78 +0,0 @@
1
- <?php
2
- /*
3
- * Copyright 2011 Google Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- require_once realpath(dirname(__FILE__) . '/../../../autoload.php');
18
-
19
- /**
20
- * Verifies signatures using PEM encoded certificates.
21
- *
22
- * @author Brian Eaton <beaton@google.com>
23
- */
24
- class Google_Verifier_Pem extends Google_Verifier_Abstract
25
- {
26
-
27
- private $publicKey;
28
-
29
- /**
30
- * Constructs a verifier from the supplied PEM-encoded certificate.
31
- *
32
- * $pem: a PEM encoded certificate (not a file).
33
- *
34
- * @param
35
- * $pem
36
- * @throws Google_Auth_Exception
37
- * @throws Google_Exception
38
- */
39
- public function __construct($pem)
40
- {
41
- if (! function_exists('openssl_x509_read')) {
42
- throw new Google_Exception('Google API PHP client needs the openssl PHP extension');
43
- }
44
- $this->publicKey = openssl_x509_read($pem);
45
- if (! $this->publicKey) {
46
- throw new Google_Auth_Exception("Unable to parse PEM: $pem");
47
- }
48
- }
49
-
50
- public function __destruct()
51
- {
52
- if ($this->publicKey) {
53
- openssl_x509_free($this->publicKey);
54
- }
55
- }
56
-
57
- /**
58
- * Verifies the signature on data.
59
- *
60
- * Returns true if the signature is valid, false otherwise.
61
- *
62
- * @param
63
- * $data
64
- * @param
65
- * $signature
66
- * @throws Google_Auth_Exception
67
- * @return bool
68
- */
69
- public function verify($data, $signature)
70
- {
71
- $hash = defined("OPENSSL_ALGO_SHA256") ? OPENSSL_ALGO_SHA256 : "sha256";
72
- $status = openssl_verify($data, $signature, $this->publicKey, $hash);
73
- if ($status === - 1) {
74
- throw new Google_Auth_Exception('Signature verification error: ' . openssl_error_string());
75
- }
76
- return $status === 1;
77
- }
78
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/autoload.php DELETED
@@ -1,46 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * Copyright 2014 Google Inc.
5
- *
6
- * Licensed under the Apache License, Version 2.0 (the "License");
7
- * you may not use this file except in compliance with the License.
8
- * You may obtain a copy of the License at
9
- *
10
- * http://www.apache.org/licenses/LICENSE-2.0
11
- *
12
- * Unless required by applicable law or agreed to in writing, software
13
- * distributed under the License is distributed on an "AS IS" BASIS,
14
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- * See the License for the specific language governing permissions and
16
- * limitations under the License.
17
- */
18
- /* Prohibit direct script loading */
19
- defined('ABSPATH') || die('No direct script access allowed!');
20
- if (!function_exists('google_api_php_client_autoload')) {
21
-
22
- /**
23
- * Auto include class
24
- *
25
- * @param string $className Class name
26
- *
27
- * @return void
28
- */
29
- function google_api_php_client_autoload($className)
30
- {
31
- $classPath = explode('_', $className);
32
- if ($classPath[0] !== 'Google') {
33
- return;
34
- }
35
- if (count($classPath) > 3) {
36
- // Maximum class file path depth in this project is 3.
37
- $classPath = array_slice($classPath, 0, 3);
38
- }
39
- $filePath = dirname(__FILE__) . '/SrcGoogle/' . implode('/', $classPath) . '.php';
40
- if (file_exists($filePath)) {
41
- require_once($filePath);
42
- }
43
- }
44
-
45
- spl_autoload_register('google_api_php_client_autoload', true, true);
46
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/class.metaseo-admin.php CHANGED
@@ -222,15 +222,22 @@ class MetaSeoAdmin
222
  public function categoryField()
223
  {
224
  wp_enqueue_style(
225
- 'm-style-qtip',
226
- plugins_url('assets/css/jquery.qtip.css', dirname(__FILE__)),
227
  array(),
228
  WPMSEO_VERSION
229
  );
230
 
231
  wp_enqueue_script(
232
- 'jquery-qtip',
233
- plugins_url('assets/js/jquery.qtip.min.js', dirname(__FILE__)),
 
 
 
 
 
 
 
234
  array('jquery'),
235
  '2.2.1',
236
  true
@@ -241,7 +248,7 @@ class MetaSeoAdmin
241
  ?>
242
  <div class="form-field">
243
  <label class="wpms_custom_cat_field"
244
- data-alt="<?php esc_attr_e('This is the title of your content that may be displayed in search engine
245
  results (meta title). By default it’s the content title (page title, post title…).
246
  69 characters max allowed.', 'wp-meta-seo') ?>">
247
  <?php esc_html_e('Search engine title', 'wp-meta-seo'); ?>
@@ -259,7 +266,7 @@ class MetaSeoAdmin
259
  ?>
260
  <div class="form-field" style="margin-top: 20px;margin-bottom: 20px;">
261
  <label class="wpms_custom_cat_field"
262
- data-alt="<?php esc_attr_e('This is the keywords of your content that may be
263
  displayed in search engine results (meta keywords).', 'wp-meta-seo') ?>">
264
  <?php esc_html_e('Search engine keywords', 'wp-meta-seo'); ?>
265
  </label>
@@ -271,7 +278,7 @@ class MetaSeoAdmin
271
  <?php endif; ?>
272
  <div class="form-field" style="margin-top: 20px;margin-bottom: 20px;">
273
  <label for="extra1" class="wpms_custom_cat_field"
274
- data-alt="<?php esc_attr_e('This is the title of your content that may be displayed in search
275
  engine results (meta title). By default it’s the content title (page title, post title…).
276
  69 characters max allowed.', 'wp-meta-seo') ?>">
277
  <?php esc_html_e('Search engine description', 'wp-meta-seo'); ?>
@@ -286,7 +293,7 @@ class MetaSeoAdmin
286
  if (isset($settings['metaseo_canonical']) && (int) $settings['metaseo_canonical'] === 1) : ?>
287
  <div class="form-field" style="margin-top: 20px;margin-bottom: 20px;">
288
  <label class="wpms_custom_cat_field"
289
- data-alt="<?php esc_attr_e('Put the canonical URL which this page should point to. By default, it\'s the permalink', 'wp-meta-seo') ?>">
290
  <?php esc_html_e('Canonical URL', 'wp-meta-seo'); ?>
291
  </label>
292
  <label>
@@ -352,14 +359,21 @@ class MetaSeoAdmin
352
  public function editCategoryFields($tag)
353
  {
354
  wp_enqueue_style(
355
- 'm-style-qtip',
356
- plugins_url('assets/css/jquery.qtip.css', dirname(__FILE__)),
357
  array(),
358
  WPMSEO_VERSION
359
  );
360
  wp_enqueue_script(
361
- 'jquery-qtip',
362
- plugins_url('assets/js/jquery.qtip.min.js', dirname(__FILE__)),
 
 
 
 
 
 
 
363
  array('jquery'),
364
  '2.2.1',
365
  true
@@ -376,7 +390,7 @@ class MetaSeoAdmin
376
  ?>
377
  <tr class="form-field">
378
  <th scope="row" valign="top">
379
- <label class="wpms_custom_cat_field" data-alt="<?php esc_attr_e('This is the title of your content that may
380
  be displayed in search engine results (meta title). By default it’s the content title
381
  (page title, post title…).69 characters max allowed.', 'wp-meta-seo') ?>">
382
  <?php esc_html_e('Search engine title', 'wp-meta-seo'); ?>
@@ -408,7 +422,7 @@ class MetaSeoAdmin
408
  <tr class="form-field">
409
  <th scope="row" valign="top">
410
  <label for="extra1" class="wpms_custom_cat_field"
411
- data-alt="<?php esc_attr_e('This is the keywords of your content that may be
412
  displayed in search engine results (meta keywords).', 'wp-meta-seo') ?>">
413
  <?php esc_html_e('Search engine keywords', 'wp-meta-seo'); ?>
414
  </label>
@@ -436,7 +450,7 @@ class MetaSeoAdmin
436
  <tr class="form-field">
437
  <th scope="row" valign="top">
438
  <label for="extra1" class="wpms_custom_cat_field"
439
- data-alt="<?php esc_attr_e('This is the title of your content that may be displayed in
440
  search engine results (meta title). By default it’s the content title (page title, post title…).
441
  69 characters max allowed.', 'wp-meta-seo') ?>">
442
  <?php esc_html_e('Search engine description', 'wp-meta-seo'); ?>
@@ -464,7 +478,7 @@ class MetaSeoAdmin
464
  <tr class="form-field">
465
  <th scope="row" valign="top">
466
  <label for="extra1" class="wpms_custom_cat_field"
467
- data-alt="<?php esc_attr_e('Put the canonical URL which this page should point to. By default, it\'s the permalink', 'wp-meta-seo') ?>">
468
  <?php esc_html_e('Canonical URL', 'wp-meta-seo'); ?>
469
  </label>
470
  </th>
@@ -492,14 +506,21 @@ class MetaSeoAdmin
492
  public function dashboardWidget()
493
  {
494
  wp_enqueue_style(
495
- 'm-style-qtip',
496
- plugins_url('assets/css/jquery.qtip.css', dirname(__FILE__)),
497
  array(),
498
  WPMSEO_VERSION
499
  );
500
  wp_enqueue_script(
501
- 'jquery-qtip',
502
- plugins_url('assets/js/jquery.qtip.min.js', dirname(__FILE__)),
 
 
 
 
 
 
 
503
  array('jquery'),
504
  '2.2.1',
505
  true
@@ -511,7 +532,7 @@ class MetaSeoAdmin
511
  array('jquery'),
512
  WPMSEO_VERSION
513
  );
514
- wp_enqueue_style('wpms-myqtip');
515
  require_once(WPMETASEO_PLUGIN_DIR . 'inc/pages/dashboard_widgets.php');
516
  }
517
 
@@ -894,7 +915,7 @@ class MetaSeoAdmin
894
  */
895
  public function createFieldAnalysis($data_title, $alt, $dashicon, $label, $value_hidden)
896
  {
897
- $output = '<div class="metaseo_analysis metaseo_tool" data-title="' . esc_attr($data_title) . '" data-alt="' . esc_attr($alt) . '">';
898
  if ($dashicon === 'done') {
899
  $output .= '<i class="metaseo-dashicons material-icons dashicons-before icons-mboxdone">done</i>';
900
  } else {
@@ -2627,36 +2648,46 @@ class MetaSeoAdmin
2627
  WPMSEO_VERSION,
2628
  true
2629
  );
 
2630
  wp_register_style(
2631
- 'm-style-qtip',
2632
- plugins_url('assets/css/jquery.qtip.css', dirname(__FILE__)),
2633
  array(),
2634
  WPMSEO_VERSION
2635
  );
2636
 
2637
  wp_register_script(
2638
- 'jquery-qtip',
2639
- plugins_url('assets/js/jquery.qtip.min.js', dirname(__FILE__)),
 
 
 
 
 
 
 
 
2640
  array('jquery'),
2641
  '2.2.1',
2642
  true
2643
  );
2644
 
2645
  wp_register_script(
2646
- 'my-qtips-js',
2647
- plugins_url('assets/js/my-qtips.js', dirname(__FILE__)),
2648
  array('jquery'),
2649
  WPMSEO_VERSION,
2650
  true
2651
  );
2652
 
2653
  wp_enqueue_style(
2654
- 'wpms-myqtip',
2655
- plugins_url('assets/css/my_qtip.css', dirname(__FILE__)),
2656
  array(),
2657
  WPMSEO_VERSION
2658
  );
2659
 
 
2660
  wp_register_script(
2661
  'wpms-broken-link',
2662
  plugins_url('assets/js/wpms-broken-link.js', dirname(__FILE__)),
@@ -2813,7 +2844,7 @@ class MetaSeoAdmin
2813
  }
2814
 
2815
  // Add intro text on each wpms topic
2816
- $qtip_pages = array(
2817
  'wp-meta-seo_page_metaseo_content_meta',
2818
  'wp-meta-seo_page_metaseo_image_meta',
2819
  'wp-meta-seo_page_metaseo_google_sitemap',
@@ -2822,10 +2853,11 @@ class MetaSeoAdmin
2822
  'wp-meta-seo_page_metaseo_google_analytics',
2823
  'wp-meta-seo_page_metaseo_sendemail'
2824
  );
2825
- if (in_array($current_screen->base, $qtip_pages)) {
2826
- wp_enqueue_style('m-style-qtip');
2827
- wp_enqueue_script('jquery-qtip');
2828
- wp_enqueue_script('my-qtips-js');
 
2829
  }
2830
 
2831
  if (is_plugin_active(WPMSEO_ADDON_FILENAME)) {
@@ -3712,8 +3744,9 @@ class MetaSeoAdmin
3712
  }
3713
  include_once(WPMETASEO_PLUGIN_DIR . 'inc/google_analytics/wpmstools.php');
3714
  include_once(WPMETASEO_PLUGIN_DIR . 'inc/google_analytics/wpmsgapi.php');
3715
- wp_enqueue_style('m-style-qtip');
3716
- wp_enqueue_script('jquery-qtip');
 
3717
  if (isset($_GET['view']) && $_GET['view'] === 'wpmsga_trackcode') {
3718
  wp_enqueue_style('wpms-backend-tracking-code');
3719
  include_once(WPMETASEO_PLUGIN_DIR . 'inc/pages/google-analytics/ga-trackcode.php');
@@ -3729,10 +3762,8 @@ class MetaSeoAdmin
3729
  update_option('wpms_google_alanytics', $this->google_alanytics);
3730
  }
3731
 
3732
- require_once 'autoload.php';
3733
- $config = new Google_Config();
3734
- $config->setCacheClass('Google_Cache_Null');
3735
- $this->client = new Google_Client($config);
3736
  $this->client->setScopes('https://www.googleapis.com/auth/analytics.readonly');
3737
  $this->client->setAccessType('offline');
3738
  $this->client->setApplicationName('WP Meta SEO');
@@ -3850,7 +3881,7 @@ class MetaSeoAdmin
3850
  echo '<div>';
3851
  require_once(WPMETASEO_PLUGIN_DIR . 'inc/pages/google-analytics/menu.php');
3852
  echo '<h1 class="wpms-top-h1">' . esc_html__('Google Analytics Settings', 'wp-meta-seo') . '
3853
- <i class="material-icons intro-topic-tooltip" data-alt="'.esc_html__('Create a Google Analytics property then connect WordPress to this Analytics property. You can then follow your traffic and include the data in your Email report (Pro Addon)', 'wp-meta-seo').'">help_outline</i>
3854
  </h1>';
3855
  echo '<div id="wpms-window-1"></div>';
3856
  echo '</div>';
@@ -4375,10 +4406,9 @@ class MetaSeoAdmin
4375
 
4376
  require_once WPMETASEO_PLUGIN_DIR . 'inc/google_analytics/wpmstools.php';
4377
  require_once WPMETASEO_PLUGIN_DIR . 'inc/google_analytics/wpmsgapi.php';
4378
- require_once WPMETASEO_PLUGIN_DIR . 'inc/autoload.php';
4379
- $config = new Google_Config();
4380
- $config->setCacheClass('Google_Cache_Null');
4381
- $client = new Google_Client($config);
4382
  $client->setScopes('https://www.googleapis.com/auth/analytics.readonly');
4383
  $client->setAccessType('offline');
4384
  $client->setApplicationName('WP Meta SEO');
222
  public function categoryField()
223
  {
224
  wp_enqueue_style(
225
+ 'wpms-tippy-style',
226
+ plugins_url('assets/tippy/tippy.css', dirname(__FILE__)),
227
  array(),
228
  WPMSEO_VERSION
229
  );
230
 
231
  wp_enqueue_script(
232
+ 'wpms-tippy',
233
+ plugins_url('assets/tippy/tippy.js', dirname(__FILE__)),
234
+ array('jquery'),
235
+ '2.2.1',
236
+ true
237
+ );
238
+ wp_enqueue_script(
239
+ 'wpms-tippy-core',
240
+ plugins_url('assets/tippy/tippy-core.js', dirname(__FILE__)),
241
  array('jquery'),
242
  '2.2.1',
243
  true
248
  ?>
249
  <div class="form-field">
250
  <label class="wpms_custom_cat_field"
251
+ data-tippy="<?php esc_attr_e('This is the title of your content that may be displayed in search engine
252
  results (meta title). By default it’s the content title (page title, post title…).
253
  69 characters max allowed.', 'wp-meta-seo') ?>">
254
  <?php esc_html_e('Search engine title', 'wp-meta-seo'); ?>
266
  ?>
267
  <div class="form-field" style="margin-top: 20px;margin-bottom: 20px;">
268
  <label class="wpms_custom_cat_field"
269
+ data-tippy="<?php esc_attr_e('This is the keywords of your content that may be
270
  displayed in search engine results (meta keywords).', 'wp-meta-seo') ?>">
271
  <?php esc_html_e('Search engine keywords', 'wp-meta-seo'); ?>
272
  </label>
278
  <?php endif; ?>
279
  <div class="form-field" style="margin-top: 20px;margin-bottom: 20px;">
280
  <label for="extra1" class="wpms_custom_cat_field"
281
+ data-tippy="<?php esc_attr_e('This is the title of your content that may be displayed in search
282
  engine results (meta title). By default it’s the content title (page title, post title…).
283
  69 characters max allowed.', 'wp-meta-seo') ?>">
284
  <?php esc_html_e('Search engine description', 'wp-meta-seo'); ?>
293
  if (isset($settings['metaseo_canonical']) && (int) $settings['metaseo_canonical'] === 1) : ?>
294
  <div class="form-field" style="margin-top: 20px;margin-bottom: 20px;">
295
  <label class="wpms_custom_cat_field"
296
+ data-tippy="<?php esc_attr_e('Put the canonical URL which this page should point to. By default, it\'s the permalink', 'wp-meta-seo') ?>">
297
  <?php esc_html_e('Canonical URL', 'wp-meta-seo'); ?>
298
  </label>
299
  <label>
359
  public function editCategoryFields($tag)
360
  {
361
  wp_enqueue_style(
362
+ 'wpms-tippy-style',
363
+ plugins_url('assets/tippy/tippy.css', dirname(__FILE__)),
364
  array(),
365
  WPMSEO_VERSION
366
  );
367
  wp_enqueue_script(
368
+ 'wpms-tippy',
369
+ plugins_url('assets/tippy/tippy.js', dirname(__FILE__)),
370
+ array('jquery'),
371
+ '2.2.1',
372
+ true
373
+ );
374
+ wp_enqueue_script(
375
+ 'wpms-tippy-core',
376
+ plugins_url('assets/tippy/tippy-core.js', dirname(__FILE__)),
377
  array('jquery'),
378
  '2.2.1',
379
  true
390
  ?>
391
  <tr class="form-field">
392
  <th scope="row" valign="top">
393
+ <label class="wpms_custom_cat_field" data-tippy="<?php esc_attr_e('This is the title of your content that may
394
  be displayed in search engine results (meta title). By default it’s the content title
395
  (page title, post title…).69 characters max allowed.', 'wp-meta-seo') ?>">
396
  <?php esc_html_e('Search engine title', 'wp-meta-seo'); ?>
422
  <tr class="form-field">
423
  <th scope="row" valign="top">
424
  <label for="extra1" class="wpms_custom_cat_field"
425
+ data-tippy="<?php esc_attr_e('This is the keywords of your content that may be
426
  displayed in search engine results (meta keywords).', 'wp-meta-seo') ?>">
427
  <?php esc_html_e('Search engine keywords', 'wp-meta-seo'); ?>
428
  </label>
450
  <tr class="form-field">
451
  <th scope="row" valign="top">
452
  <label for="extra1" class="wpms_custom_cat_field"
453
+ data-tippy="<?php esc_attr_e('This is the title of your content that may be displayed in
454
  search engine results (meta title). By default it’s the content title (page title, post title…).
455
  69 characters max allowed.', 'wp-meta-seo') ?>">
456
  <?php esc_html_e('Search engine description', 'wp-meta-seo'); ?>
478
  <tr class="form-field">
479
  <th scope="row" valign="top">
480
  <label for="extra1" class="wpms_custom_cat_field"
481
+ data-tippy="<?php esc_attr_e('Put the canonical URL which this page should point to. By default, it\'s the permalink', 'wp-meta-seo') ?>">
482
  <?php esc_html_e('Canonical URL', 'wp-meta-seo'); ?>
483
  </label>
484
  </th>
506
  public function dashboardWidget()
507
  {
508
  wp_enqueue_style(
509
+ 'wpms-tippy-style',
510
+ plugins_url('assets/tippy/tippy.css', dirname(__FILE__)),
511
  array(),
512
  WPMSEO_VERSION
513
  );
514
  wp_enqueue_script(
515
+ 'wpms-tippy',
516
+ plugins_url('assets/tippy/tippy.js', dirname(__FILE__)),
517
+ array('jquery'),
518
+ '2.2.1',
519
+ true
520
+ );
521
+ wp_enqueue_script(
522
+ 'wpms-tippy-core',
523
+ plugins_url('assets/tippy/tippy-core.js', dirname(__FILE__)),
524
  array('jquery'),
525
  '2.2.1',
526
  true
532
  array('jquery'),
533
  WPMSEO_VERSION
534
  );
535
+ wp_enqueue_style('wpms-mytippy-style');
536
  require_once(WPMETASEO_PLUGIN_DIR . 'inc/pages/dashboard_widgets.php');
537
  }
538
 
915
  */
916
  public function createFieldAnalysis($data_title, $alt, $dashicon, $label, $value_hidden)
917
  {
918
+ $output = '<div class="metaseo_analysis metaseo_tool" data-title="' . esc_attr($data_title) . '" data-tippy="' . esc_attr($alt) . '">';
919
  if ($dashicon === 'done') {
920
  $output .= '<i class="metaseo-dashicons material-icons dashicons-before icons-mboxdone">done</i>';
921
  } else {
2648
  WPMSEO_VERSION,
2649
  true
2650
  );
2651
+
2652
  wp_register_style(
2653
+ 'wpms-tippy-style',
2654
+ plugins_url('assets/tippy/tippy.css', dirname(__FILE__)),
2655
  array(),
2656
  WPMSEO_VERSION
2657
  );
2658
 
2659
  wp_register_script(
2660
+ 'wpms-tippy-core',
2661
+ plugins_url('assets/tippy/tippy-core.js', dirname(__FILE__)),
2662
+ array('jquery'),
2663
+ '2.2.1',
2664
+ true
2665
+ );
2666
+
2667
+ wp_register_script(
2668
+ 'wpms-tippy',
2669
+ plugins_url('assets/tippy/tippy.js', dirname(__FILE__)),
2670
  array('jquery'),
2671
  '2.2.1',
2672
  true
2673
  );
2674
 
2675
  wp_register_script(
2676
+ 'wpms-my-tippy',
2677
+ plugins_url('assets/tippy/my-tippy.js', dirname(__FILE__)),
2678
  array('jquery'),
2679
  WPMSEO_VERSION,
2680
  true
2681
  );
2682
 
2683
  wp_enqueue_style(
2684
+ 'wpms-mytippy-style',
2685
+ plugins_url('assets/tippy/my-tippy.css', dirname(__FILE__)),
2686
  array(),
2687
  WPMSEO_VERSION
2688
  );
2689
 
2690
+
2691
  wp_register_script(
2692
  'wpms-broken-link',
2693
  plugins_url('assets/js/wpms-broken-link.js', dirname(__FILE__)),
2844
  }
2845
 
2846
  // Add intro text on each wpms topic
2847
+ $tippy_pages = array(
2848
  'wp-meta-seo_page_metaseo_content_meta',
2849
  'wp-meta-seo_page_metaseo_image_meta',
2850
  'wp-meta-seo_page_metaseo_google_sitemap',
2853
  'wp-meta-seo_page_metaseo_google_analytics',
2854
  'wp-meta-seo_page_metaseo_sendemail'
2855
  );
2856
+ if (in_array($current_screen->base, $tippy_pages)) {
2857
+ wp_enqueue_style('wpms-tippy-style');
2858
+ wp_enqueue_script('wpms-tippy-core');
2859
+ wp_enqueue_script('wpms-tippy');
2860
+ wp_enqueue_script('wpms-my-tippy');
2861
  }
2862
 
2863
  if (is_plugin_active(WPMSEO_ADDON_FILENAME)) {
3744
  }
3745
  include_once(WPMETASEO_PLUGIN_DIR . 'inc/google_analytics/wpmstools.php');
3746
  include_once(WPMETASEO_PLUGIN_DIR . 'inc/google_analytics/wpmsgapi.php');
3747
+ wp_enqueue_style('wpms-tippy-style');
3748
+ wp_enqueue_script('wpms-tippy-core');
3749
+ wp_enqueue_script('wpms-tippy');
3750
  if (isset($_GET['view']) && $_GET['view'] === 'wpmsga_trackcode') {
3751
  wp_enqueue_style('wpms-backend-tracking-code');
3752
  include_once(WPMETASEO_PLUGIN_DIR . 'inc/pages/google-analytics/ga-trackcode.php');
3762
  update_option('wpms_google_alanytics', $this->google_alanytics);
3763
  }
3764
 
3765
+ require_once 'lib/google-api/vendor/autoload.php';
3766
+ $this->client = new WPMSGoogle\Client();
 
 
3767
  $this->client->setScopes('https://www.googleapis.com/auth/analytics.readonly');
3768
  $this->client->setAccessType('offline');
3769
  $this->client->setApplicationName('WP Meta SEO');
3881
  echo '<div>';
3882
  require_once(WPMETASEO_PLUGIN_DIR . 'inc/pages/google-analytics/menu.php');
3883
  echo '<h1 class="wpms-top-h1">' . esc_html__('Google Analytics Settings', 'wp-meta-seo') . '
3884
+ <i class="material-icons intro-topic-tooltip" data-tippy="'.esc_html__('Create a Google Analytics property then connect WordPress to this Analytics property. You can then follow your traffic and include the data in your Email report (Pro Addon)', 'wp-meta-seo').'">help_outline</i>
3885
  </h1>';
3886
  echo '<div id="wpms-window-1"></div>';
3887
  echo '</div>';
4406
 
4407
  require_once WPMETASEO_PLUGIN_DIR . 'inc/google_analytics/wpmstools.php';
4408
  require_once WPMETASEO_PLUGIN_DIR . 'inc/google_analytics/wpmsgapi.php';
4409
+ require_once WPMETASEO_PLUGIN_DIR . 'inc/lib/google-api/vendor/autoload.php';
4410
+
4411
+ $client = new WPMSGoogle\Client();
 
4412
  $client->setScopes('https://www.googleapis.com/auth/analytics.readonly');
4413
  $client->setAccessType('offline');
4414
  $client->setApplicationName('WP Meta SEO');
inc/class.metaseo-broken-link-table.php CHANGED
@@ -836,13 +836,13 @@ class MetaSeoBrokenLinkTable extends WP_List_Table
836
  case 'col_status':
837
  echo '<td class="col_status">';
838
  if (strpos($rec->status_text, '200') !== false) {
839
- echo '<i class="material-icons wpms_ok metaseo_help_status" data-alt="Link is OK">done</i>';
840
  } elseif (strpos($rec->status_text, '301') !== false) {
841
  echo '<i class="material-icons wpms_ok metaseo_help_status"
842
- data-alt="Permanent redirect">done</i>';
843
  } elseif (strpos($rec->status_text, '302') !== false) {
844
  echo '<i class="material-icons wpms_ok metaseo_help_status"
845
- data-alt="Moved temporarily">done</i>';
846
  } elseif (strpos($rec->status_text, '404') !== false
847
  || $rec->status_text === 'Server Not Found') {
848
  $wpms_settings_404 = get_option('wpms_settings_404');
@@ -850,10 +850,10 @@ class MetaSeoBrokenLinkTable extends WP_List_Table
850
  && (int) $wpms_settings_404['wpms_redirect_homepage'] === 1)
851
  || $rec->link_url_redirect !== '') {
852
  echo '<i class="material-icons wpms_ok metaseo_help_status"
853
- data-alt="Permanent redirect">done</i>';
854
  } else {
855
  echo '<i class="material-icons wpms_warning metaseo_help_status"
856
- data-alt="404 error, not found">warning</i>';
857
  }
858
  } else {
859
  echo esc_html($rec->status_text);
@@ -865,7 +865,7 @@ class MetaSeoBrokenLinkTable extends WP_List_Table
865
  case 'col_link_text':
866
  if ($rec->type === 'image' || $rec->type === 'comment_content_image') {
867
  echo '<td class="link_text">
868
- <span style="float: left;margin-right: 5px;"><i class="material-icons metaseo_help_status" data-alt="Images">photo</i></span>
869
  <span> ' . esc_html__('Image', 'wp-meta-seo') . '</span></td>';
870
  } elseif ($rec->type === 'comment') {
871
  echo '<td class="link_text"><span> ' . esc_html($rec->link_text) . '</span></td>';
@@ -885,7 +885,7 @@ class MetaSeoBrokenLinkTable extends WP_List_Table
885
  $row_action = array();
886
  if ($rec->type === '404_automaticaly') {
887
  $source_inner = '<span style="float: left;margin-right: 5px;">
888
- <i class="material-icons metaseo_help_status" data-alt="External URL indexed">link</i></span>';
889
  $source_inner .= esc_html__('404 automaticaly indexed', 'wp-meta-seo');
890
 
891
  // referrer infos
@@ -927,10 +927,10 @@ class MetaSeoBrokenLinkTable extends WP_List_Table
927
 
928
  if ($rec->type === 'comment') {
929
  $source_inner = '<span style="float: left;margin-right: 5px;">
930
- <i class="material-icons metaseo_help_status" data-alt="Comments">person_outline</i></span>';
931
  } else {
932
  $source_inner = '<span style="float: left;margin-right: 5px;">
933
- <i class="material-icons metaseo_help_status" data-alt="Comments content">chat_bubble</i></span>';
934
  }
935
  $source_inner .= '<a target="_blank"
936
  href="' . get_edit_comment_link($rec->source_id) . '">
@@ -951,7 +951,7 @@ class MetaSeoBrokenLinkTable extends WP_List_Table
951
  );
952
 
953
  $source_inner = '<span style="float: left;margin-right: 5px;">
954
- <i class="material-icons metaseo_help_status" data-alt="Post , Page , Custom post">layers</i></span>';
955
  $source_inner .= '<a target="_blank"
956
  href="' . esc_url(get_edit_post_link($rec->source_id)) . '">
957
  ' . esc_html($source->post_title) . '</a>';
836
  case 'col_status':
837
  echo '<td class="col_status">';
838
  if (strpos($rec->status_text, '200') !== false) {
839
+ echo '<i class="material-icons wpms_ok metaseo_help_status" data-tippy="Link is OK">done</i>';
840
  } elseif (strpos($rec->status_text, '301') !== false) {
841
  echo '<i class="material-icons wpms_ok metaseo_help_status"
842
+ data-tippy="Permanent redirect">done</i>';
843
  } elseif (strpos($rec->status_text, '302') !== false) {
844
  echo '<i class="material-icons wpms_ok metaseo_help_status"
845
+ data-tippy="Moved temporarily">done</i>';
846
  } elseif (strpos($rec->status_text, '404') !== false
847
  || $rec->status_text === 'Server Not Found') {
848
  $wpms_settings_404 = get_option('wpms_settings_404');
850
  && (int) $wpms_settings_404['wpms_redirect_homepage'] === 1)
851
  || $rec->link_url_redirect !== '') {
852
  echo '<i class="material-icons wpms_ok metaseo_help_status"
853
+ data-tippy="Permanent redirect">done</i>';
854
  } else {
855
  echo '<i class="material-icons wpms_warning metaseo_help_status"
856
+ data-tippy="404 error, not found">warning</i>';
857
  }
858
  } else {
859
  echo esc_html($rec->status_text);
865
  case 'col_link_text':
866
  if ($rec->type === 'image' || $rec->type === 'comment_content_image') {
867
  echo '<td class="link_text">
868
+ <span style="float: left;margin-right: 5px;"><i class="material-icons metaseo_help_status" data-tippy="Images">photo</i></span>
869
  <span> ' . esc_html__('Image', 'wp-meta-seo') . '</span></td>';
870
  } elseif ($rec->type === 'comment') {
871
  echo '<td class="link_text"><span> ' . esc_html($rec->link_text) . '</span></td>';
885
  $row_action = array();
886
  if ($rec->type === '404_automaticaly') {
887
  $source_inner = '<span style="float: left;margin-right: 5px;">
888
+ <i class="material-icons metaseo_help_status" data-tippy="External URL indexed">link</i></span>';
889
  $source_inner .= esc_html__('404 automaticaly indexed', 'wp-meta-seo');
890
 
891
  // referrer infos
927
 
928
  if ($rec->type === 'comment') {
929
  $source_inner = '<span style="float: left;margin-right: 5px;">
930
+ <i class="material-icons metaseo_help_status" data-tippy="Comments">person_outline</i></span>';
931
  } else {
932
  $source_inner = '<span style="float: left;margin-right: 5px;">
933
+ <i class="material-icons metaseo_help_status" data-tippy="Comments content">chat_bubble</i></span>';
934
  }
935
  $source_inner .= '<a target="_blank"
936
  href="' . get_edit_comment_link($rec->source_id) . '">
951
  );
952
 
953
  $source_inner = '<span style="float: left;margin-right: 5px;">
954
+ <i class="material-icons metaseo_help_status" data-tippy="Post , Page , Custom post">layers</i></span>';
955
  $source_inner .= '<a target="_blank"
956
  href="' . esc_url(get_edit_post_link($rec->source_id)) . '">
957
  ' . esc_html($source->post_title) . '</a>';
inc/class.metaseo-content-list-table.php CHANGED
@@ -707,7 +707,7 @@ class MetaSeoContentListTable extends WP_List_Table
707
  echo '<td><div class="snippet-wrapper">';
708
  echo '<div class="snippet">';
709
  $input = sprintf(
710
- '<input type="text" placeholder="Put your meta title here. Click here to edit..." class="large-text metaseo-metatitle custom-bulk-metaseo-metatitle intro-topic-tooltip" rows="1" id="%1$s" name="%2$s" autocomplete="off" value="%3$s" data-alt="%4$s">',
711
  esc_attr('metaseo-metatitle-' . $rec->ID),
712
  esc_attr('metatitle[' . $rec->ID . ']'),
713
  ($rec->metatitle) ? esc_textarea($rec->metatitle) : esc_textarea($title_snippet),
@@ -724,7 +724,7 @@ class MetaSeoContentListTable extends WP_List_Table
724
  echo '</div>';
725
 
726
  $input = sprintf(
727
- '<textarea placeholder="Put your meta description here. Click here to edit..." class="large-text metaseo-metadesc custom-bulk-metaseo-metadesc intro-topic-tooltip" id="%1$s" name="%2$s" autocomplete="off" data-alt="%4$s">%3$s</textarea>',
728
  esc_attr('metaseo-metadesc-' . $rec->ID),
729
  esc_attr(' metades[' . $rec->ID . ']'),
730
  ($rec->metadesc) ? esc_textarea($rec->metadesc) : '',
707
  echo '<td><div class="snippet-wrapper">';
708
  echo '<div class="snippet">';
709
  $input = sprintf(
710
+ '<input type="text" placeholder="Put your meta title here. Click here to edit..." class="large-text metaseo-metatitle custom-bulk-metaseo-metatitle intro-topic-tooltip" rows="1" id="%1$s" name="%2$s" autocomplete="off" value="%3$s" data-tippy="%4$s">',
711
  esc_attr('metaseo-metatitle-' . $rec->ID),
712
  esc_attr('metatitle[' . $rec->ID . ']'),
713
  ($rec->metatitle) ? esc_textarea($rec->metatitle) : esc_textarea($title_snippet),
724
  echo '</div>';
725
 
726
  $input = sprintf(
727
+ '<textarea placeholder="Put your meta description here. Click here to edit..." class="large-text metaseo-metadesc custom-bulk-metaseo-metadesc intro-topic-tooltip" id="%1$s" name="%2$s" autocomplete="off" data-tippy="%4$s">%3$s</textarea>',
728
  esc_attr('metaseo-metadesc-' . $rec->ID),
729
  esc_attr(' metades[' . $rec->ID . ']'),
730
  ($rec->metadesc) ? esc_textarea($rec->metadesc) : '',
inc/class.metaseo-image-list-table.php CHANGED
@@ -1015,23 +1015,15 @@ class MetaSeoImageListTable extends WP_List_Table
1015
  ?>
1016
  <script>
1017
  jQuery(".wpms-blocks-active").attr('disabled','disabled');
1018
- jQuery('.wpms-material-icons-gutenberg').qtip({
1019
- content: {
1020
- attr: 'data-alt'
1021
- },
1022
- position: {
1023
- my: 'bottom left',
1024
- at: 'top center'
1025
- },
1026
- style: {
1027
- tip: {
1028
- corner: true
1029
- },
1030
- classes: 'wpms-widgets-qtip'
1031
- },
1032
- hide: {
1033
- fixed: true,
1034
- delay: 1
1035
  }
1036
  });
1037
  </script>
@@ -1114,7 +1106,7 @@ class MetaSeoImageListTable extends WP_List_Table
1114
  <?php
1115
  if ($has_block) {
1116
  echo '<i class="material-icons wpms-material-icons-gutenberg label-dash-widgets"
1117
- data-alt="'.esc_attr__('We can\'t update this link title because it\'s in Gutenberg block and does not have any title attribute', 'wp-meta-seo').'">info</i>';
1118
  }
1119
  ?>
1120
  </div>
1015
  ?>
1016
  <script>
1017
  jQuery(".wpms-blocks-active").attr('disabled','disabled');
1018
+ tippy('.wpms-material-icons-gutenberg', {
1019
+ animation: 'scale',
1020
+ duration: 0,
1021
+ arrow: false,
1022
+ placement: 'top',
1023
+ theme: 'wpms-widgets-tippy',
1024
+ onShow(instance) {
1025
+ instance.popper.hidden = instance.reference.dataset.tippy ? false : true;
1026
+ instance.setContent(instance.reference.dataset.tippy);
 
 
 
 
 
 
 
 
1027
  }
1028
  });
1029
  </script>
1106
  <?php
1107
  if ($has_block) {
1108
  echo '<i class="material-icons wpms-material-icons-gutenberg label-dash-widgets"
1109
+ data-tippy="'.esc_attr__('We can\'t update this link title because it\'s in Gutenberg block and does not have any title attribute', 'wp-meta-seo').'">info</i>';
1110
  }
1111
  ?>
1112
  </div>
inc/class.metaseo-link-list-table.php CHANGED
@@ -745,7 +745,7 @@ class MetaSeoLinkListTable extends WP_List_Table
745
  id="metaseo_link_title" class="metaseo_link_title '.esc_attr($blocks_class).'" value="' . esc_attr($rec->meta_title) . '">';
746
  if ($has_block) {
747
  echo '<i class="material-icons wpms-material-icons-gutenberg label-dash-widgets"
748
- data-alt="'.esc_attr__('We can\'t update this link title because it\'s in Gutenberg block and does not have any title attribute', 'wp-meta-seo').'">info</i>';
749
  }
750
  echo '<button type="button" data-post_id="' . esc_attr($rec->source_id) . '"
751
  class="wpms_update_link ju-button orange-button wpms-small-btn">' . esc_html__('Update', 'wp-meta-seo') . '</button>';
745
  id="metaseo_link_title" class="metaseo_link_title '.esc_attr($blocks_class).'" value="' . esc_attr($rec->meta_title) . '">';
746
  if ($has_block) {
747
  echo '<i class="material-icons wpms-material-icons-gutenberg label-dash-widgets"
748
+ data-tippy="'.esc_attr__('We can\'t update this link title because it\'s in Gutenberg block and does not have any title attribute', 'wp-meta-seo').'">info</i>';
749
  }
750
  echo '<button type="button" data-post_id="' . esc_attr($rec->source_id) . '"
751
  class="wpms_update_link ju-button orange-button wpms-small-btn">' . esc_html__('Update', 'wp-meta-seo') . '</button>';
inc/class.metaseo-metabox.php CHANGED
@@ -254,18 +254,25 @@ class WPMSEOMetabox extends WPMSEOMeta
254
  WPMSEO_VERSION
255
  );
256
  wp_enqueue_style(
257
- 'm-style-qtip',
258
- plugins_url('assets/css/jquery.qtip.css', WPMSEO_FILE),
259
  array(),
260
  WPMSEO_VERSION
261
  );
262
  wp_enqueue_script(
263
- 'jquery-qtip',
264
- plugins_url('assets/js/jquery.qtip.min.js', WPMSEO_FILE),
265
  array('jquery'),
266
  '2.2.1',
267
  true
268
  );
 
 
 
 
 
 
 
269
  wp_enqueue_script(
270
  'm-wp-seo-metabox',
271
  plugins_url('assets/js/wp-metaseo-metabox.js', WPMSEO_FILE),
@@ -774,7 +781,7 @@ class WPMSEOMetabox extends WPMSEOMeta
774
  $help = '';
775
  $image_src = WPMETASEO_PLUGIN_URL . 'assets/images/question/question.png';
776
  if (isset($meta_field_def['help']) && $meta_field_def['help'] !== '') {
777
- $help = '<img src="'.esc_url($image_src).'" class="meta-question metaseo_help" id="' . esc_attr($key . 'help') . '" data-alt="' . esc_attr($meta_field_def['help']) . '">';
778
  }
779
 
780
  if (isset($meta_field_def['description'])) {
@@ -884,7 +891,7 @@ class WPMSEOMetabox extends WPMSEOMeta
884
  $slf .= '</select>';
885
  echo '<p class="wpms_width_100 wpms_left optimization-row-box p_index_folder"><span class="wpmslabel"><label>' . esc_html__('Follow', 'wp-meta-seo') . '
886
  </label><i class="material-icons alignright metaseo_help" id="deschelp"
887
- data-alt="' . esc_attr__('Nofollow provides a way for webmasters to tell search engines:
888
  don\'t follow this link. So it may influence the link target’s ranking', 'wp-meta-seo') . '"
889
  style="color:#32373C" data-hasqtip="2">chat_bubble</i></span>' . $slf . '</p>'; // phpcs:ignore WordPress.Security.EscapeOutput -- Content escaped in previous line (same function)
890
  }
@@ -903,7 +910,7 @@ class WPMSEOMetabox extends WPMSEOMeta
903
  $sli .= '</select>';
904
  echo '<p class="wpms_width_100 wpms_left optimization-row-box p_index_folder"><span class="wpmslabel"><label>' . esc_html__('Index', 'wp-meta-seo') . '
905
  </label><i class="material-icons alignright metaseo_help" id="deschelp"
906
- data-alt="' . esc_attr__('Allow search engines robots to index this content,
907
  as default your content is indexed', 'wp-meta-seo') . '"
908
  style="color:#32373C" data-hasqtip="2">chat_bubble</i></span>' . $sli . '</p>'; // phpcs:ignore WordPress.Security.EscapeOutput -- Content escaped in previous line (same function)
909
  }
254
  WPMSEO_VERSION
255
  );
256
  wp_enqueue_style(
257
+ 'wpms-tippy-style',
258
+ plugins_url('assets/tippy/tippy.css', WPMSEO_FILE),
259
  array(),
260
  WPMSEO_VERSION
261
  );
262
  wp_enqueue_script(
263
+ 'wpms-tippy-core',
264
+ plugins_url('assets/tippy/tippy-core.js', WPMSEO_FILE),
265
  array('jquery'),
266
  '2.2.1',
267
  true
268
  );
269
+ wp_enqueue_script(
270
+ 'wpms-tippy',
271
+ plugins_url('assets/tippy/tippy.js', WPMSEO_FILE),
272
+ array('jquery'),
273
+ '2.2.1',
274
+ true
275
+ );
276
  wp_enqueue_script(
277
  'm-wp-seo-metabox',
278
  plugins_url('assets/js/wp-metaseo-metabox.js', WPMSEO_FILE),
781
  $help = '';
782
  $image_src = WPMETASEO_PLUGIN_URL . 'assets/images/question/question.png';
783
  if (isset($meta_field_def['help']) && $meta_field_def['help'] !== '') {
784
+ $help = '<img src="'.esc_url($image_src).'" class="meta-question metaseo_help" id="' . esc_attr($key . 'help') . '" data-tippy="' . esc_attr($meta_field_def['help']) . '">';
785
  }
786
 
787
  if (isset($meta_field_def['description'])) {
891
  $slf .= '</select>';
892
  echo '<p class="wpms_width_100 wpms_left optimization-row-box p_index_folder"><span class="wpmslabel"><label>' . esc_html__('Follow', 'wp-meta-seo') . '
893
  </label><i class="material-icons alignright metaseo_help" id="deschelp"
894
+ data-tippy="' . esc_attr__('Nofollow provides a way for webmasters to tell search engines:
895
  don\'t follow this link. So it may influence the link target’s ranking', 'wp-meta-seo') . '"
896
  style="color:#32373C" data-hasqtip="2">chat_bubble</i></span>' . $slf . '</p>'; // phpcs:ignore WordPress.Security.EscapeOutput -- Content escaped in previous line (same function)
897
  }
910
  $sli .= '</select>';
911
  echo '<p class="wpms_width_100 wpms_left optimization-row-box p_index_folder"><span class="wpmslabel"><label>' . esc_html__('Index', 'wp-meta-seo') . '
912
  </label><i class="material-icons alignright metaseo_help" id="deschelp"
913
+ data-tippy="' . esc_attr__('Allow search engines robots to index this content,
914
  as default your content is indexed', 'wp-meta-seo') . '"
915
  style="color:#32373C" data-hasqtip="2">chat_bubble</i></span>' . $sli . '</p>'; // phpcs:ignore WordPress.Security.EscapeOutput -- Content escaped in previous line (same function)
916
  }
inc/class.metaseo-sitemap.php CHANGED
@@ -367,15 +367,21 @@ class MetaSeoSitemap
367
  WPMSEO_VERSION
368
  );
369
  wp_enqueue_style(
370
- 'm-style-qtip',
371
- plugins_url('assets/css/jquery.qtip.css', dirname(__FILE__)),
372
  array(),
373
  WPMSEO_VERSION
374
  );
375
-
376
  wp_enqueue_script(
377
- 'jquery-qtip',
378
- plugins_url('assets/js/jquery.qtip.min.js', dirname(__FILE__)),
 
 
 
 
 
 
 
379
  array('jquery'),
380
  '2.2.1',
381
  true
@@ -2230,7 +2236,7 @@ ORDER BY p.post_date DESC', array($post_type)));
2230
  <div class="ju-settings-option wpms_row" style="margin-top: 20px">
2231
  <div class="wpms_row_full">
2232
  <label class="ju-setting-label text wpms-uppercase"
2233
- data-alt="<?php echo esc_attr('Include all elements in the sitemap', 'wp-meta-seo') ?>">
2234
  <?php echo esc_html($term->name) ?>
2235
  </label>
2236
  <div class="ju-switch-button">
@@ -2255,7 +2261,7 @@ ORDER BY p.post_date DESC', array($post_type)));
2255
  <div class="ju-settings-option wpms_xmp_custom_column wpms_row wpms_right m-r-0" style="margin-top: 20px">
2256
  <div class="wpms_row_full">
2257
  <label class="ju-setting-label wpms_left"
2258
- data-alt="<?php echo esc_attr('Column selection if you’re using the HTML sitemap', 'wp-meta-seo') ?>">
2259
  <?php esc_html_e('HTML Sitemap column', 'wp-meta-seo') ?>
2260
  </label>
2261
  <div class="ju-switch-button">
367
  WPMSEO_VERSION
368
  );
369
  wp_enqueue_style(
370
+ 'wpms-tippy-style',
371
+ plugins_url('assets/tippy/tippy.css', WPMSEO_FILE),
372
  array(),
373
  WPMSEO_VERSION
374
  );
 
375
  wp_enqueue_script(
376
+ 'wpms-tippy-core',
377
+ plugins_url('assets/tippy/tippy-core.js', WPMSEO_FILE),
378
+ array('jquery'),
379
+ '2.2.1',
380
+ true
381
+ );
382
+ wp_enqueue_script(
383
+ 'wpms-tippy',
384
+ plugins_url('assets/tippy/tippy.js', WPMSEO_FILE),
385
  array('jquery'),
386
  '2.2.1',
387
  true
2236
  <div class="ju-settings-option wpms_row" style="margin-top: 20px">
2237
  <div class="wpms_row_full">
2238
  <label class="ju-setting-label text wpms-uppercase"
2239
+ data-tippy="<?php echo esc_attr('Include all elements in the sitemap', 'wp-meta-seo') ?>">
2240
  <?php echo esc_html($term->name) ?>
2241
  </label>
2242
  <div class="ju-switch-button">
2261
  <div class="ju-settings-option wpms_xmp_custom_column wpms_row wpms_right m-r-0" style="margin-top: 20px">
2262
  <div class="wpms_row_full">
2263
  <label class="ju-setting-label wpms_left"
2264
+ data-tippy="<?php echo esc_attr('Column selection if you’re using the HTML sitemap', 'wp-meta-seo') ?>">
2265
  <?php esc_html_e('HTML Sitemap column', 'wp-meta-seo') ?>
2266
  </label>
2267
  <div class="ju-switch-button">
inc/class.metaseo-snippet-preview.php CHANGED
@@ -176,13 +176,13 @@ class WPMSEOSnippetPreview
176
  <div class="container-snippet">
177
  <span class="text">'.esc_html($this->title).'</span>
178
  <input type="hidden" class="title input has-length metaseo_tool" id="metaseo_wpmseo_title" name="metaseo_wpmseo_title" value="' . esc_html(!empty($this->title) ? $this->title : $title_snippet) . '" />
179
- <input class="title input has-length metaseo_tool" placeholder="'.esc_html__('Put your meta title here. Click here to edit...', 'wp-meta-seo').'" data-alt="'.esc_html__('This is your meta title that should be displayed in Google Search results for this page', 'wp-meta-seo').'" id="metaseo_snippet_title" value="" />
180
  </div>
181
  <span id="metaseo_wpmseo_title-length" class="length-box-meta"></span>
182
  </div>
183
 
184
  <div class="metabox-snippet-description">
185
- <textarea class="desc has-length metaseo_wpmseo_snippet_desc metaseo_tool" placeholder="'.esc_html__('Put your meta description here. Click here to edit...', 'wp-meta-seo').'" data-alt="'.esc_html__('This is your meta description that should be displayed in Google Search results for this page', 'wp-meta-seo').'" id="metaseo_wpmseo_desc" name="metaseo_wpmseo_desc" style="resize: none;">' . esc_html($this->description) . '</textarea>
186
  <span id="metaseo_wpmseo_desc-length" class="length-box-meta"></span>
187
  </div>
188
  </div>';
176
  <div class="container-snippet">
177
  <span class="text">'.esc_html($this->title).'</span>
178
  <input type="hidden" class="title input has-length metaseo_tool" id="metaseo_wpmseo_title" name="metaseo_wpmseo_title" value="' . esc_html(!empty($this->title) ? $this->title : $title_snippet) . '" />
179
+ <input class="title input has-length metaseo_tool" placeholder="'.esc_html__('Put your meta title here. Click here to edit...', 'wp-meta-seo').'" data-tippy="'.esc_html__('This is your meta title that should be displayed in Google Search results for this page', 'wp-meta-seo').'" id="metaseo_snippet_title" value="" />
180
  </div>
181
  <span id="metaseo_wpmseo_title-length" class="length-box-meta"></span>
182
  </div>
183
 
184
  <div class="metabox-snippet-description">
185
+ <textarea class="desc has-length metaseo_wpmseo_snippet_desc metaseo_tool" placeholder="'.esc_html__('Put your meta description here. Click here to edit...', 'wp-meta-seo').'" data-tippy="'.esc_html__('This is your meta description that should be displayed in Google Search results for this page', 'wp-meta-seo').'" id="metaseo_wpmseo_desc" name="metaseo_wpmseo_desc" style="resize: none;">' . esc_html($this->description) . '</textarea>
186
  <span id="metaseo_wpmseo_desc-length" class="length-box-meta"></span>
187
  </div>
188
  </div>';
inc/google_analytics/tracking/events-classic.php CHANGED
@@ -29,10 +29,10 @@ defined('ABSPATH') || die('No direct script access allowed!');
29
  };
30
  $('a').filter(function () {
31
  return this.href.match(/.*\.(<?php echo esc_js($this->ga_tracking['wpmsga_event_downloads']);?>)(\?.*)?$/);
32
- }).click(function () {
33
  ga_track(['_trackEvent', 'download', 'click', this.href]);
34
  });
35
- $('a[href^="mailto"]').click(function () {
36
  ga_track(['_trackSocial', 'email', 'send', this.href]);
37
  });
38
  var loc = location.host.split('.');
@@ -48,7 +48,7 @@ defined('ABSPATH') || die('No direct script access allowed!');
48
  for (var i = 0; i < localURLs.length; i++) {
49
  if (this.href.indexOf(localURLs[i]) === -1) return this.href;
50
  }
51
- }).click(function () {
52
  ga_track(['_trackEvent', 'outbound', 'click', this.href]);
53
  });
54
  }
29
  };
30
  $('a').filter(function () {
31
  return this.href.match(/.*\.(<?php echo esc_js($this->ga_tracking['wpmsga_event_downloads']);?>)(\?.*)?$/);
32
+ }).on('click', function () {
33
  ga_track(['_trackEvent', 'download', 'click', this.href]);
34
  });
35
+ $('a[href^="mailto"]').on('click', function () {
36
  ga_track(['_trackSocial', 'email', 'send', this.href]);
37
  });
38
  var loc = location.host.split('.');
48
  for (var i = 0; i < localURLs.length; i++) {
49
  if (this.href.indexOf(localURLs[i]) === -1) return this.href;
50
  }
51
+ }).on('click', function () {
52
  ga_track(['_trackEvent', 'outbound', 'click', this.href]);
53
  });
54
  }
inc/google_analytics/tracking/events-universal.php CHANGED
@@ -21,14 +21,14 @@ $domaindata = WpmsGaTools::getRootDomain(esc_html(get_option('siteurl')));
21
  //Track Downloads
22
  $('a').filter(function () {
23
  return this.href.match(/.*\.(<?php echo esc_js($this->ga_tracking['wpmsga_event_downloads']);?>)(\?.*)?$/);
24
- }).click(function () {
25
  ga('send', 'event', 'download', 'click', this.href<?php if (isset($this->ga_tracking['wpmsga_event_bouncerate']) && $this->ga_tracking['wpmsga_event_bouncerate']) {
26
  echo ", {'nonInteraction': 1}";
27
  }?>);
28
  });
29
 
30
  //Track Mailto
31
- $('a[href^="mailto"]').click(function () {
32
  ga('send', 'event', 'email', 'send', this.href<?php if (isset($this->ga_tracking['wpmsga_event_bouncerate']) && $this->ga_tracking['wpmsga_event_bouncerate']) {
33
  echo ", {'nonInteraction': 1}";
34
  }?>);
@@ -40,7 +40,7 @@ $domaindata = WpmsGaTools::getRootDomain(esc_html(get_option('siteurl')));
40
  if (!this.href.match(/.*\.(<?php echo esc_js($this->ga_tracking['wpmsga_event_downloads']);?>)(\?.*)?$/)) {
41
  if (this.href.indexOf('<?php echo esc_html($domaindata['domain']); ?>') === -1) return this.href;
42
  }
43
- }).click(function () {
44
  ga('send', 'event', 'outbound', 'click', this.href<?php if (isset($this->ga_tracking['wpmsga_event_bouncerate']) && $this->ga_tracking['wpmsga_event_bouncerate']) {
45
  echo ", {'nonInteraction': 1}";
46
  }?>);
@@ -53,7 +53,7 @@ $domaindata = WpmsGaTools::getRootDomain(esc_html(get_option('siteurl')));
53
  if ('<?php echo esc_js($this->ga_tracking['wpmsga_event_affiliates']);?>' !== '') {
54
  return this.href.match(/(<?php echo str_replace('/', '\/', (esc_js($this->ga_tracking['wpmsga_event_affiliates'])));?>)/);
55
  }
56
- }).click(function () {
57
  ga('send', 'event', 'affiliates', 'click', this.href<?php if (isset($this->ga_tracking['wpmsga_event_bouncerate']) && $this->ga_tracking['wpmsga_event_bouncerate']) {
58
  echo ", {'nonInteraction': 1}";
59
  }?>);
@@ -64,7 +64,7 @@ $domaindata = WpmsGaTools::getRootDomain(esc_html(get_option('siteurl')));
64
  //Track Hashmarks
65
  $('a').filter(function () {
66
  if (this.href.indexOf('<?php echo esc_html($domaindata['domain']); ?>') !== -1 || this.href.indexOf('://') === -1) return this.hash;
67
- }).click(function () {
68
  ga('send', 'event', 'hashmark', 'click', this.href<?php if (isset($this->ga_tracking['wpmsga_event_bouncerate']) && $this->ga_tracking['wpmsga_event_bouncerate']) {
69
  echo ", {'nonInteraction': 1}";
70
  }?>);
21
  //Track Downloads
22
  $('a').filter(function () {
23
  return this.href.match(/.*\.(<?php echo esc_js($this->ga_tracking['wpmsga_event_downloads']);?>)(\?.*)?$/);
24
+ }).on('click', function () {
25
  ga('send', 'event', 'download', 'click', this.href<?php if (isset($this->ga_tracking['wpmsga_event_bouncerate']) && $this->ga_tracking['wpmsga_event_bouncerate']) {
26
  echo ", {'nonInteraction': 1}";
27
  }?>);
28
  });
29
 
30
  //Track Mailto
31
+ $('a[href^="mailto"]').on('click', function () {
32
  ga('send', 'event', 'email', 'send', this.href<?php if (isset($this->ga_tracking['wpmsga_event_bouncerate']) && $this->ga_tracking['wpmsga_event_bouncerate']) {
33
  echo ", {'nonInteraction': 1}";
34
  }?>);
40
  if (!this.href.match(/.*\.(<?php echo esc_js($this->ga_tracking['wpmsga_event_downloads']);?>)(\?.*)?$/)) {
41
  if (this.href.indexOf('<?php echo esc_html($domaindata['domain']); ?>') === -1) return this.href;
42
  }
43
+ }).on('click', function () {
44
  ga('send', 'event', 'outbound', 'click', this.href<?php if (isset($this->ga_tracking['wpmsga_event_bouncerate']) && $this->ga_tracking['wpmsga_event_bouncerate']) {
45
  echo ", {'nonInteraction': 1}";
46
  }?>);
53
  if ('<?php echo esc_js($this->ga_tracking['wpmsga_event_affiliates']);?>' !== '') {
54
  return this.href.match(/(<?php echo str_replace('/', '\/', (esc_js($this->ga_tracking['wpmsga_event_affiliates'])));?>)/);
55
  }
56
+ }).on('click', function () {
57
  ga('send', 'event', 'affiliates', 'click', this.href<?php if (isset($this->ga_tracking['wpmsga_event_bouncerate']) && $this->ga_tracking['wpmsga_event_bouncerate']) {
58
  echo ", {'nonInteraction': 1}";
59
  }?>);
64
  //Track Hashmarks
65
  $('a').filter(function () {
66
  if (this.href.indexOf('<?php echo esc_html($domaindata['domain']); ?>') !== -1 || this.href.indexOf('://') === -1) return this.hash;
67
+ }).on('click', function () {
68
  ga('send', 'event', 'hashmark', 'click', this.href<?php if (isset($this->ga_tracking['wpmsga_event_bouncerate']) && $this->ga_tracking['wpmsga_event_bouncerate']) {
69
  echo ", {'nonInteraction': 1}";
70
  }?>);
inc/google_analytics/wpmsgapi.php CHANGED
@@ -54,26 +54,26 @@ if (!class_exists('WpmsGapiController')) {
54
  parent::__construct();
55
  $google_alanytics = get_option('wpms_google_alanytics');
56
  $this->wpmsga = WPMSGA();
57
- include_once(WPMETASEO_PLUGIN_DIR . 'inc/autoload.php');
58
- $config = new Google_Config();
59
- $config->setCacheClass('Google_Cache_Null');
60
- if (function_exists('curl_version')) {
61
- $curlversion = curl_version();
62
- if (isset($curlversion['version']) && (version_compare(PHP_VERSION, '5.3.0') >= 0)
63
- && version_compare($curlversion['version'], '7.10.8') >= 0 && defined('GADWP_IP_VERSION')
64
- && GADWP_IP_VERSION) {
65
- $config->setClassConfig(
66
- 'Google_IO_Curl',
67
- array(
68
- 'options' => array(
69
- CURLOPT_IPRESOLVE => GADWP_IP_VERSION
70
- )
71
- )
72
- ); // Force CURL_IPRESOLVE_V4 or CURL_IPRESOLVE_V6
73
- }
74
- }
75
 
76
- $this->client = new Google_Client($config);
77
  $this->client->setScopes(array('https://www.googleapis.com/auth/analytics.readonly'));
78
  $this->client->setAccessType('offline');
79
  $this->client->setApplicationName('WP Meta SEO');
54
  parent::__construct();
55
  $google_alanytics = get_option('wpms_google_alanytics');
56
  $this->wpmsga = WPMSGA();
57
+ include_once(WPMETASEO_PLUGIN_DIR . 'inc/lib/google-api/vendor/autoload.php');
58
+ // $config = new Google_Config();
59
+ // $config->setCacheClass('Google_Cache_Null');
60
+ // if (function_exists('curl_version')) {
61
+ // $curlversion = curl_version();
62
+ // if (isset($curlversion['version']) && (version_compare(PHP_VERSION, '5.3.0') >= 0)
63
+ // && version_compare($curlversion['version'], '7.10.8') >= 0 && defined('GADWP_IP_VERSION')
64
+ // && GADWP_IP_VERSION) {
65
+ // $config->setClassConfig(
66
+ // 'Google_IO_Curl',
67
+ // array(
68
+ // 'options' => array(
69
+ // CURLOPT_IPRESOLVE => GADWP_IP_VERSION
70
+ // )
71
+ // )
72
+ // ); // Force CURL_IPRESOLVE_V4 or CURL_IPRESOLVE_V6
73
+ // }
74
+ // }
75
 
76
+ $this->client = new WPMSGoogle\Client();
77
  $this->client->setScopes(array('https://www.googleapis.com/auth/analytics.readonly'));
78
  $this->client->setAccessType('offline');
79
  $this->client->setApplicationName('WP Meta SEO');
inc/google_analytics/wpmstools.php CHANGED
@@ -195,7 +195,7 @@ if (!class_exists('WpmsGaTools')) {
195
  public static function clearCache()
196
  {
197
  global $wpdb;
198
- $wpdb->query('DELETE FROM $wpdb->options WHERE option_name LIKE "wpmsga_cache_qr%%"');
199
  }
200
 
201
  /**
195
  public static function clearCache()
196
  {
197
  global $wpdb;
198
+ $wpdb->query('DELETE FROM '. $wpdb->options . ' WHERE option_name LIKE "wpmsga_cache_qr%%"');
199
  }
200
 
201
  /**
inc/install-wizard/content/viewGoogleAnalytics.php CHANGED
@@ -8,10 +8,9 @@ $next_link = $wizard->getNextLink($step);
8
 
9
  require_once WPMETASEO_PLUGIN_DIR . 'inc/google_analytics/wpmstools.php';
10
  require_once WPMETASEO_PLUGIN_DIR . 'inc/google_analytics/wpmsgapi.php';
11
- require_once WPMETASEO_PLUGIN_DIR . 'inc/autoload.php';
12
- $config = new Google_Config();
13
- $config->setCacheClass('Google_Cache_Null');
14
- $client = new Google_Client($config);
15
  $client->setScopes('https://www.googleapis.com/auth/analytics.readonly');
16
  $client->setAccessType('offline');
17
  $client->setApplicationName('WP Meta SEO');
8
 
9
  require_once WPMETASEO_PLUGIN_DIR . 'inc/google_analytics/wpmstools.php';
10
  require_once WPMETASEO_PLUGIN_DIR . 'inc/google_analytics/wpmsgapi.php';
11
+ require_once WPMETASEO_PLUGIN_DIR . 'inc/lib/google-api/vendor/autoload.php';
12
+
13
+ $client = new WPMSGoogle\Client();
 
14
  $client->setScopes('https://www.googleapis.com/auth/analytics.readonly');
15
  $client->setAccessType('offline');
16
  $client->setApplicationName('WP Meta SEO');
inc/install-wizard/handler-wizard.php CHANGED
@@ -107,10 +107,9 @@ class WpmsHandlerWizard
107
 
108
  require_once WPMETASEO_PLUGIN_DIR . 'inc/google_analytics/wpmstools.php';
109
  require_once WPMETASEO_PLUGIN_DIR . 'inc/google_analytics/wpmsgapi.php';
110
- require_once WPMETASEO_PLUGIN_DIR . 'inc/autoload.php';
111
- $config = new Google_Config();
112
- $config->setCacheClass('Google_Cache_Null');
113
- $client = new Google_Client($config);
114
  $client->setScopes('https://www.googleapis.com/auth/analytics.readonly');
115
  $client->setAccessType('offline');
116
  $client->setApplicationName('WP Meta SEO');
107
 
108
  require_once WPMETASEO_PLUGIN_DIR . 'inc/google_analytics/wpmstools.php';
109
  require_once WPMETASEO_PLUGIN_DIR . 'inc/google_analytics/wpmsgapi.php';
110
+ require_once WPMETASEO_PLUGIN_DIR . 'inc/lib/google-api/vendor/autoload.php';
111
+
112
+ $client = new WPMSGoogle\Client();
 
113
  $client->setScopes('https://www.googleapis.com/auth/analytics.readonly');
114
  $client->setAccessType('offline');
115
  $client->setApplicationName('WP Meta SEO');
inc/lib/google-api/LICENSE ADDED
@@ -0,0 +1,203 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright [yyyy] [name of copyright owner]
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
202
+
203
+
inc/lib/google-api/README.md ADDED
@@ -0,0 +1,461 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ![](https://github.com/googleapis/google-api-php-client/workflows/.github/workflows/tests.yml/badge.svg)
2
+
3
+ # Google APIs Client Library for PHP #
4
+
5
+ <dl>
6
+ <dt>Reference Docs</dt><dd><a href="https://googleapis.github.io/google-api-php-client/master/">https://googleapis.github.io/google-api-php-client/master/</a></dd>
7
+ <dt>License</dt><dd>Apache 2.0</dd>
8
+ </dl>
9
+
10
+ The Google API Client Library enables you to work with Google APIs such as Gmail, Drive or YouTube on your server.
11
+
12
+ These client libraries are officially supported by Google. However, the libraries are considered complete and are in maintenance mode. This means that we will address critical bugs and security issues but will not add any new features.
13
+
14
+ **NOTE** The actively maintained (v2) version of this client requires PHP 5.6 or above. If you require support for PHP 5.2 or 5.3, use the v1 branch.
15
+
16
+ ## Google Cloud Platform
17
+
18
+ For Google Cloud Platform APIs such as Datastore, Cloud Storage or Pub/Sub, we recommend using [GoogleCloudPlatform/google-cloud-php](https://github.com/googleapis/google-cloud-php) which is under active development.
19
+
20
+ ## Requirements ##
21
+ * [PHP 5.6.0 or higher](https://www.php.net/)
22
+
23
+ ## Developer Documentation ##
24
+
25
+ The [docs folder](docs/) provides detailed guides for using this library.
26
+
27
+ ## Installation ##
28
+
29
+ You can use **Composer** or simply **Download the Release**
30
+
31
+ ### Composer
32
+
33
+ The preferred method is via [composer](https://getcomposer.org/). Follow the
34
+ [installation instructions](https://getcomposer.org/doc/00-intro.md) if you do not already have
35
+ composer installed.
36
+
37
+ Once composer is installed, execute the following command in your project root to install this library:
38
+
39
+ ```sh
40
+ composer require google/apiclient:"^2.7"
41
+ ```
42
+
43
+ Finally, be sure to include the autoloader:
44
+
45
+ ```php
46
+ require_once '/path/to/your-project/vendor/autoload.php';
47
+ ```
48
+
49
+ This library relies on `google/apiclient-services`. That library provides up-to-date API wrappers for a large number of Google APIs. In order that users may make use of the latest API clients, this library does not pin to a specific version of `google/apiclient-services`. **In order to prevent the accidental installation of API wrappers with breaking changes**, it is highly recommended that you pin to the [latest version](https://github.com/googleapis/google-api-php-client-services/releases) yourself prior to using this library in production.
50
+
51
+ #### Cleaning up unused services
52
+
53
+ There are over 200 Google API services. The chances are good that you will not
54
+ want them all. In order to avoid shipping these dependencies with your code,
55
+ you can run the `WPMSGoogle\Task\Composer::cleanup` task and specify the services
56
+ you want to keep in `composer.json`:
57
+
58
+ ```json
59
+ {
60
+ "require": {
61
+ "google/apiclient": "^2.7"
62
+ },
63
+ "scripts": {
64
+ "post-update-cmd": "WPMSGoogle\\Task\\Composer::cleanup"
65
+ },
66
+ "extra": {
67
+ "google/apiclient-services": [
68
+ "Drive",
69
+ "YouTube"
70
+ ]
71
+ }
72
+ }
73
+ ```
74
+
75
+ This example will remove all services other than "Drive" and "YouTube" when
76
+ `composer update` or a fresh `composer install` is run.
77
+
78
+ **IMPORTANT**: If you add any services back in `composer.json`, you will need to
79
+ remove the `vendor/google/apiclient-services` directory explicity for the
80
+ change you made to have effect:
81
+
82
+ ```sh
83
+ rm -r vendor/google/apiclient-services
84
+ composer update
85
+ ```
86
+
87
+ **NOTE**: This command performs an exact match on the service name, so to keep
88
+ `YouTubeReporting` and `YouTubeAnalytics` as well, you'd need to add each of
89
+ them explicitly:
90
+
91
+ ```json
92
+ {
93
+ "extra": {
94
+ "google/apiclient-services": [
95
+ "Drive",
96
+ "YouTube",
97
+ "YouTubeAnalytics",
98
+ "YouTubeReporting"
99
+ ]
100
+ }
101
+ }
102
+ ```
103
+
104
+ ### Download the Release
105
+
106
+ If you prefer not to use composer, you can download the package in its entirety. The [Releases](https://github.com/googleapis/google-api-php-client/releases) page lists all stable versions. Download any file
107
+ with the name `google-api-php-client-[RELEASE_NAME].zip` for a package including this library and its dependencies.
108
+
109
+ Uncompress the zip file you download, and include the autoloader in your project:
110
+
111
+ ```php
112
+ require_once '/path/to/google-api-php-client/vendor/autoload.php';
113
+ ```
114
+
115
+ For additional installation and setup instructions, see [the documentation](docs/).
116
+
117
+ ## Examples ##
118
+ See the [`examples/`](examples) directory for examples of the key client features. You can
119
+ view them in your browser by running the php built-in web server.
120
+
121
+ ```
122
+ $ php -S localhost:8000 -t examples/
123
+ ```
124
+
125
+ And then browsing to the host and port you specified
126
+ (in the above example, `http://localhost:8000`).
127
+
128
+ ### Basic Example ###
129
+
130
+ ```php
131
+ // include your composer dependencies
132
+ require_once 'vendor/autoload.php';
133
+
134
+ $client = new WPMSGoogle\Client();
135
+ $client->setApplicationName("Client_Library_Examples");
136
+ $client->setDeveloperKey("YOUR_APP_KEY");
137
+
138
+ $service = new Google_Service_Books($client);
139
+ $optParams = array(
140
+ 'filter' => 'free-ebooks',
141
+ 'q' => 'Henry David Thoreau'
142
+ );
143
+ $results = $service->volumes->listVolumes($optParams);
144
+
145
+ foreach ($results->getItems() as $item) {
146
+ echo $item['volumeInfo']['title'], "<br /> \n";
147
+ }
148
+ ```
149
+
150
+ ### Authentication with OAuth ###
151
+
152
+ > An example of this can be seen in [`examples/simple-file-upload.php`](examples/simple-file-upload.php).
153
+
154
+ 1. Follow the instructions to [Create Web Application Credentials](docs/oauth-web.md#create-authorization-credentials)
155
+ 1. Download the JSON credentials
156
+ 1. Set the path to these credentials using `WPMSGoogle\Client::setAuthConfig`:
157
+
158
+ ```php
159
+ $client = new WPMSGoogle\Client();
160
+ $client->setAuthConfig('/path/to/client_credentials.json');
161
+ ```
162
+
163
+ 1. Set the scopes required for the API you are going to call
164
+
165
+ ```php
166
+ $client->addScope(Google_Service_Drive::DRIVE);
167
+ ```
168
+
169
+ 1. Set your application's redirect URI
170
+
171
+ ```php
172
+ // Your redirect URI can be any registered URI, but in this example
173
+ // we redirect back to this same page
174
+ $redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
175
+ $client->setRedirectUri($redirect_uri);
176
+ ```
177
+
178
+ 1. In the script handling the redirect URI, exchange the authorization code for an access token:
179
+
180
+ ```php
181
+ if (isset($_GET['code'])) {
182
+ $token = $client->fetchAccessTokenWithAuthCode($_GET['code']);
183
+ }
184
+ ```
185
+
186
+ ### Authentication with Service Accounts ###
187
+
188
+ > An example of this can be seen in [`examples/service-account.php`](examples/service-account.php).
189
+
190
+ Some APIs
191
+ (such as the [YouTube Data API](https://developers.google.com/youtube/v3/)) do
192
+ not support service accounts. Check with the specific API documentation if API
193
+ calls return unexpected 401 or 403 errors.
194
+
195
+ 1. Follow the instructions to [Create a Service Account](docs/oauth-server.md#creating-a-service-account)
196
+ 1. Download the JSON credentials
197
+ 1. Set the path to these credentials using the `GOOGLE_APPLICATION_CREDENTIALS` environment variable:
198
+
199
+ ```php
200
+ putenv('GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json');
201
+ ```
202
+
203
+ 1. Tell the Google client to use your service account credentials to authenticate:
204
+
205
+ ```php
206
+ $client = new WPMSGoogle\Client();
207
+ $client->useApplicationDefaultCredentials();
208
+ ```
209
+
210
+ 1. Set the scopes required for the API you are going to call
211
+
212
+ ```php
213
+ $client->addScope(Google_Service_Drive::DRIVE);
214
+ ```
215
+
216
+ 1. If you have delegated domain-wide access to the service account and you want to impersonate a user account, specify the email address of the user account using the method setSubject:
217
+
218
+ ```php
219
+ $client->setSubject($user_to_impersonate);
220
+ ```
221
+
222
+ ### Making Requests ###
223
+
224
+ The classes used to call the API in [google-api-php-client-services](https://github.com/googleapis/google-api-php-client-services) are autogenerated. They map directly to the JSON requests and responses found in the [APIs Explorer](https://developers.google.com/apis-explorer/#p/).
225
+
226
+ A JSON request to the [Datastore API](https://developers.google.com/apis-explorer/#p/datastore/v1beta3/datastore.projects.runQuery) would look like this:
227
+
228
+ ```json
229
+ POST https://datastore.googleapis.com/v1beta3/projects/YOUR_PROJECT_ID:runQuery?key=YOUR_API_KEY
230
+
231
+ {
232
+ "query": {
233
+ "kind": [{
234
+ "name": "Book"
235
+ }],
236
+ "order": [{
237
+ "property": {
238
+ "name": "title"
239
+ },
240
+ "direction": "descending"
241
+ }],
242
+ "limit": 10
243
+ }
244
+ }
245
+ ```
246
+
247
+ Using this library, the same call would look something like this:
248
+
249
+ ```php
250
+ // create the datastore service class
251
+ $datastore = new Google_Service_Datastore($client);
252
+
253
+ // build the query - this maps directly to the JSON
254
+ $query = new Google_Service_Datastore_Query([
255
+ 'kind' => [
256
+ [
257
+ 'name' => 'Book',
258
+ ],
259
+ ],
260
+ 'order' => [
261
+ 'property' => [
262
+ 'name' => 'title',
263
+ ],
264
+ 'direction' => 'descending',
265
+ ],
266
+ 'limit' => 10,
267
+ ]);
268
+
269
+ // build the request and response
270
+ $request = new Google_Service_Datastore_RunQueryRequest(['query' => $query]);
271
+ $response = $datastore->projects->runQuery('YOUR_DATASET_ID', $request);
272
+ ```
273
+
274
+ However, as each property of the JSON API has a corresponding generated class, the above code could also be written like this:
275
+
276
+ ```php
277
+ // create the datastore service class
278
+ $datastore = new Google_Service_Datastore($client);
279
+
280
+ // build the query
281
+ $request = new Google_Service_Datastore_RunQueryRequest();
282
+ $query = new Google_Service_Datastore_Query();
283
+ // - set the order
284
+ $order = new Google_Service_Datastore_PropertyOrder();
285
+ $order->setDirection('descending');
286
+ $property = new Google_Service_Datastore_PropertyReference();
287
+ $property->setName('title');
288
+ $order->setProperty($property);
289
+ $query->setOrder([$order]);
290
+ // - set the kinds
291
+ $kind = new Google_Service_Datastore_KindExpression();
292
+ $kind->setName('Book');
293
+ $query->setKinds([$kind]);
294
+ // - set the limit
295
+ $query->setLimit(10);
296
+
297
+ // add the query to the request and make the request
298
+ $request->setQuery($query);
299
+ $response = $datastore->projects->runQuery('YOUR_DATASET_ID', $request);
300
+ ```
301
+
302
+ The method used is a matter of preference, but *it will be very difficult to use this library without first understanding the JSON syntax for the API*, so it is recommended to look at the [APIs Explorer](https://developers.google.com/apis-explorer/#p/) before using any of the services here.
303
+
304
+ ### Making HTTP Requests Directly ###
305
+
306
+ If Google Authentication is desired for external applications, or a Google API is not available yet in this library, HTTP requests can be made directly.
307
+
308
+ If you are installing this client only to authenticate your own HTTP client requests, you should use [`google/auth`](https://github.com/googleapis/google-auth-library-php#call-the-apis) instead.
309
+
310
+ The `authorize` method returns an authorized [Guzzle Client](http://docs.guzzlephp.org/), so any request made using the client will contain the corresponding authorization.
311
+
312
+ ```php
313
+ // create the Google client
314
+ $client = new WPMSGoogle\Client();
315
+
316
+ /**
317
+ * Set your method for authentication. Depending on the API, This could be
318
+ * directly with an access token, API key, or (recommended) using
319
+ * Application Default Credentials.
320
+ */
321
+ $client->useApplicationDefaultCredentials();
322
+ $client->addScope(Google_Service_Plus::PLUS_ME);
323
+
324
+ // returns a Guzzle HTTP Client
325
+ $httpClient = $client->authorize();
326
+
327
+ // make an HTTP request
328
+ $response = $httpClient->get('https://www.googleapis.com/plus/v1/people/me');
329
+ ```
330
+
331
+ ### Caching ###
332
+
333
+ It is recommended to use another caching library to improve performance. This can be done by passing a [PSR-6](https://www.php-fig.org/psr/psr-6/) compatible library to the client:
334
+
335
+ ```php
336
+ use League\Flysystem\Adapter\Local;
337
+ use League\Flysystem\Filesystem;
338
+ use Cache\Adapter\Filesystem\FilesystemCachePool;
339
+
340
+ $filesystemAdapter = new Local(__DIR__.'/');
341
+ $filesystem = new Filesystem($filesystemAdapter);
342
+
343
+ $cache = new FilesystemCachePool($filesystem);
344
+ $client->setCache($cache);
345
+ ```
346
+
347
+ In this example we use [PHP Cache](http://www.php-cache.com/). Add this to your project with composer:
348
+
349
+ ```
350
+ composer require cache/filesystem-adapter
351
+ ```
352
+
353
+ ### Updating Tokens ###
354
+
355
+ When using [Refresh Tokens](https://developers.google.com/identity/protocols/OAuth2InstalledApp#offline) or [Service Account Credentials](https://developers.google.com/identity/protocols/OAuth2ServiceAccount#overview), it may be useful to perform some action when a new access token is granted. To do this, pass a callable to the `setTokenCallback` method on the client:
356
+
357
+ ```php
358
+ $logger = new Monolog\Logger();
359
+ $tokenCallback = function ($cacheKey, $accessToken) use ($logger) {
360
+ $logger->debug(sprintf('new access token received at cache key %s', $cacheKey));
361
+ };
362
+ $client->setTokenCallback($tokenCallback);
363
+ ```
364
+
365
+ ### Debugging Your HTTP Request using Charles ###
366
+
367
+ It is often very useful to debug your API calls by viewing the raw HTTP request. This library supports the use of [Charles Web Proxy](https://www.charlesproxy.com/documentation/getting-started/). Download and run Charles, and then capture all HTTP traffic through Charles with the following code:
368
+
369
+ ```php
370
+ // FOR DEBUGGING ONLY
371
+ $httpClient = new GuzzleHttp\Client([
372
+ 'proxy' => 'localhost:8888', // by default, Charles runs on localhost port 8888
373
+ 'verify' => false, // otherwise HTTPS requests will fail.
374
+ ]);
375
+
376
+ $client = new WPMSGoogle\Client();
377
+ $client->setHttpClient($httpClient);
378
+ ```
379
+
380
+ Now all calls made by this library will appear in the Charles UI.
381
+
382
+ One additional step is required in Charles to view SSL requests. Go to **Charles > Proxy > SSL Proxying Settings** and add the domain you'd like captured. In the case of the Google APIs, this is usually `*.googleapis.com`.
383
+
384
+ ### Controlling HTTP Client Configuration Directly
385
+
386
+ Google API Client uses [Guzzle](http://docs.guzzlephp.org/) as its default HTTP client. That means that you can control your HTTP requests in the same manner you would for any application using Guzzle.
387
+
388
+ Let's say, for instance, we wished to apply a referrer to each request.
389
+
390
+ ```php
391
+ use GuzzleHttp\Client;
392
+
393
+ $httpClient = new Client([
394
+ 'headers' => [
395
+ 'referer' => 'mysite.com'
396
+ ]
397
+ ]);
398
+
399
+ $client = new WPMSGoogle\Client();
400
+ $client->setHttpClient($httpClient);
401
+ ```
402
+
403
+ Other Guzzle features such as [Handlers and Middleware](http://docs.guzzlephp.org/en/stable/handlers-and-middleware.html) offer even more control.
404
+
405
+ ### Service Specific Examples ###
406
+
407
+ YouTube: https://github.com/youtube/api-samples/tree/master/php
408
+
409
+ ## How Do I Contribute? ##
410
+
411
+ Please see the [contributing](.github/CONTRIBUTING.md) page for more information. In particular, we love pull requests - but please make sure to sign the contributor license agreement.
412
+
413
+ ## Frequently Asked Questions ##
414
+
415
+ ### What do I do if something isn't working? ###
416
+
417
+ For support with the library the best place to ask is via the google-api-php-client tag on StackOverflow: https://stackoverflow.com/questions/tagged/google-api-php-client
418
+
419
+ If there is a specific bug with the library, please [file an issue](https://github.com/googleapis/google-api-php-client/issues) in the GitHub issues tracker, including an example of the failing code and any specific errors retrieved. Feature requests can also be filed, as long as they are core library requests, and not-API specific: for those, refer to the documentation for the individual APIs for the best place to file requests. Please try to provide a clear statement of the problem that the feature would address.
420
+
421
+ ### I want an example of X! ###
422
+
423
+ If X is a feature of the library, file away! If X is an example of using a specific service, the best place to go is to the teams for those specific APIs - our preference is to link to their examples rather than add them to the library, as they can then pin to specific versions of the library. If you have any examples for other APIs, let us know and we will happily add a link to the README above!
424
+
425
+ ### Why does Google_..._Service have weird names? ###
426
+
427
+ The _Service classes are generally automatically generated from the API discovery documents: https://developers.google.com/discovery/. Sometimes new features are added to APIs with unusual names, which can cause some unexpected or non-standard style naming in the PHP classes.
428
+
429
+ ### How do I deal with non-JSON response types? ###
430
+
431
+ Some services return XML or similar by default, rather than JSON, which is what the library supports. You can request a JSON response by adding an 'alt' argument to optional params that is normally the last argument to a method call:
432
+
433
+ ```
434
+ $opt_params = array(
435
+ 'alt' => "json"
436
+ );
437
+ ```
438
+
439
+ ### How do I set a field to null? ###
440
+
441
+ The library strips out nulls from the objects sent to the Google APIs as its the default value of all of the uninitialized properties. To work around this, set the field you want to null to `WPMSGoogle\Model::NULL_VALUE`. This is a placeholder that will be replaced with a true null when sent over the wire.
442
+
443
+ ## Code Quality ##
444
+
445
+ Run the PHPUnit tests with PHPUnit. You can configure an API key and token in BaseTest.php to run all calls, but this will require some setup on the Google Developer Console.
446
+
447
+ phpunit tests/
448
+
449
+ ### Coding Style
450
+
451
+ To check for coding style violations, run
452
+
453
+ ```
454
+ vendor/bin/phpcs src --standard=style/ruleset.xml -np
455
+ ```
456
+
457
+ To automatically fix (fixable) coding style violations, run
458
+
459
+ ```
460
+ vendor/bin/phpcbf src --standard=style/ruleset.xml
461
+ ```
inc/lib/google-api/composer.json ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "google/apiclient",
3
+ "type": "library",
4
+ "description": "Client library for Google APIs",
5
+ "keywords": ["google"],
6
+ "homepage": "http://developers.google.com/api-client-library/php",
7
+ "license": "Apache-2.0",
8
+ "require": {
9
+ "php": "^5.6|^7.0|^8.0",
10
+ "google/auth": "^1.10",
11
+ "google/apiclient-services": "~0.13",
12
+ "firebase/php-jwt": "~2.0||~3.0||~4.0||~5.0",
13
+ "monolog/monolog": "^1.17|^2.0",
14
+ "phpseclib/phpseclib": "~2.0||^3.0.2",
15
+ "guzzlehttp/guzzle": "~5.3.3||~6.0||~7.0",
16
+ "guzzlehttp/psr7": "^1.2"
17
+ },
18
+ "require-dev": {
19
+ "phpunit/phpunit": "^5.7||^8.5.13",
20
+ "squizlabs/php_codesniffer": "~2.3",
21
+ "symfony/dom-crawler": "~2.1",
22
+ "symfony/css-selector": "~2.1",
23
+ "cache/filesystem-adapter": "^0.3.2|^1.1",
24
+ "phpcompatibility/php-compatibility": "^9.2",
25
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7",
26
+ "composer/composer": "^1.10"
27
+ },
28
+ "suggest": {
29
+ "cache/filesystem-adapter": "For caching certs and tokens (using WPMSGoogle\\Client::setCache)"
30
+ },
31
+ "autoload": {
32
+ "psr-4": {
33
+ "WPMSGoogle\\": "src/"
34
+ },
35
+ "files": [
36
+ "src/aliases.php"
37
+ ],
38
+ "classmap": [
39
+ "src/aliases.php"
40
+ ]
41
+ },
42
+ "extra": {
43
+ "branch-alias": {
44
+ "dev-master": "2.x-dev"
45
+ }
46
+ }
47
+ }
inc/lib/google-api/composer.lock ADDED
@@ -0,0 +1,4958 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_readme": [
3
+ "This file locks the dependencies of your project to a known state",
4
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5
+ "This file is @generated automatically"
6
+ ],
7
+ "content-hash": "3c1088faacf5a0413ffae7a295678728",
8
+ "packages": [
9
+ {
10
+ "name": "firebase/php-jwt",
11
+ "version": "v5.2.1",
12
+ "source": {
13
+ "type": "git",
14
+ "url": "https://github.com/firebase/php-jwt.git",
15
+ "reference": "f42c9110abe98dd6cfe9053c49bc86acc70b2d23"
16
+ },
17
+ "dist": {
18
+ "type": "zip",
19
+ "url": "https://api.github.com/repos/firebase/php-jwt/zipball/f42c9110abe98dd6cfe9053c49bc86acc70b2d23",
20
+ "reference": "f42c9110abe98dd6cfe9053c49bc86acc70b2d23",
21
+ "shasum": ""
22
+ },
23
+ "require": {
24
+ "php": ">=5.3.0"
25
+ },
26
+ "require-dev": {
27
+ "phpunit/phpunit": ">=4.8 <=9"
28
+ },
29
+ "type": "library",
30
+ "autoload": {
31
+ "psr-4": {
32
+ "Firebase\\JWT\\": "src"
33
+ }
34
+ },
35
+ "notification-url": "https://packagist.org/downloads/",
36
+ "license": [
37
+ "BSD-3-Clause"
38
+ ],
39
+ "authors": [
40
+ {
41
+ "name": "Neuman Vong",
42
+ "email": "neuman+pear@twilio.com",
43
+ "role": "Developer"
44
+ },
45
+ {
46
+ "name": "Anant Narayanan",
47
+ "email": "anant@php.net",
48
+ "role": "Developer"
49
+ }
50
+ ],
51
+ "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.",
52
+ "homepage": "https://github.com/firebase/php-jwt",
53
+ "keywords": [
54
+ "jwt",
55
+ "php"
56
+ ],
57
+ "support": {
58
+ "issues": "https://github.com/firebase/php-jwt/issues",
59
+ "source": "https://github.com/firebase/php-jwt/tree/v5.2.1"
60
+ },
61
+ "time": "2021-02-12T00:02:00+00:00"
62
+ },
63
+ {
64
+ "name": "google/apiclient-services",
65
+ "version": "v0.171.0",
66
+ "source": {
67
+ "type": "git",
68
+ "url": "https://github.com/googleapis/google-api-php-client-services.git",
69
+ "reference": "b45ddc3d82b2c8f328d869d55db88c1885d898ee"
70
+ },
71
+ "dist": {
72
+ "type": "zip",
73
+ "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/b45ddc3d82b2c8f328d869d55db88c1885d898ee",
74
+ "reference": "b45ddc3d82b2c8f328d869d55db88c1885d898ee",
75
+ "shasum": ""
76
+ },
77
+ "require": {
78
+ "php": ">=5.4"
79
+ },
80
+ "require-dev": {
81
+ "phpunit/phpunit": "^4.8|^5"
82
+ },
83
+ "type": "library",
84
+ "autoload": {
85
+ "psr-0": {
86
+ "Google_Service_": "src"
87
+ }
88
+ },
89
+ "notification-url": "https://packagist.org/downloads/",
90
+ "license": [
91
+ "Apache-2.0"
92
+ ],
93
+ "description": "Client library for Google APIs",
94
+ "homepage": "http://developers.google.com/api-client-library/php",
95
+ "keywords": [
96
+ "google"
97
+ ],
98
+ "support": {
99
+ "issues": "https://github.com/googleapis/google-api-php-client-services/issues",
100
+ "source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.171.0"
101
+ },
102
+ "time": "2021-04-20T20:34:12+00:00"
103
+ },
104
+ {
105
+ "name": "google/auth",
106
+ "version": "v1.15.1",
107
+ "source": {
108
+ "type": "git",
109
+ "url": "https://github.com/googleapis/google-auth-library-php.git",
110
+ "reference": "4e0c9367719df9703e96f5ad613041b87742471c"
111
+ },
112
+ "dist": {
113
+ "type": "zip",
114
+ "url": "https://api.github.com/repos/googleapis/google-auth-library-php/zipball/4e0c9367719df9703e96f5ad613041b87742471c",
115
+ "reference": "4e0c9367719df9703e96f5ad613041b87742471c",
116
+ "shasum": ""
117
+ },
118
+ "require": {
119
+ "firebase/php-jwt": "~2.0|~3.0|~4.0|~5.0",
120
+ "guzzlehttp/guzzle": "^5.3.1|^6.2.1|^7.0",
121
+ "guzzlehttp/psr7": "^1.2",
122
+ "php": ">=5.4",
123
+ "psr/cache": "^1.0",
124
+ "psr/http-message": "^1.0"
125
+ },
126
+ "require-dev": {
127
+ "guzzlehttp/promises": "0.1.1|^1.3",
128
+ "kelvinmo/simplejwt": "^0.2.5|^0.5.1",
129
+ "phpseclib/phpseclib": "^2.0.31",
130
+ "phpunit/phpunit": "^4.8.36|^5.7",
131
+ "sebastian/comparator": ">=1.2.3",
132
+ "squizlabs/php_codesniffer": "^3.5"
133
+ },
134
+ "suggest": {
135
+ "phpseclib/phpseclib": "May be used in place of OpenSSL for signing strings or for token management. Please require version ^2."
136
+ },
137
+ "type": "library",
138
+ "autoload": {
139
+ "psr-4": {
140
+ "WPMSGoogle\\Auth\\": "src"
141
+ }
142
+ },
143
+ "notification-url": "https://packagist.org/downloads/",
144
+ "license": [
145
+ "Apache-2.0"
146
+ ],
147
+ "description": "Google Auth Library for PHP",
148
+ "homepage": "http://github.com/google/google-auth-library-php",
149
+ "keywords": [
150
+ "Authentication",
151
+ "google",
152
+ "oauth2"
153
+ ],
154
+ "support": {
155
+ "docs": "https://googleapis.github.io/google-auth-library-php/master/",
156
+ "issues": "https://github.com/googleapis/google-auth-library-php/issues",
157
+ "source": "https://github.com/googleapis/google-auth-library-php/tree/v1.15.1"
158
+ },
159
+ "time": "2021-04-21T17:42:05+00:00"
160
+ },
161
+ {
162
+ "name": "guzzlehttp/guzzle",
163
+ "version": "7.3.0",
164
+ "source": {
165
+ "type": "git",
166
+ "url": "https://github.com/guzzle/guzzle.git",
167
+ "reference": "7008573787b430c1c1f650e3722d9bba59967628"
168
+ },
169
+ "dist": {
170
+ "type": "zip",
171
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/7008573787b430c1c1f650e3722d9bba59967628",
172
+ "reference": "7008573787b430c1c1f650e3722d9bba59967628",
173
+ "shasum": ""
174
+ },
175
+ "require": {
176
+ "ext-json": "*",
177
+ "guzzlehttp/promises": "^1.4",
178
+ "guzzlehttp/psr7": "^1.7 || ^2.0",
179
+ "php": "^7.2.5 || ^8.0",
180
+ "psr/http-client": "^1.0"
181
+ },
182
+ "provide": {
183
+ "psr/http-client-implementation": "1.0"
184
+ },
185
+ "require-dev": {
186
+ "bamarni/composer-bin-plugin": "^1.4.1",
187
+ "ext-curl": "*",
188
+ "php-http/client-integration-tests": "^3.0",
189
+ "phpunit/phpunit": "^8.5.5 || ^9.3.5",
190
+ "psr/log": "^1.1"
191
+ },
192
+ "suggest": {
193
+ "ext-curl": "Required for CURL handler support",
194
+ "ext-intl": "Required for Internationalized Domain Name (IDN) support",
195
+ "psr/log": "Required for using the Log middleware"
196
+ },
197
+ "type": "library",
198
+ "extra": {
199
+ "branch-alias": {
200
+ "dev-master": "7.3-dev"
201
+ }
202
+ },
203
+ "autoload": {
204
+ "psr-4": {
205
+ "GuzzleHttp\\": "src/"
206
+ },
207
+ "files": [
208
+ "src/functions_include.php"
209
+ ]
210
+ },
211
+ "notification-url": "https://packagist.org/downloads/",
212
+ "license": [
213
+ "MIT"
214
+ ],
215
+ "authors": [
216
+ {
217
+ "name": "Michael Dowling",
218
+ "email": "mtdowling@gmail.com",
219
+ "homepage": "https://github.com/mtdowling"
220
+ },
221
+ {
222
+ "name": "Márk Sági-Kazár",
223
+ "email": "mark.sagikazar@gmail.com",
224
+ "homepage": "https://sagikazarmark.hu"
225
+ }
226
+ ],
227
+ "description": "Guzzle is a PHP HTTP client library",
228
+ "homepage": "http://guzzlephp.org/",
229
+ "keywords": [
230
+ "client",
231
+ "curl",
232
+ "framework",
233
+ "http",
234
+ "http client",
235
+ "psr-18",
236
+ "psr-7",
237
+ "rest",
238
+ "web service"
239
+ ],
240
+ "support": {
241
+ "issues": "https://github.com/guzzle/guzzle/issues",
242
+ "source": "https://github.com/guzzle/guzzle/tree/7.3.0"
243
+ },
244
+ "funding": [
245
+ {
246
+ "url": "https://github.com/GrahamCampbell",
247
+ "type": "github"
248
+ },
249
+ {
250
+ "url": "https://github.com/Nyholm",
251
+ "type": "github"
252
+ },
253
+ {
254
+ "url": "https://github.com/alexeyshockov",
255
+ "type": "github"
256
+ },
257
+ {
258
+ "url": "https://github.com/gmponos",
259
+ "type": "github"
260
+ }
261
+ ],
262
+ "time": "2021-03-23T11:33:13+00:00"
263
+ },
264
+ {
265
+ "name": "guzzlehttp/promises",
266
+ "version": "1.4.1",
267
+ "source": {
268
+ "type": "git",
269
+ "url": "https://github.com/guzzle/promises.git",
270
+ "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d"
271
+ },
272
+ "dist": {
273
+ "type": "zip",
274
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d",
275
+ "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d",
276
+ "shasum": ""
277
+ },
278
+ "require": {
279
+ "php": ">=5.5"
280
+ },
281
+ "require-dev": {
282
+ "symfony/phpunit-bridge": "^4.4 || ^5.1"
283
+ },
284
+ "type": "library",
285
+ "extra": {
286
+ "branch-alias": {
287
+ "dev-master": "1.4-dev"
288
+ }
289
+ },
290
+ "autoload": {
291
+ "psr-4": {
292
+ "GuzzleHttp\\Promise\\": "src/"
293
+ },
294
+ "files": [
295
+ "src/functions_include.php"
296
+ ]
297
+ },
298
+ "notification-url": "https://packagist.org/downloads/",
299
+ "license": [
300
+ "MIT"
301
+ ],
302
+ "authors": [
303
+ {
304
+ "name": "Michael Dowling",
305
+ "email": "mtdowling@gmail.com",
306
+ "homepage": "https://github.com/mtdowling"
307
+ }
308
+ ],
309
+ "description": "Guzzle promises library",
310
+ "keywords": [
311
+ "promise"
312
+ ],
313
+ "support": {
314
+ "issues": "https://github.com/guzzle/promises/issues",
315
+ "source": "https://github.com/guzzle/promises/tree/1.4.1"
316
+ },
317
+ "time": "2021-03-07T09:25:29+00:00"
318
+ },
319
+ {
320
+ "name": "guzzlehttp/psr7",
321
+ "version": "1.8.2",
322
+ "source": {
323
+ "type": "git",
324
+ "url": "https://github.com/guzzle/psr7.git",
325
+ "reference": "dc960a912984efb74d0a90222870c72c87f10c91"
326
+ },
327
+ "dist": {
328
+ "type": "zip",
329
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/dc960a912984efb74d0a90222870c72c87f10c91",
330
+ "reference": "dc960a912984efb74d0a90222870c72c87f10c91",
331
+ "shasum": ""
332
+ },
333
+ "require": {
334
+ "php": ">=5.4.0",
335
+ "psr/http-message": "~1.0",
336
+ "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
337
+ },
338
+ "provide": {
339
+ "psr/http-message-implementation": "1.0"
340
+ },
341
+ "require-dev": {
342
+ "ext-zlib": "*",
343
+ "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
344
+ },
345
+ "suggest": {
346
+ "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
347
+ },
348
+ "type": "library",
349
+ "extra": {
350
+ "branch-alias": {
351
+ "dev-master": "1.7-dev"
352
+ }
353
+ },
354
+ "autoload": {
355
+ "psr-4": {
356
+ "GuzzleHttp\\Psr7\\": "src/"
357
+ },
358
+ "files": [
359
+ "src/functions_include.php"
360
+ ]
361
+ },
362
+ "notification-url": "https://packagist.org/downloads/",
363
+ "license": [
364
+ "MIT"
365
+ ],
366
+ "authors": [
367
+ {
368
+ "name": "Michael Dowling",
369
+ "email": "mtdowling@gmail.com",
370
+ "homepage": "https://github.com/mtdowling"
371
+ },
372
+ {
373
+ "name": "Tobias Schultze",
374
+ "homepage": "https://github.com/Tobion"
375
+ }
376
+ ],
377
+ "description": "PSR-7 message implementation that also provides common utility methods",
378
+ "keywords": [
379
+ "http",
380
+ "message",
381
+ "psr-7",
382
+ "request",
383
+ "response",
384
+ "stream",
385
+ "uri",
386
+ "url"
387
+ ],
388
+ "support": {
389
+ "issues": "https://github.com/guzzle/psr7/issues",
390
+ "source": "https://github.com/guzzle/psr7/tree/1.8.2"
391
+ },
392
+ "time": "2021-04-26T09:17:50+00:00"
393
+ },
394
+ {
395
+ "name": "monolog/monolog",
396
+ "version": "2.2.0",
397
+ "source": {
398
+ "type": "git",
399
+ "url": "https://github.com/Seldaek/monolog.git",
400
+ "reference": "1cb1cde8e8dd0f70cc0fe51354a59acad9302084"
401
+ },
402
+ "dist": {
403
+ "type": "zip",
404
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/1cb1cde8e8dd0f70cc0fe51354a59acad9302084",
405
+ "reference": "1cb1cde8e8dd0f70cc0fe51354a59acad9302084",
406
+ "shasum": ""
407
+ },
408
+ "require": {
409
+ "php": ">=7.2",
410
+ "psr/log": "^1.0.1"
411
+ },
412
+ "provide": {
413
+ "psr/log-implementation": "1.0.0"
414
+ },
415
+ "require-dev": {
416
+ "aws/aws-sdk-php": "^2.4.9 || ^3.0",
417
+ "doctrine/couchdb": "~1.0@dev",
418
+ "elasticsearch/elasticsearch": "^7",
419
+ "graylog2/gelf-php": "^1.4.2",
420
+ "mongodb/mongodb": "^1.8",
421
+ "php-amqplib/php-amqplib": "~2.4",
422
+ "php-console/php-console": "^3.1.3",
423
+ "phpspec/prophecy": "^1.6.1",
424
+ "phpstan/phpstan": "^0.12.59",
425
+ "phpunit/phpunit": "^8.5",
426
+ "predis/predis": "^1.1",
427
+ "rollbar/rollbar": "^1.3",
428
+ "ruflin/elastica": ">=0.90 <7.0.1",
429
+ "swiftmailer/swiftmailer": "^5.3|^6.0"
430
+ },
431
+ "suggest": {
432
+ "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
433
+ "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
434
+ "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client",
435
+ "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
436
+ "ext-mbstring": "Allow to work properly with unicode symbols",
437
+ "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)",
438
+ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
439
+ "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)",
440
+ "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
441
+ "php-console/php-console": "Allow sending log messages to Google Chrome",
442
+ "rollbar/rollbar": "Allow sending log messages to Rollbar",
443
+ "ruflin/elastica": "Allow sending log messages to an Elastic Search server"
444
+ },
445
+ "type": "library",
446
+ "extra": {
447
+ "branch-alias": {
448
+ "dev-main": "2.x-dev"
449
+ }
450
+ },
451
+ "autoload": {
452
+ "psr-4": {
453
+ "Monolog\\": "src/Monolog"
454
+ }
455
+ },
456
+ "notification-url": "https://packagist.org/downloads/",
457
+ "license": [
458
+ "MIT"
459
+ ],
460
+ "authors": [
461
+ {
462
+ "name": "Jordi Boggiano",
463
+ "email": "j.boggiano@seld.be",
464
+ "homepage": "https://seld.be"
465
+ }
466
+ ],
467
+ "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
468
+ "homepage": "https://github.com/Seldaek/monolog",
469
+ "keywords": [
470
+ "log",
471
+ "logging",
472
+ "psr-3"
473
+ ],
474
+ "support": {
475
+ "issues": "https://github.com/Seldaek/monolog/issues",
476
+ "source": "https://github.com/Seldaek/monolog/tree/2.2.0"
477
+ },
478
+ "funding": [
479
+ {
480
+ "url": "https://github.com/Seldaek",
481
+ "type": "github"
482
+ },
483
+ {
484
+ "url": "https://tidelift.com/funding/github/packagist/monolog/monolog",
485
+ "type": "tidelift"
486
+ }
487
+ ],
488
+ "time": "2020-12-14T13:15:25+00:00"
489
+ },
490
+ {
491
+ "name": "paragonie/constant_time_encoding",
492
+ "version": "v2.4.0",
493
+ "source": {
494
+ "type": "git",
495
+ "url": "https://github.com/paragonie/constant_time_encoding.git",
496
+ "reference": "f34c2b11eb9d2c9318e13540a1dbc2a3afbd939c"
497
+ },
498
+ "dist": {
499
+ "type": "zip",
500
+ "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/f34c2b11eb9d2c9318e13540a1dbc2a3afbd939c",
501
+ "reference": "f34c2b11eb9d2c9318e13540a1dbc2a3afbd939c",
502
+ "shasum": ""
503
+ },
504
+ "require": {
505
+ "php": "^7|^8"
506
+ },
507
+ "require-dev": {
508
+ "phpunit/phpunit": "^6|^7|^8|^9",
509
+ "vimeo/psalm": "^1|^2|^3|^4"
510
+ },
511
+ "type": "library",
512
+ "autoload": {
513
+ "psr-4": {
514
+ "ParagonIE\\ConstantTime\\": "src/"
515
+ }
516
+ },
517
+ "notification-url": "https://packagist.org/downloads/",
518
+ "license": [
519
+ "MIT"
520
+ ],
521
+ "authors": [
522
+ {
523
+ "name": "Paragon Initiative Enterprises",
524
+ "email": "security@paragonie.com",
525
+ "homepage": "https://paragonie.com",
526
+ "role": "Maintainer"
527
+ },
528
+ {
529
+ "name": "Steve 'Sc00bz' Thomas",
530
+ "email": "steve@tobtu.com",
531
+ "homepage": "https://www.tobtu.com",
532
+ "role": "Original Developer"
533
+ }
534
+ ],
535
+ "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)",
536
+ "keywords": [
537
+ "base16",
538
+ "base32",
539
+ "base32_decode",
540
+ "base32_encode",
541
+ "base64",
542
+ "base64_decode",
543
+ "base64_encode",
544
+ "bin2hex",
545
+ "encoding",
546
+ "hex",
547
+ "hex2bin",
548
+ "rfc4648"
549
+ ],
550
+ "support": {
551
+ "email": "info@paragonie.com",
552
+ "issues": "https://github.com/paragonie/constant_time_encoding/issues",
553
+ "source": "https://github.com/paragonie/constant_time_encoding"
554
+ },
555
+ "time": "2020-12-06T15:14:20+00:00"
556
+ },
557
+ {
558
+ "name": "paragonie/random_compat",
559
+ "version": "v9.99.100",
560
+ "source": {
561
+ "type": "git",
562
+ "url": "https://github.com/paragonie/random_compat.git",
563
+ "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a"
564
+ },
565
+ "dist": {
566
+ "type": "zip",
567
+ "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a",
568
+ "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a",
569
+ "shasum": ""
570
+ },
571
+ "require": {
572
+ "php": ">= 7"
573
+ },
574
+ "require-dev": {
575
+ "phpunit/phpunit": "4.*|5.*",
576
+ "vimeo/psalm": "^1"
577
+ },
578
+ "suggest": {
579
+ "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
580
+ },
581
+ "type": "library",
582
+ "notification-url": "https://packagist.org/downloads/",
583
+ "license": [
584
+ "MIT"
585
+ ],
586
+ "authors": [
587
+ {
588
+ "name": "Paragon Initiative Enterprises",
589
+ "email": "security@paragonie.com",
590
+ "homepage": "https://paragonie.com"
591
+ }
592
+ ],
593
+ "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
594
+ "keywords": [
595
+ "csprng",
596
+ "polyfill",
597
+ "pseudorandom",
598
+ "random"
599
+ ],
600
+ "support": {
601
+ "email": "info@paragonie.com",
602
+ "issues": "https://github.com/paragonie/random_compat/issues",
603
+ "source": "https://github.com/paragonie/random_compat"
604
+ },
605
+ "time": "2020-10-15T08:29:30+00:00"
606
+ },
607
+ {
608
+ "name": "phpseclib/phpseclib",
609
+ "version": "3.0.8",
610
+ "source": {
611
+ "type": "git",
612
+ "url": "https://github.com/phpseclib/phpseclib.git",
613
+ "reference": "d9615a6fb970d9933866ca8b4036ec3407b020b6"
614
+ },
615
+ "dist": {
616
+ "type": "zip",
617
+ "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/d9615a6fb970d9933866ca8b4036ec3407b020b6",
618
+ "reference": "d9615a6fb970d9933866ca8b4036ec3407b020b6",
619
+ "shasum": ""
620
+ },
621
+ "require": {
622
+ "paragonie/constant_time_encoding": "^1|^2",
623
+ "paragonie/random_compat": "^1.4|^2.0|^9.99.99",
624
+ "php": ">=5.6.1"
625
+ },
626
+ "require-dev": {
627
+ "phing/phing": "~2.7",
628
+ "phpunit/phpunit": "^5.7|^6.0|^9.4",
629
+ "squizlabs/php_codesniffer": "~2.0"
630
+ },
631
+ "suggest": {
632
+ "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.",
633
+ "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.",
634
+ "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.",
635
+ "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations."
636
+ },
637
+ "type": "library",
638
+ "autoload": {
639
+ "files": [
640
+ "phpseclib/bootstrap.php"
641
+ ],
642
+ "psr-4": {
643
+ "phpseclib3\\": "phpseclib/"
644
+ }
645
+ },
646
+ "notification-url": "https://packagist.org/downloads/",
647
+ "license": [
648
+ "MIT"
649
+ ],
650
+ "authors": [
651
+ {
652
+ "name": "Jim Wigginton",
653
+ "email": "terrafrost@php.net",
654
+ "role": "Lead Developer"
655
+ },
656
+ {
657
+ "name": "Patrick Monnerat",
658
+ "email": "pm@datasphere.ch",
659
+ "role": "Developer"
660
+ },
661
+ {
662
+ "name": "Andreas Fischer",
663
+ "email": "bantu@phpbb.com",
664
+ "role": "Developer"
665
+ },
666
+ {
667
+ "name": "Hans-Jürgen Petrich",
668
+ "email": "petrich@tronic-media.com",
669
+ "role": "Developer"
670
+ },
671
+ {
672
+ "name": "Graham Campbell",
673
+ "email": "graham@alt-three.com",
674
+ "role": "Developer"
675
+ }
676
+ ],
677
+ "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.",
678
+ "homepage": "http://phpseclib.sourceforge.net",
679
+ "keywords": [
680
+ "BigInteger",
681
+ "aes",
682
+ "asn.1",
683
+ "asn1",
684
+ "blowfish",
685
+ "crypto",
686
+ "cryptography",
687
+ "encryption",
688
+ "rsa",
689
+ "security",
690
+ "sftp",
691
+ "signature",
692
+ "signing",
693
+ "ssh",
694
+ "twofish",
695
+ "x.509",
696
+ "x509"
697
+ ],
698
+ "support": {
699
+ "issues": "https://github.com/phpseclib/phpseclib/issues",
700
+ "source": "https://github.com/phpseclib/phpseclib/tree/3.0.8"
701
+ },
702
+ "funding": [
703
+ {
704
+ "url": "https://github.com/terrafrost",
705
+ "type": "github"
706
+ },
707
+ {
708
+ "url": "https://www.patreon.com/phpseclib",
709
+ "type": "patreon"
710
+ },
711
+ {
712
+ "url": "https://tidelift.com/funding/github/packagist/phpseclib/phpseclib",
713
+ "type": "tidelift"
714
+ }
715
+ ],
716
+ "time": "2021-04-19T03:20:48+00:00"
717
+ },
718
+ {
719
+ "name": "psr/cache",
720
+ "version": "1.0.1",
721
+ "source": {
722
+ "type": "git",
723
+ "url": "https://github.com/php-fig/cache.git",
724
+ "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8"
725
+ },
726
+ "dist": {
727
+ "type": "zip",
728
+ "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8",
729
+ "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8",
730
+ "shasum": ""
731
+ },
732
+ "require": {
733
+ "php": ">=5.3.0"
734
+ },
735
+ "type": "library",
736
+ "extra": {
737
+ "branch-alias": {
738
+ "dev-master": "1.0.x-dev"
739
+ }
740
+ },
741
+ "autoload": {
742
+ "psr-4": {
743
+ "Psr\\Cache\\": "src/"
744
+ }
745
+ },
746
+ "notification-url": "https://packagist.org/downloads/",
747
+ "license": [
748
+ "MIT"
749
+ ],
750
+ "authors": [
751
+ {
752
+ "name": "PHP-FIG",
753
+ "homepage": "http://www.php-fig.org/"
754
+ }
755
+ ],
756
+ "description": "Common interface for caching libraries",
757
+ "keywords": [
758
+ "cache",
759
+ "psr",
760
+ "psr-6"
761
+ ],
762
+ "support": {
763
+ "source": "https://github.com/php-fig/cache/tree/master"
764
+ },
765
+ "time": "2016-08-06T20:24:11+00:00"
766
+ },
767
+ {
768
+ "name": "psr/http-client",
769
+ "version": "1.0.1",
770
+ "source": {
771
+ "type": "git",
772
+ "url": "https://github.com/php-fig/http-client.git",
773
+ "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621"
774
+ },
775
+ "dist": {
776
+ "type": "zip",
777
+ "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
778
+ "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
779
+ "shasum": ""
780
+ },
781
+ "require": {
782
+ "php": "^7.0 || ^8.0",
783
+ "psr/http-message": "^1.0"
784
+ },
785
+ "type": "library",
786
+ "extra": {
787
+ "branch-alias": {
788
+ "dev-master": "1.0.x-dev"
789
+ }
790
+ },
791
+ "autoload": {
792
+ "psr-4": {
793
+ "Psr\\Http\\Client\\": "src/"
794
+ }
795
+ },
796
+ "notification-url": "https://packagist.org/downloads/",
797
+ "license": [
798
+ "MIT"
799
+ ],
800
+ "authors": [
801
+ {
802
+ "name": "PHP-FIG",
803
+ "homepage": "http://www.php-fig.org/"
804
+ }
805
+ ],
806
+ "description": "Common interface for HTTP clients",
807
+ "homepage": "https://github.com/php-fig/http-client",
808
+ "keywords": [
809
+ "http",
810
+ "http-client",
811
+ "psr",
812
+ "psr-18"
813
+ ],
814
+ "support": {
815
+ "source": "https://github.com/php-fig/http-client/tree/master"
816
+ },
817
+ "time": "2020-06-29T06:28:15+00:00"
818
+ },
819
+ {
820
+ "name": "psr/http-message",
821
+ "version": "1.0.1",
822
+ "source": {
823
+ "type": "git",
824
+ "url": "https://github.com/php-fig/http-message.git",
825
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
826
+ },
827
+ "dist": {
828
+ "type": "zip",
829
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
830
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
831
+ "shasum": ""
832
+ },
833
+ "require": {
834
+ "php": ">=5.3.0"
835
+ },
836
+ "type": "library",
837
+ "extra": {
838
+ "branch-alias": {
839
+ "dev-master": "1.0.x-dev"
840
+ }
841
+ },
842
+ "autoload": {
843
+ "psr-4": {
844
+ "Psr\\Http\\Message\\": "src/"
845
+ }
846
+ },
847
+ "notification-url": "https://packagist.org/downloads/",
848
+ "license": [
849
+ "MIT"
850
+ ],
851
+ "authors": [
852
+ {
853
+ "name": "PHP-FIG",
854
+ "homepage": "http://www.php-fig.org/"
855
+ }
856
+ ],
857
+ "description": "Common interface for HTTP messages",
858
+ "homepage": "https://github.com/php-fig/http-message",
859
+ "keywords": [
860
+ "http",
861
+ "http-message",
862
+ "psr",
863
+ "psr-7",
864
+ "request",
865
+ "response"
866
+ ],
867
+ "support": {
868
+ "source": "https://github.com/php-fig/http-message/tree/master"
869
+ },
870
+ "time": "2016-08-06T14:39:51+00:00"
871
+ },
872
+ {
873
+ "name": "psr/log",
874
+ "version": "1.1.3",
875
+ "source": {
876
+ "type": "git",
877
+ "url": "https://github.com/php-fig/log.git",
878
+ "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
879
+ },
880
+ "dist": {
881
+ "type": "zip",
882
+ "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
883
+ "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
884
+ "shasum": ""
885
+ },
886
+ "require": {
887
+ "php": ">=5.3.0"
888
+ },
889
+ "type": "library",
890
+ "extra": {
891
+ "branch-alias": {
892
+ "dev-master": "1.1.x-dev"
893
+ }
894
+ },
895
+ "autoload": {
896
+ "psr-4": {
897
+ "Psr\\Log\\": "Psr/Log/"
898
+ }
899
+ },
900
+ "notification-url": "https://packagist.org/downloads/",
901
+ "license": [
902
+ "MIT"
903
+ ],
904
+ "authors": [
905
+ {
906
+ "name": "PHP-FIG",
907
+ "homepage": "http://www.php-fig.org/"
908
+ }
909
+ ],
910
+ "description": "Common interface for logging libraries",
911
+ "homepage": "https://github.com/php-fig/log",
912
+ "keywords": [
913
+ "log",
914
+ "psr",
915
+ "psr-3"
916
+ ],
917
+ "support": {
918
+ "source": "https://github.com/php-fig/log/tree/1.1.3"
919
+ },
920
+ "time": "2020-03-23T09:12:05+00:00"
921
+ },
922
+ {
923
+ "name": "ralouphie/getallheaders",
924
+ "version": "3.0.3",
925
+ "source": {
926
+ "type": "git",
927
+ "url": "https://github.com/ralouphie/getallheaders.git",
928
+ "reference": "120b605dfeb996808c31b6477290a714d356e822"
929
+ },
930
+ "dist": {
931
+ "type": "zip",
932
+ "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
933
+ "reference": "120b605dfeb996808c31b6477290a714d356e822",
934
+ "shasum": ""
935
+ },
936
+ "require": {
937
+ "php": ">=5.6"
938
+ },
939
+ "require-dev": {
940
+ "php-coveralls/php-coveralls": "^2.1",
941
+ "phpunit/phpunit": "^5 || ^6.5"
942
+ },
943
+ "type": "library",
944
+ "autoload": {
945
+ "files": [
946
+ "src/getallheaders.php"
947
+ ]
948
+ },
949
+ "notification-url": "https://packagist.org/downloads/",
950
+ "license": [
951
+ "MIT"
952
+ ],
953
+ "authors": [
954
+ {
955
+ "name": "Ralph Khattar",
956
+ "email": "ralph.khattar@gmail.com"
957
+ }
958
+ ],
959
+ "description": "A polyfill for getallheaders.",
960
+ "support": {
961
+ "issues": "https://github.com/ralouphie/getallheaders/issues",
962
+ "source": "https://github.com/ralouphie/getallheaders/tree/develop"
963
+ },
964
+ "time": "2019-03-08T08:55:37+00:00"
965
+ }
966
+ ],
967
+ "packages-dev": [
968
+ {
969
+ "name": "cache/adapter-common",
970
+ "version": "1.2.0",
971
+ "source": {
972
+ "type": "git",
973
+ "url": "https://github.com/php-cache/adapter-common.git",
974
+ "reference": "6b87c5cbdf03be42437b595dbe5de8e97cd1d497"
975
+ },
976
+ "dist": {
977
+ "type": "zip",
978
+ "url": "https://api.github.com/repos/php-cache/adapter-common/zipball/6b87c5cbdf03be42437b595dbe5de8e97cd1d497",
979
+ "reference": "6b87c5cbdf03be42437b595dbe5de8e97cd1d497",
980
+ "shasum": ""
981
+ },
982
+ "require": {
983
+ "cache/tag-interop": "^1.0",
984
+ "php": "^5.6 || ^7.0 || ^8.0",
985
+ "psr/cache": "^1.0",
986
+ "psr/log": "^1.0",
987
+ "psr/simple-cache": "^1.0"
988
+ },
989
+ "require-dev": {
990
+ "cache/integration-tests": "^0.16",
991
+ "phpunit/phpunit": "^5.7.21"
992
+ },
993
+ "type": "library",
994
+ "extra": {
995
+ "branch-alias": {
996
+ "dev-master": "1.1-dev"
997
+ }
998
+ },
999
+ "autoload": {
1000
+ "psr-4": {
1001
+ "Cache\\Adapter\\Common\\": ""
1002
+ }
1003
+ },
1004
+ "notification-url": "https://packagist.org/downloads/",
1005
+ "license": [
1006
+ "MIT"
1007
+ ],
1008
+ "authors": [
1009
+ {
1010
+ "name": "Aaron Scherer",
1011
+ "email": "aequasi@gmail.com",
1012
+ "homepage": "https://github.com/aequasi"
1013
+ },
1014
+ {
1015
+ "name": "Tobias Nyholm",
1016
+ "email": "tobias.nyholm@gmail.com",
1017
+ "homepage": "https://github.com/nyholm"
1018
+ }
1019
+ ],
1020
+ "description": "Common classes for PSR-6 adapters",
1021
+ "homepage": "http://www.php-cache.com/en/latest/",
1022
+ "keywords": [
1023
+ "cache",
1024
+ "psr-6",
1025
+ "tag"
1026
+ ],
1027
+ "support": {
1028
+ "source": "https://github.com/php-cache/adapter-common/tree/1.2.0"
1029
+ },
1030
+ "time": "2020-12-14T12:17:39+00:00"
1031
+ },
1032
+ {
1033
+ "name": "cache/filesystem-adapter",
1034
+ "version": "1.1.0",
1035
+ "source": {
1036
+ "type": "git",
1037
+ "url": "https://github.com/php-cache/filesystem-adapter.git",
1038
+ "reference": "1501ca71502f45114844824209e6a41d87afb221"
1039
+ },
1040
+ "dist": {
1041
+ "type": "zip",
1042
+ "url": "https://api.github.com/repos/php-cache/filesystem-adapter/zipball/1501ca71502f45114844824209e6a41d87afb221",
1043
+ "reference": "1501ca71502f45114844824209e6a41d87afb221",
1044
+ "shasum": ""
1045
+ },
1046
+ "require": {
1047
+ "cache/adapter-common": "^1.0",
1048
+ "league/flysystem": "^1.0",
1049
+ "php": "^5.6 || ^7.0 || ^8.0",
1050
+ "psr/cache": "^1.0",
1051
+ "psr/simple-cache": "^1.0"
1052
+ },
1053
+ "provide": {
1054
+ "psr/cache-implementation": "^1.0",
1055
+ "psr/simple-cache-implementation": "^1.0"
1056
+ },
1057
+ "require-dev": {
1058
+ "cache/integration-tests": "^0.16",
1059
+ "phpunit/phpunit": "^5.7.21"
1060
+ },
1061
+ "type": "library",
1062
+ "extra": {
1063
+ "branch-alias": {
1064
+ "dev-master": "1.1-dev"
1065
+ }
1066
+ },
1067
+ "autoload": {
1068
+ "psr-4": {
1069
+ "Cache\\Adapter\\Filesystem\\": ""
1070
+ },
1071
+ "exclude-from-classmap": [
1072
+ "/Tests/"
1073
+ ]
1074
+ },
1075
+ "notification-url": "https://packagist.org/downloads/",
1076
+ "license": [
1077
+ "MIT"
1078
+ ],
1079
+ "authors": [
1080
+ {
1081
+ "name": "Aaron Scherer",
1082
+ "email": "aequasi@gmail.com",
1083
+ "homepage": "https://github.com/aequasi"
1084
+ },
1085
+ {
1086
+ "name": "Tobias Nyholm",
1087
+ "email": "tobias.nyholm@gmail.com",
1088
+ "homepage": "https://github.com/nyholm"
1089
+ }
1090
+ ],
1091
+ "description": "A PSR-6 cache implementation using filesystem. This implementation supports tags",
1092
+ "homepage": "http://www.php-cache.com/en/latest/",
1093
+ "keywords": [
1094
+ "cache",
1095
+ "filesystem",
1096
+ "psr-6",
1097
+ "tag"
1098
+ ],
1099
+ "support": {
1100
+ "source": "https://github.com/php-cache/filesystem-adapter/tree/1.1.0"
1101
+ },
1102
+ "time": "2020-12-14T12:17:39+00:00"
1103
+ },
1104
+ {
1105
+ "name": "cache/tag-interop",
1106
+ "version": "1.0.1",
1107
+ "source": {
1108
+ "type": "git",
1109
+ "url": "https://github.com/php-cache/tag-interop.git",
1110
+ "reference": "909a5df87e698f1665724a9e84851c11c45fbfb9"
1111
+ },
1112
+ "dist": {
1113
+ "type": "zip",
1114
+ "url": "https://api.github.com/repos/php-cache/tag-interop/zipball/909a5df87e698f1665724a9e84851c11c45fbfb9",
1115
+ "reference": "909a5df87e698f1665724a9e84851c11c45fbfb9",
1116
+ "shasum": ""
1117
+ },
1118
+ "require": {
1119
+ "php": "^5.5 || ^7.0 || ^8.0",
1120
+ "psr/cache": "^1.0"
1121
+ },
1122
+ "type": "library",
1123
+ "extra": {
1124
+ "branch-alias": {
1125
+ "dev-master": "1.1-dev"
1126
+ }
1127
+ },
1128
+ "autoload": {
1129
+ "psr-4": {
1130
+ "Cache\\TagInterop\\": ""
1131
+ }
1132
+ },
1133
+ "notification-url": "https://packagist.org/downloads/",
1134
+ "license": [
1135
+ "MIT"
1136
+ ],
1137
+ "authors": [
1138
+ {
1139
+ "name": "Tobias Nyholm",
1140
+ "email": "tobias.nyholm@gmail.com",
1141
+ "homepage": "https://github.com/nyholm"
1142
+ },
1143
+ {
1144
+ "name": "Nicolas Grekas",
1145
+ "email": "p@tchwork.com",
1146
+ "homepage": "https://github.com/nicolas-grekas"
1147
+ }
1148
+ ],
1149
+ "description": "Framework interoperable interfaces for tags",
1150
+ "homepage": "https://www.php-cache.com/en/latest/",
1151
+ "keywords": [
1152
+ "cache",
1153
+ "psr",
1154
+ "psr6",
1155
+ "tag"
1156
+ ],
1157
+ "support": {
1158
+ "issues": "https://github.com/php-cache/tag-interop/issues",
1159
+ "source": "https://github.com/php-cache/tag-interop/tree/1.0.1"
1160
+ },
1161
+ "time": "2020-12-04T14:11:04+00:00"
1162
+ },
1163
+ {
1164
+ "name": "composer/ca-bundle",
1165
+ "version": "1.2.9",
1166
+ "source": {
1167
+ "type": "git",
1168
+ "url": "https://github.com/composer/ca-bundle.git",
1169
+ "reference": "78a0e288fdcebf92aa2318a8d3656168da6ac1a5"
1170
+ },
1171
+ "dist": {
1172
+ "type": "zip",
1173
+ "url": "https://api.github.com/repos/composer/ca-bundle/zipball/78a0e288fdcebf92aa2318a8d3656168da6ac1a5",
1174
+ "reference": "78a0e288fdcebf92aa2318a8d3656168da6ac1a5",
1175
+ "shasum": ""
1176
+ },
1177
+ "require": {
1178
+ "ext-openssl": "*",
1179
+ "ext-pcre": "*",
1180
+ "php": "^5.3.2 || ^7.0 || ^8.0"
1181
+ },
1182
+ "require-dev": {
1183
+ "phpstan/phpstan": "^0.12.55",
1184
+ "psr/log": "^1.0",
1185
+ "symfony/phpunit-bridge": "^4.2 || ^5",
1186
+ "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0"
1187
+ },
1188
+ "type": "library",
1189
+ "extra": {
1190
+ "branch-alias": {
1191
+ "dev-main": "1.x-dev"
1192
+ }
1193
+ },
1194
+ "autoload": {
1195
+ "psr-4": {
1196
+ "Composer\\CaBundle\\": "src"
1197
+ }
1198
+ },
1199
+ "notification-url": "https://packagist.org/downloads/",
1200
+ "license": [
1201
+ "MIT"
1202
+ ],
1203
+ "authors": [
1204
+ {
1205
+ "name": "Jordi Boggiano",
1206
+ "email": "j.boggiano@seld.be",
1207
+ "homepage": "http://seld.be"
1208
+ }
1209
+ ],
1210
+ "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.",
1211
+ "keywords": [
1212
+ "cabundle",
1213
+ "cacert",
1214
+ "certificate",
1215
+ "ssl",
1216
+ "tls"
1217
+ ],
1218
+ "support": {
1219
+ "irc": "irc://irc.freenode.org/composer",
1220
+ "issues": "https://github.com/composer/ca-bundle/issues",
1221
+ "source": "https://github.com/composer/ca-bundle/tree/1.2.9"
1222
+ },
1223
+ "funding": [
1224
+ {
1225
+ "url": "https://packagist.com",
1226
+ "type": "custom"
1227
+ },
1228
+ {
1229
+ "url": "https://github.com/composer",
1230
+ "type": "github"
1231
+ },
1232
+ {
1233
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
1234
+ "type": "tidelift"
1235
+ }
1236
+ ],
1237
+ "time": "2021-01-12T12:10:35+00:00"
1238
+ },
1239
+ {
1240
+ "name": "composer/composer",
1241
+ "version": "1.10.21",
1242
+ "source": {
1243
+ "type": "git",
1244
+ "url": "https://github.com/composer/composer.git",
1245
+ "reference": "04021432f4a9cbd9351dd166b8c193f42c36a39c"
1246
+ },
1247
+ "dist": {
1248
+ "type": "zip",
1249
+ "url": "https://api.github.com/repos/composer/composer/zipball/04021432f4a9cbd9351dd166b8c193f42c36a39c",
1250
+ "reference": "04021432f4a9cbd9351dd166b8c193f42c36a39c",
1251
+ "shasum": ""
1252
+ },
1253
+ "require": {
1254
+ "composer/ca-bundle": "^1.0",
1255
+ "composer/semver": "^1.0",
1256
+ "composer/spdx-licenses": "^1.2",
1257
+ "composer/xdebug-handler": "^1.1",
1258
+ "justinrainbow/json-schema": "^5.2.10",
1259
+ "php": "^5.3.2 || ^7.0 || ^8.0",
1260
+ "psr/log": "^1.0",
1261
+ "seld/jsonlint": "^1.4",
1262
+ "seld/phar-utils": "^1.0",
1263
+ "symfony/console": "^2.7 || ^3.0 || ^4.0 || ^5.0",
1264
+ "symfony/filesystem": "^2.7 || ^3.0 || ^4.0 || ^5.0",
1265
+ "symfony/finder": "^2.7 || ^3.0 || ^4.0 || ^5.0",
1266
+ "symfony/process": "^2.7 || ^3.0 || ^4.0 || ^5.0"
1267
+ },
1268
+ "conflict": {
1269
+ "symfony/console": "2.8.38"
1270
+ },
1271
+ "require-dev": {
1272
+ "phpspec/prophecy": "^1.10",
1273
+ "symfony/phpunit-bridge": "^4.2"
1274
+ },
1275
+ "suggest": {
1276
+ "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages",
1277
+ "ext-zip": "Enabling the zip extension allows you to unzip archives",
1278
+ "ext-zlib": "Allow gzip compression of HTTP requests"
1279
+ },
1280
+ "bin": [
1281
+ "bin/composer"
1282
+ ],
1283
+ "type": "library",
1284
+ "extra": {
1285
+ "branch-alias": {
1286
+ "dev-master": "1.10-dev"
1287
+ }
1288
+ },
1289
+ "autoload": {
1290
+ "psr-4": {
1291
+ "Composer\\": "src/Composer"
1292
+ }
1293
+ },
1294
+ "notification-url": "https://packagist.org/downloads/",
1295
+ "license": [
1296
+ "MIT"
1297
+ ],
1298
+ "authors": [
1299
+ {
1300
+ "name": "Nils Adermann",
1301
+ "email": "naderman@naderman.de",
1302
+ "homepage": "http://www.naderman.de"
1303
+ },
1304
+ {
1305
+ "name": "Jordi Boggiano",
1306
+ "email": "j.boggiano@seld.be",
1307
+ "homepage": "http://seld.be"
1308
+ }
1309
+ ],
1310
+ "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.",
1311
+ "homepage": "https://getcomposer.org/",
1312
+ "keywords": [
1313
+ "autoload",
1314
+ "dependency",
1315
+ "package"
1316
+ ],
1317
+ "support": {
1318
+ "irc": "irc://irc.freenode.org/composer",
1319
+ "issues": "https://github.com/composer/composer/issues",
1320
+ "source": "https://github.com/composer/composer/tree/1.10.21"
1321
+ },
1322
+ "funding": [
1323
+ {
1324
+ "url": "https://packagist.com",
1325
+ "type": "custom"
1326
+ },
1327
+ {
1328
+ "url": "https://github.com/composer",
1329
+ "type": "github"
1330
+ },
1331
+ {
1332
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
1333
+ "type": "tidelift"
1334
+ }
1335
+ ],
1336
+ "time": "2021-04-01T07:16:35+00:00"
1337
+ },
1338
+ {
1339
+ "name": "composer/semver",
1340
+ "version": "1.7.2",
1341
+ "source": {
1342
+ "type": "git",
1343
+ "url": "https://github.com/composer/semver.git",
1344
+ "reference": "647490bbcaf7fc4891c58f47b825eb99d19c377a"
1345
+ },
1346
+ "dist": {
1347
+ "type": "zip",
1348
+ "url": "https://api.github.com/repos/composer/semver/zipball/647490bbcaf7fc4891c58f47b825eb99d19c377a",
1349
+ "reference": "647490bbcaf7fc4891c58f47b825eb99d19c377a",
1350
+ "shasum": ""
1351
+ },
1352
+ "require": {
1353
+ "php": "^5.3.2 || ^7.0 || ^8.0"
1354
+ },
1355
+ "require-dev": {
1356
+ "phpunit/phpunit": "^4.5 || ^5.0.5"
1357
+ },
1358
+ "type": "library",
1359
+ "extra": {
1360
+ "branch-alias": {
1361
+ "dev-master": "1.x-dev"
1362
+ }
1363
+ },
1364
+ "autoload": {
1365
+ "psr-4": {
1366
+ "Composer\\Semver\\": "src"
1367
+ }
1368
+ },
1369
+ "notification-url": "https://packagist.org/downloads/",
1370
+ "license": [
1371
+ "MIT"
1372
+ ],
1373
+ "authors": [
1374
+ {
1375
+ "name": "Nils Adermann",
1376
+ "email": "naderman@naderman.de",
1377
+ "homepage": "http://www.naderman.de"
1378
+ },
1379
+ {
1380
+ "name": "Jordi Boggiano",
1381
+ "email": "j.boggiano@seld.be",
1382
+ "homepage": "http://seld.be"
1383
+ },
1384
+ {
1385
+ "name": "Rob Bast",
1386
+ "email": "rob.bast@gmail.com",
1387
+ "homepage": "http://robbast.nl"
1388
+ }
1389
+ ],
1390
+ "description": "Semver library that offers utilities, version constraint parsing and validation.",
1391
+ "keywords": [
1392
+ "semantic",
1393
+ "semver",
1394
+ "validation",
1395
+ "versioning"
1396
+ ],
1397
+ "support": {
1398
+ "irc": "irc://irc.freenode.org/composer",
1399
+ "issues": "https://github.com/composer/semver/issues",
1400
+ "source": "https://github.com/composer/semver/tree/1.7.2"
1401
+ },
1402
+ "funding": [
1403
+ {
1404
+ "url": "https://packagist.com",
1405
+ "type": "custom"
1406
+ },
1407
+ {
1408
+ "url": "https://github.com/composer",
1409
+ "type": "github"
1410
+ },
1411
+ {
1412
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
1413
+ "type": "tidelift"
1414
+ }
1415
+ ],
1416
+ "time": "2020-12-03T15:47:16+00:00"
1417
+ },
1418
+ {
1419
+ "name": "composer/spdx-licenses",
1420
+ "version": "1.5.5",
1421
+ "source": {
1422
+ "type": "git",
1423
+ "url": "https://github.com/composer/spdx-licenses.git",
1424
+ "reference": "de30328a7af8680efdc03e396aad24befd513200"
1425
+ },
1426
+ "dist": {
1427
+ "type": "zip",
1428
+ "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/de30328a7af8680efdc03e396aad24befd513200",
1429
+ "reference": "de30328a7af8680efdc03e396aad24befd513200",
1430
+ "shasum": ""
1431
+ },
1432
+ "require": {
1433
+ "php": "^5.3.2 || ^7.0 || ^8.0"
1434
+ },
1435
+ "require-dev": {
1436
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 7"
1437
+ },
1438
+ "type": "library",
1439
+ "extra": {
1440
+ "branch-alias": {
1441
+ "dev-main": "1.x-dev"
1442
+ }
1443
+ },
1444
+ "autoload": {
1445
+ "psr-4": {
1446
+ "Composer\\Spdx\\": "src"
1447
+ }
1448
+ },
1449
+ "notification-url": "https://packagist.org/downloads/",
1450
+ "license": [
1451
+ "MIT"
1452
+ ],
1453
+ "authors": [
1454
+ {
1455
+ "name": "Nils Adermann",
1456
+ "email": "naderman@naderman.de",
1457
+ "homepage": "http://www.naderman.de"
1458
+ },
1459
+ {
1460
+ "name": "Jordi Boggiano",
1461
+ "email": "j.boggiano@seld.be",
1462
+ "homepage": "http://seld.be"
1463
+ },
1464
+ {
1465
+ "name": "Rob Bast",
1466
+ "email": "rob.bast@gmail.com",
1467
+ "homepage": "http://robbast.nl"
1468
+ }
1469
+ ],
1470
+ "description": "SPDX licenses list and validation library.",
1471
+ "keywords": [
1472
+ "license",
1473
+ "spdx",
1474
+ "validator"
1475
+ ],
1476
+ "support": {
1477
+ "irc": "irc://irc.freenode.org/composer",
1478
+ "issues": "https://github.com/composer/spdx-licenses/issues",
1479
+ "source": "https://github.com/composer/spdx-licenses/tree/1.5.5"
1480
+ },
1481
+ "funding": [
1482
+ {
1483
+ "url": "https://packagist.com",
1484
+ "type": "custom"
1485
+ },
1486
+ {
1487
+ "url": "https://github.com/composer",
1488
+ "type": "github"
1489
+ },
1490
+ {
1491
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
1492
+ "type": "tidelift"
1493
+ }
1494
+ ],
1495
+ "time": "2020-12-03T16:04:16+00:00"
1496
+ },
1497
+ {
1498
+ "name": "composer/xdebug-handler",
1499
+ "version": "1.4.6",
1500
+ "source": {
1501
+ "type": "git",
1502
+ "url": "https://github.com/composer/xdebug-handler.git",
1503
+ "reference": "f27e06cd9675801df441b3656569b328e04aa37c"
1504
+ },
1505
+ "dist": {
1506
+ "type": "zip",
1507
+ "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/f27e06cd9675801df441b3656569b328e04aa37c",
1508
+ "reference": "f27e06cd9675801df441b3656569b328e04aa37c",
1509
+ "shasum": ""
1510
+ },
1511
+ "require": {
1512
+ "php": "^5.3.2 || ^7.0 || ^8.0",
1513
+ "psr/log": "^1.0"
1514
+ },
1515
+ "require-dev": {
1516
+ "phpstan/phpstan": "^0.12.55",
1517
+ "symfony/phpunit-bridge": "^4.2 || ^5"
1518
+ },
1519
+ "type": "library",
1520
+ "autoload": {
1521
+ "psr-4": {
1522
+ "Composer\\XdebugHandler\\": "src"
1523
+ }
1524
+ },
1525
+ "notification-url": "https://packagist.org/downloads/",
1526
+ "license": [
1527
+ "MIT"
1528
+ ],
1529
+ "authors": [
1530
+ {
1531
+ "name": "John Stevenson",
1532
+ "email": "john-stevenson@blueyonder.co.uk"
1533
+ }
1534
+ ],
1535
+ "description": "Restarts a process without Xdebug.",
1536
+ "keywords": [
1537
+ "Xdebug",
1538
+ "performance"
1539
+ ],
1540
+ "support": {
1541
+ "irc": "irc://irc.freenode.org/composer",
1542
+ "issues": "https://github.com/composer/xdebug-handler/issues",
1543
+ "source": "https://github.com/composer/xdebug-handler/tree/1.4.6"
1544
+ },
1545
+ "funding": [
1546
+ {
1547
+ "url": "https://packagist.com",
1548
+ "type": "custom"
1549
+ },
1550
+ {
1551
+ "url": "https://github.com/composer",
1552
+ "type": "github"
1553
+ },
1554
+ {
1555
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
1556
+ "type": "tidelift"
1557
+ }
1558
+ ],
1559
+ "time": "2021-03-25T17:01:18+00:00"
1560
+ },
1561
+ {
1562
+ "name": "dealerdirect/phpcodesniffer-composer-installer",
1563
+ "version": "v0.7.1",
1564
+ "source": {
1565
+ "type": "git",
1566
+ "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git",
1567
+ "reference": "fe390591e0241955f22eb9ba327d137e501c771c"
1568
+ },
1569
+ "dist": {
1570
+ "type": "zip",
1571
+ "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/fe390591e0241955f22eb9ba327d137e501c771c",
1572
+ "reference": "fe390591e0241955f22eb9ba327d137e501c771c",
1573
+ "shasum": ""
1574
+ },
1575
+ "require": {
1576
+ "composer-plugin-api": "^1.0 || ^2.0",
1577
+ "php": ">=5.3",
1578
+ "squizlabs/php_codesniffer": "^2.0 || ^3.0 || ^4.0"
1579
+ },
1580
+ "require-dev": {
1581
+ "composer/composer": "*",
1582
+ "phpcompatibility/php-compatibility": "^9.0",
1583
+ "sensiolabs/security-checker": "^4.1.0"
1584
+ },
1585
+ "type": "composer-plugin",
1586
+ "extra": {
1587
+ "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin"
1588
+ },
1589
+ "autoload": {
1590
+ "psr-4": {
1591
+ "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/"
1592
+ }
1593
+ },
1594
+ "notification-url": "https://packagist.org/downloads/",
1595
+ "license": [
1596
+ "MIT"
1597
+ ],
1598
+ "authors": [
1599
+ {
1600
+ "name": "Franck Nijhof",
1601
+ "email": "franck.nijhof@dealerdirect.com",
1602
+ "homepage": "http://www.frenck.nl",
1603
+ "role": "Developer / IT Manager"
1604
+ }
1605
+ ],
1606
+ "description": "PHP_CodeSniffer Standards Composer Installer Plugin",
1607
+ "homepage": "http://www.dealerdirect.com",
1608
+ "keywords": [
1609
+ "PHPCodeSniffer",
1610
+ "PHP_CodeSniffer",
1611
+ "code quality",
1612
+ "codesniffer",
1613
+ "composer",
1614
+ "installer",
1615
+ "phpcs",
1616
+ "plugin",
1617
+ "qa",
1618
+ "quality",
1619
+ "standard",
1620
+ "standards",
1621
+ "style guide",
1622
+ "stylecheck",
1623
+ "tests"
1624
+ ],
1625
+ "support": {
1626
+ "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues",
1627
+ "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer"
1628
+ },
1629
+ "time": "2020-12-07T18:04:37+00:00"
1630
+ },
1631
+ {
1632
+ "name": "doctrine/instantiator",
1633
+ "version": "1.4.0",
1634
+ "source": {
1635
+ "type": "git",
1636
+ "url": "https://github.com/doctrine/instantiator.git",
1637
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
1638
+ },
1639
+ "dist": {
1640
+ "type": "zip",
1641
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
1642
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
1643
+ "shasum": ""
1644
+ },
1645
+ "require": {
1646
+ "php": "^7.1 || ^8.0"
1647
+ },
1648
+ "require-dev": {
1649
+ "doctrine/coding-standard": "^8.0",
1650
+ "ext-pdo": "*",
1651
+ "ext-phar": "*",
1652
+ "phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
1653
+ "phpstan/phpstan": "^0.12",
1654
+ "phpstan/phpstan-phpunit": "^0.12",
1655
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
1656
+ },
1657
+ "type": "library",
1658
+ "autoload": {
1659
+ "psr-4": {
1660
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
1661
+ }
1662
+ },
1663
+ "notification-url": "https://packagist.org/downloads/",
1664
+ "license": [
1665
+ "MIT"
1666
+ ],
1667
+ "authors": [
1668
+ {
1669
+ "name": "Marco Pivetta",
1670
+ "email": "ocramius@gmail.com",
1671
+ "homepage": "https://ocramius.github.io/"
1672
+ }
1673
+ ],
1674
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
1675
+ "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
1676
+ "keywords": [
1677
+ "constructor",
1678
+ "instantiate"
1679
+ ],
1680
+ "support": {
1681
+ "issues": "https://github.com/doctrine/instantiator/issues",
1682
+ "source": "https://github.com/doctrine/instantiator/tree/1.4.0"
1683
+ },
1684
+ "funding": [
1685
+ {
1686
+ "url": "https://www.doctrine-project.org/sponsorship.html",
1687
+ "type": "custom"
1688
+ },
1689
+ {
1690
+ "url": "https://www.patreon.com/phpdoctrine",
1691
+ "type": "patreon"
1692
+ },
1693
+ {
1694
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
1695
+ "type": "tidelift"
1696
+ }
1697
+ ],
1698
+ "time": "2020-11-10T18:47:58+00:00"
1699
+ },
1700
+ {
1701
+ "name": "justinrainbow/json-schema",
1702
+ "version": "5.2.10",
1703
+ "source": {
1704
+ "type": "git",
1705
+ "url": "https://github.com/justinrainbow/json-schema.git",
1706
+ "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b"
1707
+ },
1708
+ "dist": {
1709
+ "type": "zip",
1710
+ "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b",
1711
+ "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b",
1712
+ "shasum": ""
1713
+ },
1714
+ "require": {
1715
+ "php": ">=5.3.3"
1716
+ },
1717
+ "require-dev": {
1718
+ "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1",
1719
+ "json-schema/json-schema-test-suite": "1.2.0",
1720
+ "phpunit/phpunit": "^4.8.35"
1721
+ },
1722
+ "bin": [
1723
+ "bin/validate-json"
1724
+ ],
1725
+ "type": "library",
1726
+ "extra": {
1727
+ "branch-alias": {
1728
+ "dev-master": "5.0.x-dev"
1729
+ }
1730
+ },
1731
+ "autoload": {
1732
+ "psr-4": {
1733
+ "JsonSchema\\": "src/JsonSchema/"
1734
+ }
1735
+ },
1736
+ "notification-url": "https://packagist.org/downloads/",
1737
+ "license": [
1738
+ "MIT"
1739
+ ],
1740
+ "authors": [
1741
+ {
1742
+ "name": "Bruno Prieto Reis",
1743
+ "email": "bruno.p.reis@gmail.com"
1744
+ },
1745
+ {
1746
+ "name": "Justin Rainbow",
1747
+ "email": "justin.rainbow@gmail.com"
1748
+ },
1749
+ {
1750
+ "name": "Igor Wiedler",
1751
+ "email": "igor@wiedler.ch"
1752
+ },
1753
+ {
1754
+ "name": "Robert Schönthal",
1755
+ "email": "seroscho@googlemail.com"
1756
+ }
1757
+ ],
1758
+ "description": "A library to validate a json schema.",
1759
+ "homepage": "https://github.com/justinrainbow/json-schema",
1760
+ "keywords": [
1761
+ "json",
1762
+ "schema"
1763
+ ],
1764
+ "support": {
1765
+ "issues": "https://github.com/justinrainbow/json-schema/issues",
1766
+ "source": "https://github.com/justinrainbow/json-schema/tree/5.2.10"
1767
+ },
1768
+ "time": "2020-05-27T16:41:55+00:00"
1769
+ },
1770
+ {
1771
+ "name": "league/flysystem",
1772
+ "version": "1.1.3",
1773
+ "source": {
1774
+ "type": "git",
1775
+ "url": "https://github.com/thephpleague/flysystem.git",
1776
+ "reference": "9be3b16c877d477357c015cec057548cf9b2a14a"
1777
+ },
1778
+ "dist": {
1779
+ "type": "zip",
1780
+ "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9be3b16c877d477357c015cec057548cf9b2a14a",
1781
+ "reference": "9be3b16c877d477357c015cec057548cf9b2a14a",
1782
+ "shasum": ""
1783
+ },
1784
+ "require": {
1785
+ "ext-fileinfo": "*",
1786
+ "league/mime-type-detection": "^1.3",
1787
+ "php": "^7.2.5 || ^8.0"
1788
+ },
1789
+ "conflict": {
1790
+ "league/flysystem-sftp": "<1.0.6"
1791
+ },
1792
+ "require-dev": {
1793
+ "phpspec/prophecy": "^1.11.1",
1794
+ "phpunit/phpunit": "^8.5.8"
1795
+ },
1796
+ "suggest": {
1797
+ "ext-fileinfo": "Required for MimeType",
1798
+ "ext-ftp": "Allows you to use FTP server storage",
1799
+ "ext-openssl": "Allows you to use FTPS server storage",
1800
+ "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2",
1801
+ "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3",
1802
+ "league/flysystem-azure": "Allows you to use Windows Azure Blob storage",
1803
+ "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching",
1804
+ "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem",
1805
+ "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files",
1806
+ "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib",
1807
+ "league/flysystem-webdav": "Allows you to use WebDAV storage",
1808
+ "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter",
1809
+ "spatie/flysystem-dropbox": "Allows you to use Dropbox storage",
1810
+ "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications"
1811
+ },
1812
+ "type": "library",
1813
+ "extra": {
1814
+ "branch-alias": {
1815
+ "dev-master": "1.1-dev"
1816
+ }
1817
+ },
1818
+ "autoload": {
1819
+ "psr-4": {
1820
+ "League\\Flysystem\\": "src/"
1821
+ }
1822
+ },
1823
+ "notification-url": "https://packagist.org/downloads/",
1824
+ "license": [
1825
+ "MIT"
1826
+ ],
1827
+ "authors": [
1828
+ {
1829
+ "name": "Frank de Jonge",
1830
+ "email": "info@frenky.net"
1831
+ }
1832
+ ],
1833
+ "description": "Filesystem abstraction: Many filesystems, one API.",
1834
+ "keywords": [
1835
+ "Cloud Files",
1836
+ "WebDAV",
1837
+ "abstraction",
1838
+ "aws",
1839
+ "cloud",
1840
+ "copy.com",
1841
+ "dropbox",
1842
+ "file systems",
1843
+ "files",
1844
+ "filesystem",
1845
+ "filesystems",
1846
+ "ftp",
1847
+ "rackspace",
1848
+ "remote",
1849
+ "s3",
1850
+ "sftp",
1851
+ "storage"
1852
+ ],
1853
+ "support": {
1854
+ "issues": "https://github.com/thephpleague/flysystem/issues",
1855
+ "source": "https://github.com/thephpleague/flysystem/tree/1.x"
1856
+ },
1857
+ "funding": [
1858
+ {
1859
+ "url": "https://offset.earth/frankdejonge",
1860
+ "type": "other"
1861
+ }
1862
+ ],
1863
+ "time": "2020-08-23T07:39:11+00:00"
1864
+ },
1865
+ {
1866
+ "name": "league/mime-type-detection",
1867
+ "version": "1.7.0",
1868
+ "source": {
1869
+ "type": "git",
1870
+ "url": "https://github.com/thephpleague/mime-type-detection.git",
1871
+ "reference": "3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3"
1872
+ },
1873
+ "dist": {
1874
+ "type": "zip",
1875
+ "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3",
1876
+ "reference": "3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3",
1877
+ "shasum": ""
1878
+ },
1879
+ "require": {
1880
+ "ext-fileinfo": "*",
1881
+ "php": "^7.2 || ^8.0"
1882
+ },
1883
+ "require-dev": {
1884
+ "friendsofphp/php-cs-fixer": "^2.18",
1885
+ "phpstan/phpstan": "^0.12.68",
1886
+ "phpunit/phpunit": "^8.5.8 || ^9.3"
1887
+ },
1888
+ "type": "library",
1889
+ "autoload": {
1890
+ "psr-4": {
1891
+ "League\\MimeTypeDetection\\": "src"
1892
+ }
1893
+ },
1894
+ "notification-url": "https://packagist.org/downloads/",
1895
+ "license": [
1896
+ "MIT"
1897
+ ],
1898
+ "authors": [
1899
+ {
1900
+ "name": "Frank de Jonge",
1901
+ "email": "info@frankdejonge.nl"
1902
+ }
1903
+ ],
1904
+ "description": "Mime-type detection for Flysystem",
1905
+ "support": {
1906
+ "issues": "https://github.com/thephpleague/mime-type-detection/issues",
1907
+ "source": "https://github.com/thephpleague/mime-type-detection/tree/1.7.0"
1908
+ },
1909
+ "funding": [
1910
+ {
1911
+ "url": "https://github.com/frankdejonge",
1912
+ "type": "github"
1913
+ },
1914
+ {
1915
+ "url": "https://tidelift.com/funding/github/packagist/league/flysystem",
1916
+ "type": "tidelift"
1917
+ }
1918
+ ],
1919
+ "time": "2021-01-18T20:58:21+00:00"
1920
+ },
1921
+ {
1922
+ "name": "myclabs/deep-copy",
1923
+ "version": "1.10.2",
1924
+ "source": {
1925
+ "type": "git",
1926
+ "url": "https://github.com/myclabs/DeepCopy.git",
1927
+ "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220"
1928
+ },
1929
+ "dist": {
1930
+ "type": "zip",
1931
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220",
1932
+ "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220",
1933
+ "shasum": ""
1934
+ },
1935
+ "require": {
1936
+ "php": "^7.1 || ^8.0"
1937
+ },
1938
+ "replace": {
1939
+ "myclabs/deep-copy": "self.version"
1940
+ },
1941
+ "require-dev": {
1942
+ "doctrine/collections": "^1.0",
1943
+ "doctrine/common": "^2.6",
1944
+ "phpunit/phpunit": "^7.1"
1945
+ },
1946
+ "type": "library",
1947
+ "autoload": {
1948
+ "psr-4": {
1949
+ "DeepCopy\\": "src/DeepCopy/"
1950
+ },
1951
+ "files": [
1952
+ "src/DeepCopy/deep_copy.php"
1953
+ ]
1954
+ },
1955
+ "notification-url": "https://packagist.org/downloads/",
1956
+ "license": [
1957
+ "MIT"
1958
+ ],
1959
+ "description": "Create deep copies (clones) of your objects",
1960
+ "keywords": [
1961
+ "clone",
1962
+ "copy",
1963
+ "duplicate",
1964
+ "object",
1965
+ "object graph"
1966
+ ],
1967
+ "support": {
1968
+ "issues": "https://github.com/myclabs/DeepCopy/issues",
1969
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2"
1970
+ },
1971
+ "funding": [
1972
+ {
1973
+ "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
1974
+ "type": "tidelift"
1975
+ }
1976
+ ],
1977
+ "time": "2020-11-13T09:40:50+00:00"
1978
+ },
1979
+ {
1980
+ "name": "phar-io/manifest",
1981
+ "version": "2.0.1",
1982
+ "source": {
1983
+ "type": "git",
1984
+ "url": "https://github.com/phar-io/manifest.git",
1985
+ "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133"
1986
+ },
1987
+ "dist": {
1988
+ "type": "zip",
1989
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
1990
+ "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
1991
+ "shasum": ""
1992
+ },
1993
+ "require": {
1994
+ "ext-dom": "*",
1995
+ "ext-phar": "*",
1996
+ "ext-xmlwriter": "*",
1997
+ "phar-io/version": "^3.0.1",
1998
+ "php": "^7.2 || ^8.0"
1999
+ },
2000
+ "type": "library",
2001
+ "extra": {
2002
+ "branch-alias": {
2003
+ "dev-master": "2.0.x-dev"
2004
+ }
2005
+ },
2006
+ "autoload": {
2007
+ "classmap": [
2008
+ "src/"
2009
+ ]
2010
+ },
2011
+ "notification-url": "https://packagist.org/downloads/",
2012
+ "license": [
2013
+ "BSD-3-Clause"
2014
+ ],
2015
+ "authors": [
2016
+ {
2017
+ "name": "Arne Blankerts",
2018
+ "email": "arne@blankerts.de",
2019
+ "role": "Developer"
2020
+ },
2021
+ {
2022
+ "name": "Sebastian Heuer",
2023
+ "email": "sebastian@phpeople.de",
2024
+ "role": "Developer"
2025
+ },
2026
+ {
2027
+ "name": "Sebastian Bergmann",
2028
+ "email": "sebastian@phpunit.de",
2029
+ "role": "Developer"
2030
+ }
2031
+ ],
2032
+ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
2033
+ "support": {
2034
+ "issues": "https://github.com/phar-io/manifest/issues",
2035
+ "source": "https://github.com/phar-io/manifest/tree/master"
2036
+ },
2037
+ "time": "2020-06-27T14:33:11+00:00"
2038
+ },
2039
+ {
2040
+ "name": "phar-io/version",
2041
+ "version": "3.1.0",
2042
+ "source": {
2043
+ "type": "git",
2044
+ "url": "https://github.com/phar-io/version.git",
2045
+ "reference": "bae7c545bef187884426f042434e561ab1ddb182"
2046
+ },
2047
+ "dist": {
2048
+ "type": "zip",
2049
+ "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182",
2050
+ "reference": "bae7c545bef187884426f042434e561ab1ddb182",
2051
+ "shasum": ""
2052
+ },
2053
+ "require": {
2054
+ "php": "^7.2 || ^8.0"
2055
+ },
2056
+ "type": "library",
2057
+ "autoload": {
2058
+ "classmap": [
2059
+ "src/"
2060
+ ]
2061
+ },
2062
+ "notification-url": "https://packagist.org/downloads/",
2063
+ "license": [
2064
+ "BSD-3-Clause"
2065
+ ],
2066
+ "authors": [
2067
+ {
2068
+ "name": "Arne Blankerts",
2069
+ "email": "arne@blankerts.de",
2070
+ "role": "Developer"
2071
+ },
2072
+ {
2073
+ "name": "Sebastian Heuer",
2074
+ "email": "sebastian@phpeople.de",
2075
+ "role": "Developer"
2076
+ },
2077
+ {
2078
+ "name": "Sebastian Bergmann",
2079
+ "email": "sebastian@phpunit.de",
2080
+ "role": "Developer"
2081
+ }
2082
+ ],
2083
+ "description": "Library for handling version information and constraints",
2084
+ "support": {
2085
+ "issues": "https://github.com/phar-io/version/issues",
2086
+ "source": "https://github.com/phar-io/version/tree/3.1.0"
2087
+ },
2088
+ "time": "2021-02-23T14:00:09+00:00"
2089
+ },
2090
+ {
2091
+ "name": "phpcompatibility/php-compatibility",
2092
+ "version": "9.3.5",
2093
+ "source": {
2094
+ "type": "git",
2095
+ "url": "https://github.com/PHPCompatibility/PHPCompatibility.git",
2096
+ "reference": "9fb324479acf6f39452e0655d2429cc0d3914243"
2097
+ },
2098
+ "dist": {
2099
+ "type": "zip",
2100
+ "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243",
2101
+ "reference": "9fb324479acf6f39452e0655d2429cc0d3914243",
2102
+ "shasum": ""
2103
+ },
2104
+ "require": {
2105
+ "php": ">=5.3",
2106
+ "squizlabs/php_codesniffer": "^2.3 || ^3.0.2"
2107
+ },
2108
+ "conflict": {
2109
+ "squizlabs/php_codesniffer": "2.6.2"
2110
+ },
2111
+ "require-dev": {
2112
+ "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0"
2113
+ },
2114
+ "suggest": {
2115
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.",
2116
+ "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues."
2117
+ },
2118
+ "type": "phpcodesniffer-standard",
2119
+ "notification-url": "https://packagist.org/downloads/",
2120
+ "license": [
2121
+ "LGPL-3.0-or-later"
2122
+ ],
2123
+ "authors": [
2124
+ {
2125
+ "name": "Wim Godden",
2126
+ "homepage": "https://github.com/wimg",
2127
+ "role": "lead"
2128
+ },
2129
+ {
2130
+ "name": "Juliette Reinders Folmer",
2131
+ "homepage": "https://github.com/jrfnl",
2132
+ "role": "lead"
2133
+ },
2134
+ {
2135
+ "name": "Contributors",
2136
+ "homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors"
2137
+ }
2138
+ ],
2139
+ "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.",
2140
+ "homepage": "http://techblog.wimgodden.be/tag/codesniffer/",
2141
+ "keywords": [
2142
+ "compatibility",
2143
+ "phpcs",
2144
+ "standards"
2145
+ ],
2146
+ "support": {
2147
+ "issues": "https://github.com/PHPCompatibility/PHPCompatibility/issues",
2148
+ "source": "https://github.com/PHPCompatibility/PHPCompatibility"
2149
+ },
2150
+ "time": "2019-12-27T09:44:58+00:00"
2151
+ },
2152
+ {
2153
+ "name": "phpdocumentor/reflection-common",
2154
+ "version": "2.2.0",
2155
+ "source": {
2156
+ "type": "git",
2157
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
2158
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
2159
+ },
2160
+ "dist": {
2161
+ "type": "zip",
2162
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
2163
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
2164
+ "shasum": ""
2165
+ },
2166
+ "require": {
2167
+ "php": "^7.2 || ^8.0"
2168
+ },
2169
+ "type": "library",
2170
+ "extra": {
2171
+ "branch-alias": {
2172
+ "dev-2.x": "2.x-dev"
2173
+ }
2174
+ },
2175
+ "autoload": {
2176
+ "psr-4": {
2177
+ "phpDocumentor\\Reflection\\": "src/"
2178
+ }
2179
+ },
2180
+ "notification-url": "https://packagist.org/downloads/",
2181
+ "license": [
2182
+ "MIT"
2183
+ ],
2184
+ "authors": [
2185
+ {
2186
+ "name": "Jaap van Otterdijk",
2187
+ "email": "opensource@ijaap.nl"
2188
+ }
2189
+ ],
2190
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
2191
+ "homepage": "http://www.phpdoc.org",
2192
+ "keywords": [
2193
+ "FQSEN",
2194
+ "phpDocumentor",
2195
+ "phpdoc",
2196
+ "reflection",
2197
+ "static analysis"
2198
+ ],
2199
+ "support": {
2200
+ "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
2201
+ "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
2202
+ },
2203
+ "time": "2020-06-27T09:03:43+00:00"
2204
+ },
2205
+ {
2206
+ "name": "phpdocumentor/reflection-docblock",
2207
+ "version": "5.2.2",
2208
+ "source": {
2209
+ "type": "git",
2210
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
2211
+ "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556"
2212
+ },
2213
+ "dist": {
2214
+ "type": "zip",
2215
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556",
2216
+ "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556",
2217
+ "shasum": ""
2218
+ },
2219
+ "require": {
2220
+ "ext-filter": "*",
2221
+ "php": "^7.2 || ^8.0",
2222
+ "phpdocumentor/reflection-common": "^2.2",
2223
+ "phpdocumentor/type-resolver": "^1.3",
2224
+ "webmozart/assert": "^1.9.1"
2225
+ },
2226
+ "require-dev": {
2227
+ "mockery/mockery": "~1.3.2"
2228
+ },
2229
+ "type": "library",
2230
+ "extra": {
2231
+ "branch-alias": {
2232
+ "dev-master": "5.x-dev"
2233
+ }
2234
+ },
2235
+ "autoload": {
2236
+ "psr-4": {
2237
+ "phpDocumentor\\Reflection\\": "src"
2238
+ }
2239
+ },
2240
+ "notification-url": "https://packagist.org/downloads/",
2241
+ "license": [
2242
+ "MIT"
2243
+ ],
2244
+ "authors": [
2245
+ {
2246
+ "name": "Mike van Riel",
2247
+ "email": "me@mikevanriel.com"
2248
+ },
2249
+ {
2250
+ "name": "Jaap van Otterdijk",
2251
+ "email": "account@ijaap.nl"
2252
+ }
2253
+ ],
2254
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
2255
+ "support": {
2256
+ "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
2257
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master"
2258
+ },
2259
+ "time": "2020-09-03T19:13:55+00:00"
2260
+ },
2261
+ {
2262
+ "name": "phpdocumentor/type-resolver",
2263
+ "version": "1.4.0",
2264
+ "source": {
2265
+ "type": "git",
2266
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
2267
+ "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0"
2268
+ },
2269
+ "dist": {
2270
+ "type": "zip",
2271
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
2272
+ "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
2273
+ "shasum": ""
2274
+ },
2275
+ "require": {
2276
+ "php": "^7.2 || ^8.0",
2277
+ "phpdocumentor/reflection-common": "^2.0"
2278
+ },
2279
+ "require-dev": {
2280
+ "ext-tokenizer": "*"
2281
+ },
2282
+ "type": "library",
2283
+ "extra": {
2284
+ "branch-alias": {
2285
+ "dev-1.x": "1.x-dev"
2286
+ }
2287
+ },
2288
+ "autoload": {
2289
+ "psr-4": {
2290
+ "phpDocumentor\\Reflection\\": "src"
2291
+ }
2292
+ },
2293
+ "notification-url": "https://packagist.org/downloads/",
2294
+ "license": [
2295
+ "MIT"
2296
+ ],
2297
+ "authors": [
2298
+ {
2299
+ "name": "Mike van Riel",
2300
+ "email": "me@mikevanriel.com"
2301
+ }
2302
+ ],
2303
+ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
2304
+ "support": {
2305
+ "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
2306
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0"
2307
+ },
2308
+ "time": "2020-09-17T18:55:26+00:00"
2309
+ },
2310
+ {
2311
+ "name": "phpspec/prophecy",
2312
+ "version": "1.13.0",
2313
+ "source": {
2314
+ "type": "git",
2315
+ "url": "https://github.com/phpspec/prophecy.git",
2316
+ "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea"
2317
+ },
2318
+ "dist": {
2319
+ "type": "zip",
2320
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea",
2321
+ "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea",
2322
+ "shasum": ""
2323
+ },
2324
+ "require": {
2325
+ "doctrine/instantiator": "^1.2",
2326
+ "php": "^7.2 || ~8.0, <8.1",
2327
+ "phpdocumentor/reflection-docblock": "^5.2",
2328
+ "sebastian/comparator": "^3.0 || ^4.0",
2329
+ "sebastian/recursion-context": "^3.0 || ^4.0"
2330
+ },
2331
+ "require-dev": {
2332
+ "phpspec/phpspec": "^6.0",
2333
+ "phpunit/phpunit": "^8.0 || ^9.0"
2334
+ },
2335
+ "type": "library",
2336
+ "extra": {
2337
+ "branch-alias": {
2338
+ "dev-master": "1.11.x-dev"
2339
+ }
2340
+ },
2341
+ "autoload": {
2342
+ "psr-4": {
2343
+ "Prophecy\\": "src/Prophecy"
2344
+ }
2345
+ },
2346
+ "notification-url": "https://packagist.org/downloads/",
2347
+ "license": [
2348
+ "MIT"
2349
+ ],
2350
+ "authors": [
2351
+ {
2352
+ "name": "Konstantin Kudryashov",
2353
+ "email": "ever.zet@gmail.com",
2354
+ "homepage": "http://everzet.com"
2355
+ },
2356
+ {
2357
+ "name": "Marcello Duarte",
2358
+ "email": "marcello.duarte@gmail.com"
2359
+ }
2360
+ ],
2361
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
2362
+ "homepage": "https://github.com/phpspec/prophecy",
2363
+ "keywords": [
2364
+ "Double",
2365
+ "Dummy",
2366
+ "fake",
2367
+ "mock",
2368
+ "spy",
2369
+ "stub"
2370
+ ],
2371
+ "support": {
2372
+ "issues": "https://github.com/phpspec/prophecy/issues",
2373
+ "source": "https://github.com/phpspec/prophecy/tree/1.13.0"
2374
+ },
2375
+ "time": "2021-03-17T13:42:18+00:00"
2376
+ },
2377
+ {
2378
+ "name": "phpunit/php-code-coverage",
2379
+ "version": "7.0.14",
2380
+ "source": {
2381
+ "type": "git",
2382
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
2383
+ "reference": "bb7c9a210c72e4709cdde67f8b7362f672f2225c"
2384
+ },
2385
+ "dist": {
2386
+ "type": "zip",
2387
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/bb7c9a210c72e4709cdde67f8b7362f672f2225c",
2388
+ "reference": "bb7c9a210c72e4709cdde67f8b7362f672f2225c",
2389
+ "shasum": ""
2390
+ },
2391
+ "require": {
2392
+ "ext-dom": "*",
2393
+ "ext-xmlwriter": "*",
2394
+ "php": ">=7.2",
2395
+ "phpunit/php-file-iterator": "^2.0.2",
2396
+ "phpunit/php-text-template": "^1.2.1",
2397
+ "phpunit/php-token-stream": "^3.1.1 || ^4.0",
2398
+ "sebastian/code-unit-reverse-lookup": "^1.0.1",
2399
+ "sebastian/environment": "^4.2.2",
2400
+ "sebastian/version": "^2.0.1",
2401
+ "theseer/tokenizer": "^1.1.3"
2402
+ },
2403
+ "require-dev": {
2404
+ "phpunit/phpunit": "^8.2.2"
2405
+ },
2406
+ "suggest": {
2407
+ "ext-xdebug": "^2.7.2"
2408
+ },
2409
+ "type": "library",
2410
+ "extra": {
2411
+ "branch-alias": {
2412
+ "dev-master": "7.0-dev"
2413
+ }
2414
+ },
2415
+ "autoload": {
2416
+ "classmap": [
2417
+ "src/"
2418
+ ]
2419
+ },
2420
+ "notification-url": "https://packagist.org/downloads/",
2421
+ "license": [
2422
+ "BSD-3-Clause"
2423
+ ],
2424
+ "authors": [
2425
+ {
2426
+ "name": "Sebastian Bergmann",
2427
+ "email": "sebastian@phpunit.de",
2428
+ "role": "lead"
2429
+ }
2430
+ ],
2431
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
2432
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
2433
+ "keywords": [
2434
+ "coverage",
2435
+ "testing",
2436
+ "xunit"
2437
+ ],
2438
+ "support": {
2439
+ "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
2440
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/7.0.14"
2441
+ },
2442
+ "funding": [
2443
+ {
2444
+ "url": "https://github.com/sebastianbergmann",
2445
+ "type": "github"
2446
+ }
2447
+ ],
2448
+ "time": "2020-12-02T13:39:03+00:00"
2449
+ },
2450
+ {
2451
+ "name": "phpunit/php-file-iterator",
2452
+ "version": "2.0.3",
2453
+ "source": {
2454
+ "type": "git",
2455
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
2456
+ "reference": "4b49fb70f067272b659ef0174ff9ca40fdaa6357"
2457
+ },
2458
+ "dist": {
2459
+ "type": "zip",
2460
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/4b49fb70f067272b659ef0174ff9ca40fdaa6357",
2461
+ "reference": "4b49fb70f067272b659ef0174ff9ca40fdaa6357",
2462
+ "shasum": ""
2463
+ },
2464
+ "require": {
2465
+ "php": ">=7.1"
2466
+ },
2467
+ "require-dev": {
2468
+ "phpunit/phpunit": "^8.5"
2469
+ },
2470
+ "type": "library",
2471
+ "extra": {
2472
+ "branch-alias": {
2473
+ "dev-master": "2.0.x-dev"
2474
+ }
2475
+ },
2476
+ "autoload": {
2477
+ "classmap": [
2478
+ "src/"
2479
+ ]
2480
+ },
2481
+ "notification-url": "https://packagist.org/downloads/",
2482
+ "license": [
2483
+ "BSD-3-Clause"
2484
+ ],
2485
+ "authors": [
2486
+ {
2487
+ "name": "Sebastian Bergmann",
2488
+ "email": "sebastian@phpunit.de",
2489
+ "role": "lead"
2490
+ }
2491
+ ],
2492
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
2493
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
2494
+ "keywords": [
2495
+ "filesystem",
2496
+ "iterator"
2497
+ ],
2498
+ "support": {
2499
+ "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
2500
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.3"
2501
+ },
2502
+ "funding": [
2503
+ {
2504
+ "url": "https://github.com/sebastianbergmann",
2505
+ "type": "github"
2506
+ }
2507
+ ],
2508
+ "time": "2020-11-30T08:25:21+00:00"
2509
+ },
2510
+ {
2511
+ "name": "phpunit/php-text-template",
2512
+ "version": "1.2.1",
2513
+ "source": {
2514
+ "type": "git",
2515
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
2516
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
2517
+ },
2518
+ "dist": {
2519
+ "type": "zip",
2520
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
2521
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
2522
+ "shasum": ""
2523
+ },
2524
+ "require": {
2525
+ "php": ">=5.3.3"
2526
+ },
2527
+ "type": "library",
2528
+ "autoload": {
2529
+ "classmap": [
2530
+ "src/"
2531
+ ]
2532
+ },
2533
+ "notification-url": "https://packagist.org/downloads/",
2534
+ "license": [
2535
+ "BSD-3-Clause"
2536
+ ],
2537
+ "authors": [
2538
+ {
2539
+ "name": "Sebastian Bergmann",
2540
+ "email": "sebastian@phpunit.de",
2541
+ "role": "lead"
2542
+ }
2543
+ ],
2544
+ "description": "Simple template engine.",
2545
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
2546
+ "keywords": [
2547
+ "template"
2548
+ ],
2549
+ "support": {
2550
+ "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
2551
+ "source": "https://github.com/sebastianbergmann/php-text-template/tree/1.2.1"
2552
+ },
2553
+ "time": "2015-06-21T13:50:34+00:00"
2554
+ },
2555
+ {
2556
+ "name": "phpunit/php-timer",
2557
+ "version": "2.1.3",
2558
+ "source": {
2559
+ "type": "git",
2560
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
2561
+ "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662"
2562
+ },
2563
+ "dist": {
2564
+ "type": "zip",
2565
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/2454ae1765516d20c4ffe103d85a58a9a3bd5662",
2566
+ "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662",
2567
+ "shasum": ""
2568
+ },
2569
+ "require": {
2570
+ "php": ">=7.1"
2571
+ },
2572
+ "require-dev": {
2573
+ "phpunit/phpunit": "^8.5"
2574
+ },
2575
+ "type": "library",
2576
+ "extra": {
2577
+ "branch-alias": {
2578
+ "dev-master": "2.1-dev"
2579
+ }
2580
+ },
2581
+ "autoload": {
2582
+ "classmap": [
2583
+ "src/"
2584
+ ]
2585
+ },
2586
+ "notification-url": "https://packagist.org/downloads/",
2587
+ "license": [
2588
+ "BSD-3-Clause"
2589
+ ],
2590
+ "authors": [
2591
+ {
2592
+ "name": "Sebastian Bergmann",
2593
+ "email": "sebastian@phpunit.de",
2594
+ "role": "lead"
2595
+ }
2596
+ ],
2597
+ "description": "Utility class for timing",
2598
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
2599
+ "keywords": [
2600
+ "timer"
2601
+ ],
2602
+ "support": {
2603
+ "issues": "https://github.com/sebastianbergmann/php-timer/issues",
2604
+ "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.3"
2605
+ },
2606
+ "funding": [
2607
+ {
2608
+ "url": "https://github.com/sebastianbergmann",
2609
+ "type": "github"
2610
+ }
2611
+ ],
2612
+ "time": "2020-11-30T08:20:02+00:00"
2613
+ },
2614
+ {
2615
+ "name": "phpunit/php-token-stream",
2616
+ "version": "4.0.4",
2617
+ "source": {
2618
+ "type": "git",
2619
+ "url": "https://github.com/sebastianbergmann/php-token-stream.git",
2620
+ "reference": "a853a0e183b9db7eed023d7933a858fa1c8d25a3"
2621
+ },
2622
+ "dist": {
2623
+ "type": "zip",
2624
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/a853a0e183b9db7eed023d7933a858fa1c8d25a3",
2625
+ "reference": "a853a0e183b9db7eed023d7933a858fa1c8d25a3",
2626
+ "shasum": ""
2627
+ },
2628
+ "require": {
2629
+ "ext-tokenizer": "*",
2630
+ "php": "^7.3 || ^8.0"
2631
+ },
2632
+ "require-dev": {
2633
+ "phpunit/phpunit": "^9.0"
2634
+ },
2635
+ "type": "library",
2636
+ "extra": {
2637
+ "branch-alias": {
2638
+ "dev-master": "4.0-dev"
2639
+ }
2640
+ },
2641
+ "autoload": {
2642
+ "classmap": [
2643
+ "src/"
2644
+ ]
2645
+ },
2646
+ "notification-url": "https://packagist.org/downloads/",
2647
+ "license": [
2648
+ "BSD-3-Clause"
2649
+ ],
2650
+ "authors": [
2651
+ {
2652
+ "name": "Sebastian Bergmann",
2653
+ "email": "sebastian@phpunit.de"
2654
+ }
2655
+ ],
2656
+ "description": "Wrapper around PHP's tokenizer extension.",
2657
+ "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
2658
+ "keywords": [
2659
+ "tokenizer"
2660
+ ],
2661
+ "support": {
2662
+ "issues": "https://github.com/sebastianbergmann/php-token-stream/issues",
2663
+ "source": "https://github.com/sebastianbergmann/php-token-stream/tree/master"
2664
+ },
2665
+ "funding": [
2666
+ {
2667
+ "url": "https://github.com/sebastianbergmann",
2668
+ "type": "github"
2669
+ }
2670
+ ],
2671
+ "abandoned": true,
2672
+ "time": "2020-08-04T08:28:15+00:00"
2673
+ },
2674
+ {
2675
+ "name": "phpunit/phpunit",
2676
+ "version": "8.5.15",
2677
+ "source": {
2678
+ "type": "git",
2679
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
2680
+ "reference": "038d4196d8e8cb405cd5e82cedfe413ad6eef9ef"
2681
+ },
2682
+ "dist": {
2683
+ "type": "zip",
2684
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/038d4196d8e8cb405cd5e82cedfe413ad6eef9ef",
2685
+ "reference": "038d4196d8e8cb405cd5e82cedfe413ad6eef9ef",
2686
+ "shasum": ""
2687
+ },
2688
+ "require": {
2689
+ "doctrine/instantiator": "^1.3.1",
2690
+ "ext-dom": "*",
2691
+ "ext-json": "*",
2692
+ "ext-libxml": "*",
2693
+ "ext-mbstring": "*",
2694
+ "ext-xml": "*",
2695
+ "ext-xmlwriter": "*",
2696
+ "myclabs/deep-copy": "^1.10.0",
2697
+ "phar-io/manifest": "^2.0.1",
2698
+ "phar-io/version": "^3.0.2",
2699
+ "php": ">=7.2",
2700
+ "phpspec/prophecy": "^1.10.3",
2701
+ "phpunit/php-code-coverage": "^7.0.12",
2702
+ "phpunit/php-file-iterator": "^2.0.2",
2703
+ "phpunit/php-text-template": "^1.2.1",
2704
+ "phpunit/php-timer": "^2.1.2",
2705
+ "sebastian/comparator": "^3.0.2",
2706
+ "sebastian/diff": "^3.0.2",
2707
+ "sebastian/environment": "^4.2.3",
2708
+ "sebastian/exporter": "^3.1.2",
2709
+ "sebastian/global-state": "^3.0.0",
2710
+ "sebastian/object-enumerator": "^3.0.3",
2711
+ "sebastian/resource-operations": "^2.0.1",
2712
+ "sebastian/type": "^1.1.3",
2713
+ "sebastian/version": "^2.0.1"
2714
+ },
2715
+ "require-dev": {
2716
+ "ext-pdo": "*"
2717
+ },
2718
+ "suggest": {
2719
+ "ext-soap": "*",
2720
+ "ext-xdebug": "*",
2721
+ "phpunit/php-invoker": "^2.0.0"
2722
+ },
2723
+ "bin": [
2724
+ "phpunit"
2725
+ ],
2726
+ "type": "library",
2727
+ "extra": {
2728
+ "branch-alias": {
2729
+ "dev-master": "8.5-dev"
2730
+ }
2731
+ },
2732
+ "autoload": {
2733
+ "classmap": [
2734
+ "src/"
2735
+ ]
2736
+ },
2737
+ "notification-url": "https://packagist.org/downloads/",
2738
+ "license": [
2739
+ "BSD-3-Clause"
2740
+ ],
2741
+ "authors": [
2742
+ {
2743
+ "name": "Sebastian Bergmann",
2744
+ "email": "sebastian@phpunit.de",
2745
+ "role": "lead"
2746
+ }
2747
+ ],
2748
+ "description": "The PHP Unit Testing framework.",
2749
+ "homepage": "https://phpunit.de/",
2750
+ "keywords": [
2751
+ "phpunit",
2752
+ "testing",
2753
+ "xunit"
2754
+ ],
2755
+ "support": {
2756
+ "issues": "https://github.com/sebastianbergmann/phpunit/issues",
2757
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.15"
2758
+ },
2759
+ "funding": [
2760
+ {
2761
+ "url": "https://phpunit.de/donate.html",
2762
+ "type": "custom"
2763
+ },
2764
+ {
2765
+ "url": "https://github.com/sebastianbergmann",
2766
+ "type": "github"
2767
+ }
2768
+ ],
2769
+ "time": "2021-03-17T07:27:54+00:00"
2770
+ },
2771
+ {
2772
+ "name": "psr/container",
2773
+ "version": "1.1.1",
2774
+ "source": {
2775
+ "type": "git",
2776
+ "url": "https://github.com/php-fig/container.git",
2777
+ "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf"
2778
+ },
2779
+ "dist": {
2780
+ "type": "zip",
2781
+ "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf",
2782
+ "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf",
2783
+ "shasum": ""
2784
+ },
2785
+ "require": {
2786
+ "php": ">=7.2.0"
2787
+ },
2788
+ "type": "library",
2789
+ "autoload": {
2790
+ "psr-4": {
2791
+ "Psr\\Container\\": "src/"
2792
+ }
2793
+ },
2794
+ "notification-url": "https://packagist.org/downloads/",
2795
+ "license": [
2796
+ "MIT"
2797
+ ],
2798
+ "authors": [
2799
+ {
2800
+ "name": "PHP-FIG",
2801
+ "homepage": "https://www.php-fig.org/"
2802
+ }
2803
+ ],
2804
+ "description": "Common Container Interface (PHP FIG PSR-11)",
2805
+ "homepage": "https://github.com/php-fig/container",
2806
+ "keywords": [
2807
+ "PSR-11",
2808
+ "container",
2809
+ "container-interface",
2810
+ "container-interop",
2811
+ "psr"
2812
+ ],
2813
+ "support": {
2814
+ "issues": "https://github.com/php-fig/container/issues",
2815
+ "source": "https://github.com/php-fig/container/tree/1.1.1"
2816
+ },
2817
+ "time": "2021-03-05T17:36:06+00:00"
2818
+ },
2819
+ {
2820
+ "name": "psr/simple-cache",
2821
+ "version": "1.0.1",
2822
+ "source": {
2823
+ "type": "git",
2824
+ "url": "https://github.com/php-fig/simple-cache.git",
2825
+ "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b"
2826
+ },
2827
+ "dist": {
2828
+ "type": "zip",
2829
+ "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
2830
+ "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
2831
+ "shasum": ""
2832
+ },
2833
+ "require": {
2834
+ "php": ">=5.3.0"
2835
+ },
2836
+ "type": "library",
2837
+ "extra": {
2838
+ "branch-alias": {
2839
+ "dev-master": "1.0.x-dev"
2840
+ }
2841
+ },
2842
+ "autoload": {
2843
+ "psr-4": {
2844
+ "Psr\\SimpleCache\\": "src/"
2845
+ }
2846
+ },
2847
+ "notification-url": "https://packagist.org/downloads/",
2848
+ "license": [
2849
+ "MIT"
2850
+ ],
2851
+ "authors": [
2852
+ {
2853
+ "name": "PHP-FIG",
2854
+ "homepage": "http://www.php-fig.org/"
2855
+ }
2856
+ ],
2857
+ "description": "Common interfaces for simple caching",
2858
+ "keywords": [
2859
+ "cache",
2860
+ "caching",
2861
+ "psr",
2862
+ "psr-16",
2863
+ "simple-cache"
2864
+ ],
2865
+ "support": {
2866
+ "source": "https://github.com/php-fig/simple-cache/tree/master"
2867
+ },
2868
+ "time": "2017-10-23T01:57:42+00:00"
2869
+ },
2870
+ {
2871
+ "name": "sebastian/code-unit-reverse-lookup",
2872
+ "version": "1.0.2",
2873
+ "source": {
2874
+ "type": "git",
2875
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
2876
+ "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619"
2877
+ },
2878
+ "dist": {
2879
+ "type": "zip",
2880
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619",
2881
+ "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619",
2882
+ "shasum": ""
2883
+ },
2884
+ "require": {
2885
+ "php": ">=5.6"
2886
+ },
2887
+ "require-dev": {
2888
+ "phpunit/phpunit": "^8.5"
2889
+ },
2890
+ "type": "library",
2891
+ "extra": {
2892
+ "branch-alias": {
2893
+ "dev-master": "1.0.x-dev"
2894
+ }
2895
+ },
2896
+ "autoload": {
2897
+ "classmap": [
2898
+ "src/"
2899
+ ]
2900
+ },
2901
+ "notification-url": "https://packagist.org/downloads/",
2902
+ "license": [
2903
+ "BSD-3-Clause"
2904
+ ],
2905
+ "authors": [
2906
+ {
2907
+ "name": "Sebastian Bergmann",
2908
+ "email": "sebastian@phpunit.de"
2909
+ }
2910
+ ],
2911
+ "description": "Looks up which function or method a line of code belongs to",
2912
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
2913
+ "support": {
2914
+ "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
2915
+ "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2"
2916
+ },
2917
+ "funding": [
2918
+ {
2919
+ "url": "https://github.com/sebastianbergmann",
2920
+ "type": "github"
2921
+ }
2922
+ ],
2923
+ "time": "2020-11-30T08:15:22+00:00"
2924
+ },
2925
+ {
2926
+ "name": "sebastian/comparator",
2927
+ "version": "3.0.3",
2928
+ "source": {
2929
+ "type": "git",
2930
+ "url": "https://github.com/sebastianbergmann/comparator.git",
2931
+ "reference": "1071dfcef776a57013124ff35e1fc41ccd294758"
2932
+ },
2933
+ "dist": {
2934
+ "type": "zip",
2935
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1071dfcef776a57013124ff35e1fc41ccd294758",
2936
+ "reference": "1071dfcef776a57013124ff35e1fc41ccd294758",
2937
+ "shasum": ""
2938
+ },
2939
+ "require": {
2940
+ "php": ">=7.1",
2941
+ "sebastian/diff": "^3.0",
2942
+ "sebastian/exporter": "^3.1"
2943
+